From 3fd1fbcaeab2f640f6f6c7a9dc1705a6c35c5cb2 Mon Sep 17 00:00:00 2001 From: doxa-maps-88655c70 <88627970+doxa-maps-88655c70@users.noreply.github.com> Date: Thu, 24 Sep 2026 18:34:01 +0000 Subject: [PATCH 01/10] Move the private field-access dataset out of the repo data-private/ was a TRACKED folder, so field-access-visas.json would ship with the repo the moment it goes public. A tracked folder is not private. The table generator no longer writes inside the checkout: private tables go to DOXA_PRIVATE_DIR (a folder outside the repo) or are skipped. data-private/ is gitignored so it cannot be re-created by accident. The file is removed from HEAD only; it is still in history (5 commits). Publish from fresh history or scrub it before the repo goes public. --- .gitignore | 4 + data-private/README.md | 14 - data-private/tables/field-access-visas.json | 17259 ---------------- internal/public-hygiene-check.mjs | 2 +- .../research/build-tabulator-tables.mjs | 20 +- plugin-designs/key-cities/data-tables.vue | 2 +- 6 files changed, 20 insertions(+), 17281 deletions(-) delete mode 100644 data-private/README.md delete mode 100644 data-private/tables/field-access-visas.json diff --git a/.gitignore b/.gitignore index 5c09150d4..08c9c0123 100644 --- a/.gitignore +++ b/.gitignore @@ -130,3 +130,7 @@ _qa-cycle/ # measurements and the one exception (previews/, which has no data/ source # and must stay tracked). # The tracked source for shipped assets is data/. + +# Private datasets never live in this repo (see DOXA_PRIVATE_DIR in +# library/scripts/research/build-tabulator-tables.mjs). Guard against re-creation. +data-private/ diff --git a/data-private/README.md b/data-private/README.md deleted file mode 100644 index 8fa7d1e3d..000000000 --- a/data-private/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# data-private/ — NEVER published - -**The law: nothing in this folder is ever copied into the web-root or any public -repo.** It exists for internal analysis only. The build's copy steps read from -`data/` — deliberately not from here. - -Classification rationale (release governance): datasets whose publication could -help close doors — e.g. field-access/visa patterns — stay here. Public-good -datasets (internet gaps, gospel-resource gaps, people-group pairings) live in -`data/` and ship. - -| File | Why private | -|---|---| -| `tables/field-access-visas.json` | Visa/field-access patterns per destination — publication could accelerate access closures | diff --git a/data-private/tables/field-access-visas.json b/data-private/tables/field-access-visas.json deleted file mode 100644 index 518ef5c9f..000000000 --- a/data-private/tables/field-access-visas.json +++ /dev/null @@ -1,17259 +0,0 @@ -{ - "meta": { - "title": "Field Access — Visa Requirements", - "grain": "one row per DX destination x sending passport", - "passports_chosen": "United States, United Kingdom, Brazil, South Korea, Nigeria, India, Philippines, South Africa — a deliberate subset of widely-held sending passports, not the full 199x199 matrix (39,601 rows of mostly irrelevance).", - "HARD_SCOPE_LIMIT": "TOURIST/VISITOR entry policy ONLY. NOT permission to do religious work, NOT residency, and NOT a safety assessment. A country can be visa-free AND a place where this work carries real risk — orthogonal facts, and only the first is here.", - "laws_not_done": "Religious-freedom / assembly LAW per country is NOT in this corpus. No free keyless machine-readable source was found; USCIRF, Open Doors and Freedom House publish reports that need a cited human pass.", - "source": "https://github.com/ilyankou/passport-index-dataset (public, no key)" - }, - "columns": [ - { - "title": "Destination", - "field": "destination", - "type": "string" - }, - { - "title": "ISO3", - "field": "dest_iso3", - "type": "string" - }, - { - "title": "Region", - "field": "region", - "type": "string" - }, - { - "title": "Passport", - "field": "passport", - "type": "string" - }, - { - "title": "Requirement", - "field": "requirement", - "type": "string" - }, - { - "title": "Visa free", - "field": "visa_free", - "type": "boolean" - }, - { - "title": "Visa-free days", - "field": "visa_free_days", - "type": "number" - }, - { - "title": "Visa in advance", - "field": "needs_visa_in_advance", - "type": "boolean" - }, - { - "title": "On arrival / e-visa", - "field": "on_arrival_or_evisa", - "type": "boolean" - }, - { - "title": "People groups", - "field": "people_groups", - "type": "number" - }, - { - "title": "Scope", - "field": "scope_note", - "type": "string" - } - ], - "rows": [ - { - "destination": "India", - "dest_iso3": "IND", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 856, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "India", - "dest_iso3": "IND", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 856, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "India", - "dest_iso3": "IND", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 856, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "India", - "dest_iso3": "IND", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 856, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "India", - "dest_iso3": "IND", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 856, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "India", - "dest_iso3": "IND", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 856, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "India", - "dest_iso3": "IND", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 856, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "People's Republic of China", - "dest_iso3": "CHN", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 154, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "People's Republic of China", - "dest_iso3": "CHN", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 154, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "People's Republic of China", - "dest_iso3": "CHN", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 154, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "People's Republic of China", - "dest_iso3": "CHN", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 154, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "People's Republic of China", - "dest_iso3": "CHN", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 154, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "People's Republic of China", - "dest_iso3": "CHN", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 154, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "People's Republic of China", - "dest_iso3": "CHN", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 154, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "People's Republic of China", - "dest_iso3": "CHN", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 154, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sudan", - "dest_iso3": "SDN", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 105, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sudan", - "dest_iso3": "SDN", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 105, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sudan", - "dest_iso3": "SDN", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 105, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sudan", - "dest_iso3": "SDN", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 105, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sudan", - "dest_iso3": "SDN", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 105, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sudan", - "dest_iso3": "SDN", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 105, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sudan", - "dest_iso3": "SDN", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 105, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sudan", - "dest_iso3": "SDN", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 105, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brazil", - "dest_iso3": "BRA", - "region": "Latin America & Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 104, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brazil", - "dest_iso3": "BRA", - "region": "Latin America & Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 104, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brazil", - "dest_iso3": "BRA", - "region": "Latin America & Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 104, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brazil", - "dest_iso3": "BRA", - "region": "Latin America & Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 104, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brazil", - "dest_iso3": "BRA", - "region": "Latin America & Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 104, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brazil", - "dest_iso3": "BRA", - "region": "Latin America & Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 104, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brazil", - "dest_iso3": "BRA", - "region": "Latin America & Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 104, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lao People's Democratic Republic", - "dest_iso3": "LAO", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 95, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lao People's Democratic Republic", - "dest_iso3": "LAO", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 95, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lao People's Democratic Republic", - "dest_iso3": "LAO", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 95, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lao People's Democratic Republic", - "dest_iso3": "LAO", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 95, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lao People's Democratic Republic", - "dest_iso3": "LAO", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 95, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lao People's Democratic Republic", - "dest_iso3": "LAO", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 95, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lao People's Democratic Republic", - "dest_iso3": "LAO", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 95, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lao People's Democratic Republic", - "dest_iso3": "LAO", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 95, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Chad", - "dest_iso3": "TCD", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 54, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Chad", - "dest_iso3": "TCD", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 54, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Chad", - "dest_iso3": "TCD", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 54, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Chad", - "dest_iso3": "TCD", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 54, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Chad", - "dest_iso3": "TCD", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 54, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Chad", - "dest_iso3": "TCD", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 54, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Chad", - "dest_iso3": "TCD", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 54, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Chad", - "dest_iso3": "TCD", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 54, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nigeria", - "dest_iso3": "NGA", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 38, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nigeria", - "dest_iso3": "NGA", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 38, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nigeria", - "dest_iso3": "NGA", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 38, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nigeria", - "dest_iso3": "NGA", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 38, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nigeria", - "dest_iso3": "NGA", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 38, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nigeria", - "dest_iso3": "NGA", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 38, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nigeria", - "dest_iso3": "NGA", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 38, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Indonesia", - "dest_iso3": "IDN", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 36, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Indonesia", - "dest_iso3": "IDN", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 36, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Indonesia", - "dest_iso3": "IDN", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 36, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Indonesia", - "dest_iso3": "IDN", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 36, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Indonesia", - "dest_iso3": "IDN", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 36, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Indonesia", - "dest_iso3": "IDN", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 36, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Indonesia", - "dest_iso3": "IDN", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 36, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Indonesia", - "dest_iso3": "IDN", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 36, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nepal", - "dest_iso3": "NPL", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 33, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nepal", - "dest_iso3": "NPL", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 33, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nepal", - "dest_iso3": "NPL", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 33, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nepal", - "dest_iso3": "NPL", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 33, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nepal", - "dest_iso3": "NPL", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 33, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nepal", - "dest_iso3": "NPL", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 33, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nepal", - "dest_iso3": "NPL", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 33, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Nepal", - "dest_iso3": "NPL", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 33, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ethiopia", - "dest_iso3": "ETH", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 29, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ethiopia", - "dest_iso3": "ETH", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 29, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ethiopia", - "dest_iso3": "ETH", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 29, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ethiopia", - "dest_iso3": "ETH", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 29, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ethiopia", - "dest_iso3": "ETH", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 29, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ethiopia", - "dest_iso3": "ETH", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 29, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ethiopia", - "dest_iso3": "ETH", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 29, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ethiopia", - "dest_iso3": "ETH", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 29, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Colombia", - "dest_iso3": "COL", - "region": "Latin America & Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 26, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Colombia", - "dest_iso3": "COL", - "region": "Latin America & Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 26, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Colombia", - "dest_iso3": "COL", - "region": "Latin America & Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 26, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Colombia", - "dest_iso3": "COL", - "region": "Latin America & Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 26, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Colombia", - "dest_iso3": "COL", - "region": "Latin America & Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 26, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Colombia", - "dest_iso3": "COL", - "region": "Latin America & Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 26, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Colombia", - "dest_iso3": "COL", - "region": "Latin America & Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 26, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Colombia", - "dest_iso3": "COL", - "region": "Latin America & Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 26, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Pakistan", - "dest_iso3": "PAK", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 24, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Pakistan", - "dest_iso3": "PAK", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 24, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Pakistan", - "dest_iso3": "PAK", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 24, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Pakistan", - "dest_iso3": "PAK", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 24, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Pakistan", - "dest_iso3": "PAK", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 24, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Pakistan", - "dest_iso3": "PAK", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 24, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Pakistan", - "dest_iso3": "PAK", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 24, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Pakistan", - "dest_iso3": "PAK", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 24, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Sudan", - "dest_iso3": "SSD", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 22, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Sudan", - "dest_iso3": "SSD", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 22, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Sudan", - "dest_iso3": "SSD", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 22, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Sudan", - "dest_iso3": "SSD", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 22, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Sudan", - "dest_iso3": "SSD", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 22, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Sudan", - "dest_iso3": "SSD", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 22, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Sudan", - "dest_iso3": "SSD", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 22, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Sudan", - "dest_iso3": "SSD", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 22, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Afghanistan", - "dest_iso3": "AFG", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Afghanistan", - "dest_iso3": "AFG", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Afghanistan", - "dest_iso3": "AFG", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Afghanistan", - "dest_iso3": "AFG", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Afghanistan", - "dest_iso3": "AFG", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Afghanistan", - "dest_iso3": "AFG", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Afghanistan", - "dest_iso3": "AFG", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Afghanistan", - "dest_iso3": "AFG", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Russian Federation", - "dest_iso3": "RUS", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Russian Federation", - "dest_iso3": "RUS", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Russian Federation", - "dest_iso3": "RUS", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Russian Federation", - "dest_iso3": "RUS", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Russian Federation", - "dest_iso3": "RUS", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Russian Federation", - "dest_iso3": "RUS", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Russian Federation", - "dest_iso3": "RUS", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Russian Federation", - "dest_iso3": "RUS", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 21, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Islamic Republic of Iran", - "dest_iso3": "IRN", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 15 days", - "visa_free": true, - "visa_free_days": 15, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 20, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Islamic Republic of Iran", - "dest_iso3": "IRN", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 15 days", - "visa_free": true, - "visa_free_days": 15, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 20, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Islamic Republic of Iran", - "dest_iso3": "IRN", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 20, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Islamic Republic of Iran", - "dest_iso3": "IRN", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 20, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Islamic Republic of Iran", - "dest_iso3": "IRN", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 20, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Islamic Republic of Iran", - "dest_iso3": "IRN", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 20, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Islamic Republic of Iran", - "dest_iso3": "IRN", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 20, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Islamic Republic of Iran", - "dest_iso3": "IRN", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 20, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Algeria", - "dest_iso3": "DZA", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 17, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Algeria", - "dest_iso3": "DZA", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 17, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Algeria", - "dest_iso3": "DZA", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 17, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Algeria", - "dest_iso3": "DZA", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 17, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Algeria", - "dest_iso3": "DZA", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 17, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Algeria", - "dest_iso3": "DZA", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 17, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Algeria", - "dest_iso3": "DZA", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 17, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Algeria", - "dest_iso3": "DZA", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 17, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Republic of Tanzania", - "dest_iso3": "TZA", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Republic of Tanzania", - "dest_iso3": "TZA", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Republic of Tanzania", - "dest_iso3": "TZA", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Republic of Tanzania", - "dest_iso3": "TZA", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Republic of Tanzania", - "dest_iso3": "TZA", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Republic of Tanzania", - "dest_iso3": "TZA", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Republic of Tanzania", - "dest_iso3": "TZA", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Republic of Tanzania", - "dest_iso3": "TZA", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vietnam", - "dest_iso3": "VNM", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vietnam", - "dest_iso3": "VNM", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vietnam", - "dest_iso3": "VNM", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vietnam", - "dest_iso3": "VNM", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 21 days", - "visa_free": true, - "visa_free_days": 21, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vietnam", - "dest_iso3": "VNM", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vietnam", - "dest_iso3": "VNM", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 45 days", - "visa_free": true, - "visa_free_days": 45, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vietnam", - "dest_iso3": "VNM", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 45 days", - "visa_free": true, - "visa_free_days": 45, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vietnam", - "dest_iso3": "VNM", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 16, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Libya", - "dest_iso3": "LBY", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 15, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Libya", - "dest_iso3": "LBY", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 15, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Libya", - "dest_iso3": "LBY", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 15, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Libya", - "dest_iso3": "LBY", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 15, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Libya", - "dest_iso3": "LBY", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 15, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Libya", - "dest_iso3": "LBY", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 15, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Libya", - "dest_iso3": "LBY", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 15, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Libya", - "dest_iso3": "LBY", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 15, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bhutan", - "dest_iso3": "BTN", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bhutan", - "dest_iso3": "BTN", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 14 days", - "visa_free": true, - "visa_free_days": 14, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bhutan", - "dest_iso3": "BTN", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bhutan", - "dest_iso3": "BTN", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bhutan", - "dest_iso3": "BTN", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bhutan", - "dest_iso3": "BTN", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bhutan", - "dest_iso3": "BTN", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bhutan", - "dest_iso3": "BTN", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea", - "dest_iso3": "GIN", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea", - "dest_iso3": "GIN", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea", - "dest_iso3": "GIN", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea", - "dest_iso3": "GIN", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea", - "dest_iso3": "GIN", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea", - "dest_iso3": "GIN", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea", - "dest_iso3": "GIN", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea", - "dest_iso3": "GIN", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mali", - "dest_iso3": "MLI", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mali", - "dest_iso3": "MLI", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mali", - "dest_iso3": "MLI", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mali", - "dest_iso3": "MLI", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mali", - "dest_iso3": "MLI", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mali", - "dest_iso3": "MLI", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mali", - "dest_iso3": "MLI", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mali", - "dest_iso3": "MLI", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 13, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malaysia", - "dest_iso3": "MYS", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 12, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malaysia", - "dest_iso3": "MYS", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 12, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malaysia", - "dest_iso3": "MYS", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 12, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malaysia", - "dest_iso3": "MYS", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 12, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malaysia", - "dest_iso3": "MYS", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 12, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malaysia", - "dest_iso3": "MYS", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 12, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malaysia", - "dest_iso3": "MYS", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 12, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malaysia", - "dest_iso3": "MYS", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 12, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Angola", - "dest_iso3": "AGO", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Angola", - "dest_iso3": "AGO", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Angola", - "dest_iso3": "AGO", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Angola", - "dest_iso3": "AGO", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Angola", - "dest_iso3": "AGO", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Angola", - "dest_iso3": "AGO", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Angola", - "dest_iso3": "AGO", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Angola", - "dest_iso3": "AGO", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Peru", - "dest_iso3": "PER", - "region": "Latin America & Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Peru", - "dest_iso3": "PER", - "region": "Latin America & Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Peru", - "dest_iso3": "PER", - "region": "Latin America & Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Peru", - "dest_iso3": "PER", - "region": "Latin America & Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Peru", - "dest_iso3": "PER", - "region": "Latin America & Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Peru", - "dest_iso3": "PER", - "region": "Latin America & Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Peru", - "dest_iso3": "PER", - "region": "Latin America & Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Peru", - "dest_iso3": "PER", - "region": "Latin America & Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 10, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Benin", - "dest_iso3": "BEN", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Benin", - "dest_iso3": "BEN", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Benin", - "dest_iso3": "BEN", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Benin", - "dest_iso3": "BEN", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Benin", - "dest_iso3": "BEN", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Benin", - "dest_iso3": "BEN", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Benin", - "dest_iso3": "BEN", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Benin", - "dest_iso3": "BEN", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Democratic Republic of the Congo", - "dest_iso3": "COD", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Democratic Republic of the Congo", - "dest_iso3": "COD", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Democratic Republic of the Congo", - "dest_iso3": "COD", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Democratic Republic of the Congo", - "dest_iso3": "COD", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Democratic Republic of the Congo", - "dest_iso3": "COD", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Democratic Republic of the Congo", - "dest_iso3": "COD", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Democratic Republic of the Congo", - "dest_iso3": "COD", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Democratic Republic of the Congo", - "dest_iso3": "COD", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Somalia", - "dest_iso3": "SOM", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Somalia", - "dest_iso3": "SOM", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Somalia", - "dest_iso3": "SOM", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Somalia", - "dest_iso3": "SOM", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Somalia", - "dest_iso3": "SOM", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Somalia", - "dest_iso3": "SOM", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Somalia", - "dest_iso3": "SOM", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Somalia", - "dest_iso3": "SOM", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Yemen", - "dest_iso3": "YEM", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Yemen", - "dest_iso3": "YEM", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Yemen", - "dest_iso3": "YEM", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Yemen", - "dest_iso3": "YEM", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Yemen", - "dest_iso3": "YEM", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Yemen", - "dest_iso3": "YEM", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Yemen", - "dest_iso3": "YEM", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Yemen", - "dest_iso3": "YEM", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 9, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Burkina Faso", - "dest_iso3": "BFA", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Burkina Faso", - "dest_iso3": "BFA", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Burkina Faso", - "dest_iso3": "BFA", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Burkina Faso", - "dest_iso3": "BFA", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Burkina Faso", - "dest_iso3": "BFA", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Burkina Faso", - "dest_iso3": "BFA", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Burkina Faso", - "dest_iso3": "BFA", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Burkina Faso", - "dest_iso3": "BFA", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eritrea", - "dest_iso3": "ERI", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eritrea", - "dest_iso3": "ERI", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eritrea", - "dest_iso3": "ERI", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eritrea", - "dest_iso3": "ERI", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eritrea", - "dest_iso3": "ERI", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eritrea", - "dest_iso3": "ERI", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eritrea", - "dest_iso3": "ERI", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eritrea", - "dest_iso3": "ERI", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iraq", - "dest_iso3": "IRQ", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iraq", - "dest_iso3": "IRQ", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iraq", - "dest_iso3": "IRQ", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iraq", - "dest_iso3": "IRQ", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iraq", - "dest_iso3": "IRQ", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iraq", - "dest_iso3": "IRQ", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iraq", - "dest_iso3": "IRQ", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iraq", - "dest_iso3": "IRQ", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Thailand", - "dest_iso3": "THA", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Thailand", - "dest_iso3": "THA", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Thailand", - "dest_iso3": "THA", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Thailand", - "dest_iso3": "THA", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Thailand", - "dest_iso3": "THA", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Thailand", - "dest_iso3": "THA", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Thailand", - "dest_iso3": "THA", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Thailand", - "dest_iso3": "THA", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 8, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cameroon", - "dest_iso3": "CMR", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cameroon", - "dest_iso3": "CMR", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cameroon", - "dest_iso3": "CMR", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cameroon", - "dest_iso3": "CMR", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cameroon", - "dest_iso3": "CMR", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cameroon", - "dest_iso3": "CMR", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cameroon", - "dest_iso3": "CMR", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cameroon", - "dest_iso3": "CMR", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Myanmar", - "dest_iso3": "MMR", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Myanmar", - "dest_iso3": "MMR", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Myanmar", - "dest_iso3": "MMR", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Myanmar", - "dest_iso3": "MMR", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 14 days", - "visa_free": true, - "visa_free_days": 14, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Myanmar", - "dest_iso3": "MMR", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Myanmar", - "dest_iso3": "MMR", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Myanmar", - "dest_iso3": "MMR", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Myanmar", - "dest_iso3": "MMR", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Oman", - "dest_iso3": "OMN", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Oman", - "dest_iso3": "OMN", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Oman", - "dest_iso3": "OMN", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Oman", - "dest_iso3": "OMN", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Oman", - "dest_iso3": "OMN", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Oman", - "dest_iso3": "OMN", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Oman", - "dest_iso3": "OMN", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Oman", - "dest_iso3": "OMN", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "State of Palestine", - "dest_iso3": "PSE", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "State of Palestine", - "dest_iso3": "PSE", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "State of Palestine", - "dest_iso3": "PSE", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "State of Palestine", - "dest_iso3": "PSE", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "State of Palestine", - "dest_iso3": "PSE", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "State of Palestine", - "dest_iso3": "PSE", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "State of Palestine", - "dest_iso3": "PSE", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "State of Palestine", - "dest_iso3": "PSE", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 7, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Japan", - "dest_iso3": "JPN", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Japan", - "dest_iso3": "JPN", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Japan", - "dest_iso3": "JPN", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Japan", - "dest_iso3": "JPN", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Japan", - "dest_iso3": "JPN", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Japan", - "dest_iso3": "JPN", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Japan", - "dest_iso3": "JPN", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Japan", - "dest_iso3": "JPN", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Namibia", - "dest_iso3": "NAM", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Namibia", - "dest_iso3": "NAM", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Namibia", - "dest_iso3": "NAM", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Namibia", - "dest_iso3": "NAM", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Namibia", - "dest_iso3": "NAM", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Namibia", - "dest_iso3": "NAM", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Namibia", - "dest_iso3": "NAM", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Namibia", - "dest_iso3": "NAM", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Togo", - "dest_iso3": "TGO", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Togo", - "dest_iso3": "TGO", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Togo", - "dest_iso3": "TGO", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Togo", - "dest_iso3": "TGO", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Togo", - "dest_iso3": "TGO", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Togo", - "dest_iso3": "TGO", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Togo", - "dest_iso3": "TGO", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Togo", - "dest_iso3": "TGO", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uganda", - "dest_iso3": "UGA", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uganda", - "dest_iso3": "UGA", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uganda", - "dest_iso3": "UGA", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uganda", - "dest_iso3": "UGA", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uganda", - "dest_iso3": "UGA", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uganda", - "dest_iso3": "UGA", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uganda", - "dest_iso3": "UGA", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uganda", - "dest_iso3": "UGA", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Venezuela", - "dest_iso3": "VEN", - "region": "Latin America & Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Venezuela", - "dest_iso3": "VEN", - "region": "Latin America & Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Venezuela", - "dest_iso3": "VEN", - "region": "Latin America & Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Venezuela", - "dest_iso3": "VEN", - "region": "Latin America & Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Venezuela", - "dest_iso3": "VEN", - "region": "Latin America & Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Venezuela", - "dest_iso3": "VEN", - "region": "Latin America & Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Venezuela", - "dest_iso3": "VEN", - "region": "Latin America & Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Venezuela", - "dest_iso3": "VEN", - "region": "Latin America & Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zambia", - "dest_iso3": "ZMB", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zambia", - "dest_iso3": "ZMB", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zambia", - "dest_iso3": "ZMB", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zambia", - "dest_iso3": "ZMB", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zambia", - "dest_iso3": "ZMB", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zambia", - "dest_iso3": "ZMB", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zambia", - "dest_iso3": "ZMB", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zambia", - "dest_iso3": "ZMB", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 6, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brunei Darussalam", - "dest_iso3": "BRN", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brunei Darussalam", - "dest_iso3": "BRN", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brunei Darussalam", - "dest_iso3": "BRN", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brunei Darussalam", - "dest_iso3": "BRN", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 14 days", - "visa_free": true, - "visa_free_days": 14, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brunei Darussalam", - "dest_iso3": "BRN", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brunei Darussalam", - "dest_iso3": "BRN", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brunei Darussalam", - "dest_iso3": "BRN", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Brunei Darussalam", - "dest_iso3": "BRN", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kenya", - "dest_iso3": "KEN", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kenya", - "dest_iso3": "KEN", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kenya", - "dest_iso3": "KEN", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kenya", - "dest_iso3": "KEN", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kenya", - "dest_iso3": "KEN", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kenya", - "dest_iso3": "KEN", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kenya", - "dest_iso3": "KEN", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kenya", - "dest_iso3": "KEN", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Syrian Arab Republic", - "dest_iso3": "SYR", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Syrian Arab Republic", - "dest_iso3": "SYR", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Syrian Arab Republic", - "dest_iso3": "SYR", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Syrian Arab Republic", - "dest_iso3": "SYR", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Syrian Arab Republic", - "dest_iso3": "SYR", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Syrian Arab Republic", - "dest_iso3": "SYR", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Syrian Arab Republic", - "dest_iso3": "SYR", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Syrian Arab Republic", - "dest_iso3": "SYR", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 5, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lebanon", - "dest_iso3": "LBN", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lebanon", - "dest_iso3": "LBN", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lebanon", - "dest_iso3": "LBN", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lebanon", - "dest_iso3": "LBN", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lebanon", - "dest_iso3": "LBN", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lebanon", - "dest_iso3": "LBN", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lebanon", - "dest_iso3": "LBN", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Lebanon", - "dest_iso3": "LBN", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Morocco", - "dest_iso3": "MAR", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Morocco", - "dest_iso3": "MAR", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Morocco", - "dest_iso3": "MAR", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Morocco", - "dest_iso3": "MAR", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Morocco", - "dest_iso3": "MAR", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Morocco", - "dest_iso3": "MAR", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Morocco", - "dest_iso3": "MAR", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Morocco", - "dest_iso3": "MAR", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mozambique", - "dest_iso3": "MOZ", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mozambique", - "dest_iso3": "MOZ", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mozambique", - "dest_iso3": "MOZ", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mozambique", - "dest_iso3": "MOZ", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mozambique", - "dest_iso3": "MOZ", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mozambique", - "dest_iso3": "MOZ", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mozambique", - "dest_iso3": "MOZ", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mozambique", - "dest_iso3": "MOZ", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 4, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Azerbaijan", - "dest_iso3": "AZE", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Azerbaijan", - "dest_iso3": "AZE", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Azerbaijan", - "dest_iso3": "AZE", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Azerbaijan", - "dest_iso3": "AZE", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Azerbaijan", - "dest_iso3": "AZE", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Azerbaijan", - "dest_iso3": "AZE", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Azerbaijan", - "dest_iso3": "AZE", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Azerbaijan", - "dest_iso3": "AZE", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bangladesh", - "dest_iso3": "BGD", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bangladesh", - "dest_iso3": "BGD", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bangladesh", - "dest_iso3": "BGD", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bangladesh", - "dest_iso3": "BGD", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bangladesh", - "dest_iso3": "BGD", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bangladesh", - "dest_iso3": "BGD", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bangladesh", - "dest_iso3": "BGD", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bangladesh", - "dest_iso3": "BGD", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Comoros", - "dest_iso3": "COM", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Comoros", - "dest_iso3": "COM", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Comoros", - "dest_iso3": "COM", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Comoros", - "dest_iso3": "COM", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Comoros", - "dest_iso3": "COM", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Comoros", - "dest_iso3": "COM", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Comoros", - "dest_iso3": "COM", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Comoros", - "dest_iso3": "COM", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Egypt", - "dest_iso3": "EGY", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Egypt", - "dest_iso3": "EGY", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Egypt", - "dest_iso3": "EGY", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Egypt", - "dest_iso3": "EGY", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Egypt", - "dest_iso3": "EGY", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Egypt", - "dest_iso3": "EGY", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Egypt", - "dest_iso3": "EGY", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Egypt", - "dest_iso3": "EGY", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea-Bissau", - "dest_iso3": "GNB", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea-Bissau", - "dest_iso3": "GNB", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea-Bissau", - "dest_iso3": "GNB", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea-Bissau", - "dest_iso3": "GNB", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea-Bissau", - "dest_iso3": "GNB", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea-Bissau", - "dest_iso3": "GNB", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea-Bissau", - "dest_iso3": "GNB", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guinea-Bissau", - "dest_iso3": "GNB", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jordan", - "dest_iso3": "JOR", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jordan", - "dest_iso3": "JOR", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jordan", - "dest_iso3": "JOR", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jordan", - "dest_iso3": "JOR", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jordan", - "dest_iso3": "JOR", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jordan", - "dest_iso3": "JOR", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jordan", - "dest_iso3": "JOR", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jordan", - "dest_iso3": "JOR", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "KOS", - "dest_iso3": "KOS", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "KOS", - "dest_iso3": "KOS", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "KOS", - "dest_iso3": "KOS", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "KOS", - "dest_iso3": "KOS", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "KOS", - "dest_iso3": "KOS", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "KOS", - "dest_iso3": "KOS", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "KOS", - "dest_iso3": "KOS", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "KOS", - "dest_iso3": "KOS", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritania", - "dest_iso3": "MRT", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritania", - "dest_iso3": "MRT", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritania", - "dest_iso3": "MRT", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritania", - "dest_iso3": "MRT", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritania", - "dest_iso3": "MRT", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritania", - "dest_iso3": "MRT", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritania", - "dest_iso3": "MRT", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritania", - "dest_iso3": "MRT", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mongolia", - "dest_iso3": "MNG", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mongolia", - "dest_iso3": "MNG", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mongolia", - "dest_iso3": "MNG", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mongolia", - "dest_iso3": "MNG", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 21 days", - "visa_free": true, - "visa_free_days": 21, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mongolia", - "dest_iso3": "MNG", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mongolia", - "dest_iso3": "MNG", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mongolia", - "dest_iso3": "MNG", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mongolia", - "dest_iso3": "MNG", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Qatar", - "dest_iso3": "QAT", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Qatar", - "dest_iso3": "QAT", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Qatar", - "dest_iso3": "QAT", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Qatar", - "dest_iso3": "QAT", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Qatar", - "dest_iso3": "QAT", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Qatar", - "dest_iso3": "QAT", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Qatar", - "dest_iso3": "QAT", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Qatar", - "dest_iso3": "QAT", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of The Gambia", - "dest_iso3": "GMB", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of The Gambia", - "dest_iso3": "GMB", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of The Gambia", - "dest_iso3": "GMB", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of The Gambia", - "dest_iso3": "GMB", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of The Gambia", - "dest_iso3": "GMB", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of The Gambia", - "dest_iso3": "GMB", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of The Gambia", - "dest_iso3": "GMB", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of The Gambia", - "dest_iso3": "GMB", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saudi Arabia", - "dest_iso3": "SAU", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saudi Arabia", - "dest_iso3": "SAU", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saudi Arabia", - "dest_iso3": "SAU", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saudi Arabia", - "dest_iso3": "SAU", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saudi Arabia", - "dest_iso3": "SAU", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saudi Arabia", - "dest_iso3": "SAU", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saudi Arabia", - "dest_iso3": "SAU", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saudi Arabia", - "dest_iso3": "SAU", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tajikistan", - "dest_iso3": "TJK", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tajikistan", - "dest_iso3": "TJK", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tajikistan", - "dest_iso3": "TJK", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tajikistan", - "dest_iso3": "TJK", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tajikistan", - "dest_iso3": "TJK", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tajikistan", - "dest_iso3": "TJK", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tajikistan", - "dest_iso3": "TJK", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tajikistan", - "dest_iso3": "TJK", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Türkiye", - "dest_iso3": "TUR", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Türkiye", - "dest_iso3": "TUR", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Türkiye", - "dest_iso3": "TUR", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Türkiye", - "dest_iso3": "TUR", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Türkiye", - "dest_iso3": "TUR", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Türkiye", - "dest_iso3": "TUR", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Türkiye", - "dest_iso3": "TUR", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Türkiye", - "dest_iso3": "TUR", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United States of America", - "dest_iso3": "USA", - "region": "Other", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United States of America", - "dest_iso3": "USA", - "region": "Other", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United States of America", - "dest_iso3": "USA", - "region": "Other", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United States of America", - "dest_iso3": "USA", - "region": "Other", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United States of America", - "dest_iso3": "USA", - "region": "Other", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United States of America", - "dest_iso3": "USA", - "region": "Other", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United States of America", - "dest_iso3": "USA", - "region": "Other", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zimbabwe", - "dest_iso3": "ZWE", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zimbabwe", - "dest_iso3": "ZWE", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zimbabwe", - "dest_iso3": "ZWE", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zimbabwe", - "dest_iso3": "ZWE", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zimbabwe", - "dest_iso3": "ZWE", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zimbabwe", - "dest_iso3": "ZWE", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zimbabwe", - "dest_iso3": "ZWE", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Zimbabwe", - "dest_iso3": "ZWE", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 3, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahrain", - "dest_iso3": "BHR", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahrain", - "dest_iso3": "BHR", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahrain", - "dest_iso3": "BHR", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahrain", - "dest_iso3": "BHR", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahrain", - "dest_iso3": "BHR", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahrain", - "dest_iso3": "BHR", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahrain", - "dest_iso3": "BHR", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahrain", - "dest_iso3": "BHR", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cote d'Ivoire", - "dest_iso3": "CIV", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cote d'Ivoire", - "dest_iso3": "CIV", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cote d'Ivoire", - "dest_iso3": "CIV", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cote d'Ivoire", - "dest_iso3": "CIV", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cote d'Ivoire", - "dest_iso3": "CIV", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cote d'Ivoire", - "dest_iso3": "CIV", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cote d'Ivoire", - "dest_iso3": "CIV", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cote d'Ivoire", - "dest_iso3": "CIV", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Gabon", - "dest_iso3": "GAB", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Gabon", - "dest_iso3": "GAB", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Gabon", - "dest_iso3": "GAB", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Gabon", - "dest_iso3": "GAB", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Gabon", - "dest_iso3": "GAB", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Gabon", - "dest_iso3": "GAB", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Gabon", - "dest_iso3": "GAB", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Gabon", - "dest_iso3": "GAB", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kyrgyzstan", - "dest_iso3": "KGZ", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kyrgyzstan", - "dest_iso3": "KGZ", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kyrgyzstan", - "dest_iso3": "KGZ", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kyrgyzstan", - "dest_iso3": "KGZ", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kyrgyzstan", - "dest_iso3": "KGZ", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kyrgyzstan", - "dest_iso3": "KGZ", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kyrgyzstan", - "dest_iso3": "KGZ", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kyrgyzstan", - "dest_iso3": "KGZ", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liberia", - "dest_iso3": "LBR", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liberia", - "dest_iso3": "LBR", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liberia", - "dest_iso3": "LBR", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liberia", - "dest_iso3": "LBR", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liberia", - "dest_iso3": "LBR", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liberia", - "dest_iso3": "LBR", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liberia", - "dest_iso3": "LBR", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liberia", - "dest_iso3": "LBR", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Niger", - "dest_iso3": "NER", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Niger", - "dest_iso3": "NER", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Niger", - "dest_iso3": "NER", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Niger", - "dest_iso3": "NER", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Niger", - "dest_iso3": "NER", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Niger", - "dest_iso3": "NER", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Niger", - "dest_iso3": "NER", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Niger", - "dest_iso3": "NER", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of the Congo", - "dest_iso3": "COG", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of the Congo", - "dest_iso3": "COG", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of the Congo", - "dest_iso3": "COG", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of the Congo", - "dest_iso3": "COG", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of the Congo", - "dest_iso3": "COG", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of the Congo", - "dest_iso3": "COG", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of the Congo", - "dest_iso3": "COG", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Republic of the Congo", - "dest_iso3": "COG", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sierra Leone", - "dest_iso3": "SLE", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sierra Leone", - "dest_iso3": "SLE", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sierra Leone", - "dest_iso3": "SLE", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sierra Leone", - "dest_iso3": "SLE", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sierra Leone", - "dest_iso3": "SLE", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sierra Leone", - "dest_iso3": "SLE", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sierra Leone", - "dest_iso3": "SLE", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sierra Leone", - "dest_iso3": "SLE", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Africa", - "dest_iso3": "ZAF", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Africa", - "dest_iso3": "ZAF", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Africa", - "dest_iso3": "ZAF", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Africa", - "dest_iso3": "ZAF", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Africa", - "dest_iso3": "ZAF", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Africa", - "dest_iso3": "ZAF", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "South Africa", - "dest_iso3": "ZAF", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Suriname", - "dest_iso3": "SUR", - "region": "North America & Non-Spanish Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Suriname", - "dest_iso3": "SUR", - "region": "North America & Non-Spanish Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Suriname", - "dest_iso3": "SUR", - "region": "North America & Non-Spanish Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Suriname", - "dest_iso3": "SUR", - "region": "North America & Non-Spanish Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Suriname", - "dest_iso3": "SUR", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Suriname", - "dest_iso3": "SUR", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Suriname", - "dest_iso3": "SUR", - "region": "North America & Non-Spanish Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Suriname", - "dest_iso3": "SUR", - "region": "North America & Non-Spanish Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sweden", - "dest_iso3": "SWE", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sweden", - "dest_iso3": "SWE", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sweden", - "dest_iso3": "SWE", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sweden", - "dest_iso3": "SWE", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sweden", - "dest_iso3": "SWE", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sweden", - "dest_iso3": "SWE", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sweden", - "dest_iso3": "SWE", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sweden", - "dest_iso3": "SWE", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tunisia", - "dest_iso3": "TUN", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tunisia", - "dest_iso3": "TUN", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tunisia", - "dest_iso3": "TUN", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tunisia", - "dest_iso3": "TUN", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tunisia", - "dest_iso3": "TUN", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tunisia", - "dest_iso3": "TUN", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tunisia", - "dest_iso3": "TUN", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tunisia", - "dest_iso3": "TUN", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Arab Emirates", - "dest_iso3": "ARE", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Arab Emirates", - "dest_iso3": "ARE", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Arab Emirates", - "dest_iso3": "ARE", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Arab Emirates", - "dest_iso3": "ARE", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Arab Emirates", - "dest_iso3": "ARE", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Arab Emirates", - "dest_iso3": "ARE", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Arab Emirates", - "dest_iso3": "ARE", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "United Arab Emirates", - "dest_iso3": "ARE", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 2, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Albania", - "dest_iso3": "ALB", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Albania", - "dest_iso3": "ALB", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Albania", - "dest_iso3": "ALB", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Albania", - "dest_iso3": "ALB", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Albania", - "dest_iso3": "ALB", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Albania", - "dest_iso3": "ALB", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Albania", - "dest_iso3": "ALB", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Albania", - "dest_iso3": "ALB", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 360 days", - "visa_free": true, - "visa_free_days": 360, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Andorra", - "dest_iso3": "AND", - "region": "N/A", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Andorra", - "dest_iso3": "AND", - "region": "N/A", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Andorra", - "dest_iso3": "AND", - "region": "N/A", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Andorra", - "dest_iso3": "AND", - "region": "N/A", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Andorra", - "dest_iso3": "AND", - "region": "N/A", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Andorra", - "dest_iso3": "AND", - "region": "N/A", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Andorra", - "dest_iso3": "AND", - "region": "N/A", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Andorra", - "dest_iso3": "AND", - "region": "N/A", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Antigua and Barbuda", - "dest_iso3": "ATG", - "region": "North America & Non-Spanish Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Antigua and Barbuda", - "dest_iso3": "ATG", - "region": "North America & Non-Spanish Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Antigua and Barbuda", - "dest_iso3": "ATG", - "region": "North America & Non-Spanish Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Antigua and Barbuda", - "dest_iso3": "ATG", - "region": "North America & Non-Spanish Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Antigua and Barbuda", - "dest_iso3": "ATG", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Antigua and Barbuda", - "dest_iso3": "ATG", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Antigua and Barbuda", - "dest_iso3": "ATG", - "region": "North America & Non-Spanish Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Antigua and Barbuda", - "dest_iso3": "ATG", - "region": "North America & Non-Spanish Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Armenia", - "dest_iso3": "ARM", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Armenia", - "dest_iso3": "ARM", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Armenia", - "dest_iso3": "ARM", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Armenia", - "dest_iso3": "ARM", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Armenia", - "dest_iso3": "ARM", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Armenia", - "dest_iso3": "ARM", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Armenia", - "dest_iso3": "ARM", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Armenia", - "dest_iso3": "ARM", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahamas", - "dest_iso3": "BHS", - "region": "North America & Non-Spanish Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahamas", - "dest_iso3": "BHS", - "region": "North America & Non-Spanish Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahamas", - "dest_iso3": "BHS", - "region": "North America & Non-Spanish Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahamas", - "dest_iso3": "BHS", - "region": "North America & Non-Spanish Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahamas", - "dest_iso3": "BHS", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahamas", - "dest_iso3": "BHS", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahamas", - "dest_iso3": "BHS", - "region": "North America & Non-Spanish Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 240 days", - "visa_free": true, - "visa_free_days": 240, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bahamas", - "dest_iso3": "BHS", - "region": "North America & Non-Spanish Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 240 days", - "visa_free": true, - "visa_free_days": 240, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Barbados", - "dest_iso3": "BRB", - "region": "North America & Non-Spanish Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Barbados", - "dest_iso3": "BRB", - "region": "North America & Non-Spanish Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Barbados", - "dest_iso3": "BRB", - "region": "North America & Non-Spanish Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Barbados", - "dest_iso3": "BRB", - "region": "North America & Non-Spanish Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Barbados", - "dest_iso3": "BRB", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Barbados", - "dest_iso3": "BRB", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Barbados", - "dest_iso3": "BRB", - "region": "North America & Non-Spanish Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Barbados", - "dest_iso3": "BRB", - "region": "North America & Non-Spanish Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Belarus", - "dest_iso3": "BLR", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Belarus", - "dest_iso3": "BLR", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Belarus", - "dest_iso3": "BLR", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Belarus", - "dest_iso3": "BLR", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Belarus", - "dest_iso3": "BLR", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Belarus", - "dest_iso3": "BLR", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Belarus", - "dest_iso3": "BLR", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Belarus", - "dest_iso3": "BLR", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bolivia", - "dest_iso3": "BOL", - "region": "Latin America & Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bolivia", - "dest_iso3": "BOL", - "region": "Latin America & Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bolivia", - "dest_iso3": "BOL", - "region": "Latin America & Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bolivia", - "dest_iso3": "BOL", - "region": "Latin America & Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bolivia", - "dest_iso3": "BOL", - "region": "Latin America & Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bolivia", - "dest_iso3": "BOL", - "region": "Latin America & Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bolivia", - "dest_iso3": "BOL", - "region": "Latin America & Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bolivia", - "dest_iso3": "BOL", - "region": "Latin America & Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bosnia and Herzegovina", - "dest_iso3": "BIH", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bosnia and Herzegovina", - "dest_iso3": "BIH", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bosnia and Herzegovina", - "dest_iso3": "BIH", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bosnia and Herzegovina", - "dest_iso3": "BIH", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bosnia and Herzegovina", - "dest_iso3": "BIH", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bosnia and Herzegovina", - "dest_iso3": "BIH", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bosnia and Herzegovina", - "dest_iso3": "BIH", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bosnia and Herzegovina", - "dest_iso3": "BIH", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bulgaria", - "dest_iso3": "BGR", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bulgaria", - "dest_iso3": "BGR", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bulgaria", - "dest_iso3": "BGR", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bulgaria", - "dest_iso3": "BGR", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bulgaria", - "dest_iso3": "BGR", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bulgaria", - "dest_iso3": "BGR", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bulgaria", - "dest_iso3": "BGR", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Bulgaria", - "dest_iso3": "BGR", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cambodia", - "dest_iso3": "KHM", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cambodia", - "dest_iso3": "KHM", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cambodia", - "dest_iso3": "KHM", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cambodia", - "dest_iso3": "KHM", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cambodia", - "dest_iso3": "KHM", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cambodia", - "dest_iso3": "KHM", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cambodia", - "dest_iso3": "KHM", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cambodia", - "dest_iso3": "KHM", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Central African Republic", - "dest_iso3": "CAF", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Central African Republic", - "dest_iso3": "CAF", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Central African Republic", - "dest_iso3": "CAF", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Central African Republic", - "dest_iso3": "CAF", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Central African Republic", - "dest_iso3": "CAF", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Central African Republic", - "dest_iso3": "CAF", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Central African Republic", - "dest_iso3": "CAF", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Central African Republic", - "dest_iso3": "CAF", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cuba", - "dest_iso3": "CUB", - "region": "Latin America & Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cuba", - "dest_iso3": "CUB", - "region": "Latin America & Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cuba", - "dest_iso3": "CUB", - "region": "Latin America & Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cuba", - "dest_iso3": "CUB", - "region": "Latin America & Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cuba", - "dest_iso3": "CUB", - "region": "Latin America & Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cuba", - "dest_iso3": "CUB", - "region": "Latin America & Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cuba", - "dest_iso3": "CUB", - "region": "Latin America & Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cuba", - "dest_iso3": "CUB", - "region": "Latin America & Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cyprus", - "dest_iso3": "CYP", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cyprus", - "dest_iso3": "CYP", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cyprus", - "dest_iso3": "CYP", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cyprus", - "dest_iso3": "CYP", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cyprus", - "dest_iso3": "CYP", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cyprus", - "dest_iso3": "CYP", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cyprus", - "dest_iso3": "CYP", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Cyprus", - "dest_iso3": "CYP", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Czech Republic", - "dest_iso3": "CZE", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Czech Republic", - "dest_iso3": "CZE", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Czech Republic", - "dest_iso3": "CZE", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Czech Republic", - "dest_iso3": "CZE", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Czech Republic", - "dest_iso3": "CZE", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Czech Republic", - "dest_iso3": "CZE", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Czech Republic", - "dest_iso3": "CZE", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Czech Republic", - "dest_iso3": "CZE", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Djibouti", - "dest_iso3": "DJI", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Djibouti", - "dest_iso3": "DJI", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Djibouti", - "dest_iso3": "DJI", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Djibouti", - "dest_iso3": "DJI", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Djibouti", - "dest_iso3": "DJI", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Djibouti", - "dest_iso3": "DJI", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Djibouti", - "dest_iso3": "DJI", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Djibouti", - "dest_iso3": "DJI", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Dominica", - "dest_iso3": "DMA", - "region": "N/A", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Dominica", - "dest_iso3": "DMA", - "region": "N/A", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Dominica", - "dest_iso3": "DMA", - "region": "N/A", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Dominica", - "dest_iso3": "DMA", - "region": "N/A", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 21 days", - "visa_free": true, - "visa_free_days": 21, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Dominica", - "dest_iso3": "DMA", - "region": "N/A", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Dominica", - "dest_iso3": "DMA", - "region": "N/A", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Dominica", - "dest_iso3": "DMA", - "region": "N/A", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Dominica", - "dest_iso3": "DMA", - "region": "N/A", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ecuador", - "dest_iso3": "ECU", - "region": "Latin America & Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ecuador", - "dest_iso3": "ECU", - "region": "Latin America & Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ecuador", - "dest_iso3": "ECU", - "region": "Latin America & Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ecuador", - "dest_iso3": "ECU", - "region": "Latin America & Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ecuador", - "dest_iso3": "ECU", - "region": "Latin America & Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ecuador", - "dest_iso3": "ECU", - "region": "Latin America & Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ecuador", - "dest_iso3": "ECU", - "region": "Latin America & Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ecuador", - "dest_iso3": "ECU", - "region": "Latin America & Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Equatorial Guinea", - "dest_iso3": "GNQ", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Equatorial Guinea", - "dest_iso3": "GNQ", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Equatorial Guinea", - "dest_iso3": "GNQ", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Equatorial Guinea", - "dest_iso3": "GNQ", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Equatorial Guinea", - "dest_iso3": "GNQ", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Equatorial Guinea", - "dest_iso3": "GNQ", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Equatorial Guinea", - "dest_iso3": "GNQ", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Equatorial Guinea", - "dest_iso3": "GNQ", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eswatini", - "dest_iso3": "SWZ", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eswatini", - "dest_iso3": "SWZ", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eswatini", - "dest_iso3": "SWZ", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eswatini", - "dest_iso3": "SWZ", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eswatini", - "dest_iso3": "SWZ", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eswatini", - "dest_iso3": "SWZ", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eswatini", - "dest_iso3": "SWZ", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Eswatini", - "dest_iso3": "SWZ", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Fiji", - "dest_iso3": "FJI", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Fiji", - "dest_iso3": "FJI", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Fiji", - "dest_iso3": "FJI", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Fiji", - "dest_iso3": "FJI", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Fiji", - "dest_iso3": "FJI", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Fiji", - "dest_iso3": "FJI", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Fiji", - "dest_iso3": "FJI", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Fiji", - "dest_iso3": "FJI", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Finland", - "dest_iso3": "FIN", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Finland", - "dest_iso3": "FIN", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Finland", - "dest_iso3": "FIN", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Finland", - "dest_iso3": "FIN", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Finland", - "dest_iso3": "FIN", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Finland", - "dest_iso3": "FIN", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Finland", - "dest_iso3": "FIN", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Finland", - "dest_iso3": "FIN", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Georgia", - "dest_iso3": "GEO", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 360 days", - "visa_free": true, - "visa_free_days": 360, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Georgia", - "dest_iso3": "GEO", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Georgia", - "dest_iso3": "GEO", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Georgia", - "dest_iso3": "GEO", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Georgia", - "dest_iso3": "GEO", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 360 days", - "visa_free": true, - "visa_free_days": 360, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Georgia", - "dest_iso3": "GEO", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 360 days", - "visa_free": true, - "visa_free_days": 360, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Georgia", - "dest_iso3": "GEO", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 360 days", - "visa_free": true, - "visa_free_days": 360, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Georgia", - "dest_iso3": "GEO", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 360 days", - "visa_free": true, - "visa_free_days": 360, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ghana", - "dest_iso3": "GHA", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ghana", - "dest_iso3": "GHA", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ghana", - "dest_iso3": "GHA", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ghana", - "dest_iso3": "GHA", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ghana", - "dest_iso3": "GHA", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ghana", - "dest_iso3": "GHA", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ghana", - "dest_iso3": "GHA", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Ghana", - "dest_iso3": "GHA", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Greece", - "dest_iso3": "GRC", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Greece", - "dest_iso3": "GRC", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Greece", - "dest_iso3": "GRC", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Greece", - "dest_iso3": "GRC", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Greece", - "dest_iso3": "GRC", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Greece", - "dest_iso3": "GRC", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Greece", - "dest_iso3": "GRC", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Greece", - "dest_iso3": "GRC", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Grenada", - "dest_iso3": "GRD", - "region": "North America & Non-Spanish Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Grenada", - "dest_iso3": "GRD", - "region": "North America & Non-Spanish Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Grenada", - "dest_iso3": "GRD", - "region": "North America & Non-Spanish Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Grenada", - "dest_iso3": "GRD", - "region": "North America & Non-Spanish Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Grenada", - "dest_iso3": "GRD", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Grenada", - "dest_iso3": "GRD", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Grenada", - "dest_iso3": "GRD", - "region": "North America & Non-Spanish Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Grenada", - "dest_iso3": "GRD", - "region": "North America & Non-Spanish Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guyana", - "dest_iso3": "GUY", - "region": "North America & Non-Spanish Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guyana", - "dest_iso3": "GUY", - "region": "North America & Non-Spanish Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guyana", - "dest_iso3": "GUY", - "region": "North America & Non-Spanish Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guyana", - "dest_iso3": "GUY", - "region": "North America & Non-Spanish Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guyana", - "dest_iso3": "GUY", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guyana", - "dest_iso3": "GUY", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guyana", - "dest_iso3": "GUY", - "region": "North America & Non-Spanish Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Guyana", - "dest_iso3": "GUY", - "region": "North America & Non-Spanish Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Hong Kong", - "dest_iso3": "HKG", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Hong Kong", - "dest_iso3": "HKG", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Hong Kong", - "dest_iso3": "HKG", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Hong Kong", - "dest_iso3": "HKG", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 14 days", - "visa_free": true, - "visa_free_days": 14, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Hong Kong", - "dest_iso3": "HKG", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Hong Kong", - "dest_iso3": "HKG", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Hong Kong", - "dest_iso3": "HKG", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Hong Kong", - "dest_iso3": "HKG", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iceland", - "dest_iso3": "ISL", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iceland", - "dest_iso3": "ISL", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iceland", - "dest_iso3": "ISL", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iceland", - "dest_iso3": "ISL", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iceland", - "dest_iso3": "ISL", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iceland", - "dest_iso3": "ISL", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iceland", - "dest_iso3": "ISL", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Iceland", - "dest_iso3": "ISL", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Israel", - "dest_iso3": "ISR", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Israel", - "dest_iso3": "ISR", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Israel", - "dest_iso3": "ISR", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Israel", - "dest_iso3": "ISR", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Israel", - "dest_iso3": "ISR", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Israel", - "dest_iso3": "ISR", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Israel", - "dest_iso3": "ISR", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Israel", - "dest_iso3": "ISR", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jamaica", - "dest_iso3": "JAM", - "region": "North America & Non-Spanish Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jamaica", - "dest_iso3": "JAM", - "region": "North America & Non-Spanish Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jamaica", - "dest_iso3": "JAM", - "region": "North America & Non-Spanish Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jamaica", - "dest_iso3": "JAM", - "region": "North America & Non-Spanish Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jamaica", - "dest_iso3": "JAM", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jamaica", - "dest_iso3": "JAM", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jamaica", - "dest_iso3": "JAM", - "region": "North America & Non-Spanish Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Jamaica", - "dest_iso3": "JAM", - "region": "North America & Non-Spanish Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kazakhstan", - "dest_iso3": "KAZ", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kazakhstan", - "dest_iso3": "KAZ", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 14 days", - "visa_free": true, - "visa_free_days": 14, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kazakhstan", - "dest_iso3": "KAZ", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kazakhstan", - "dest_iso3": "KAZ", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kazakhstan", - "dest_iso3": "KAZ", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kazakhstan", - "dest_iso3": "KAZ", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kazakhstan", - "dest_iso3": "KAZ", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kazakhstan", - "dest_iso3": "KAZ", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kiribati", - "dest_iso3": "KIR", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kiribati", - "dest_iso3": "KIR", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kiribati", - "dest_iso3": "KIR", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kiribati", - "dest_iso3": "KIR", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kiribati", - "dest_iso3": "KIR", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kiribati", - "dest_iso3": "KIR", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kiribati", - "dest_iso3": "KIR", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kiribati", - "dest_iso3": "KIR", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kuwait", - "dest_iso3": "KWT", - "region": "Middle East", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kuwait", - "dest_iso3": "KWT", - "region": "Middle East", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kuwait", - "dest_iso3": "KWT", - "region": "Middle East", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kuwait", - "dest_iso3": "KWT", - "region": "Middle East", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "no admission", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kuwait", - "dest_iso3": "KWT", - "region": "Middle East", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kuwait", - "dest_iso3": "KWT", - "region": "Middle East", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kuwait", - "dest_iso3": "KWT", - "region": "Middle East", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Kuwait", - "dest_iso3": "KWT", - "region": "Middle East", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liechtenstein", - "dest_iso3": "LIE", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liechtenstein", - "dest_iso3": "LIE", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liechtenstein", - "dest_iso3": "LIE", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liechtenstein", - "dest_iso3": "LIE", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liechtenstein", - "dest_iso3": "LIE", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liechtenstein", - "dest_iso3": "LIE", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liechtenstein", - "dest_iso3": "LIE", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Liechtenstein", - "dest_iso3": "LIE", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Luxembourg", - "dest_iso3": "LUX", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Luxembourg", - "dest_iso3": "LUX", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Luxembourg", - "dest_iso3": "LUX", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Luxembourg", - "dest_iso3": "LUX", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Luxembourg", - "dest_iso3": "LUX", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Luxembourg", - "dest_iso3": "LUX", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Luxembourg", - "dest_iso3": "LUX", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Luxembourg", - "dest_iso3": "LUX", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Macao", - "dest_iso3": "MAC", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Macao", - "dest_iso3": "MAC", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Macao", - "dest_iso3": "MAC", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Macao", - "dest_iso3": "MAC", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Macao", - "dest_iso3": "MAC", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Macao", - "dest_iso3": "MAC", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Macao", - "dest_iso3": "MAC", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Macao", - "dest_iso3": "MAC", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malawi", - "dest_iso3": "MWI", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malawi", - "dest_iso3": "MWI", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malawi", - "dest_iso3": "MWI", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malawi", - "dest_iso3": "MWI", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malawi", - "dest_iso3": "MWI", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malawi", - "dest_iso3": "MWI", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malawi", - "dest_iso3": "MWI", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malawi", - "dest_iso3": "MWI", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Maldives", - "dest_iso3": "MDV", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Maldives", - "dest_iso3": "MDV", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Maldives", - "dest_iso3": "MDV", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Maldives", - "dest_iso3": "MDV", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Maldives", - "dest_iso3": "MDV", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Maldives", - "dest_iso3": "MDV", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Maldives", - "dest_iso3": "MDV", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Maldives", - "dest_iso3": "MDV", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malta", - "dest_iso3": "MLT", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malta", - "dest_iso3": "MLT", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malta", - "dest_iso3": "MLT", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malta", - "dest_iso3": "MLT", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malta", - "dest_iso3": "MLT", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malta", - "dest_iso3": "MLT", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malta", - "dest_iso3": "MLT", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Malta", - "dest_iso3": "MLT", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Marshall Islands", - "dest_iso3": "MHL", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Marshall Islands", - "dest_iso3": "MHL", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Marshall Islands", - "dest_iso3": "MHL", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Marshall Islands", - "dest_iso3": "MHL", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Marshall Islands", - "dest_iso3": "MHL", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Marshall Islands", - "dest_iso3": "MHL", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Marshall Islands", - "dest_iso3": "MHL", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Marshall Islands", - "dest_iso3": "MHL", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritius", - "dest_iso3": "MUS", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritius", - "dest_iso3": "MUS", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritius", - "dest_iso3": "MUS", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritius", - "dest_iso3": "MUS", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritius", - "dest_iso3": "MUS", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritius", - "dest_iso3": "MUS", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritius", - "dest_iso3": "MUS", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Mauritius", - "dest_iso3": "MUS", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Micronesia, Federated States of", - "dest_iso3": "FSM", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Micronesia, Federated States of", - "dest_iso3": "FSM", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Micronesia, Federated States of", - "dest_iso3": "FSM", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Micronesia, Federated States of", - "dest_iso3": "FSM", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Micronesia, Federated States of", - "dest_iso3": "FSM", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Micronesia, Federated States of", - "dest_iso3": "FSM", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Micronesia, Federated States of", - "dest_iso3": "FSM", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Micronesia, Federated States of", - "dest_iso3": "FSM", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Monaco", - "dest_iso3": "MCO", - "region": "N/A", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Monaco", - "dest_iso3": "MCO", - "region": "N/A", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Monaco", - "dest_iso3": "MCO", - "region": "N/A", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Monaco", - "dest_iso3": "MCO", - "region": "N/A", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Monaco", - "dest_iso3": "MCO", - "region": "N/A", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Monaco", - "dest_iso3": "MCO", - "region": "N/A", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Monaco", - "dest_iso3": "MCO", - "region": "N/A", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Monaco", - "dest_iso3": "MCO", - "region": "N/A", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Montenegro", - "dest_iso3": "MNE", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Montenegro", - "dest_iso3": "MNE", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Montenegro", - "dest_iso3": "MNE", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Montenegro", - "dest_iso3": "MNE", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Montenegro", - "dest_iso3": "MNE", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Montenegro", - "dest_iso3": "MNE", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Montenegro", - "dest_iso3": "MNE", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Montenegro", - "dest_iso3": "MNE", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "New Zealand", - "dest_iso3": "NZL", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "New Zealand", - "dest_iso3": "NZL", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "New Zealand", - "dest_iso3": "NZL", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "New Zealand", - "dest_iso3": "NZL", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "New Zealand", - "dest_iso3": "NZL", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "New Zealand", - "dest_iso3": "NZL", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "New Zealand", - "dest_iso3": "NZL", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "New Zealand", - "dest_iso3": "NZL", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "North Korea", - "dest_iso3": "PRK", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "North Korea", - "dest_iso3": "PRK", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "North Korea", - "dest_iso3": "PRK", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "North Korea", - "dest_iso3": "PRK", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "North Korea", - "dest_iso3": "PRK", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "North Korea", - "dest_iso3": "PRK", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "North Korea", - "dest_iso3": "PRK", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "North Korea", - "dest_iso3": "PRK", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Palau", - "dest_iso3": "PLW", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Palau", - "dest_iso3": "PLW", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Palau", - "dest_iso3": "PLW", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Palau", - "dest_iso3": "PLW", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Palau", - "dest_iso3": "PLW", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Palau", - "dest_iso3": "PLW", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Palau", - "dest_iso3": "PLW", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Palau", - "dest_iso3": "PLW", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 360 days", - "visa_free": true, - "visa_free_days": 360, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Panama", - "dest_iso3": "PAN", - "region": "Latin America & Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Panama", - "dest_iso3": "PAN", - "region": "Latin America & Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Panama", - "dest_iso3": "PAN", - "region": "Latin America & Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Panama", - "dest_iso3": "PAN", - "region": "Latin America & Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Panama", - "dest_iso3": "PAN", - "region": "Latin America & Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Panama", - "dest_iso3": "PAN", - "region": "Latin America & Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Panama", - "dest_iso3": "PAN", - "region": "Latin America & Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Panama", - "dest_iso3": "PAN", - "region": "Latin America & Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Papua New Guinea", - "dest_iso3": "PNG", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Papua New Guinea", - "dest_iso3": "PNG", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Papua New Guinea", - "dest_iso3": "PNG", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Papua New Guinea", - "dest_iso3": "PNG", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Papua New Guinea", - "dest_iso3": "PNG", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Papua New Guinea", - "dest_iso3": "PNG", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Papua New Guinea", - "dest_iso3": "PNG", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Papua New Guinea", - "dest_iso3": "PNG", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "eta", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Paraguay", - "dest_iso3": "PRY", - "region": "Latin America & Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Paraguay", - "dest_iso3": "PRY", - "region": "Latin America & Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Paraguay", - "dest_iso3": "PRY", - "region": "Latin America & Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Paraguay", - "dest_iso3": "PRY", - "region": "Latin America & Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Paraguay", - "dest_iso3": "PRY", - "region": "Latin America & Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Paraguay", - "dest_iso3": "PRY", - "region": "Latin America & Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Paraguay", - "dest_iso3": "PRY", - "region": "Latin America & Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Paraguay", - "dest_iso3": "PRY", - "region": "Latin America & Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Philippines", - "dest_iso3": "PHL", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 60 days", - "visa_free": true, - "visa_free_days": 60, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Philippines", - "dest_iso3": "PHL", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Philippines", - "dest_iso3": "PHL", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Philippines", - "dest_iso3": "PHL", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Philippines", - "dest_iso3": "PHL", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Philippines", - "dest_iso3": "PHL", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Philippines", - "dest_iso3": "PHL", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Lucia", - "dest_iso3": "LCA", - "region": "North America & Non-Spanish Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 42 days", - "visa_free": true, - "visa_free_days": 42, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Lucia", - "dest_iso3": "LCA", - "region": "North America & Non-Spanish Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Lucia", - "dest_iso3": "LCA", - "region": "North America & Non-Spanish Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Lucia", - "dest_iso3": "LCA", - "region": "North America & Non-Spanish Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Lucia", - "dest_iso3": "LCA", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 42 days", - "visa_free": true, - "visa_free_days": 42, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Lucia", - "dest_iso3": "LCA", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 42 days", - "visa_free": true, - "visa_free_days": 42, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Lucia", - "dest_iso3": "LCA", - "region": "North America & Non-Spanish Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 42 days", - "visa_free": true, - "visa_free_days": 42, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Lucia", - "dest_iso3": "LCA", - "region": "North America & Non-Spanish Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 42 days", - "visa_free": true, - "visa_free_days": 42, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Vincent and the Grenadines", - "dest_iso3": "VCT", - "region": "North America & Non-Spanish Caribbean", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Vincent and the Grenadines", - "dest_iso3": "VCT", - "region": "North America & Non-Spanish Caribbean", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Vincent and the Grenadines", - "dest_iso3": "VCT", - "region": "North America & Non-Spanish Caribbean", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Vincent and the Grenadines", - "dest_iso3": "VCT", - "region": "North America & Non-Spanish Caribbean", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Vincent and the Grenadines", - "dest_iso3": "VCT", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Vincent and the Grenadines", - "dest_iso3": "VCT", - "region": "North America & Non-Spanish Caribbean", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Vincent and the Grenadines", - "dest_iso3": "VCT", - "region": "North America & Non-Spanish Caribbean", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Saint Vincent and the Grenadines", - "dest_iso3": "VCT", - "region": "North America & Non-Spanish Caribbean", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 180 days", - "visa_free": true, - "visa_free_days": 180, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Samoa", - "dest_iso3": "WSM", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Samoa", - "dest_iso3": "WSM", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Samoa", - "dest_iso3": "WSM", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Samoa", - "dest_iso3": "WSM", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Samoa", - "dest_iso3": "WSM", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Samoa", - "dest_iso3": "WSM", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Samoa", - "dest_iso3": "WSM", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Samoa", - "dest_iso3": "WSM", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "San Marino", - "dest_iso3": "SMR", - "region": "N/A", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "San Marino", - "dest_iso3": "SMR", - "region": "N/A", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "San Marino", - "dest_iso3": "SMR", - "region": "N/A", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "San Marino", - "dest_iso3": "SMR", - "region": "N/A", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "San Marino", - "dest_iso3": "SMR", - "region": "N/A", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "San Marino", - "dest_iso3": "SMR", - "region": "N/A", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "San Marino", - "dest_iso3": "SMR", - "region": "N/A", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "San Marino", - "dest_iso3": "SMR", - "region": "N/A", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sao Tome and Principe", - "dest_iso3": "STP", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free", - "visa_free": true, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sao Tome and Principe", - "dest_iso3": "STP", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sao Tome and Principe", - "dest_iso3": "STP", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sao Tome and Principe", - "dest_iso3": "STP", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sao Tome and Principe", - "dest_iso3": "STP", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sao Tome and Principe", - "dest_iso3": "STP", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 15 days", - "visa_free": true, - "visa_free_days": 15, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sao Tome and Principe", - "dest_iso3": "STP", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 15 days", - "visa_free": true, - "visa_free_days": 15, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sao Tome and Principe", - "dest_iso3": "STP", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 15 days", - "visa_free": true, - "visa_free_days": 15, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Senegal", - "dest_iso3": "SEN", - "region": "Africa", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Senegal", - "dest_iso3": "SEN", - "region": "Africa", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Senegal", - "dest_iso3": "SEN", - "region": "Africa", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Senegal", - "dest_iso3": "SEN", - "region": "Africa", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Senegal", - "dest_iso3": "SEN", - "region": "Africa", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Senegal", - "dest_iso3": "SEN", - "region": "Africa", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Senegal", - "dest_iso3": "SEN", - "region": "Africa", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Senegal", - "dest_iso3": "SEN", - "region": "Africa", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Solomon Islands", - "dest_iso3": "SLB", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Solomon Islands", - "dest_iso3": "SLB", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Solomon Islands", - "dest_iso3": "SLB", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Solomon Islands", - "dest_iso3": "SLB", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Solomon Islands", - "dest_iso3": "SLB", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Solomon Islands", - "dest_iso3": "SLB", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Solomon Islands", - "dest_iso3": "SLB", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Solomon Islands", - "dest_iso3": "SLB", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Spain", - "dest_iso3": "ESP", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Spain", - "dest_iso3": "ESP", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Spain", - "dest_iso3": "ESP", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Spain", - "dest_iso3": "ESP", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Spain", - "dest_iso3": "ESP", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Spain", - "dest_iso3": "ESP", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Spain", - "dest_iso3": "ESP", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Spain", - "dest_iso3": "ESP", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sri Lanka", - "dest_iso3": "LKA", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sri Lanka", - "dest_iso3": "LKA", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sri Lanka", - "dest_iso3": "LKA", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sri Lanka", - "dest_iso3": "LKA", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sri Lanka", - "dest_iso3": "LKA", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sri Lanka", - "dest_iso3": "LKA", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sri Lanka", - "dest_iso3": "LKA", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Sri Lanka", - "dest_iso3": "LKA", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Svalbard and Jan Mayen", - "dest_iso3": "SJM", - "region": "Europe", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Svalbard and Jan Mayen", - "dest_iso3": "SJM", - "region": "Europe", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Svalbard and Jan Mayen", - "dest_iso3": "SJM", - "region": "Europe", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Svalbard and Jan Mayen", - "dest_iso3": "SJM", - "region": "Europe", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Svalbard and Jan Mayen", - "dest_iso3": "SJM", - "region": "Europe", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Svalbard and Jan Mayen", - "dest_iso3": "SJM", - "region": "Europe", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Svalbard and Jan Mayen", - "dest_iso3": "SJM", - "region": "Europe", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Svalbard and Jan Mayen", - "dest_iso3": "SJM", - "region": "Europe", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 90 days", - "visa_free": true, - "visa_free_days": 90, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tonga", - "dest_iso3": "TON", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tonga", - "dest_iso3": "TON", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tonga", - "dest_iso3": "TON", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tonga", - "dest_iso3": "TON", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tonga", - "dest_iso3": "TON", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tonga", - "dest_iso3": "TON", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tonga", - "dest_iso3": "TON", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Tonga", - "dest_iso3": "TON", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa on arrival", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uzbekistan", - "dest_iso3": "UZB", - "region": "Asia", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uzbekistan", - "dest_iso3": "UZB", - "region": "Asia", - "passport": "India", - "passport_iso2": "IN", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uzbekistan", - "dest_iso3": "UZB", - "region": "Asia", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uzbekistan", - "dest_iso3": "UZB", - "region": "Asia", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uzbekistan", - "dest_iso3": "UZB", - "region": "Asia", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa required", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": true, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uzbekistan", - "dest_iso3": "UZB", - "region": "Asia", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uzbekistan", - "dest_iso3": "UZB", - "region": "Asia", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 30 days", - "visa_free": true, - "visa_free_days": 30, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Uzbekistan", - "dest_iso3": "UZB", - "region": "Asia", - "passport": "United States", - "passport_iso2": "US", - "requirement": "e-visa", - "visa_free": false, - "visa_free_days": null, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": true, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vanuatu", - "dest_iso3": "VUT", - "region": "Oceania", - "passport": "Brazil", - "passport_iso2": "BR", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vanuatu", - "dest_iso3": "VUT", - "region": "Oceania", - "passport": "India", - "passport_iso2": "IN", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vanuatu", - "dest_iso3": "VUT", - "region": "Oceania", - "passport": "Nigeria", - "passport_iso2": "NG", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vanuatu", - "dest_iso3": "VUT", - "region": "Oceania", - "passport": "Philippines", - "passport_iso2": "PH", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vanuatu", - "dest_iso3": "VUT", - "region": "Oceania", - "passport": "South Africa", - "passport_iso2": "ZA", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vanuatu", - "dest_iso3": "VUT", - "region": "Oceania", - "passport": "South Korea", - "passport_iso2": "KR", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vanuatu", - "dest_iso3": "VUT", - "region": "Oceania", - "passport": "United Kingdom", - "passport_iso2": "GB", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - }, - { - "destination": "Vanuatu", - "dest_iso3": "VUT", - "region": "Oceania", - "passport": "United States", - "passport_iso2": "US", - "requirement": "visa free 120 days", - "visa_free": true, - "visa_free_days": 120, - "needs_visa_in_advance": false, - "on_arrival_or_evisa": false, - "people_groups": 1, - "scope_note": "TOURIST/VISITOR entry only — NOT permission for religious work, NOT residency, NOT a safety assessment", - "source": "passport-index open dataset (public, no key)" - } - ] -} \ No newline at end of file diff --git a/internal/public-hygiene-check.mjs b/internal/public-hygiene-check.mjs index b07ce7f7a..89cdcf4a8 100644 --- a/internal/public-hygiene-check.mjs +++ b/internal/public-hygiene-check.mjs @@ -65,7 +65,7 @@ const LEAK = [ // ★ HARD in every mode (Driver-critical, 2026-09-24): field-access / visa data must never // ship in ANY public tree -- it maps how workers enter closed countries. Found live-served // before this rule existed. Filename AND content patterns, no strict-tier softening. - [/field-access-visas/, 'PRIVATE data-class: field-access/visa table (see data-private/README.md)'], + [/field-access-visas/, 'PRIVATE data-class: field-access/visa table (private tables live outside the repo, see DOXA_PRIVATE_DIR)'], [/"visa_/, 'PRIVATE data-class: visa field in shipped data'], ] // ★ ADDED 2026-09-24 (public-exposure audit, policies P3/P4/P7). A public tree carries diff --git a/library/scripts/research/build-tabulator-tables.mjs b/library/scripts/research/build-tabulator-tables.mjs index ba93da113..37fac6da5 100644 --- a/library/scripts/research/build-tabulator-tables.mjs +++ b/library/scripts/research/build-tabulator-tables.mjs @@ -32,8 +32,12 @@ import { dirname, join, resolve } from 'node:path'; const __dirname = dirname(fileURLToPath(import.meta.url)); const OUT = join(__dirname, 'out'); const TABLES = join(OUT, 'tables'); -// Tables that must NEVER ship publicly (see data-private/README.md). +// Tables that must NEVER ship publicly. They are never written inside this repo: set +// DOXA_PRIVATE_DIR to a folder OUTSIDE the checkout to keep them for internal analysis, or +// leave it unset and they are skipped. (They used to live in a tracked data-private/ folder; +// a tracked folder in a public repo is not private.) const PRIVATE_TABLES = new Set(['field-access-visas']); +const PRIVATE_DIR = process.env.DOXA_PRIVATE_DIR ? resolve(process.env.DOXA_PRIVATE_DIR) : null; const PROFILES = resolve(__dirname, '..', '..', '..', 'plugin-designs'); const read = (f) => JSON.parse(readFileSync(join(OUT, f), 'utf8')); @@ -66,13 +70,17 @@ function emit(name, rows, columns, meta, assert) { } } if (assert) assert(rows); - // RELEASE GOVERNANCE: tables in PRIVATE_TABLES are written to data-private/ - // (never copied to the web-root, never indexed) — see data-private/README.md. + // RELEASE GOVERNANCE: tables in PRIVATE_TABLES never land in this repo — only in + // DOXA_PRIVATE_DIR (outside the checkout), or nowhere. if (PRIVATE_TABLES.has(name)) { - const priv = join(TABLES, '..', '..', 'data-private', 'tables'); + if (!PRIVATE_DIR) { + console.log(`[tables] ${name.padEnd(26)} ${String(rows.length).padStart(5)} rows PRIVATE — skipped (set DOXA_PRIVATE_DIR to keep it outside the repo)`); + return { name, rows: rows.length, private: true }; + } + const priv = join(PRIVATE_DIR, 'tables'); if (!existsSync(priv)) mkdirSync(priv, { recursive: true }); writeFileSync(join(priv, `${name}.json`), JSON.stringify({ meta, columns, rows }, null, 1)); - console.log(`[tables] ${name.padEnd(26)} ${String(rows.length).padStart(5)} rows PRIVATE → data-private/`); + console.log(`[tables] ${name.padEnd(26)} ${String(rows.length).padStart(5)} rows PRIVATE → ${priv}`); return { name, rows: rows.length, private: true }; } if (!existsSync(TABLES)) mkdirSync(TABLES, { recursive: true }); @@ -1319,7 +1327,7 @@ for (const b of built) { const app = ROUTE[b.name]; if (!app) continue; // ★ THE LEAK THIS LOOP CAUSED (found live 2026-09-24, Driver-critical): emit() already - // respects PRIVATE_TABLES and writes those to data-private/ -- but THIS loop copied from + // respects PRIVATE_TABLES and keeps those out of the repo -- but THIS loop copied from // out/tables into the BUNDLE's data dir without the same check, so field-access-visas.json // landed in plugin-designs/key-cities/data/tables/, flowed into the public snapshot AND the // served catalog, and was fetchable by anonymous clone + live 200. A privacy rule enforced diff --git a/plugin-designs/key-cities/data-tables.vue b/plugin-designs/key-cities/data-tables.vue index 69c931a42..0c17855ee 100644 --- a/plugin-designs/key-cities/data-tables.vue +++ b/plugin-designs/key-cities/data-tables.vue @@ -36,7 +36,7 @@ const TABS = [ { id: 'languages', label: 'By Country', file: 'languages-by-country' }, { id: 'operators', label: 'ISPs & Carriers', file: 'network-operators' }, { id: 'messaging', label: 'Messaging Apps', file: 'messaging-channels' }, - // Field-access/visa data is PRIVATE (data-private/ — release governance): + // Field-access/visa data is PRIVATE (kept outside the repo — release governance): // publishing it could accelerate access closures. Tab removed from the // public build; the dataset stays available for internal analysis. ] From c46a9a04bd433f997ffa46645658ebfb8d24ea9a Mon Sep 17 00:00:00 2001 From: doxa-maps-88655c70 <88627970+doxa-maps-88655c70@users.noreply.github.com> Date: Thu, 24 Sep 2026 18:34:02 +0000 Subject: [PATCH 02/10] README: lead with the objectives, showcase the Research Gallery, teach the agent swarm - Opens with what dx-maps is for: seven objectives, each paired with the gate or section that proves it is met. - New Research Gallery section: the cap-5 app shell and the tree of cap-4..1 plugins it nests, each still independently embeddable. - Plugin Studio: clone main (the old branch was 198 commits behind), a command table, and a fresh studio screenshot (the old one showed a retired nav and tofu icons). - Agent swarm: renamed to industry terms (trunk-based development, merge queue, maintainer), a laptop recipe (worktrees, strict ports, one builder, flock as the queue), and a redrawn diagram whose inner ring is an actual queue with one gate. SVG source committed next to the PNG. - MapLibre is now described as it is: a one-prop, token-free engine. - Removed internal credential/push instructions (AGENT-BRIEF.md covers agents). - documentation/: fixed 19 dead links left by the docs/ move, removed internal references, and listed the working docs in the index. - readme-shots: ONLY= retakes a single image. --- README.md | 421 ++++++++++-------- documentation/CONTRIBUTING.md | 10 +- .../README-SECTION-3-cli-commands.md | 2 +- documentation/README-longform.md | 10 +- documentation/README.md | 8 + documentation/contributing/README.md | 14 +- .../develop-a-plugin-and-see-it-live.md | 4 +- .../readme-images/cap5-plugin-studio.png | Bin 999122 -> 1039157 bytes .../readme-images/delegation-model.png | Bin 233892 -> 178873 bytes .../readme-images/src/delegation-model.svg | 68 +++ documentation/reference.md | 4 +- internal/readme-shots.mjs | 3 + 12 files changed, 336 insertions(+), 208 deletions(-) create mode 100644 documentation/readme-images/src/delegation-model.svg diff --git a/README.md b/README.md index 6790fe48d..8b7f5b715 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# doxa-maps — one build, maps that embed everywhere +# dx-maps — one build, maps that embed everywhere > **The map cruncher.** Many hand-built maps go in; one shared library, one repo and one build > come out — and every map fans out to five deployment targets from the same artifacts. @@ -18,24 +18,99 @@ > (proven) (proven) (built) (built) (built) > ``` - **A Vite bundler that turns each map into a self-contained web component.** Write a map in `plugin-designs//`, run one build, and get a folder you can drop on any host — iframe it, -script-embed it, wrap it as a mobile app, or open every map at once as one SPA. - -This README has three parts, in the order you need them: - -1. **[The 5 plugin capabilities](#1-the-5-plugin-capabilities)** — what you can build, simplest to richest. -2. **[The 5 deployment methods](#2-the-5-deployment-methods)** — where a plugin can run. -3. **[The Plugin Studio](#3-the-plugin-studio)** — ★ where you *work*. Start here if you are new. +script-embed it, wrap it as a mobile app, or open every map at once as one app. --- -## 1. The 5 plugin capabilities — most advanced first +## What dx-maps is for — and how each objective is met + +Maps multiply a prayer movement only when they can live on *every* partner's site, not just one. +dx-maps exists to make that cheap. It set out to meet seven objectives; each one is met by something +you can open or run, not by a claim. + +| # | Objective | How it is met | See it / check it | +|---|-----------|---------------|-------------------| +| 1 | **One build → one folder.** Seven maps that were seven codebases become one repo and one build. | `bun run build` writes a single drop-anywhere tree, `public/doxa-maps/`, with a `manifest.json` describing every bundle. | `bun run check:drop` · `bun run check:settled` | +| 2 | **Every map is embeddable.** Any map, on any site, with a copy-paste snippet. | Each bundle is one custom element; `manifest.json` ships an iframe snippet and an SRI-pinned ` - - diff --git a/data/legacy/upg-neighbor/maplibre-gl.css b/data/legacy/upg-neighbor/maplibre-gl.css deleted file mode 100644 index 6b4bfda74..000000000 --- a/data/legacy/upg-neighbor/maplibre-gl.css +++ /dev/null @@ -1 +0,0 @@ -.maplibregl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgb(0 0 0/0)}.maplibregl-canvas{left:0;position:absolute;top:0}.maplibregl-map:fullscreen{height:100%;width:100%}.maplibregl-ctrl-group button.maplibregl-ctrl-compass{touch-action:none}.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.maplibregl-ctrl-top-left{left:0;top:0}.maplibregl-ctrl-top-right{right:0;top:0}.maplibregl-ctrl-bottom-left{bottom:0;left:0}.maplibregl-ctrl-bottom-right{bottom:0;right:0}.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.maplibregl-ctrl-group{background:#fff;border-radius:4px}.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (forced-colors:active){.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.maplibregl-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (forced-colors:active){.maplibregl-ctrl-icon{background-color:transparent}.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl button:disabled{cursor:not-allowed}.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}@media (hover:hover){.maplibregl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}}.maplibregl-ctrl button:not(:disabled):active{background-color:rgba(0,0,0,.05)}.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-globe .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' stroke='%23333' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='8.5'/%3E%3Cpath d='M17.5 11c0 4.819-3.02 8.5-6.5 8.5S4.5 15.819 4.5 11 7.52 2.5 11 2.5s6.5 3.681 6.5 8.5Z'/%3E%3Cpath d='M13.5 11c0 2.447-.331 4.64-.853 6.206-.262.785-.562 1.384-.872 1.777-.314.399-.58.517-.775.517s-.461-.118-.775-.517c-.31-.393-.61-.992-.872-1.777C8.831 15.64 8.5 13.446 8.5 11s.331-4.64.853-6.206c.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517s.461.118.775.517c.31.393.61.992.872 1.777.522 1.565.853 3.76.853 6.206Z'/%3E%3Cpath d='M11 7.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138q.07-.058.224-.138c.299-.151.763-.302 1.379-.434C7.378 5.666 9.091 5.5 11 5.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138q-.07.058-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428ZM4.486 6.436ZM11 16.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138 1.3 1.3 0 0 1 .224-.138c.299-.151.763-.302 1.379-.434C7.378 14.666 9.091 14.5 11 14.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138a1.3 1.3 0 0 1-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm-6.514-1.064ZM11 12.5c-2.46 0-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.5 1.5 0 0 1-.39-.272.3.3 0 0 1-.047-.064.3.3 0 0 1 .048-.064c.066-.073.189-.167.389-.272.399-.21 1.009-.413 1.805-.59C6.328 9.722 8.54 9.5 11 9.5s4.672.222 6.256.574c.795.177 1.405.38 1.804.59.2.105.323.2.39.272a.3.3 0 0 1 .047.064.3.3 0 0 1-.048.064 1.4 1.4 0 0 1-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002zm0 .018v.002zm17.002.002v-.002zm0-.018v-.002z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-globe-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' stroke='%2333b5e5' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='8.5'/%3E%3Cpath d='M17.5 11c0 4.819-3.02 8.5-6.5 8.5S4.5 15.819 4.5 11 7.52 2.5 11 2.5s6.5 3.681 6.5 8.5Z'/%3E%3Cpath d='M13.5 11c0 2.447-.331 4.64-.853 6.206-.262.785-.562 1.384-.872 1.777-.314.399-.58.517-.775.517s-.461-.118-.775-.517c-.31-.393-.61-.992-.872-1.777C8.831 15.64 8.5 13.446 8.5 11s.331-4.64.853-6.206c.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517s.461.118.775.517c.31.393.61.992.872 1.777.522 1.565.853 3.76.853 6.206Z'/%3E%3Cpath d='M11 7.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138q.07-.058.224-.138c.299-.151.763-.302 1.379-.434C7.378 5.666 9.091 5.5 11 5.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138q-.07.058-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428ZM4.486 6.436ZM11 16.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138 1.3 1.3 0 0 1 .224-.138c.299-.151.763-.302 1.379-.434C7.378 14.666 9.091 14.5 11 14.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138a1.3 1.3 0 0 1-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm-6.514-1.064ZM11 12.5c-2.46 0-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.5 1.5 0 0 1-.39-.272.3.3 0 0 1-.047-.064.3.3 0 0 1 .048-.064c.066-.073.189-.167.389-.272.399-.21 1.009-.413 1.805-.59C6.328 9.722 8.54 9.5 11 9.5s4.672.222 6.256.574c.795.177 1.405.38 1.804.59.2.105.323.2.39.272a.3.3 0 0 1 .047.064.3.3 0 0 1-.048.064 1.4 1.4 0 0 1-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002zm0 .018v.002zm17.002.002v-.002zm0-.018v-.002z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%23333' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%2333b5e5' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23aaa' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:maplibregl-spin 2s linear infinite}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23999' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23666' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}}@keyframes maplibregl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (forced-colors:active){a.maplibregl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E")}}.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}@media screen{.maplibregl-ctrl-attrib.maplibregl-compact{background-color:#fff;border-radius:12px;box-sizing:content-box;color:#000;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.maplibregl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E");border:0;border-radius:12px;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgba(0,0,0,.05)}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{right:0;top:0}.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{left:0;top:0}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (forced-colors:active){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}@media screen and (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.maplibregl-attrib-empty{display:none}.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px;white-space:nowrap}.maplibregl-popup{display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.maplibregl-popup-anchor-left{flex-direction:row}.maplibregl-popup-anchor-right{flex-direction:row-reverse}.maplibregl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.maplibregl-popup-anchor-top .maplibregl-popup-tip{align-self:center;border-bottom-color:#fff;border-top:none}.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.maplibregl-popup-anchor-left .maplibregl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.maplibregl-popup-anchor-right .maplibregl-popup-tip{align-self:center;border-left-color:#fff;border-right:none}[dir=rtl] .maplibregl-popup-anchor-left{flex-direction:row-reverse}[dir=rtl] .maplibregl-popup-anchor-right{flex-direction:row}[dir=rtl] .maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-end}[dir=rtl] .maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-start}[dir=rtl] .maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-end}[dir=rtl] .maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-start}.maplibregl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.maplibregl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.maplibregl-popup-content{background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:15px 10px;pointer-events:auto;position:relative}.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.maplibregl-popup-track-pointer{display:none}.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.maplibregl-marker{left:0;position:absolute;top:0;transition:opacity .2s;will-change:transform}.maplibregl-user-location-dot,.maplibregl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.maplibregl-user-location-dot:before{animation:maplibregl-user-location-dot-pulse 2s infinite;content:"";position:absolute}.maplibregl-user-location-dot:after{border:2px solid #fff;border-radius:50%;box-shadow:0 0 3px rgba(0,0,0,.35);box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}@media (prefers-reduced-motion:reduce){.maplibregl-user-location-dot:before{animation:none}}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.maplibregl-user-location-dot-stale{background-color:#aaa}.maplibregl-user-location-dot-stale:after{display:none}.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.maplibregl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}.maplibregl-cooperative-gesture-screen{align-items:center;background:rgba(0,0,0,.4);color:#fff;display:flex;font-size:1.4em;inset:0;justify-content:center;line-height:1.2;opacity:0;padding:1rem;pointer-events:none;position:absolute;transition:opacity 1s ease 1s;z-index:99999}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity .05s}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(pointer:coarse){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}.maplibregl-pseudo-fullscreen{height:100%!important;left:0!important;position:fixed!important;top:0!important;width:100%!important;z-index:99999} \ No newline at end of file diff --git a/data/legacy/upg-neighbor/maplibre-gl.js b/data/legacy/upg-neighbor/maplibre-gl.js deleted file mode 100644 index c5acb688e..000000000 --- a/data/legacy/upg-neighbor/maplibre-gl.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * MapLibre GL JS - * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v5.24.0/LICENSE.txt - */ -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : -typeof define === 'function' && define.amd ? define(factory) : -(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.maplibregl = factory()); -})(this, (function () { 'use strict'; - -/* eslint-disable */ - -var maplibregl = {}; -var modules = {}; -function define(moduleName, _dependencies, moduleFactory) { - modules[moduleName] = moduleFactory; - - // to get the list of modules see generated dist/maplibre-gl-dev.js file (look for `define(` calls) - if (moduleName !== 'index') { - return; - } - - // we assume that when an index module is initializing then other modules are loaded already - var workerBundleString = 'var sharedModule = {}; (' + modules.shared + ')(sharedModule); (' + modules.worker + ')(sharedModule);' - - var sharedModule = {}; - // the order of arguments of a module factory depends on rollup (it decides who is whose dependency) - // to check the correct order, see dist/maplibre-gl-dev.js file (look for `define(` calls) - // we assume that for our 3 chunks it will generate 3 modules and their order is predefined like the following - modules.shared(sharedModule); - modules.index(maplibregl, sharedModule); - - if (typeof window !== 'undefined') { - maplibregl.setWorkerUrl(window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }))); - } - - return maplibregl; -}; - - - -define("shared",["exports"],(function(t){"use strict";function e(t,e,n,r){return new(n||(n=Promise))((function(i,s){function o(t){try{l(r.next(t));}catch(t){s(t);}}function a(t){try{l(r.throw(t));}catch(t){s(t);}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e);}))).then(o,a);}l((r=r.apply(t,e||[])).next());}))}function n(t,e){this.x=t,this.y=e;}function r(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var i,s;"function"==typeof SuppressedError&&SuppressedError,n.prototype={clone(){return new n(this.x,this.y)},add(t){return this.clone()._add(t)},sub(t){return this.clone()._sub(t)},multByPoint(t){return this.clone()._multByPoint(t)},divByPoint(t){return this.clone()._divByPoint(t)},mult(t){return this.clone()._mult(t)},div(t){return this.clone()._div(t)},rotate(t){return this.clone()._rotate(t)},rotateAround(t,e){return this.clone()._rotateAround(t,e)},matMult(t){return this.clone()._matMult(t)},unit(){return this.clone()._unit()},perp(){return this.clone()._perp()},round(){return this.clone()._round()},mag(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals(t){return this.x===t.x&&this.y===t.y},dist(t){return Math.sqrt(this.distSqr(t))},distSqr(t){const e=t.x-this.x,n=t.y-this.y;return e*e+n*n},angle(){return Math.atan2(this.y,this.x)},angleTo(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith(t){return this.angleWithSep(t.x,t.y)},angleWithSep(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult(t){const e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add(t){return this.x+=t.x,this.y+=t.y,this},_sub(t){return this.x-=t.x,this.y-=t.y,this},_mult(t){return this.x*=t,this.y*=t,this},_div(t){return this.x/=t,this.y/=t,this},_multByPoint(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint(t){return this.x/=t.x,this.y/=t.y,this},_unit(){return this._div(this.mag()),this},_perp(){const t=this.y;return this.y=this.x,this.x=-t,this},_rotate(t){const e=Math.cos(t),n=Math.sin(t),r=n*this.x+e*this.y;return this.x=e*this.x-n*this.y,this.y=r,this},_rotateAround(t,e){const n=Math.cos(t),r=Math.sin(t),i=e.y+r*(this.x-e.x)+n*(this.y-e.y);return this.x=e.x+n*(this.x-e.x)-r*(this.y-e.y),this.y=i,this},_round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},constructor:n},n.convert=function(t){if(t instanceof n)return t;if(Array.isArray(t))return new n(+t[0],+t[1]);if(void 0!==t.x&&void 0!==t.y)return new n(+t.x,+t.y);throw new Error("Expected [x, y] or {x, y} point format")};var o=function(){if(s)return i;function t(t,e,n,r){this.cx=3*t,this.bx=3*(n-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(r-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=e,this.p2x=n,this.p2y=r;}return s=1,i=t,t.prototype={sampleCurveX:function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return ((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(void 0===e&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var n=t,r=0;r<8;r++){var i=this.sampleCurveX(n)-t;if(Math.abs(i)i?o=n:a=n,n=.5*(a-o)+o;return n},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}},i}(),a=r(o);let l,u;function c(){return null!=l||(l="undefined"!=typeof OffscreenCanvas&&new OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof createImageBitmap),l}function h(){if(null==u&&(u=!1,c())){const t=5,e=new OffscreenCanvas(t,t).getContext("2d",{willReadFrequently:!0});if(e){for(let n=0;n4&&void 0!==arguments[4]?arguments[4]:"zyx",s=Math.PI/360;e*=s,r*=s,n*=s;var o=Math.sin(e),a=Math.cos(e),l=Math.sin(n),u=Math.cos(n),c=Math.sin(r),h=Math.cos(r);switch(i){case "xyz":t[0]=o*u*h+a*l*c,t[1]=a*l*h-o*u*c,t[2]=a*u*c+o*l*h,t[3]=a*u*h-o*l*c;break;case "xzy":t[0]=o*u*h-a*l*c,t[1]=a*l*h-o*u*c,t[2]=a*u*c+o*l*h,t[3]=a*u*h+o*l*c;break;case "yxz":t[0]=o*u*h+a*l*c,t[1]=a*l*h-o*u*c,t[2]=a*u*c-o*l*h,t[3]=a*u*h+o*l*c;break;case "yzx":t[0]=o*u*h+a*l*c,t[1]=a*l*h+o*u*c,t[2]=a*u*c-o*l*h,t[3]=a*u*h-o*l*c;break;case "zxy":t[0]=o*u*h-a*l*c,t[1]=a*l*h+o*u*c,t[2]=a*u*c+o*l*h,t[3]=a*u*h-o*l*c;break;case "zyx":t[0]=o*u*h-a*l*c,t[1]=a*l*h+o*u*c,t[2]=a*u*c-o*l*h,t[3]=a*u*h+o*l*c;break;default:throw new Error("Unknown angle order "+i)}return t}function I(){var t=new f(2);return f!=Float32Array&&(t[0]=0,t[1]=0),t}function E(t,e){var n=new f(2);return n[0]=t,n[1]=e,n}m(),_=new f(4),f!=Float32Array&&(_[0]=0,_[1]=0,_[2]=0,_[3]=0),m(),x(1,0,0),x(0,1,0),M(),M(),d(),I();const T=8192;function F(t,e,n){return e*(T/(t.tileSize*Math.pow(2,n-t.tileID.overscaledZ)))}function P(t){return t instanceof Error?t:new Error("string"==typeof t?t:String(t))}function D(t,e){return (t%e+e)%e}function z(t,e,n){return t*(1-n)+e*n}function B(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,n=e*t;return 4*(t<.5?n:3*(t-e)+n-.75)}function C(t,e,n,r){const i=new a(t,e,n,r);return t=>i.solve(t)}const V=C(.25,.1,.25,1);function L(t,e,n){return Math.min(n,Math.max(e,t))}function O(t,e,n){const r=n-e,i=((t-e)%r+r)%r+e;return i===e?n:i}function $(t,...e){for(const n of e)for(const e in n)t[e]=n[e];return t}let R=1;function N(t,e,n){const r={};for(const n in t)r[n]=e.call(this,t[n],n,t);return r}function U(t,e,n){const r={};for(const n in t)e.call(this,t[n],n,t)&&(r[n]=t[n]);return r}function j(t){return Array.isArray(t)?t.map(j):"object"==typeof t&&t?N(t,j):t}const q={};function G(t){q[t]||("undefined"!=typeof console&&console.warn(t),q[t]=!0);}function X(t,e,n){return (n.y-t.y)*(e.x-t.x)>(e.y-t.y)*(n.x-t.x)}function Y(t){return "undefined"!=typeof WorkerGlobalScope&&void 0!==t&&t instanceof WorkerGlobalScope}let Z=null;function H(t){return "undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap}const W="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function K(t,n,r,i,s){return e(this,void 0,void 0,(function*(){if("undefined"==typeof VideoFrame)throw new Error("VideoFrame not supported");const e=new VideoFrame(t,{timestamp:0});try{const o=null==e?void 0:e.format;if(!o||!o.startsWith("BGR")&&!o.startsWith("RGB"))throw new Error(`Unrecognized format ${o}`);const a=o.startsWith("BGR"),l=new Uint8ClampedArray(i*s*4);if(yield e.copyTo(l,function(t,e,n,r,i){const s=4*Math.max(-e,0),o=(Math.max(0,n)-n)*r*4+s,a=4*r,l=Math.max(0,e),u=Math.max(0,n);return {rect:{x:l,y:u,width:Math.min(t.width,e+r)-l,height:Math.min(t.height,n+i)-u},layout:[{offset:o,stride:a}]}}(t,n,r,i,s)),a)for(let t=0;t{t.removeEventListener(e,n,r);}}}function et(t){return t*Math.PI/180}function nt(t){return t/Math.PI*180}const rt={touchstart:!0,touchmove:!0,touchmoveWindow:!0,touchend:!0,touchcancel:!0},it={dblclick:!0,click:!0,mouseover:!0,mouseout:!0,mousedown:!0,mousemove:!0,mousemoveWindow:!0,mouseup:!0,mouseupWindow:!0,contextmenu:!0,wheel:!0},st="AbortError";class ot extends Error{constructor(t=st){super(t instanceof Error?t.message:t),this.name=st,t instanceof Error&&t.stack&&(this.stack=t.stack);}}function at(t){return t instanceof Error&&t.name===st}function lt(t){if(t.aborted)throw new ot(t.reason)}const ut={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};function ct(t){return ut.REGISTERED_PROTOCOLS[t.substring(0,t.indexOf("://"))]}const ht="global-dispatcher";class pt extends Error{constructor(t,e,n,r){super(`AJAXError: ${e} (${t}): ${n}`),this.status=t,this.statusText=e,this.url=n,this.body=r;}}const ft=()=>{var t;return Y(self)?null===(t=self.worker)||void 0===t?void 0:t.referrer:("blob:"===window.location.protocol?window.parent:window).location.href},dt=function(t,n){return e(this,void 0,void 0,(function*(){var r,i;if(t.url.includes("://")&&!/^https?:|^file:/.test(t.url)){const e=ct(t.url);if(e){const r=yield e(t,n);return r.data||"arrayBuffer"!==t.type?r:$(r,{data:new ArrayBuffer(0)})}if(Y(self)&&(null===(r=self.worker)||void 0===r?void 0:r.actor))return self.worker.actor.sendAsync({type:"GR",data:t,targetMapId:ht},n)}if(!(t=>{var e;return t.startsWith("file:")||(null===(e=ft())||void 0===e?void 0:e.startsWith("file:"))&&!/^\w+:/.test(t)})(t.url)){if(fetch&&Request&&AbortController&&Object.hasOwn(Request.prototype,"signal"))return function(t,n){return e(this,void 0,void 0,(function*(){const e=new Request(t.url,{method:t.method||"GET",body:t.body,credentials:t.credentials,headers:t.headers,cache:t.cache,referrer:ft(),referrerPolicy:t.referrerPolicy,signal:n.signal});let r,i;"json"!==t.type||e.headers.has("Accept")||e.headers.set("Accept","application/json");try{r=yield fetch(e);}catch(e){if(at(e))throw e;throw new pt(0,P(e).message,t.url,new Blob)}if(!r.ok){const e=yield r.blob();throw new pt(r.status,r.statusText,t.url,e)}i="arrayBuffer"===t.type||"image"===t.type?r.arrayBuffer():"json"===t.type?r.json():r.text();const s=yield i;return lt(n.signal),{data:s,cacheControl:r.headers.get("Cache-Control"),expires:r.headers.get("Expires"),etag:r.headers.get("ETag")}}))}(t,n);if(Y(self)&&(null===(i=self.worker)||void 0===i?void 0:i.actor))return self.worker.actor.sendAsync({type:"GR",data:t,mustQueue:!0,targetMapId:ht},n)}return function(t,e){return new Promise(((n,r)=>{var i;const s=new XMLHttpRequest;s.open(t.method||"GET",t.url,!0),"arrayBuffer"!==t.type&&"image"!==t.type||(s.responseType="arraybuffer");for(const e in t.headers)s.setRequestHeader(e,t.headers[e]);"json"===t.type&&(s.responseType="text",(null===(i=t.headers)||void 0===i?void 0:i.Accept)||s.setRequestHeader("Accept","application/json")),s.withCredentials="include"===t.credentials,s.onerror=()=>{r(new Error(s.statusText));},s.onload=()=>{if(!e.signal.aborted)if((s.status>=200&&s.status<300||0===s.status)&&null!==s.response){let e=s.response;if("json"===t.type)try{e=JSON.parse(s.response);}catch(t){return void r(t)}n({data:e,cacheControl:s.getResponseHeader("Cache-Control"),expires:s.getResponseHeader("Expires"),etag:s.getResponseHeader("ETag")});}else {const e=new Blob([s.response],{type:s.getResponseHeader("Content-Type")});r(new pt(s.status,s.statusText,t.url,e));}},e.signal.addEventListener("abort",(()=>{s.abort(),r(new ot(e.signal.reason));})),s.send(t.body);}))}(t,n)}))};function yt(t){if(!t||t.indexOf("://")<=0||t.startsWith("data:image/")||t.startsWith("blob:"))return !0;const e=new URL(t),n=window.location;return e.protocol===n.protocol&&e.host===n.host}function mt(t,e,n){var r;(null===(r=n[t])||void 0===r?void 0:r.includes(e))||(n[t]||(n[t]=[]),n[t].push(e));}function gt(t,e,n){if(null==n?void 0:n[t]){const r=n[t].indexOf(e);-1!==r&&n[t].splice(r,1);}}class xt{constructor(t,e={}){$(this,e),this.type=t;}}class vt extends xt{constructor(t,e={}){super("error",$({error:t},e));}}class bt{on(t,e){return this._listeners||(this._listeners={}),mt(t,e,this._listeners),{unsubscribe:()=>{this.off(t,e);}}}off(t,e){return gt(t,e,this._listeners),gt(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners||(this._oneTimeListeners={}),mt(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){var n,r;"string"==typeof t&&(t=new xt(t,e||{}));const i=t.type;if(this.listens(i)){t.target=this;const e=(null===(n=this._listeners)||void 0===n?void 0:n[i])?this._listeners[i].slice():[];for(const n of e)n.call(this,t);const s=(null===(r=this._oneTimeListeners)||void 0===r?void 0:r[i])?this._oneTimeListeners[i].slice():[];for(const e of s)gt(i,e,this._oneTimeListeners),e.call(this,t);const o=this._eventedParent;o&&($(t,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),o.fire(t));}else t instanceof vt&&console.error(t.error);return this}listens(t){var e,n,r,i,s;return (null===(n=null===(e=this._listeners)||void 0===e?void 0:e[t])||void 0===n?void 0:n.length)>0||(null===(i=null===(r=this._oneTimeListeners)||void 0===r?void 0:r[t])||void 0===i?void 0:i.length)>0||(null===(s=this._eventedParent)||void 0===s?void 0:s.listens(t))}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}var wt={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number",length:2},centerAltitude:{type:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},roll:{type:"number",default:0,units:"degrees"},state:{type:"state",default:{}},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},"font-faces":{type:"fontFaces"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},encoding:{type:"enum",values:{mvt:{},mlt:{}},default:"mvt"},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"filter"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},"color-relief":{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_color-relief","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_color-relief":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},filter:{type:"boolean",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"expression_name",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"projectionDefinition",default:"mercator","property-type":"data-constant",transition:!1,expression:{interpolated:!0,parameters:["zoom"]}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_color-relief","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},resampling:{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"numberArray",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-altitude":{type:"numberArray",default:45,minimum:0,maximum:90,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"colorArray",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"colorArray",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-method":{type:"enum",values:{standard:{},basic:{},combined:{},igor:{},multidirectional:{}},default:"standard",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},resampling:{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},"paint_color-relief":{"color-relief-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"color-relief-color":{type:"color",transition:!1,expression:{interpolated:!0,parameters:["elevation"]},"property-type":"color-ramp"},resampling:{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}},interpolation:{type:"array",value:"interpolation_name",minimum:1},interpolation_name:{type:"enum",values:{linear:{syntax:{overloads:[{parameters:[],"output-type":"interpolation"}],parameters:[]}},exponential:{syntax:{overloads:[{parameters:["base"],"output-type":"interpolation"}],parameters:[{name:"base",type:"number literal"}]}},"cubic-bezier":{syntax:{overloads:[{parameters:["x1","y1","x2","y2"],"output-type":"interpolation"}],parameters:[{name:"x1",type:"number literal"},{name:"y1",type:"number literal"},{name:"x2",type:"number literal"},{name:"y2",type:"number literal"}]}}}}};const _t=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function St(t,e){const n={};for(const e in t)"ref"!==e&&(n[e]=t[e]);return _t.forEach((t=>{t in e&&(n[t]=e[t]);})),n}function At(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return !1;for(let n=0;n`:"value"===t.itemType.kind?"array":`array<${e}>`}return t.kind}const te=[Lt,Ot,$t,Rt,Nt,Ut,Xt,jt,Jt(qt),Yt,Ht,Zt,Wt,Kt];function ee(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!ee(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else {if(t.kind===e.kind)return null;if("value"===t.kind)for(const t of te)if(!ee(t,e))return null}return `Expected ${Qt(t)} but found ${Qt(e)} instead.`}function ne(t,e){return e.some((e=>e.kind===t.kind))}function re(t,e){return e.some((e=>"null"===e?null===t:"array"===e?Array.isArray(t):"object"===e?t&&!Array.isArray(t)&&"object"==typeof t:e===typeof t))}function ie(t,e){return "array"===t.kind&&"array"===e.kind?t.itemType.kind===e.itemType.kind&&"number"==typeof t.N:t.kind===e.kind}const se=.96422,oe=.82521,ae=4/29,le=6/29,ue=3*le*le,ce=le*le*le,he=Math.PI/180,pe=180/Math.PI;function fe(t){return (t%=360)<0&&(t+=360),t}function de([t,e,n,r]){let i,s;const o=me((.2225045*(t=ye(t))+.7168786*(e=ye(e))+.0606169*(n=ye(n)))/1);t===e&&e===n?i=s=o:(i=me((.4360747*t+.3850649*e+.1430804*n)/se),s=me((.0139322*t+.0971045*e+.7141733*n)/oe));const a=116*o-16;return [a<0?0:a,500*(i-o),200*(o-s),r]}function ye(t){return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function me(t){return t>ce?Math.pow(t,1/3):t/ue+ae}function ge([t,e,n,r]){let i=(t+16)/116,s=isNaN(e)?i:i+e/500,o=isNaN(n)?i:i-n/200;return i=1*ve(i),s=se*ve(s),o=oe*ve(o),[xe(3.1338561*s-1.6168667*i-.4906146*o),xe(-.9787684*s+1.9161415*i+.033454*o),xe(.0719453*s-.2289914*i+1.4052427*o),r]}function xe(t){return (t=t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055)<0?0:t>1?1:t}function ve(t){return t>le?t*t*t:ue*(t-ae)}const be=Object.hasOwn||function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};function we(t,e){return be(t,e)?t[e]:void 0}function _e(t){return parseInt(t.padEnd(2,t),16)/255}function Se(t,e){return Ae(e?t/100:t,0,1)}function Ae(t,e,n){return Math.min(Math.max(e,t),n)}function Me(t){return !t.some(Number.isNaN)}const ke={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function Ie(t,e,n){return t+n*(e-t)}function Ee(t,e,n){return t.map(((t,r)=>Ie(t,e[r],n)))}class Te{constructor(t,e,n,r=1,i=!0){this.r=t,this.g=e,this.b=n,this.a=r,i||(this.r*=r,this.g*=r,this.b*=r,r||this.overwriteGetter("rgb",[t,e,n,r]));}static parse(t){if(t instanceof Te)return t;if("string"!=typeof t)return;const e=function(t){if("transparent"===(t=t.toLowerCase().trim()))return [0,0,0,0];const e=we(ke,t);if(e){const[t,n,r]=e;return [t/255,n/255,r/255,1]}if(t.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(t)){const e=t.length<6?1:2;let n=1;return [_e(t.slice(n,n+=e)),_e(t.slice(n,n+=e)),_e(t.slice(n,n+=e)),_e(t.slice(n,n+e)||"ff")]}if(t.startsWith("rgb")){const e=t.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(e){const[t,n,r,i,s,o,a,l,u,c,h,p]=e,f=[i||" ",a||" ",c].join("");if(" "===f||" /"===f||",,"===f||",,,"===f){const t=[r,o,u].join(""),e="%%%"===t?100:""===t?255:0;if(e){const t=[Ae(+n/e,0,1),Ae(+s/e,0,1),Ae(+l/e,0,1),h?Se(+h,p):1];if(Me(t))return t}}return}}const n=t.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(n){const[t,e,r,i,s,o,a,l,u]=n,c=[r||" ",s||" ",a].join("");if(" "===c||" /"===c||",,"===c||",,,"===c){const t=[+e,Ae(+i,0,100),Ae(+o,0,100),l?Se(+l,u):1];if(Me(t))return function([t,e,n,r]){function i(r){const i=(r+t/30)%12,s=e*Math.min(n,1-n);return n-s*Math.max(-1,Math.min(i-3,9-i,1))}return t=fe(t),e/=100,n/=100,[i(0),i(8),i(4),r]}(t)}}}(t);return e?new Te(...e,!1):void 0}get rgb(){const{r:t,g:e,b:n,a:r}=this,i=r||1/0;return this.overwriteGetter("rgb",[t/i,e/i,n/i,r])}get hcl(){return this.overwriteGetter("hcl",function(t){const[e,n,r,i]=de(t),s=Math.sqrt(n*n+r*r);return [Math.round(1e4*s)?fe(Math.atan2(r,n)*pe):NaN,s,e,i]}(this.rgb))}get lab(){return this.overwriteGetter("lab",de(this.rgb))}overwriteGetter(t,e){return Object.defineProperty(this,t,{value:e}),e}toString(){const[t,e,n,r]=this.rgb;return `rgba(${[t,e,n].map((t=>Math.round(255*t))).join(",")},${r})`}static interpolate(t,e,n,r="rgb"){switch(r){case "rgb":{const[r,i,s,o]=Ee(t.rgb,e.rgb,n);return new Te(r,i,s,o,!1)}case "hcl":{const[r,i,s,o]=t.hcl,[a,l,u,c]=e.hcl;let h,p;if(isNaN(r)||isNaN(a))isNaN(r)?isNaN(a)?h=NaN:(h=a,1!==s&&0!==s||(p=l)):(h=r,1!==u&&0!==u||(p=i));else {let t=a-r;a>r&&t>180?t-=360:a180&&(t+=360),h=r+n*t;}const[f,d,y,m]=function([t,e,n,r]){return t=isNaN(t)?0:t*he,ge([n,Math.cos(t)*e,Math.sin(t)*e,r])}([h,null!=p?p:Ie(i,l,n),Ie(s,u,n),Ie(o,c,n)]);return new Te(f,d,y,m,!1)}case "lab":{const[r,i,s,o]=ge(Ee(t.lab,e.lab,n));return new Te(r,i,s,o,!1)}}}}Te.black=new Te(0,0,0,1),Te.white=new Te(1,1,1,1),Te.transparent=new Te(0,0,0,0),Te.red=new Te(1,0,0,1);class Fe{constructor(t,e,n){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=n,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"});}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}const Pe=["bottom","center","top"];class De{constructor(t,e,n,r,i,s){this.text=t,this.image=e,this.scale=n,this.fontStack=r,this.textColor=i,this.verticalAlign=s;}}class ze{constructor(t){this.sections=t;}static fromString(t){return new ze([new De(t,null,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof ze?t:ze.fromString(t)}toString(){return 0===this.sections.length?"":this.sections.map((t=>t.text)).join("")}}class Be{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof Be)return t;if("number"==typeof t)return new Be([t,t,t,t]);if(Array.isArray(t)&&!(t.length<1||t.length>4)){for(const e of t)if("number"!=typeof e)return;switch(t.length){case 1:t=[t[0],t[0],t[0],t[0]];break;case 2:t=[t[0],t[1],t[0],t[1]];break;case 3:t=[t[0],t[1],t[2],t[1]];}return new Be(t)}}toString(){return JSON.stringify(this.values)}static interpolate(t,e,n){return new Be(Ee(t.values,e.values,n))}}class Ce{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof Ce)return t;if("number"==typeof t)return new Ce([t]);if(Array.isArray(t)){for(const e of t)if("number"!=typeof e)return;return new Ce(t)}}toString(){return JSON.stringify(this.values)}static interpolate(t,e,n){return new Ce(Ee(t.values,e.values,n))}}class Ve{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof Ve)return t;if("string"==typeof t){const e=Te.parse(t);if(!e)return;return new Ve([e])}if(!Array.isArray(t))return;const e=[];for(const n of t){if("string"!=typeof n)return;const t=Te.parse(n);if(!t)return;e.push(t);}return new Ve(e)}toString(){return JSON.stringify(this.values)}static interpolate(t,e,n,r="rgb"){const i=[];if(t.values.length!=e.values.length)throw new Error(`colorArray: Arrays have mismatched length (${t.values.length} vs. ${e.values.length}), cannot interpolate.`);for(let s=0;s=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof n&&n>=0&&n<=255?void 0===r||"number"==typeof r&&r>=0&&r<=1?null:`Invalid rgba value [${[t,e,n,r].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${("number"==typeof r?[t,e,n,r]:[t,e,n]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function je(t){if(null===t||"string"==typeof t||"boolean"==typeof t||"number"==typeof t||t instanceof Ne||t instanceof Te||t instanceof Fe||t instanceof ze||t instanceof Be||t instanceof Ce||t instanceof Ve||t instanceof $e||t instanceof Re)return !0;if(Array.isArray(t)){for(const e of t)if(!je(e))return !1;return !0}if("object"==typeof t){for(const e in t)if(!je(t[e]))return !1;return !0}return !1}function qe(t){if(null===t)return Lt;if("string"==typeof t)return $t;if("boolean"==typeof t)return Rt;if("number"==typeof t)return Ot;if(t instanceof Te)return Nt;if(t instanceof Ne)return Ut;if(t instanceof Fe)return Gt;if(t instanceof ze)return Xt;if(t instanceof Be)return Yt;if(t instanceof Ce)return Ht;if(t instanceof Ve)return Zt;if(t instanceof $e)return Kt;if(t instanceof Re)return Wt;if(Array.isArray(t)){const e=t.length;let n;for(const e of t){const t=qe(e);if(n){if(n===t)continue;n=qt;break}n=t;}return Jt(n||qt,e)}return jt}function Ge(t){const e=typeof t;return null===t?"":"string"===e||"number"===e||"boolean"===e?String(t):t instanceof Te||t instanceof Ne||t instanceof ze||t instanceof Be||t instanceof Ce||t instanceof Ve||t instanceof $e||t instanceof Re?t.toString():JSON.stringify(t)}class Xe{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!je(t[1]))return e.error("invalid value");const n=t[1];let r=qe(n);const i=e.expectedType;return "array"!==r.kind||0!==r.N||!i||"array"!==i.kind||"number"==typeof i.N&&0!==i.N||(r=i),new Xe(r,n)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}}const Ye={string:$t,number:Ot,boolean:Rt,object:jt};class Ze{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let n,r=1;const i=t[0];if("array"===i){let i,s;if(t.length>2){const n=t[1];if("string"!=typeof n||!(n in Ye)||"object"===n)return e.error('The item type argument of "array" must be one of string, number, boolean',1);i=Ye[n],r++;}else i=qt;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);s=t[2],r++;}n=Jt(i,s);}else {if(!Ye[i])throw new Error(`Types doesn't contain name = ${i}`);n=Ye[i];}const s=[];for(;rt.outputDefined()))}}const He={"to-boolean":Rt,"to-color":Nt,"to-number":Ot,"to-string":$t};class We{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const n=t[0];if(!He[n])throw new Error(`Can't parse ${n} as it is not part of the known types`);if(("to-boolean"===n||"to-string"===n)&&2!==t.length)return e.error("Expected one argument.");const r=He[n],i=[];for(let n=1;n4?`Invalid rgba value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:Ue(e[0],e[1],e[2],e[3]),!n))return new Te(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new Le(n||`Could not parse color from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case "padding":{let e;for(const n of this.args){e=n.evaluate(t);const r=Be.parse(e);if(r)return r}throw new Le(`Could not parse padding from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case "numberArray":{let e;for(const n of this.args){e=n.evaluate(t);const r=Ce.parse(e);if(r)return r}throw new Le(`Could not parse numberArray from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case "colorArray":{let e;for(const n of this.args){e=n.evaluate(t);const r=Ve.parse(e);if(r)return r}throw new Le(`Could not parse colorArray from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case "variableAnchorOffsetCollection":{let e;for(const n of this.args){e=n.evaluate(t);const r=$e.parse(e);if(r)return r}throw new Le(`Could not parse variableAnchorOffsetCollection from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case "number":{let e=null;for(const n of this.args){if(e=n.evaluate(t),null===e)return 0;const r=Number(e);if(!isNaN(r))return r}throw new Le(`Could not convert ${JSON.stringify(e)} to number.`)}case "formatted":return ze.fromString(Ge(this.args[0].evaluate(t)));case "resolvedImage":return Re.fromString(Ge(this.args[0].evaluate(t)));case "projectionDefinition":return this.args[0].evaluate(t);default:return Ge(this.args[0].evaluate(t))}}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}const Ke=["Unknown","Point","LineString","Polygon"];class Je{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache=new Map,this.availableImages=null,this.canonical=null;}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?Ke[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(t){let e=this._parseColorCache.get(t);return e||(e=Te.parse(t),this._parseColorCache.set(t,e)),e}}class Qe{constructor(t,e,n=[],r,i=new Vt,s=[]){this.registry=t,this.path=n,this.key=n.map((t=>`[${t}]`)).join(""),this.scope=i,this.errors=s,this.expectedType=r,this._isConstant=e;}parse(t,e,n,r,i={}){return e?this.concat(e,n,r)._parse(t,i):this._parse(t,i)}_parse(t,e){function n(t,e,n){return "assert"===n?new Ze(e,[t]):"coerce"===n?new We(e,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const r=t[0];if("string"!=typeof r)return this.error(`Expression name must be a string, but found ${typeof r} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const i=this.registry[r];if(i){let r=i.parse(t,this);if(!r)return null;if(this.expectedType){const t=this.expectedType,i=r.type;if("string"!==t.kind&&"number"!==t.kind&&"boolean"!==t.kind&&"object"!==t.kind&&"array"!==t.kind||"value"!==i.kind){if("projectionDefinition"===t.kind&&["string","array"].includes(i.kind)||["color","formatted","resolvedImage"].includes(t.kind)&&["value","string"].includes(i.kind)||["padding","numberArray"].includes(t.kind)&&["value","number","array"].includes(i.kind)||"colorArray"===t.kind&&["value","string","array"].includes(i.kind)||"variableAnchorOffsetCollection"===t.kind&&["value","array"].includes(i.kind))r=n(r,t,e.typeAnnotation||"coerce");else if(this.checkSubtype(t,i))return null}else r=n(r,t,e.typeAnnotation||"assert");}if(!(r instanceof Xe)&&"resolvedImage"!==r.type.kind&&this._isConstant(r)){const t=new Je;try{r=new Xe(r.type,r.evaluate(t));}catch(t){return this.error(t.message),null}}return r}return this.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(void 0===t?"'undefined' value invalid. Use null instead.":"object"==typeof t?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,n){const r="number"==typeof t?this.path.concat(t):this.path,i=n?this.scope.concat(n):this.scope;return new Qe(this.registry,this._isConstant,r,e||null,i,this.errors)}error(t,...e){const n=`${this.key}${e.map((t=>`[${t}]`)).join("")}`;this.errors.push(new Ct(n,t));}checkSubtype(t,e){const n=ee(t,e);return n&&this.error(n),n}}class tn{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const n=[];for(let r=1;r=n.length)throw new Le(`Array index out of bounds: ${e} > ${n.length-1}.`);if(e!==Math.floor(e))throw new Le(`Array index must be an integer, but found ${e} instead.`);return n[e]}eachChild(t){t(this.index),t(this.input);}outputDefined(){return !1}}class rn{constructor(t,e){this.type=Rt,this.needle=t,this.haystack=e;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const n=e.parse(t[1],1,qt),r=e.parse(t[2],2,qt);return n&&r?ne(n.type,[Rt,$t,Ot,Lt,qt])?new rn(n,r):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${Qt(n.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),n=this.haystack.evaluate(t);if(!n)return !1;if(!re(e,["boolean","string","number","null"]))throw new Le(`Expected first argument to be of type boolean, string, number or null, but found ${Qt(qe(e))} instead.`);if(!re(n,["string","array"]))throw new Le(`Expected second argument to be of type array or string, but found ${Qt(qe(n))} instead.`);return n.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack);}outputDefined(){return !0}}class sn{constructor(t,e,n){this.type=Ot,this.needle=t,this.haystack=e,this.fromIndex=n;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 2 or 3 arguments, but found ${t.length-1} instead.`);const n=e.parse(t[1],1,qt),r=e.parse(t[2],2,qt);if(!n||!r)return null;if(!ne(n.type,[Rt,$t,Ot,Lt,qt]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${Qt(n.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,Ot);return i?new sn(n,r,i):null}return new sn(n,r)}evaluate(t){const e=this.needle.evaluate(t),n=this.haystack.evaluate(t);if(!re(e,["boolean","string","number","null"]))throw new Le(`Expected first argument to be of type boolean, string, number or null, but found ${Qt(qe(e))} instead.`);let r;if(this.fromIndex&&(r=this.fromIndex.evaluate(t)),re(n,["string"])){const t=n.indexOf(e,r);return -1===t?-1:[...n.slice(0,t)].length}if(re(n,["array"]))return n.indexOf(e,r);throw new Le(`Expected second argument to be of type array or string, but found ${Qt(qe(n))} instead.`)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);}outputDefined(){return !1}}class on{constructor(t,e,n,r,i,s){this.inputType=t,this.type=e,this.input=n,this.cases=r,this.outputs=i,this.otherwise=s;}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error("Expected an even number of arguments.");let n,r;e.expectedType&&"value"!==e.expectedType.kind&&(r=e.expectedType);const i={},s=[];for(let o=2;oNumber.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof t&&Math.floor(t)!==t)return u.error("Numeric branch labels must be integer values.");if(n){if(u.checkSubtype(n,qe(t)))return null}else n=qe(t);if(void 0!==i[String(t)])return u.error("Branch labels must be unique.");i[String(t)]=s.length;}const c=e.parse(l,o,r);if(!c)return null;r=r||c.type,s.push(c);}const o=e.parse(t[1],1,qt);if(!o)return null;const a=e.parse(t[t.length-1],t.length-1,r);return a?"value"!==o.type.kind&&e.concat(1).checkSubtype(n,o.type)?null:new on(n,r,o,i,s,a):null}evaluate(t){const e=this.input.evaluate(t);return (qe(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}}class an{constructor(t,e,n){this.type=t,this.branches=e,this.otherwise=n;}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error("Expected an odd number of arguments.");let n;e.expectedType&&"value"!==e.expectedType.kind&&(n=e.expectedType);const r=[];for(let i=1;ie.outputDefined()))&&this.otherwise.outputDefined()}}class ln{constructor(t,e,n,r){this.type=t,this.input=e,this.beginIndex=n,this.endIndex=r;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 2 or 3 arguments, but found ${t.length-1} instead.`);const n=e.parse(t[1],1,qt),r=e.parse(t[2],2,Ot);if(!n||!r)return null;if(!ne(n.type,[Jt(qt),$t,qt]))return e.error(`Expected first argument to be of type array or string, but found ${Qt(n.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,Ot);return i?new ln(n.type,n,r,i):null}return new ln(n.type,n,r)}evaluate(t){const e=this.input.evaluate(t),n=this.beginIndex.evaluate(t);let r;if(this.endIndex&&(r=this.endIndex.evaluate(t)),re(e,["string"]))return [...e].slice(n,r).join("");if(re(e,["array"]))return e.slice(n,r);throw new Le(`Expected first argument to be of type array or string, but found ${Qt(qe(e))} instead.`)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);}outputDefined(){return !1}}function un(t,e){const n=t.length-1;let r,i,s=0,o=n,a=0;for(;s<=o;)if(a=Math.floor((s+o)/2),r=t[a],i=t[a+1],r<=e){if(a===n||ee))throw new Le("Input is not a number.");o=a-1;}return 0}class cn{constructor(t,e,n){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of n)this.labels.push(t),this.outputs.push(e);}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");const n=e.parse(t[1],1,Ot);if(!n)return null;const r=[];let i=null;e.expectedType&&"value"!==e.expectedType.kind&&(i=e.expectedType);for(let n=1;n=s)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',a);const u=e.parse(o,l,i);if(!u)return null;i=i||u.type,r.push([s,u]);}return new cn(i,n,r)}evaluate(t){const e=this.labels,n=this.outputs;if(1===e.length)return n[0].evaluate(t);const r=this.input.evaluate(t);if(r<=e[0])return n[0].evaluate(t);const i=e.length;return r>=e[i-1]?n[i-1].evaluate(t):n[un(e,r)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function hn(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var pn,fn,dn=function(){if(fn)return pn;function t(t,e,n,r){this.cx=3*t,this.bx=3*(n-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(r-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=e,this.p2x=n,this.p2y=r;}return fn=1,pn=t,t.prototype={sampleCurveX:function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return ((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(void 0===e&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var n=t,r=0;r<8;r++){var i=this.sampleCurveX(n)-t;if(Math.abs(i)i?o=n:a=n,n=.5*(a-o)+o;return n},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}},pn}(),yn=hn(dn);class mn{constructor(t,e,n,r,i){this.type=t,this.operator=e,this.interpolation=n,this.input=r,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e);}static interpolationFactor(t,e,n,r){let i=0;if("exponential"===t.name)i=gn(e,t.base,n,r);else if("linear"===t.name)i=gn(e,1,n,r);else if("cubic-bezier"===t.name){const s=t.controlPoints;i=new yn(s[0],s[1],s[2],s[3]).solve(gn(e,1,n,r));}return i}static parse(t,e){let[n,r,i,...s]=t;if(!Array.isArray(r)||0===r.length)return e.error("Expected an interpolation type expression.",1);if("linear"===r[0])r={name:"linear"};else if("exponential"===r[0]){const t=r[1];if("number"!=typeof t)return e.error("Exponential interpolation requires a numeric base.",1,1);r={name:"exponential",base:t};}else {if("cubic-bezier"!==r[0])return e.error(`Unknown interpolation type ${String(r[0])}`,1,0);{const t=r.slice(1);if(4!==t.length||t.some((t=>"number"!=typeof t||t<0||t>1)))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);r={name:"cubic-bezier",controlPoints:t};}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");if(i=e.parse(i,2,Ot),!i)return null;const o=[];let a=null;"interpolate-hcl"!==n&&"interpolate-lab"!==n||e.expectedType==Zt?e.expectedType&&"value"!==e.expectedType.kind&&(a=e.expectedType):a=Nt;for(let t=0;t=n)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(r,l,a);if(!u)return null;a=a||u.type,o.push([n,u]);}return ie(a,Ot)||ie(a,Ut)||ie(a,Nt)||ie(a,Yt)||ie(a,Ht)||ie(a,Zt)||ie(a,Kt)||ie(a,Jt(Ot))?new mn(a,n,r,i,o):e.error(`Type ${Qt(a)} is not interpolatable.`)}evaluate(t){const e=this.labels,n=this.outputs;if(1===e.length)return n[0].evaluate(t);const r=this.input.evaluate(t);if(r<=e[0])return n[0].evaluate(t);const i=e.length;if(r>=e[i-1])return n[i-1].evaluate(t);const s=un(e,r),o=mn.interpolationFactor(this.interpolation,r,e[s],e[s+1]),a=n[s].evaluate(t),l=n[s+1].evaluate(t);switch(this.operator){case "interpolate":switch(this.type.kind){case "number":return Ie(a,l,o);case "color":return Te.interpolate(a,l,o);case "padding":return Be.interpolate(a,l,o);case "colorArray":return Ve.interpolate(a,l,o);case "numberArray":return Ce.interpolate(a,l,o);case "variableAnchorOffsetCollection":return $e.interpolate(a,l,o);case "array":return Ee(a,l,o);case "projectionDefinition":return Ne.interpolate(a,l,o)}case "interpolate-hcl":switch(this.type.kind){case "color":return Te.interpolate(a,l,o,"hcl");case "colorArray":return Ve.interpolate(a,l,o,"hcl")}case "interpolate-lab":switch(this.type.kind){case "color":return Te.interpolate(a,l,o,"lab");case "colorArray":return Ve.interpolate(a,l,o,"lab")}}}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function gn(t,e,n,r){const i=r-n,s=t-n;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}const xn={color:Te.interpolate,number:Ie,padding:Be.interpolate,numberArray:Ce.interpolate,colorArray:Ve.interpolate,variableAnchorOffsetCollection:$e.interpolate,array:Ee};class vn{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let n=null;const r=e.expectedType;r&&"value"!==r.kind&&(n=r);const i=[];for(const r of t.slice(1)){const t=e.parse(r,1+i.length,n,void 0,{typeAnnotation:"omit"});if(!t)return null;n=n||t.type,i.push(t);}if(!n)throw new Error("No output type");const s=r&&i.some((t=>ee(r,t.type)));return new vn(s?qt:n,i)}evaluate(t){let e,n=null,r=0;for(const i of this.args)if(r++,n=i.evaluate(t),n&&n instanceof Re&&!n.available&&(e||(e=n.name),n=null,r===this.args.length&&(n=e)),null!==n)break;return n}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}function bn(t,e){return "=="===t||"!="===t?"boolean"===e.kind||"string"===e.kind||"number"===e.kind||"null"===e.kind||"value"===e.kind:"string"===e.kind||"number"===e.kind||"value"===e.kind}function wn(t,e,n,r){return 0===r.compare(e,n)}function _n(t,e,n){const r="=="!==t&&"!="!==t;return class i{constructor(t,e,n){this.type=Rt,this.lhs=t,this.rhs=e,this.collator=n,this.hasUntypedArgument="value"===t.type.kind||"value"===e.type.kind;}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error("Expected two or three arguments.");const n=t[0];let s=e.parse(t[1],1,qt);if(!s)return null;if(!bn(n,s.type))return e.concat(1).error(`"${n}" comparisons are not supported for type '${Qt(s.type)}'.`);let o=e.parse(t[2],2,qt);if(!o)return null;if(!bn(n,o.type))return e.concat(2).error(`"${n}" comparisons are not supported for type '${Qt(o.type)}'.`);if(s.type.kind!==o.type.kind&&"value"!==s.type.kind&&"value"!==o.type.kind)return e.error(`Cannot compare types '${Qt(s.type)}' and '${Qt(o.type)}'.`);r&&("value"===s.type.kind&&"value"!==o.type.kind?s=new Ze(o.type,[s]):"value"!==s.type.kind&&"value"===o.type.kind&&(o=new Ze(s.type,[o])));let a=null;if(4===t.length){if("string"!==s.type.kind&&"string"!==o.type.kind&&"value"!==s.type.kind&&"value"!==o.type.kind)return e.error("Cannot use collator to compare non-string types.");if(a=e.parse(t[3],3,Gt),!a)return null}return new i(s,o,a)}evaluate(i){const s=this.lhs.evaluate(i),o=this.rhs.evaluate(i);if(r&&this.hasUntypedArgument){const e=qe(s),n=qe(o);if(e.kind!==n.kind||"string"!==e.kind&&"number"!==e.kind)throw new Le(`Expected arguments for "${t}" to be (string, string) or (number, number), but found (${e.kind}, ${n.kind}) instead.`)}if(this.collator&&!r&&this.hasUntypedArgument){const t=qe(s),n=qe(o);if("string"!==t.kind||"string"!==n.kind)return e(i,s,o)}return this.collator?n(i,s,o,this.collator.evaluate(i)):e(i,s,o)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);}outputDefined(){return !0}}}const Sn=_n("==",(function(t,e,n){return e===n}),wn),An=_n("!=",(function(t,e,n){return e!==n}),(function(t,e,n,r){return !wn(0,e,n,r)})),Mn=_n("<",(function(t,e,n){return e",(function(t,e,n){return e>n}),(function(t,e,n,r){return r.compare(e,n)>0})),In=_n("<=",(function(t,e,n){return e<=n}),(function(t,e,n,r){return r.compare(e,n)<=0})),En=_n(">=",(function(t,e,n){return e>=n}),(function(t,e,n,r){return r.compare(e,n)>=0}));class Tn{constructor(t,e,n){this.type=Gt,this.locale=n,this.caseSensitive=t,this.diacriticSensitive=e;}static parse(t,e){if(2!==t.length)return e.error("Expected one argument.");const n=t[1];if("object"!=typeof n||Array.isArray(n))return e.error("Collator options argument must be an object.");const r=e.parse(void 0!==n["case-sensitive"]&&n["case-sensitive"],1,Rt);if(!r)return null;const i=e.parse(void 0!==n["diacritic-sensitive"]&&n["diacritic-sensitive"],1,Rt);if(!i)return null;let s=null;return n.locale&&(s=e.parse(n.locale,1,$t),!s)?null:new Tn(r,i,s)}evaluate(t){return new Fe(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);}outputDefined(){return !1}}class Fn{constructor(t,e,n,r,i,s){this.type=$t,this.number=t,this.locale=e,this.currency=n,this.unit=r,this.minFractionDigits=i,this.maxFractionDigits=s;}static parse(t,e){if(3!==t.length)return e.error("Expected two arguments.");const n=e.parse(t[1],1,Ot);if(!n)return null;const r=t[2];if("object"!=typeof r||Array.isArray(r))return e.error("NumberFormat options argument must be an object.");let i=null;if(r.locale&&(i=e.parse(r.locale,1,$t),!i))return null;let s=null;if(r.currency&&(s=e.parse(r.currency,1,$t),!s))return null;let o=null;if(r.unit&&(o=e.parse(r.unit,1,$t),!o))return null;if(s&&o)return e.error("NumberFormat options `currency` and `unit` are mutually exclusive");let a=null;if(r["min-fraction-digits"]&&(a=e.parse(r["min-fraction-digits"],1,Ot),!a))return null;let l=null;return r["max-fraction-digits"]&&(l=e.parse(r["max-fraction-digits"],1,Ot),!l)?null:new Fn(n,i,s,o,a,l)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":this.unit?"unit":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,unit:this.unit?this.unit.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.unit&&t(this.unit),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);}outputDefined(){return !1}}class Pn{constructor(t){this.type=Xt,this.sections=t;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const n=t[1];if(!Array.isArray(n)&&"object"==typeof n)return e.error("First argument must be an image or text section.");const r=[];let i=!1;for(let n=1;n<=t.length-1;++n){const s=t[n];if(i&&"object"==typeof s&&!Array.isArray(s)){i=!1;let t=null;if(s["font-scale"]&&(t=e.parse(s["font-scale"],1,Ot),!t))return null;let n=null;if(s["text-font"]&&(n=e.parse(s["text-font"],1,Jt($t)),!n))return null;let o=null;if(s["text-color"]&&(o=e.parse(s["text-color"],1,Nt),!o))return null;let a=null;if(s["vertical-align"]){if("string"==typeof s["vertical-align"]&&!Pe.includes(s["vertical-align"]))return e.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${s["vertical-align"]}' instead.`);if(a=e.parse(s["vertical-align"],1,$t),!a)return null}const l=r[r.length-1];l.scale=t,l.font=n,l.textColor=o,l.verticalAlign=a;}else {const s=e.parse(t[n],1,qt);if(!s)return null;const o=s.type.kind;if("string"!==o&&"value"!==o&&"null"!==o&&"resolvedImage"!==o)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");i=!0,r.push({content:s,scale:null,font:null,textColor:null,verticalAlign:null});}}return new Pn(r)}evaluate(t){return new ze(this.sections.map((e=>{const n=e.content.evaluate(t);return qe(n)===Wt?new De("",n,null,null,null,e.verticalAlign?e.verticalAlign.evaluate(t):null):new De(Ge(n),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null,e.verticalAlign?e.verticalAlign.evaluate(t):null)})))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor),e.verticalAlign&&t(e.verticalAlign);}outputDefined(){return !1}}class Dn{constructor(t){this.type=Wt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error("Expected two arguments.");const n=e.parse(t[1],1,$t);return n?new Dn(n):e.error("No image name provided.")}evaluate(t){const e=this.input.evaluate(t),n=Re.fromString(e);return n&&t.availableImages&&(n.available=t.availableImages.indexOf(e)>-1),n}eachChild(t){t(this.input);}outputDefined(){return !1}}class zn{constructor(t){this.type=Ot,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const n=e.parse(t[1],1);return n?"array"!==n.type.kind&&"string"!==n.type.kind&&"value"!==n.type.kind?e.error(`Expected argument of type string or array, but found ${Qt(n.type)} instead.`):new zn(n):null}evaluate(t){const e=this.input.evaluate(t);if("string"==typeof e)return [...e].length;if(Array.isArray(e))return e.length;throw new Le(`Expected value to be of type string or array, but found ${Qt(qe(e))} instead.`)}eachChild(t){t(this.input);}outputDefined(){return !1}}const Bn=8192;function Cn(t,e){const n=(180+t[0])/360,r=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(n*i*Bn),Math.round(r*i*Bn)]}function Vn(t,e){const n=Math.pow(2,e.z);return [(i=(t[0]/Bn+e.x)/n,360*i-180),(r=(t[1]/Bn+e.y)/n,360/Math.PI*Math.atan(Math.exp((180-360*r)*Math.PI/180))-90)];var r,i;}function Ln(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1]);}function On(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function $n(t,e,n){const r=t[0]-e[0],i=t[1]-e[1],s=t[0]-n[0],o=t[1]-n[1];return r*o-s*i==0&&r*s<=0&&i*o<=0}function Rn(t,e,n,r){return 0!=(i=[r[0]-n[0],r[1]-n[1]])[0]*(s=[e[0]-t[0],e[1]-t[1]])[1]-i[1]*s[0]&&!(!Xn(t,e,n,r)||!Xn(n,r,t,e));var i,s;}function Nn(t,e,n){for(const r of n)for(let n=0;n(i=t)[1]!=(o=a[e+1])[1]>i[1]&&i[0]<(o[0]-s[0])*(i[1]-s[1])/(o[1]-s[1])+s[0]&&(r=!r);}var i,s,o;return r}function jn(t,e){for(const n of e)if(Un(t,n))return !0;return !1}function qn(t,e){for(const n of t)if(!Un(n,e))return !1;for(let n=0;n0&&a<0||o<0&&a>0}function Yn(t,e,n){const r=[];for(let i=0;in[2]){const e=.5*r;let i=t[0]-n[0]>e?-r:n[0]-t[0]>e?r:0;0===i&&(i=t[0]-n[2]>e?-r:n[2]-t[0]>e?r:0),t[0]+=i;}Ln(e,t);}function Wn(t,e,n,r){const i=Math.pow(2,r.z)*Bn,s=[r.x*Bn,r.y*Bn],o=[];for(const r of t)for(const t of r){const r=[t.x+s[0],t.y+s[1]];Hn(r,e,n,i),o.push(r);}return o}function Kn(t,e,n,r){const i=Math.pow(2,r.z)*Bn,s=[r.x*Bn,r.y*Bn],o=[];for(const n of t){const t=[];for(const r of n){const n=[r.x+s[0],r.y+s[1]];Ln(e,n),t.push(n);}o.push(t);}if(e[2]-e[0]<=i/2){(a=e)[0]=a[1]=1/0,a[2]=a[3]=-1/0;for(const t of o)for(const r of t)Hn(r,e,n,i);}var a;return o}class Jn{constructor(t,e){this.type=Rt,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(je(t[1])){const e=t[1];if("FeatureCollection"===e.type){const t=[];for(const n of e.features){const{type:e,coordinates:r}=n.geometry;"Polygon"===e&&t.push(r),"MultiPolygon"===e&&t.push(...r);}if(t.length)return new Jn(e,{type:"MultiPolygon",coordinates:t})}else if("Feature"===e.type){const t=e.geometry.type;if("Polygon"===t||"MultiPolygon"===t)return new Jn(e,e.geometry)}else if("Polygon"===e.type||"MultiPolygon"===e.type)return new Jn(e,e)}return e.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,e){const n=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){const s=Yn(e.coordinates,r,i),o=Wn(t.geometry(),n,r,i);if(!On(n,r))return !1;for(const t of o)if(!Un(t,s))return !1}if("MultiPolygon"===e.type){const s=Zn(e.coordinates,r,i),o=Wn(t.geometry(),n,r,i);if(!On(n,r))return !1;for(const t of o)if(!jn(t,s))return !1}return !0}(t,this.geometries);if("LineString"===t.geometryType())return function(t,e){const n=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){const s=Yn(e.coordinates,r,i),o=Kn(t.geometry(),n,r,i);if(!On(n,r))return !1;for(const t of o)if(!qn(t,s))return !1}if("MultiPolygon"===e.type){const s=Zn(e.coordinates,r,i),o=Kn(t.geometry(),n,r,i);if(!On(n,r))return !1;for(const t of o)if(!Gn(t,s))return !1}return !0}(t,this.geometries)}return !1}eachChild(){}outputDefined(){return !0}}let Qn=class{constructor(t=[],e=(t,e)=>te?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this._up(this.length++);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return --this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:n}=this,r=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(n(r,s)>=0)break;e[t]=s,t=i;}e[t]=r;}_down(t){const{data:e,compare:n}=this,r=this.length>>1,i=e[t];for(;t=0)break;e[t]=e[r],t=r;}e[t]=i;}};function tr(t,e,n=0,r=t.length-1,i=nr){for(;r>n;){if(r-n>600){const s=r-n+1,o=e-n+1,a=Math.log(s),l=.5*Math.exp(2*a/3),u=.5*Math.sqrt(a*l*(s-l)/s)*(o-s/2<0?-1:1);tr(t,e,Math.max(n,Math.floor(e-o*l/s+u)),Math.min(r,Math.floor(e+(s-o)*l/s+u)),i);}const s=t[e];let o=n,a=r;for(er(t,n,e),i(t[r],s)>0&&er(t,n,r);o0;)a--;}0===i(t[n],s)?er(t,n,a):(a++,er(t,a,r)),a<=e&&(n=a+1),e<=a&&(r=a-1);}}function er(t,e,n){const r=t[e];t[e]=t[n],t[n]=r;}function nr(t,e){return te?1:0}function rr(t,e){if(t.length<=1)return [t];const n=[];let r,i;for(const e of t){const t=sr(e);0!==t&&(e.area=Math.abs(t),void 0===i&&(i=t<0),i===t<0?(r&&n.push(r),r=[e]):r.push(e));}if(r&&n.push(r),e>1)for(let t=0;t1?(l=t[a+1][0],u=t[a+1][1]):p>0&&(l+=c/this.kx*p,u+=h/this.ky*p)),c=this.wrap(e[0]-l)*this.kx,h=(e[1]-u)*this.ky;const f=c*c+h*h;f180;)t-=360;return t}}function cr(t,e){return e[0]-t[0]}function hr(t){return t[1]-t[0]+1}function pr(t,e){return t[1]>=t[0]&&t[1]t[1])return [null,null];const n=hr(t);if(e){if(2===n)return [t,null];const e=Math.floor(n/2);return [[t[0],t[0]+e],[t[0]+e,t[1]]]}if(1===n)return [t,null];const r=Math.floor(n/2)-1;return [[t[0],t[0]+r],[t[0]+r+1,t[1]]]}function dr(t,e){if(!pr(e,t.length))return [1/0,1/0,-1/0,-1/0];const n=[1/0,1/0,-1/0,-1/0];for(let r=e[0];r<=e[1];++r)Ln(n,t[r]);return n}function yr(t){const e=[1/0,1/0,-1/0,-1/0];for(const n of t)for(const t of n)Ln(e,t);return e}function mr(t){return t[0]!==-1/0&&t[1]!==-1/0&&t[2]!==1/0&&t[3]!==1/0}function gr(t,e,n){if(!mr(t)||!mr(e))return NaN;let r=0,i=0;return t[2]e[2]&&(r=t[0]-e[2]),t[1]>e[3]&&(i=t[1]-e[3]),t[3]=r)return r;if(On(i,s)){if(Ar(t,e))return 0}else if(Ar(e,t))return 0;let o=1/0;for(const r of t)for(let t=0,i=r.length,s=i-1;t0;){const i=o.pop();if(i[0]>=s)continue;const l=i[1],u=e?50:100;if(hr(l)<=u){if(!pr(l,t.length))return NaN;if(e){const e=Sr(t,l,n,r);if(isNaN(e)||0===e)return e;s=Math.min(s,e);}else for(let e=l[0];e<=l[1];++e){const i=_r(t[e],n,r);if(s=Math.min(s,i),0===s)return 0}}else {const n=fr(l,e);kr(o,s,r,t,a,n[0]),kr(o,s,r,t,a,n[1]);}}return s}function Tr(t,e,n,r,i,s=1/0){let o=Math.min(s,i.distance(t[0],n[0]));if(0===o)return o;const a=new Qn([[0,[0,t.length-1],[0,n.length-1]]],cr);for(;a.length>0;){const s=a.pop();if(s[0]>=o)continue;const l=s[1],u=s[2],c=e?50:100,h=r?50:100;if(hr(l)<=c&&hr(u)<=h){if(!pr(l,t.length)&&pr(u,n.length))return NaN;let s;if(e&&r)s=br(t,l,n,u,i),o=Math.min(o,s);else if(e&&!r){const e=t.slice(l[0],l[1]+1);for(let t=u[0];t<=u[1];++t)if(s=xr(n[t],e,i),o=Math.min(o,s),0===o)return o}else if(!e&&r){const e=n.slice(u[0],u[1]+1);for(let n=l[0];n<=l[1];++n)if(s=xr(t[n],e,i),o=Math.min(o,s),0===o)return o}else s=wr(t,l,n,u,i),o=Math.min(o,s);}else {const s=fr(l,e),c=fr(u,r);Ir(a,o,i,t,n,s[0],c[0]),Ir(a,o,i,t,n,s[0],c[1]),Ir(a,o,i,t,n,s[1],c[0]),Ir(a,o,i,t,n,s[1],c[1]);}}return o}function Fr(t){return "MultiPolygon"===t.type?t.coordinates.map((t=>({type:"Polygon",coordinates:t}))):"MultiLineString"===t.type?t.coordinates.map((t=>({type:"LineString",coordinates:t}))):"MultiPoint"===t.type?t.coordinates.map((t=>({type:"Point",coordinates:t}))):[t]}class Pr{constructor(t,e){this.type=Ot,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'distance' expression requires exactly one argument, but found ${t.length-1} instead.`);if(je(t[1])){const e=t[1];if("FeatureCollection"===e.type)return new Pr(e,e.features.map((t=>Fr(t.geometry))).flat());if("Feature"===e.type)return new Pr(e,Fr(e.geometry));if("type"in e&&"coordinates"in e)return new Pr(e,Fr(e))}return e.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,e){const n=t.geometry(),r=n.flat().map((e=>Vn([e.x,e.y],t.canonical)));if(0===n.length)return NaN;const i=new ur(r[0][1]);let s=1/0;for(const t of e){switch(t.type){case "Point":s=Math.min(s,Tr(r,!1,[t.coordinates],!1,i,s));break;case "LineString":s=Math.min(s,Tr(r,!1,t.coordinates,!0,i,s));break;case "Polygon":s=Math.min(s,Er(r,!1,t.coordinates,i,s));}if(0===s)return s}return s}(t,this.geometries);if("LineString"===t.geometryType())return function(t,e){const n=t.geometry(),r=n.flat().map((e=>Vn([e.x,e.y],t.canonical)));if(0===n.length)return NaN;const i=new ur(r[0][1]);let s=1/0;for(const t of e){switch(t.type){case "Point":s=Math.min(s,Tr(r,!0,[t.coordinates],!1,i,s));break;case "LineString":s=Math.min(s,Tr(r,!0,t.coordinates,!0,i,s));break;case "Polygon":s=Math.min(s,Er(r,!0,t.coordinates,i,s));}if(0===s)return s}return s}(t,this.geometries);if("Polygon"===t.geometryType())return function(t,e){const n=t.geometry();if(0===n.length||0===n[0].length)return NaN;const r=rr(n,0).map((e=>e.map((e=>e.map((e=>Vn([e.x,e.y],t.canonical))))))),i=new ur(r[0][0][0][1]);let s=1/0;for(const t of e)for(const e of r){switch(t.type){case "Point":s=Math.min(s,Er([t.coordinates],!1,e,i,s));break;case "LineString":s=Math.min(s,Er(t.coordinates,!0,e,i,s));break;case "Polygon":s=Math.min(s,Mr(e,t.coordinates,i,s));}if(0===s)return s}return s}(t,this.geometries)}return NaN}eachChild(){}outputDefined(){return !0}}class Dr{constructor(t){this.type=qt,this.key=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const n=t[1];return null==n?e.error("Global state property must be defined."):"string"!=typeof n?e.error(`Global state property must be string, but found ${typeof t[1]} instead.`):new Dr(n)}evaluate(t){var e;const n=null===(e=t.globals)||void 0===e?void 0:e.globalState;return n&&0!==Object.keys(n).length?we(n,this.key):null}eachChild(){}outputDefined(){return !1}}const zr={"==":Sn,"!=":An,">":kn,"<":Mn,">=":En,"<=":In,array:Ze,at:nn,boolean:Ze,case:an,coalesce:vn,collator:Tn,format:Pn,image:Dn,in:rn,"index-of":sn,interpolate:mn,"interpolate-hcl":mn,"interpolate-lab":mn,length:zn,let:tn,literal:Xe,match:on,number:Ze,"number-format":Fn,object:Ze,slice:ln,step:cn,string:Ze,"to-boolean":We,"to-color":We,"to-number":We,"to-string":We,var:en,within:Jn,distance:Pr,"global-state":Dr};class Br{constructor(t,e,n,r){this.name=t,this.type=e,this._evaluate=n,this.args=r;}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t);}outputDefined(){return !1}static parse(t,e){const n=t[0],r=Br.definitions[n];if(!r)return e.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`,0);const i=Array.isArray(r)?r[0]:r.type,s=Array.isArray(r)?[[r[1],r[2]]]:r.overloads,o=s.filter((([e])=>!Array.isArray(e)||e.length===t.length-1));let a=null;for(const[r,s]of o){a=new Qe(e.registry,$r,e.path,null,e.scope);const o=[];let l=!1;for(let e=1;e{return e=t,Array.isArray(e)?`(${e.map(Qt).join(", ")})`:`(${Qt(e.type)}...)`;var e;})).join(" | "),r=[];for(let n=1;n{n=e?n&&$r(t):n&&t instanceof Xe;})),!!n&&Rr(t)&&Ur(t,["zoom","heatmap-density","elevation","line-progress","accumulated","is-supported-script"])}function Rr(t){if(t instanceof Br){if("get"===t.name&&1===t.args.length)return !1;if("feature-state"===t.name)return !1;if("has"===t.name&&1===t.args.length)return !1;if("properties"===t.name||"geometry-type"===t.name||"id"===t.name)return !1;if(/^filter-/.test(t.name))return !1}if(t instanceof Jn)return !1;if(t instanceof Pr)return !1;let e=!0;return t.eachChild((t=>{e&&!Rr(t)&&(e=!1);})),e}function Nr(t){if(t instanceof Br&&"feature-state"===t.name)return !1;let e=!0;return t.eachChild((t=>{e&&!Nr(t)&&(e=!1);})),e}function Ur(t,e){if(t instanceof Br&&e.indexOf(t.name)>=0)return !1;let n=!0;return t.eachChild((t=>{n&&!Ur(t,e)&&(n=!1);})),n}function jr(t){return {result:"success",value:t}}function qr(t){return {result:"error",value:t}}function Gr(t){return "data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function Xr(t){return !!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Yr(t){return !!t.expression&&t.expression.interpolated}function Zr(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function Hr(t){return "object"==typeof t&&null!==t&&!Array.isArray(t)&&qe(t)===jt}function Wr(t){return t}function Kr(t,e){const n=t.stops&&"object"==typeof t.stops[0][0],r=n||!(n||void 0!==t.property),i=t.type||(Yr(e)?"exponential":"interval"),s=function(t){switch(t.type){case "color":return Te.parse;case "padding":return Be.parse;case "numberArray":return Ce.parse;case "colorArray":return Ve.parse;default:return null}}(e);if(s&&((t=Bt({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],s(t[1])]))),t.default=s(t.default?t.default:e.default)),t.colorSpace&&"rgb"!==(o=t.colorSpace)&&"hcl"!==o&&"lab"!==o)throw new Error(`Unknown color space: "${t.colorSpace}"`);var o;const a=function(t){switch(t){case "exponential":return ei;case "interval":return ti;case "categorical":return Qr;case "identity":return ni;default:throw new Error(`Unknown function type "${t}"`)}}(i);let l,u;if("categorical"===i){l=Object.create(null);for(const e of t.stops)l[e[0]]=e[1];u=typeof t.stops[0][0];}if(n){const n={},r=[];for(let e=0;et[0])),evaluate:({zoom:n},r)=>ei({stops:i,base:t.base},e,n).evaluate(n,r)}}if(r){const n="exponential"===i?{name:"exponential",base:void 0!==t.base?t.base:1}:null;return {kind:"camera",interpolationType:n,interpolationFactor:mn.interpolationFactor.bind(void 0,n),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:n})=>a(t,e,n,l,u)}}return {kind:"source",evaluate(n,r){const i=r&&r.properties?r.properties[t.property]:void 0;return void 0===i?Jr(t.default,e.default):a(t,e,i,l,u)}}}function Jr(t,e,n){return void 0!==t?t:void 0!==e?e:void 0!==n?n:void 0}function Qr(t,e,n,r,i){return Jr(typeof n===i?r[n]:void 0,t.default,e.default)}function ti(t,e,n){if("number"!==Zr(n))return Jr(t.default,e.default);const r=t.stops.length;if(1===r)return t.stops[0][1];if(n<=t.stops[0][0])return t.stops[0][1];if(n>=t.stops[r-1][0])return t.stops[r-1][1];const i=un(t.stops.map((t=>t[0])),n);return t.stops[i][1]}function ei(t,e,n){const r=void 0!==t.base?t.base:1;if("number"!==Zr(n))return Jr(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(n<=t.stops[0][0])return t.stops[0][1];if(n>=t.stops[i-1][0])return t.stops[i-1][1];const s=un(t.stops.map((t=>t[0])),n),o=function(t,e,n,r){const i=r-n,s=t-n;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}(n,r,t.stops[s][0],t.stops[s+1][0]),a=t.stops[s][1],l=t.stops[s+1][1],u=xn[e.type]||Wr;return "function"==typeof a.evaluate?{evaluate(...e){const n=a.evaluate.apply(void 0,e),r=l.evaluate.apply(void 0,e);if(void 0!==n&&void 0!==r)return u(n,r,o,t.colorSpace)}}:u(a,l,o,t.colorSpace)}function ni(t,e,n){switch(e.type){case "color":n=Te.parse(n);break;case "formatted":n=ze.fromString(n.toString());break;case "resolvedImage":n=Re.fromString(n.toString());break;case "padding":n=Be.parse(n);break;case "colorArray":n=Ve.parse(n);break;case "numberArray":n=Ce.parse(n);break;default:Zr(n)===e.type||"enum"===e.type&&e.values[n]||(n=void 0);}return Jr(n,t.default,e.default)}Br.register(zr,{error:[{kind:"error"},[$t],(t,[e])=>{throw new Le(e.evaluate(t))}],typeof:[$t,[qt],(t,[e])=>Qt(qe(e.evaluate(t)))],"to-rgba":[Jt(Ot,4),[Nt],(t,[e])=>{const[n,r,i,s]=e.evaluate(t).rgb;return [255*n,255*r,255*i,s]}],rgb:[Nt,[Ot,Ot,Ot],Cr],rgba:[Nt,[Ot,Ot,Ot,Ot],Cr],has:{type:Rt,overloads:[[[$t],(t,[e])=>Vr(e.evaluate(t),t.properties())],[[$t,jt],(t,[e,n])=>Vr(e.evaluate(t),n.evaluate(t))]]},get:{type:qt,overloads:[[[$t],(t,[e])=>Lr(e.evaluate(t),t.properties())],[[$t,jt],(t,[e,n])=>Lr(e.evaluate(t),n.evaluate(t))]]},"feature-state":[qt,[$t],(t,[e])=>Lr(e.evaluate(t),t.featureState||{})],properties:[jt,[],t=>t.properties()],"geometry-type":[$t,[],t=>t.geometryType()],id:[qt,[],t=>t.id()],zoom:[Ot,[],t=>t.globals.zoom],"heatmap-density":[Ot,[],t=>t.globals.heatmapDensity||0],elevation:[Ot,[],t=>t.globals.elevation||0],"line-progress":[Ot,[],t=>t.globals.lineProgress||0],accumulated:[qt,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],"+":[Ot,Or(Ot),(t,e)=>{let n=0;for(const r of e)n+=r.evaluate(t);return n}],"*":[Ot,Or(Ot),(t,e)=>{let n=1;for(const r of e)n*=r.evaluate(t);return n}],"-":{type:Ot,overloads:[[[Ot,Ot],(t,[e,n])=>e.evaluate(t)-n.evaluate(t)],[[Ot],(t,[e])=>-e.evaluate(t)]]},"/":[Ot,[Ot,Ot],(t,[e,n])=>e.evaluate(t)/n.evaluate(t)],"%":[Ot,[Ot,Ot],(t,[e,n])=>e.evaluate(t)%n.evaluate(t)],ln2:[Ot,[],()=>Math.LN2],pi:[Ot,[],()=>Math.PI],e:[Ot,[],()=>Math.E],"^":[Ot,[Ot,Ot],(t,[e,n])=>Math.pow(e.evaluate(t),n.evaluate(t))],sqrt:[Ot,[Ot],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[Ot,[Ot],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[Ot,[Ot],(t,[e])=>Math.log(e.evaluate(t))],log2:[Ot,[Ot],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[Ot,[Ot],(t,[e])=>Math.sin(e.evaluate(t))],cos:[Ot,[Ot],(t,[e])=>Math.cos(e.evaluate(t))],tan:[Ot,[Ot],(t,[e])=>Math.tan(e.evaluate(t))],asin:[Ot,[Ot],(t,[e])=>Math.asin(e.evaluate(t))],acos:[Ot,[Ot],(t,[e])=>Math.acos(e.evaluate(t))],atan:[Ot,[Ot],(t,[e])=>Math.atan(e.evaluate(t))],min:[Ot,Or(Ot),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[Ot,Or(Ot),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[Ot,[Ot],(t,[e])=>Math.abs(e.evaluate(t))],round:[Ot,[Ot],(t,[e])=>{const n=e.evaluate(t);return n<0?-Math.round(-n):Math.round(n)}],floor:[Ot,[Ot],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[Ot,[Ot],(t,[e])=>Math.ceil(e.evaluate(t))],"filter-==":[Rt,[$t,qt],(t,[e,n])=>t.properties()[e.value]===n.value],"filter-id-==":[Rt,[qt],(t,[e])=>t.id()===e.value],"filter-type-==":[Rt,[$t],(t,[e])=>t.geometryType()===e.value],"filter-<":[Rt,[$t,qt],(t,[e,n])=>{const r=t.properties()[e.value],i=n.value;return typeof r==typeof i&&r{const n=t.id(),r=e.value;return typeof n==typeof r&&n":[Rt,[$t,qt],(t,[e,n])=>{const r=t.properties()[e.value],i=n.value;return typeof r==typeof i&&r>i}],"filter-id->":[Rt,[qt],(t,[e])=>{const n=t.id(),r=e.value;return typeof n==typeof r&&n>r}],"filter-<=":[Rt,[$t,qt],(t,[e,n])=>{const r=t.properties()[e.value],i=n.value;return typeof r==typeof i&&r<=i}],"filter-id-<=":[Rt,[qt],(t,[e])=>{const n=t.id(),r=e.value;return typeof n==typeof r&&n<=r}],"filter->=":[Rt,[$t,qt],(t,[e,n])=>{const r=t.properties()[e.value],i=n.value;return typeof r==typeof i&&r>=i}],"filter-id->=":[Rt,[qt],(t,[e])=>{const n=t.id(),r=e.value;return typeof n==typeof r&&n>=r}],"filter-has":[Rt,[qt],(t,[e])=>e.value in t.properties()],"filter-has-id":[Rt,[],t=>null!==t.id()&&void 0!==t.id()],"filter-type-in":[Rt,[Jt($t)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],"filter-id-in":[Rt,[Jt(qt)],(t,[e])=>e.value.indexOf(t.id())>=0],"filter-in-small":[Rt,[$t,Jt(qt)],(t,[e,n])=>n.value.indexOf(t.properties()[e.value])>=0],"filter-in-large":[Rt,[$t,Jt(qt)],(t,[e,n])=>function(t,e,n,r){for(;n<=r;){const i=n+r>>1;if(e[i]===t)return !0;e[i]>t?r=i-1:n=i+1;}return !1}(t.properties()[e.value],n.value,0,n.value.length-1)],all:{type:Rt,overloads:[[[Rt,Rt],(t,[e,n])=>e.evaluate(t)&&n.evaluate(t)],[Or(Rt),(t,e)=>{for(const n of e)if(!n.evaluate(t))return !1;return !0}]]},any:{type:Rt,overloads:[[[Rt,Rt],(t,[e,n])=>e.evaluate(t)||n.evaluate(t)],[Or(Rt),(t,e)=>{for(const n of e)if(n.evaluate(t))return !0;return !1}]]},"!":[Rt,[Rt],(t,[e])=>!e.evaluate(t)],"is-supported-script":[Rt,[$t],(t,[e])=>{const n=t.globals&&t.globals.isSupportedScript;return !n||n(e.evaluate(t))}],upcase:[$t,[$t],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[$t,[$t],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[$t,Or(qt),(t,e)=>e.map((e=>Ge(e.evaluate(t)))).join("")],split:[Jt($t),[$t,$t],(t,[e,n])=>e.evaluate(t).split(n.evaluate(t))],join:[$t,[Jt($t),$t],(t,[e,n])=>e.evaluate(t).join(n.evaluate(t))],"resolved-locale":[$t,[Gt],(t,[e])=>e.evaluate(t).resolvedLocale()]});class ri{constructor(t,e,n){this.expression=t,this._warningHistory={},this._evaluator=new Je,this._defaultValue=e?function(t){if("color"===t.type&&Hr(t.default))return new Te(0,0,0,0);switch(t.type){case "color":return Te.parse(t.default)||null;case "padding":return Be.parse(t.default)||null;case "numberArray":return Ce.parse(t.default)||null;case "colorArray":return Ve.parse(t.default)||null;case "variableAnchorOffsetCollection":return $e.parse(t.default)||null;case "projectionDefinition":return Ne.parse(t.default)||null;default:return void 0===t.default?null:t.default}}(e):null,this._enumValues=e&&"enum"===e.type?e.values:null,this._globalState=n;}evaluateWithoutErrorHandling(t,e,n,r,i,s){return this._globalState&&(t=pi(t,this._globalState)),this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=n,this._evaluator.canonical=r,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s,this.expression.evaluate(this._evaluator)}evaluate(t,e,n,r,i,s){this._globalState&&(t=pi(t,this._globalState)),this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=n||null,this._evaluator.canonical=r,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||"number"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new Le(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(", ")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,"undefined"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function ii(t){return Array.isArray(t)&&t.length>0&&"string"==typeof t[0]&&t[0]in zr}function si(t,e,n){const r=new Qe(zr,$r,[],e?function(t){const e={color:Nt,string:$t,number:Ot,enum:$t,boolean:Rt,formatted:Xt,padding:Yt,numberArray:Ht,colorArray:Zt,projectionDefinition:Ut,resolvedImage:Wt,variableAnchorOffsetCollection:Kt};return "array"===t.type?Jt(e[t.value]||qt,t.length):e[t.type]}(e):void 0),i=r.parse(t,void 0,void 0,void 0,e&&"string"===e.type?{typeAnnotation:"coerce"}:void 0);return i?jr(new ri(i,e,n)):qr(r.errors)}class oi{constructor(t,e,n){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!Nr(e.expression),this.globalStateRefs=hi(e.expression),this._globalState=n;}evaluateWithoutErrorHandling(t,e,n,r,i,s){return this._globalState&&(t=pi(t,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(t,e,n,r,i,s)}evaluate(t,e,n,r,i,s){return this._globalState&&(t=pi(t,this._globalState)),this._styleExpression.evaluate(t,e,n,r,i,s)}}class ai{constructor(t,e,n,r,i){this.kind=t,this.zoomStops=n,this._styleExpression=e,this.isStateDependent="camera"!==t&&!Nr(e.expression),this.globalStateRefs=hi(e.expression),this.interpolationType=r,this._globalState=i;}evaluateWithoutErrorHandling(t,e,n,r,i,s){return this._globalState&&(t=pi(t,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(t,e,n,r,i,s)}evaluate(t,e,n,r,i,s){return this._globalState&&(t=pi(t,this._globalState)),this._styleExpression.evaluate(t,e,n,r,i,s)}interpolationFactor(t,e,n){return this.interpolationType?mn.interpolationFactor(this.interpolationType,t,e,n):0}}function li(t,e,n){const r=si(t,e,n);if("error"===r.result)return r;const i=r.value.expression,s=Rr(i);if(!s&&!Gr(e))return qr([new Ct("","data expressions not supported")]);const o=Ur(i,["zoom"]);if(!o&&!Xr(e))return qr([new Ct("","zoom expressions not supported")]);const a=ci(i);return a||o?a instanceof Ct?qr([a]):a instanceof mn&&!Yr(e)?qr([new Ct("",'"interpolate" expressions cannot be used with this property')]):jr(a?new ai(s?"camera":"composite",r.value,a.labels,a instanceof mn?a.interpolation:void 0,n):new oi(s?"constant":"source",r.value,n)):qr([new Ct("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class ui{constructor(t,e){this._parameters=t,this._specification=e,Bt(this,Kr(this._parameters,this._specification));}static deserialize(t){return new ui(t._parameters,t._specification)}static serialize(t){return {_parameters:t._parameters,_specification:t._specification}}}function ci(t){let e=null;if(t instanceof tn)e=ci(t.result);else if(t instanceof vn){for(const n of t.args)if(e=ci(n),e)break}else (t instanceof cn||t instanceof mn)&&t.input instanceof Br&&"zoom"===t.input.name&&(e=t);return e instanceof Ct||t.eachChild((t=>{const n=ci(t);n instanceof Ct?e=n:!e&&n?e=new Ct("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&n&&e!==n&&(e=new Ct("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'));})),e}function hi(t,e=new Set){return t instanceof Dr&&e.add(t.key),t.eachChild((t=>{hi(t,e);})),e}function pi(t,e){const{zoom:n,heatmapDensity:r,elevation:i,lineProgress:s,isSupportedScript:o,accumulated:a}=null!=t?t:{};return {zoom:n,heatmapDensity:r,elevation:i,lineProgress:s,isSupportedScript:o,accumulated:a,globalState:e}}function fi(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case "has":return t.length>=2&&"$id"!==t[1]&&"$type"!==t[1];case "in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case "!in":case "!has":case "none":return !1;case "==":case "!=":case ">":case ">=":case "<":case "<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case "any":case "all":for(const e of t.slice(1))if(!fi(e)&&"boolean"!=typeof e)return !1;return !0;default:return !0}}const di={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function yi(t,e){if(null==t)return {filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set};fi(t)||(t=xi(t));const n=si(t,di,e);if("error"===n.result)throw new Error(n.value.map((t=>`${t.key}: ${t.message}`)).join(", "));return {filter:(t,e,r)=>n.value.evaluate(t,e,{},r),needGeometry:gi(t),getGlobalStateRefs:()=>hi(n.value.expression)}}function mi(t,e){return te?1:0}function gi(t){if(!Array.isArray(t))return !1;if("within"===t[0]||"distance"===t[0])return !0;for(let e=1;e"===e||"<="===e||">="===e?vi(t[1],t[2],e):"any"===e?(n=t.slice(1),["any"].concat(n.map(xi))):"all"===e?["all"].concat(t.slice(1).map(xi)):"none"===e?["all"].concat(t.slice(1).map(xi).map(_i)):"in"===e?bi(t[1],t.slice(2)):"!in"===e?_i(bi(t[1],t.slice(2))):"has"===e?wi(t[1]):"!has"!==e||_i(wi(t[1]));var n;}function vi(t,e,n){switch(t){case "$type":return [`filter-type-${n}`,e];case "$id":return [`filter-id-${n}`,e];default:return [`filter-${n}`,t,e]}}function bi(t,e){if(0===e.length)return !1;switch(t){case "$type":return ["filter-type-in",["literal",e]];case "$id":return ["filter-id-in",["literal",e]];default:return e.length>200&&!e.some((t=>typeof t!=typeof e[0]))?["filter-in-large",t,["literal",e.sort(mi)]]:["filter-in-small",t,["literal",e]]}}function wi(t){switch(t){case "$type":return !0;case "$id":return ["filter-has-id"];default:return ["filter-has",t]}}function _i(t){return ["!",t]}function Si(t){const e=typeof t;if("number"===e||"boolean"===e||"string"===e||null==t)return JSON.stringify(t);if(Array.isArray(t)){let e="[";for(const n of t)e+=`${Si(n)},`;return `${e}]`}const n=Object.keys(t).sort();let r="{";for(let e=0;er.maximum?[new zt(e,n,`${n} is greater than the maximum value ${r.maximum}`)]:[]}function Pi(t){const e=t.valueSpec,n=ki(t.value.type);let r,i,s,o={};const a="categorical"!==n&&void 0===t.value.property,l=!a,u="array"===Zr(t.value.stops)&&"array"===Zr(t.value.stops[0])&&"object"===Zr(t.value.stops[0][0]),c=Ei({key:t.key,value:t.value,valueSpec:t.styleSpec.function,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===n)return [new zt(t.key,t.value,'identity function may not have a "stops" property')];let e=[];const r=t.value;return e=e.concat(Ti({key:t.key,value:r,valueSpec:t.valueSpec,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),"array"===Zr(r)&&0===r.length&&e.push(new zt(t.key,r,"array must have at least one stop")),e},default:function(t){return t.validateSpec({key:t.key,value:t.value,valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec})}}});return "identity"===n&&a&&c.push(new zt(t.key,t.value,'missing required property "property"')),"identity"===n||t.value.stops||c.push(new zt(t.key,t.value,'missing required property "stops"')),"exponential"===n&&t.valueSpec.expression&&!Yr(t.valueSpec)&&c.push(new zt(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!Gr(t.valueSpec)?c.push(new zt(t.key,t.value,"property functions not supported")):a&&!Xr(t.valueSpec)&&c.push(new zt(t.key,t.value,"zoom functions not supported"))),"categorical"!==n&&!u||void 0!==t.value.property||c.push(new zt(t.key,t.value,'"property" property is required')),c;function h(t){let n=[];const r=t.value,a=t.key;if("array"!==Zr(r))return [new zt(a,r,`array expected, ${Zr(r)} found`)];if(2!==r.length)return [new zt(a,r,`array length 2 expected, length ${r.length} found`)];if(u){if("object"!==Zr(r[0]))return [new zt(a,r,`object expected, ${Zr(r[0])} found`)];if(void 0===r[0].zoom)return [new zt(a,r,"object stop key must have zoom")];if(void 0===r[0].value)return [new zt(a,r,"object stop key must have value")];if(s&&s>ki(r[0].zoom))return [new zt(a,r[0].zoom,"stop zoom values must appear in ascending order")];ki(r[0].zoom)!==s&&(s=ki(r[0].zoom),i=void 0,o={}),n=n.concat(Ei({key:`${a}[0]`,value:r[0],valueSpec:{zoom:{}},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Fi,value:p}}));}else n=n.concat(p({key:`${a}[0]`,value:r[0],validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec},r));return ii(Ii(r[1]))?n.concat([new zt(`${a}[1]`,r[1],"expressions are not allowed in function stops.")]):n.concat(t.validateSpec({key:`${a}[1]`,value:r[1],valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec}))}function p(t,s){const a=Zr(t.value),l=ki(t.value),u=null!==t.value?t.value:s;if(r){if(a!==r)return [new zt(t.key,u,`${a} stop domain type must match previous stop domain type ${r}`)]}else r=a;if("number"!==a&&"string"!==a&&"boolean"!==a)return [new zt(t.key,u,"stop domain value must be a number, string, or boolean")];if("number"!==a&&"categorical"!==n){let r=`number expected, ${a} found`;return Gr(e)&&void 0===n&&(r+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new zt(t.key,u,r)]}return "categorical"!==n||"number"!==a||isFinite(l)&&Math.floor(l)===l?"categorical"!==n&&"number"===a&&void 0!==i&&lnew zt(`${t.key}${e.key}`,t.value,e.message)));const n=e.value.expression||e.value._styleExpression.expression;if("property"===t.expressionContext&&"text-font"===t.propertyKey&&!n.outputDefined())return [new zt(t.key,t.value,`Invalid data expression for "${t.propertyKey}". Output values must be contained as literals within the expression.`)];if("property"===t.expressionContext&&"layout"===t.propertyType&&!Nr(n))return [new zt(t.key,t.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===t.expressionContext&&!Nr(n))return [new zt(t.key,t.value,'"feature-state" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf("cluster")){if(!Ur(n,["zoom","feature-state"]))return [new zt(t.key,t.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===t.expressionContext&&!Rr(n))return [new zt(t.key,t.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return []}function zi(t){const e=t.key,n=t.value,r=Zr(n);return "string"!==r?[new zt(e,n,`color expected, ${r} found`)]:Te.parse(String(n))?[]:[new zt(e,n,`color expected, "${n}" found`)]}function Bi(t){const e=t.key,n=t.value,r=t.valueSpec,i=[];return Array.isArray(r.values)?-1===r.values.indexOf(ki(n))&&i.push(new zt(e,n,`expected one of [${r.values.join(", ")}], ${JSON.stringify(n)} found`)):-1===Object.keys(r.values).indexOf(ki(n))&&i.push(new zt(e,n,`expected one of [${Object.keys(r.values).join(", ")}], ${JSON.stringify(n)} found`)),i}function Ci(t){return fi(Ii(t.value))?Di(Bt({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Vi(t)}function Vi(t){const e=t.value,n=t.key;if("array"!==Zr(e))return [new zt(n,e,`array expected, ${Zr(e)} found`)];const r=t.styleSpec;let i,s=[];if(e.length<1)return [new zt(n,e,"filter array must have at least 1 element")];switch(s=s.concat(Bi({key:`${n}[0]`,value:e[0],valueSpec:r.filter_operator,style:t.style,styleSpec:t.styleSpec})),ki(e[0])){case "<":case "<=":case ">":case ">=":e.length>=2&&"$type"===ki(e[1])&&s.push(new zt(n,e,`"$type" cannot be use with operator "${e[0]}"`));case "==":case "!=":3!==e.length&&s.push(new zt(n,e,`filter array for operator "${e[0]}" must have 3 elements`));case "in":case "!in":e.length>=2&&(i=Zr(e[1]),"string"!==i&&s.push(new zt(`${n}[1]`,e[1],`string expected, ${i} found`)));for(let o=2;o{t in i&&r.push(new zt(s,i[t],`"${t}" is prohibited for ref layers`));})),o.layers.forEach((e=>{ki(e.id)===u&&(t=e);})),t?t.ref?r.push(new zt(s,i.ref,"ref cannot reference another ref layer")):l=ki(t.type):r.push(new zt(s,i.ref,`ref layer "${u}" not found`));}else if("background"!==l)if(i.source){const t=o.sources&&o.sources[i.source],e=t&&ki(t.type);t?"vector"===e&&"raster"===l?r.push(new zt(s,i.source,`layer "${i.id}" requires a raster source`)):"raster-dem"!==e&&"hillshade"===l||"raster-dem"!==e&&"color-relief"===l?r.push(new zt(s,i.source,`layer "${i.id}" requires a raster-dem source`)):"raster"===e&&"raster"!==l?r.push(new zt(s,i.source,`layer "${i.id}" requires a vector source`)):"vector"!==e||i["source-layer"]?"raster-dem"===e&&"hillshade"!==l&&"color-relief"!==l?r.push(new zt(s,i.source,"raster-dem source can only be used with layer type 'hillshade' or 'color-relief'.")):"line"!==l||!i.paint||!i.paint["line-gradient"]||"geojson"===e&&t.lineMetrics||r.push(new zt(s,i,`layer "${i.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):r.push(new zt(s,i,`layer "${i.id}" must specify a "source-layer"`)):r.push(new zt(s,i.source,`source "${i.source}" not found`));}else r.push(new zt(s,i,'missing required property "source"'));return "raster"===l&&(null===(e=i.paint)||void 0===e?void 0:e.resampling)&&(null===(n=i.paint)||void 0===n?void 0:n["raster-resampling"])&&r.push(new zt(s,i.paint,`layer "${i.id}" redundantly specifies "resampling" and "raster-resampling" paint properties, but only one is allowed. It is advised to use "resampling".`)),r=r.concat(Ei({key:s,value:i,valueSpec:a.layer,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":()=>[],type:()=>t.validateSpec({key:`${s}.type`,value:i.type,valueSpec:a.layer.type,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,object:i,objectKey:"type"}),filter:Ci,layout:t=>Ei({layer:i,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":t=>$i(Bt({layerType:l},t))}}),paint:t=>Ei({layer:i,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":t=>Oi(Bt({layerType:l},t))}})}})),r}function Ni(t){const e=t.value,n=t.key,r=Zr(e);return "string"!==r?[new zt(n,e,`string expected, ${r} found`)]:[]}const Ui={promoteId:function({key:t,value:e}){if("string"===Zr(e))return Ni({key:t,value:e});{const n=[];for(const r in e)n.push(...Ni({key:`${t}.${r}`,value:e[r]}));return n}}};function ji(t){const e=t.value,n=t.key,r=t.styleSpec,i=t.style,s=t.validateSpec;if(!e.type)return [new zt(n,e,'"type" is required')];const o=ki(e.type);let a;switch(o){case "vector":case "raster":return a=Ei({key:n,value:e,valueSpec:r[`source_${o.replace("-","_")}`],style:t.style,styleSpec:r,objectElementValidators:Ui,validateSpec:s}),a;case "raster-dem":return a=function(t){var e;const n=null!==(e=t.sourceName)&&void 0!==e?e:"",r=t.value,i=t.styleSpec,s=i.source_raster_dem,o=t.style;let a=[];const l=Zr(r);if(void 0===r)return a;if("object"!==l)return a.push(new zt("source_raster_dem",r,`object expected, ${l} found`)),a;const u="custom"===ki(r.encoding),c=["redFactor","greenFactor","blueFactor","baseShift"],h=t.value.encoding?`"${t.value.encoding}"`:"Default";for(const e in r)!u&&c.includes(e)?a.push(new zt(e,r[e],`In "${n}": "${e}" is only valid when "encoding" is set to "custom". ${h} encoding found`)):s[e]?a=a.concat(t.validateSpec({key:e,value:r[e],valueSpec:s[e],validateSpec:t.validateSpec,style:o,styleSpec:i})):a.push(new zt(e,r[e],`unknown property "${e}"`));return a}({sourceName:n,value:e,style:t.style,styleSpec:r,validateSpec:s}),a;case "geojson":if(a=Ei({key:n,value:e,valueSpec:r.source_geojson,style:i,styleSpec:r,validateSpec:s,objectElementValidators:Ui}),e.cluster)for(const t in e.clusterProperties){const[r,i]=e.clusterProperties[t],s="string"==typeof r?[r,["accumulated"],["get",t]]:r;a.push(...Di({key:`${n}.${t}.map`,value:i,expressionContext:"cluster-map"})),a.push(...Di({key:`${n}.${t}.reduce`,value:s,expressionContext:"cluster-reduce"}));}return a;case "video":return Ei({key:n,value:e,valueSpec:r.source_video,style:i,validateSpec:s,styleSpec:r});case "image":return Ei({key:n,value:e,valueSpec:r.source_image,style:i,validateSpec:s,styleSpec:r});case "canvas":return [new zt(n,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return Bi({key:`${n}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]}})}}function qi(t){const e=t.value,n=t.styleSpec,r=n.light,i=t.style;let s=[];const o=Zr(e);if(void 0===e)return s;if("object"!==o)return s=s.concat([new zt("light",e,`object expected, ${o} found`)]),s;for(const o in e){const a=o.match(/^(.*)-transition$/);s=s.concat(a&&r[a[1]]&&r[a[1]].transition?t.validateSpec({key:o,value:e[o],valueSpec:n.transition,validateSpec:t.validateSpec,style:i,styleSpec:n}):r[o]?t.validateSpec({key:o,value:e[o],valueSpec:r[o],validateSpec:t.validateSpec,style:i,styleSpec:n}):[new zt(o,e[o],`unknown property "${o}"`)]);}return s}function Gi(t){const e=t.value,n=t.styleSpec,r=n.sky,i=t.style,s=Zr(e);if(void 0===e)return [];if("object"!==s)return [new zt("sky",e,`object expected, ${s} found`)];let o=[];for(const s in e)o=o.concat(r[s]?t.validateSpec({key:s,value:e[s],valueSpec:r[s],style:i,styleSpec:n}):[new zt(s,e[s],`unknown property "${s}"`)]);return o}function Xi(t){const e=t.value,n=t.styleSpec,r=n.terrain,i=t.style;let s=[];const o=Zr(e);if(void 0===e)return s;if("object"!==o)return s=s.concat([new zt("terrain",e,`object expected, ${o} found`)]),s;for(const o in e)s=s.concat(r[o]?t.validateSpec({key:o,value:e[o],valueSpec:r[o],validateSpec:t.validateSpec,style:i,styleSpec:n}):[new zt(o,e[o],`unknown property "${o}"`)]);return s}function Yi(t){let e=[];const n=t.value,r=t.key;if(Array.isArray(n)){const i=[],s=[];for(const o in n)n[o].id&&i.includes(n[o].id)&&e.push(new zt(r,n,`all the sprites' ids must be unique, but ${n[o].id} is duplicated`)),i.push(n[o].id),n[o].url&&s.includes(n[o].url)&&e.push(new zt(r,n,`all the sprites' URLs must be unique, but ${n[o].url} is duplicated`)),s.push(n[o].url),e=e.concat(Ei({key:`${r}[${o}]`,value:n[o],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:t.validateSpec}));return e}return Ni({key:r,value:n})}function Zi(t){return Boolean(t)&&t.constructor===Object}function Hi(t){return Zi(t.value)?[]:[new zt(t.key,t.value,`object expected, ${Zr(t.value)} found`)]}const Wi={"*":()=>[],array:Ti,boolean:function(t){const e=t.value,n=t.key,r=Zr(e);return "boolean"!==r?[new zt(n,e,`boolean expected, ${r} found`)]:[]},number:Fi,color:zi,constants:Mi,enum:Bi,filter:Ci,function:Pi,layer:Ri,object:Ei,source:ji,light:qi,sky:Gi,terrain:Xi,projection:function(t){const e=t.value,n=t.styleSpec,r=n.projection,i=t.style,s=Zr(e);if(void 0===e)return [];if("object"!==s)return [new zt("projection",e,`object expected, ${s} found`)];let o=[];for(const s in e)o=o.concat(r[s]?t.validateSpec({key:s,value:e[s],valueSpec:r[s],style:i,styleSpec:n}):[new zt(s,e[s],`unknown property "${s}"`)]);return o},projectionDefinition:function(t){const e=t.key;let n=t.value;n=n instanceof String?n.valueOf():n;const r=Zr(n);return "array"!==r||function(t){return Array.isArray(t)&&3===t.length&&"string"==typeof t[0]&&"string"==typeof t[1]&&"number"==typeof t[2]}(n)||function(t){return !!["interpolate","step","literal"].includes(t[0])}(n)?["array","string"].includes(r)?[]:[new zt(e,n,`projection expected, invalid type "${r}" found`)]:[new zt(e,n,`projection expected, invalid array ${JSON.stringify(n)} found`)]},string:Ni,formatted:function(t){return 0===Ni(t).length?[]:Di(t)},resolvedImage:function(t){return 0===Ni(t).length?[]:Di(t)},padding:function(t){const e=t.key,n=t.value;if("array"===Zr(n)){if(n.length<1||n.length>4)return [new zt(e,n,`padding requires 1 to 4 values; ${n.length} values found`)];const r={type:"number"};let i=[];for(let s=0;s[]}})),t.constants&&(n=n.concat(Mi({key:"constants",value:t.constants}))),es(n)}function ts(t){return function(e){return t(Object.assign({},e,{validateSpec:Ki}))}}function es(t){return [].concat(t).sort(((t,e)=>t.line-e.line))}function ns(t){return function(...e){return es(t.apply(this,e))}}Qi.source=ns(ts(ji)),Qi.sprite=ns(ts(Yi)),Qi.glyphs=ns(ts(Ji)),Qi.light=ns(ts(qi)),Qi.sky=ns(ts(Gi)),Qi.terrain=ns(ts(Xi)),Qi.state=ns(ts(Hi)),Qi.layer=ns(ts(Ri)),Qi.filter=ns(ts(Ci)),Qi.paintProperty=ns(ts(Oi)),Qi.layoutProperty=ns(ts($i));const rs={type:"enum","property-type":"data-constant",expression:{interpolated:!1,parameters:["global-state"]},values:{visible:{},none:{}},transition:!1,default:"visible"};class is{constructor(t,e){this._globalState=e,this.setValue(t);}evaluate(){var t;return null!==(t=this._literalValue)&&void 0!==t?t:this._compiledValue.evaluate({})}setValue(t){if(null==t||"visible"===t||"none"===t)return this._literalValue="none"===t?"none":"visible",this._compiledValue=void 0,void(this._globalStateRefs=new Set);const e=si(t,rs,this._globalState);if("error"===e.result)throw this._literalValue="visible",this._compiledValue=void 0,new Error(e.value.map((t=>`${t.key}: ${t.message}`)).join(", "));this._literalValue=void 0,this._compiledValue=e.value,this._globalStateRefs=hi(e.value.expression);}getGlobalStateRefs(){return this._globalStateRefs}}const ss=wt,os=Qi,as=os.light,ls=os.sky,us=os.paintProperty,cs=os.layoutProperty;function hs(t,e){let n=!1;if(null==e?void 0:e.length)for(const r of e)t.fire(new vt(new Error(r.message))),n=!0;return n}class ps{constructor(t,e,n){const r=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;const i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(n=i[2]);for(let t=0;t=u[l+0]&&r>=u[l+1])?(o[c]=!0,s.push(i[c])):o[c]=!1;}}}_forEachCell(t,e,n,r,i,s,o,a){const l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(n),h=this._convertToCellCoord(r);for(let p=l;p<=c;p++)for(let l=u;l<=h;l++){const u=this.d*l+p;if((!a||a(this._convertFromCellCoord(p),this._convertFromCellCoord(l),this._convertFromCellCoord(p+1),this._convertFromCellCoord(l+1)))&&i.call(this,t,e,n,r,u,s,o,a))return}}_convertFromCellCoord(t){return (t-this.padding)/this.scale}_convertToCellCoord(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const t=this.cells,e=3+this.cells.length+1+1;let n=0;for(const t of this.cells)n+=t.length;const r=new Int32Array(e+n+this.keys.length+this.bboxes.length);r[0]=this.extent,r[1]=this.n,r[2]=this.padding;let i=e;for(let e=0;en?(this.lastIntegerZoom=n+1,this.lastIntegerZoomTime=e):this.lastFloorZoom{try{return new RegExp(`\\p{sc=${t}}`,"u").source}catch(t){return null}})).filter((t=>t));return new RegExp(e.join("|"),"u")}const Is=ks(["Arab","Dupl","Mong","Ougr","Syrc"]);function Es(t){return !Is.test(String.fromCodePoint(t))}function Ts(t){return !(_s(t)||(e=t,/[\xA7\xA9\xAE\xB1\xBC-\xBE\xD7\xF7\u2016\u2020\u2021\u2030\u2031\u203B\u203C\u2042\u2047-\u2049\u2051\u2100-\u218F\u221E\u2234\u2235\u2300-\u2307\u230C-\u231F\u2324-\u2328\u232B\u237D-\u239A\u23BE-\u23CD\u23CF\u23D1-\u23DB\u23E2-\u2422\u2424-\u24FF\u25A0-\u2619\u2620-\u2767\u2776-\u2793\u2B12-\u2B2F\u2B50-\u2B59\u2BB8-\u2BEB\u3000-\u303F\u30A0-\u30FF\uE000-\uF8FF\uFE30-\uFE6F\uFF00-\uFFEF\uFFFC\uFFFD]|[\uDB80-\uDBFF][\uDC00-\uDFFF]/gim.test(String.fromCodePoint(e))));var e;}const Fs=ks(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function Ps(t){return Fs.test(String.fromCodePoint(t))}function Ds(t,e){return !(!e&&Ps(t)||/[\u0900-\u0DFF\u0F00-\u109F\u1780-\u17FF]/gim.test(String.fromCodePoint(t)))}function zs(t){for(const e of t)if(Ps(e.codePointAt(0)))return !0;return !1}const Bs=new class{constructor(){this.TIMEOUT=5e3,this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null,this.loadScriptResolve=()=>{};}setState(t){this.pluginStatus=t.pluginStatus,this.pluginURL=t.pluginURL;}getState(){return {pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(t){if(Bs.isParsed())throw new Error("RTL text plugin already registered.");this.applyArabicShaping=t.applyArabicShaping,this.processBidirectionalText=t.processBidirectionalText,this.processStyledBidirectionalText=t.processStyledBidirectionalText,this.loadScriptResolve();}isParsed(){return null!=this.applyArabicShaping&&null!=this.processBidirectionalText&&null!=this.processStyledBidirectionalText}getRTLTextPluginStatus(){return this.pluginStatus}syncState(t,n){return e(this,void 0,void 0,(function*(){if(this.isParsed())return this.getState();if("loading"!==t.pluginStatus)return this.setState(t),t;const e=t.pluginURL,r=new Promise((t=>{this.loadScriptResolve=t;}));n(e);const i=new Promise((t=>setTimeout((()=>t()),this.TIMEOUT)));if(yield Promise.race([r,i]),this.isParsed()){const t={pluginStatus:"loaded",pluginURL:e};return this.setState(t),t}throw this.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${e}`)}))}};class Cs{constructor(t,e){this.isSupportedScript=Vs,this.zoom=t,e?(this.now=e.now||0,this.fadeDuration=e.fadeDuration||0,this.zoomHistory=e.zoomHistory||new bs,this.transition=e.transition||{}):(this.now=0,this.fadeDuration=0,this.zoomHistory=new bs,this.transition={});}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,e=t-Math.floor(t),n=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*n}:{fromScale:.5,toScale:1,t:1-(1-n)*e}}}function Vs(t){return function(t,e){for(const n of t)if(!Ds(n.codePointAt(0),e))return !1;return !0}(t,"loaded"===Bs.getRTLTextPluginStatus())}const Ls="-transition";class Os{constructor(t,e,n){this.property=t,this.value=e,this.expression=function(t,e,n){if(Hr(t))return new ui(t,e);if(ii(t)){const r=li(t,e,n);if("error"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(", "));return r.value}{let n=t;return "color"===e.type&&"string"==typeof t?n=Te.parse(t):"padding"!==e.type||"number"!=typeof t&&!Array.isArray(t)?"numberArray"!==e.type||"number"!=typeof t&&!Array.isArray(t)?"colorArray"!==e.type||"string"!=typeof t&&!Array.isArray(t)?"variableAnchorOffsetCollection"===e.type&&Array.isArray(t)?n=$e.parse(t):"projectionDefinition"===e.type&&"string"==typeof t&&(n=Ne.parse(t)):n=Ve.parse(t):n=Ce.parse(t):n=Be.parse(t),{globalStateRefs:new Set,_globalState:null,kind:"constant",evaluate:()=>n}}}(void 0===e?t.specification.default:e,t.specification,n);}isDataDriven(){return "source"===this.expression.kind||"composite"===this.expression.kind}getGlobalStateRefs(){return this.expression.globalStateRefs||new Set}possiblyEvaluate(t,e,n){return this.property.possiblyEvaluate(this,t,e,n)}}class $s{constructor(t,e){this.property=t,this.value=new Os(t,void 0,e);}transitioned(t,e){return new Ns(this.property,this.value,e,$({},t.transition,this.transition),t.now)}untransitioned(){return new Ns(this.property,this.value,null,{},0)}}class Rs{constructor(t,e){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues),this._globalState=e;}hasProperty(t){return t in this._properties.defaultTransitionablePropertyValues}getValue(t){return j(this._values[t].value.value)}setValue(t,e){Object.hasOwn(this._values,t)||(this._values[t]=new $s(this._values[t].property,this._globalState)),this._values[t].value=new Os(this._values[t].property,null===e?void 0:j(e),this._globalState);}getTransition(t){return j(this._values[t].transition)}setTransition(t,e){Object.hasOwn(this._values,t)||(this._values[t]=new $s(this._values[t].property,this._globalState)),this._values[t].transition=j(e)||void 0;}serialize(){const t={};for(const e of Object.keys(this._values)){const n=this.getValue(e);void 0!==n&&(t[e]=n);const r=this.getTransition(e);void 0!==r&&(t[`${e}${Ls}`]=r);}return t}transitioned(t,e){const n=new Us(this._properties);for(const r of Object.keys(this._values))n._values[r]=this._values[r].transitioned(t,e._values[r]);return n}untransitioned(){const t=new Us(this._properties);for(const e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class Ns{constructor(t,e,n,r,i){this.property=t,this.value=e,this.begin=i+r.delay||0,this.end=this.begin+r.duration||0,t.specification.transition&&(r.delay||r.duration)&&(this.prior=n);}possiblyEvaluate(t,e,n){const r=t.now||0,i=this.value.possiblyEvaluate(t,e,n),s=this.prior;if(s){if(r>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(rr.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:n,to:e}}interpolate(t){return t}}class Hs{constructor(t){this.specification=t;}possiblyEvaluate(t,e,n,r){if(void 0!==t.value){if("constant"===t.expression.kind){const i=t.expression.evaluate(e,null,{},n,r);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new Cs(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Cs(Math.floor(e.zoom),e)),t.expression.evaluate(new Cs(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,n,r){return r.zoom>r.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:n,to:e}}interpolate(t){return t}}class Ws{constructor(t){this.specification=t;}possiblyEvaluate(t,e,n,r){return !!t.expression.evaluate(e,null,{},n,r)}interpolate(){return !1}}class Ks{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const e in t){const n=t[e];n.specification.overridable&&this.overridableProperties.push(e);const r=this.defaultPropertyValues[e]=new Os(n,void 0,void 0),i=this.defaultTransitionablePropertyValues[e]=new $s(n,void 0);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=r.possiblyEvaluate({});}}}ds("DataDrivenProperty",Ys),ds("DataConstantProperty",Xs),ds("CrossFadedDataDrivenProperty",Zs),ds("CrossFadedProperty",Hs),ds("ColorRampProperty",Ws);const Js=" is a PAINT property not a LAYOUT property. Use get/setPaintProperty instead?",Qs=" is a LAYOUT property not a PAINT property. Use get/setLayoutProperty instead?";class to extends bt{constructor(t,e,n){if(super(),this.id=t.id,this.type=t.type,this._globalState=n,this._featureFilter={filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set},this._visibilityExpression=function(t,e){return new is(t,e)}(this.visibility,n),"custom"!==t.type&&(this.metadata=t.metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,"background"!==t.type&&(this.source=t.source,this.sourceLayer=t["source-layer"],this.filter=t.filter,this._featureFilter=yi(t.filter,n)),e.layout&&(this._unevaluatedLayout=new js(e.layout,n)),e.paint)){this._transitionablePaint=new Rs(e.paint,n);for(const e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(const e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Gs(e.paint);}}setFilter(t){this.filter=t,this._featureFilter=yi(t,this._globalState);}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){var e;if("visibility"===t)return this.visibility;if(null===(e=this._transitionablePaint)||void 0===e?void 0:e.hasProperty(t))throw new Error(t+Js);if(!this._unevaluatedLayout)throw new Error(`Cannot get layout property "${t}" on layer type "${this.type}" which has no layout properties.`);return this._unevaluatedLayout.getValue(t)}getLayoutAffectingGlobalStateRefs(){const t=new Set;for(const e of this._visibilityExpression.getGlobalStateRefs())t.add(e);if(this._unevaluatedLayout)for(const e in this._unevaluatedLayout._values){const n=this._unevaluatedLayout._values[e];for(const e of n.getGlobalStateRefs())t.add(e);}for(const e of this._featureFilter.getGlobalStateRefs())t.add(e);return t}getPaintAffectingGlobalStateRefs(){var t;const e=new globalThis.Map;if(this._transitionablePaint)for(const n in this._transitionablePaint._values){const r=this._transitionablePaint._values[n].value;for(const i of r.getGlobalStateRefs()){const s=null!==(t=e.get(i))&&void 0!==t?t:[];s.push({name:n,value:r.value}),e.set(i,s);}}return e}getVisibilityAffectingGlobalStateRefs(){return this._visibilityExpression.getGlobalStateRefs()}setLayoutProperty(t,e,n={}){var r;if("visibility"===t)return this.visibility=e,this._visibilityExpression.setValue(e),void this.recalculateVisibility();(null===(r=this._transitionablePaint)||void 0===r?void 0:r.hasProperty(t))?this.fire(new vt(new Error(t+Js))):null!=e&&this._validate(cs,`layers.${this.id}.layout.${t}`,t,e,n)||this._unevaluatedLayout.setValue(t,e);}getPaintProperty(t){var e,n;if(t.endsWith(Ls)){const n=t.slice(0,-11);if("visibility"===n||(null===(e=this._unevaluatedLayout)||void 0===e?void 0:e.hasProperty(n)))throw new Error(t+Qs);return this._transitionablePaint.getTransition(n)}if("visibility"===t||(null===(n=this._unevaluatedLayout)||void 0===n?void 0:n.hasProperty(t)))throw new Error(t+Qs);return this._transitionablePaint.getValue(t)}setPaintProperty(t,e,n={}){var r;if("visibility"===t||(null===(r=this._unevaluatedLayout)||void 0===r?void 0:r.hasProperty(t)))return this.fire(new vt(new Error(t+Qs))),!1;if(null!=e&&this._validate(us,`layers.${this.id}.paint.${t}`,t,e,n))return !1;if(t.endsWith(Ls))return this._transitionablePaint.setTransition(t.slice(0,-11),e||void 0),!1;{const n=this._transitionablePaint._values[t],r="cross-faded-data-driven"===n.property.specification["property-type"],i=n.value.isDataDriven(),s=n.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);const o=this._transitionablePaint._values[t].value;return o.isDataDriven()||i||r||this._handleOverridablePaintPropertyUpdate(t,s,o)}}_handleSpecialPaintPropertyUpdate(t){}_handleOverridablePaintPropertyUpdate(t,e,n){return !1}isHidden(t=this.minzoom,e=!1){return !!(this.minzoom&&t<(e?Math.floor(this.minzoom):this.minzoom))||!!(this.maxzoom&&t>=this.maxzoom)||"none"===this._evaluatedVisibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);}hasTransition(){return this._transitioningPaint.hasTransition()}recalculateVisibility(){this._evaluatedVisibility=this._visibilityExpression.evaluate();}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);}serialize(){var t,e;const n={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:null===(t=this._unevaluatedLayout)||void 0===t?void 0:t.serialize(),paint:null===(e=this._transitionablePaint)||void 0===e?void 0:e.serialize()};return this.visibility&&(n.layout||(n.layout={}),n.layout.visibility=this.visibility),U(n,((t,e)=>!(void 0===t||"layout"===e&&!Object.keys(t).length||"paint"===e&&!Object.keys(t).length)))}_validate(t,e,n,r,i={}){return !1!==(null==i?void 0:i.validate)&&hs(this,t.call(os,{key:e,layerType:this.type,objectKey:n,value:r,styleSpec:wt,style:{glyphs:!0,sprite:!0}}))}is3D(){return !1}isTileClipped(){return !1}hasOffscreenPass(){return !1}resize(){}isStateDependent(){for(const t in this.paint._values){const e=this.paint.get(t);if(e instanceof qs&&Gr(e.property.specification)&&("source"===e.value.kind||"composite"===e.value.kind)&&e.value.isStateDependent)return !0}return !1}}let eo;var no={get paint(){return eo=eo||new Ks({"raster-opacity":new Xs(wt.paint_raster["raster-opacity"]),"raster-hue-rotate":new Xs(wt.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Xs(wt.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Xs(wt.paint_raster["raster-brightness-max"]),"raster-saturation":new Xs(wt.paint_raster["raster-saturation"]),"raster-contrast":new Xs(wt.paint_raster["raster-contrast"]),resampling:new Xs(wt.paint_raster.resampling),"raster-resampling":new Xs(wt.paint_raster["raster-resampling"]),"raster-fade-duration":new Xs(wt.paint_raster["raster-fade-duration"])})}};class ro extends to{constructor(t,e){super(t,no,e);}}const io={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class so{constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;}}class oo{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());}clear(){this.length=0;}resize(t){this.reserve(t),this.length=t;}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}freeBufferAfterUpload(){this.arrayBuffer=new ArrayBuffer(0),this._refreshViews();}}function ao(t,e=1){let n=0,r=0;return {members:t.map((t=>{const i=io[t.type].BYTES_PER_ELEMENT,s=n=lo(n,Math.max(e,i)),o=t.components||1;return r=Math.max(r,i),n+=i*o,{name:t.name,type:t.type,components:o,offset:s}})),size:lo(n,Math.max(r,e)),alignment:e}}function lo(t,e){return Math.ceil(t/e)*e}class uo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e){const n=this.length;return this.resize(n+1),this.emplace(n,t,e)}emplace(t,e,n){const r=2*t;return this.int16[r+0]=e,this.int16[r+1]=n,t}}uo.prototype.bytesPerElement=4,ds("StructArrayLayout2i4",uo);class co extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n){const r=this.length;return this.resize(r+1),this.emplace(r,t,e,n)}emplace(t,e,n,r){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=n,this.int16[i+2]=r,t}}co.prototype.bytesPerElement=6,ds("StructArrayLayout3i6",co);class ho extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,n,r)}emplace(t,e,n,r,i){const s=4*t;return this.int16[s+0]=e,this.int16[s+1]=n,this.int16[s+2]=r,this.int16[s+3]=i,t}}ho.prototype.bytesPerElement=8,ds("StructArrayLayout4i8",ho);class po extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,n,r,i,s)}emplace(t,e,n,r,i,s,o){const a=6*t;return this.int16[a+0]=e,this.int16[a+1]=n,this.int16[a+2]=r,this.int16[a+3]=i,this.int16[a+4]=s,this.int16[a+5]=o,t}}po.prototype.bytesPerElement=12,ds("StructArrayLayout2i4i12",po);class fo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,n,r,i,s)}emplace(t,e,n,r,i,s,o){const a=4*t,l=8*t;return this.int16[a+0]=e,this.int16[a+1]=n,this.uint8[l+4]=r,this.uint8[l+5]=i,this.uint8[l+6]=s,this.uint8[l+7]=o,t}}fo.prototype.bytesPerElement=8,ds("StructArrayLayout2i4ub8",fo);class yo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e){const n=this.length;return this.resize(n+1),this.emplace(n,t,e)}emplace(t,e,n){const r=2*t;return this.float32[r+0]=e,this.float32[r+1]=n,t}}yo.prototype.bytesPerElement=8,ds("StructArrayLayout2f8",yo);class mo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a,l,u){const c=this.length;return this.resize(c+1),this.emplace(c,t,e,n,r,i,s,o,a,l,u)}emplace(t,e,n,r,i,s,o,a,l,u,c){const h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=n,this.uint16[h+2]=r,this.uint16[h+3]=i,this.uint16[h+4]=s,this.uint16[h+5]=o,this.uint16[h+6]=a,this.uint16[h+7]=l,this.uint16[h+8]=u,this.uint16[h+9]=c,t}}mo.prototype.bytesPerElement=20,ds("StructArrayLayout10ui20",mo);class go extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a){const l=this.length;return this.resize(l+1),this.emplace(l,t,e,n,r,i,s,o,a)}emplace(t,e,n,r,i,s,o,a,l){const u=8*t;return this.uint16[u+0]=e,this.uint16[u+1]=n,this.uint16[u+2]=r,this.uint16[u+3]=i,this.uint16[u+4]=s,this.uint16[u+5]=o,this.uint16[u+6]=a,this.uint16[u+7]=l,t}}go.prototype.bytesPerElement=16,ds("StructArrayLayout8ui16",go);class xo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a,l,u,c,h){const p=this.length;return this.resize(p+1),this.emplace(p,t,e,n,r,i,s,o,a,l,u,c,h)}emplace(t,e,n,r,i,s,o,a,l,u,c,h,p){const f=12*t;return this.int16[f+0]=e,this.int16[f+1]=n,this.int16[f+2]=r,this.int16[f+3]=i,this.uint16[f+4]=s,this.uint16[f+5]=o,this.uint16[f+6]=a,this.uint16[f+7]=l,this.int16[f+8]=u,this.int16[f+9]=c,this.int16[f+10]=h,this.int16[f+11]=p,t}}xo.prototype.bytesPerElement=24,ds("StructArrayLayout4i4ui4i24",xo);class vo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,n){const r=this.length;return this.resize(r+1),this.emplace(r,t,e,n)}emplace(t,e,n,r){const i=3*t;return this.float32[i+0]=e,this.float32[i+1]=n,this.float32[i+2]=r,t}}vo.prototype.bytesPerElement=12,ds("StructArrayLayout3f12",vo);class bo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}bo.prototype.bytesPerElement=4,ds("StructArrayLayout1ul4",bo);class wo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a,l){const u=this.length;return this.resize(u+1),this.emplace(u,t,e,n,r,i,s,o,a,l)}emplace(t,e,n,r,i,s,o,a,l,u){const c=10*t,h=5*t;return this.int16[c+0]=e,this.int16[c+1]=n,this.int16[c+2]=r,this.int16[c+3]=i,this.int16[c+4]=s,this.int16[c+5]=o,this.uint32[h+3]=a,this.uint16[c+8]=l,this.uint16[c+9]=u,t}}wo.prototype.bytesPerElement=20,ds("StructArrayLayout6i1ul2ui20",wo);class _o extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,n,r,i,s)}emplace(t,e,n,r,i,s,o){const a=6*t;return this.int16[a+0]=e,this.int16[a+1]=n,this.int16[a+2]=r,this.int16[a+3]=i,this.int16[a+4]=s,this.int16[a+5]=o,t}}_o.prototype.bytesPerElement=12,ds("StructArrayLayout2i2i2i12",_o);class So extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,n,r,i)}emplace(t,e,n,r,i,s){const o=4*t,a=8*t;return this.float32[o+0]=e,this.float32[o+1]=n,this.float32[o+2]=r,this.int16[a+6]=i,this.int16[a+7]=s,t}}So.prototype.bytesPerElement=16,ds("StructArrayLayout2f1f2i16",So);class Ao extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,n,r,i,s)}emplace(t,e,n,r,i,s,o){const a=16*t,l=4*t,u=8*t;return this.uint8[a+0]=e,this.uint8[a+1]=n,this.float32[l+1]=r,this.float32[l+2]=i,this.int16[u+6]=s,this.int16[u+7]=o,t}}Ao.prototype.bytesPerElement=16,ds("StructArrayLayout2ub2f2i16",Ao);class Mo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n){const r=this.length;return this.resize(r+1),this.emplace(r,t,e,n)}emplace(t,e,n,r){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=n,this.uint16[i+2]=r,t}}Mo.prototype.bytesPerElement=6,ds("StructArrayLayout3ui6",Mo);class ko extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m){const g=this.length;return this.resize(g+1),this.emplace(g,t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m)}emplace(t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g){const x=24*t,v=12*t,b=48*t;return this.int16[x+0]=e,this.int16[x+1]=n,this.uint16[x+2]=r,this.uint16[x+3]=i,this.uint32[v+2]=s,this.uint32[v+3]=o,this.uint32[v+4]=a,this.uint16[x+10]=l,this.uint16[x+11]=u,this.uint16[x+12]=c,this.float32[v+7]=h,this.float32[v+8]=p,this.uint8[b+36]=f,this.uint8[b+37]=d,this.uint8[b+38]=y,this.uint32[v+10]=m,this.int16[x+22]=g,t}}ko.prototype.bytesPerElement=48,ds("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",ko);class Io extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,M,k,I){const E=this.length;return this.resize(E+1),this.emplace(E,t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,M,k,I)}emplace(t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,M,k,I,E){const T=32*t,F=16*t;return this.int16[T+0]=e,this.int16[T+1]=n,this.int16[T+2]=r,this.int16[T+3]=i,this.int16[T+4]=s,this.int16[T+5]=o,this.int16[T+6]=a,this.int16[T+7]=l,this.uint16[T+8]=u,this.uint16[T+9]=c,this.uint16[T+10]=h,this.uint16[T+11]=p,this.uint16[T+12]=f,this.uint16[T+13]=d,this.uint16[T+14]=y,this.uint16[T+15]=m,this.uint16[T+16]=g,this.uint16[T+17]=x,this.uint16[T+18]=v,this.uint16[T+19]=b,this.uint16[T+20]=w,this.uint16[T+21]=_,this.uint16[T+22]=S,this.uint32[F+12]=A,this.float32[F+13]=M,this.float32[F+14]=k,this.uint16[T+30]=I,this.uint16[T+31]=E,t}}Io.prototype.bytesPerElement=64,ds("StructArrayLayout8i15ui1ul2f2ui64",Io);class Eo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}Eo.prototype.bytesPerElement=4,ds("StructArrayLayout1f4",Eo);class To extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,n){const r=this.length;return this.resize(r+1),this.emplace(r,t,e,n)}emplace(t,e,n,r){const i=3*t;return this.uint16[6*t+0]=e,this.float32[i+1]=n,this.float32[i+2]=r,t}}To.prototype.bytesPerElement=12,ds("StructArrayLayout1ui2f12",To);class Fo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n){const r=this.length;return this.resize(r+1),this.emplace(r,t,e,n)}emplace(t,e,n,r){const i=4*t;return this.uint32[2*t+0]=e,this.uint16[i+2]=n,this.uint16[i+3]=r,t}}Fo.prototype.bytesPerElement=8,ds("StructArrayLayout1ul2ui8",Fo);class Po extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e){const n=this.length;return this.resize(n+1),this.emplace(n,t,e)}emplace(t,e,n){const r=2*t;return this.uint16[r+0]=e,this.uint16[r+1]=n,t}}Po.prototype.bytesPerElement=4,ds("StructArrayLayout2ui4",Po);class Do extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}Do.prototype.bytesPerElement=2,ds("StructArrayLayout1ui2",Do);class zo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,n,r){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,n,r)}emplace(t,e,n,r,i){const s=4*t;return this.float32[s+0]=e,this.float32[s+1]=n,this.float32[s+2]=r,this.float32[s+3]=i,t}}zo.prototype.bytesPerElement=16,ds("StructArrayLayout4f16",zo);class Bo extends so{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new n(this.anchorPointX,this.anchorPointY)}}Bo.prototype.size=20;class Co extends wo{get(t){return new Bo(this,t)}}ds("CollisionBoxArray",Co);class Vo extends so{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(t){this._structArray.uint8[this._pos1+37]=t;}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(t){this._structArray.uint8[this._pos1+38]=t;}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(t){this._structArray.uint32[this._pos4+10]=t;}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}Vo.prototype.size=48;class Lo extends ko{get(t){return new Vo(this,t)}}ds("PlacedSymbolArray",Lo);class Oo extends so{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(t){this._structArray.uint32[this._pos4+12]=t;}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}Oo.prototype.size=64;class $o extends Io{get(t){return new Oo(this,t)}}ds("SymbolInstanceArray",$o);class Ro extends Eo{getoffsetX(t){return this.float32[1*t+0]}}ds("GlyphOffsetArray",Ro);class No extends co{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}ds("SymbolLineVertexArray",No);class Uo extends so{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}Uo.prototype.size=12;class jo extends To{get(t){return new Uo(this,t)}}ds("TextAnchorOffsetArray",jo);class qo extends so{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}qo.prototype.size=8;class Go extends Fo{get(t){return new qo(this,t)}}ds("FeatureIndexArray",Go);class Xo extends uo{}class Yo extends uo{}class Zo extends uo{}class Ho extends po{}class Wo extends fo{}class Ko extends yo{}class Jo extends mo{}class Qo extends go{}class ta extends xo{}class ea extends vo{}class na extends bo{}class ra extends _o{}class ia extends Ao{}class sa extends Mo{}class oa extends Po{}const aa=ao([{name:"a_pos",components:2,type:"Int16"}],4),{members:la}=aa;class ua{constructor(t=[]){this._forceNewSegmentOnNextPrepare=!1,this.segments=t;}prepareSegment(t,e,n,r){const i=this.segments[this.segments.length-1];return t>ua.MAX_VERTEX_ARRAY_LENGTH&&G(`Max vertices per segment is ${ua.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}. Consider using the \`fillLargeMeshArrays\` function if you require meshes with more than ${ua.MAX_VERTEX_ARRAY_LENGTH} vertices.`),this._forceNewSegmentOnNextPrepare||!i||i.vertexLength+t>ua.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==r?this.createNewSegment(e,n,r):i}createNewSegment(t,e,n){const r={vertexOffset:t.length,primitiveOffset:e.length,vertexLength:0,primitiveLength:0,vaos:{}};return void 0!==n&&(r.sortKey=n),this._forceNewSegmentOnNextPrepare=!1,this.segments.push(r),r}getOrCreateLatestSegment(t,e,n){return this.prepareSegment(0,t,e,n)}forceNewSegmentOnNextPrepare(){this._forceNewSegmentOnNextPrepare=!0;}get(){return this.segments}destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e].destroy();}static simpleSegment(t,e,n,r){return new ua([{vertexOffset:t,primitiveOffset:e,vertexLength:n,primitiveLength:r,vaos:{},sortKey:0}])}}function ca(t,e){return 256*(t=L(Math.floor(t),0,255))+L(Math.floor(e),0,255)}ua.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,ds("SegmentVector",ua);const ha=ao([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]),pa=ao([{name:"a_dasharray_from",components:4,type:"Uint16"},{name:"a_dasharray_to",components:4,type:"Uint16"}]);var fa,da,ya,ma={exports:{}},ga={exports:{}},xa={exports:{}},va=function(){if(ya)return ma.exports;ya=1;var t=(fa||(fa=1,ga.exports=function(t,e){var n,r,i,s,o,a,l,u;for(r=t.length-(n=3&t.length),i=e,o=3432918353,a=461845907,u=0;u>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(s>>>16)&65535)<<16);switch(l=0,n){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0}),ga.exports),e=(da||(da=1,xa.exports=function(t,e){for(var n,r=t.length,i=e^r,s=0;r>=4;)n=1540483477*(65535&(n=255&t.charCodeAt(s)|(255&t.charCodeAt(++s))<<8|(255&t.charCodeAt(++s))<<16|(255&t.charCodeAt(++s))<<24))+((1540483477*(n>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(n=1540483477*(65535&(n^=n>>>24))+((1540483477*(n>>>16)&65535)<<16)),r-=4,++s;switch(r){case 3:i^=(255&t.charCodeAt(s+2))<<16;case 2:i^=(255&t.charCodeAt(s+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(s)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0}),xa.exports);return ma.exports=t,ma.exports.murmur3=t,ma.exports.murmur2=e,ma.exports}(),ba=r(va);class wa{constructor(){this.ids=[],this.positions=[],this.indexed=!1;}add(t,e,n,r){this.ids.push(_a(t)),this.positions.push(e,n,r);}getPositions(t){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const e=_a(t);let n=0,r=this.ids.length-1;for(;n>1;this.ids[t]>=e?r=t:n=t+1;}const i=[];for(;this.ids[n]===e;)i.push({index:this.positions[3*n],start:this.positions[3*n+1],end:this.positions[3*n+2]}),n++;return i}static serialize(t,e){const n=new Float64Array(t.ids),r=new Uint32Array(t.positions);return Sa(n,r,0,n.length-1),e&&e.push(n.buffer,r.buffer),{ids:n,positions:r}}static deserialize(t){const e=new wa;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function _a(t){const e=+t;return !isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:ba(String(t))}function Sa(t,e,n,r){for(;n>1];let s=n-1,o=r+1;for(;;){do{s++;}while(t[s]i);if(s>=o)break;Aa(t,s,o),Aa(e,3*s,3*o),Aa(e,3*s+1,3*o+1),Aa(e,3*s+2,3*o+2);}o-n`u_${t}`)),this.type=n;}setUniform(t,e,n){t.set(n.constantOr(this.value));}getBinding(t,e,n){return "color"===this.type?new Ea(t,e):new ka(t,e)}}class Da{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tlbr,this.patternTo=t.tlbr;}setConstantDashPositions(t,e){this.dashTo=[0,t.y,t.height,t.width],this.dashFrom=[0,e.y,e.height,e.width];}setUniform(t,e,n,r){let i=null;"u_pattern_to"===r?i=this.patternTo:"u_pattern_from"===r?i=this.patternFrom:"u_dasharray_to"===r?i=this.dashTo:"u_dasharray_from"===r?i=this.dashFrom:"u_pixel_ratio_to"===r?i=this.pixelRatioTo:"u_pixel_ratio_from"===r&&(i=this.pixelRatioFrom),null!==i&&t.set(i);}getBinding(t,e,n){return n.startsWith("u_pattern")||n.startsWith("u_dasharray_")?new Ia(t,e):new ka(t,e)}}class za{constructor(t,e,n,r){this.expression=t,this.type=n,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:"Float32",components:"color"===n?2:1,offset:0}))),this.paintVertexArray=new r;}populatePaintArray(t,e,n){const r=this.paintVertexArray.length,i=this.expression.evaluate(new Cs(0,n),e,{},n.canonical,[],n.formattedSection);this.paintVertexArray.resize(t),this._setPaintValue(r,t,i);}updatePaintArray(t,e,n,r,i){const s=this.expression.evaluate(new Cs(0,i),n,r);this._setPaintValue(t,e,s);}_setPaintValue(t,e,n){if("color"===this.type){const r=Fa(n);for(let n=t;n`u_${t}_t`)),this.type=n,this.useIntegerZoom=r,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:"Float32",components:"color"===n?4:2,offset:0}))),this.paintVertexArray=new s;}populatePaintArray(t,e,n){const r=this.expression.evaluate(new Cs(this.zoom,n),e,{},n.canonical,[],n.formattedSection),i=this.expression.evaluate(new Cs(this.zoom+1,n),e,{},n.canonical,[],n.formattedSection),s=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(s,t,r,i);}updatePaintArray(t,e,n,r,i){const s=this.expression.evaluate(new Cs(this.zoom,i),n,r),o=this.expression.evaluate(new Cs(this.zoom+1,i),n,r);this._setPaintValue(t,e,s,o);}_setPaintValue(t,e,n,r){if("color"===this.type){const i=Fa(n),s=Fa(r);for(let n=t;n`#define HAS_UNIFORM_${t}`)));}return t}getBinderAttributes(){const t=[];for(const e in this.binders){const n=this.binders[e];if(n instanceof za||n instanceof Ba)for(const e of n.paintVertexAttributes)t.push(e.name);else if(n instanceof Ca){const e=n.getVertexAttributes();for(const n of e)t.push(n.name);}}return t}getBinderUniforms(){const t=[];for(const e in this.binders){const n=this.binders[e];if(n instanceof Pa||n instanceof Da||n instanceof Ba)for(const e of n.uniformNames)t.push(e);}return t}getPaintVertexBuffers(){return this._buffers}getUniforms(t,e){const n=[];for(const r in this.binders){const i=this.binders[r];if(i instanceof Pa||i instanceof Da||i instanceof Ba)for(const s of i.uniformNames)if(e[s]){const o=i.getBinding(t,e[s],s);n.push({name:s,property:r,binding:o});}}return n}setUniforms(t,e,n,r){for(const{name:t,property:i,binding:s}of e)this.binders[i].setUniform(s,r,n.get(i),t);}updatePaintBuffers(t){this._buffers=[];for(const e in this.binders){const n=this.binders[e];if(t&&n instanceof Ca){const e=2===t.fromScale?n.zoomInPaintVertexBuffer:n.zoomOutPaintVertexBuffer;e&&this._buffers.push(e);}else (n instanceof za||n instanceof Ba)&&n.paintVertexBuffer&&this._buffers.push(n.paintVertexBuffer);}}upload(t){for(const e in this.binders){const n=this.binders[e];(n instanceof za||n instanceof Ba||n instanceof Ca)&&n.upload(t);}this.updatePaintBuffers();}destroy(){for(const t in this.binders){const e=this.binders[t];(e instanceof za||e instanceof Ba||e instanceof Ca)&&e.destroy();}}}class $a{constructor(t,e,n=()=>!0){this.programConfigurations={};for(const r of t)this.programConfigurations[r.id]=new Oa(r,e,n);this.needsUpload=!1,this._featureMap=new wa,this._bufferOffset=0;}populatePaintArrays(t,e,n,r){for(const n in this.programConfigurations)this.programConfigurations[n].populatePaintArrays(t,e,r);void 0!==e.id&&this._featureMap.add(e.id,n,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;}updatePaintArrays(t,e,n,r){for(const i of n)this.needsUpload=this.programConfigurations[i.id].updatePaintArrays(t,this._featureMap,e,i,r)||this.needsUpload;}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy();}}function Ra(t,e){return {"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-dasharray":["dasharray_to","dasharray_from"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[t]||[t.replace(`${e}-`,"").replace(/-/g,"_")]}function Na(t,e,n){const r={color:{source:yo,composite:zo},number:{source:Eo,composite:yo}},i=function(t){return {"line-pattern":{source:Jo,composite:Jo},"fill-pattern":{source:Jo,composite:Jo},"fill-extrusion-pattern":{source:Jo,composite:Jo},"line-dasharray":{source:Qo,composite:Qo}}[t]}(t);return (null==i?void 0:i[n])||r[e][n]}ds("ConstantBinder",Pa),ds("CrossFadedConstantBinder",Da),ds("SourceExpressionBinder",za),ds("CrossFadedPatternBinder",Va),ds("CrossFadedDasharrayBinder",La),ds("CompositeExpressionBinder",Ba),ds("ProgramConfiguration",Oa,{omit:["_buffers"]}),ds("ProgramConfigurationSet",$a);const Ua=Math.pow(2,14)-1,ja=-Ua-1;function qa(t){const e=T/t.extent,n=t.loadGeometry();for(const t of n)for(const n of t){const t=Math.round(n.x*e),r=Math.round(n.y*e);n.x=L(t,ja,Ua),n.y=L(r,ja,Ua),(tn.x+1||rn.y+1)&&G("Geometry exceeds allowed extent, reduce your vector tile buffer size");}return n}function Ga(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?qa(t):[]}}const Xa=-32768;function Ya(t,e,n,r,i){t.emplaceBack(Xa+8*e+r,Xa+8*n+i);}class Za{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasDependencies=!1,this.layoutVertexArray=new Yo,this.indexArray=new sa,this.segments=new ua,this.programConfigurations=new $a(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,n){const r=this.layers[0],i=[];let s=null,o=!1,a="heatmap"===r.type;if("circle"===r.type){const t=r;s=t.layout.get("circle-sort-key"),o=!s.isConstant(),a||(a="map"===t.paint.get("circle-pitch-alignment"));}const l=a?e.subdivisionGranularity.circle:1;for(const{feature:e,id:r,index:a,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=Ga(e,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),u,n))continue;const c=o?s.evaluate(u,{},n):void 0,h={id:r,properties:e.properties,type:e.type,sourceLayerIndex:l,index:a,geometry:t?u.geometry:qa(e),patterns:{},sortKey:c};i.push(h);}o&&i.sort(((t,e)=>t.sortKey-e.sortKey));for(const r of i){const{geometry:i,index:s,sourceLayerIndex:o}=r,a=t[s].feature;this.addFeature(r,i,s,n,l),e.featureIndex.insert(a,i,s,o,this.index);}}update(t,e,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:n});}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,la),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,n,r,i=1){let s;switch(i){case 1:s=[0,7];break;case 3:s=[0,2,5,7];break;case 5:s=[0,1,3,4,6,7];break;case 7:s=[0,1,2,3,4,5,6,7];break;default:throw new Error(`Invalid circle bucket granularity: ${i}; valid values are 1, 3, 5, 7.`)}const o=s.length;for(const n of e)for(const e of n){const n=e.x,r=e.y;if(n<0||n>=T||r<0||r>=T)continue;const i=this.segments.prepareSegment(o*o,this.layoutVertexArray,this.indexArray,t.sortKey),a=i.vertexLength;for(let t=0;t1){if(Qa(t,e))return !0;for(const r of e)if(el(r,t,n))return !0}for(const r of t)if(el(r,e,n))return !0;return !1}function Qa(t,e){if(0===t.length||0===e.length)return !1;for(let n=0;n1?n:n.sub(e)._mult(i)._add(e))}function rl(t,e){let n,r,i,s=!1;for(const o of t){n=o;for(let t=0,o=n.length-1;te.y!=i.y>e.y&&e.x<(i.x-r.x)*(e.y-r.y)/(i.y-r.y)+r.x&&(s=!s);}return s}function il(t,e){let n=!1;for(let r=0,i=t.length-1;re.y!=o.y>e.y&&e.x<(o.x-s.x)*(e.y-s.y)/(o.y-s.y)+s.x&&(n=!n);}return n}function sl(t,e,n){const r=n[0],i=n[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return !1;const s=X(t,e,n[0]);return s!==X(t,e,n[1])||s!==X(t,e,n[2])||s!==X(t,e,n[3])}function ol(t,e,n){const r=e.paint.get(t).value;return "constant"===r.kind?r.value:n.programConfigurations.get(e.id).getMaxValue(t)}function al(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function ll(t,e,r,i,s){if(!e[0]&&!e[1])return t;const o=n.convert(e)._mult(s);"viewport"===r&&o._rotate(-i);const a=[];for(const e of t)a.push(e.sub(o));return a}function ul(t){const e=[];for(let n=0;nyl(t,e,n,r)))}(l,i,o,a),f=u),dl({queryGeometry:p,size:f,transform:i,unwrappedTileID:o,getElevation:a,pitchAlignment:h,pitchScale:c},r)}}class bl extends Za{}let wl;ds("HeatmapBucket",bl,{omit:["layers"]});var _l={get paint(){return wl=wl||new Ks({"heatmap-radius":new Ys(wt.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Ys(wt.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Xs(wt.paint_heatmap["heatmap-intensity"]),"heatmap-color":new Ws(wt.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Xs(wt.paint_heatmap["heatmap-opacity"])})}};function Sl(t,{width:e,height:n},r,i){if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==e*n*r)throw new RangeError(`mismatched image size. expected: ${i.length} but got: ${e*n*r}`)}else i=new Uint8Array(e*n*r);return t.width=e,t.height=n,t.data=i,t}function Al(t,{width:e,height:n},r){if(e===t.width&&n===t.height)return;const i=Sl({},{width:e,height:n},r);Ml(t,i,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,e),height:Math.min(t.height,n)},r),t.width=e,t.height=n,t.data=i.data;}function Ml(t,e,n,r,i,s){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||n.x>t.width-i.width||n.y>t.height-i.height)throw new RangeError("out of range source coordinates for image copy");if(i.width>e.width||i.height>e.height||r.x>e.width-i.width||r.y>e.height-i.height)throw new RangeError("out of range destination coordinates for image copy");const o=t.data,a=e.data;if(o===a)throw new Error("srcData equals dstData, so image is already copied");for(let l=0;l{e[t.evaluationKey]=o;const a=t.expression.evaluate(e);i.setPixel(r/4/n,s/4,a);};if(t.clips)for(let e=0,i=0;ethis.max&&(this.max=n),n=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(`Out of range source coordinates for DEM data. x: ${t}, y: ${e}, dim: ${this.dim}`);return (e+1)*this.stride+(t+1)}unpack(t,e,n){return t*this.redFactor+e*this.greenFactor+n*this.blueFactor-this.baseShift}pack(t){return Rl(t,this.getUnpackVector())}getPixels(){return new Il({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(t,e,n){if(this.dim!==t.dim)throw new Error("dem dimension mismatch");let r=e*this.dim,i=e*this.dim+this.dim,s=n*this.dim,o=n*this.dim+this.dim;switch(e){case -1:r=i-1;break;case 1:i=r+1;}switch(n){case -1:s=o-1;break;case 1:o=s+1;}const a=-e*this.dim,l=-n*this.dim;for(let e=s;e0)for(let i=e;i=e;i-=r)s=du(i/r|0,t[i],t[i+1],s);return s&&lu(s,s.next)&&(yu(s),s=s.next),s}function Yl(t,e){if(!t)return t;e||(e=t);let n,r=t;do{if(n=!1,r.steiner||!lu(r,r.next)&&0!==au(r.prev,r,r.next))r=r.next;else {if(yu(r),r=e=r.prev,r===r.next)break;n=!0;}}while(n||r!==e);return e}function Zl(t,e,n,r,i,s,o){if(!t)return;!o&&s&&function(t,e,n,r){let i=t;do{0===i.z&&(i.z=nu(i.x,i.y,e,n,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){let e,n=1;do{let r,i=t;t=null;let s=null;for(e=0;i;){e++;let o=i,a=0;for(let t=0;t0||l>0&&o;)0!==a&&(0===l||!o||i.z<=o.z)?(r=i,i=i.nextZ,a--):(r=o,o=o.nextZ,l--),s?s.nextZ=r:t=r,r.prevZ=s,s=r;i=o;}s.nextZ=null,n*=2;}while(e>1)}(i);}(t,r,i,s);let a=t;for(;t.prev!==t.next;){const l=t.prev,u=t.next;if(s?Wl(t,r,i,s):Hl(t))e.push(l.i,t.i,u.i),yu(t),t=u.next,a=u.next;else if((t=u)===a){o?1===o?Zl(t=Kl(Yl(t),e),e,n,r,i,s,2):2===o&&Jl(t,e,n,r,i,s):Zl(Yl(t),e,n,r,i,s,1);break}}}function Hl(t){const e=t.prev,n=t,r=t.next;if(au(e,n,r)>=0)return !1;const i=e.x,s=n.x,o=r.x,a=e.y,l=n.y,u=r.y,c=Math.min(i,s,o),h=Math.min(a,l,u),p=Math.max(i,s,o),f=Math.max(a,l,u);let d=r.next;for(;d!==e;){if(d.x>=c&&d.x<=p&&d.y>=h&&d.y<=f&&su(i,a,s,l,o,u,d.x,d.y)&&au(d.prev,d,d.next)>=0)return !1;d=d.next;}return !0}function Wl(t,e,n,r){const i=t.prev,s=t,o=t.next;if(au(i,s,o)>=0)return !1;const a=i.x,l=s.x,u=o.x,c=i.y,h=s.y,p=o.y,f=Math.min(a,l,u),d=Math.min(c,h,p),y=Math.max(a,l,u),m=Math.max(c,h,p),g=nu(f,d,e,n,r),x=nu(y,m,e,n,r);let v=t.prevZ,b=t.nextZ;for(;v&&v.z>=g&&b&&b.z<=x;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==o&&su(a,c,l,h,u,p,v.x,v.y)&&au(v.prev,v,v.next)>=0)return !1;if(v=v.prevZ,b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==o&&su(a,c,l,h,u,p,b.x,b.y)&&au(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}for(;v&&v.z>=g;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==o&&su(a,c,l,h,u,p,v.x,v.y)&&au(v.prev,v,v.next)>=0)return !1;v=v.prevZ;}for(;b&&b.z<=x;){if(b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==o&&su(a,c,l,h,u,p,b.x,b.y)&&au(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}return !0}function Kl(t,e){let n=t;do{const r=n.prev,i=n.next.next;!lu(r,i)&&uu(r,n,n.next,i)&&pu(r,i)&&pu(i,r)&&(e.push(r.i,n.i,i.i),yu(n),yu(n.next),n=t=i),n=n.next;}while(n!==t);return Yl(n)}function Jl(t,e,n,r,i,s){let o=t;do{let t=o.next.next;for(;t!==o.prev;){if(o.i!==t.i&&ou(o,t)){let a=fu(o,t);return o=Yl(o,o.next),a=Yl(a,a.next),Zl(o,e,n,r,i,s,0),void Zl(a,e,n,r,i,s,0)}t=t.next;}o=o.next;}while(o!==t)}function Ql(t,e){let n=t.x-e.x;return 0===n&&(n=t.y-e.y,0===n)&&(n=(t.next.y-t.y)/(t.next.x-t.x)-(e.next.y-e.y)/(e.next.x-e.x)),n}function tu(t,e){const n=function(t,e){let n=e;const r=t.x,i=t.y;let s,o=-1/0;if(lu(t,n))return n;do{if(lu(t,n.next))return n.next;if(i<=n.y&&i>=n.next.y&&n.next.y!==n.y){const t=n.x+(i-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(t<=r&&t>o&&(o=t,s=n.x=n.x&&n.x>=l&&r!==n.x&&iu(is.x||n.x===s.x&&eu(s,n)))&&(s=n,c=e);}n=n.next;}while(n!==a);return s}(t,e);if(!n)return e;const r=fu(n,t);return Yl(r,r.next),Yl(n,n.next)}function eu(t,e){return au(t.prev,t,e.prev)<0&&au(e.next,t,t.next)<0}function nu(t,e,n,r,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-r)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function ru(t){let e=t,n=t;do{(e.x=(t-o)*(s-a)&&(t-o)*(r-a)>=(n-o)*(e-a)&&(n-o)*(s-a)>=(i-o)*(r-a)}function su(t,e,n,r,i,s,o,a){return !(t===o&&e===a)&&iu(t,e,n,r,i,s,o,a)}function ou(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&uu(n,n.next,t,e))return !0;n=n.next;}while(n!==t);return !1}(t,e)&&(pu(t,e)&&pu(e,t)&&function(t,e){let n=t,r=!1;const i=(t.x+e.x)/2,s=(t.y+e.y)/2;do{n.y>s!=n.next.y>s&&n.next.y!==n.y&&i<(n.next.x-n.x)*(s-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next;}while(n!==t);return r}(t,e)&&(au(t.prev,t,e.prev)||au(t,e.prev,e))||lu(t,e)&&au(t.prev,t,t.next)>0&&au(e.prev,e,e.next)>0)}function au(t,e,n){return (e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function lu(t,e){return t.x===e.x&&t.y===e.y}function uu(t,e,n,r){const i=hu(au(t,e,n)),s=hu(au(t,e,r)),o=hu(au(n,r,t)),a=hu(au(n,r,e));return i!==s&&o!==a||!(0!==i||!cu(t,n,e))||!(0!==s||!cu(t,r,e))||!(0!==o||!cu(n,t,r))||!(0!==a||!cu(n,e,r))}function cu(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function hu(t){return t>0?1:t<0?-1:0}function pu(t,e){return au(t.prev,t,t.next)<0?au(t,e,t.next)>=0&&au(t,t.prev,e)>=0:au(t,e,t.prev)<0||au(t,t.next,e)<0}function fu(t,e){const n=mu(t.i,t.x,t.y),r=mu(e.i,e.x,e.y),i=t.next,s=e.prev;return t.next=e,e.prev=t,n.next=i,i.prev=n,r.next=n,n.prev=r,s.next=r,r.prev=s,r}function du(t,e,n,r){const i=mu(t,e,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function yu(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function mu(t,e,n){return {i:t,x:e,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}class gu{constructor(t,e){if(e>t)throw new Error("Min granularity must not be greater than base granularity.");this._baseZoomGranularity=t,this._minGranularity=e;}getGranularityForZoomLevel(t){return Math.max(Math.floor(this._baseZoomGranularity/(1<32767||e>32767)throw new Error("Vertex coordinates are out of signed 16 bit integer range.");const n=0|Math.round(t),r=0|Math.round(e),i=this._getKey(n,r);if(this._vertexDictionary.has(i))return this._vertexDictionary.get(i);const s=this._vertexBuffer.length/2;return this._vertexDictionary.set(i,s),this._vertexBuffer.push(n,r),s}_subdivideTrianglesScanline(t){if(this._granularity<2)return function(t,e){const n=[];for(let r=0;r0?(n.push(i),n.push(o),n.push(s)):(n.push(i),n.push(s),n.push(o));}return n}(this._vertexBuffer,t);const e=[],n=t.length;for(let r=0;r=1||v<=0)||y&&(ai)){u>=r&&u<=i&&s.push(n[(t+1)%3]);continue}!y&&x>0&&s.push(this._vertexToIndex(o+p*x,a+f*x));const b=o+p*Math.max(x,0),w=o+p*Math.min(v,1);d||this._generateIntraEdgeVertices(s,o,a,l,u,b,w),!y&&v<1&&s.push(this._vertexToIndex(o+p*v,a+f*v)),(y||u>=r&&u<=i)&&s.push(n[(t+1)%3]),!y&&(u<=r||u>=i)&&this._generateInterEdgeVertices(s,o,a,l,u,c,h,w,r,i);}return s}_generateIntraEdgeVertices(t,e,n,r,i,s,o){const a=r-e,l=i-n,u=0===l,c=u?Math.min(e,r):Math.min(s,o),h=u?Math.max(e,r):Math.max(s,o),p=Math.floor(c/this._granularityCellSize)+1,f=Math.ceil(h/this._granularityCellSize)-1;if(u?e=p;r--){const i=r*this._granularityCellSize;t.push(this._vertexToIndex(i,n+l*(i-e)/a));}}_generateInterEdgeVertices(t,e,n,r,i,s,o,a,l,u){const c=i-n,h=s-r,p=o-i,f=(l-i)/p,d=(u-i)/p,y=Math.min(f,d),m=Math.max(f,d),g=r+h*y;let x=Math.floor(Math.min(g,a)/this._granularityCellSize)+1,v=Math.ceil(Math.max(g,a)/this._granularityCellSize)-1,b=a=1||m<=0){const t=n-o,r=s+(e-s)*Math.min((l-o)/t,(u-o)/t);x=Math.floor(Math.min(r,a)/this._granularityCellSize)+1,v=Math.ceil(Math.max(r,a)/this._granularityCellSize)-1,b=a0?u:l;if(b)for(let e=x;e<=v;e++)t.push(this._vertexToIndex(e*this._granularityCellSize,_));else for(let e=v;e>=x;e--)t.push(this._vertexToIndex(e*this._granularityCellSize,_));}_generateOutline(t){const e=[];for(const n of t){const t=Su(n,this._granularity,!0),r=this._pointArrayToIndices(t),i=[];for(let t=1;ti!=(s===vu)?(t.push(e),t.push(n),t.push(this._vertexToIndex(r,s)),t.push(n),t.push(this._vertexToIndex(i,s)),t.push(this._vertexToIndex(r,s))):(t.push(n),t.push(e),t.push(this._vertexToIndex(r,s)),t.push(this._vertexToIndex(i,s)),t.push(n),t.push(this._vertexToIndex(r,s)));}_fillPoles(t,e,n){const r=this._vertexBuffer,i=T,s=t.length;for(let o=2;o80*n){a=t[0],l=t[1];let e=a,r=l;for(let s=n;se&&(e=n),i>r&&(r=i);}u=Math.max(e-a,r-l),u=0!==u?32767/u:0;}return Zl(s,o,n,a,l,u,0),o}(n,r),e=this._convertIndices(n,t);i=this._subdivideTrianglesScanline(e);}catch(t){console.error(t);}let s=[];return e&&(s=this._generateOutline(t)),this._ensureNoPoleVertices(),this._handlePoles(i),{verticesFlattened:this._vertexBuffer,indicesTriangles:i,indicesLineList:s}}_convertIndices(t,e){const n=[];for(const r of e)n.push(this._vertexToIndex(t[2*r],t[2*r+1]));return n}_pointArrayToIndices(t){const e=[];for(const n of t)e.push(this._vertexToIndex(n.x,n.y));return e}}function _u(t,e,n,r=!0){return new wu(n,e).subdividePolygonInternal(t,r)}function Su(t,e,r=!1){if(!t||t.length<1)return [];if(t.length<2)return [];const i=t[0],s=t[t.length-1],o=r&&(i.x!==s.x||i.y!==s.y);if(e<2)return o?[...t,t[0]]:[...t];const a=Math.floor(T/e),l=[];l.push(new n(t[0].x,t[0].y));const u=t.length,c=o?u:u-1;for(let e=0;e0?(Math.floor(x/a)+1)*a:(Math.ceil(x/a)-1)*a,e=y>0?(Math.floor(v/a)+1)*a:(Math.ceil(v/a)-1)*a,r=Math.abs(x-t),i=Math.abs(v-e),s=Math.abs(x-c),o=Math.abs(v-h),u=p?r/m:Number.POSITIVE_INFINITY,b=f?i/g:Number.POSITIVE_INFINITY;if((s<=r||!p)&&(o<=i||!f))break;if(u=0?o-1:s-1,i=(a+1)%s,l=t[2*e[r]],u=t[2*e[i]],c=t[2*e[o]],h=t[2*e[o]+1],p=t[2*e[a]+1];let f=!1;if(lu)f=!1;else {const n=p-h,s=-(t[2*e[a]]-c),o=h((u-c)*n+(t[2*e[i]+1]-h)*s)*o&&(f=!0);}if(f){const t=e[r],i=e[o],l=e[a];t!==i&&t!==l&&i!==l&&n.push(l,i,t),o--,o<0&&(o=s-1);}else {const t=e[i],r=e[o],l=e[a];t!==r&&t!==l&&r!==l&&n.push(l,r,t),a++,a>=s&&(a=0);}if(r===i)break}}function Mu(t,e,n,r,i,s,o,a,l){const u=i.length/2,c=o&&a&&l;if(uua.MAX_VERTEX_ARRAY_LENGTH&&(u=t.createNewSegment(e,n),l=a.count,y=!0,m=!0,g=!0,c=0);const x=ku(o,r,s,a,p,y,u),v=ku(o,r,s,a,f,m,u),b=ku(o,r,s,a,d,g,u);n.emplaceBack(c+x-l,c+v-l,c+b-l),u.primitiveLength++;}}(e,n,r,i,s,t),c&&function(t,e,n,r,i,s){const o=[];for(let t=0;tua.MAX_VERTEX_ARRAY_LENGTH&&(u=t.createNewSegment(e,n),l=a.count,d=!0,y=!0,c=0);const m=ku(o,r,s,a,p,d,u),g=ku(o,r,s,a,f,y,u);n.emplaceBack(c+m-l,c+g-l),u.primitiveLength++;}}(o,n,a,i,l,t),e.forceNewSegmentOnNextPrepare(),null==o||o.forceNewSegmentOnNextPrepare();}function ku(t,e,n,r,i,s,o){if(s){const s=r.count;return n(e[2*i],e[2*i+1]),t[i]=r.count,r.count++,o.vertexLength++,s}return t[i]}class Iu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasDependencies=!1,this.patternFeatures=[],this.layoutVertexArray=new Zo,this.indexArray=new sa,this.indexArray2=new oa,this.programConfigurations=new $a(t.layers,t.zoom),this.segments=new ua,this.segments2=new ua,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,n){this.hasDependencies=ql("fill",this.layers,e);const r=this.layers[0].layout.get("fill-sort-key"),i=!r.isConstant(),s=[];for(const{feature:o,id:a,index:l,sourceLayerIndex:u}of t){const t=this.layers[0]._featureFilter.needGeometry,c=Ga(o,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),c,n))continue;const h=i?r.evaluate(c,{},n,e.availableImages):void 0,p={id:a,properties:o.properties,type:o.type,sourceLayerIndex:u,index:l,geometry:t?c.geometry:qa(o),patterns:{},sortKey:h};s.push(p);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const r of s){const{geometry:i,index:s,sourceLayerIndex:o}=r;if(this.hasDependencies){const t=Gl("fill",this.layers,r,{zoom:this.zoom},e);this.patternFeatures.push(t);}else this.addFeature(r,i,s,n,{},e.subdivisionGranularity);e.featureIndex.insert(t[s].feature,i,s,o,this.index);}}update(t,e,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:n});}addFeatures(t,e,n){for(const r of this.patternFeatures)this.addFeature(r,r.geometry,r.index,e,n,t.subdivisionGranularity);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,jl),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());}addFeature(t,e,n,r,i,s){for(const t of rr(e,500)){const e=_u(t,r,s.fill.getGranularityForZoomLevel(r.z)),n=this.layoutVertexArray;Mu(((t,e)=>{n.emplaceBack(t,e);}),this.segments,this.layoutVertexArray,this.indexArray,e.verticesFlattened,e.indicesTriangles,this.segments2,this.indexArray2,e.indicesLineList);}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,n,{imagePositions:i,canonical:r});}}let Eu,Tu;ds("FillBucket",Iu,{omit:["layers","patternFeatures"]});var Fu={get paint(){return Tu=Tu||new Ks({"fill-antialias":new Xs(wt.paint_fill["fill-antialias"]),"fill-opacity":new Ys(wt.paint_fill["fill-opacity"]),"fill-color":new Ys(wt.paint_fill["fill-color"]),"fill-outline-color":new Ys(wt.paint_fill["fill-outline-color"]),"fill-translate":new Xs(wt.paint_fill["fill-translate"]),"fill-translate-anchor":new Xs(wt.paint_fill["fill-translate-anchor"]),"fill-pattern":new Zs(wt.paint_fill["fill-pattern"])})},get layout(){return Eu=Eu||new Ks({"fill-sort-key":new Ys(wt.layout_fill["fill-sort-key"])})}};class Pu extends to{constructor(t,e){super(t,Fu,e);}recalculate(t,e){super.recalculate(t,e);const n=this.paint._values["fill-outline-color"];"constant"===n.value.kind&&void 0===n.value.value&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"]);}createBucket(t){return new Iu(t)}queryRadius(){return al(this.paint.get("fill-translate"))}queryIntersectsFeature({queryGeometry:t,geometry:e,transform:n,pixelsToTileUnits:r}){return Ka(ll(t,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),-n.bearingInRadians,r),e)}isTileClipped(){return !0}}const Du=ao([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4),zu=ao([{name:"a_centroid",components:2,type:"Int16"}],4),{members:Bu}=Du;class Cu{constructor(t,e,n,r,i){this.properties={},this.extent=n,this.type=0,this.id=void 0,this._pbf=t,this._geometry=-1,this._keys=r,this._values=i,t.readFields(Vu,this,e);}loadGeometry(){const t=this._pbf;t.pos=this._geometry;const e=t.readVarint()+t.pos,r=[];let i,s=1,o=0,a=0,l=0;for(;t.pos>3;}if(o--,1===s||2===s)a+=t.readSVarint(),l+=t.readSVarint(),1===s&&(i&&r.push(i),i=[]),i&&i.push(new n(a,l));else {if(7!==s)throw new Error(`unknown command ${s}`);i&&i.push(i[0].clone());}}return i&&r.push(i),r}bbox(){const t=this._pbf;t.pos=this._geometry;const e=t.readVarint()+t.pos;let n=1,r=0,i=0,s=0,o=1/0,a=-1/0,l=1/0,u=-1/0;for(;t.pos>3;}if(r--,1===n||2===n)i+=t.readSVarint(),s+=t.readSVarint(),ia&&(a=i),su&&(u=s);else if(7!==n)throw new Error(`unknown command ${n}`)}return [o,l,a,u]}toGeoJSON(t,e,n){const r=this.extent*Math.pow(2,n),i=this.extent*t,s=this.extent*e,o=this.loadGeometry();function a(t){return [360*(t.x+i)/r-180,360/Math.PI*Math.atan(Math.exp((1-2*(t.y+s)/r)*Math.PI))-90]}function l(t){return t.map(a)}let u;if(1===this.type){const t=[];for(const e of o)t.push(e[0]);const e=l(t);u=1===t.length?{type:"Point",coordinates:e[0]}:{type:"MultiPoint",coordinates:e};}else if(2===this.type){const t=o.map(l);u=1===t.length?{type:"LineString",coordinates:t[0]}:{type:"MultiLineString",coordinates:t};}else {if(3!==this.type)throw new Error("unknown feature type");{const t=Lu(o),e=[];for(const n of t)e.push(n.map(l));u=1===e.length?{type:"Polygon",coordinates:e[0]}:{type:"MultiPolygon",coordinates:e};}}const c={type:"Feature",geometry:u,properties:this.properties};return null!=this.id&&(c.id=this.id),c}}function Vu(t,e,n){1===t?e.id=n.readVarint():2===t?function(t,e){const n=t.readVarint()+t.pos;for(;t.pos=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];const e=this._pbf.readVarint()+this._pbf.pos;return new Cu(this._pbf,e,this.extent,this._keys,this._values)}}function Ru(t,e,n){15===t?e.version=n.readVarint():1===t?e.name=n.readString():5===t?e.extent=n.readVarint():2===t?e._features.push(n.pos):3===t?e._keys.push(n.readString()):4===t&&e._values.push(function(t){let e=null;const n=t.readVarint()+t.pos;for(;t.pos>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}if(null==e)throw new Error("unknown feature value");return e}(n));}class Nu{constructor(t,e){this.layers=t.readFields(Uu,{},e);}}function Uu(t,e,n){if(3===t){const t=new $u(n,n.readVarint()+n.pos);t.length&&(e[t.name]=t);}}const ju=Math.pow(2,13);function qu(t,e,n,r,i,s,o,a){t.emplaceBack(e,n,2*Math.floor(r*ju)+o,i*ju*2,s*ju*2,Math.round(a));}class Gu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasDependencies=!1,this.layoutVertexArray=new Ho,this.centroidVertexArray=new Xo,this.indexArray=new sa,this.programConfigurations=new $a(t.layers,t.zoom),this.segments=new ua,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,n){this.features=[],this.hasDependencies=ql("fill-extrusion",this.layers,e);for(const{feature:r,id:i,index:s,sourceLayerIndex:o}of t){const t=this.layers[0]._featureFilter.needGeometry,a=Ga(r,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),a,n))continue;const l={id:i,sourceLayerIndex:o,index:s,geometry:t?a.geometry:qa(r),properties:r.properties,type:r.type,patterns:{}};this.hasDependencies?this.features.push(Gl("fill-extrusion",this.layers,l,{zoom:this.zoom},e)):this.addFeature(l,l.geometry,s,n,{},e.subdivisionGranularity),e.featureIndex.insert(r,l.geometry,s,o,this.index,!0);}}addFeatures(t,e,n){for(const r of this.features){const{geometry:i}=r;this.addFeature(r,i,r.index,e,n,t.subdivisionGranularity);}}update(t,e,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:n});}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.centroidVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Bu),this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,zu.members,!0),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy());}addFeature(t,e,n,r,i,s){for(const n of rr(e,500)){const e={x:0,y:0,sampleCount:0},i=this.layoutVertexArray.length;this.processPolygon(e,r,t,n,s);const o=this.layoutVertexArray.length-i,a=Math.floor(e.x/e.sampleCount),l=Math.floor(e.y/e.sampleCount);for(let t=0;t{qu(u,t,e,0,0,1,1,0);}),this.segments,this.layoutVertexArray,this.indexArray,l.verticesFlattened,l.indicesTriangles);}_generateSideFaces(t,e){let n=0;for(let r=1;rua.MAX_VERTEX_ARRAY_LENGTH&&(e.segment=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const o=i.sub(s)._perp()._unit(),a=s.dist(i);n+a>32768&&(n=0),qu(this.layoutVertexArray,i.x,i.y,o.x,o.y,0,0,n),qu(this.layoutVertexArray,i.x,i.y,o.x,o.y,0,1,n),n+=a,qu(this.layoutVertexArray,s.x,s.y,o.x,o.y,0,0,n),qu(this.layoutVertexArray,s.x,s.y,o.x,o.y,0,1,n);const l=e.segment.vertexLength;this.indexArray.emplaceBack(l,l+2,l+1),this.indexArray.emplaceBack(l+1,l+2,l+3),e.segment.vertexLength+=4,e.segment.primitiveLength+=2;}}}function Xu(t,e){for(let n=0;nT)||t.y===e.y&&(t.y<0||t.y>T)}function Zu(t){return t.every((t=>t.x<0))||t.every((t=>t.x>T))||t.every((t=>t.y<0))||t.every((t=>t.y>T))}let Hu;ds("FillExtrusionBucket",Gu,{omit:["layers","features"]});var Wu={get paint(){return Hu=Hu||new Ks({"fill-extrusion-opacity":new Xs(wt["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Ys(wt["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Xs(wt["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Xs(wt["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Zs(wt["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Ys(wt["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Ys(wt["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Xs(wt["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Ku extends to{constructor(t,e){super(t,Wu,e);}createBucket(t){return new Gu(t)}queryRadius(){return al(this.paint.get("fill-extrusion-translate"))}is3D(){return !0}queryIntersectsFeature({queryGeometry:t,feature:e,featureState:r,geometry:i,transform:s,pixelsToTileUnits:o,pixelPosMatrix:a}){const l=ll(t,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),-s.bearingInRadians,o),u=this.paint.get("fill-extrusion-height").evaluate(e,r),c=this.paint.get("fill-extrusion-base").evaluate(e,r),h=function(t,e){const r=[];for(const i of t){const t=[i.x,i.y,0,1];A(t,t,e),r.push(new n(t[0]/t[3],t[1]/t[3]));}return r}(l,a),p=function(t,e,r,i){const s=[],o=[],a=i[8]*e,l=i[9]*e,u=i[10]*e,c=i[11]*e,h=i[8]*r,p=i[9]*r,f=i[10]*r,d=i[11]*r;for(const e of t){const t=[],r=[];for(const s of e){const e=s.x,o=s.y,y=i[0]*e+i[4]*o+i[12],m=i[1]*e+i[5]*o+i[13],g=i[2]*e+i[6]*o+i[14],x=i[3]*e+i[7]*o+i[15],v=g+u,b=x+c,w=y+h,_=m+p,S=g+f,A=x+d,M=new n((y+a)/b,(m+l)/b);M.z=v/b,t.push(M);const k=new n(w/A,_/A);k.z=S/A,r.push(k);}s.push(t),o.push(r);}return [s,o]}(i,c,u,a);return function(t,e,n){let r=1/0;Ka(n,e)&&(r=Qu(n,e[0]));for(let i=0;i>4;if(1!==r)throw new Error(`Got v${r} data when expected v1.`);const i=tc[15&n];if(!i)throw new Error("Unrecognized array type.");const[s]=new Uint16Array(t,2,1),[o]=new Uint32Array(t,4,1);return new ec(o,s,i,t)}constructor(t,e=64,n=Float64Array,r){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+e,2),65535),this.ArrayType=n,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const i=tc.indexOf(this.ArrayType),s=2*t*this.ArrayType.BYTES_PER_ELEMENT,o=t*this.IndexArrayType.BYTES_PER_ELEMENT,a=(8-o%8)%8;if(i<0)throw new Error(`Unexpected typed array class: ${n}.`);r&&r instanceof ArrayBuffer?(this.data=r,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+o+a,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+s+o+a),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+o+a,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+i]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t);}add(t,e){const n=this._pos>>1;return this.ids[n]=n,this.coords[this._pos++]=t,this.coords[this._pos++]=e,n}finish(){const t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return nc(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,e,n,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:i,coords:s,nodeSize:o}=this,a=[0,i.length-1,0],l=[];for(;a.length;){const u=a.pop()||0,c=a.pop()||0,h=a.pop()||0;if(c-h<=o){for(let o=h;o<=c;o++){const a=s[2*o],u=s[2*o+1];a>=t&&a<=n&&u>=e&&u<=r&&l.push(i[o]);}continue}const p=h+c>>1,f=s[2*p],d=s[2*p+1];f>=t&&f<=n&&d>=e&&d<=r&&l.push(i[p]),(0===u?t<=f:e<=d)&&(a.push(h),a.push(p-1),a.push(1-u)),(0===u?n>=f:r>=d)&&(a.push(p+1),a.push(c),a.push(1-u));}return l}within(t,e,n){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:r,coords:i,nodeSize:s}=this,o=[0,r.length-1,0],a=[],l=n*n;for(;o.length;){const u=o.pop()||0,c=o.pop()||0,h=o.pop()||0;if(c-h<=s){for(let n=h;n<=c;n++)oc(i[2*n],i[2*n+1],t,e)<=l&&a.push(r[n]);continue}const p=h+c>>1,f=i[2*p],d=i[2*p+1];oc(f,d,t,e)<=l&&a.push(r[p]),(0===u?t-n<=f:e-n<=d)&&(o.push(h),o.push(p-1),o.push(1-u)),(0===u?t+n>=f:e+n>=d)&&(o.push(p+1),o.push(c),o.push(1-u));}return a}}function nc(t,e,n,r,i,s){if(i-r<=n)return;const o=r+i>>1;rc(t,e,o,r,i,s),nc(t,e,n,r,o-1,1-s),nc(t,e,n,o+1,i,1-s);}function rc(t,e,n,r,i,s){for(;i>r;){if(i-r>600){const o=i-r+1,a=n-r+1,l=Math.log(o),u=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*u*(o-u)/o)*(a-o/2<0?-1:1);rc(t,e,n,Math.max(r,Math.floor(n-a*u/o+c)),Math.min(i,Math.floor(n+(o-a)*u/o+c)),s);}const o=e[2*n+s];let a=r,l=i;for(ic(t,e,r,n),e[2*i+s]>o&&ic(t,e,r,i);ao;)l--;}e[2*r+s]===o?ic(t,e,r,l):(l++,ic(t,e,l,i)),l<=n&&(r=l+1),n<=l&&(i=l-1);}}function ic(t,e,n,r){sc(t,n,r),sc(e,2*n,2*r),sc(e,2*n+1,2*r+1);}function sc(t,e,n){const r=t[e];t[e]=t[n],t[n]=r;}function oc(t,e,n,r){const i=t-n,s=e-r;return i*i+s*s}function ac(t,e,n,r){let i=r;const s=e+(n-e>>1);let o,a=n-e;const l=t[e],u=t[e+1],c=t[n],h=t[n+1];for(let r=e+3;ri)o=r,i=e;else if(e===i){const t=Math.abs(r-s);tr&&(o-e>3&&ac(t,e,o,r),t[o+2]=i,n-o>3&&ac(t,o,n,r));}function lc(t,e,n,r,i,s){let o=i-n,a=s-r;if(0!==o||0!==a){const l=((t-n)*o+(e-r)*a)/(o*o+a*a);l>1?(n=i,r=s):l>0&&(n+=o*l,r+=a*l);}return o=t-n,a=e-r,o*o+a*a}function uc(t,e,n,r){const i={type:e,geom:n},s={id:null==t?null:t,type:i.type,geometry:i.geom,tags:r,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};switch(i.type){case "Point":case "MultiPoint":hc(s,i.geom);break;case "LineString":hc(s,i.geom.points);break;case "Polygon":hc(s,i.geom[0].points);break;case "MultiLineString":for(const t of i.geom)hc(s,t.points);break;case "MultiPolygon":for(const t of i.geom)hc(s,t[0].points);}return s}function cc(t){t.points.length>64&&(t.points=new Float64Array(t.points));}function hc(t,e){for(let n=0;n0&&(o+=r?(i*l-a*s)/2:Math.sqrt(Math.pow(a-i,2)+Math.pow(l-s,2))),i=a,s=l;}const a=e.points.length-3;e.points[2]=1,n>0&&ac(e.points,0,a,n),e.points[a+2]=1,cc(e),e.size=Math.abs(o),e.start=0,e.end=e.size;}function yc(t,e,n,r){for(let i=0;i1?1:n}function xc(t){const e={type:"Feature",geometry:vc(t),properties:t.tags};return null!=t.id&&(e.id=t.id),e}function vc(t){const{type:e,geometry:n}=t;switch(e){case "Point":return {type:e,coordinates:wc(n[0],n[1])};case "MultiPoint":return {type:e,coordinates:bc(n)};case "LineString":return {type:e,coordinates:bc(n.points)};case "MultiLineString":case "Polygon":return {type:e,coordinates:n.map((t=>bc(t.points)))};case "MultiPolygon":return {type:e,coordinates:n.map((t=>t.map((t=>bc(t.points)))))}}}function bc(t){const e=[];for(let n=0;n=(n/=e)&&o=r)return null;const l=[];for(const e of t){const t=i===Ac.X?e.minX:e.minY,s=i===Ac.X?e.maxX:e.maxY;if(t>=n&&s=r))switch(e.type){case "Point":case "MultiPoint":kc(e,l,n,r,i);continue;case "LineString":Ic(e,l,n,r,i,a);continue;case "MultiLineString":Ec(e,l,n,r,i);continue;case "Polygon":Tc(e,l,n,r,i);continue;case "MultiPolygon":Fc(e,l,n,r,i);continue}}return l.length?l:null}function kc(t,e,n,r,i){const s=[];((function(t,e,n,r,i){for(let s=0;s=n&&o<=r&&Bc(e,t[s],t[s+1],t[s+2]);}}))(t.geometry,s,n,r,i),s.length&&e.push(uc(t.id,3===s.length?"Point":"MultiPoint",s,t.tags));}function Ic(t,e,n,r,i,s){const o=[];if(Pc(t.geometry,o,n,r,i,!1,s.lineMetrics),o.length)if(s.lineMetrics)for(const n of o)e.push(uc(t.id,"LineString",n,t.tags));else e.push(o.length>1?uc(t.id,"MultiLineString",o,t.tags):uc(t.id,"LineString",o[0],t.tags));}function Ec(t,e,n,r,i){const s=[];zc(t.geometry,s,n,r,i,!1),s.length&&e.push(1!==s.length?uc(t.id,"MultiLineString",s,t.tags):uc(t.id,"LineString",s[0],t.tags));}function Tc(t,e,n,r,i){const s=[];zc(t.geometry,s,n,r,i,!0),s.length&&e.push(uc(t.id,"Polygon",s,t.tags));}function Fc(t,e,n,r,i){const s=[];for(const e of t.geometry){const t=[];zc(e,t,n,r,i,!0),t.length&&s.push(t);}s.length&&e.push(uc(t.id,"MultiPolygon",s,t.tags));}function Pc(t,e,n,r,i,s,o){let a=Dc(t);const l=i===Ac.X?Cc:Vc;let u,c,h=t.start;for(let p=0;pn&&(c=l(a,f,d,m,g,n),o&&(a.start=h+u*c)):x>r?v=n&&(c=l(a,f,d,m,g,n),b=!0),v>r&&x<=r&&(c=l(a,f,d,m,g,r),b=!0),!s&&b&&(o&&(a.end=h+u*c),e.push(a),a=Dc(t)),o&&(h+=u);}let p=t.points.length-3;const f=t.points[p],d=t.points[p+1],y=i===Ac.X?f:d;y>=n&&y<=r&&Bc(a.points,f,d,t.points[p+2]),p=a.points.length-3,s&&p>=3&&(a.points[p]!==a.points[0]||a.points[p+1]!==a.points[1])&&Bc(a.points,a.points[0],a.points[1],a.points[2]),a.points.length&&(cc(a),e.push(a));}function Dc(t){return {points:[],size:t.size,start:t.start,end:t.end}}function zc(t,e,n,r,i,s){for(const o of t)Pc(o,e,n,r,i,s,!1);}function Bc(t,e,n,r){t.push(e,n,r);}function Cc(t,e,n,r,i,s){const o=(s-e)/(r-e);return Bc(t.points,s,n+(i-n)*o,1),o}function Vc(t,e,n,r,i,s){const o=(s-n)/(i-n);return Bc(t.points,e+(r-e)*o,s,1),o}function Lc(t,e){const n=e.buffer/e.extent;let r=t;const i=Mc(t,1,-1-n,n,Ac.X,-1,2,e),s=Mc(t,1,1-n,2+n,Ac.X,-1,2,e);return i||s?(r=Mc(t,1,-n,1+n,Ac.X,-1,2,e)||[],i&&(r=Oc(i,1).concat(r)),s&&(r=r.concat(Oc(s,-1))),r):r}function Oc(t,e){const n=[];for(const r of t)switch(r.type){case "Point":case "MultiPoint":{const t=$c(r.geometry,e);n.push(uc(r.id,r.type,t,r.tags));continue}case "LineString":{const t=Rc(r.geometry,e);n.push(uc(r.id,r.type,t,r.tags));continue}case "MultiLineString":case "Polygon":{const t=[];for(const n of r.geometry)t.push(Rc(n,e));n.push(uc(r.id,r.type,t,r.tags));continue}case "MultiPolygon":{const t=[];for(const n of r.geometry){const r=[];for(const t of n)r.push(Rc(t,e));t.push(r);}n.push(uc(r.id,r.type,t,r.tags));continue}}return n}function $c(t,e){const n=[];for(let r=0;r0||e.addOrUpdateProperties?.length>0;if(r){const r=t[0];let s=pc({type:"FeatureCollection",features:[{type:"Feature",id:r.id,geometry:e.newGeometry,properties:i?Uc(r.tags,e):r.tags}]},n);return s=Lc(s,n),s}if(i){const n=[];for(const r of t){const t={...r};t.tags=Uc(t.tags,e),n.push(t);}return n}return t}function Uc(t,e){if(e.removeAllProperties)return {};const n={...t||{}};if(e.removeProperties)for(const t of e.removeProperties)delete n[t];if(e.addOrUpdateProperties)for(const{key:t,value:r}of e.addOrUpdateProperties)n[t]=r;return n}!function(t){t[t.X=0]="X",t[t.Y=1]="Y";}(Ac||(Ac={}));const jc={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:t=>t};class qc{constructor(t){this.options=Object.assign(Object.create(jc),t),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[],this.points=[];}load(t){const e=[];for(const n of t){if(!n.geometry)continue;const[t,r]=n.geometry.coordinates,[i,s]=[mc(t),gc(r)];e.push({id:n.id,type:"Point",geometry:[i,s],tags:n.properties});}this.createIndex(e);}initialize(t){const e=[];for(const n of t)"Point"===n.type&&e.push(n);this.createIndex(e);}updateIndex(t,e,n){this.options=Object.assign(Object.create(jc),n.clusterOptions),this.initialize(t);}createIndex(t){const{log:e,minZoom:n,maxZoom:r}=this.options;e&&console.time("total time");const i=`prepare ${t.length} points`;e&&console.time(i),this.points=t;const s=[];for(let e=0;e=n;t--){const n=Date.now();o=this.trees[t]=this.createTree(this.cluster(o,t)),e&&console.log("z%d: %d clusters in %dms",t,o.numItems,Date.now()-n);}e&&console.timeEnd("total time");}getClusters(t,e){return this.getClustersInternal(t,e).map((t=>xc(t)))}getClustersInternal(t,e){let n=((t[0]+180)%360+360)%360-180;const r=Math.max(-90,Math.min(90,t[1]));let i=180===t[2]?180:((t[2]+180)%360+360)%360-180;const s=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)n=-180,i=180;else if(n>i){const t=this.getClustersInternal([n,r,180,s],e),o=this.getClustersInternal([-180,r,i,s],e);return t.concat(o)}const o=this.trees[this.limitZoom(e)],a=o.range(mc(n),gc(s),mc(i),gc(r)),l=o.flatData,u=[];for(const t of a){const e=this.stride*t;u.push(l[e+5]>1?Gc(l,e,this.clusterProps):this.points[l[e+3]]);}return u}getChildren(t){const e=this.getOriginId(t),n=this.getOriginZoom(t),r=new Error("No cluster with the specified id: "+t),i=this.trees[n];if(!i)throw r;const s=i.flatData;if(e*this.stride>=s.length)throw r;const o=this.options.radius/(this.options.extent*Math.pow(2,n-1)),a=i.within(s[e*this.stride],s[e*this.stride+1],o),l=[];for(const e of a){const n=e*this.stride;s[n+4]===t&&l.push(s[n+5]>1?Xc(s,n,this.clusterProps):xc(this.points[s[n+3]]));}if(0===l.length)throw r;return l}getLeaves(t,e,n){const r=[];return this.appendLeaves(r,t,e=e||10,n=n||0,0),r}getTile(t,e,n){const r=this.trees[this.limitZoom(t)];if(!r)return null;const i=Math.pow(2,t),{extent:s,radius:o}=this.options,a=o/s,l=(n-a)/i,u=(n+1+a)/i,c={transformed:!0,features:[],source:null,x:e,y:n,z:t};return this.addTileFeatures(r.range((e-a)/i,l,(e+1+a)/i,u),r.flatData,e,n,i,c),0===e&&this.addTileFeatures(r.range(1-a/i,l,1,u),r.flatData,i,n,i,c),e===i-1&&this.addTileFeatures(r.range(0,l,a/i,u),r.flatData,-1,n,i,c),c}getClusterExpansionZoom(t){return this.getOriginZoom(t)}appendLeaves(t,e,n,r,i){const s=this.getChildren(e);for(const e of s){const s=e.properties;if(s?.cluster?i+s.point_count<=r?i+=s.point_count:i=this.appendLeaves(t,s.cluster_id,n,r,i):i1;let l,u,c;if(a)l=Yc(e,t,this.clusterProps),u=e[t],c=e[t+1];else {const n=this.points[e[t+3]];l=n.tags,[u,c]=n.geometry;}const h={type:1,geometry:[[Math.round(this.options.extent*(u*i-n)),Math.round(this.options.extent*(c*i-r))]],tags:l};let p;p=a||this.options.generateId?e[t+3]:this.points[e[t+3]].id,void 0!==p&&(h.id=p),s.features.push(h);}}limitZoom(t){return Math.max(this.options.minZoom,Math.min(Math.floor(+t),this.options.maxZoom+1))}cluster(t,e){const{radius:n,extent:r,reduce:i,minPoints:s}=this.options,o=n/(r*Math.pow(2,e)),a=t.flatData,l=[],u=this.stride;for(let n=0;ne&&(f+=a[n+5]);}if(f>p&&f>=s){let t,s=r*p,o=c*p,d=-1;const y=(n/u<<5)+(e+1)+this.points.length;for(const r of h){const l=r*u;if(a[l+2]<=e)continue;a[l+2]=e;const c=a[l+5];s+=a[l]*c,o+=a[l+1]*c,a[l+4]=y,i&&(t||(t=this.map(a,n,!0),d=this.clusterProps.length,this.clusterProps.push(t)),i(t,this.map(a,l)));}a[n+4]=y,l.push(s/f,o/f,1/0,y,-1,f),i&&l.push(d);}else {for(let t=0;t1)for(const t of h){const n=t*u;if(!(a[n+2]<=e)){a[n+2]=e;for(let t=0;t>5}getOriginZoom(t){return (t-this.points.length)%32}map(t,e,n){if(t[e+5]>1){const r=this.clusterProps[t[e+6]];return n?Object.assign({},r):r}const r=this.points[t[e+3]].tags,i=this.options.map(r);return n&&i===r?Object.assign({},i):i}}function Gc(t,e,n){return {id:t[e+3],type:"Point",tags:Yc(t,e,n),geometry:[t[e],t[e+1]]}}function Xc(t,e,n){return {type:"Feature",id:t[e+3],properties:Yc(t,e,n),geometry:{type:"Point",coordinates:[_c(t[e]),Sc(t[e+1])]}}}function Yc(t,e,n){const r=t[e+5],i=r>=1e4?`${Math.round(r/1e3)}k`:r>=1e3?Math.round(r/100)/10+"k":r,s=t[e+6],o=-1===s?{}:Object.assign({},n[s]);return Object.assign(o,{cluster:!0,cluster_id:t[e+3],point_count:r,point_count_abbreviated:i})}const Zc="geojsonvt_clip_start",Hc="geojsonvt_clip_end";function Wc(t,e,n,r,i){const s=e===i.maxZoom?0:i.tolerance/((1<0&&e.size<(i?o:r))return void(n.numPoints+=e.points.length/3);const a=[];for(let t=0;to)&&(n.numSimplified++,a.push(e.points[t],e.points[t+1])),n.numPoints++;i&&function(t,e){let n=0;for(let e=0,r=t.length,i=r-2;e0===e)for(let e=0,n=t.length;e1&&(console.log("invalidating tiles"),console.time("invalidating")),this.invalidateTiles(e),n.debug>1&&console.timeEnd("invalidating");const[r,i,s]=[0,0,0],o=Wc(t,r,i,s,n);o.source=t;const a=ih(r,i,s);if(this.tiles[a]=o,this.tileCoords.push({z:r,x:i,y:s,id:a}),n.debug){const t=`z${r}`;this.stats[t]=(this.stats[t]||0)+1,this.total++;}}getClusterExpansionZoom(t){return null}getChildren(t){return null}getLeaves(t,e,n){return null}getTile(t,e,n){const{extent:r,debug:i}=this.options,s=1<1&&console.log("drilling down to z%d-%d-%d",t,e,n);let a,l=t,u=e,c=n;for(;!a&&l>0;)l--,u>>=1,c>>=1,a=this.tiles[ih(l,u,c)];return a?.source?(i>1&&(console.log("found parent tile z%d-%d-%d",l,u,c),console.time("drilling down")),this.splitTile(a.source,l,u,c,t,e,n),i>1&&console.timeEnd("drilling down"),this.tiles[o]?Qc(this.tiles[o],r):null):null}splitTile(t,e,n,r,i,s,o){const a=[t,e,n,r],l=this.options,u=l.debug;for(;a.length;){r=a.pop(),n=a.pop(),e=a.pop(),t=a.pop();const c=1<1&&console.time("creation"),p=this.tiles[h]=Wc(t,e,n,r,l),this.tileCoords.push({z:e,x:n,y:r,id:h}),u)){u>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",e,n,r,p.numFeatures,p.numPoints,p.numSimplified),console.timeEnd("creation"));const t=`z${e}`;this.stats[t]=(this.stats[t]||0)+1,this.total++;}if(p.source=t,null==i){if(e===l.indexMaxZoom||p.numPoints<=l.indexMaxPoints)continue}else {if(e===l.maxZoom||e===i)continue;if(null!=i){const t=i-e;if(n!==s>>t||r!==o>>t)continue}}if(p.source=null,!t.length)continue;u>1&&console.time("clipping");const f=.5*l.buffer/l.extent,d=.5-f,y=.5+f,m=1+f;let g=null,x=null,v=null,b=null;const w=Mc(t,c,n-f,n+y,Ac.X,p.minX,p.maxX,l),_=Mc(t,c,n+d,n+m,Ac.X,p.minX,p.maxX,l);w&&(g=Mc(w,c,r-f,r+y,Ac.Y,p.minY,p.maxY,l),x=Mc(w,c,r+d,r+m,Ac.Y,p.minY,p.maxY,l)),_&&(v=Mc(_,c,r-f,r+y,Ac.Y,p.minY,p.maxY,l),b=Mc(_,c,r+d,r+m,Ac.Y,p.minY,p.maxY,l)),u>1&&console.timeEnd("clipping"),a.push(g||[],e+1,2*n,2*r),a.push(x||[],e+1,2*n,2*r+1),a.push(v||[],e+1,2*n+1,2*r),a.push(b||[],e+1,2*n+1,2*r+1);}}invalidateTiles(t){if(!t.length)return;const e=this.options,{debug:n}=e;let r=1/0,i=-1/0,s=1/0,o=-1/0;for(const e of t)r=Math.min(r,e.minX),i=Math.max(i,e.maxX),s=Math.min(s,e.minY),o=Math.max(o,e.maxY);const a=e.buffer/e.extent,l=new Set;for(const e in this.tiles){const u=this.tiles[e],c=1<=p||o=d)continue;let y=!1;for(const e of t)if(e.maxX>=h&&e.minX=f&&e.minY1&&console.log("invalidate tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",u.z,u.x,u.y,u.numFeatures,u.numPoints,u.numSimplified);const t=`z${u.z}`;this.stats[t]=(this.stats[t]||0)-1,this.total--;}delete this.tiles[e],l.add(e);}}l.size&&(this.tileCoords=this.tileCoords.filter((t=>!l.has(t.id))));}}function ih(t,e,n){return 32*((1<t.id)),this.index=t.index,this.hasDependencies=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={};for(const t of this.layers)this.gradients[t.id]={};this.layoutVertexArray=new Wo,this.layoutVertexArray2=new Ko,this.indexArray=new sa,this.programConfigurations=new $a(t.layers,t.zoom),this.segments=new ua,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,n){this.hasDependencies=ql("line",this.layers,e)||this.hasLineDasharray(this.layers);const r=this.layers[0].layout.get("line-sort-key"),i=!r.isConstant(),s=[];for(const{feature:e,id:o,index:a,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=Ga(e,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),u,n))continue;const c=i?r.evaluate(u,{},n):void 0,h={id:o,properties:e.properties,type:e.type,sourceLayerIndex:l,index:a,geometry:t?u.geometry:qa(e),patterns:{},dashes:{},sortKey:c};s.push(h);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const r of s){const{geometry:i,index:s,sourceLayerIndex:o}=r;this.hasDependencies?(ql("line",this.layers,e)?Gl("line",this.layers,r,{zoom:this.zoom},e):this.hasLineDasharray(this.layers)&&this.addLineDashDependencies(this.layers,r,this.zoom,e),this.patternFeatures.push(r)):this.addFeature(r,i,s,n,{},{},e.subdivisionGranularity),e.featureIndex.insert(t[s].feature,i,s,o,this.index);}}update(t,e,n,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:n,dashPositions:r});}addFeatures(t,e,n,r){for(const i of this.patternFeatures)this.addFeature(i,i.geometry,i.index,e,n,r,t.subdivisionGranularity);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,uh)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,ah),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}lineFeatureClips(t){if(t.properties&&Object.hasOwn(t.properties,Zc)&&Object.hasOwn(t.properties,Hc))return {start:+t.properties[Zc],end:+t.properties[Hc]}}addFeature(t,e,n,r,i,s,o){const a=this.layers[0].layout,l=a.get("line-join").evaluate(t,{}),u=a.get("line-cap").evaluate(t,{}),c=a.get("line-miter-limit").evaluate(t,{}),h=a.get("line-round-limit").evaluate(t,{});this.lineClips=this.lineFeatureClips(t);for(const n of e)this.addLine(n,t,l,u,c,h,r,o);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,n,{imagePositions:i,dashPositions:s,canonical:r});}addLine(t,e,n,r,i,s,o,a){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,t=Su(t,o?a.line.getGranularityForZoomLevel(o.z):1),this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e=2&&t[u-1].equals(t[u-2]);)u--;let c=0;for(;c0;if(w&&e>c){const t=f.dist(d);if(t>2*h){const e=f.sub(f.sub(d)._mult(h/t)._round());this.updateDistance(d,e),this.addCurrentVertex(e,m,0,0,p),d=e;}}const S=d&&y;let A=S?n:l?"butt":r;if(S&&"round"===A&&(vi&&(A="bevel"),"bevel"===A&&(v>2&&(A="flipbevel"),v100)o=g.mult(-1);else {const t=v*m.add(g).mag()/m.sub(g).mag();o._perp()._mult(t*(_?-1:1));}this.addCurrentVertex(f,o,0,0,p),this.addCurrentVertex(f,o.mult(-1),0,0,p);}else if("bevel"===A||"fakeround"===A){const t=-Math.sqrt(v*v-1),e=_?t:0,n=_?0:t;if(d&&this.addCurrentVertex(f,m,e,n,p),"fakeround"===A){const t=Math.round(180*b/Math.PI/20);for(let e=1;e2*h){const e=f.add(y.sub(f)._mult(h/t)._round());this.updateDistance(f,e),this.addCurrentVertex(e,g,0,0,p),f=e;}}}}addCurrentVertex(t,e,n,r,i,s=!1){const o=e.y*r-e.x,a=-e.y-e.x*r;this.addHalfVertex(t,e.x+e.y*n,e.y-e.x*n,s,!1,n,i),this.addHalfVertex(t,o,a,s,!0,-r,i),this.distance>hh/2&&0===this.totalDistance&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(t,e,n,r,i,s));}addHalfVertex({x:t,y:e},n,r,i,s,o,a){const l=.5*(this.lineClips?this.scaledDistance*(hh-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(s?1:0),Math.round(63*n)+128,Math.round(63*r)+128,1+(0===o?0:o<0?-1:1)|(63&l)<<2,l>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const u=a.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,u,this.e2),a.primitiveLength++),s?this.e2=u:this.e1=u;}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance;}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance();}hasLineDasharray(t){for(const e of t){const t=e.paint.get("line-dasharray");if(t&&!t.isConstant())return !0}return !1}addLineDashDependencies(t,e,n,r){for(const i of t){const t=i.paint.get("line-dasharray");if(!t||"constant"===t.value.kind)continue;const s="round"===i.layout.get("line-cap").evaluate(e,{}),o={dasharray:t.value.evaluate({zoom:n-1},e,{}),round:s},a={dasharray:t.value.evaluate({zoom:n},e,{}),round:s},l={dasharray:t.value.evaluate({zoom:n+1},e,{}),round:s},u=`${o.dasharray.join(",")},${o.round}`,c=`${a.dasharray.join(",")},${a.round}`,h=`${l.dasharray.join(",")},${l.round}`;r.dashDependencies[u]=o,r.dashDependencies[c]=a,r.dashDependencies[h]=l,e.dashes[i.id]={min:u,mid:c,max:h};}}}let fh,dh;ds("LineBucket",ph,{omit:["layers","patternFeatures"]});var yh={get paint(){return dh=dh||new Ks({"line-opacity":new Ys(wt.paint_line["line-opacity"]),"line-color":new Ys(wt.paint_line["line-color"]),"line-translate":new Xs(wt.paint_line["line-translate"]),"line-translate-anchor":new Xs(wt.paint_line["line-translate-anchor"]),"line-width":new Ys(wt.paint_line["line-width"]),"line-gap-width":new Ys(wt.paint_line["line-gap-width"]),"line-offset":new Ys(wt.paint_line["line-offset"]),"line-blur":new Ys(wt.paint_line["line-blur"]),"line-dasharray":new Zs(wt.paint_line["line-dasharray"]),"line-pattern":new Zs(wt.paint_line["line-pattern"]),"line-gradient":new Ws(wt.paint_line["line-gradient"])})},get layout(){return fh=fh||new Ks({"line-cap":new Ys(wt.layout_line["line-cap"]),"line-join":new Ys(wt.layout_line["line-join"]),"line-miter-limit":new Ys(wt.layout_line["line-miter-limit"]),"line-round-limit":new Ys(wt.layout_line["line-round-limit"]),"line-sort-key":new Ys(wt.layout_line["line-sort-key"])})}};class mh extends Ys{possiblyEvaluate(t,e){return e=new Cs(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,n,r){return e=$({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,n,r)}}let gh;class xh extends to{constructor(t,e){super(t,yh,e),this.gradientVersion=0,gh||(gh=new mh(yh.paint.properties["line-width"].specification),gh.useIntegerZoom=!0);}_handleSpecialPaintPropertyUpdate(t){if("line-gradient"===t){const t=this.gradientExpression();this.stepInterpolant=!!function(t){return void 0!==t._styleExpression}(t)&&t._styleExpression.expression instanceof cn,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER;}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values["line-floorwidth"]=gh.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,t);}createBucket(t){return new ph(t)}queryRadius(t){const e=t,n=vh(ol("line-width",this,e),ol("line-gap-width",this,e)),r=ol("line-offset",this,e);return n/2+Math.abs(r)+al(this.paint.get("line-translate"))}queryIntersectsFeature({queryGeometry:t,feature:e,featureState:r,geometry:i,transform:s,pixelsToTileUnits:o}){const a=ll(t,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),-s.bearingInRadians,o),l=o/2*vh(this.paint.get("line-width").evaluate(e,r),this.paint.get("line-gap-width").evaluate(e,r)),u=this.paint.get("line-offset").evaluate(e,r);return u&&(i=function(t,e){const r=[];for(const i of t){const t=ul(i),s=[];for(let r=0;r=3)for(const e of r)if(il(t,e))return !0;if(Ja(t,r,n))return !0}return !1}(a,i,l)}isTileClipped(){return !0}}function vh(t,e){return e>0?e+2*t:t}const bh=ao([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),wh=ao([{name:"a_projected_pos",components:3,type:"Float32"}],4);ao([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const _h=ao([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);ao([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);const Sh=ao([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),Ah=ao([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function Mh(t,e,n){const r=e.layout.get("text-transform").evaluate(n,{});return "uppercase"===r?t=t.toLocaleUpperCase():"lowercase"===r&&(t=t.toLocaleLowerCase()),Bs.applyArabicShaping&&(t=Bs.applyArabicShaping(t)),t}function kh(t,e,n){for(const r of t.sections)r.text=Mh(r.text,e,n);return t}ao([{name:"triangle",components:3,type:"Uint16"}]),ao([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),ao([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),ao([{type:"Float32",name:"offsetX"}]),ao([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),ao([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);var Ih=24;const Eh={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","⋯":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"},Th={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},Fh={40:!0};function Ph(t,e,n,r,i,s){if("fontStack"in e){const r=n[e.fontStack],s=null==r?void 0:r[t];return s?s.metrics.advance*e.scale+i:0}{const t=r[e.imageName];return t?t.displaySize[0]*e.scale*Ih/s+i:0}}function Dh(t,e,n,r){const i=Math.pow(t-e,2);return r?tMath.max(t,this.sections[e].scale)),0)}getMaxImageSize(t){let e=0,n=0;for(let r=0;rn)));}addImageSection(t){const e=t.image?t.image.name:"";if(0===e.length)return void G("Can't add FormattedSection with an empty image.");const n=this.getNextImageSectionCharCode();n?(this.text+=String.fromCharCode(n),this.sections.push({scale:1,verticalAlign:t.verticalAlign||"bottom",imageName:e}),this.sectionIndex.push(this.sections.length-1)):G("Reached maximum number of images 6401");}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}determineLineBreaks(t,e,n,r,i){const s=[],o=this.determineAverageLineWidth(t,e,n,r,i),a=this.hasZeroWidthSpaces();let l=0,u=0;const c=this.text[Symbol.iterator]();let h=c.next();const p=this.text[Symbol.iterator]();p.next();let f=p.next();const d=this.text[Symbol.iterator]();d.next(),d.next();let y=d.next();for(;!h.done;){const e=this.getSection(u),m=h.value.codePointAt(0);if(Ss(m)||(l+=Ph(m,e,n,r,t,i)),!f.done){const t=ws(m),n=f.value.codePointAt(0);(Th[m]||t||"imageName"in e||!y.done&&Fh[n])&&s.push(Bh(u+1,l,o,s,zh(m,n,t&&a),!1));}u++,h=c.next(),f=p.next(),y=d.next();}return Ch(Bh(this.length(),l,o,s,0,!0))}determineAverageLineWidth(t,e,n,r,i){let s=0,o=0;for(const e of this.text){const a=this.getSection(o);s+=Ph(e.codePointAt(0),a,n,r,t,i),o++;}return s/Math.max(1,Math.ceil(s/e))}}const Lh=4294967296,Oh=1/Lh,$h="undefined"==typeof TextDecoder?null:new TextDecoder("utf-8");class Rh{constructor(t=new Uint8Array(16)){this.buf=ArrayBuffer.isView(t)?t:new Uint8Array(t),this.dataView=new DataView(this.buf.buffer),this.pos=0,this.type=0,this.length=this.buf.length;}readFields(t,e,n=this.length){for(;this.pos>3,i=this.pos;this.type=7&n,t(r,e,this),this.pos===i&&this.skip(n);}return e}readMessage(t,e){return this.readFields(t,e,this.readVarint()+this.pos)}readFixed32(){const t=this.dataView.getUint32(this.pos,!0);return this.pos+=4,t}readSFixed32(){const t=this.dataView.getInt32(this.pos,!0);return this.pos+=4,t}readFixed64(){const t=this.dataView.getUint32(this.pos,!0)+this.dataView.getUint32(this.pos+4,!0)*Lh;return this.pos+=8,t}readSFixed64(){const t=this.dataView.getUint32(this.pos,!0)+this.dataView.getInt32(this.pos+4,!0)*Lh;return this.pos+=8,t}readFloat(){const t=this.dataView.getFloat32(this.pos,!0);return this.pos+=4,t}readDouble(){const t=this.dataView.getFloat64(this.pos,!0);return this.pos+=8,t}readVarint(t){const e=this.buf;let n,r;return r=e[this.pos++],n=127&r,r<128?n:(r=e[this.pos++],n|=(127&r)<<7,r<128?n:(r=e[this.pos++],n|=(127&r)<<14,r<128?n:(r=e[this.pos++],n|=(127&r)<<21,r<128?n:(r=e[this.pos],n|=(15&r)<<28,function(t,e,n){const r=n.buf;let i,s;if(s=r[n.pos++],i=(112&s)>>4,s<128)return Nh(t,i,e);if(s=r[n.pos++],i|=(127&s)<<3,s<128)return Nh(t,i,e);if(s=r[n.pos++],i|=(127&s)<<10,s<128)return Nh(t,i,e);if(s=r[n.pos++],i|=(127&s)<<17,s<128)return Nh(t,i,e);if(s=r[n.pos++],i|=(127&s)<<24,s<128)return Nh(t,i,e);if(s=r[n.pos++],i|=(1&s)<<31,s<128)return Nh(t,i,e);throw new Error("Expected varint not more than 10 bytes")}(n,t,this)))))}readVarint64(){return this.readVarint(!0)}readSVarint(){const t=this.readVarint();return t%2==1?(t+1)/-2:t/2}readBoolean(){return Boolean(this.readVarint())}readString(){const t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&$h?$h.decode(this.buf.subarray(e,t)):function(t,e,n){let r="",i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+u>n)break;1===u?e<128&&(l=e):2===u?(s=t[i+1],128==(192&s)&&(l=(31&e)<<6|63&s,l<=127&&(l=null))):3===u?(s=t[i+1],o=t[i+2],128==(192&s)&&128==(192&o)&&(l=(15&e)<<12|(63&s)<<6|63&o,(l<=2047||l>=55296&&l<=57343)&&(l=null))):4===u&&(s=t[i+1],o=t[i+2],a=t[i+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&e)<<18|(63&s)<<12|(63&o)<<6|63&a,(l<=65535||l>=1114112)&&(l=null))),null===l?(l=65533,u=1):l>65535&&(l-=65536,r+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),r+=String.fromCharCode(l),i+=u;}return r}(this.buf,e,t)}readBytes(){const t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e}readPackedVarint(t=[],e){const n=this.readPackedEnd();for(;this.pos127;);else if(2===e)this.pos=this.readVarint()+this.pos;else if(5===e)this.pos+=4;else {if(1!==e)throw new Error(`Unimplemented type: ${e}`);this.pos+=8;}}writeTag(t,e){this.writeVarint(t<<3|e);}realloc(t){let e=this.length||16;for(;e268435455||t<0?function(t,e){let n,r;if(t>=0?(n=t%4294967296|0,r=t/4294967296|0):(n=~(-t%4294967296),r=~(-t/4294967296),4294967295^n?n=n+1|0:(n=0,r=r+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,n){n.buf[n.pos++]=127&t|128,t>>>=7,n.buf[n.pos++]=127&t|128,t>>>=7,n.buf[n.pos++]=127&t|128,t>>>=7,n.buf[n.pos++]=127&t|128,n.buf[n.pos]=127&(t>>>=7);}(n,0,e),function(t,e){const n=(7&t)<<4;e.buf[e.pos++]|=n|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))));}(r,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));}writeSVarint(t){this.writeVarint(t<0?2*-t-1:2*t);}writeBoolean(t){this.writeVarint(+t);}writeString(t){t=String(t),this.realloc(4*t.length),this.pos++;const e=this.pos;this.pos=function(t,e,n){for(let r,i,s=0;s55295&&r<57344){if(!i){r>56319||s+1===e.length?(t[n++]=239,t[n++]=191,t[n++]=189):i=r;continue}if(r<56320){t[n++]=239,t[n++]=191,t[n++]=189,i=r;continue}r=i-55296<<10|r-56320|65536,i=null;}else i&&(t[n++]=239,t[n++]=191,t[n++]=189,i=null);r<128?t[n++]=r:(r<2048?t[n++]=r>>6|192:(r<65536?t[n++]=r>>12|224:(t[n++]=r>>18|240,t[n++]=r>>12&63|128),t[n++]=r>>6&63|128),t[n++]=63&r|128);}return n}(this.buf,t,this.pos);const n=this.pos-e;n>=128&&Uh(e,n,this),this.pos=e-1,this.writeVarint(n),this.pos+=n;}writeFloat(t){this.realloc(4),this.dataView.setFloat32(this.pos,t,!0),this.pos+=4;}writeDouble(t){this.realloc(8),this.dataView.setFloat64(this.pos,t,!0),this.pos+=8;}writeBytes(t){const e=t.length;this.writeVarint(e),this.realloc(e);for(let n=0;n=128&&Uh(n,r,this),this.pos=n-1,this.writeVarint(r),this.pos+=r;}writeMessage(t,e,n){this.writeTag(t,2),this.writeRawMessage(e,n);}writePackedVarint(t,e){e.length&&this.writeMessage(t,jh,e);}writePackedSVarint(t,e){e.length&&this.writeMessage(t,qh,e);}writePackedBoolean(t,e){e.length&&this.writeMessage(t,Yh,e);}writePackedFloat(t,e){e.length&&this.writeMessage(t,Gh,e);}writePackedDouble(t,e){e.length&&this.writeMessage(t,Xh,e);}writePackedFixed32(t,e){e.length&&this.writeMessage(t,Zh,e);}writePackedSFixed32(t,e){e.length&&this.writeMessage(t,Hh,e);}writePackedFixed64(t,e){e.length&&this.writeMessage(t,Wh,e);}writePackedSFixed64(t,e){e.length&&this.writeMessage(t,Kh,e);}writeBytesField(t,e){this.writeTag(t,2),this.writeBytes(e);}writeFixed32Field(t,e){this.writeTag(t,5),this.writeFixed32(e);}writeSFixed32Field(t,e){this.writeTag(t,5),this.writeSFixed32(e);}writeFixed64Field(t,e){this.writeTag(t,1),this.writeFixed64(e);}writeSFixed64Field(t,e){this.writeTag(t,1),this.writeSFixed64(e);}writeVarintField(t,e){this.writeTag(t,0),this.writeVarint(e);}writeSVarintField(t,e){this.writeTag(t,0),this.writeSVarint(e);}writeStringField(t,e){this.writeTag(t,2),this.writeString(e);}writeFloatField(t,e){this.writeTag(t,5),this.writeFloat(e);}writeDoubleField(t,e){this.writeTag(t,1),this.writeDouble(e);}writeBooleanField(t,e){this.writeVarintField(t,+e);}}function Nh(t,e,n){return n?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function Uh(t,e,n){const r=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));n.realloc(r);for(let e=n.pos-1;e>=t;e--)n.buf[e+r]=n.buf[e];}function jh(t,e){for(let n=0;ne.h-t.h));const r=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),n),h:1/0}];let i=0,s=0;for(const e of t)for(let t=r.length-1;t>=0;t--){const n=r[t];if(!(e.w>n.w||e.h>n.h)){if(e.x=n.x,e.y=n.y,s=Math.max(s,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===n.w&&e.h===n.h){const e=r.pop();e&&tm.toCodeUnitIndex(t)));const t=v(m.toString(),x);for(const e of t){const t=[...e].map((()=>0));g.push(new Vh(e,m.sections,t));}}else if(b){g=[],x=x.map((t=>m.toCodeUnitIndex(t)));let t=0;const e=[];for(const n of m.text)e.push(...Array(n.length).fill(m.sectionIndex[t])),t++;const n=b(m.text,e,x);for(const t of n){const e=[];let n="";for(const r of t[0])e.push(t[1][n.length]),n+=r;g.push(new Vh(t[0],m.sections,e));}}else g=function(t,e){const n=[];let r=0;for(const i of e)n.push(t.substring(r,i)),r=i;return ru){const t=Math.ceil(s/u);i*=t/o,o=t;}return {x1:r,y1:i,x2:r+s,y2:i+o}}function yp(t,e,n,r,i,s){const o=t.image;let a;if(o.content){const t=o.content,e=o.pixelRatio||1;a=[t[0]/e,t[1]/e,o.displaySize[0]-t[2]/e,o.displaySize[1]-t[3]/e];}const l=e.left*s,u=e.right*s;let c,h,p,f;"width"===n||"both"===n?(f=i[0]+l-r[3],h=i[0]+u+r[1]):(f=i[0]+(l+u-o.displaySize[0])/2,h=f+o.displaySize[0]);const d=e.top*s,y=e.bottom*s;return "height"===n||"both"===n?(c=i[1]+d-r[0],p=i[1]+y+r[2]):(c=i[1]+(d+y-o.displaySize[1])/2,p=c+o.displaySize[1]),{image:o,top:c,right:h,bottom:p,left:f,collisionPadding:a}}ds("ImagePosition",np),ds("ImageAtlas",rp),t.ax=void 0,(ip=t.ax||(t.ax={}))[ip.none=0]="none",ip[ip.horizontal=1]="horizontal",ip[ip.vertical=2]="vertical",ip[ip.horizontalOnly=3]="horizontalOnly";const mp=128,gp=32640;function xp(t,e){const{expression:n}=e;if("constant"===n.kind)return {kind:"constant",layoutSize:n.evaluate(new Cs(t+1))};if("source"===n.kind)return {kind:"source"};{const{zoomStops:e,interpolationType:r}=n;let i=0;for(;it.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasDependencies=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[];const n=this.layers[0]._unevaluatedLayout._values;this.textSizeData=xp(this.zoom,n["text-size"]),this.iconSizeData=xp(this.zoom,n["icon-size"]);const r=this.layers[0].layout,i=r.get("symbol-sort-key"),s=r.get("symbol-z-order");this.canOverlap="never"!==vp(r,"text-overlap","text-allow-overlap")||"never"!==vp(r,"icon-overlap","icon-allow-overlap")||r.get("text-ignore-placement")||r.get("icon-ignore-placement"),this.sortFeaturesByKey="viewport-y"!==s&&!i.isConstant(),this.sortFeaturesByY=("viewport-y"===s||"auto"===s&&!this.sortFeaturesByKey)&&this.canOverlap,"point"===r.get("symbol-placement")&&(this.writingModes=r.get("text-writing-mode").map((e=>t.ax[e]))),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=e.sourceID;}createArrays(){this.text=new Ap(new $a(this.layers,this.zoom,(t=>t.startsWith("text")))),this.icon=new Ap(new $a(this.layers,this.zoom,(t=>t.startsWith("icon")))),this.glyphOffsetArray=new Ro,this.lineVertexArray=new No,this.symbolInstances=new $o,this.textAnchorOffsets=new jo;}calculateGlyphDependencies(t,e,n,r,i){for(const s of t)if(e[s.codePointAt(0)]=!0,(n||r)&&i){const t=Eh[s];t&&(e[t.codePointAt(0)]=!0);}}populate(e,n,r){var i;const s=this.layers[0],o=s.layout,a=o.get("text-font"),l=o.get("text-field"),u=o.get("icon-image"),c=("constant"!==l.value.kind||l.value.value instanceof ze&&!l.value.value.isEmpty()||l.value.value.toString().length>0)&&("constant"!==a.value.kind||a.value.value.length>0),h="constant"!==u.value.kind||!!u.value.value||Object.keys(u.parameters).length>0,p=o.get("symbol-sort-key");if(this.features=[],!c&&!h)return;const f=n.iconDependencies,d=n.glyphDependencies,y=n.availableImages,m=new Cs(this.zoom);for(const{feature:n,id:l,index:u,sourceLayerIndex:g}of e){const e=s._featureFilter.needGeometry,x=Ga(n,e);if(!s._featureFilter.filter(m,x,r))continue;let v,b;if(e||(x.geometry=qa(n)),c){const t=s.getValueAndResolveTokens("text-field",x,r,y),e=ze.factory(t);this.hasRTLText||(this.hasRTLText=Sp(e)),(!this.hasRTLText||"unavailable"===Bs.getRTLTextPluginStatus()||this.hasRTLText&&Bs.isParsed())&&(v=kh(e,s,x));}if(h){const t=s.getValueAndResolveTokens("icon-image",x,r,y);b=t instanceof Re?t:Re.fromString(t);}if(!v&&!b)continue;const w=this.sortFeaturesByKey?p.evaluate(x,{},r):void 0;if(this.features.push({id:l,text:v,icon:b,index:u,sourceLayerIndex:g,geometry:x.geometry,properties:n.properties,type:Cu.types[n.type],sortKey:w}),b&&(f[b.name]=!0),v){const e=a.evaluate(x,{},r).join(","),n="viewport"!==o.get("text-rotation-alignment")&&"point"!==o.get("symbol-placement");this.allowVerticalPlacement=null===(i=this.writingModes)||void 0===i?void 0:i.includes(t.ax.vertical);for(const t of v.sections)if(t.image)f[t.image.name]=!0;else {const r=As(v.toString()),i=t.fontStack||e;d[i]||(d[i]={}),this.calculateGlyphDependencies(t.text,d[i],n,this.allowVerticalPlacement,r);}}}"line"===o.get("symbol-placement")&&(this.features=function(t){const e={},n={},r=[];let i=0;function s(e){r.push(t[e]),i++;}function o(t,e,i){const s=n[t];return delete n[t],n[e]=s,r[s].geometry[0].pop(),r[s].geometry[0]=r[s].geometry[0].concat(i[0]),s}function a(t,n,i){const s=e[n];return delete e[n],e[t]=s,r[s].geometry[0].shift(),r[s].geometry[0]=i[0].concat(r[s].geometry[0]),s}function l(t,e,n){const r=n?e[0][e[0].length-1]:e[0][0];return `${t}:${r.x}:${r.y}`}for(let u=0;ut.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey));}update(t,e,n){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,{imagePositions:n}),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,{imagePositions:n}));}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();}addToLineVertexArray(t,e){const n=this.lineVertexArray.length;if(void 0!==t.segment){let n=t.dist(e[t.segment+1]),r=t.dist(e[t.segment]);const i={};for(let r=t.segment+1;r=0;n--)i[n]={x:e[n].x,y:e[n].y,tileUnitDistanceFromAnchor:r},n>0&&(r+=e[n-1].dist(e[n]));for(let t=0;t0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){const n=t.placedSymbolArray.get(e),r=n.vertexStartIndex+4*n.numGlyphs;for(let e=n.vertexStartIndex;er[t]-r[e]||i[e]-i[t])),s}addToSortKeyRanges(t,e){const n=this.sortKeyRanges[this.sortKeyRanges.length-1];(null==n?void 0:n.sortKey)===e?n.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const t of this.symbolInstanceIndexes){const e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex);const n=[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex];for(let t=0;t=0&&n.indexOf(e)===t&&this.addIndicesForPlacedSymbol(this.text,e);}e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}}}let Ip,Ep;ds("SymbolBucket",kp,{omit:["layers","collisionBoxArray","features","compareText"]}),kp.MAX_GLYPHS=65535,kp.addDynamicAttributes=_p;var Tp={get paint(){return Ep=Ep||new Ks({"icon-opacity":new Ys(wt.paint_symbol["icon-opacity"]),"icon-color":new Ys(wt.paint_symbol["icon-color"]),"icon-halo-color":new Ys(wt.paint_symbol["icon-halo-color"]),"icon-halo-width":new Ys(wt.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Ys(wt.paint_symbol["icon-halo-blur"]),"icon-translate":new Xs(wt.paint_symbol["icon-translate"]),"icon-translate-anchor":new Xs(wt.paint_symbol["icon-translate-anchor"]),"text-opacity":new Ys(wt.paint_symbol["text-opacity"]),"text-color":new Ys(wt.paint_symbol["text-color"],{runtimeType:Nt,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),"text-halo-color":new Ys(wt.paint_symbol["text-halo-color"]),"text-halo-width":new Ys(wt.paint_symbol["text-halo-width"]),"text-halo-blur":new Ys(wt.paint_symbol["text-halo-blur"]),"text-translate":new Xs(wt.paint_symbol["text-translate"]),"text-translate-anchor":new Xs(wt.paint_symbol["text-translate-anchor"])})},get layout(){return Ip=Ip||new Ks({"symbol-placement":new Xs(wt.layout_symbol["symbol-placement"]),"symbol-spacing":new Xs(wt.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Xs(wt.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Ys(wt.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Xs(wt.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Xs(wt.layout_symbol["icon-allow-overlap"]),"icon-overlap":new Xs(wt.layout_symbol["icon-overlap"]),"icon-ignore-placement":new Xs(wt.layout_symbol["icon-ignore-placement"]),"icon-optional":new Xs(wt.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Xs(wt.layout_symbol["icon-rotation-alignment"]),"icon-size":new Ys(wt.layout_symbol["icon-size"]),"icon-text-fit":new Xs(wt.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Xs(wt.layout_symbol["icon-text-fit-padding"]),"icon-image":new Ys(wt.layout_symbol["icon-image"]),"icon-rotate":new Ys(wt.layout_symbol["icon-rotate"]),"icon-padding":new Ys(wt.layout_symbol["icon-padding"]),"icon-keep-upright":new Xs(wt.layout_symbol["icon-keep-upright"]),"icon-offset":new Ys(wt.layout_symbol["icon-offset"]),"icon-anchor":new Ys(wt.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Xs(wt.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Xs(wt.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Xs(wt.layout_symbol["text-rotation-alignment"]),"text-field":new Ys(wt.layout_symbol["text-field"]),"text-font":new Ys(wt.layout_symbol["text-font"]),"text-size":new Ys(wt.layout_symbol["text-size"]),"text-max-width":new Ys(wt.layout_symbol["text-max-width"]),"text-line-height":new Xs(wt.layout_symbol["text-line-height"]),"text-letter-spacing":new Ys(wt.layout_symbol["text-letter-spacing"]),"text-justify":new Ys(wt.layout_symbol["text-justify"]),"text-radial-offset":new Ys(wt.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Xs(wt.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new Ys(wt.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new Ys(wt.layout_symbol["text-anchor"]),"text-max-angle":new Xs(wt.layout_symbol["text-max-angle"]),"text-writing-mode":new Xs(wt.layout_symbol["text-writing-mode"]),"text-rotate":new Ys(wt.layout_symbol["text-rotate"]),"text-padding":new Xs(wt.layout_symbol["text-padding"]),"text-keep-upright":new Xs(wt.layout_symbol["text-keep-upright"]),"text-transform":new Ys(wt.layout_symbol["text-transform"]),"text-offset":new Ys(wt.layout_symbol["text-offset"]),"text-allow-overlap":new Xs(wt.layout_symbol["text-allow-overlap"]),"text-overlap":new Xs(wt.layout_symbol["text-overlap"]),"text-ignore-placement":new Xs(wt.layout_symbol["text-ignore-placement"]),"text-optional":new Xs(wt.layout_symbol["text-optional"])})}};class Fp{constructor(t){if(void 0===t.property.overrides)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=t.property.overrides?t.property.overrides.runtimeType:Lt,this.defaultValue=t;}evaluate(t){if(t.formattedSection){const e=this.defaultValue.property.overrides;if(null==e?void 0:e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);}outputDefined(){return !1}serialize(){return null}}ds("FormatSectionOverride",Fp,{omit:["defaultValue"]});class Pp extends to{constructor(t,e){super(t,Tp,e);}recalculate(t,e){if(super.recalculate(t,e),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]="map"===this.layout.get("text-rotation-alignment")?"map":"viewport"),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){const t=this.layout.get("text-writing-mode");if(t){const e=[];for(const n of t)e.includes(n)||e.push(n);this.layout._values["text-writing-mode"]=e;}else this.layout._values["text-writing-mode"]=["horizontal"];}this._setPaintOverrides();}getValueAndResolveTokens(t,e,n,r){const i=this.layout.get(t).evaluate(e,{},n,r),s=this._unevaluatedLayout._values[t];return s.isDataDriven()||ii(s.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,((e,n)=>t&&n in t?String(t[n]):""))}(e.properties,i)}createBucket(t){return new kp(t)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const t of Tp.paint.overridableProperties){if(!Pp.hasPaintOverride(this.layout,t))continue;const e=this.paint.get(t),n=new Fp(e),r=new ri(n,e.property.specification);let i=null;i="constant"===e.value.kind||"source"===e.value.kind?new oi("source",r):new ai("composite",r,e.value.zoomStops),this.paint._values[t]=new qs(e.property,i,e.parameters);}}_handleOverridablePaintPropertyUpdate(t,e,n){return !(!this.layout||e.isDataDriven()||n.isDataDriven())&&Pp.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){const n=t.get("text-field"),r=Tp.paint.properties[e];let i=!1;const s=t=>{var e;for(const n of t)if(null===(e=r.overrides)||void 0===e?void 0:e.hasOverride(n))return void(i=!0)};if("constant"===n.value.kind&&n.value.value instanceof ze)s(n.value.value.sections);else if("source"===n.value.kind||"composite"===n.value.kind){const t=e=>{i||(e instanceof Xe&&qe(e.value)===Xt?s(e.value.sections):e instanceof Pn?s(e.sections):e.eachChild(t));},e=n.value;e._styleExpression&&t(e._styleExpression.expression);}return i}}let Dp;var zp={get paint(){return Dp=Dp||new Ks({"background-color":new Xs(wt.paint_background["background-color"]),"background-pattern":new Hs(wt.paint_background["background-pattern"]),"background-opacity":new Xs(wt.paint_background["background-opacity"])})}};class Bp extends to{constructor(t,e){super(t,zp,e);}}class Cp extends to{constructor(t,e){super(t,{},e),this.onAdd=t=>{this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},this.onRemove=t=>{this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);},this.implementation=t;}is3D(){return "3d"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return !1}serialize(){throw new Error("Custom layers cannot be serialized")}}class Vp{constructor(t){this._methodToThrottle=t,this._triggered=!1,this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle();};}trigger(){var t;this._triggered||(this._triggered=!0,null===(t=this._channel)||void 0===t||t.port1.postMessage(!0));}remove(){delete this._channel,this._methodToThrottle=()=>{};}}const Lp={once:!0},Op=6371008.8;class $p{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat object: (${t}, ${e})`);if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new $p(O(this.lng,-180,180),this.lat)}toArray(){return [this.lng,this.lat]}toString(){return `LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const e=Math.PI/180,n=this.lat*e,r=t.lat*e,i=Math.sin(n)*Math.sin(r)+Math.cos(n)*Math.cos(r)*Math.cos((t.lng-this.lng)*e);return Op*Math.acos(Math.min(i,1))}static convert(t){if(t instanceof $p)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new $p(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new $p(Number("lng"in t?t.lng:t.lon),Number(t.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}const Rp=2*Math.PI*Op;function Np(t){return Rp*Math.cos(t*Math.PI/180)}function Up(t){return (180+t)/360}function jp(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function qp(t,e){return t/Np(e)}function Gp(t){return 360*t-180}function Xp(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}function Yp(t,e){return t*Np(Xp(e))}class Zp{constructor(t,e,n=0){this.x=+t,this.y=+e,this.z=+n;}static fromLngLat(t,e=0){const n=$p.convert(t);return new Zp(Up(n.lng),jp(n.lat),qp(e,n.lat))}toLngLat(){return new $p(Gp(this.x),Xp(this.y))}toAltitude(){return Yp(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Rp*(t=Xp(this.y),1/Math.cos(t*Math.PI/180));var t;}}function Hp(t,e,n){var r=2*Math.PI*6378137/256/Math.pow(2,n);return [t*r-2*Math.PI*6378137/2,e*r-2*Math.PI*6378137/2]}class Wp{constructor(t,e,n){if(!function(t,e,n){return !(t<0||t>25||n<0||n>=Math.pow(2,t)||e<0||e>=Math.pow(2,t))}(t,e,n))throw new Error(`x=${e}, y=${n}, z=${t} outside of bounds. 0<=x<${Math.pow(2,t)}, 0<=y<${Math.pow(2,t)} 0<=z<=25 `);this.z=t,this.x=e,this.y=n,this.key=Qp(0,t,t,e,n);}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e,n){const r=(s=this.y,o=this.z,a=Hp(256*(i=this.x),256*(s=Math.pow(2,o)-s-1),o),l=Hp(256*(i+1),256*(s+1),o),a[0]+","+a[1]+","+l[0]+","+l[1]);var i,s,o,a,l;const u=function(t,e,n){let r="";for(let i=t;i>0;i--){const t=1<1?"@2x":"").replace(/{quadkey}/g,u).replace(/{bbox-epsg-3857}/g,r)}isChildOf(t){const e=this.z-t.z;return e>0&&t.x===this.x>>e&&t.y===this.y>>e}getTilePoint(t){const e=Math.pow(2,this.z);return new n((t.x*e-this.x)*T,(t.y*e-this.y)*T)}toString(){return `${this.z}/${this.x}/${this.y}`}}class Kp{constructor(t,e){this.wrap=t,this.canonical=e,this.key=Qp(t,e.z,e.z,e.x,e.y);}}class Jp{constructor(t,e,n,r,i){if(this.terrainRttPosMatrix32f=null,t= z; overscaledZ = ${t}; z = ${n}`);this.overscaledZ=t,this.wrap=e,this.canonical=new Wp(n,+r,+i),this.key=Qp(e,t,n,r,i);}clone(){return new Jp(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const e=this.canonical.z-t;return t>this.canonical.z?new Jp(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Jp(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}isOverscaled(){return this.overscaledZ>this.canonical.z}calculateScaledKey(t,e){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const n=this.canonical.z-t;return t>this.canonical.z?Qp(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):Qp(this.wrap*+e,t,t,this.canonical.x>>n,this.canonical.y>>n)}isChildOf(t){if(t.wrap!==this.wrap)return !1;if(this.overscaledZ-t.overscaledZ<=0)return !1;if(0===t.overscaledZ)return this.overscaledZ>0;const e=this.canonical.z-t.canonical.z;return !(e<0)&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return [new Jp(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const e=this.canonical.z+1,n=2*this.canonical.x,r=2*this.canonical.y;return [new Jp(e,this.wrap,e,n,r),new Jp(e,this.wrap,e,n+1,r),new Jp(e,this.wrap,e,n,r+1),new Jp(e,this.wrap,e,n+1,r+1)]}isLessThan(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=0&&t=0&&e=l)return null;let c=this.canonical.x+r,h=this.wrap;return c<0?(h-=Math.ceil(-c/l),c=(c%l+l)%l):c>=l&&(h+=Math.floor(c/l),c%=l),{tileID:new Jp(this.overscaledZ,h,a,c,u),x:s,y:o}}}function Qp(t,e,n,r,i){(t*=2)<0&&(t=-1*t-1);const s=1<this.maxX||this.minY>this.maxY)&&(this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0),this}shrinkBy(t){return this.expandBy(-t)}map(t){const e=new tf;return e.extend(t(new n(this.minX,this.minY))),e.extend(t(new n(this.maxX,this.minY))),e.extend(t(new n(this.minX,this.maxY))),e.extend(t(new n(this.maxX,this.maxY))),e}static fromPoints(t){const e=new tf;for(const n of t)e.extend(n);return e}contains(t){return t.x>=this.minX&&t.x<=this.maxX&&t.y>=this.minY&&t.y<=this.maxY}empty(){return this.minX>this.maxX}width(){return this.maxX-this.minX}height(){return this.maxY-this.minY}covers(t){return !this.empty()&&!t.empty()&&t.minX>=this.minX&&t.maxX<=this.maxX&&t.minY>=this.minY&&t.maxY<=this.maxY}intersects(t){return !this.empty()&&!t.empty()&&t.minX<=this.maxX&&t.maxX>=this.minX&&t.minY<=this.maxY&&t.maxY>=this.minY}}class ef{constructor(t){this._stringToNumber={},this._numberToString=[];for(let e=0;e=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${t} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[t]}}class nf{constructor(t,e,n,r,i){this.type="Feature",this._vectorTileFeature=t,this._x=n,this._y=r,this._z=e,this.properties=t.properties,this.id=i;}projectPoint(t,e,n,r){return [360*(t.x+e)/r-180,360/Math.PI*Math.atan(Math.exp((1-2*(t.y+n)/r)*Math.PI))-90]}projectLine(t,e,n,r){return t.map((t=>this.projectPoint(t,e,n,r)))}get geometry(){if(this._geometry)return this._geometry;const t=this._vectorTileFeature,e=t.extent*Math.pow(2,this._z),n=t.extent*this._x,r=t.extent*this._y,i=t.loadGeometry();switch(t.type){case 1:{const t=[];for(const e of i)t.push(e[0]);const s=this.projectLine(t,n,r,e);this._geometry=1===t.length?{type:"Point",coordinates:s[0]}:{type:"MultiPoint",coordinates:s};break}case 2:{const t=i.map((t=>this.projectLine(t,n,r,e)));this._geometry=1===t.length?{type:"LineString",coordinates:t[0]}:{type:"MultiLineString",coordinates:t};break}case 3:{const t=Lu(i),s=[];for(const i of t)s.push(i.map((t=>this.projectLine(t,n,r,e))));this._geometry=1===s.length?{type:"Polygon",coordinates:s[0]}:{type:"MultiPolygon",coordinates:s};break}default:throw new Error(`unknown feature type: ${t.type}`)}return this._geometry}set geometry(t){this._geometry=t;}toJSON(){const t={geometry:this.geometry};for(const e in this)"_geometry"!==e&&"_vectorTileFeature"!==e&&"_x"!==e&&"_y"!==e&&"_z"!==e&&(t[e]=this[e]);return t}}class rf{constructor(t,e,n){this._name=t,this.dataBuffer=e,"number"==typeof n?this._size=n:(this.nullabilityBuffer=n,this._size=n.size());}getValue(t){return this.nullabilityBuffer&&!this.nullabilityBuffer.get(t)?null:this.getValueFromBuffer(t)}has(t){return this.nullabilityBuffer?.get(t)||!this.nullabilityBuffer}get name(){return this._name}get size(){return this._size}}class sf extends rf{}class of extends sf{getValueFromBuffer(t){return this.dataBuffer[t]}}class af extends sf{getValueFromBuffer(t){return this.dataBuffer[t]}}class lf extends rf{constructor(t,e,n,r){super(t,e,r),this.delta=n;}}class uf extends lf{constructor(t,e,n,r){super(t,Int32Array.of(e),n,r);}getValueFromBuffer(t){return this.dataBuffer[0]+t*this.delta}}class cf extends rf{constructor(t,e,n,r){super(t,r?Int32Array.of(e):Uint32Array.of(e),n);}getValueFromBuffer(t){return this.dataBuffer[0]}}class hf{constructor(t,e,n,r,i=4096){this._name=t,this._geometryVector=e,this._idVector=n,this._propertyVectors=r,this._extent=i;}get name(){return this._name}get idVector(){return this._idVector}get geometryVector(){return this._geometryVector}get propertyVectors(){return this._propertyVectors}getPropertyVector(t){return this.propertyVectorsMap||(this.propertyVectorsMap=new Map(this._propertyVectors.map((t=>[t.name,t])))),this.propertyVectorsMap.get(t)}get numFeatures(){return this.geometryVector.numGeometries}get extent(){return this._extent}getFeatures(){const t=[],e=this.geometryVector.getGeometries();for(let n=0;n>>32-t;const mf=yf,gf=256;function xf(t,e){return t-t%e}function vf(t){const e=t>>>0;return ((255&e)<<24|(65280&e)<<8|e>>>8&65280|e>>>24&255)>>>0}const bf=function(){if(!Number.isFinite(65536))return 65536;const t=xf(Math.floor(65536),gf);return 0===t?gf:t}(),wf=3*bf/gf+bf|0;function _f(){const t=new Uint8Array(wf);return {dataToBePacked:new Array(33),dataPointers:new Int32Array(33),byteContainer:t,byteContainerI32:new Int32Array(t.buffer,t.byteOffset,t.byteLength>>>2),exceptionSizes:new Int32Array(33)}}function Sf(t,e,n,r,i){switch(i){case 1:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0;n[i++]=e>>>0&1,n[i++]=e>>>1&1,n[i++]=e>>>2&1,n[i++]=e>>>3&1,n[i++]=e>>>4&1,n[i++]=e>>>5&1,n[i++]=e>>>6&1,n[i++]=e>>>7&1,n[i++]=e>>>8&1,n[i++]=e>>>9&1,n[i++]=e>>>10&1,n[i++]=e>>>11&1,n[i++]=e>>>12&1,n[i++]=e>>>13&1,n[i++]=e>>>14&1,n[i++]=e>>>15&1,n[i++]=e>>>16&1,n[i++]=e>>>17&1,n[i++]=e>>>18&1,n[i++]=e>>>19&1,n[i++]=e>>>20&1,n[i++]=e>>>21&1,n[i++]=e>>>22&1,n[i++]=e>>>23&1,n[i++]=e>>>24&1,n[i++]=e>>>25&1,n[i++]=e>>>26&1,n[i++]=e>>>27&1,n[i++]=e>>>28&1,n[i++]=e>>>29&1,n[i++]=e>>>30&1,n[i++]=e>>>31&1;}}(t,e,n,r);break;case 2:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0;n[i++]=e>>>0&3,n[i++]=e>>>2&3,n[i++]=e>>>4&3,n[i++]=e>>>6&3,n[i++]=e>>>8&3,n[i++]=e>>>10&3,n[i++]=e>>>12&3,n[i++]=e>>>14&3,n[i++]=e>>>16&3,n[i++]=e>>>18&3,n[i++]=e>>>20&3,n[i++]=e>>>22&3,n[i++]=e>>>24&3,n[i++]=e>>>26&3,n[i++]=e>>>28&3,n[i++]=e>>>30&3,n[i++]=r>>>0&3,n[i++]=r>>>2&3,n[i++]=r>>>4&3,n[i++]=r>>>6&3,n[i++]=r>>>8&3,n[i++]=r>>>10&3,n[i++]=r>>>12&3,n[i++]=r>>>14&3,n[i++]=r>>>16&3,n[i++]=r>>>18&3,n[i++]=r>>>20&3,n[i++]=r>>>22&3,n[i++]=r>>>24&3,n[i++]=r>>>26&3,n[i++]=r>>>28&3,n[i++]=r>>>30&3;}}(t,e,n,r);break;case 3:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0;n[i++]=e>>>0&7,n[i++]=e>>>3&7,n[i++]=e>>>6&7,n[i++]=e>>>9&7,n[i++]=e>>>12&7,n[i++]=e>>>15&7,n[i++]=e>>>18&7,n[i++]=e>>>21&7,n[i++]=e>>>24&7,n[i++]=e>>>27&7,n[i++]=7&(e>>>30|(1&r)<<2),n[i++]=r>>>1&7,n[i++]=r>>>4&7,n[i++]=r>>>7&7,n[i++]=r>>>10&7,n[i++]=r>>>13&7,n[i++]=r>>>16&7,n[i++]=r>>>19&7,n[i++]=r>>>22&7,n[i++]=r>>>25&7,n[i++]=r>>>28&7,n[i++]=7&(r>>>31|(3&o)<<1),n[i++]=o>>>2&7,n[i++]=o>>>5&7,n[i++]=o>>>8&7,n[i++]=o>>>11&7,n[i++]=o>>>14&7,n[i++]=o>>>17&7,n[i++]=o>>>20&7,n[i++]=o>>>23&7,n[i++]=o>>>26&7,n[i++]=o>>>29&7;}}(t,e,n,r);break;case 4:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0,a=t[s++]>>>0;n[i++]=e>>>0&15,n[i++]=e>>>4&15,n[i++]=e>>>8&15,n[i++]=e>>>12&15,n[i++]=e>>>16&15,n[i++]=e>>>20&15,n[i++]=e>>>24&15,n[i++]=e>>>28&15,n[i++]=r>>>0&15,n[i++]=r>>>4&15,n[i++]=r>>>8&15,n[i++]=r>>>12&15,n[i++]=r>>>16&15,n[i++]=r>>>20&15,n[i++]=r>>>24&15,n[i++]=r>>>28&15,n[i++]=o>>>0&15,n[i++]=o>>>4&15,n[i++]=o>>>8&15,n[i++]=o>>>12&15,n[i++]=o>>>16&15,n[i++]=o>>>20&15,n[i++]=o>>>24&15,n[i++]=o>>>28&15,n[i++]=a>>>0&15,n[i++]=a>>>4&15,n[i++]=a>>>8&15,n[i++]=a>>>12&15,n[i++]=a>>>16&15,n[i++]=a>>>20&15,n[i++]=a>>>24&15,n[i++]=a>>>28&15;}}(t,e,n,r);break;case 5:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0,a=t[s++]>>>0,l=t[s++]>>>0;n[i++]=e>>>0&31,n[i++]=e>>>5&31,n[i++]=e>>>10&31,n[i++]=e>>>15&31,n[i++]=e>>>20&31,n[i++]=e>>>25&31,n[i++]=31&(e>>>30|(7&r)<<2),n[i++]=r>>>3&31,n[i++]=r>>>8&31,n[i++]=r>>>13&31,n[i++]=r>>>18&31,n[i++]=r>>>23&31,n[i++]=31&(r>>>28|(1&o)<<4),n[i++]=o>>>1&31,n[i++]=o>>>6&31,n[i++]=o>>>11&31,n[i++]=o>>>16&31,n[i++]=o>>>21&31,n[i++]=o>>>26&31,n[i++]=31&(o>>>31|(15&a)<<1),n[i++]=a>>>4&31,n[i++]=a>>>9&31,n[i++]=a>>>14&31,n[i++]=a>>>19&31,n[i++]=a>>>24&31,n[i++]=31&(a>>>29|(3&l)<<3),n[i++]=l>>>2&31,n[i++]=l>>>7&31,n[i++]=l>>>12&31,n[i++]=l>>>17&31,n[i++]=l>>>22&31,n[i++]=l>>>27&31;}}(t,e,n,r);break;case 6:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0,a=t[s++]>>>0,l=t[s++]>>>0,u=t[s++]>>>0;n[i++]=e>>>0&63,n[i++]=e>>>6&63,n[i++]=e>>>12&63,n[i++]=e>>>18&63,n[i++]=e>>>24&63,n[i++]=63&(e>>>30|(15&r)<<2),n[i++]=r>>>4&63,n[i++]=r>>>10&63,n[i++]=r>>>16&63,n[i++]=r>>>22&63,n[i++]=63&(r>>>28|(3&o)<<4),n[i++]=o>>>2&63,n[i++]=o>>>8&63,n[i++]=o>>>14&63,n[i++]=o>>>20&63,n[i++]=o>>>26&63,n[i++]=a>>>0&63,n[i++]=a>>>6&63,n[i++]=a>>>12&63,n[i++]=a>>>18&63,n[i++]=a>>>24&63,n[i++]=63&(a>>>30|(15&l)<<2),n[i++]=l>>>4&63,n[i++]=l>>>10&63,n[i++]=l>>>16&63,n[i++]=l>>>22&63,n[i++]=63&(l>>>28|(3&u)<<4),n[i++]=u>>>2&63,n[i++]=u>>>8&63,n[i++]=u>>>14&63,n[i++]=u>>>20&63,n[i++]=u>>>26&63;}}(t,e,n,r);break;case 7:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0,a=t[s++]>>>0,l=t[s++]>>>0,u=t[s++]>>>0,c=t[s++]>>>0;n[i++]=e>>>0&127,n[i++]=e>>>7&127,n[i++]=e>>>14&127,n[i++]=e>>>21&127,n[i++]=127&(e>>>28|(7&r)<<4),n[i++]=r>>>3&127,n[i++]=r>>>10&127,n[i++]=r>>>17&127,n[i++]=r>>>24&127,n[i++]=127&(r>>>31|(63&o)<<1),n[i++]=o>>>6&127,n[i++]=o>>>13&127,n[i++]=o>>>20&127,n[i++]=127&(o>>>27|(3&a)<<5),n[i++]=a>>>2&127,n[i++]=a>>>9&127,n[i++]=a>>>16&127,n[i++]=a>>>23&127,n[i++]=127&(a>>>30|(31&l)<<2),n[i++]=l>>>5&127,n[i++]=l>>>12&127,n[i++]=l>>>19&127,n[i++]=127&(l>>>26|(1&u)<<6),n[i++]=u>>>1&127,n[i++]=u>>>8&127,n[i++]=u>>>15&127,n[i++]=u>>>22&127,n[i++]=127&(u>>>29|(15&c)<<3),n[i++]=c>>>4&127,n[i++]=c>>>11&127,n[i++]=c>>>18&127,n[i++]=c>>>25&127;}}(t,e,n,r);break;case 8:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0,a=t[s++]>>>0,l=t[s++]>>>0,u=t[s++]>>>0,c=t[s++]>>>0,h=t[s++]>>>0;n[i++]=e>>>0&255,n[i++]=e>>>8&255,n[i++]=e>>>16&255,n[i++]=e>>>24&255,n[i++]=r>>>0&255,n[i++]=r>>>8&255,n[i++]=r>>>16&255,n[i++]=r>>>24&255,n[i++]=o>>>0&255,n[i++]=o>>>8&255,n[i++]=o>>>16&255,n[i++]=o>>>24&255,n[i++]=a>>>0&255,n[i++]=a>>>8&255,n[i++]=a>>>16&255,n[i++]=a>>>24&255,n[i++]=l>>>0&255,n[i++]=l>>>8&255,n[i++]=l>>>16&255,n[i++]=l>>>24&255,n[i++]=u>>>0&255,n[i++]=u>>>8&255,n[i++]=u>>>16&255,n[i++]=u>>>24&255,n[i++]=c>>>0&255,n[i++]=c>>>8&255,n[i++]=c>>>16&255,n[i++]=c>>>24&255,n[i++]=h>>>0&255,n[i++]=h>>>8&255,n[i++]=h>>>16&255,n[i++]=h>>>24&255;}}(t,e,n,r);break;case 16:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<128;e++){const e=t[s++]>>>0;n[i++]=65535&e,n[i++]=e>>>16&65535;}}(t,e,n,r);break;default:!function(t,e,n,r,i){const s=mf[i]>>>0;let o=e,a=0,l=t[o]>>>0,u=r;for(let e=0;e<8;e++){for(let e=0;e<32;e++)if(a+i<=32)n[u+e]=l>>>a&s,a+=i,32===a&&(a=0,o++,31!==e&&(l=t[o]>>>0));else {const r=32-a,c=l>>>a;o++,l=t[o]>>>0;const h=i-r;n[u+e]=(c|(l&-1>>>32-h>>>0)<>>0);}}(t,e,n,r,i);}return e+(i<<3)|0}function Af(t,e,n,r){if(n+2>e)throw new Error(`FastPFOR decode: byteContainer underflow at block=${r} (need 2 bytes for [bitWidth, exceptionCount], bytePos=${n}, byteSize=${e})`);const i=t[n++],s=t[n++];if(i>32)throw new Error(`FastPFOR decode: invalid bitWidth=${i} at block=${r} (expected 0..32). This likely indicates corrupted or truncated input.`);return {bitWidth:i,exceptionCount:s,bytePosIn:n}}function Mf(t,e,n,r,i,s,o,a,l){const{maxBits:u,exceptionBitWidth:c,bytePosIn:h}=function(t,e,n,r,i,s){if(n+1>e)throw new Error(`FastPFOR decode: exception header underflow at block=${s} (need 1 byte for maxBits, bytePos=${n}, byteSize=${e})`);const o=t[n++];if(o32)throw new Error(`FastPFOR decode: invalid maxBits=${o} at block=${s} (bitWidth=${r}, expected ${r}..32)`);const a=o-r|0;if(a<1||a>32)throw new Error(`FastPFOR decode: invalid exceptionBitWidth=${a} at block=${s} (bitWidth=${r}, maxBits=${o})`);if(n+i>e)throw new Error(`FastPFOR decode: exception positions underflow at block=${s} (need=${i}, have=${e-n})`);return {maxBits:o,exceptionBitWidth:a,bytePosIn:n}}(i,s,o,n,r,l);if(o=h,1===c){const s=1<y)throw new Error(`FastPFOR decode: exception stream overflow for exceptionBitWidth=${c} (ptr=${d}, need ${r}, size=${y}) at block ${l}`);for(let s=0;st.length-1)throw new Error(`FastPFOR decode: invalid whereMeta=${a} at pageStart=${o} (expected > 0 and pageStart+whereMeta < encoded.length=${t.length})`);const l=o+1|0,u=o+a|0,c=t[u]>>>0,h=c+3>>>2,p=u+1,f=p+h;if(f>=t.length)throw new Error(`FastPFOR decode: invalid byteSize=${c} (metaInts=${h}, pageStart=${o}, packedEnd=${u}, byteContainerStart=${p}) causes bitmapPos=${f} out of bounds (encoded.length=${t.length})`);const d=function(t,e,n,r){r.byteContainer.length>>2;if(3&i.byteOffset)for(let n=0;n>>8&255,i[s+2|0]=r>>>16&255,i[s+3|0]=r>>>24&255;}else {let n=r.byteContainerI32;(!n||n.buffer!==i.buffer||n.byteOffset!==i.byteOffset||n.length>>2)),n.set(t.subarray(e,e+s));}const o=3&n;if(o>0){const n=0|t[e+s|0],r=s<<2;for(let t=0;t>>(t<<3)&255;}return i}(t,p,c,s),y=c,m=function(t,e,n){const r=0|t[e++],i=n.dataToBePacked;for(let s=2;s<=32;s=s+1|0){if(!(r>>>s-1&1))continue;if(e>=t.length)throw new Error(`FastPFOR decode: truncated exception stream header (bitWidth=${s}, streamWordIndex=${e}, needWords=1, availableWords=${t.length-e}, encodedWords=${t.length})`);const o=t[e++]>>>0,a=xf(o+31,32),l=o*s+31>>>5;if(e+l>t.length)throw new Error(`FastPFOR decode: truncated exception stream (bitWidth=${s}, size=${o}, streamWordIndex=${e}, needWords=${l}, availableWords=${t.length-e}, encodedWords=${t.length})`);let u=i[s];(!u||u.length>>5)|0,n.exceptionSizes[s]=o;}return e}(t,f,s);return s.dataPointers.fill(0),function(t,e,n,r,i,s,o,a,l,u){let c=0|n,h=0;for(let e=0;e0&&(h=Mf(i,p,r,o,a,l,h,u,e));}if(c!==r)throw new Error(`FastPFOR decode: packed region mismatch (pageStart=${e}, packedStart=${n}, consumedPackedEnd=${c}, expectedPackedEnd=${r}, packedWords=${r-n}, encoded.length=${t.length})`)}(t,o,l,u,e,0|r,i/gf|0,d,y,s),m}function If(t,e,n,r,i){switch(i){case 2:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0;n[i++]=s>>>0&3,n[i++]=s>>>2&3,n[i++]=s>>>4&3,n[i++]=s>>>6&3,n[i++]=s>>>8&3,n[i++]=s>>>10&3,n[i++]=s>>>12&3,n[i++]=s>>>14&3,n[i++]=s>>>16&3,n[i++]=s>>>18&3,n[i++]=s>>>20&3,n[i++]=s>>>22&3,n[i++]=s>>>24&3,n[i++]=s>>>26&3,n[i++]=s>>>28&3,n[i++]=s>>>30&3,n[i++]=o>>>0&3,n[i++]=o>>>2&3,n[i++]=o>>>4&3,n[i++]=o>>>6&3,n[i++]=o>>>8&3,n[i++]=o>>>10&3,n[i++]=o>>>12&3,n[i++]=o>>>14&3,n[i++]=o>>>16&3,n[i++]=o>>>18&3,n[i++]=o>>>20&3,n[i++]=o>>>22&3,n[i++]=o>>>24&3,n[i++]=o>>>26&3,n[i++]=o>>>28&3,n[i]=o>>>30&3;}(t,e,n,r);case 3:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0;n[i++]=s>>>0&7,n[i++]=s>>>3&7,n[i++]=s>>>6&7,n[i++]=s>>>9&7,n[i++]=s>>>12&7,n[i++]=s>>>15&7,n[i++]=s>>>18&7,n[i++]=s>>>21&7,n[i++]=s>>>24&7,n[i++]=s>>>27&7,n[i++]=7&(s>>>30|(1&o)<<2),n[i++]=o>>>1&7,n[i++]=o>>>4&7,n[i++]=o>>>7&7,n[i++]=o>>>10&7,n[i++]=o>>>13&7,n[i++]=o>>>16&7,n[i++]=o>>>19&7,n[i++]=o>>>22&7,n[i++]=o>>>25&7,n[i++]=o>>>28&7,n[i++]=7&(o>>>31|(3&a)<<1),n[i++]=a>>>2&7,n[i++]=a>>>5&7,n[i++]=a>>>8&7,n[i++]=a>>>11&7,n[i++]=a>>>14&7,n[i++]=a>>>17&7,n[i++]=a>>>20&7,n[i++]=a>>>23&7,n[i++]=a>>>26&7,n[i]=a>>>29&7;}(t,e,n,r);case 4:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0;n[i++]=s>>>0&15,n[i++]=s>>>4&15,n[i++]=s>>>8&15,n[i++]=s>>>12&15,n[i++]=s>>>16&15,n[i++]=s>>>20&15,n[i++]=s>>>24&15,n[i++]=s>>>28&15,n[i++]=o>>>0&15,n[i++]=o>>>4&15,n[i++]=o>>>8&15,n[i++]=o>>>12&15,n[i++]=o>>>16&15,n[i++]=o>>>20&15,n[i++]=o>>>24&15,n[i++]=o>>>28&15,n[i++]=a>>>0&15,n[i++]=a>>>4&15,n[i++]=a>>>8&15,n[i++]=a>>>12&15,n[i++]=a>>>16&15,n[i++]=a>>>20&15,n[i++]=a>>>24&15,n[i++]=a>>>28&15,n[i++]=l>>>0&15,n[i++]=l>>>4&15,n[i++]=l>>>8&15,n[i++]=l>>>12&15,n[i++]=l>>>16&15,n[i++]=l>>>20&15,n[i++]=l>>>24&15,n[i]=l>>>28&15;}(t,e,n,r);case 5:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0;n[i++]=s>>>0&31,n[i++]=s>>>5&31,n[i++]=s>>>10&31,n[i++]=s>>>15&31,n[i++]=s>>>20&31,n[i++]=s>>>25&31,n[i++]=31&(s>>>30|(7&o)<<2),n[i++]=o>>>3&31,n[i++]=o>>>8&31,n[i++]=o>>>13&31,n[i++]=o>>>18&31,n[i++]=o>>>23&31,n[i++]=31&(o>>>28|(1&a)<<4),n[i++]=a>>>1&31,n[i++]=a>>>6&31,n[i++]=a>>>11&31,n[i++]=a>>>16&31,n[i++]=a>>>21&31,n[i++]=a>>>26&31,n[i++]=31&(a>>>31|(15&l)<<1),n[i++]=l>>>4&31,n[i++]=l>>>9&31,n[i++]=l>>>14&31,n[i++]=l>>>19&31,n[i++]=l>>>24&31,n[i++]=31&(l>>>29|(3&u)<<3),n[i++]=u>>>2&31,n[i++]=u>>>7&31,n[i++]=u>>>12&31,n[i++]=u>>>17&31,n[i++]=u>>>22&31,n[i]=u>>>27&31;}(t,e,n,r);case 6:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0;n[i++]=s>>>0&63,n[i++]=s>>>6&63,n[i++]=s>>>12&63,n[i++]=s>>>18&63,n[i++]=s>>>24&63,n[i++]=63&(s>>>30|(15&o)<<2),n[i++]=o>>>4&63,n[i++]=o>>>10&63,n[i++]=o>>>16&63,n[i++]=o>>>22&63,n[i++]=63&(o>>>28|(3&a)<<4),n[i++]=a>>>2&63,n[i++]=a>>>8&63,n[i++]=a>>>14&63,n[i++]=a>>>20&63,n[i++]=a>>>26&63,n[i++]=l>>>0&63,n[i++]=l>>>6&63,n[i++]=l>>>12&63,n[i++]=l>>>18&63,n[i++]=l>>>24&63,n[i++]=63&(l>>>30|(15&u)<<2),n[i++]=u>>>4&63,n[i++]=u>>>10&63,n[i++]=u>>>16&63,n[i++]=u>>>22&63,n[i++]=63&(u>>>28|(3&c)<<4),n[i++]=c>>>2&63,n[i++]=c>>>8&63,n[i++]=c>>>14&63,n[i++]=c>>>20&63,n[i]=c>>>26&63;}(t,e,n,r);case 7:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0;n[i++]=s>>>0&127,n[i++]=s>>>7&127,n[i++]=s>>>14&127,n[i++]=s>>>21&127,n[i++]=127&(s>>>28|(7&o)<<4),n[i++]=o>>>3&127,n[i++]=o>>>10&127,n[i++]=o>>>17&127,n[i++]=o>>>24&127,n[i++]=127&(o>>>31|(63&a)<<1),n[i++]=a>>>6&127,n[i++]=a>>>13&127,n[i++]=a>>>20&127,n[i++]=127&(a>>>27|(3&l)<<5),n[i++]=l>>>2&127,n[i++]=l>>>9&127,n[i++]=l>>>16&127,n[i++]=l>>>23&127,n[i++]=127&(l>>>30|(31&u)<<2),n[i++]=u>>>5&127,n[i++]=u>>>12&127,n[i++]=u>>>19&127,n[i++]=127&(u>>>26|(1&c)<<6),n[i++]=c>>>1&127,n[i++]=c>>>8&127,n[i++]=c>>>15&127,n[i++]=c>>>22&127,n[i++]=127&(c>>>29|(15&h)<<3),n[i++]=h>>>4&127,n[i++]=h>>>11&127,n[i++]=h>>>18&127,n[i]=h>>>25&127;}(t,e,n,r);case 8:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0;n[i++]=s>>>0&255,n[i++]=s>>>8&255,n[i++]=s>>>16&255,n[i++]=s>>>24&255,n[i++]=o>>>0&255,n[i++]=o>>>8&255,n[i++]=o>>>16&255,n[i++]=o>>>24&255,n[i++]=a>>>0&255,n[i++]=a>>>8&255,n[i++]=a>>>16&255,n[i++]=a>>>24&255,n[i++]=l>>>0&255,n[i++]=l>>>8&255,n[i++]=l>>>16&255,n[i++]=l>>>24&255,n[i++]=u>>>0&255,n[i++]=u>>>8&255,n[i++]=u>>>16&255,n[i++]=u>>>24&255,n[i++]=c>>>0&255,n[i++]=c>>>8&255,n[i++]=c>>>16&255,n[i++]=c>>>24&255,n[i++]=h>>>0&255,n[i++]=h>>>8&255,n[i++]=h>>>16&255,n[i++]=h>>>24&255,n[i++]=p>>>0&255,n[i++]=p>>>8&255,n[i++]=p>>>16&255,n[i]=p>>>24&255;}(t,e,n,r);case 9:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0,f=t[e+8]>>>0;n[i++]=s>>>0&511,n[i++]=s>>>9&511,n[i++]=s>>>18&511,n[i++]=511&(s>>>27|(15&o)<<5),n[i++]=o>>>4&511,n[i++]=o>>>13&511,n[i++]=o>>>22&511,n[i++]=511&(o>>>31|(255&a)<<1),n[i++]=a>>>8&511,n[i++]=a>>>17&511,n[i++]=511&(a>>>26|(7&l)<<6),n[i++]=l>>>3&511,n[i++]=l>>>12&511,n[i++]=l>>>21&511,n[i++]=511&(l>>>30|(127&u)<<2),n[i++]=u>>>7&511,n[i++]=u>>>16&511,n[i++]=511&(u>>>25|(3&c)<<7),n[i++]=c>>>2&511,n[i++]=c>>>11&511,n[i++]=c>>>20&511,n[i++]=511&(c>>>29|(63&h)<<3),n[i++]=h>>>6&511,n[i++]=h>>>15&511,n[i++]=511&(h>>>24|(1&p)<<8),n[i++]=p>>>1&511,n[i++]=p>>>10&511,n[i++]=p>>>19&511,n[i++]=511&(p>>>28|(31&f)<<4),n[i++]=f>>>5&511,n[i++]=f>>>14&511,n[i]=f>>>23&511;}(t,e,n,r);case 10:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0,f=t[e+8]>>>0,d=t[e+9]>>>0;n[i++]=s>>>0&1023,n[i++]=s>>>10&1023,n[i++]=s>>>20&1023,n[i++]=1023&(s>>>30|(255&o)<<2),n[i++]=o>>>8&1023,n[i++]=o>>>18&1023,n[i++]=1023&(o>>>28|(63&a)<<4),n[i++]=a>>>6&1023,n[i++]=a>>>16&1023,n[i++]=1023&(a>>>26|(15&l)<<6),n[i++]=l>>>4&1023,n[i++]=l>>>14&1023,n[i++]=1023&(l>>>24|(3&u)<<8),n[i++]=u>>>2&1023,n[i++]=u>>>12&1023,n[i++]=u>>>22&1023,n[i++]=c>>>0&1023,n[i++]=c>>>10&1023,n[i++]=c>>>20&1023,n[i++]=1023&(c>>>30|(255&h)<<2),n[i++]=h>>>8&1023,n[i++]=h>>>18&1023,n[i++]=1023&(h>>>28|(63&p)<<4),n[i++]=p>>>6&1023,n[i++]=p>>>16&1023,n[i++]=1023&(p>>>26|(15&f)<<6),n[i++]=f>>>4&1023,n[i++]=f>>>14&1023,n[i++]=1023&(f>>>24|(3&d)<<8),n[i++]=d>>>2&1023,n[i++]=d>>>12&1023,n[i]=d>>>22&1023;}(t,e,n,r);case 11:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0,f=t[e+8]>>>0,d=t[e+9]>>>0,y=t[e+10]>>>0;n[i++]=s>>>0&2047,n[i++]=s>>>11&2047,n[i++]=2047&(s>>>22|(1&o)<<10),n[i++]=o>>>1&2047,n[i++]=o>>>12&2047,n[i++]=2047&(o>>>23|(3&a)<<9),n[i++]=a>>>2&2047,n[i++]=a>>>13&2047,n[i++]=2047&(a>>>24|(7&l)<<8),n[i++]=l>>>3&2047,n[i++]=l>>>14&2047,n[i++]=2047&(l>>>25|(15&u)<<7),n[i++]=u>>>4&2047,n[i++]=u>>>15&2047,n[i++]=2047&(u>>>26|(31&c)<<6),n[i++]=c>>>5&2047,n[i++]=c>>>16&2047,n[i++]=2047&(c>>>27|(63&h)<<5),n[i++]=h>>>6&2047,n[i++]=h>>>17&2047,n[i++]=2047&(h>>>28|(127&p)<<4),n[i++]=p>>>7&2047,n[i++]=p>>>18&2047,n[i++]=2047&(p>>>29|(255&f)<<3),n[i++]=f>>>8&2047,n[i++]=f>>>19&2047,n[i++]=2047&(f>>>30|(511&d)<<2),n[i++]=d>>>9&2047,n[i++]=d>>>20&2047,n[i++]=2047&(d>>>31|(1023&y)<<1),n[i++]=y>>>10&2047,n[i]=y>>>21&2047;}(t,e,n,r);case 12:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0,f=t[e+8]>>>0,d=t[e+9]>>>0,y=t[e+10]>>>0,m=t[e+11]>>>0;n[i++]=s>>>0&4095,n[i++]=s>>>12&4095,n[i++]=4095&(s>>>24|(15&o)<<8),n[i++]=o>>>4&4095,n[i++]=o>>>16&4095,n[i++]=4095&(o>>>28|(255&a)<<4),n[i++]=a>>>8&4095,n[i++]=a>>>20&4095,n[i++]=l>>>0&4095,n[i++]=l>>>12&4095,n[i++]=4095&(l>>>24|(15&u)<<8),n[i++]=u>>>4&4095,n[i++]=u>>>16&4095,n[i++]=4095&(u>>>28|(255&c)<<4),n[i++]=c>>>8&4095,n[i++]=c>>>20&4095,n[i++]=h>>>0&4095,n[i++]=h>>>12&4095,n[i++]=4095&(h>>>24|(15&p)<<8),n[i++]=p>>>4&4095,n[i++]=p>>>16&4095,n[i++]=4095&(p>>>28|(255&f)<<4),n[i++]=f>>>8&4095,n[i++]=f>>>20&4095,n[i++]=d>>>0&4095,n[i++]=d>>>12&4095,n[i++]=4095&(d>>>24|(15&y)<<8),n[i++]=y>>>4&4095,n[i++]=y>>>16&4095,n[i++]=4095&(y>>>28|(255&m)<<4),n[i++]=m>>>8&4095,n[i]=m>>>20&4095;}(t,e,n,r);case 16:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0,f=t[e+8]>>>0,d=t[e+9]>>>0,y=t[e+10]>>>0,m=t[e+11]>>>0,g=t[e+12]>>>0,x=t[e+13]>>>0,v=t[e+14]>>>0,b=t[e+15]>>>0;n[i++]=s>>>0&65535,n[i++]=s>>>16&65535,n[i++]=o>>>0&65535,n[i++]=o>>>16&65535,n[i++]=a>>>0&65535,n[i++]=a>>>16&65535,n[i++]=l>>>0&65535,n[i++]=l>>>16&65535,n[i++]=u>>>0&65535,n[i++]=u>>>16&65535,n[i++]=c>>>0&65535,n[i++]=c>>>16&65535,n[i++]=h>>>0&65535,n[i++]=h>>>16&65535,n[i++]=p>>>0&65535,n[i++]=p>>>16&65535,n[i++]=f>>>0&65535,n[i++]=f>>>16&65535,n[i++]=d>>>0&65535,n[i++]=d>>>16&65535,n[i++]=y>>>0&65535,n[i++]=y>>>16&65535,n[i++]=m>>>0&65535,n[i++]=m>>>16&65535,n[i++]=g>>>0&65535,n[i++]=g>>>16&65535,n[i++]=x>>>0&65535,n[i++]=x>>>16&65535,n[i++]=v>>>0&65535,n[i++]=v>>>16&65535,n[i++]=b>>>0&65535,n[i]=b>>>16&65535;}(t,e,n,r);case 32:for(let i=0;i<32;i=i+1|0)n[r+i|0]=0|t[e+i|0];return}const s=mf[i]>>>0;let o=e,a=0,l=t[o]>>>0;for(let e=0;e<32;e++)if(a+i<=32)n[r+e]=l>>>a&s,a+=i,32===a&&(a=0,o++,31!==e&&(l=t[o]>>>0));else {const u=32-a,c=l>>>a;o++,l=t[o]>>>0,n[r+e]=(c|(l&mf[i-u]>>>0)<=64)throw new Error("Varint too long")}return e.set(i),n}function Pf(t,e){let n,r;return r=t[e.get()],e.increment(),n=127&r,r<128?n:(r=t[e.get()],e.increment(),n|=(127&r)<<7,r<128?n:(r=t[e.get()],e.increment(),n|=(127&r)<<14,r<128?n:(r=t[e.get()],e.increment(),n|=(127&r)<<21,r<128?n:(r=t[e.get()],n|=(15&r)<<28,function(t,e,n){let r,i;if(i=e[n.get()],n.increment(),r=(112&i)>>4,i<128)return 4294967296*r+(t>>>0);if(i=e[n.get()],n.increment(),r|=(127&i)<<3,i<128)return 4294967296*r+(t>>>0);if(i=e[n.get()],n.increment(),r|=(127&i)<<10,i<128)return 4294967296*r+(t>>>0);if(i=e[n.get()],n.increment(),r|=(127&i)<<17,i<128)return 4294967296*r+(t>>>0);if(i=e[n.get()],n.increment(),r|=(127&i)<<24,i<128)return 4294967296*r+(t>>>0);if(i=e[n.get()],n.increment(),r|=(1&i)<<31,i<128)return 4294967296*r+(t>>>0);throw new Error("Expected varint not more than 10 bytes")}(n,t,e)))))}function Df(t){return t>>>1^-(1&t)}function zf(t){return t>>1n^-(1n&t)}function Bf(t){return t%2==1?(t+1)/-2:t/2}function Cf(t,e,n){if(void 0===n){n=0;for(let r=0;r=4)for(;r=4)for(;r=4)for(let r=t[0];n>4];let i=null;switch(r){case Nf.DATA:i={dictionaryType:Object.values(Uf)[15&n]};break;case Nf.OFFSET:i={offsetType:Object.values(jf)[15&n]};break;case Nf.LENGTH:i={lengthType:Object.values(qf)[15&n]};}e.increment();const s=t[e.get()],o=Object.values(ff)[s>>5],a=Object.values(ff)[s>>2&7],l=Object.values(df)[3&s];e.increment();const u=Ef(t,e,2),c=u[0];return {physicalStreamType:r,logicalStreamType:i,logicalLevelTechnique1:o,logicalLevelTechnique2:a,physicalLevelTechnique:l,numValues:c,byteLength:u[1],decompressedCount:c}}(t,e);return n.logicalLevelTechnique1===ff.MORTON?function(t,e,n){const r=Ef(e,n,2);return {physicalStreamType:t.physicalStreamType,logicalStreamType:t.logicalStreamType,logicalLevelTechnique1:t.logicalLevelTechnique1,logicalLevelTechnique2:t.logicalLevelTechnique2,physicalLevelTechnique:t.physicalLevelTechnique,numValues:t.numValues,byteLength:t.byteLength,decompressedCount:t.decompressedCount,numBits:r[0],coordinateShift:r[1]}}(n,t,e):ff.RLE!==n.logicalLevelTechnique1&&ff.RLE!==n.logicalLevelTechnique2||df.NONE===n.physicalLevelTechnique?n:function(t,e,n){const r=Ef(e,n,2);return {physicalStreamType:t.physicalStreamType,logicalStreamType:t.logicalStreamType,logicalLevelTechnique1:t.logicalLevelTechnique1,logicalLevelTechnique2:t.logicalLevelTechnique2,physicalLevelTechnique:t.physicalLevelTechnique,numValues:t.numValues,byteLength:t.byteLength,decompressedCount:r[1],runs:r[0],numRleValues:r[1]}}(n,t,e)}!function(t){t.PRESENT="PRESENT",t.DATA="DATA",t.OFFSET="OFFSET",t.LENGTH="LENGTH";}(Nf||(Nf={})),function(t){t.NONE="NONE",t.SINGLE="SINGLE",t.SHARED="SHARED",t.VERTEX="VERTEX",t.MORTON="MORTON",t.FSST="FSST";}(Uf||(Uf={})),function(t){t.VERTEX="VERTEX",t.INDEX="INDEX",t.STRING="STRING",t.KEY="KEY";}(jf||(jf={})),function(t){t.VAR_BINARY="VAR_BINARY",t.GEOMETRIES="GEOMETRIES",t.PARTS="PARTS",t.RINGS="RINGS",t.TRIANGLES="TRIANGLES",t.SYMBOL="SYMBOL",t.DICTIONARY="DICTIONARY";}(qf||(qf={})),function(t){t[t.FLAT=0]="FLAT",t[t.CONST=1]="CONST",t[t.SEQUENCE=2]="SEQUENCE",t[t.DICTIONARY=3]="DICTIONARY",t[t.FSST_DICTIONARY=4]="FSST_DICTIONARY";}(Gf||(Gf={}));class Wf{constructor(t,e){this.values=t,this._size=e;}get(t){const e=Math.floor(t/8);return 1==(this.values[e]>>t%8&1)}set(t,e){const n=Math.floor(t/8);this.values[n]=this.values[n]|(e?1:0)<>t%8&1}size(){return this._size}getBuffer(){return this.values}}function Kf(t,e,n){if(!e)return t;const r=e.size(),i=new(0,t.constructor)(r);let s=0;for(let o=0;o=4)for(;r>>0;for(let n=1;n>>0;return e}(e.logicalLevelTechnique2===ff.RLE?Cf(t,e.runs,e.numRleValues):t);break;case ff.RLE:i=Cf(t,e.runs,e.numRleValues);break;case ff.MORTON:Rf(t),i=t;break;case ff.COMPONENTWISE_DELTA:i=function(t){if(t.length<2)return new Uint32Array(t);const e=new Uint32Array(t.length);e[0]=Df(t[0])>>>0,e[1]=Df(t[1])>>>0;for(let n=2;n>>0,e[n+1]=e[n-1]+Df(t[n+1])>>>0;return e}(t);break;case ff.NONE:i=t;break;default:throw new Error(`The specified Logical level technique is not supported: ${e.logicalLevelTechnique1}`)}return r?Kf(i,r,0):i}(ed(t,e,n),n,0,i)}function td(t,e,n){return function(t,e){if(e.logicalLevelTechnique1===ff.DELTA&&e.logicalLevelTechnique2===ff.NONE)return function(t){const e=new Int32Array(t.length+1);e[0]=0,e[1]=Df(t[0]);let n=e[1];for(let r=2;r!==e.length;++r)n+=Df(t[r-1]),e[r]=e[r-1]+n;return new Uint32Array(e)}(t);if(e.logicalLevelTechnique1===ff.RLE&&e.logicalLevelTechnique2===ff.NONE)return function(t,e,n){const r=new Uint32Array(n+1);r[0]=0;let i=1,s=r[0];for(let n=0;n>>2,a=function(t,e){if(e<=t.encodedWords.length)return t.encodedWords;const n=new Uint32Array(Math.max(16,2*e));return t.encodedWords=n,n}(i,o);!function(t,e,n,r){if(e<0||n<0||e+n>t.length)throw new RangeError(`decodeBigEndianInt32sInto: out of bounds (offset=${e}, byteLength=${n}, bytes.length=${t.length})`);const i=Math.floor(n/4),s=n%4!=0,o=s?i+1:i;if(r.length0){const n=t.byteOffset+e;if(3&n)for(let n=0;n0){const e=0|t[r];if(r=r+1|0,255&e)throw new Error(`FastPFOR decode: invalid alignedLength=${e} (expected multiple of 256)`);if(i+e>s.length)throw new Error(`FastPFOR decode: output buffer too small (outPos=${i}, alignedLength=${e}, out.length=${s.length})`);r=function(t,e,n,r,i,s){const o=r+xf(i,gf);let a=r,l=n;for(;a!==o;){const n=Math.min(bf,o-a);l=kf(t,e,l,a,n,s),a=a+n|0;}return l}(t,s,r,i,e,o),i=i+e|0;}return function(t,e,n,r,i,s){if(0===s)return e;let o=0,a=e;const l=e+n,u=i;let c=i;const h=i+s;let p=0,f=0;for(;a>>o&255;if(o+=8,a+=o>>>5,o&=31,p|=(127&e)<28)throw new Error(`FastPFOR VByte: unterminated value (expected MSB=1 terminator within 5 bytes; shift=${f}, partial=${p}, decoded=${c-u}/${s}, inPos=${a}, inEnd=${l})`)}if(c!==h)throw new Error(`FastPFOR VByte: truncated stream (decoded=${c-u}, expected=${s}, consumedWords=${a-e}/${n}, vbyteStart=${e}, vbyteEnd=${l})`)}(t,r,t.length-r|0,s,i,e-i|0),s}(a.subarray(0,o),e,i.decoderWorkspace);return r.add(n),l}(t,e,n,r,function(t=16){if(t<0)throw new RangeError(`initialEncodedWordCapacity must be >= 0, got ${t}`);const e=Math.max(16,0|t);return {encodedWords:new Uint32Array(e),decoderWorkspace:_f()}}(n>>>2))}(t,n.numValues,n.byteLength,e);case df.VARINT:return Ef(t,e,n.numValues);case df.NONE:{const r=e.get();e.add(n.byteLength);const i=t.subarray(r,e.get());return new Uint32Array(i)}default:throw new Error(`Specified physicalLevelTechnique ${r} is not supported (yet).`)}}function nd(t,e,n){const r=ed(t,e,n);return 1===r.length?r[0]:function(t){return t[1]}(r)}function rd(t,e,n){return function(t){if(2===t.length){const e=Df(t[1]);return [e,e]}return [Df(t[2]),Df(t[3])]}(ed(t,e,n))}function id(t,e,n){return function(t){if(2===t.length){const e=zf(t[1]);return [e,e]}return [zf(t[2]),zf(t[3])]}(Tf(t,e,n.numValues))}function sd(t,e,n,r){return function(t,e,n){let r;switch(e.logicalLevelTechnique1){case ff.DELTA:r=function(t){const e=new BigUint64Array(t.length);e[0]=BigInt.asUintN(64,zf(t[0]));for(let n=1;n>1,e)-n}}function hd(t,e){let n=0;for(let r=0;r>r;return n}function pd(t,e,r,i,s,o,a){return t===Zf.MORTON?function(t,e,r,i,s,o){const a=new Array(s?i+1:i);for(let s=0;s[t])),r+=t,i+=t;}break;case Xf.LINESTRING:{let n,c;m?(n=f[i]-f[i-1],i++):n=p[r]-p[r-1],r++,y?(c=fd(g,a,n,!1),a+=2*n):(c=pd(t.vertexBufferType,g,d,l,n,!1,u),l+=n),e[o++]=[c],h&&s++;}break;case Xf.POLYGON:{const n=p[r]-p[r-1];r++;const c=new Array(n-1);let m,x=f[i]-f[i-1];if(i++,y){m=fd(g,a,x,!0),a+=2*x;for(let t=0;t0&&e.push(e[0]),h.push(e);}t[e]=h,s&&u++;}break;case Xf.MULTIPOLYGON:{const c=s[u]-s[u-1];u++;const h=[];for(let t=0;t0&&e.push(e[0]),h.push(e);}}t[e]=h;}}return t}[Symbol.iterator](){return null}}function xd(t,e,n,r,i,s){return new vd(t,e,n,r,i,s)}class vd extends gd{constructor(t,e,n,r,i,s){super(n,r,i,s),this._numGeometries=t,this._geometryType=e;}geometryType(t){return this._geometryType}get numGeometries(){return this._numGeometries}containsSingleGeometryType(){return !0}}function bd(t,e,n,r,i){return new wd(t,e,n,r,i)}class wd extends gd{constructor(t,e,n,r,i){super(e,n,r,i),this._geometryTypes=t;}geometryType(t){return this._geometryTypes[t]}get numGeometries(){return this._geometryTypes.length}containsSingleGeometryType(){return !1}}function _d(t,e,n,r,i){const s=Hf(t,n);let o,a,l,u;if(ad(s,r,t,n)===Gf.CONST){const i=nd(t,n,s);let c,h,p,f;for(let r=0;rn?e[s++]:1);return r}function Ad(t,e,n,r){const i=new Uint32Array(e[e.length-1]+1);let s=0;i[0]=s;let o=1,a=0;for(let l=0;l=o);){const n=t[r.increment()];if(n<=127){const o=n+3,a=t[r.increment()],l=Math.min(s+o,e);i.fill(a,s,l),s=l;}else {const o=256-n;for(let n=0;n=12?Td.decode(t.subarray(e,n)):function(t,e,n){let r="",i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+u>n)break;1===u?e<128&&(l=e):2===u?(s=t[i+1],128==(192&s)&&(l=(31&e)<<6|63&s,l<=127&&(l=null))):3===u?(s=t[i+1],o=t[i+2],128==(192&s)&&128==(192&o)&&(l=(15&e)<<12|(63&s)<<6|63&o,(l<=2047||l>=55296&&l<=57343)&&(l=null))):4===u&&(s=t[i+1],o=t[i+2],a=t[i+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&e)<<18|(63&s)<<12|(63&o)<<6|63&a,(l<=65535||l>=1114112)&&(l=null))),null===l?(l=65533,u=1):l>65535&&(l-=65536,r+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),r+=String.fromCharCode(l),i+=u;}return r}(t,e,n)}class Pd extends rf{constructor(t,e,n,r){super(t,n,r),this.offsetBuffer=e;}}class Dd extends Pd{constructor(t,e,n,r){super(t,e,n,r??e.length-1);}getValueFromBuffer(t){return Fd(this.dataBuffer,this.offsetBuffer[t],this.offsetBuffer[t+1])}}class zd extends Pd{constructor(t,e,n,r,i){super(t,n,r,i??e.length),this.indexBuffer=e,this.indexBuffer=e;}getValueFromBuffer(t){const e=this.indexBuffer[t];return Fd(this.dataBuffer,this.offsetBuffer[e],this.offsetBuffer[e+1])}}class Bd extends Pd{constructor(t,e,n,r,i,s,o){super(t,n,r,o),this.indexBuffer=e,this.symbolOffsetBuffer=i,this.symbolTableBuffer=s;}getValueFromBuffer(t){null==this.decodedDictionary&&(null==this.symbolLengthBuffer&&(this.symbolLengthBuffer=this.offsetToLengthBuffer(this.symbolOffsetBuffer)),this.decodedDictionary=function(t,e,n){const r=[],i=new Array(e.length).fill(0);for(let t=1;t=10}function $d(t){return 30===t}function Rd(t){if("scalarType"===t.type){const e=t.scalarType;if("physicalType"===e.type)switch(e.physicalType){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:default:return !1;case 9:return !0}if("logicalType"===e.type)return !1}else if("complexType"===t.type){const e=t.complexType;if("physicalType"===e.type)switch(e.physicalType){case 0:case 1:return !0;default:return !1}}return console.warn("Unexpected column type in hasStreamCount",t),!1}function Nd(t){return "complexType"===t.type&&"physicalType"===t.complexType?.type&&0===t.complexType.physicalType}const Ud=new TextDecoder;function jd(t,e){const n=Ef(t,e,1)[0];if(0===n)return "";const r=e.get(),i=t.subarray(r,r+n);return e.add(n),Ud.decode(i)}function qd(t,e){const n=Ef(t,e,1)[0]>>>0;if(n<10||n>30)throw new Error(`Unsupported field type code ${n}. Supported: 10-29(scalars), 30(STRUCT)`);const r=Ld(n);if(Od(n)&&(r.name=jd(t,e)),$d(n)){const n=Ef(t,e,1)[0]>>>0;r.complexType.children=new Array(n);for(let i=0;i>>0,r=Ld(n);if(!r)throw new Error(`Unsupported column type code ${n}. Supported: 0-3(ID), 4(GEOMETRY), 10-29(scalars), 30(STRUCT)`);if(Od(n)?r.name=jd(t,e):n>=0&&n<=3?r.name="id":4===n&&(r.name="geometry"),$d(n)){const n=Ef(t,e,1)[0]>>>0,i=r.complexType;i.children=new Array(n);for(let r=0;r>>0,s=Ef(t,e,1)[0]>>>0;r.columns=new Array(s);for(let n=0;n=4)for(;n>>0,o=r.get()+e;if(o>t.length)throw new Error(`Block overruns tile: ${o} > ${t.length}`);if(1!=Ef(t,r,1)[0]>>>0){r.set(o);continue}const[a,l]=Xd(t,r),u=a.featureTables[0];let c=null,h=null;const p=[];let f=0;for(const e of u.columns){const i=e.name;if("scalarType"===(s=e).type&&"logicalType"===s.scalarType?.type&&0===s.scalarType.logicalType){let s=null;if(e.nullable){const e=Hf(t,r),n=r.get(),i=Ed(t,e.numValues,e.byteLength,r);r.set(n+e.byteLength),s=new Wf(i,e.numValues);}const o=Hf(t,r);f=s?s.size():o.decompressedCount,c=Yd(t,e,r,i,o,s??f,n);}else if(Nd(e)){const e=Ef(t,r,1)[0];if(0===f){const e=r.get();f=Hf(t,r).decompressedCount,r.set(e);}h=_d(t,e,r,f);}else {const n=Rd(e)?Ef(t,r,1)[0]:1;if(0===n)continue;const i=Cd(t,r,e,n,f);if(i)if(Array.isArray(i))for(const t of i)p.push(t);else p.push(i);}}const d=new hf(u.name,h,c,p,l);i.push(d),r.set(o);}var s;return i}(new Uint8Array(t));this.layers=e.reduce(((t,e)=>Object.assign(Object.assign({},t),{[e.name]:new Hd(e)})),{});}}class Kd{constructor(t,e){this.feature=t,this.type=t.type,this.properties=t.tags?t.tags:{},this.extent=e,"id"in t&&("string"==typeof t.id?this.id=parseInt(t.id,10):"number"!=typeof t.id||isNaN(t.id)||(this.id=t.id));}loadGeometry(){const t=[],e=1===this.feature.type?[this.feature.geometry]:this.feature.geometry;for(const r of e){const e=[];for(const t of r)e.push(new n(t[0],t[1]));t.push(e);}return t}}const Jd="_geojsonTileLayer";function Qd(t,e,n=""){e.writeVarintField(15,t.version||1),e.writeStringField(1,t.name||""),e.writeVarintField(5,t.extent||4096);const r={jsonPrefix:n,keys:[],values:[],keycache:{},valuecache:{}};for(let n=0;n>31}function iy(t,e){const n=t.loadGeometry(),r=t.type;let i=0,s=0;for(const o of n){let n=1;1===r&&(n=o.length),e.writeVarint(ny(1,n));const a=3===r?o.length-1:o.length;for(let t=0;t=0&&e[3]>=0&&a.insert(o,e[0],e[1],e[2],e[3]);}}loadVTLayers(){return this.vtLayers||(this.vtLayers="mlt"!==this.encoding?new Nu(new Rh(this.rawTileData)).layers:new Wd(this.rawTileData).layers,this.sourceLayerCoder=new ef(this.vtLayers?Object.keys(this.vtLayers).sort():[Jd])),this.vtLayers}query(t,e,r,i){this.loadVTLayers();const s=t.params,o=T/t.tileSize/t.scale,a=yi(s.filter,s.globalState),l=t.queryGeometry,u=t.queryPadding*o,c=tf.fromPoints(l),h=this.grid.query(c.minX-u,c.minY-u,c.maxX+u,c.maxY+u),p=tf.fromPoints(t.cameraQueryGeometry).expandBy(u),f=this.grid3D.query(p.minX,p.minY,p.maxX,p.maxY,((e,r,i,s)=>function(t,e,r,i,s){for(const n of t)if(e<=n.x&&r<=n.y&&i>=n.x&&s>=n.y)return !0;const o=[new n(e,r),new n(e,s),new n(i,s),new n(i,r)];if(t.length>2)for(const e of o)if(il(t,e))return !0;for(let e=0;e(c||(c=qa(e)),n.queryIntersectsFeature({queryGeometry:l,feature:e,featureState:r,geometry:c,zoom:this.z,transform:t.transform,pixelsToTileUnits:o,pixelPosMatrix:t.pixelPosMatrix,unwrappedTileID:this.tileID.toUnwrapped(),getElevation:t.getElevation}))));}return d}loadMatchingFeature(t,e,n,r,i,s,o,a,l,u,c){const h=this.bucketLayerIDs[e];if(s&&!h.some((t=>s.has(t))))return;const p=this.sourceLayerCoder.decode(n),f=this.vtLayers[p].feature(r);if(i.needGeometry){const t=Ga(f,!0);if(!i.filter(new Cs(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!i.filter(new Cs(this.tileID.overscaledZ),f))return;const d=this.getId(f,p);for(const e of h){if(s&&!s.has(e))continue;const n=a[e];if(!n)continue;let i={};d&&u&&(i=u.getState(n.sourceLayer||Jd,d));const h=$({},l[e]);h.paint=ay(h.paint,n.paint,f,i,o),h.layout=ay(h.layout,n.layout,f,i,o);const p=!c||c(f,n,i);if(!p)continue;const y=new nf(f,this.z,this.x,this.y,d);y.layer=h;let m=t[e];void 0===m&&(m=t[e]=[]),m.push({featureIndex:r,feature:y,intersectionZ:p});}}lookupSymbolFeatures(t,e,n,r,i,s,o,a){const l={};this.loadVTLayers();const u=yi(i.filterSpec,i.globalState);for(const i of t)this.loadMatchingFeature(l,n,r,i,u,s,o,a,e);return l}hasLayer(t){for(const e of this.bucketLayerIDs)for(const n of e)if(t===n)return !0;return !1}getId(t,e){var n;let r=t.id;return this.promoteId&&(r=t.properties["string"==typeof this.promoteId?this.promoteId:this.promoteId[e]],"boolean"==typeof r&&(r=Number(r)),void 0===r&&(null===(n=t.properties)||void 0===n?void 0:n.cluster)&&this.promoteId&&(r=Number(t.properties.cluster_id))),r}}function ay(t,e,n,r,i){return N(t,((t,s)=>{const o=e instanceof Gs?e.get(s):null;return (null==o?void 0:o.evaluate)?o.evaluate(n,r,i):o}))}function ly(t,e){return e-t}function uy(t,e,r,i,s){const o=[];for(const a of t){let t;for(let l=0;l=i&&c.x>=i||(u.x>=i?u=new n(i,u.y+(i-u.x)/(c.x-u.x)*(c.y-u.y))._round():c.x>=i&&(c=new n(i,u.y+(i-u.x)/(c.x-u.x)*(c.y-u.y))._round()),u.y>=s&&c.y>=s||(u.y>=s?u=new n(u.x+(s-u.y)/(c.y-u.y)*(c.x-u.x),s)._round():c.y>=s&&(c=new n(u.x+(s-u.y)/(c.y-u.y)*(c.x-u.x),s)._round()),t&&u.equals(t[t.length-1])||(t=[u],o.push(t)),t.push(c)))));}}return o}function cy(t,e,n,r,i){switch(e){case 1:return function(t,e,n,r){const i=[];for(const s of t)for(const t of s){const s=0===r?t.x:t.y;s>=e&&s<=n&&i.push([t]);}return i}(t,n,r,i);case 2:return py(t,n,r,i,!1);case 3:return py(t,n,r,i,!0)}return []}function hy(t,e,r,i,s){const o=0===i?fy:dy;let a=[];const l=[];for(let n=0;ne&&a.push(o(u,c,e)):h>r?p=e&&(a.push(o(u,c,e)),f=!0),p>r&&h<=r&&(a.push(o(u,c,r)),f=!0),!s&&f&&(l.push(a),a=[]);}const u=t.length-1,c=0===i?t[u].x:t[u].y;return c>=e&&c<=r&&a.push(t[u]),s&&a.length>0&&!a[0].equals(a[a.length-1])&&a.push(new n(a[0].x,a[0].y)),a.length>0&&l.push(a),l}function py(t,e,n,r,i){const s=[];for(const o of t){const t=hy(o,e,n,r,i);t.length>0&&s.push(...t);}return s}function fy(t,e,r){return new n(r,t.y+(r-t.x)/(e.x-t.x)*(e.y-t.y))}function dy(t,e,r){return new n(t.x+(r-t.y)/(e.y-t.y)*(e.x-t.x),r)}ds("FeatureIndex",oy,{omit:["rawTileData","sourceLayerCoder"]});class yy extends n{constructor(t,e,n,r){super(t,e),this.angle=n,void 0!==r&&(this.segment=r);}clone(){return new yy(this.x,this.y,this.angle,this.segment)}}function my(t,e,n,r,i){if(void 0===e.segment||0===n)return !0;let s=e,o=e.segment+1,a=0;for(;a>-n/2;){if(o--,o<0)return !1;a-=t[o].dist(s),s=t[o];}a+=t[o].dist(t[o+1]),o++;const l=[];let u=0;for(;ar;)u-=l.shift().angleDelta;if(u>i)return !1;o++,a+=e.dist(n);}return !0}function gy(t){let e=0;for(let n=0;nu){const c=(u-l)/s,h=xn.number(r.x,i.x,c),p=xn.number(r.y,i.y,c),f=new yy(h,p,i.angleTo(r),n);return f._round(),!o||my(t,f,a,o,e)?f:void 0}l+=s;}}function wy(t,e,n,r,i,s,o,a,l){const u=xy(r,s,o),c=vy(r,i),h=c*o,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h=0&&g=0&&x=0&&p+u<=c){const n=new yy(g,x,y,e);n._round(),r&&!my(t,n,s,r,i)||f.push(n);}}h+=d;}return a||f.length||o||(f=_y(t,h/2,n,r,i,s,o,!0,l)),f}function Sy(t,e,r,i){const s=[],o=t.image,a=o.pixelRatio,l=o.paddedRect.w-2,u=o.paddedRect.h-2;let c={x1:t.left,y1:t.top,x2:t.right,y2:t.bottom};const h=o.stretchX||[[0,l]],p=o.stretchY||[[0,u]],f=(t,e)=>t+e[1]-e[0],d=h.reduce(f,0),y=p.reduce(f,0),m=l-d,g=u-y;let x=0,v=d,b=0,w=y,_=0,S=m,A=0,M=g;if(o.content&&i){const e=o.content,n=e[2]-e[0],r=e[3]-e[1];(o.textFitWidth||o.textFitHeight)&&(c=dp(t)),x=Ay(h,0,e[0]),b=Ay(p,0,e[1]),v=Ay(h,e[0],e[2]),w=Ay(p,e[1],e[3]),_=e[0]-x,A=e[1]-b,S=n-v,M=r-w;}const k=c.x1,I=c.y1,E=c.x2-k,T=c.y2-I,F=(t,i,s,l)=>{const u=ky(t.stretch-x,v,E,k),c=Iy(t.fixed-_,S,t.stretch,d),h=ky(i.stretch-b,w,T,I),p=Iy(i.fixed-A,M,i.stretch,y),f=ky(s.stretch-x,v,E,k),m=Iy(s.fixed-_,S,s.stretch,d),g=ky(l.stretch-b,w,T,I),F=Iy(l.fixed-A,M,l.stretch,y),P=new n(u,h),D=new n(f,h),z=new n(f,g),B=new n(u,g),C=new n(c/a,p/a),V=new n(m/a,F/a),L=e*Math.PI/180;if(L){const t=Math.sin(L),e=Math.cos(L),n=[e,-t,t,e];P._matMult(n),D._matMult(n),B._matMult(n),z._matMult(n);}const O=t.stretch+t.fixed,$=i.stretch+i.fixed;return {tl:P,tr:D,bl:B,br:z,tex:{x:o.paddedRect.x+1+O,y:o.paddedRect.y+1+$,w:s.stretch+s.fixed-O,h:l.stretch+l.fixed-$},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:C,pixelOffsetBR:V,minFontScaleX:S/a/E,minFontScaleY:M/a/T,isSDF:r}};if(i&&(o.stretchX||o.stretchY)){const t=My(h,m,d),e=My(p,g,y);for(let n=0;n0&&(r=Math.max(10,r),this.circleDiameter=r);}else {const u=(null===(h=o.image)||void 0===h?void 0:h.content)&&(o.image.textFitWidth||o.image.textFitHeight)?dp(o):{x1:o.left,y1:o.top,x2:o.right,y2:o.bottom};u.y1=u.y1*a-l[0],u.y2=u.y2*a+l[2],u.x1=u.x1*a-l[3],u.x2=u.x2*a+l[1];const p=o.collisionPadding;if(p&&(u.x1-=p[0]*a,u.y1-=p[1]*a,u.x2+=p[2]*a,u.y2+=p[3]*a),c){const t=new n(u.x1,u.y1),e=new n(u.x2,u.y1),r=new n(u.x1,u.y2),i=new n(u.x2,u.y2),s=c*Math.PI/180;t._rotate(s),e._rotate(s),r._rotate(s),i._rotate(s),u.x1=Math.min(t.x,e.x,r.x,i.x),u.x2=Math.max(t.x,e.x,r.x,i.x),u.y1=Math.min(t.y,e.y,r.y,i.y),u.y2=Math.max(t.y,e.y,r.y,i.y);}t.emplaceBack(e.x,e.y,u.x1,u.y1,u.x2,u.y2,r,i,s);}this.boxEndIndex=t.length;}}class Ty{constructor(t=[],e=(t,e)=>te?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this._up(this.length++);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return --this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:n}=this,r=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(n(r,s)>=0)break;e[t]=s,t=i;}e[t]=r;}_down(t){const{data:e,compare:n}=this,r=this.length>>1,i=e[t];for(;t=0)break;e[t]=e[r],t=r;}e[t]=i;}}function Fy(t,e=1){const r=tf.fromPoints(t[0]),i=Math.min(r.width(),r.height());let s=i/2;const o=new Ty([],Py),{minX:a,minY:l,maxX:u,maxY:c}=r;if(0===i)return new n(a,l);for(let e=a;ep.d||!p.d)&&(p=n),n.max-p.d<=e||(s=n.h/2,o.push(new Dy(n.p.x-s,n.p.y-s,s,t)),o.push(new Dy(n.p.x+s,n.p.y-s,s,t)),o.push(new Dy(n.p.x-s,n.p.y+s,s,t)),o.push(new Dy(n.p.x+s,n.p.y+s,s,t)));}return h.d>0&&p.d-h.d<=e?h.p:p.p}function Py(t,e){return e.max-t.max}class Dy{constructor(t,e,r,i){this.p=new n(t,e),this.h=r,this.d=function(t,e){let n=!1,r=1/0;for(const i of e)for(let e=0,s=i.length,o=s-1;et.y!=a.y>t.y&&t.x<(a.x-s.x)*(t.y-s.y)/(a.y-s.y)+s.x&&(n=!n),r=Math.min(r,nl(t,s,a));}return (n?1:-1)*Math.sqrt(r)}(this.p,i),this.max=this.d+this.h*Math.SQRT2;}}var zy;t.aM=void 0,(zy=t.aM||(t.aM={}))[zy.center=1]="center",zy[zy.left=2]="left",zy[zy.right=3]="right",zy[zy.top=4]="top",zy[zy.bottom=5]="bottom",zy[zy["top-left"]=6]="top-left",zy[zy["top-right"]=7]="top-right",zy[zy["bottom-left"]=8]="bottom-left",zy[zy["bottom-right"]=9]="bottom-right";const By=Number.POSITIVE_INFINITY;function Cy(t,e){return e[1]!==By?function(t,e,n){let r=0,i=0;switch(e=Math.abs(e),n=Math.abs(n),t){case "top-right":case "top-left":case "top":i=n-7;break;case "bottom-right":case "bottom-left":case "bottom":i=7-n;}switch(t){case "top-right":case "bottom-right":case "right":r=-e;break;case "top-left":case "bottom-left":case "left":r=e;}return [r,i]}(t,e[0],e[1]):function(t,e){let n=0,r=0;e<0&&(e=0);const i=e/Math.SQRT2;switch(t){case "top-right":case "top-left":r=i-7;break;case "bottom-right":case "bottom-left":r=7-i;break;case "bottom":r=7-e;break;case "top":r=e-7;}switch(t){case "top-right":case "bottom-right":n=-i;break;case "top-left":case "bottom-left":n=i;break;case "left":n=e;break;case "right":n=-e;}return [n,r]}(t,e[0])}function Vy(t,e,n){var r;const i=t.layout,s=null===(r=i.get("text-variable-anchor-offset"))||void 0===r?void 0:r.evaluate(e,{},n);if(s){const t=s.values,e=[];for(let n=0;nt*Ih));r.startsWith("top")?i[1]-=7:r.startsWith("bottom")&&(i[1]+=7),e[n+1]=i;}return new $e(e)}const o=i.get("text-variable-anchor");if(o){let r;r=void 0!==t._unevaluatedLayout.getValue("text-radial-offset")?[i.get("text-radial-offset").evaluate(e,{},n)*Ih,By]:i.get("text-offset").evaluate(e,{},n).map((t=>t*Ih));const s=[];for(const t of o)s.push(t,Cy(t,r));return new $e(s)}return null}function Ly(t){switch(t){case "right":case "top-right":case "bottom-right":return "right";case "left":case "top-left":case "bottom-left":return "left"}return "center"}function Oy(e,n,r,i,s,o,a,l,u,c,h,p){let f=o.textMaxSize.evaluate(n,{});void 0===f&&(f=a);const d=e.layers[0].layout,y=d.get("icon-offset").evaluate(n,{},h),m=Ry(r.horizontal),g=a/24,x=e.tilePixelRatio*g,v=e.tilePixelRatio*f/24,b=e.tilePixelRatio*l,w=e.tilePixelRatio*d.get("symbol-spacing"),_=d.get("text-padding")*e.tilePixelRatio,S=function(t,e,n,r=1){const i=t.get("icon-padding").evaluate(e,{},n),s=null==i?void 0:i.values;return [s[0]*r,s[1]*r,s[2]*r,s[3]*r]}(d,n,h,e.tilePixelRatio),A=d.get("text-max-angle")/180*Math.PI,M="viewport"!==d.get("text-rotation-alignment")&&"point"!==d.get("symbol-placement"),k="map"===d.get("icon-rotation-alignment")&&"point"!==d.get("symbol-placement"),I=d.get("symbol-placement"),E=w/2,F=d.get("icon-text-fit");let P;i&&"none"!==F&&(e.allowVerticalPlacement&&r.vertical&&(P=yp(i,r.vertical,F,d.get("icon-text-fit-padding"),y,g)),m&&(i=yp(i,m,F,d.get("icon-text-fit-padding"),y,g)));const D=h?p.line.getGranularityForZoomLevel(h.z):1,z=(l,p)=>{p.x<0||p.x>=T||p.y<0||p.y>=T||function(e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,M){const k=e.addToLineVertexArray(n,r);let I,E,T,F,P=0,D=0,z=0,B=0,C=-1,V=-1;const L={};let O=ba("");if(e.allowVerticalPlacement&&i.vertical){const t=l.layout.get("text-rotate").evaluate(w,{},A)+90;T=new Ey(u,n,c,h,p,i.vertical,f,d,y,t),a&&(F=new Ey(u,n,c,h,p,a,g,x,y,t));}if(s){const r=l.layout.get("icon-rotate").evaluate(w,{}),i="none"!==l.layout.get("icon-text-fit"),o=Sy(s,r,S,i),f=a?Sy(a,r,S,i):void 0;E=new Ey(u,n,c,h,p,s,g,x,!1,r),P=4*o.length;const d=e.iconSizeData;let y=null;"source"===d.kind?(y=[mp*l.layout.get("icon-size").evaluate(w,{})],y[0]>gp&&G(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):"composite"===d.kind&&(y=[mp*_.compositeIconSizes[0].evaluate(w,{},A),mp*_.compositeIconSizes[1].evaluate(w,{},A)],(y[0]>gp||y[1]>gp)&&G(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),e.addSymbols(e.icon,o,y,b,v,w,t.ax.none,n,k.lineStartIndex,k.lineLength,-1,A),C=e.icon.placedSymbolArray.length-1,f&&(D=4*f.length,e.addSymbols(e.icon,f,y,b,v,w,t.ax.vertical,n,k.lineStartIndex,k.lineLength,-1,A),V=e.icon.placedSymbolArray.length-1);}const $=Object.keys(i.horizontal);for(const r of $){const s=i.horizontal[r];if(!I){O=ba(s.text);const t=l.layout.get("text-rotate").evaluate(w,{},A);I=new Ey(u,n,c,h,p,s,f,d,y,t);}const a=1===s.positionedLines.length;if(z+=$y(e,n,s,o,l,y,w,m,k,i.vertical?t.ax.horizontal:t.ax.horizontalOnly,a?$:[r],L,C,_,A),a)break}i.vertical&&(B+=$y(e,n,i.vertical,o,l,y,w,m,k,t.ax.vertical,["vertical"],L,V,_,A));const R=I?I.boxStartIndex:e.collisionBoxArray.length,N=I?I.boxEndIndex:e.collisionBoxArray.length,U=T?T.boxStartIndex:e.collisionBoxArray.length,j=T?T.boxEndIndex:e.collisionBoxArray.length,q=E?E.boxStartIndex:e.collisionBoxArray.length,X=E?E.boxEndIndex:e.collisionBoxArray.length,Y=F?F.boxStartIndex:e.collisionBoxArray.length,Z=F?F.boxEndIndex:e.collisionBoxArray.length;let H=-1;const W=(t,e)=>(null==t?void 0:t.circleDiameter)?Math.max(t.circleDiameter,e):e;H=W(I,H),H=W(T,H),H=W(E,H),H=W(F,H);const K=H>-1?1:0;K&&(H*=M/Ih),e.glyphOffsetArray.length>=kp.MAX_GLYPHS&&G("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==w.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,w.sortKey);const J=Vy(l,w,A),[Q,tt]=function(e,n){const r=e.length,i=null==n?void 0:n.values;if((null==i?void 0:i.length)>0)for(let n=0;n=0?L.right:-1,L.center>=0?L.center:-1,L.left>=0?L.left:-1,L.vertical||-1,C,V,O,R,N,U,j,q,X,Y,Z,c,z,B,P,D,K,0,f,H,Q,tt);}(e,p,l,r,i,s,P,e.layers[0],e.collisionBoxArray,n.index,n.sourceLayerIndex,e.index,x,[_,_,_,_],M,u,b,S,k,y,n,o,c,h,a);};if("line"===I)for(const t of uy(n.geometry,0,0,T,T)){const n=Su(t,D),s=wy(n,w,A,r.vertical||m,i,24,v,e.overscaling,T);for(const t of s)m&&Ny(e,m.text,E,t)||z(n,t);}else if("line-center"===I){for(const t of n.geometry)if(t.length>1){const e=Su(t,D),n=by(e,A,r.vertical||m,i,24,v);n&&z(e,n);}}else if("Polygon"===n.type)for(const t of rr(n.geometry,0)){const e=Fy(t,16);z(Su(t[0],D,!0),new yy(e.x,e.y,0));}else if("LineString"===n.type)for(const t of n.geometry){const e=Su(t,D);z(e,new yy(e[0].x,e[0].y,0));}else if("Point"===n.type)for(const t of n.geometry)for(const e of t)z([e],new yy(e.x,e.y,0));}function $y(t,e,r,i,s,o,a,l,u,c,h,p,f,d,y){const m=function(t,e,r,i,s,o,a,l){const u=i.layout.get("text-rotate").evaluate(o,{})*Math.PI/180,c=[];for(const t of e.positionedLines)for(const i of t.positionedGlyphs){if(!i.rect)continue;const o=i.rect||{};let h=4,p=!0,f=1,d=0;const y=(s||l)&&i.vertical,m=i.metrics.advance*i.scale/2;if(l&&e.verticalizable&&(d=t.lineOffset/2-(i.imageName?-(Ih-i.metrics.width*i.scale)/2:(i.scale-1)*Ih)),i.imageName){const t=a[i.imageName];p=t.sdf,f=t.pixelRatio,h=1/f;}const g=s?[i.x+m,i.y]:[0,0];let x=s?[0,0]:[i.x+m+r[0],i.y+r[1]-d],v=[0,0];y&&(v=x,x=[0,0]);const b=i.metrics.isDoubleResolution?2:1,w=(i.metrics.left-h)*i.scale-m+x[0],_=(-i.metrics.top-h)*i.scale+x[1],S=w+o.w/b*i.scale/f,A=_+o.h/b*i.scale/f,M=new n(w,_),k=new n(S,_),I=new n(w,A),E=new n(S,A);if(y){const t=new n(-m,m- -17),e=-Math.PI/2,r=12-m,s=new n(22-r,-(i.imageName?r:0)),o=new n(...v);M._rotateAround(e,t)._add(s)._add(o),k._rotateAround(e,t)._add(s)._add(o),I._rotateAround(e,t)._add(s)._add(o),E._rotateAround(e,t)._add(s)._add(o);}if(u){const t=Math.sin(u),e=Math.cos(u),n=[e,-t,t,e];M._matMult(n),k._matMult(n),I._matMult(n),E._matMult(n);}const T=new n(0,0),F=new n(0,0);c.push({tl:M,tr:k,bl:I,br:E,tex:o,writingMode:e.writingMode,glyphOffset:g,sectionIndex:i.sectionIndex,isSDF:p,pixelOffsetTL:T,pixelOffsetBR:F,minFontScaleX:0,minFontScaleY:0});}return c}(0,r,l,s,o,a,i,t.allowVerticalPlacement),g=t.textSizeData;let x=null;"source"===g.kind?(x=[mp*s.layout.get("text-size").evaluate(a,{})],x[0]>gp&&G(`${t.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):"composite"===g.kind&&(x=[mp*d.compositeTextSizes[0].evaluate(a,{},y),mp*d.compositeTextSizes[1].evaluate(a,{},y)],(x[0]>gp||x[1]>gp)&&G(`${t.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),t.addSymbols(t.text,m,x,l,o,a,c,e,u.lineStartIndex,u.lineLength,f,y);for(const e of h)p[e]=t.text.placedSymbolArray.length-1;return 4*m.length}function Ry(t){for(const e in t)return t[e];return null}function Ny(t,e,n,r){const i=t.compareText;if(e in i){const t=i[e];for(let e=t.length-1;e>=0;e--)if(r.dist(t[e])this.process())),this.subscription=tt(this.target,"message",(t=>this.receive(t)),!1),this.globalScope=Y(self)?t:window;}registerMessageHandler(t,e){this.messageHandlers[t]=e;}unregisterMessageHandler(t){delete this.messageHandlers[t];}sendAsync(t,e){return new Promise(((n,r)=>{const i=Math.round(1e18*Math.random()).toString(36).substring(0,10),s=e?tt(e.signal,"abort",(()=>{null==s||s.unsubscribe(),delete this.resolveRejects[i];const e={id:i,type:"",origin:location.origin,targetMapId:t.targetMapId,sourceMapId:this.mapId};this.target.postMessage(e);}),Lp):null;this.resolveRejects[i]={resolve:t=>{null==s||s.unsubscribe(),n(t);},reject:t=>{null==s||s.unsubscribe(),r(t);}};const o=[],a=Object.assign(Object.assign({},t),{id:i,sourceMapId:this.mapId,origin:location.origin,data:xs(t.data,o)});this.target.postMessage(a,{transfer:o});}))}receive(t){const e=t.data,n=e.id,r=["file://","resource://android","null"],i=[e.origin,location.origin],s=e.origin===location.origin,o=i.some((t=>r.includes(t)));if((s||o)&&(!e.targetMapId||this.mapId===e.targetMapId)){if(""===e.type){delete this.tasks[n];const t=this.abortControllers[n];return delete this.abortControllers[n],void(t&&t.abort())}if(Y(self)||e.mustQueue)return this.tasks[n]=e,this.taskQueue.push(n),void this.invoker.trigger();this.processTask(n,e);}}process(){if(0===this.taskQueue.length)return;const t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length>0&&this.invoker.trigger(),e&&this.processTask(t,e);}processTask(t,n){return e(this,void 0,void 0,(function*(){if(""===n.type){const e=this.resolveRejects[t];if(delete this.resolveRejects[t],!e)return;return void(n.error?e.reject(P(vs(n.error))):e.resolve(vs(n.data)))}if(!this.messageHandlers[n.type])return void this.completeTask(t,new Error(`Could not find a registered handler for ${n.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));const e=vs(n.data),r=new AbortController;this.abortControllers[t]=r;try{const i=yield this.messageHandlers[n.type](n.sourceMapId,e,r);this.completeTask(t,null,i);}catch(e){this.completeTask(t,P(e));}}))}completeTask(t,e,n){const r=[];delete this.abortControllers[t];const i={id:t,type:"",sourceMapId:this.mapId,origin:location.origin,error:e?xs(e):null,data:xs(n,r)};this.target.postMessage(i,{transfer:r});}remove(){this.invoker.remove(),this.subscription.unsubscribe();}},t.O=function(){var t=new f(16);return f!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.P=n,t.Q=function(t,e,n){var r,i,s,o,a,l,u,c,h,p,f,d,y=n[0],m=n[1],g=n[2];return e===t?(t[12]=e[0]*y+e[4]*m+e[8]*g+e[12],t[13]=e[1]*y+e[5]*m+e[9]*g+e[13],t[14]=e[2]*y+e[6]*m+e[10]*g+e[14],t[15]=e[3]*y+e[7]*m+e[11]*g+e[15]):(i=e[1],s=e[2],o=e[3],a=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],t[0]=r=e[0],t[1]=i,t[2]=s,t[3]=o,t[4]=a,t[5]=l,t[6]=u,t[7]=c,t[8]=h,t[9]=p,t[10]=f,t[11]=d,t[12]=r*y+a*m+h*g+e[12],t[13]=i*y+l*m+p*g+e[13],t[14]=s*y+u*m+f*g+e[14],t[15]=o*y+c*m+d*g+e[15]),t},t.R=Il,t.S=function(t,e,n){var r=n[0],i=n[1],s=n[2];return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*s,t[9]=e[9]*s,t[10]=e[10]*s,t[11]=e[11]*s,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.T=Ol,t.U=function(t,e,n){var r=e[0],i=e[1],s=e[2],o=e[3],a=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],y=e[12],m=e[13],g=e[14],x=e[15],v=n[0],b=n[1],w=n[2],_=n[3];return t[0]=v*r+b*a+w*h+_*y,t[1]=v*i+b*l+w*p+_*m,t[2]=v*s+b*u+w*f+_*g,t[3]=v*o+b*c+w*d+_*x,t[4]=(v=n[4])*r+(b=n[5])*a+(w=n[6])*h+(_=n[7])*y,t[5]=v*i+b*l+w*p+_*m,t[6]=v*s+b*u+w*f+_*g,t[7]=v*o+b*c+w*d+_*x,t[8]=(v=n[8])*r+(b=n[9])*a+(w=n[10])*h+(_=n[11])*y,t[9]=v*i+b*l+w*p+_*m,t[10]=v*s+b*u+w*f+_*g,t[11]=v*o+b*c+w*d+_*x,t[12]=(v=n[12])*r+(b=n[13])*a+(w=n[14])*h+(_=n[15])*y,t[13]=v*i+b*l+w*p+_*m,t[14]=v*s+b*u+w*f+_*g,t[15]=v*o+b*c+w*d+_*x,t},t.V=function(t,e){const n={};for(const r of e)r in t&&(n[r]=t[r]);return n},t.W=$p,t.X=O,t.Y=jp,t.Z=Up,t._=e,t.a=ot,t.a$=function(t){var e=new f(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.a0=c,t.a1=h,t.a2=K,t.a3=Jp,t.a4=Gp,t.a5=Xp,t.a6=T,t.a7=Zp,t.a8=tf,t.a9=25,t.aA=function(t){var e=t[0],n=t[1];return Math.sqrt(e*e+n*n)},t.aB=function(t){return t[0]=0,t[1]=0,t},t.aC=function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t},t.aD=_p,t.aE=A,t.aF=function(t,e,r,i){const s=e.y-t.y,o=e.x-t.x,a=i.y-r.y,l=i.x-r.x,u=a*o-l*s;if(0===u)return null;const c=(l*(t.y-r.y)-a*(t.x-r.x))/u;return new n(t.x+c*o,t.y+c*s)},t.aG=uy,t.aH=Ha,t.aI=function(t){let e=1/0,n=1/0,r=-1/0,i=-1/0;for(const s of t)e=Math.min(e,s.x),n=Math.min(n,s.y),r=Math.max(r,s.x),i=Math.max(i,s.y);return [e,n,r,i]},t.aJ=Ih,t.aK=F,t.aL=function(t,e,n,r,i=!1){if(!n[0]&&!n[1])return [0,0];const s=i?"map"===r?-t.bearingInRadians:0:"viewport"===r?t.bearingInRadians:0;if(s){const t=Math.sin(s),e=Math.cos(s);n=[n[0]*e-n[1]*t,n[0]*t+n[1]*e];}return [i?n[0]:F(e,n[0],t.zoom),i?n[1]:F(e,n[1],t.zoom)]},t.aN=vp,t.aO=Ly,t.aP=op,t.aQ=t=>"symbol"===t.type,t.aR=ec,t.aS=ao,t.aT=xu,t.aU=Xo,t.aV=ua,t.aW=sa,t.aX=nt,t.aY=Yp,t.aZ=b,t.a_=v,t.aa=Wp,t.ab=t=>{const e=window.document.createElement("video");return e.muted=!0,new Promise((n=>{e.onloadstart=()=>{n(e);};for(const n of t){const t=window.document.createElement("source");yt(n)||(e.crossOrigin="Anonymous"),t.src=n,e.appendChild(t);}}))},t.ac=zt,t.ad=function(){return R++},t.ae=Co,t.af=kp,t.ag=Jd,t.ah=yi,t.ai=Ga,t.aj=nf,t.ak=function(t){const e={};if(t.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((t,n,r,i)=>{const s=r||i;return e[n]=!s||s.toLowerCase(),""})),e["max-age"]){const t=parseInt(e["max-age"],10);isNaN(t)?delete e["max-age"]:e["max-age"]=t;}return e},t.al=L,t.am=85.051129,t.an=et,t.ao=function(t){return Math.pow(2,t)},t.ap=y,t.aq=qp,t.ar=function(t){return Math.log(t)/Math.LN2},t.as=function(t){var e=t[0],n=t[1];return e*e+n*n},t.at=function(t){if(!t.length)return new Set;const e=Math.max(...t.map((t=>t.canonical.z)));let n=1/0,r=-1/0,i=1/0,s=-1/0;const o=[];for(const a of t){const{x:t,y:l,z:u}=a.canonical,c=Math.pow(2,e-u),h=t*c,p=l*c;o.push({id:a,x:h,y:p}),hr&&(r=h),ps&&(s=p);}const a=new Set;for(const t of o)t.x!==n&&t.x!==r&&t.y!==i&&t.y!==s||a.add(t.id);return a},t.au=function(t,e){const n=Math.abs(2*t.wrap)-+(t.wrap<0),r=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||r-n||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x},t.av=class{constructor(t,e){this.max=t,this.onRemove=e,this.reset();}reset(){for(const t in this.data)for(const e of this.data[t])e.timeout&&clearTimeout(e.timeout),this.onRemove(e.value);return this.data={},this.order=[],this}add(t,e,n){const r=t.wrapped().key;void 0===this.data[r]&&(this.data[r]=[]);const i={value:e,timeout:void 0};if(void 0!==n&&(i.timeout=setTimeout((()=>{this.remove(t,i);}),n)),this.data[r].push(i),this.order.push(r),this.order.length>this.max){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value}getByKey(t){const e=this.data[t];return e?e[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,e){if(!this.has(t))return this;const n=t.wrapped().key,r=void 0===e?0:this.data[n].indexOf(e),i=this.data[n][r];return this.data[n].splice(r,1),i.timeout&&clearTimeout(i.timeout),0===this.data[n].length&&delete this.data[n],this.onRemove(i.value),this.order.splice(this.order.indexOf(n),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}filter(t){const e=[];for(const n in this.data)for(const r of this.data[n])t(r.value)||e.push(r);for(const t of e)this.remove(t.value.tileID,t);}},t.aw=function(t,e){let n=0,r=0;if("constant"===t.kind)r=t.layoutSize;else if("source"!==t.kind){const{interpolationType:i,minZoom:s,maxZoom:o}=t,a=i?L(mn.interpolationFactor(i,e,s,o),0,1):0;"camera"===t.kind?r=xn.number(t.minSize,t.maxSize,a):n=a;}return {uSizeT:n,uSize:r}},t.ay=function(t,{uSize:e,uSizeT:n},{lowerSize:r,upperSize:i}){return "source"===t.kind?r/mp:"composite"===t.kind?xn.number(r/mp,i/mp,n):e},t.az=I,t.b=H,t.b$=Ea,t.b0=function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t},t.b1=function(t,e){var n=e[0],r=e[1],i=e[2],s=n*n+r*r+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t},t.b2=w,t.b3=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},t.b4=function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t[3]=e[3]*n[3],t},t.b5=g,t.b6=function(t,e,n){const r=e[0]*n[0]+e[1]*n[1]+e[2]*n[2];return 0===r?null:(-(t[0]*n[0]+t[1]*n[1]+t[2]*n[2])-n[3])/r},t.b7=S,t.b8=function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t},t.b9=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]},t.bA=k,t.bB=function(t,e,n){var r=n[0],i=n[1],s=n[2],o=n[3],a=e[0],l=e[1],u=e[2],c=i*u-s*l,h=s*a-r*u,p=r*l-i*a;return t[0]=a+o*(c+=c)+i*(p+=p)-s*(h+=h),t[1]=l+o*h+s*c-r*p,t[2]=u+o*p+r*h-i*c,t},t.bC=function(t,e,n){const r=(i=[t[0],t[1],t[2],e[0],e[1],e[2],n[0],n[1],n[2]])[0]*((c=i[8])*(o=i[4])-(a=i[5])*(u=i[7]))+i[1]*(-c*(s=i[3])+a*(l=i[6]))+i[2]*(u*s-o*l);var i,s,o,a,l,u,c;if(0===r)return null;const h=w([],[e[0],e[1],e[2]],[n[0],n[1],n[2]]),p=w([],[n[0],n[1],n[2]],[t[0],t[1],t[2]]),f=w([],[t[0],t[1],t[2]],[e[0],e[1],e[2]]),d=b([],h,-t[3]);return v(d,d,b([],p,-e[3])),v(d,d,b([],f,-n[3])),b(d,d,1/r),d},t.bD=Op,t.bE=function(){return new Float64Array(4)},t.bF=function(t,e,n,r){var i=[],s=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],s[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),s[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),s[2]=i[2],t[0]=s[0]+n[0],t[1]=s[1]+n[1],t[2]=s[2]+n[2],t},t.bG=function(t,e,n,r){var i=[],s=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],s[0]=i[0],s[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),s[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),t[0]=s[0]+n[0],t[1]=s[1]+n[1],t[2]=s[2]+n[2],t},t.bH=function(t,e,n,r){var i=[],s=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],s[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),s[1]=i[1],s[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),t[0]=s[0]+n[0],t[1]=s[1]+n[1],t[2]=s[2]+n[2],t},t.bI=function(t,e,n){var r=Math.sin(n),i=Math.cos(n),s=e[0],o=e[1],a=e[2],l=e[3],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*i-u*r,t[1]=o*i-c*r,t[2]=a*i-h*r,t[3]=l*i-p*r,t[8]=s*r+u*i,t[9]=o*r+c*i,t[10]=a*r+h*i,t[11]=l*r+p*i,t},t.bJ=function(t,e){const n=D(t,360),r=D(e,360),i=r-n,s=r>n?i-360:i+360;return Math.abs(i)0?o:-o},t.bM=function(t,e){const n=D(t,2*Math.PI),r=D(e,2*Math.PI);return Math.min(Math.abs(n-r),Math.abs(n-r+2*Math.PI),Math.abs(n-r-2*Math.PI))},t.bN=function(){const t={},e=wt.$version;for(const n in wt.$root){const r=wt.$root[n];if(r.required){let i=null;i="version"===n?e:"array"===r.type?[]:{},null!=i&&(t[n]=i);}}return t},t.bO=ft,t.bP=bs,t.bQ=function t(e,n){if(Array.isArray(e)){if(!Array.isArray(n)||e.length!==n.length)return !1;for(let r=0;r"raster"===t.type,t.bV=j,t.bW=function(t,e){if(!t)return [{command:"setStyle",args:[e]}];let n=[];try{if(!At(t.version,e.version))return [{command:"setStyle",args:[e]}];At(t.center,e.center)||n.push({command:"setCenter",args:[e.center]}),At(t.state,e.state)||n.push({command:"setGlobalState",args:[e.state]}),At(t.centerAltitude,e.centerAltitude)||n.push({command:"setCenterAltitude",args:[e.centerAltitude]}),At(t.zoom,e.zoom)||n.push({command:"setZoom",args:[e.zoom]}),At(t.bearing,e.bearing)||n.push({command:"setBearing",args:[e.bearing]}),At(t.pitch,e.pitch)||n.push({command:"setPitch",args:[e.pitch]}),At(t.roll,e.roll)||n.push({command:"setRoll",args:[e.roll]}),At(t.sprite,e.sprite)||n.push({command:"setSprite",args:[e.sprite]}),At(t.glyphs,e.glyphs)||n.push({command:"setGlyphs",args:[e.glyphs]}),At(t.transition,e.transition)||n.push({command:"setTransition",args:[e.transition]}),At(t.light,e.light)||n.push({command:"setLight",args:[e.light]}),At(t.terrain,e.terrain)||n.push({command:"setTerrain",args:[e.terrain]}),At(t.sky,e.sky)||n.push({command:"setSky",args:[e.sky]}),At(t.projection,e.projection)||n.push({command:"setProjection",args:[e.projection]});const r={},i=[];!function(t,e,n,r){let i;for(i in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,i)&&(Object.prototype.hasOwnProperty.call(e,i)||It(i,n,r));for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(Object.prototype.hasOwnProperty.call(t,i)?At(t[i],e[i])||("geojson"===t[i].type&&"geojson"===e[i].type&&Tt(t,e,i)?Mt(n,{command:"setGeoJSONSourceData",args:[i,e[i].data]}):Et(i,e,n,r)):kt(i,e,n));}(t.sources,e.sources,i,r);const s=[];t.layers&&t.layers.forEach((t=>{"source"in t&&r[t.source]?n.push({command:"removeLayer",args:[t.id]}):s.push(t);})),n=n.concat(i),function(t,e,n){e=e||[];const r=(t=t||[]).map(Pt),i=e.map(Pt),s=t.reduce(Dt,{}),o=e.reduce(Dt,{}),a=r.slice(),l=Object.create(null);let u,c,h,p,f;for(let t=0,e=0;tp?(i=Math.acos(s),o=Math.sin(i),a=Math.sin((1-r)*i)/o,l=Math.sin(r*i)/o):(a=1-r,l=r),t[0]=a*u+l*d,t[1]=a*c+l*y,t[2]=a*h+l*m,t[3]=a*f+l*g,t},t.bm=function(t){const e=new Float64Array(9);var n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g,x,v;h=(i=(r=t)[0])*(l=i+i),p=(s=r[1])*l,d=(o=r[2])*l,y=o*(u=s+s),g=(a=r[3])*l,x=a*u,v=a*(c=o+o),(n=e)[0]=1-(f=s*u)-(m=o*c),n[3]=p-v,n[6]=d+x,n[1]=p+v,n[4]=1-h-m,n[7]=y-g,n[2]=d-x,n[5]=y+g,n[8]=1-h-f;const b=nt(-Math.asin(L(e[2],-1,1)));let w,_;return Math.hypot(e[5],e[8])<.001?(w=0,_=-nt(Math.atan2(e[3],e[4]))):(w=nt(0===e[5]&&0===e[8]?0:Math.atan2(e[5],e[8])),_=nt(0===e[1]&&0===e[0]?0:Math.atan2(e[1],e[0]))),{roll:w,pitch:b+90,bearing:_}},t.bn=function(t,e){return t.roll==e.roll&&t.pitch==e.pitch&&t.bearing==e.bearing},t.bo=Te,t.bp=ka,t.bq=vu,t.br=bu,t.bs=gu,t.bt=z,t.bu=B,t.bv=Ne,t.bw=function(t,e,n,r,i){return z(r,i,L((t-e)/(n-e),0,1))},t.bx=function(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t},t.by=D,t.bz=function(){return new Float64Array(3)},t.c=ut,t.c$=si,t.c0=class extends Ma{constructor(t,e){super(t,e),this.current=Ta;}set(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(let e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}}},t.c1=Ia,t.c2=class extends Ma{constructor(t,e){super(t,e),this.current=[0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));}},t.c3=class extends Ma{constructor(t,e){super(t,e),this.current=[0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));}},t.c4=d,t.c5=function(t,e){var n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},t.c6=function(t,e,n){var r=e[0],i=e[1],s=e[2];return t[0]=r*n[0]+i*n[3]+s*n[6],t[1]=r*n[1]+i*n[4]+s*n[7],t[2]=r*n[2]+i*n[5]+s*n[8],t},t.c7=function(t,e,n,r,i,s,o){var a=1/(e-n),l=1/(r-i),u=1/(s-o);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+n)*a,t[13]=(i+r)*l,t[14]=(o+s)*u,t[15]=1,t},t.c8=class extends Ma{constructor(t,e){super(t,e),this.current=new Array;}set(t){if(t!=this.current){this.current=t;const e=new Float32Array(4*t.length);for(let n=0;n25||r<0||r>=1||n<0||n>=1)},t.cE=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.cF=class extends co{},t.cG=pt,t.cH=function(t,e){ut.REGISTERED_PROTOCOLS[t]=e;},t.cI=function(t){delete ut.REGISTERED_PROTOCOLS[t];},t.cJ=function(t,e){const n={};for(let r=0;rt*Ih));}let x=u?"center":s.get("text-justify").evaluate(o,{},e.canonical);const b="point"===s.get("symbol-placement")?s.get("text-max-width").evaluate(o,{},e.canonical)*Ih:1/0,w=()=>{e.bucket.allowVerticalPlacement&&As(n)&&(m.vertical=sp(g,e.glyphMap,e.glyphPositions,e.imagePositions,p,b,l,h,"left",a,v,t.ax.vertical,!0,d,f));};if(!u&&y){const n=new Set;if("auto"===x)for(let t=0;tQd(t,e,n)),t.layers[r]);}(t,n,e),n.finish()},t.cT=function(t,e,n,r,i,s){let o=cy(t,e,n,i,0);return o=cy(o,e,r,s,1),o},t.cU=class{constructor(t){this.maxEntries=t,this.map=new Map;}get(t){const e=this.map.get(t);return void 0!==e&&(this.map.delete(t),this.map.set(t,e)),e}set(t,e){if(this.map.has(t))this.map.delete(t);else if(this.map.size>=this.maxEntries){const t=this.map.keys().next().value;this.map.delete(t);}this.map.set(t,e);}clear(){this.map.clear();}},t.cV=Nu,t.cW=Rh,t.cX=Wd,t.cY=function(t,n,r,i,s){return e(this,void 0,void 0,(function*(){if(h())try{return yield K(t,n,r,i,s)}catch(t){}return function(t,e,n,r,i){const s=t.width,o=t.height;J&&Q||(J=new OffscreenCanvas(s,o),Q=J.getContext("2d",{willReadFrequently:!0})),J.width=s,J.height=o,Q.drawImage(t,0,0,s,o);const a=Q.getImageData(e,n,r,i);return Q.clearRect(0,0,s,o),a.data}(t,n,r,i,s)}))},t.cZ=$l,t.c_=class{constructor(t,e){this.layers={[Jd]:this},this.name=Jd,this.version=e?e.version:1,this.extent=e?e.extent:4096,this.length=t.length,this.features=t;}feature(t){return new Kd(this.features[t],this.extent)}},t.ca=class extends So{},t.cb=Ah,t.cc=class extends Mo{},t.cd=Fl,t.ce=function(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},t.cf=Tl,t.cg=function(t,e,n){var r=e[0],i=e[1],s=e[2],o=n[3]*r+n[7]*i+n[11]*s+n[15];return t[0]=(n[0]*r+n[4]*i+n[8]*s+n[12])/(o=o||1),t[1]=(n[1]*r+n[5]*i+n[9]*s+n[13])/o,t[2]=(n[2]*r+n[6]*i+n[10]*s+n[14])/o,t},t.ch=class extends ho{},t.ci=class extends Do{},t.cj=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]},t.ck=function(t,e){var n=t[0],r=t[1],i=t[2],s=t[3],o=t[4],a=t[5],l=t[6],u=t[7],c=t[8],h=t[9],f=t[10],d=t[11],y=t[12],m=t[13],g=t[14],x=t[15],v=e[0],b=e[1],w=e[2],_=e[3],S=e[4],A=e[5],M=e[6],k=e[7],I=e[8],E=e[9],T=e[10],F=e[11],P=e[12],D=e[13],z=e[14],B=e[15];return Math.abs(n-v)<=p*Math.max(1,Math.abs(n),Math.abs(v))&&Math.abs(r-b)<=p*Math.max(1,Math.abs(r),Math.abs(b))&&Math.abs(i-w)<=p*Math.max(1,Math.abs(i),Math.abs(w))&&Math.abs(s-_)<=p*Math.max(1,Math.abs(s),Math.abs(_))&&Math.abs(o-S)<=p*Math.max(1,Math.abs(o),Math.abs(S))&&Math.abs(a-A)<=p*Math.max(1,Math.abs(a),Math.abs(A))&&Math.abs(l-M)<=p*Math.max(1,Math.abs(l),Math.abs(M))&&Math.abs(u-k)<=p*Math.max(1,Math.abs(u),Math.abs(k))&&Math.abs(c-I)<=p*Math.max(1,Math.abs(c),Math.abs(I))&&Math.abs(h-E)<=p*Math.max(1,Math.abs(h),Math.abs(E))&&Math.abs(f-T)<=p*Math.max(1,Math.abs(f),Math.abs(T))&&Math.abs(d-F)<=p*Math.max(1,Math.abs(d),Math.abs(F))&&Math.abs(y-P)<=p*Math.max(1,Math.abs(y),Math.abs(P))&&Math.abs(m-D)<=p*Math.max(1,Math.abs(m),Math.abs(D))&&Math.abs(g-z)<=p*Math.max(1,Math.abs(g),Math.abs(z))&&Math.abs(x-B)<=p*Math.max(1,Math.abs(x),Math.abs(B))},t.cl=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.cm=t=>"circle"===t.type,t.cn=t=>"heatmap"===t.type,t.co=t=>"line"===t.type,t.cp=t=>"fill"===t.type,t.cq=t=>"fill-extrusion"===t.type,t.cr=t=>"hillshade"===t.type,t.cs=t=>"color-relief"===t.type,t.ct=t=>"background"===t.type,t.cu=t=>"custom"===t.type,t.cv=C,t.cw=function(t,e,n){if(e<=0)return t;const r=1/e;return void 0===n||Math.abs(n)<1e-10?Math.round(t*r)/r:(n>0?Math.ceil(t*r-1e-9):Math.floor(t*r+1e-10))/r},t.cx=function(t,e,n){const r=E(e.x-n.x,e.y-n.y),i=E(t.x-n.x,t.y-n.y);var s,o;return nt(Math.atan2(r[0]*i[1]-r[1]*i[0],(s=r)[0]*(o=i)[0]+s[1]*o[1]))},t.cy=V,t.cz=function(t,e){var n;if(!it[e])return !1;const r=null==t?void 0:t.target,i=(null===(n=null==r?void 0:r.ownerDocument)||void 0===n?void 0:n.defaultView)||window;return t instanceof i.MouseEvent||t instanceof i.WheelEvent},t.d=P,t.d0=class{constructor(t,e){const n=(e=this.options=Object.assign({},sh,e)).debug;if(n&&console.time("preprocess data"),e.maxZoom<0||e.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(e.promoteId&&e.generateId)throw new Error("promoteId and generateId cannot be used together.");let r=pc(t,e);n&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",e.indexMaxZoom,e.indexMaxPoints),console.time("generate tiles")),r=Lc(r,e),e.updateable&&(this.source=r),this.initializeIndex(r,e);}initializeIndex(t,e){this.tileIndex=e.cluster?new qc(e.clusterOptions):new rh(e),t.length&&this.tileIndex.initialize(t);}getTile(t,e,n){return e=+e,n=+n,(t=+t)<0||t>24?null:this.tileIndex.getTile(t,e,n)}updateData(t,e){const n=this.options;if(!n.updateable)throw new Error("to update tile geojson `updateable` option must be set to true");let{affected:r,source:i}=function(t,e,n){const r=function(t,e){return t?{removeAll:t.removeAll,remove:new Set(t.remove||[]),add:new Map(t.add?.map((t=>[e.promoteId?t.properties[e.promoteId]:t.id,t]))),update:new Map(t.update?.map((t=>[t.id,t])))}:{remove:new Set,add:new Map,update:new Map}}(e,n);let i=[];if(r.removeAll&&(i=t,t=[]),r.remove.size||r.add.size){const e=[];for(const n of t)(r.remove.has(n.id)||r.add.has(n.id))&&e.push(n);if(e.length){i.push(...e);const n=new Set(e.map((t=>t.id)));t=t.filter((t=>!n.has(t.id)));}if(r.add.size){let e=pc({type:"FeatureCollection",features:Array.from(r.add.values())},n);e=Lc(e,n),i.push(...e),t.push(...e);}}if(r.update.size){const e=new Map,s=[];for(const n of t)r.update.has(n.id)?e.set(n.id,[...e.get(n.id)||[],n]):s.push(n);for(const[t,o]of r.update){const r=e.get(t);if(!r||0===r.length)continue;const a=Nc(r,o,n);i.push(...r,...a),s.push(...a);}t=s;}return {affected:i,source:t}}(this.source,t,n);e&&({affected:r,source:i}=this.filterUpdate(i,r,e)),r.length&&(this.source=i,this.tileIndex.updateIndex(i,r,n));}filterUpdate(t,e,n){const r=new Set;for(const i of t)null!=i.id&&(n(xc(i))||(e.push(i),r.add(i.id)));return {affected:e,source:t=t.filter((t=>!r.has(t.id)))}}getData(){if(!this.options.updateable)throw new Error("to retrieve data the `updateable` option must be set to true");return {type:"FeatureCollection",features:this.source.map((t=>xc(t)))}}updateClusterOptions(t,e){const n=this.options.cluster;this.options.cluster=t,this.options.clusterOptions=e,n!=t?this.initializeIndex(this.source,this.options):this.tileIndex.updateIndex(this.source,[],this.options);}getClusterExpansionZoom(t){return this.tileIndex.getClusterExpansionZoom(t)}getClusterChildren(t){return this.tileIndex.getChildren(t)}getClusterLeaves(t,e,n){return this.tileIndex.getLeaves(t,e,n)}},t.d1=Bs,t.e=$,t.f=yt,t.g=ct,t.h=t=>e(void 0,void 0,void 0,(function*(){if(0===t.byteLength)return createImageBitmap(new ImageData(1,1));const e=new Blob([new Uint8Array(t)],{type:"image/png"});try{return createImageBitmap(e)}catch(t){throw new Error(`Could not load image because of ${P(t).message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}})),t.i=Y,t.j=t=>new Promise(((e,n)=>{const r=new Image;r.onload=()=>{e(r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame((()=>r.src=W));},r.onerror=()=>n(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const i=new Blob([new Uint8Array(t)],{type:"image/png"});r.src=t.byteLength?URL.createObjectURL(i):W;})),t.k=(t,e)=>dt($(t,{type:"json"}),e),t.l=vt,t.m=dt,t.n=xt,t.o=(t,e)=>dt($(t,{type:"arrayBuffer"}),e),t.p=ep,t.q=function(t){return new Rh(t).readFields(Jh,[])},t.r=function(t){return /[\u02EA\u02EB\u1100-\u11FF\u2E80-\u2FDF\u3000-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFE10-\uFE1F\uFE30-\uFE4F\uFF00-\uFFEF]|\uD81B[\uDFE0-\uDFFF]|[\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFFF]|\uD82C[\uDC00-\uDEFB]|\uD83C[\uDE00-\uDEFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79]/gim.test(String.fromCodePoint(t))},t.s=tt,t.t=kl,t.u=Ks,t.v=ss,t.w=G,t.x=wt,t.y=Rs,t.z=as;})); - -define("worker",["./shared"],(function(e){"use strict";class t{constructor(e,t){this.keyCache={},e&&this.replace(e,t);}replace(e,t){this._layerConfigs={},this._layers={},this.update(e,[],t);}update(t,i,s){for(const i of t){this._layerConfigs[i.id]=i;const t=this._layers[i.id]=e.bT(i,s);t._featureFilter=e.ah(t.filter,s),this.keyCache[i.id]&&delete this.keyCache[i.id];}for(const e of i)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const r=e.cJ(Object.values(this._layerConfigs),this.keyCache);for(const t of r){const i=t.map((e=>this._layers[e.id])),s=i[0];if(s.isHidden())continue;const r=s.source||"";let o=this.familiesBySource[r];o||(o=this.familiesBySource[r]={});const n=s.sourceLayer||e.ag;let a=o[n];a||(a=o[n]=[]),a.push(i);}}}class i{constructor(t){const i={},s=[];for(const e in t){const r=t[e],o=i[e]={};for(const e in r){const t=r[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const i={x:0,y:0,w:t.bitmap.width+2,h:t.bitmap.height+2};s.push(i),o[e]={rect:i,metrics:t.metrics};}}const{w:r,h:o}=e.p(s),n=new e.t({width:r||1,height:o||1});for(const s in t){const r=t[s];for(const t in r){const o=r[+t];if(!o||0===o.bitmap.width||0===o.bitmap.height)continue;const a=i[s][t].rect;e.t.copy(o.bitmap,n,{x:0,y:0},{x:a.x+1,y:a.y+1},o.bitmap);}}this.image=n,this.positions=i;}}e.cK("GlyphAtlas",i);class s{constructor(t){this.tileID=new e.a3(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.inFlightDependencies=[];}parse(t,s,o,n,a){return e._(this,void 0,void 0,(function*(){this.status="parsing",this.data=t,this.collisionBoxArray=new e.ae;const l=new e.cL(Object.keys(t.layers).sort()),c=new e.cM(this.tileID,this.promoteId);c.bucketLayerIDs=[];const h={},d={featureIndex:c,iconDependencies:{},patternDependencies:{},glyphDependencies:{},dashDependencies:{},availableImages:o,subdivisionGranularity:a},u=s.familiesBySource[this.source];for(const i in u){const s=t.layers[i];if(!s)continue;1===s.version&&e.w(`Vector tile source "${this.source}" layer "${i}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const n=l.encode(i),a=[];for(let e=0;ee.id))));}}const g=e.bY(d.glyphDependencies,(e=>Object.keys(e).map(Number)));for(const e of this.inFlightDependencies)null==e||e.abort();this.inFlightDependencies=[];let p=Promise.resolve({});if(Object.keys(g).length){const e=new AbortController;this.inFlightDependencies.push(e),p=n.sendAsync({type:"GG",data:{stacks:g,source:this.source,tileID:this.tileID,type:"glyphs"}},e);}const f=Object.keys(d.iconDependencies);let y=Promise.resolve({});if(f.length){const e=new AbortController;this.inFlightDependencies.push(e),y=n.sendAsync({type:"GI",data:{icons:f,source:this.source,tileID:this.tileID,type:"icons"}},e);}const v=Object.keys(d.patternDependencies);let m=Promise.resolve({});if(v.length){const e=new AbortController;this.inFlightDependencies.push(e),m=n.sendAsync({type:"GI",data:{icons:v,source:this.source,tileID:this.tileID,type:"patterns"}},e);}const _=d.dashDependencies;let S=Promise.resolve({});if(Object.keys(_).length){const e=new AbortController;this.inFlightDependencies.push(e),S=n.sendAsync({type:"GDA",data:{dashes:_}},e);}const[w,b,I,T]=yield Promise.all([p,y,m,S]),k=new i(w),x=new e.cN(b,I);for(const t in h){const i=h[t];i instanceof e.af?(r(i.layers,this.zoom,o),e.cO({bucket:i,glyphMap:w,glyphPositions:k.positions,imageMap:b,imagePositions:x.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical,subdivisionGranularity:d.subdivisionGranularity})):i.hasDependencies&&(i instanceof e.cP||i instanceof e.cQ||i instanceof e.cR)&&(r(i.layers,this.zoom,o),i.addFeatures(d,this.tileID.canonical,x.patternPositions,T));}return this.status="done",{buckets:Object.values(h).filter((e=>!e.isEmpty())),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:k.image,imageAtlas:x,dashPositions:T,glyphMap:this.returnDependencies?w:null,iconMap:this.returnDependencies?b:null,glyphPositions:this.returnDependencies?k.positions:null}}))}}function r(t,i,s){const r=new e.J(i);for(const e of t)e.recalculate(r,s);}class o{constructor(){this.loading={},this.loaded={},this.parsing={};}startLoading(e,t){this.loading[e]=t;}finishLoading(e){delete this.loading[e];}abort(e){const t=this.loading[e];(null==t?void 0:t.abort)&&(t.abort.abort(),delete this.loading[e]);}setParsing(e,t){this.parsing[e]=t;}consumeParsing(e){const t=this.parsing[e];if(t)return delete this.parsing[e],t}clearParsing(e){delete this.parsing[e];}markLoaded(e,t){this.loaded[e]=t;}getLoaded(e){const t=this.loaded[e];if(t)return t}removeLoaded(e){delete this.loaded[e];}clearLoaded(){this.loaded={};}}class n{constructor(e){this.start=`${e}#start`,this.end=`${e}#end`,this.measure=e,performance.mark(this.start);}finish(){performance.mark(this.end);let e=performance.getEntriesByName(this.measure);return 0===e.length&&(performance.measure(this.measure,this.start,this.end),e=performance.getEntriesByName(this.measure),performance.clearMarks(this.start),performance.clearMarks(this.end),performance.clearMeasures(this.measure)),e}}class a{constructor(e,t,i,s,r){this.type=e,this.properties=i||{},this.extent=r,this.pointsArray=t,this.id=s;}loadGeometry(){return this.pointsArray.map((t=>t.map((t=>new e.P(t.x,t.y)))))}}class l{constructor(e,t,i){this.version=2,this._myFeatures=e,this.name=t,this.length=e.length,this.extent=i;}feature(e){return this._myFeatures[e]}}class c{constructor(){this.layers={};}addLayer(e){this.layers[e.name]=e;}}function h(t){let i=e.cS(t);return 0===i.byteOffset&&i.byteLength===i.buffer.byteLength||(i=new Uint8Array(i)),{vectorTile:t,rawData:i.buffer}}function d(t,i,s){const{extent:r}=t,o=Math.pow(2,s.z-i.z),n=(s.x-i.x*o)*r,c=(s.y-i.y*o)*r,h=[];for(let i=0;i0&&u.addLayer(r);}const p=h(u);return this.overzoomedTileResultCache.set(a,p),p}reloadTile(t){return e._(this,void 0,void 0,(function*(){const e=t.uid,i=this.tileState.getLoaded(e);if(!i)throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");if(i.showCollisionBoxes=t.showCollisionBoxes,"parsing"===i.status){const s=this.tileState.consumeParsing(e);return yield this._parseWorkerTile(i,t,s)}if("done"===i.status&&i.vectorTile)return yield this._parseWorkerTile(i,t)}))}abortTile(t){return e._(this,void 0,void 0,(function*(){this.tileState.abort(t.uid);}))}removeTile(t){return e._(this,void 0,void 0,(function*(){this.tileState.removeLoaded(t.uid);}))}}class g{constructor(){this.loaded={};}loadTile(t){return e._(this,void 0,void 0,(function*(){const{uid:i,encoding:s,rawImageData:r,redFactor:o,greenFactor:n,blueFactor:a,baseShift:l}=t,c=r.width+2,h=r.height+2,d=e.b(r)?new e.R({width:c,height:h},yield e.cY(r,-1,-1,c,h)):r,u=new e.cZ(i,d,s,o,n,a,l);return this.loaded||(this.loaded={}),this.loaded[i]=u,u}))}removeTile(e){const t=this.loaded,i=e.uid;(null==t?void 0:t[i])&&delete t[i];}}class p{constructor(e,t,i,s=f){this.actor=e,this.layerIndex=t,this.availableImages=i,this.tileState=new o,this._createGeoJSONIndex=s;}loadVectorTile(t){if(!this._geoJSONIndex)throw new Error("Unable to parse the data into a cluster or geojson");const{z:i,x:s,y:r}=t.tileID.canonical,o=this._geoJSONIndex.getTile(i,s,r);return o?h(new e.c_(o.features,{version:2,extent:e.a6})):null}loadTile(t){return e._(this,void 0,void 0,(function*(){const{uid:e}=t,i=new s(t);i.abort=new AbortController;try{const s=this.loadVectorTile(t);if(!s)return null;const{vectorTile:r,rawData:o}=s;i.vectorTile=r,this.tileState.markLoaded(e,i);const n={rawData:o};this.tileState.setParsing(e,n);try{return yield this._parseWorkerTile(i,t,n)}finally{this.tileState.clearParsing(e);}}catch(t){throw i.status="done",this.tileState.markLoaded(e,i),t}}))}_reloadLoadedTile(t){return e._(this,void 0,void 0,(function*(){const e=t.uid,i=this.tileState.getLoaded(e);if(!i)throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");if(i.showCollisionBoxes=t.showCollisionBoxes,"parsing"===i.status){const s=this.tileState.consumeParsing(e);return yield this._parseWorkerTile(i,t,s)}if("done"===i.status&&i.vectorTile)return yield this._parseWorkerTile(i,t)}))}_parseWorkerTile(t,i,s){return e._(this,void 0,void 0,(function*(){let r=yield t.parse(t.vectorTile,this.layerIndex,this.availableImages,this.actor,i.subdivisionGranularity);if(s){const{rawData:t}=s;r=e.e({rawTileData:t.slice(0),encoding:"mvt"},r);}return r}))}abortTile(t){return e._(this,void 0,void 0,(function*(){this.tileState.abort(t.uid);}))}removeTile(t){return e._(this,void 0,void 0,(function*(){this.tileState.removeLoaded(t.uid);}))}loadData(t){return e._(this,void 0,void 0,(function*(){var i;null===(i=this._pendingRequest)||void 0===i||i.abort();const s=this._startRequestTiming(t);this._pendingRequest=new AbortController;try{yield this.loadAndProcessGeoJSON(t,this._pendingRequest),delete this._pendingRequest,this.tileState.clearLoaded();const e={};return t.request&&(e.data=t.data),this._finishRequestTiming(s,t,e),e}catch(t){if(delete this._pendingRequest,!e.$(t))throw t;return {abandoned:!0}}}))}_startRequestTiming(e){var t;if(null===(t=e.request)||void 0===t?void 0:t.collectResourceTiming)return new n(e.request.url)}_finishRequestTiming(e,t,i){const s=null==e?void 0:e.finish();s&&(i.resourceTiming={[t.source]:JSON.parse(JSON.stringify(s))});}reloadTile(e){return this.tileState.getLoaded(e.uid)?this._reloadLoadedTile(e):this.loadTile(e)}loadAndProcessGeoJSON(t,i){return e._(this,void 0,void 0,(function*(){var s;if(t.request&&(t.data=(yield e.k(t.request,i)).data),t.data)return t.data=this._filterGeoJSON(t.data,t.filter),void(this._geoJSONIndex=this._createGeoJSONIndex(t.data,t));if(t.dataDiff)return null!==(s=this._geoJSONIndex)&&void 0!==s||(this._geoJSONIndex=this._createGeoJSONIndex({type:"FeatureCollection",features:[]},t)),void this._geoJSONIndex.updateData(t.dataDiff,this._getFilterPredicate(t.filter));if(t.updateCluster&&this._geoJSONIndex.updateClusterOptions(t.geojsonVtOptions.cluster,y(t)),null==this._geoJSONIndex)throw new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`)}))}_filterGeoJSON(e,t){if("FeatureCollection"!==e.type)return e;const i=this._getFilterPredicate(t);return i?{type:"FeatureCollection",features:e.features.filter((e=>i(e)))}:e}_getFilterPredicate(t){if("boolean"!=typeof t&&!(null==t?void 0:t.length))return;const i=e.c$(t,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if("error"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(", "));return e=>i.value.evaluate({zoom:0},e)}removeSource(t){return e._(this,void 0,void 0,(function*(){var e;null===(e=this._pendingRequest)||void 0===e||e.abort();}))}getClusterExpansionZoom(e){return this._geoJSONIndex.getClusterExpansionZoom(e.clusterId)}getClusterChildren(e){return this._geoJSONIndex.getClusterChildren(e.clusterId)}getClusterLeaves(e){return this._geoJSONIndex.getClusterLeaves(e.clusterId,e.limit,e.offset)}}function f(t,i){const s=e.e(i.geojsonVtOptions||{},{updateable:!0,clusterOptions:y(i)});return new e.d0(t,s)}function y({geojsonVtOptions:t,clusterProperties:i}){if(!i||!t.clusterOptions)return t.clusterOptions;const s={},r={},o={accumulated:null,zoom:0},n={properties:null},a=Object.keys(i);for(const t of a){const[o,n]=i[t],a=e.c$(n),l=e.c$("string"==typeof o?[o,["accumulated"],["get",t]]:o);s[t]=a.value,r[t]=l.value;}return t.clusterOptions.map=e=>{n.properties=e;const t={};for(const e of a)t[e]=s[e].evaluate(o,n);return t},t.clusterOptions.reduce=(e,t)=>{n.properties=t;for(const t of a)o.accumulated=e[t],e[t]=r[t].evaluate(o,n);},t.clusterOptions}class v{constructor(t){this.self=t,this.actor=new e.N(t),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.globalStates=new Map,this.self.registerWorkerSource=(e,t)=>{if(this.externalWorkerSourceTypes[e])throw new Error(`Worker source with name "${e}" already registered.`);this.externalWorkerSourceTypes[e]=t;},this.self.addProtocol=e.cH,this.self.removeProtocol=e.cI,this.self.registerRTLTextPlugin=t=>{e.d1.setMethods(t);},this.self.makeRequest=e.m,this.actor.registerMessageHandler("LDT",((e,t)=>this._getDEMWorkerSource(e,t.source).loadTile(t))),this.actor.registerMessageHandler("RDT",((t,i)=>e._(this,void 0,void 0,(function*(){this._getDEMWorkerSource(t,i.source).removeTile(i);})))),this.actor.registerMessageHandler("GCEZ",((t,i)=>e._(this,void 0,void 0,(function*(){return this._getWorkerSource(t,i.type,i.source).getClusterExpansionZoom(i)})))),this.actor.registerMessageHandler("GCC",((t,i)=>e._(this,void 0,void 0,(function*(){return this._getWorkerSource(t,i.type,i.source).getClusterChildren(i)})))),this.actor.registerMessageHandler("GCL",((t,i)=>e._(this,void 0,void 0,(function*(){return this._getWorkerSource(t,i.type,i.source).getClusterLeaves(i)})))),this.actor.registerMessageHandler("LD",((e,t)=>this._getWorkerSource(e,t.type,t.source).loadData(t))),this.actor.registerMessageHandler("LT",((e,t)=>this._getWorkerSource(e,t.type,t.source).loadTile(t))),this.actor.registerMessageHandler("RT",((e,t)=>this._getWorkerSource(e,t.type,t.source).reloadTile(t))),this.actor.registerMessageHandler("AT",((e,t)=>this._getWorkerSource(e,t.type,t.source).abortTile(t))),this.actor.registerMessageHandler("RMT",((e,t)=>this._getWorkerSource(e,t.type,t.source).removeTile(t))),this.actor.registerMessageHandler("RS",((t,i)=>e._(this,void 0,void 0,(function*(){var e,s;if(!(null===(s=null===(e=this.workerSources[t])||void 0===e?void 0:e[i.type])||void 0===s?void 0:s[i.source]))return;const r=this.workerSources[t][i.type][i.source];delete this.workerSources[t][i.type][i.source],void 0!==r.removeSource&&r.removeSource(i);})))),this.actor.registerMessageHandler("RM",(t=>e._(this,void 0,void 0,(function*(){delete this.layerIndexes[t],delete this.availableImages[t],delete this.workerSources[t],delete this.demWorkerSources[t],this.globalStates.delete(t);})))),this.actor.registerMessageHandler("SR",((t,i)=>e._(this,void 0,void 0,(function*(){this.referrer=i;})))),this.actor.registerMessageHandler("SRPS",((e,t)=>this._syncRTLPluginState(e,t))),this.actor.registerMessageHandler("IS",((t,i)=>e._(this,void 0,void 0,(function*(){this.self.importScripts(i);})))),this.actor.registerMessageHandler("SI",((e,t)=>this._setImages(e,t))),this.actor.registerMessageHandler("UL",((t,i)=>e._(this,void 0,void 0,(function*(){this._getLayerIndex(t).update(i.layers,i.removedIds,this._getGlobalState(t));})))),this.actor.registerMessageHandler("UGS",((t,i)=>e._(this,void 0,void 0,(function*(){const e=this._getGlobalState(t);for(const t in i)e[t]=i[t];})))),this.actor.registerMessageHandler("SL",((t,i)=>e._(this,void 0,void 0,(function*(){this._getLayerIndex(t).replace(i,this._getGlobalState(t));}))));}_getGlobalState(e){let t=this.globalStates.get(e);return t||(t={},this.globalStates.set(e,t)),t}_setImages(t,i){return e._(this,void 0,void 0,(function*(){this.availableImages[t]=i;for(const e in this.workerSources[t]){const s=this.workerSources[t][e];for(const e in s)s[e].availableImages=i;}}))}_syncRTLPluginState(t,i){return e._(this,void 0,void 0,(function*(){return yield e.d1.syncState(i,this.self.importScripts)}))}_getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}_getLayerIndex(e){let i=this.layerIndexes[e];return i||(i=this.layerIndexes[e]=new t),i}_getWorkerSource(e,t,i){var s,r;if((s=this.workerSources)[e]||(s[e]={}),(r=this.workerSources[e])[t]||(r[t]={}),!this.workerSources[e][t][i]){const s={sendAsync:(t,i)=>(t.targetMapId=e,this.actor.sendAsync(t,i))};switch(t){case "vector":this.workerSources[e][t][i]=new u(s,this._getLayerIndex(e),this._getAvailableImages(e));break;case "geojson":this.workerSources[e][t][i]=new p(s,this._getLayerIndex(e),this._getAvailableImages(e));break;default:this.workerSources[e][t][i]=new this.externalWorkerSourceTypes[t](s,this._getLayerIndex(e),this._getAvailableImages(e));}}return this.workerSources[e][t][i]}_getDEMWorkerSource(e,t){var i,s;return (i=this.demWorkerSources)[e]||(i[e]={}),(s=this.demWorkerSources[e])[t]||(s[t]=new g),this.demWorkerSources[e][t]}}return e.i(self)&&(self.worker=new v(self)),v})); - -define("index",["exports","./shared"],(function(e,t){"use strict";var i="5.24.0";function o(){var e=new t.A(4);return t.A!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}let a,r,s;const n={frame(e,i,o,a){const r=a||window,s=r.requestAnimationFrame((e=>{n(),i(e);})),{unsubscribe:n}=t.s(e.signal,"abort",(()=>{n(),r.cancelAnimationFrame(s),o(new t.a(e.signal.reason));}),!1);},frameAsync(e,t){return new Promise(((i,o)=>{this.frame(e,i,o,t);}))},getImageData(e,t=0){return this.getImageCanvasContext(e).getImageData(-t,-t,e.width+2*t,e.height+2*t)},getImageCanvasContext(e){const t=window.document.createElement("canvas"),i=t.getContext("2d",{willReadFrequently:!0});if(!i)throw new Error("failed to create canvas 2d context");return t.width=e.width,t.height=e.height,i.drawImage(e,0,0,e.width,e.height),i},resolveURL:e=>(a||(a=document.createElement("a")),a.href=e,a.href),hardwareConcurrency:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return void 0!==s?s:!!matchMedia&&(null!=r||(r=matchMedia("(prefers-reduced-motion: reduce)")),r.matches)},set prefersReducedMotion(e){s=e;}},l=new class{constructor(){this._frozenAt=null;}getCurrentTime(){return null!==this._frozenAt?this._frozenAt:performance.now()}setNow(e){this._frozenAt=e;}restoreNow(){this._frozenAt=null;}isFrozen(){return null!==this._frozenAt}};function c(){return l.getCurrentTime()}var h,u;class d{static create(e,t,i){const o=window.document.createElement(e);return void 0!==t&&(o.className=t),i&&i.appendChild(o),o}static createNS(e,t){return window.document.createElementNS(e,t)}static disableDrag(){d.docStyle&&d.selectProp&&(d.userSelect=d.docStyle[d.selectProp],d.docStyle[d.selectProp]="none");}static enableDrag(){d.docStyle&&d.selectProp&&(d.docStyle[d.selectProp]=d.userSelect);}static suppressClickInternal(e){e.preventDefault(),e.stopPropagation(),window.removeEventListener("click",d.suppressClickInternal,!0);}static suppressClick(){window.addEventListener("click",d.suppressClickInternal,!0),window.setTimeout((()=>{window.removeEventListener("click",d.suppressClickInternal,!0);}),0);}static getScale(e){const t=e.getBoundingClientRect();return {x:t.width/e.offsetWidth||1,y:t.height/e.offsetHeight||1,boundingClientRect:t}}static getPoint(e,i,o){const a=i.boundingClientRect;return new t.P((o.clientX-a.left)/i.x-e.clientLeft,(o.clientY-a.top)/i.y-e.clientTop)}static mousePos(e,t){const i=d.getScale(e);return d.getPoint(e,i,t)}static touchPos(e,t){const i=[],o=d.getScale(e);for(const a of t)i.push(d.getPoint(e,o,a));return i}static sanitize(e){const t=(new DOMParser).parseFromString(e,"text/html").body||document.createElement("body"),i=t.querySelectorAll("script");for(const e of i)e.remove();return d.clean(t),t.innerHTML}static isPossiblyDangerous(e,t){const i=t.replace(/\s+/g,"").toLowerCase();return !(!["src","href","xlink:href"].includes(e)||!i.includes("javascript:")&&!i.includes("data:"))||!!e.startsWith("on")||void 0}static clean(e){const t=e.children;for(const e of t)d.removeAttributes(e),d.clean(e);}static removeAttributes(e){for(const{name:t,value:i}of e.attributes)d.isPossiblyDangerous(t,i)&&e.removeAttribute(t);}}d.docStyle="undefined"!=typeof window&&(null===(h=window.document)||void 0===h?void 0:h.documentElement.style),d.selectProp=!d.docStyle||"userSelect"in d.docStyle?"userSelect":"webkitUserSelect",function(e){let i,o,a,r;e.resetRequestQueue=()=>{i=[],o=0,a=0,r={};},e.addThrottleControl=e=>{const t=a++;return r[t]=e,t},e.removeThrottleControl=e=>{delete r[e],n();},e.getImage=(e,o,a=!0)=>new Promise(((r,s)=>{e.headers||(e.headers={}),e.headers.accept="image/webp,*/*",t.e(e,{type:"image"}),i.push({abortController:o,requestParameters:e,supportImageRefresh:a,state:"queued",onError:e=>{s(e);},onSuccess:e=>{r(e);}}),n();}));const s=e=>t._(this,void 0,void 0,(function*(){e.state="running";const{requestParameters:i,supportImageRefresh:a,onError:r,onSuccess:s,abortController:c}=e,h=!1===a&&!t.i(self)&&!t.g(i.url)&&(!i.headers||Object.keys(i.headers).reduce(((e,t)=>e&&"accept"===t),!0));o++;const u=h?l(i,c):t.m(i,c);try{const i=yield u;delete e.abortController,e.state="completed",i.data instanceof HTMLImageElement||t.b(i.data)?s(i):i.data&&s({data:yield(d=i.data,"function"==typeof createImageBitmap?t.h(d):t.j(d)),cacheControl:i.cacheControl,expires:i.expires});}catch(i){delete e.abortController,r(t.d(i));}finally{o--,n();}var d;})),n=()=>{const e=(()=>{for(const e of Object.keys(r))if(r[e]())return !0;return !1})()?t.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:t.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let t=o;t0;t++){const e=i.shift();e.abortController.signal.aborted?t--:s(e);}},l=(e,i)=>new Promise(((o,a)=>{const r=new Image,s=e.url,n=e.credentials;n&&"include"===n?r.crossOrigin="use-credentials":(n&&"same-origin"===n||!t.f(s))&&(r.crossOrigin="anonymous"),i.signal.addEventListener("abort",(()=>{r.src="",a(new t.a(i.signal.reason));})),r.fetchPriority="high",r.onload=()=>{r.onerror=r.onload=null,o({data:r});},r.onerror=()=>{r.onerror=r.onload=null,i.signal.aborted||a(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));},r.src=s;}));}(u||(u={})),u.resetRequestQueue();class _{constructor(e){this._transformRequestFn=null!=e?e:null;}transformRequest(e,t){return this._transformRequestFn&&this._transformRequestFn(e,t)||{url:e}}setTransformRequest(e){this._transformRequestFn=e;}}function p(e){const t=[];if("string"==typeof e)t.push({id:"default",url:e});else if(e&&e.length>0){const i=[];for(const{id:o,url:a}of e){const e=`${o}${a}`;i.includes(e)||(i.push(e),t.push({id:o,url:a}));}}return t}function m(e,t,i){try{const o=new URL(e);return o.pathname+=`${t}${i}`,o.toString()}catch(t){throw new Error(`Invalid sprite URL "${e}", must be absolute. Modify style specification directly or use TransformStyleFunction to correct the issue dynamically`)}}function f(e){const{userImage:t}=e;return !(!(null==t?void 0:t.render)||!t.render()||(e.data.replace(new Uint8Array(t.data.buffer)),0))}class g extends t.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0;}destroy(){this.atlasTexture&&(this.atlasTexture.destroy(),this.atlasTexture=null);for(const e of Object.keys(this.images))this.removeImage(e);this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0;}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,promiseResolve:t}of this.requestors)t(this._getImagesForIds(e));this.requestors=[];}}getImage(e){const i=this.images[e];if(i&&!i.data&&i.spriteData){const e=i.spriteData;i.data=new t.R({width:e.width,height:e.height},e.context.getImageData(e.x,e.y,e.width,e.height).data),i.spriteData=null;}return i}addImage(e,t){if(this.images[e])throw new Error(`Image id ${e} already exist, use updateImage instead`);this._validate(e,t)&&(this.images[e]=t);}_validate(e,i){let o=!0;const a=i.data||i.spriteData;return this._validateStretch(i.stretchX,null==a?void 0:a.width)||(this.fire(new t.l(new Error(`Image "${e}" has invalid "stretchX" value`))),o=!1),this._validateStretch(i.stretchY,null==a?void 0:a.height)||(this.fire(new t.l(new Error(`Image "${e}" has invalid "stretchY" value`))),o=!1),this._validateContent(i.content,i)||(this.fire(new t.l(new Error(`Image "${e}" has invalid "content" value`))),o=!1),o}_validateStretch(e,t){if(!e)return !0;let i=0;for(const o of e){if(o[0]=e[1]))}updateImage(e,t,i=!0){const o=this.getImage(e);if(i&&(o.data.width!==t.data.width||o.data.height!==t.data.height))throw new Error(`size mismatch between old image (${o.data.width}x${o.data.height}) and new image (${t.data.width}x${t.data.height}).`);t.version=o.version+1,this.images[e]=t,this.updatedImages[e]=!0;}removeImage(e){var t;const i=this.images[e];delete this.images[e],delete this.patterns[e],(null===(t=i.userImage)||void 0===t?void 0:t.onRemove)&&i.userImage.onRemove();}listImages(){return Object.keys(this.images)}getImages(e){return new Promise(((t,i)=>{let o=!0;if(!this.isLoaded())for(const t of e)this.images[t]||(o=!1);this.isLoaded()||o?t(this._getImagesForIds(e)):this.requestors.push({ids:e,promiseResolve:t});}))}_getImagesForIds(e){var i;const o={};for(const a of e){let e=this.getImage(a);e||(this.fire(new t.n("styleimagemissing",{id:a})),e=this.getImage(a)),e?o[a]={data:e.data.clone(),pixelRatio:e.pixelRatio,sdf:e.sdf,version:e.version,stretchX:e.stretchX,stretchY:e.stretchY,content:e.content,textFitWidth:e.textFitWidth,textFitHeight:e.textFitHeight,hasRenderCallback:Boolean(null===(i=e.userImage)||void 0===i?void 0:i.render)}:t.w(`Image "${a}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`);}return o}getPixelSize(){const{width:e,height:t}=this.atlasImage;return {width:e,height:t}}getPattern(e){const i=this.patterns[e],o=this.getImage(e);if(!o)return null;if(i&&i.position.version===o.version)return i.position;if(i)i.position.version=o.version;else {const i={w:o.data.width+2,h:o.data.height+2,x:0,y:0},a=new t.I(i,o);this.patterns[e]={bin:i,position:a};}return this._updatePatternAtlas(),this.patterns[e].position}bind(e){const i=e.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new t.T(e,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE);}_updatePatternAtlas(){const e=[];for(const t in this.patterns)e.push(this.patterns[t].bin);const{w:i,h:o}=t.p(e),a=this.atlasImage;a.resize({width:i||1,height:o||1});for(const e in this.patterns){const{bin:i}=this.patterns[e],o=i.x+1,r=i.y+1,s=this.getImage(e).data,n=s.width,l=s.height;t.R.copy(s,a,{x:0,y:0},{x:o,y:r},{width:n,height:l}),t.R.copy(s,a,{x:0,y:l-1},{x:o,y:r-1},{width:n,height:1}),t.R.copy(s,a,{x:0,y:0},{x:o,y:r+l},{width:n,height:1}),t.R.copy(s,a,{x:n-1,y:0},{x:o-1,y:r},{width:1,height:l}),t.R.copy(s,a,{x:0,y:0},{x:o+n,y:r},{width:1,height:l});}this.dirty=!0;}beginFrame(){this.callbackDispatchedThisFrame={};}dispatchRenderCallbacks(e){for(const i of e){if(this.callbackDispatchedThisFrame[i])continue;this.callbackDispatchedThisFrame[i]=!0;const e=this.getImage(i);e||t.w(`Image with ID: "${i}" was not found`),f(e)&&this.updateImage(i,e);}}cloneImages(){const e={};for(const t in this.images){const i=this.images[t];e[t]=Object.assign(Object.assign({},i),{data:i.data?i.data.clone():null});}return e}}const v=1e20,x=new Float64Array(256);for(let e=0;e<256;e++){const t=.5-Math.pow(e/255,1/2.2);x[e]=t*Math.abs(t);}function b(e,t,i,o,a,r,s,n,l){for(let c=t;c-1);l++,r[l]=n,s[l]=c,s[l+1]=v;}for(let n=0,l=0;n/[-\w]+/.test(e)?e:`'${CSS.escape(e)}'`)).join(",");return new T.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:i,fontWeight:this._fontWeight(t[0]),fontStyle:this._fontStyle(t[0]),lang:this.lang})}_fontStyle(e){return /italic/i.test(e)?"italic":/oblique/i.test(e)?"oblique":"normal"}_fontWeight(e){const t={thin:100,hairline:100,"extra light":200,"ultra light":200,light:300,normal:400,regular:400,medium:500,semibold:600,demibold:600,bold:700,"extra bold":800,"ultra bold":800,black:900,heavy:900,"extra black":950,"ultra black":950};let i;for(const[o,a]of Object.entries(t))new RegExp(`\\b${o}\\b`,"i").test(e)&&(i=`${a}`);return i}destroy(){for(const e in this.entries){const t=this.entries[e];t.tinySDF=null,t.ideographTinySDF=null,t.glyphs={},t.requests={},t.ranges={};}this.entries={};}}T.loadGlyphRange=function(e,i,o,a){return t._(this,void 0,void 0,(function*(){const r=256*i,s=r+255,n=yield a.transformRequest(o.replace("{fontstack}",e).replace("{range}",`${r}-${s}`),"Glyphs"),l=yield t.o(n,new AbortController);if(!(null==l?void 0:l.data))throw new Error(`Could not load glyph range. range: ${i}, ${r}-${s}`);const c={};for(const e of t.q(l.data))c[e.id]=e;return c}))},T.TinySDF=class{constructor({fontSize:e=24,buffer:t=3,radius:i=8,cutoff:o=.25,fontFamily:a="sans-serif",fontWeight:r="normal",fontStyle:s="normal",lang:n=null}={}){this.buffer=t,this.radius=i,this.cutoff=o,this.lang=n;const l=this.size=e+4*t,c=this._createCanvas(l),h=this.ctx=c.getContext("2d",{willReadFrequently:!0});h.font=`${s} ${r} ${e}px ${a}`,h.textBaseline="alphabetic",h.textAlign="left",h.fillStyle="black",this.gridOuter=new Float64Array(l*l),this.gridInner=new Float64Array(l*l),this.f=new Float64Array(l),this.z=new Float64Array(l+1),this.v=new Uint16Array(l);}_createCanvas(e){if("undefined"!=typeof OffscreenCanvas)return new OffscreenCanvas(e,e);const t=document.createElement("canvas");return t.width=t.height=e,t}draw(e){const{width:t,actualBoundingBoxAscent:i,actualBoundingBoxDescent:o,actualBoundingBoxLeft:a,actualBoundingBoxRight:r}=this.ctx.measureText(e),s=Math.ceil(i),n=Math.floor(a),l=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(r)-n)),c=Math.max(0,Math.min(this.size-this.buffer,s+Math.ceil(o))),h=l+2*this.buffer,u=c+2*this.buffer,d=Math.max(h*u,0),_=new Uint8ClampedArray(d),p={data:_,width:h,height:u,glyphWidth:l,glyphHeight:c,glyphTop:s,glyphLeft:n,glyphAdvance:t};if(0===l||0===c)return p;const{ctx:m,buffer:f,gridInner:g,gridOuter:y}=this;this.lang&&(m.lang=this.lang),m.clearRect(f,f,l,c),m.fillText(e,f-n,f+s);const w=m.getImageData(f,f,l,c);y.fill(v,0,d),g.fill(0,0,d);let T=3;for(let e=0;e1&&(s=e[++r]);const l=Math.abs(n-s.left),c=Math.abs(n-s.right),h=Math.min(l,c);let u;const d=t/i*(o+1);if(s.isDash){const e=o-Math.abs(d);u=Math.sqrt(h*h+e*e);}else u=o-Math.sqrt(h*h+d*d);this.data[a+n]=Math.max(0,Math.min(255,u+128));}}}addRegularDash(e){for(let t=e.length-1;t>=0;--t){const i=e[t],o=e[t+1];i.zeroLength?e.splice(t,1):o&&o.isDash===i.isDash&&(o.left=i.left,e.splice(t,1));}const t=e[0],i=e[e.length-1];t.isDash===i.isDash&&(t.left=i.left-this.width,i.right=t.right+this.width);const o=this.width*this.nextRow;let a=0,r=e[a];for(let t=0;t1&&(r=e[++a]);const i=Math.abs(t-r.left),s=Math.abs(t-r.right),n=Math.min(i,s);this.data[o+t]=Math.max(0,Math.min(255,(r.isDash?n:-n)+128));}}addDash(e,i){const o=i?7:0,a=2*o+1;if(this.nextRow+a>this.height)return t.w("LineAtlas out of space"),null;let r=0;for(const t of e)r+=t;if(0!==r){const t=this.width/r,a=this.getDashRanges(e,this.width,t);i?this.addRoundDash(a,t,o):this.addRegularDash(a);}const s={y:this.nextRow+o,height:2*o,width:r};return this.nextRow+=a,this.dirty=!0,s}bind(e){const t=e.gl;this.texture?(t.bindTexture(t.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,t.texSubImage2D(t.TEXTURE_2D,0,0,0,this.width,this.height,t.ALPHA,t.UNSIGNED_BYTE,this.data))):(this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,t.ALPHA,this.width,this.height,0,t.ALPHA,t.UNSIGNED_BYTE,this.data));}}const z="maplibre_preloaded_worker_pool";class R{constructor(){this.active={};}acquire(e){if(!this.workers)for(this.workers=[];this.workers.lengtht.m(i,o)))),L}function O(e,i){const o=t.O();return t.Q(o,o,[1,1,0]),t.S(o,o,[.5*e.width,.5*e.height,1]),e.calculatePosMatrix?t.U(o,o,e.calculatePosMatrix(i.toUnwrapped())):o}function j(e,t,i,o,a,r,s){var n;const l=function(e,t,i){if(e)for(const o of e){const e=t[o];if((null==e?void 0:e.source)===i&&"fill-extrusion"===e.type)return !0}else for(const e in t){const o=t[e];if(o.source===i&&"fill-extrusion"===o.type)return !0}return !1}(null!==(n=null==a?void 0:a.layers)&&void 0!==n?n:null,t,e.id),c=r.maxPitchScaleFactor(),h=e.tilesIn(o,c,l);h.sort(N);const u=[];for(const o of h)u.push({wrappedTileID:o.tileID.wrapped().key,queryResults:o.tile.queryRenderedFeatures(t,i,e.getState(),o.queryGeometry,o.cameraQueryGeometry,o.scale,a,r,c,O(r,o.tileID),s?(e,t)=>s(o.tileID,e,t):void 0)});return function(e,t){for(const i in e)for(const o of e[i])Z(o,t);return e}(function(e){const t={},i={};for(const{queryResults:o,wrappedTileID:a}of e){i[a]||(i[a]={});const e=i[a];for(const i in o){const a=o[i];e[i]||(e[i]={});const r=e[i];t[i]||(t[i]=[]);for(const e of a)r[e.featureIndex]||(r[e.featureIndex]=!0,t[i].push(e));}}return t}(u),e)}function N(e,t){const i=e.tileID,o=t.tileID;return i.overscaledZ-o.overscaledZ||i.canonical.y-o.canonical.y||i.wrap-o.wrap||i.canonical.x-o.canonical.x}function Z(e,t){const i=e.feature,o=t.getFeatureState(i.layer["source-layer"],i.id);i.source=i.layer.source,i.layer["source-layer"]&&(i.sourceLayer=i.layer["source-layer"]),i.state=o;}function U(e,i,o,a){return t._(this,void 0,void 0,(function*(){let r=e;if(e.url?r=(yield t.k(yield i.transformRequest(e.url,"Source"),o)).data:yield n.frameAsync(o,a),!r)return null;const s=t.V(t.e(r,e),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return "vector_layers"in r&&r.vector_layers&&(s.vectorLayerIds=r.vector_layers.map((e=>e.id))),s}))}class G{constructor(e,t){e&&(t?this.setSouthWest(e).setNorthEast(t):Array.isArray(e)&&(4===e.length?this.setSouthWest([e[0],e[1]]).setNorthEast([e[2],e[3]]):this.setSouthWest(e[0]).setNorthEast(e[1])));}setNorthEast(e){return this._ne=e instanceof t.W?new t.W(e.lng,e.lat):t.W.convert(e),this}setSouthWest(e){return this._sw=e instanceof t.W?new t.W(e.lng,e.lat):t.W.convert(e),this}extend(e){const i=this._sw,o=this._ne;let a,r;if(e instanceof t.W)a=e,r=e;else {if(!(e instanceof G))return Array.isArray(e)?4===e.length||e.every(Array.isArray)?this.extend(G.convert(e)):this.extend(t.W.convert(e)):e&&("lng"in e||"lon"in e)&&"lat"in e?this.extend(t.W.convert(e)):this;if(a=e._sw,r=e._ne,!a||!r)return this}return i||o?(i.lng=Math.min(a.lng,i.lng),i.lat=Math.min(a.lat,i.lat),o.lng=Math.max(r.lng,o.lng),o.lat=Math.max(r.lat,o.lat)):(this._sw=new t.W(a.lng,a.lat),this._ne=new t.W(r.lng,r.lat)),this}getCenter(){return new t.W((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new t.W(this.getWest(),this.getNorth())}getSouthEast(){return new t.W(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return [this._sw.toArray(),this._ne.toArray()]}toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return !(this._sw&&this._ne)}contains(e){const{lng:i,lat:o}=t.W.convert(e);let a=this._sw.lng<=i&&i<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=i&&i>=this._ne.lng),this._sw.lat<=o&&o<=this._ne.lat&&a}intersects(e){if(!((e=G.convert(e)).getNorth()>=this.getSouth()&&e.getSouth()<=this.getNorth()))return !1;const i=Math.abs(this.getEast()-this.getWest()),o=Math.abs(e.getEast()-e.getWest());if(i>=360||o>=360)return !0;const a=t.X(this.getWest(),-180,180),r=t.X(this.getEast(),-180,180),s=t.X(e.getWest(),-180,180),n=t.X(e.getEast(),-180,180),l=a>r,c=s>n;return !(!l||!c)||(l?n>=a||s<=r:c?r>=s||a<=n:s<=r&&n>=a)}static convert(e){return e instanceof G?e:e?new G(e):e}static fromLngLat(e,i=0){const o=360*i/40075017,a=o/Math.cos(Math.PI/180*e.lat);return new G(new t.W(e.lng-a,e.lat-o),new t.W(e.lng+a,e.lat+o))}adjustAntiMeridian(){const e=new t.W(this._sw.lng,this._sw.lat),i=new t.W(this._ne.lng,this._ne.lat);return new G(e,e.lng>i.lng?new t.W(i.lng+360,i.lat):i)}}class V{constructor(e,t,i){this.bounds=G.convert(this.validateBounds(e)),this.minzoom=t||0,this.maxzoom=i||24;}validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]:[-180,-90,180,90]}contains(e){const i=Math.pow(2,e.z),o=Math.floor(t.Z(this.bounds.getWest())*i),a=Math.floor(t.Y(this.bounds.getNorth())*i),r=Math.ceil(t.Z(this.bounds.getEast())*i),s=Math.ceil(t.Y(this.bounds.getSouth())*i);return e.x>=o&&e.x=a&&e.y{this._options.tiles=e;})),this}setUrl(e){return this.setSourceProperty((()=>{this.url=e,this._options.url=e;})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null);}serialize(){return t.e({},this._options)}loadTile(e){return t._(this,void 0,void 0,(function*(){const t=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),i={request:yield this.map._requestManager.transformRequest(t,"Tile"),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity,encoding:this.encoding,overzoomParameters:yield this._getOverzoomParameters(e),etag:e.etag};i.request.collectResourceTiming=this._collectResourceTiming;let o="RT";if(e.actor&&"expired"!==e.state){if("loading"===e.state)return new Promise(((t,i)=>{e.reloadPromise={resolve:t,reject:i};}))}else e.actor=this.dispatcher.getActor(),o="LT";e.abortController=new AbortController;try{const t=yield e.actor.sendAsync({type:o,data:i},e.abortController);if(delete e.abortController,e.aborted)return;this._afterTileLoadWorkerResponse(e,t);const a={};return (null==t?void 0:t.etagUnmodified)&&(a.unmodified=!0),a}catch(t){if(delete e.abortController,e.aborted)return;if(t&&404!==t.status)throw t;this._afterTileLoadWorkerResponse(e,null);}}))}_getOverzoomParameters(e){return t._(this,void 0,void 0,(function*(){if(e.tileID.canonical.z<=this.maxzoom)return;if(void 0===this.map._zoomLevelsToOverscale)return;const t=e.tileID.scaledTo(this.maxzoom).canonical,i=t.url(this.tiles,this.map.getPixelRatio(),this.scheme);return {maxZoomTileID:t,overzoomRequest:yield this.map._requestManager.transformRequest(i,"Tile")}}))}_afterTileLoadWorkerResponse(e,t){if((null==t?void 0:t.resourceTiming)&&(e.resourceTiming=t.resourceTiming),t&&this.map._refreshExpiredTiles&&e.setExpiryData(t),e.etag=null==t?void 0:t.etag,e.loadVectorData(t,this.map.painter),e.reloadPromise){const t=e.reloadPromise;e.reloadPromise=null,this.loadTile(e).then(t.resolve).catch(t.reject);}}abortTile(e){return t._(this,void 0,void 0,(function*(){e.abortController&&(e.abortController.abort(),delete e.abortController),e.actor&&(yield e.actor.sendAsync({type:"AT",data:{uid:e.uid,type:this.type,source:this.id}}));}))}unloadTile(e){return t._(this,void 0,void 0,(function*(){e.unloadVectorData(),e.actor&&(yield e.actor.sendAsync({type:"RMT",data:{uid:e.uid,type:this.type,source:this.id}}));}))}hasTransition(){return !1}}class q extends t.E{constructor(e,i,o,a){super(),this.id=e,this.dispatcher=o,this.setEventedParent(a),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=t.e({type:"raster"},i),t.e(this,t.V(i,["url","scheme","tileSize"]));}load(){return t._(this,arguments,void 0,(function*(e=!1){this._loaded=!1,this.fire(new t.n("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{const i=yield U(this._options,this.map._requestManager,this._tileJSONRequest,this.map._ownerWindow);this._tileJSONRequest=null,this._loaded=!0,i&&(t.e(this,i),i.bounds&&(this.tileBounds=new V(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.n("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new t.n("data",{dataType:"source",sourceDataType:"content",sourceDataChanged:e})));}catch(e){this._tileJSONRequest=null,this._loaded=!0,t.$(e)||this.fire(new t.l(t.d(e)));}}))}loaded(){return this._loaded}onAdd(e){this.map=e,this.load();}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null);}setSourceProperty(e){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),e(),this.load(!0);}setTiles(e){return this.setSourceProperty((()=>{this._options.tiles=e;})),this}setUrl(e){return this.setSourceProperty((()=>{this.url=e,this._options.url=e;})),this}serialize(){return t.e({},this._options)}hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(e){return t._(this,void 0,void 0,(function*(){const i=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);e.abortController=new AbortController;try{const o=yield u.getImage(yield this.map._requestManager.transformRequest(i,"Tile"),e.abortController,this.map._refreshExpiredTiles);if(delete e.abortController,e.aborted)return void(e.state="unloaded");if(null==o?void 0:o.data){this.map._refreshExpiredTiles&&(o.cacheControl||o.expires)&&e.setExpiryData({cacheControl:o.cacheControl,expires:o.expires});const i=this.map.painter.context,a=i.gl,r=o.data;e.texture=this.map.painter.getTileTexture(r.width),e.texture?e.texture.update(r,{useMipmap:!0}):(e.texture=new t.T(i,r,a.RGBA,{useMipmap:!0}),e.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST)),e.state="loaded";}}catch(t){if(delete e.abortController,e.aborted)e.state="unloaded";else if(t)throw e.state="errored",t}}))}abortTile(e){return t._(this,void 0,void 0,(function*(){e.abortController&&(e.abortController.abort(),delete e.abortController);}))}unloadTile(e){return t._(this,void 0,void 0,(function*(){e.texture&&this.map.painter.saveTileTexture(e.texture);}))}hasTransition(){return !1}}class $ extends q{constructor(e,i,o,a){super(e,i,o,a),this.type="raster-dem",this.maxzoom=22,this._options=t.e({type:"raster-dem"},i),this.encoding=i.encoding||"mapbox",this.redFactor=i.redFactor,this.greenFactor=i.greenFactor,this.blueFactor=i.blueFactor,this.baseShift=i.baseShift;}loadTile(e){return t._(this,void 0,void 0,(function*(){const i=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),o=yield this.map._requestManager.transformRequest(i,"Tile");e.neighboringTiles=this._getNeighboringTiles(e.tileID),e.abortController=new AbortController;try{const i=yield u.getImage(o,e.abortController,this.map._refreshExpiredTiles);if(delete e.abortController,e.aborted)return void(e.state="unloaded");if(null==i?void 0:i.data){const o=i.data;this.map._refreshExpiredTiles&&(i.cacheControl||i.expires)&&e.setExpiryData({cacheControl:i.cacheControl,expires:i.expires});const a=t.b(o)&&t.a0()?o:yield this.readImageNow(o),r={type:this.type,uid:e.uid,source:this.id,rawImageData:a,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(e.actor&&"expired"!==e.state&&"reloading"!==e.state)return;e.actor&&"expired"!==e.state||(e.actor=this.dispatcher.getActor()),e.dem=yield e.actor.sendAsync({type:"LDT",data:r}),e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0,e.state="loaded";}}catch(t){if(delete e.abortController,e.aborted)e.state="unloaded";else if(t)throw e.state="errored",t}}))}readImageNow(e){return t._(this,void 0,void 0,(function*(){if("undefined"!=typeof VideoFrame&&t.a1()){const i=e.width+2,o=e.height+2;try{return new t.R({width:i,height:o},yield t.a2(e,-1,-1,i,o))}catch(e){}}return n.getImageData(e,1)}))}_getNeighboringTiles(e){const i=e.canonical,o=Math.pow(2,i.z),a=(i.x-1+o)%o,r=0===i.x?e.wrap-1:e.wrap,s=(i.x+1+o)%o,n=i.x+1===o?e.wrap+1:e.wrap,l={};return l[new t.a3(e.overscaledZ,r,i.z,a,i.y).key]={backfilled:!1},l[new t.a3(e.overscaledZ,n,i.z,s,i.y).key]={backfilled:!1},i.y>0&&(l[new t.a3(e.overscaledZ,r,i.z,a,i.y-1).key]={backfilled:!1},l[new t.a3(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.a3(e.overscaledZ,n,i.z,s,i.y-1).key]={backfilled:!1}),i.y+1e.key===i));t>-1&&e.addOrUpdateProperties.splice(t,1);}return (e.removeAllProperties||t.removeAllProperties)&&(i.removeAllProperties=!0),(e.removeProperties||t.removeProperties)&&(i.removeProperties=[...e.removeProperties||[],...t.removeProperties||[]]),(e.addOrUpdateProperties||t.addOrUpdateProperties)&&(i.addOrUpdateProperties=[...e.addOrUpdateProperties||[],...t.addOrUpdateProperties||[]]),(e.newGeometry||t.newGeometry)&&(i.newGeometry=t.newGeometry||e.newGeometry),i}function K(e){var t,i;if(!e)return {};const o={};return o.removeAll=e.removeAll,o.remove=new Set(e.remove||[]),o.add=new Map(null===(t=e.add)||void 0===t?void 0:t.map((e=>[e.id,e]))),o.update=new Map(null===(i=e.update)||void 0===i?void 0:i.map((e=>[e.id,e]))),o}function Y(e){return e&&0!==e.length?"number"==typeof e[0]?[e]:e.flatMap((e=>Y(e))):[]}function Q(e){return "GeometryCollection"===e.type?e.geometries.flatMap((e=>Q(e))):Y(e.coordinates)}function J(e){const t=new G;let i;switch(e.type){case "FeatureCollection":i=e.features.flatMap((e=>Q(e.geometry)));break;case "Feature":i=Q(e.geometry);break;default:i=Q(e);}if(0===i.length)return t;for(const e of i){const[i,o]=e;t.extend([i,o]);}return t}class ee extends t.E{constructor(e,i,o,a){super(),this.id=e,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._isUpdatingWorker=!1,this._pendingWorkerUpdate={data:i.data},this.actor=o.getActor(),this.setEventedParent(a),this._data="string"==typeof i.data?{url:i.data}:{geojson:i.data},this._options=t.e({},i),this._collectResourceTiming=i.collectResourceTiming,void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId,void 0!==i.clusterMaxZoom&&this.maxzoom<=i.clusterMaxZoom&&t.w(`The maxzoom value "${this.maxzoom}" is expected to be greater than the clusterMaxZoom value "${i.clusterMaxZoom}".`),this.workerOptions=t.e({source:this.id,geojsonVtOptions:{buffer:this._pixelsToTileUnits(void 0!==i.buffer?i.buffer:128),tolerance:this._pixelsToTileUnits(void 0!==i.tolerance?i.tolerance:.375),extent:t.a6,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1,promoteId:"string"==typeof i.promoteId?i.promoteId:void 0,cluster:i.cluster||!1,clusterOptions:{maxZoom:this._getClusterMaxZoom(i.clusterMaxZoom),minPoints:Math.max(2,i.clusterMinPoints||2),extent:t.a6,radius:this._pixelsToTileUnits(i.clusterRadius||50),log:!1,generateId:i.generateId||!1}},clusterProperties:i.clusterProperties,filter:i.filter},i.workerOptions);}_hasPendingWorkerUpdate(){return void 0!==this._pendingWorkerUpdate.data||void 0!==this._pendingWorkerUpdate.diff||this._pendingWorkerUpdate.updateCluster}_pixelsToTileUnits(e){return e*(t.a6/this.tileSize)}_getClusterMaxZoom(e){const i=e?Math.round(e):this.maxzoom-1;return Number.isInteger(e)||void 0===e||t.w(`Integer expected for option 'clusterMaxZoom': provided value "${e}" rounded to "${i}"`),i}load(){return t._(this,void 0,void 0,(function*(){yield this._updateWorkerData();}))}onAdd(e){this.map=e,this.load();}setData(e,t){this._data="string"==typeof e?{url:e}:{geojson:e},this._pendingWorkerUpdate={data:e};const i=this._updateWorkerData();return t?i:this}updateData(e,t){this._pendingWorkerUpdate.diff=function(e,t){if(!e)return t||{};if(!t)return e||{};const i=K(e),o=K(t);!function(e,t){t.removeAll&&(e.add.clear(),e.update.clear(),e.remove.clear(),t.remove.clear());for(const i of t.remove)e.add.delete(i),e.update.delete(i);for(const[i,o]of t.update){const a=e.update.get(i);a&&(t.update.set(i,X(a,o)),e.update.delete(i));}}(i,o);const a={};if((i.removeAll||o.removeAll)&&(a.removeAll=!0),a.remove=new Set([...i.remove,...o.remove]),a.add=new Map([...i.add,...o.add]),a.update=new Map([...i.update,...o.update]),a.remove.size&&a.add.size)for(const e of a.add.keys())a.remove.delete(e);return function(e){const t={};return e.removeAll&&(t.removeAll=e.removeAll),e.remove&&(t.remove=Array.from(e.remove)),e.add&&(t.add=Array.from(e.add.values())),e.update&&(t.update=Array.from(e.update.values())),t}(a)}(this._pendingWorkerUpdate.diff,e);const i=this._updateWorkerData();return t?i:this}getData(){return t._(this,void 0,void 0,(function*(){return this._data.url&&(yield this.once("data")),this._data.geojson?this._data.geojson:{type:"FeatureCollection",features:Array.from(this._data.updateable.values())}}))}getBounds(){return t._(this,void 0,void 0,(function*(){return J(yield this.getData())}))}setClusterOptions(e){return this.workerOptions.geojsonVtOptions.cluster=e.cluster,void 0!==e.clusterRadius&&(this.workerOptions.geojsonVtOptions.clusterOptions.radius=this._pixelsToTileUnits(e.clusterRadius)),void 0!==e.clusterMaxZoom&&(this.workerOptions.geojsonVtOptions.clusterOptions.maxZoom=this._getClusterMaxZoom(e.clusterMaxZoom)),this._pendingWorkerUpdate.updateCluster=!0,this._updateWorkerData(),this}getClusterExpansionZoom(e){return this.actor.sendAsync({type:"GCEZ",data:{type:this.type,clusterId:e,source:this.id}})}getClusterChildren(e){return this.actor.sendAsync({type:"GCC",data:{type:this.type,clusterId:e,source:this.id}})}getClusterLeaves(e,t,i){return this.actor.sendAsync({type:"GCL",data:{type:this.type,source:this.id,clusterId:e,limit:t,offset:i}})}_updateWorkerData(){return t._(this,void 0,void 0,(function*(){if(this._isUpdatingWorker)return;if(!this._hasPendingWorkerUpdate())return void t.w(`No pending worker updates for GeoJSONSource ${this.id}.`);const{data:e,diff:i,updateCluster:o}=this._pendingWorkerUpdate,a=this._getLoadGeoJSONParameters(e,i,o);void 0!==e?this._pendingWorkerUpdate.data=void 0:i?this._pendingWorkerUpdate.diff=void 0:o&&(this._pendingWorkerUpdate.updateCluster=void 0),yield this._dispatchWorkerUpdate(a);}))}_getLoadGeoJSONParameters(e,i,o){return t._(this,void 0,void 0,(function*(){const a=t.e({type:this.type},this.workerOptions);return "string"==typeof e?(a.request=yield this.map._requestManager.transformRequest(n.resolveURL(e),"Source"),a.request.collectResourceTiming=this._collectResourceTiming,a):void 0!==e?(a.data=e,a):i?(a.dataDiff=i,a):o?(a.updateCluster=!0,a):void 0}))}_dispatchWorkerUpdate(e){return t._(this,void 0,void 0,(function*(){this._isUpdatingWorker=!0,this.fire(new t.n("dataloading",{dataType:"source"}));try{const i=yield e,o=yield this.actor.sendAsync({type:"LD",data:i});if(this._isUpdatingWorker=!1,this._removed||o.abandoned)return void this.fire(new t.n("dataabort",{dataType:"source"}));o.data&&(this._data={geojson:o.data});const a=this._applyDiffToSource(i.dataDiff),r=this._getShouldReloadTileOptions(a),s={dataType:"source"};this._applyResourceTiming(s,o),this.fire(new t.n("data",Object.assign(Object.assign({},s),{sourceDataType:"metadata"}))),this.fire(new t.n("data",Object.assign(Object.assign({},s),{sourceDataType:"content",shouldReloadTileOptions:r})));}catch(e){if(this._isUpdatingWorker=!1,this._removed)return void this.fire(new t.n("dataabort",{dataType:"source"}));this.fire(new t.l(t.d(e)));}finally{this._hasPendingWorkerUpdate()&&this._updateWorkerData();}}))}_applyResourceTiming(e,i){var o;if(!this._collectResourceTiming)return;const a=null===(o=i.resourceTiming)||void 0===o?void 0:o[this.id];if(!a)return;const r=a.slice(0);(null==r?void 0:r.length)&&t.e(e,{resourceTiming:r});}_applyDiffToSource(e){if(!e)return;const t="string"==typeof this.promoteId?this.promoteId:void 0;if(!this._data.url&&!this._data.updateable){const e=function(e,t){const i=new Map;if(null==e)return i;if(null==e.type)return i;if("Feature"===e.type){const o=H(e,t);if(null==o)return;return i.set(o,e),i}if("FeatureCollection"===e.type){const o=new Set;for(const a of e.features){const e=H(a,t);if(null==e)return;if(o.has(e))return;o.add(e),i.set(e,a);}return i}}(this._data.geojson,t);if(!e)throw new Error(`GeoJSONSource "${this.id}": GeoJSON data is not compatible with updateData`);this._data={updateable:e};}if(!this._data.updateable)return;const i=function(e,t,i){var o,a;const r=[];if(t.removeAll)e.clear();else if(t.remove)for(const i of t.remove){const t=e.get(i);t&&(r.push(t.geometry),e.delete(i));}if(t.add)for(const o of t.add){const t=H(o,i);if(null==t)continue;const a=e.get(t);a&&r.push(a.geometry),r.push(o.geometry),e.set(t,o);}if(t.update)for(const i of t.update){const t=e.get(i.id);if(!t)continue;const s=!!i.newGeometry,n=i.removeAllProperties||(null===(o=i.removeProperties)||void 0===o?void 0:o.length)>0||(null===(a=i.addOrUpdateProperties)||void 0===a?void 0:a.length)>0;if(!s&&!n)continue;r.push(t.geometry);const l=Object.assign({},t);if(e.set(i.id,l),s&&(r.push(i.newGeometry),l.geometry=i.newGeometry),n){if(l.properties=i.removeAllProperties?{}:Object.assign({},l.properties||{}),i.removeProperties)for(const e of i.removeProperties)delete l.properties[e];if(i.addOrUpdateProperties)for(const{key:e,value:t}of i.addOrUpdateProperties)l.properties[e]=t;}}return r}(this._data.updateable,e,t);return e.removeAll||this._options.cluster?void 0:i}_getShouldReloadTileOptions(e){if(e)return {affectedBounds:e.filter(Boolean).map((e=>J(e)))}}shouldReloadTile(e,{affectedBounds:i}){if("loading"===e.state)return !0;if("unloaded"===e.state)return !1;const{buffer:o,extent:a}=this.workerOptions.geojsonVtOptions,r=function({x:e,y:i,z:o},a=0){const r=t.a4((e-a)/Math.pow(2,o)),s=t.a5((i+1+a)/Math.pow(2,o)),n=t.a4((e+1+a)/Math.pow(2,o)),l=t.a5((i-a)/Math.pow(2,o));return new G([r,s],[n,l])}(e.tileID.canonical,o/a);for(const e of i)if(r.intersects(e))return !0;return !1}loaded(){return !this._isUpdatingWorker&&!this._hasPendingWorkerUpdate()}loadTile(e){return t._(this,void 0,void 0,(function*(){const t=e.actor?"RT":"LT";e.actor=this.actor;const i={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity};e.abortController=new AbortController;const o=yield this.actor.sendAsync({type:t,data:i},e.abortController);delete e.abortController,e.unloadVectorData(),e.aborted||e.loadVectorData(o,this.map.painter,"RT"===t);}))}abortTile(e){return t._(this,void 0,void 0,(function*(){e.abortController&&(e.abortController.abort(),delete e.abortController),e.aborted=!0;}))}unloadTile(e){return t._(this,void 0,void 0,(function*(){e.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:e.uid,type:this.type,source:this.id}});}))}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}});}serialize(){return t.e({},this._options,{type:this.type,data:this._data.updateable?{type:"FeatureCollection",features:Array.from(this._data.updateable.values())}:this._data.url||this._data.geojson})}hasTransition(){return !1}}class te extends t.E{constructor(e,t,i,o){super(),this.flippedWindingOrder=!1,this.id=e,this.dispatcher=i,this.coordinates=t.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(o),this.options=t;}load(e){return t._(this,void 0,void 0,(function*(){this._loaded=!1,this.fire(new t.n("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{const t=yield u.getImage(yield this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,(null==t?void 0:t.data)&&(this.image=t.data,e&&(this.coordinates=e),this._finishLoading());}catch(e){this._request=null,this._loaded=!0,t.$(e)||this.fire(new t.l(t.d(e)));}}))}loaded(){return this._loaded}updateImage(e){return e.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=e.url,this.load(e.coordinates).finally((()=>this.texture=null)),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.n("data",{dataType:"source",sourceDataType:"metadata"})));}onAdd(e){this.map=e,this.load();}onRemove(){this._request&&(this._request.abort(),this._request=null);}setCoordinates(e){this.coordinates=e;const i=e.map(t.a7.fromLngLat);var o;return this.tileID=function(e){const i=t.a8.fromPoints(e),o=i.width(),a=i.height(),r=Math.max(o,a),s=Math.max(0,Math.floor(-Math.log(r)/Math.LN2)),n=Math.pow(2,s);return new t.aa(s,Math.floor((i.minX+i.maxX)/2*n),Math.floor((i.minY+i.maxY)/2*n))}(i),this.terrainTileRanges=this._getOverlappingTileRanges(i),this.minzoom=this.maxzoom=this.tileID.z,this.tileCoords=i.map((e=>this.tileID.getTilePoint(e)._round())),this.flippedWindingOrder=((o=this.tileCoords)[1].x-o[0].x)*(o[2].y-o[0].y)-(o[1].y-o[0].y)*(o[2].x-o[0].x)<0,this.fire(new t.n("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const e=this.map.painter.context,i=e.gl;this.texture||(this.texture=new t.T(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let o=!1;for(const e in this.tiles){const t=this.tiles[e];"loaded"!==t.state&&(t.state="loaded",t.texture=this.texture,o=!0);}o&&this.fire(new t.n("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));}loadTile(e){return t._(this,void 0,void 0,(function*(){var t;(null===(t=this.tileID)||void 0===t?void 0:t.equals(e.tileID.canonical))?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={}):e.state="errored";}))}serialize(){return {type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return !1}_getOverlappingTileRanges(e){const{minX:i,minY:o,maxX:a,maxY:r}=t.a8.fromPoints(e),s={};for(let e=0;e<=t.a9;e++){const t=Math.pow(2,e),n=Math.floor(i*t),l=Math.floor(o*t),c=Math.floor(a*t),h=Math.floor(r*t),u=(n%t+t)%t,d=c%t,_=Math.floor(n/t),p=Math.floor(c/t);s[e]={minWrap:_,maxWrap:p,minTileXWrapped:u,maxTileXWrapped:d,minTileY:l,maxTileY:h};}return s}}class ie extends te{constructor(e,t,i,o){super(e,t,i,o),this._onPlayingHandler=()=>{var e;null===(e=this.map)||void 0===e||e.triggerRepaint();},this.roundZoom=!0,this.type="video",this.options=t;}load(){return t._(this,void 0,void 0,(function*(){this._loaded=!1;const e=this.options;this.urls=[];for(const t of e.urls)this.urls.push((yield this.map._requestManager.transformRequest(t,"Source")).url);try{const e=yield t.ab(this.urls);if(this._loaded=!0,!e)return;this.video=e,this.video.loop=!0,this.video.addEventListener("playing",this._onPlayingHandler),this.map&&this.video.play(),this._finishLoading();}catch(e){this.fire(new t.l(t.d(e)));}}))}pause(){this.video&&this.video.pause();}play(){this.video&&this.video.play();}seek(e){if(this.video){const i=this.video.seekable;ei.end(0)?this.fire(new t.l(new t.ac(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=e;}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));}onRemove(){super.onRemove(),this.video&&(this.video.removeEventListener("playing",this._onPlayingHandler),this.video.pause());}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const e=this.map.painter.context,i=e.gl;this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new t.T(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let o=!1;for(const e in this.tiles){const t=this.tiles[e];"loaded"!==t.state&&(t.state="loaded",t.texture=this.texture,o=!0);}o&&this.fire(new t.n("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));}serialize(){return {type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class oe extends te{constructor(e,i,o,a){super(e,i,o,a),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((e=>!Array.isArray(e)||2!==e.length||e.some((e=>"number"!=typeof e))))||this.fire(new t.l(new t.ac(`sources.${e}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.l(new t.ac(`sources.${e}`,null,'missing required property "coordinates"'))),i.animate&&"boolean"!=typeof i.animate&&this.fire(new t.l(new t.ac(`sources.${e}`,null,'optional "animate" property must be a boolean value'))),i.canvas?"string"==typeof i.canvas||i.canvas instanceof HTMLCanvasElement||this.fire(new t.l(new t.ac(`sources.${e}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.l(new t.ac(`sources.${e}`,null,'missing required property "canvas"'))),this.options=i,this.animate=void 0===i.animate||i.animate;}load(){return t._(this,void 0,void 0,(function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.l(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());}))}getCanvas(){return this.canvas}onAdd(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play();}onRemove(){this.pause();}prepare(){let e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context,o=i.gl;this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):(this.texture=new t.T(i,this.canvas,o.RGBA,{premultiply:!0}),this.texture.bind(o.LINEAR,o.CLAMP_TO_EDGE));let a=!1;for(const e in this.tiles){const t=this.tiles[e];"loaded"!==t.state&&(t.state="loaded",t.texture=this.texture,a=!0);}a&&this.fire(new t.n("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));}serialize(){return {type:"canvas",animate:this.animate,canvas:this.options.canvas,coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const e of [this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return !0;return !1}}const ae={},re=e=>{switch(e){case "geojson":return ee;case "image":return te;case "raster":return q;case "raster-dem":return $;case "vector":return W;case "video":return ie;case "canvas":return oe}return ae[e]},se="RTLPluginLoaded";class ne extends t.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=B();}_syncState(e){return this.status=e,this.dispatcher.broadcast("SRPS",{pluginStatus:e,pluginURL:this.url}).catch((e=>{throw this.status="error",e}))}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null;}setRTLTextPlugin(e){return t._(this,arguments,void 0,(function*(e,t=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=n.resolveURL(e),!this.url)throw new Error(`requested url ${e} is invalid`);if("unavailable"===this.status){if(!t)return this._requestImport();this.status="deferred",this._syncState(this.status);}else if("requested"===this.status)return this._requestImport()}))}_requestImport(){return t._(this,void 0,void 0,(function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new t.n(se));}))}lazyLoad(){"unavailable"===this.status?this.status="requested":"deferred"===this.status&&this._requestImport();}}let le=null;function ce(){return le||(le=new ne),le}var he,ue;!function(e){e[e.Base=0]="Base",e[e.Parent=1]="Parent";}(he||(he={})),function(e){e[e.Departing=0]="Departing",e[e.Incoming=1]="Incoming";}(ue||(ue={}));class de{constructor(e,i){this.timeAdded=0,this.fadeEndTime=0,this.fadeOpacity=1,this.tileID=e,this.uid=t.ad(),this.uses=0,this.tileSize=i,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttFingerprint={},this.expiredRequestCount=0,this.state="loading";}isRenderable(e){return this.hasData()&&(!this.fadeEndTime||this.fadeOpacity>0)&&(e||!this.holdingForSymbolFade())}setCrossFadeLogic({fadingRole:e,fadingDirection:t,fadingParentID:i,fadeEndTime:o}){this.resetFadeLogic(),this.fadingRole=e,this.fadingDirection=t,this.fadingParentID=i,this.fadeEndTime=o;}setSelfFadeLogic(e){this.resetFadeLogic(),this.selfFading=!0,this.fadeEndTime=e;}resetFadeLogic(){this.fadingRole=null,this.fadingDirection=null,this.fadingParentID=null,this.selfFading=!1,this.timeAdded=c(),this.fadeEndTime=0,this.fadeOpacity=1;}wasRequested(){return "errored"===this.state||"loaded"===this.state||"reloading"===this.state}clearTextures(e){this.demTexture&&e.saveTileTexture(this.demTexture),this.demTexture=null;}loadVectorData(e,i,o){if(!0!==(null==e?void 0:e.etagUnmodified))if(this.hasData()&&this.unloadVectorData(),this.state="loaded",e){e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestEncoding=e.encoding,this.latestFeatureIndex.rawTileData=e.rawTileData,this.latestFeatureIndex.encoding=e.encoding):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData,this.latestFeatureIndex.encoding=this.latestEncoding)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(e,t){const i={};if(!t)return i;for(const o of e){const e=o.layerIds.map((e=>t.getLayer(e))).filter(Boolean);if(0!==e.length){o.layers=e,o.stateDependentLayerIds&&(o.stateDependentLayers=o.stateDependentLayerIds.map((t=>e.filter((e=>e.id===t))[0])));for(const t of e)i[t.id]=o;}}return i}(e.buckets,null==i?void 0:i.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.af){if(this.hasSymbolBuckets=!0,!o)break;i.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.af&&i.hasRTLText){this.hasRTLText=!0,ce().lazyLoad();break}}this.queryPadding=0;for(const e in this.buckets){const t=this.buckets[e];this.queryPadding=Math.max(this.queryPadding,i.style.getLayer(e).queryRadius(t));}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage),this.dashPositions=e.dashPositions;}else this.collisionBoxArray=new t.ae;else this.state="loaded";}unloadVectorData(){for(const e in this.buckets)this.buckets[e].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.imageAtlas=null,this.dashPositions=null,this.latestFeatureIndex=null,this.state="unloaded";}getBucket(e){return this.buckets[e.id]}upload(e){for(const t in this.buckets){const i=this.buckets[t];i.uploadPending()&&i.upload(e);}const i=e.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new t.T(e,this.imageAtlas.image,i.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new t.T(e,this.glyphAtlasImage,i.ALPHA),this.glyphAtlasImage=null);}prepare(e){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(e,this.imageAtlasTexture);}queryRenderedFeatures(e,t,i,o,a,r,s,n,l,c,h){var u;return (null===(u=this.latestFeatureIndex)||void 0===u?void 0:u.rawTileData)?this.latestFeatureIndex.query({queryGeometry:o,cameraQueryGeometry:a,scale:r,tileSize:this.tileSize,pixelPosMatrix:c,transform:n,params:s,queryPadding:this.queryPadding*l,getElevation:h},e,t,i):{}}querySourceFeatures(e,i){const o=this.latestFeatureIndex;if(!(null==o?void 0:o.rawTileData))return;const a=o.loadVTLayers(),r=(null==i?void 0:i.sourceLayer)?i.sourceLayer:"",s=a[t.ag]||a[r];if(!s)return;const n=t.ah(null==i?void 0:i.filter,null==i?void 0:i.globalState),{z:l,x:c,y:h}=this.tileID.canonical,u={z:l,x:c,y:h};for(let i=0;ie)t=!1;else if(i)if(this.expirationTime({zoom:0,x:0,y:0,wrap:e,fullyVisible:!1}),b=[],y=[];if(e.renderWorldCopies&&n.allowWorldCopies())for(let e=1;e<=3;e++)b.push(x(-e)),b.push(x(e));for(b.push(x(0));b.length>0;){const _=b.pop(),f=_.x,x=_.y;let w=_.fullyVisible;const T={x:f,y:x,z:_.zoom},P=n.getTileBoundingVolume(T,_.wrap,e.elevation,i);if(!w){const e=ye(o,P,a);if(0===e)continue;w=2===e;}const C=n.distanceToTile2d(r.x,r.y,T,P);let M=c;l&&(M=(i.calculateTileZoom||Pe)(e.zoom+t.ar(e.tileSize/i.tileSize),C,g,v,e.fov)),M=(i.roundZoom?Math.round:Math.floor)(M),M=Math.max(0,M);const I=Math.min(M,u);if(_.wrap=n.getWrap(s,T,_.wrap),_.zoom>=I){if(_.zoom>1),wrap:_.wrap,fullyVisible:w});}return y.sort(((e,t)=>e.distanceSq-t.distanceSq)).map((e=>e.tileID))}const Ie=t.a8.fromPoints([new t.P(0,0),new t.P(t.a6,t.a6)]);function Ee(e){return "raster"===e||"image"===e||"video"===e}function Se(e,t,i,o,a,r,s){if(!t.hasData())return !1;const{tileID:n,fadingRole:l,fadingDirection:c,fadingParentID:h}=t;if(l===he.Base&&c===ue.Incoming&&h)return i[h.key]=h,!0;const u=Math.max(n.overscaledZ-a,r);for(let a=n.overscaledZ-1;a>=u;a--){const r=n.scaledTo(a),l=e.getLoadedTile(r);if(l)return t.setCrossFadeLogic({fadingRole:he.Base,fadingDirection:ue.Incoming,fadingParentID:l.tileID,fadeEndTime:o+s}),l.setCrossFadeLogic({fadingRole:he.Parent,fadingDirection:ue.Departing,fadeEndTime:o+s}),i[r.key]=r,!0}return !1}function ze(e,t,i,o,a,r){if(!t.hasData())return !1;const s=t.tileID.children(a);let n=Re(e,t,s,i,o,a,r);if(n)return !0;for(const l of s)Re(e,t,l.children(a),i,o,a,r)&&(n=!0);return n}function Re(e,t,i,o,a,r,s){if(i[0].overscaledZ>=r)return !1;let n=!1;for(const r of i){const i=e.getLoadedTile(r);if(!i)continue;const{fadingRole:l,fadingDirection:c,fadingParentID:h}=i;l===he.Base&&c===ue.Departing&&h||(i.setCrossFadeLogic({fadingRole:he.Base,fadingDirection:ue.Departing,fadingParentID:t.tileID,fadeEndTime:a+s}),t.setCrossFadeLogic({fadingRole:he.Parent,fadingDirection:ue.Incoming,fadeEndTime:a+s})),o[r.key]=r,n=!0;}return n}function De(e,t,i,o){const a=e.tileID;return !!e.selfFading||!e.hasData()&&!!t.has(a)&&(e.setSelfFadeLogic(i+o),!0)}function Ae(e,t){var i;e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0;let o=t.tileID.canonical.x-e.tileID.canonical.x;const a=t.tileID.canonical.y-e.tileID.canonical.y,r=Math.pow(2,e.tileID.canonical.z),s=t.tileID.key;0===o&&0===a||Math.abs(a)>1||(Math.abs(o)>1&&(1===Math.abs(o+r)?o+=r:1===Math.abs(o-r)&&(o-=r)),t.dem&&e.dem&&(e.dem.backfillBorder(t.dem,o,a),(null===(i=e.neighboringTiles)||void 0===i?void 0:i[s])&&(e.neighboringTiles[s].backfilled=!0)));}class Le{constructor(){this._tiles={};}handleWrapJump(e){const t={};for(const i in this._tiles){const o=this._tiles[i];o.tileID=o.tileID.unwrapTo(o.tileID.wrap+e),t[o.tileID.key]=o;}this._tiles=t;}setFeatureState(e,t){for(const i in this._tiles)this._tiles[i].setFeatureState(e,t);}getAllTiles(){return Object.values(this._tiles)}getAllIds(e=!1){return e?Object.values(this._tiles).map((e=>e.tileID)).sort(t.au).map((e=>e.key)):Object.keys(this._tiles)}getTileById(e){return this._tiles[e]}setTile(e,t){this._tiles[e]=t;}deleteTileById(e){delete this._tiles[e];}getLoadedTile(e){const t=this.getTileById(e.key);return (null==t?void 0:t.hasData())?t:null}isIdRenderable(e,t=!1){var i;return null===(i=this.getTileById(e))||void 0===i?void 0:i.isRenderable(t)}getRenderableIds(e=0,i){const o=[];for(const e of this.getAllIds())this.isIdRenderable(e,i)&&o.push(this.getTileById(e));return i?o.sort(((i,o)=>{const a=i.tileID,r=o.tileID,s=new t.P(a.canonical.x,a.canonical.y)._rotate(-e),n=new t.P(r.canonical.x,r.canonical.y)._rotate(-e);return a.overscaledZ-r.overscaledZ||n.y-s.y||n.x-s.x})).map((e=>e.tileID.key)):o.map((e=>e.tileID)).sort(t.au).map((e=>e.key))}}class Fe extends t.E{constructor(e,i,o){super(),this.id=e,this.dispatcher=o,this.on("data",(e=>{this._dataHandler(e);})),this.on("dataloading",(()=>{this._sourceErrored=!1;})),this.on("error",(()=>{this._sourceErrored=this._source.loaded();})),this._source=((e,t,i,o)=>{const a=new(re(t.type))(e,t,i,o);if(a.id!==e)throw new Error(`Expected Source id to be ${e} instead of ${a.id}`);return a})(e,i,o,this),this._inViewTiles=new Le,this._outOfViewCache=new t.av(0,(e=>this._unloadTile(e))),this._timers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._rasterFadeDuration=0,this._maxFadingAncestorLevels=5,this._state=new _e,this._didEmitContent=!1,this._updated=!1;}onAdd(e){var t;this.map=e,this._maxTileCacheSize=e?e._maxTileCacheSize:null,this._maxTileCacheZoomLevels=e?e._maxTileCacheZoomLevels:null,(null===(t=this._source)||void 0===t?void 0:t.onAdd)&&this._source.onAdd(e);}onRemove(e){var t;for(const e of this._inViewTiles.getAllTiles())e.unloadVectorData();this.clearTiles(),(null===(t=this._source)||void 0===t?void 0:t.onRemove)&&this._source.onRemove(e),this._inViewTiles=new Le;}loaded(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;if(!(void 0===this.used&&void 0===this.usedForTerrain||this.used||this.usedForTerrain))return !0;if(!this._updated)return !1;for(const e of this._inViewTiles.getAllTiles())if("loaded"!==e.state&&"errored"!==e.state)return !1;return !0}getSource(){return this._source}getState(){return this._state}pause(){this._paused=!0;}resume(){if(!this._paused)return;const e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform,this.terrain);}_loadTile(e,i,o){return t._(this,void 0,void 0,(function*(){try{const t=yield this._source.loadTile(e);this._tileLoaded(e,i,o,t);}catch(i){e.state="errored",404!==i.status?this._source.fire(new t.l(t.d(i),{tile:e})):this.update(this.transform,this.terrain);}}))}_unloadTile(e){this._source.unloadTile&&this._source.unloadTile(e);}_abortTile(e){this._source.abortTile&&this._source.abortTile(e),this._source.fire(new t.n("dataabort",{tile:e,coord:e.tileID,dataType:"source"}));}serialize(){return this._source.serialize()}prepare(e){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._inViewTiles,this.map?this.map.painter:null);for(const t of this._inViewTiles.getAllTiles())t.upload(e),t.prepare(this.map.style.imageManager);}getIds(){return this._inViewTiles.getAllIds(!0)}getRenderableIds(e){var t;return this._inViewTiles.getRenderableIds(null===(t=this.transform)||void 0===t?void 0:t.bearingInRadians,e)}hasRenderableParent(e){const t=e.overscaledZ-1;if(t>=this._source.minzoom){const i=this.getLoadedTile(e.scaledTo(t));if(i)return this._inViewTiles.isIdRenderable(i.tileID.key)}return !1}reload(e,t=void 0){if(this._paused)this._shouldReloadOnResume=!0;else {this._outOfViewCache.reset();for(const i of this._inViewTiles.getAllIds()){const o=this._inViewTiles.getTileById(i);t&&!this._source.shouldReloadTile(o,t)||(e?this._reloadTile(i,"expired"):"errored"!==o.state&&this._reloadTile(i,"reloading"));}}}_reloadTile(e,i){return t._(this,void 0,void 0,(function*(){const t=this._inViewTiles.getTileById(e);t&&("loading"!==t.state&&(t.state=i),yield this._loadTile(t,e,i));}))}_tileLoaded(e,i,o,a){e.timeAdded=c(),e.selfFading&&(e.fadeEndTime=e.timeAdded+this._rasterFadeDuration),"expired"===o&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),(null==a?void 0:a.unmodified)||("raster-dem"===this.getSource().type&&e.dem&&function(e,t){var i,o,a;const r=t.getRenderableIds();for(const s of r){if(!(null===(i=e.neighboringTiles)||void 0===i?void 0:i[s]))continue;const r=t.getTileById(s);e.neighboringTiles[s].backfilled||Ae(e,r),(null===(a=null===(o=r.neighboringTiles)||void 0===o?void 0:o[e.tileID.key])||void 0===a?void 0:a.backfilled)||Ae(r,e);}}(e,this._inViewTiles),this._state.initializeTileState(e,this.map?this.map.painter:null),e.aborted||this._source.fire(new t.n("data",{dataType:"source",tile:e,coord:e.tileID})));}getTile(e){return this.getTileByID(e.key)}getTileByID(e){return this._inViewTiles.getTileById(e)}_retainLoadedChildren(e,t){const i=this._getLoadedDescendents(t),o=new Set;for(const a of t){const t=i[a.key];if(!(null==t?void 0:t.length)){o.add(a);continue}const r=a.overscaledZ+Fe.maxOverzooming,s=t.filter((e=>e.tileID.overscaledZ<=r));if(!s.length){o.add(a);continue}const n=Math.min(...s.map((e=>e.tileID.overscaledZ))),l=s.filter((e=>e.tileID.overscaledZ===n)).map((e=>e.tileID));for(const t of l)e[t.key]=t;this._areDescendentsComplete(l,n,a.overscaledZ)||o.add(a);}return o}_getLoadedDescendents(e){var t;const i={};for(const o of this._inViewTiles.getAllTiles().filter((e=>e.hasData())))for(const a of e)o.tileID.isChildOf(a)&&(i[t=a.key]||(i[t]=[]),i[a.key].push(o));return i}_areDescendentsComplete(e,t,i){return 1===e.length&&e[0].isOverscaled()?e[0].overscaledZ===t:Math.pow(4,t-i)===e.length}getLoadedTile(e){return this._inViewTiles.getLoadedTile(e)}updateCacheSize(e){const i=Math.ceil(e.width/this._source.tileSize)+1,o=Math.ceil(e.height/this._source.tileSize)+1,a=Math.floor(i*o*(null===this._maxTileCacheZoomLevels?t.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),r="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,a):a;this._outOfViewCache.setMaxSize(r);}handleWrapJump(e){const t=Math.round((e-(void 0===this._prevLng?e:this._prevLng))/360);this._prevLng=e,t&&(this._inViewTiles.handleWrapJump(t),this._resetTileReloadTimers());}update(e,i){if(!this._sourceLoaded||this._paused)return;let o;this.transform=e,this.terrain=i,this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this.used||this.usedForTerrain?this._source.tileID?o=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((e=>new t.a3(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y))):(o=Me(e,{tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:"vector"===this._source.type&&void 0!==this.map._zoomLevelsToOverscale?e.maxZoom-this.map._zoomLevelsToOverscale:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:i,calculateTileZoom:this._source.calculateTileZoom}),this._source.hasTile&&(o=o.filter((e=>this._source.hasTile(e))))):o=[],this.usedForTerrain&&(o=this._addTerrainIdealTiles(o));const a=0===o.length&&!this._updated&&this._didEmitContent;this._updated=!0,a&&this.fire(new t.n("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));const r=Ce(e,this._source),s=this._updateRetainedTiles(o,r),n=Ee(this._source.type);n&&this._rasterFadeDuration>0&&!i&&function(e,i,o,a,r,s,n){const l=c(),h=t.at(i);for(const t of i){const i=e.getTileById(t.key);i.fadingDirection!==ue.Departing&&0!==i.fadeOpacity||i.resetFadeLogic(),Se(e,i,o,l,a,r,n)||ze(e,i,o,l,s,n)||De(i,h,l,n)||i.resetFadeLogic();}}(this._inViewTiles,o,s,this._maxFadingAncestorLevels,this._source.minzoom,this._source.maxzoom,this._rasterFadeDuration),n?this._cleanUpRasterTiles(s):this._cleanUpVectorTiles(s);}_cleanUpRasterTiles(e){for(const t of this._inViewTiles.getAllIds())e[t]||this._removeTile(t);}_cleanUpVectorTiles(e){for(const t of this._inViewTiles.getAllIds()){const i=this._inViewTiles.getTileById(t);e[t]?i.clearSymbolFadeHold():i.hasSymbolBuckets?i.holdingForSymbolFade()?i.symbolFadeFinished()&&this._removeTile(t):i.setSymbolHoldDuration(this.map._fadeDuration):this._removeTile(t);}}_addTerrainIdealTiles(e){const t=[];for(const i of e)if(i.canonical.z>this._source.minzoom){const e=i.scaledTo(i.canonical.z-1);t.push(e);const o=i.scaledTo(Math.max(this._source.minzoom,Math.min(i.canonical.z,5)));t.push(o);}return e.concat(t)}releaseSymbolFadeTiles(){for(const e of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(e).holdingForSymbolFade()&&this._removeTile(e);}_updateRetainedTiles(e,t){var i;const o=new Set;for(const t of e)this._addTile(t).hasData()||o.add(t);const a=e.reduce(((e,t)=>(e[t.key]=t,e)),{}),r=this._retainLoadedChildren(a,o),s={},n=Math.max(t-Fe.maxUnderzooming,this._source.minzoom);for(const e of r){let t=this._inViewTiles.getTileById(e.key),o=null==t?void 0:t.wasRequested();for(let r=e.overscaledZ-1;r>=n;--r){const n=e.scaledTo(r);if(s[n.key])break;if(s[n.key]=!0,t=this.getTile(n),!t&&o&&(t=this._addTile(n)),t){const e=t.hasData();if((e||!(null===(i=this.map)||void 0===i?void 0:i.cancelPendingTileRequestsWhileZooming)||o)&&(a[n.key]=n),o=t.wasRequested(),e)break}}}return a}_addTile(e){let i=this._inViewTiles.getTileById(e.key);if(i)return i;i=this._outOfViewCache.getAndRemove(e),i&&(i.resetFadeLogic(),this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null));const o=i;return i||(i=new de(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,e.key,i.state)),i.uses++,this._inViewTiles.setTile(e.key,i),o||this._source.fire(new t.n("dataloading",{tile:i,coord:i.tileID,dataType:"source"})),i}_setTileReloadTimer(e,t){this._clearTileReloadTimer(e);const i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout((()=>{this._reloadTile(e,"expired"),delete this._timers[e];}),i));}_clearTileReloadTimer(e){const t=this._timers[e];t&&(clearTimeout(t),delete this._timers[e]);}_resetTileReloadTimers(){for(const e in this._timers)clearTimeout(this._timers[e]),delete this._timers[e];for(const e of this._inViewTiles.getAllIds()){const t=this._inViewTiles.getTileById(e);this._setTileReloadTimer(e,t);}}refreshTiles(e){for(const t of this._inViewTiles.getAllIds()){const i=this._inViewTiles.getTileById(t);(this._inViewTiles.isIdRenderable(t)||"errored"==i.state)&&e.some((e=>e.equals(i.tileID.canonical)))&&this._reloadTile(t,"expired");}}_removeTile(e){const t=this._inViewTiles.getTileById(e);t&&(t.uses--,this._inViewTiles.deleteTileById(e),this._clearTileReloadTimer(e),t.uses>0||(t.hasData()&&"reloading"!==t.state?this._outOfViewCache.add(t.tileID,t,t.getExpiryTimeout()):(t.aborted=!0,this._abortTile(t),this._unloadTile(t))));}_dataHandler(e){"source"===e.dataType&&("metadata"!==e.sourceDataType?"content"===e.sourceDataType&&this._sourceLoaded&&!this._paused&&(this.reload(e.sourceDataChanged,e.shouldReloadTileOptions),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0):this._sourceLoaded=!0);}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const e of this._inViewTiles.getAllIds())this._removeTile(e);this._outOfViewCache.reset();}tilesIn(e,i,o){const a=[],r=this.transform;if(!r)return a;const s=r.getCoveringTilesDetailsProvider().allowWorldCopies(),n=o?r.getCameraQueryGeometry(e):e,l=e=>r.screenPointToMercatorCoordinate(e,this.terrain),c=this.transformBbox(e,l,!s),h=this.transformBbox(n,l,!s),u=this.getIds(),d=t.a8.fromPoints(h);for(const e of u){const o=this._inViewTiles.getTileById(e);if(o.holdingForSymbolFade())continue;const n=s?[o.tileID]:[o.tileID.unwrapTo(-1),o.tileID.unwrapTo(0)],l=Math.pow(2,r.zoom-o.tileID.overscaledZ),u=i*o.queryPadding*t.a6/o.tileSize/l;for(const e of n){const i=d.map((i=>e.getTilePoint(new t.a7(i.x,i.y))));if(i.expandBy(u),i.intersects(Ie)){const t=c.map((t=>e.getTilePoint(t))),i=h.map((t=>e.getTilePoint(t)));a.push({tile:o,tileID:s?e:e.unwrapTo(0),queryGeometry:t,cameraQueryGeometry:i,scale:l});}}}return a}transformBbox(e,i,o){let a=e.map(i);if(o){const o=t.a8.fromPoints(e);o.shrinkBy(.001*Math.min(o.width(),o.height()));const r=o.map(i);t.a8.fromPoints(a).covers(r)||(a=a.map((e=>e.x>.5?new t.a7(e.x-1,e.y,e.z):e)));}return a}getVisibleCoordinates(e){const t=this.getRenderableIds(e).map((e=>this._inViewTiles.getTileById(e).tileID));return this.transform&&this.transform.populateCache(t),t}hasTransition(){return !!this._source.hasTransition()||Ee(this._source.type)&&function(e,t){if(t<=0)return !1;const i=c();for(const t of e.getAllTiles())if(t.fadeEndTime>=i)return !0;return !1}(this._inViewTiles,this._rasterFadeDuration)}setRasterFadeDuration(e){this._rasterFadeDuration=e;}setFeatureState(e,i,o){e||(e=t.ag),this._state.updateState(e,i,o);}removeFeatureState(e,i,o){e||(e=t.ag),this._state.removeFeatureState(e,i,o);}getFeatureState(e,i){return e||(e=t.ag),this._state.getState(e,i)}setDependencies(e,t,i){const o=this._inViewTiles.getTileById(e);o&&o.setDependencies(t,i);}reloadTilesForDependencies(e,t){for(const i of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(i).hasDependency(e,t)&&this._reloadTile(i,"reloading");this._outOfViewCache.filter((i=>!i.hasDependency(e,t)));}areTilesLoaded(){for(const e of this._inViewTiles.getAllTiles())if("loaded"!==e.state&&"errored"!==e.state)return !1;return !0}}Fe.maxUnderzooming=10,Fe.maxOverzooming=3;class ke{constructor(e,t){this.reset(e,t);}reset(e,t){this.points=e||[],this._distances=[0];for(let e=1;e0?(a-s)/n:0;return this.points[r].mult(1-l).add(this.points[i].mult(l))}}function Be(e,t){let i=!0;return "always"===e||"never"!==e&&"never"!==t||(i=!1),i}class Oe{constructor(e,t,i){const o=this.boxCells=[],a=this.circleCells=[];this.xCellCount=Math.ceil(e/i),this.yCellCount=Math.ceil(t/i);for(let e=0;ethis.width||o<0||t>this.height)return [];const n=[];if(e<=0&&t<=0&&this.width<=i&&this.height<=o){if(a)return [{key:null,x1:e,y1:t,x2:i,y2:o}];for(let e=0;e0}hitTestCircle(e,t,i,o,a){const r=e-i,s=e+i,n=t-i,l=t+i;if(s<0||r>this.width||l<0||n>this.height)return !1;const c=[];return this._forEachCell(r,n,s,l,this._queryCellCircle,c,{hitTest:!0,overlapMode:o,circle:{x:e,y:t,radius:i},seenUids:{box:{},circle:{}}},a),c.length>0}_queryCell(e,t,i,o,a,r,s,n){const{seenUids:l,hitTest:c,overlapMode:h}=s,u=this.boxCells[a],d=1e-6;if(null!==u){const a=this.bboxes;for(const s of u)if(!l.box[s]){l.box[s]=!0;const u=4*s,_=this.boxKeys[s];if(e<=a[u+2]+d&&t<=a[u+3]+d&&i>=a[u+0]-d&&o>=a[u+1]-d&&(!n||n(_))&&(!c||!Be(h,_.overlapMode))&&(r.push({key:_,x1:a[u],y1:a[u+1],x2:a[u+2],y2:a[u+3]}),c))return !0}}const _=this.circleCells[a];if(null!==_){const a=this.circles;for(const s of _)if(!l.circle[s]){l.circle[s]=!0;const u=3*s,d=this.circleKeys[s];if(this._circleAndRectCollide(a[u],a[u+1],a[u+2],e,t,i,o)&&(!n||n(d))&&(!c||!Be(h,d.overlapMode))){const e=a[u],t=a[u+1],i=a[u+2];if(r.push({key:d,x1:e-i,y1:t-i,x2:e+i,y2:t+i}),c)return !0}}}return !1}_queryCellCircle(e,t,i,o,a,r,s,n){const{circle:l,seenUids:c,overlapMode:h}=s,u=this.boxCells[a];if(null!==u){const e=this.bboxes;for(const t of u)if(!c.box[t]){c.box[t]=!0;const i=4*t,o=this.boxKeys[t];if(this._circleAndRectCollide(l.x,l.y,l.radius,e[i+0],e[i+1],e[i+2],e[i+3])&&(!n||n(o))&&!Be(h,o.overlapMode))return r.push(!0),!0}}const d=this.circleCells[a];if(null!==d){const e=this.circles;for(const t of d)if(!c.circle[t]){c.circle[t]=!0;const i=3*t,o=this.circleKeys[t];if(this._circlesCollide(e[i],e[i+1],e[i+2],l.x,l.y,l.radius)&&(!n||n(o))&&!Be(h,o.overlapMode))return r.push(!0),!0}}}_forEachCell(e,t,i,o,a,r,s,n){const l=this._convertToXCellCoord(e),c=this._convertToYCellCoord(t),h=this._convertToXCellCoord(i),u=this._convertToYCellCoord(o);for(let d=l;d<=h;d++)for(let l=c;l<=u;l++)if(a.call(this,e,t,i,o,this.xCellCount*l+d,r,s,n))return}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,i,o,a,r){const s=o-e,n=a-t,l=i+r;return l*l>s*s+n*n}_circleAndRectCollide(e,t,i,o,a,r,s){const n=(r-o)/2,l=Math.abs(e-(o+n));if(l>n+i)return !1;const c=(s-a)/2,h=Math.abs(t-(a+c));if(h>c+i)return !1;if(l<=n||h<=c)return !0;const u=l-n,d=h-c;return u*u+d*d<=i*i}}function je(e,t){const i=1/(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]),o=1/(t[8]*t[8]+t[9]*t[9]+t[10]*t[10]),a=t[0]*i,r=t[4]*i,s=t[8]*o,n=t[1]*i,l=t[5]*i,c=t[9]*o,h=t[2]*i,u=t[6]*i,d=t[10]*o;e[0]=a,e[1]=r,e[2]=s,e[4]=n,e[5]=l,e[6]=c,e[8]=h,e[9]=u,e[10]=d;const _=t[12],p=t[13],m=t[14];return e[12]=-a*_-n*p-h*m,e[13]=-r*_-l*p-u*m,e[14]=-s*_-c*p-d*m,e[3]=0,e[7]=0,e[11]=0,e[15]=1,e}const Ne=t.O();function Ze(e,i,a){const r=t.O();if(!e){const{vecSouth:e,vecEast:t}=Ge(i),a=o();a[0]=t[0],a[1]=t[1],a[2]=e[0],a[3]=e[1],s=a,(d=(l=(n=a)[0])*(u=n[3])-(h=n[2])*(c=n[1]))&&(s[0]=u*(d=1/d),s[1]=-c*d,s[2]=-h*d,s[3]=l*d),r[0]=a[0],r[1]=a[1],r[4]=a[2],r[5]=a[3];}var s,n,l,c,h,u,d;return t.S(r,r,[1/a,1/a,1]),r}function Ue(e,i,o,a){if(e){const e=t.O();if(!i){const{vecSouth:t,vecEast:i}=Ge(o);e[0]=i[0],e[1]=i[1],e[4]=t[0],e[5]=t[1];}return t.S(e,e,[a,a,1]),e}return o.pixelsToClipSpaceMatrix}function Ge(e){const i=Math.cos(e.rollInRadians),o=Math.sin(e.rollInRadians),a=Math.cos(e.pitchInRadians),r=Math.cos(e.bearingInRadians),s=Math.sin(e.bearingInRadians),n=t.az();n[0]=-r*a*o-s*i,n[1]=-s*a*o+r*i;const l=t.aA(n);l<1e-9?t.aB(n):t.aC(n,n,1/l);const c=t.az();c[0]=r*a*i-s*o,c[1]=s*a*i+r*o;const h=t.aA(c);return h<1e-9?t.aB(c):t.aC(c,c,1/h),{vecEast:c,vecSouth:n}}function Ve(e,i,o,a){let r;a?(r=[e,i,a(e,i),1],t.aE(r,r,o)):(r=[e,i,0,1],nt(r,r,o));const s=r[3];return {point:new t.P(r[0]/s,r[1]/s),signedDistanceFromCamera:s,isOccluded:!1}}function We(e,t){return .5+e/t*.5}function qe(e,t){return e.x>=-t[0]&&e.x<=t[0]&&e.y>=-t[1]&&e.y<=t[1]}function $e(e,i,o,a,r,s,n,l,c,h,u,d,_){const p=o?e.textSizeData:e.iconSizeData,m=t.aw(p,i.transform.zoom),f=[256/i.width*2+1,256/i.height*2+1],g=o?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;g.clear();const v=e.lineVertexArray,x=o?e.text.placedSymbolArray:e.icon.placedSymbolArray,b=i.transform.width/i.transform.height;let y=!1;for(let o=0;oMath.abs(o.x-i.x)*a?{useVertical:!0}:(e===t.ax.vertical?i.yo.x)?{needsFlipping:!0}:null}function Ke(e){const{projectionContext:i,pitchedLabelPlaneMatrixInverse:o,symbol:a,fontSize:r,flip:s,keepUpright:n,glyphOffsetArray:l,dynamicLayoutVertexArray:c,aspectRatio:h,rotateToLine:u}=e,d=r/24,_=a.lineOffsetX*d,p=a.lineOffsetY*d;let m;if(a.numGlyphs>1){const e=a.glyphStartIndex+a.numGlyphs,t=a.lineStartIndex,r=a.lineStartIndex+a.lineLength,c=He(d,l,_,p,s,a,u,i);if(!c)return {notEnoughRoom:!0};const f=et(c.first.point.x,c.first.point.y,i,o),g=et(c.last.point.x,c.last.point.y,i,o);if(n&&!s){const e=Xe(a.writingMode,f,g,h);if(e)return e}m=[c.first];for(let o=a.glyphStartIndex+1;o0?n.point:Ye(i.tileAnchorPoint,s,e,1,i),c=et(e.x,e.y,i,o),u=et(l.x,l.y,i,o),d=Xe(a.writingMode,c,u,h);if(d)return d}const e=at(d*l.getoffsetX(a.glyphStartIndex),_,p,s,a.segment,a.lineStartIndex,a.lineStartIndex+a.lineLength,i,u);if(!e||i.projectionCache.anyProjectionOccluded)return {notEnoughRoom:!0};m=[e];}for(const e of m)t.aD(c,e.point,e.angle);return {}}function Ye(e,t,i,o,a){const r=e.add(e.sub(t)._unit()),s=Je(r.x,r.y,a).point,n=i.sub(s);return i.add(n._mult(o/n.mag()))}function Qe(e,i,o){const a=i.projectionCache;if(a.projections[e])return a.projections[e];const r=new t.P(i.lineVertexArray.getx(e),i.lineVertexArray.gety(e)),s=Je(r.x,r.y,i);if(s.signedDistanceFromCamera>0)return a.projections[e]=s.point,a.anyProjectionOccluded||(a.anyProjectionOccluded=s.isOccluded),s.point;const n=e-o.direction;return Ye(0===o.distanceFromAnchor?i.tileAnchorPoint:new t.P(i.lineVertexArray.getx(n),i.lineVertexArray.gety(n)),r,o.previousVertex,o.absOffsetX-o.distanceFromAnchor+1,i)}function Je(e,t,i){const o=e+i.translation[0],a=t+i.translation[1];let r;return i.pitchWithMap?(r=Ve(o,a,i.pitchedLabelPlaneMatrix,i.getElevation),r.isOccluded=!1):(r=i.transform.projectTileCoordinates(o,a,i.unwrappedTileID,i.getElevation),r.point.x=(.5*r.point.x+.5)*i.width,r.point.y=(.5*-r.point.y+.5)*i.height),r}function et(e,i,o,a){if(o.pitchWithMap){const r=[e,i,0,1];return t.aE(r,r,a),o.transform.projectTileCoordinates(r[0]/r[3],r[1]/r[3],o.unwrappedTileID,o.getElevation).point}return {x:e/o.width*2-1,y:1-i/o.height*2}}function tt(e,t,i){return i.transform.projectTileCoordinates(e,t,i.unwrappedTileID,i.getElevation)}function it(e,t,i){return e._unit()._perp()._mult(t*i)}function ot(e,i,o,a,r,s,n,l,c){if(l.projectionCache.offsets[e])return l.projectionCache.offsets[e];const h=o.add(i);if(e+c.direction=r)return l.projectionCache.offsets[e]=h,h;const u=Qe(e+c.direction,l,c),d=it(u.sub(o),n,c.direction),_=o.add(d),p=u.add(d);return l.projectionCache.offsets[e]=t.aF(s,h,_,p)||h,l.projectionCache.offsets[e]}function at(e,t,i,o,a,r,s,n,l){const c=o?e-t:e+t;let h=c>0?1:-1,u=0;o&&(h*=-1,u=Math.PI),h<0&&(u+=Math.PI);let d,_=h>0?r+a:r+a+1;n.projectionCache.cachedAnchorPoint?d=n.projectionCache.cachedAnchorPoint:(d=Je(n.tileAnchorPoint.x,n.tileAnchorPoint.y,n).point,n.projectionCache.cachedAnchorPoint=d);let p,m,f=d,g=d,v=0,x=0;const b=Math.abs(c),y=[];let w;for(;v+x<=b;){if(_+=h,_=s)return null;v+=x,g=f,m=p;const e={absOffsetX:b,direction:h,distanceFromAnchor:v,previousVertex:g};if(f=Qe(_,n,e),0===i)y.push(g),w=f.sub(g);else {let t;const o=f.sub(g);t=0===o.mag()?it(Qe(_+h,n,e).sub(f),i,h):it(o,i,h),m||(m=g.add(t)),p=ot(_,t,f,r,s,m,i,n,e),y.push(m),w=p.sub(m);}x=w.mag();}const T=w._mult((b-v)/x)._add(m||g),P=u+Math.atan2(f.y-g.y,f.x-g.x);return y.push(T),{point:T,angle:l?P:0,path:y}}const rt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function st(e,t){for(let i=0;i=1;e--)_.push(s.path[e]);for(let e=1;ee.signedDistanceFromCamera<=0))?[]:e.map((e=>e.point));}let f=[];if(_.length>0){const e=_[0].clone(),i=_[0].clone();for(let t=1;t<_.length;t++)e.x=Math.min(e.x,_[t].x),e.y=Math.min(e.y,_[t].y),i.x=Math.max(i.x,_[t].x),i.y=Math.max(i.y,_[t].y);f=e.x>=o.x&&i.x<=a.x&&e.y>=o.y&&i.y<=a.y?[_]:i.xa.x||i.ya.y?[]:t.aG([_],o.x,o.y,a.x,a.y);}for(const t of f){r.reset(t,.25*i);let o=0;o=r.length<=.5*i?1:Math.ceil(r.paddedLength/p)+1;for(let t=0;t{const o=Ve(e.x,e.y,i,t.getElevation),a=t.transform.projectTileCoordinates(o.point.x,o.point.y,t.unwrappedTileID,t.getElevation);return a.point.x=(.5*a.point.x+.5)*t.width,a.point.y=(.5*-a.point.y+.5)*t.height,a}))}(e,t);return function(e){let t=0,i=0,o=0,a=0;for(let r=0;ri&&(i=a,t=o));return e.slice(t,t+i)}(i)}queryRenderedSymbols(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};const i=[],o=new t.a8;for(const a of e){const e=new t.P(a.x+lt,a.y+lt);o.extend(e),i.push(e);}const{minX:a,minY:r,maxX:s,maxY:n}=o,l=this.grid.query(a,r,s,n).concat(this.ignoredGrid.query(a,r,s,n)),c={},h={};for(const e of l){const o=e.key;if(void 0===c[o.bucketInstanceId]&&(c[o.bucketInstanceId]={}),c[o.bucketInstanceId][o.featureIndex])continue;const a=[new t.P(e.x1,e.y1),new t.P(e.x2,e.y1),new t.P(e.x2,e.y2),new t.P(e.x1,e.y2)];t.aH(i,a)&&(c[o.bucketInstanceId][o.featureIndex]=!0,void 0===h[o.bucketInstanceId]&&(h[o.bucketInstanceId]=[]),h[o.bucketInstanceId].push(o.featureIndex));}return h}insertCollisionBox(e,t,i,o,a,r){(i?this.ignoredGrid:this.grid).insert({bucketInstanceId:o,featureIndex:a,collisionGroupID:r,overlapMode:t},e[0],e[1],e[2],e[3]);}insertCollisionCircles(e,t,i,o,a,r){const s=i?this.ignoredGrid:this.grid,n={bucketInstanceId:o,featureIndex:a,collisionGroupID:r,overlapMode:t};for(let t=0;t=this.screenRightBoundary||othis.screenBottomBoundary}isInsideGrid(e,t,i,o){return i>=0&&e=0&&tthis.projectAndGetPerspectiveRatio(e.x,e.y,a,c,u)));S=e.some((e=>!e.isOccluded)),E=e.map((e=>new t.P(e.x,e.y)));}else S=!0;return {box:t.aI(E),allPointsOccluded:!S}}}class ht{constructor(e,t,i,o){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e.placed?t:-t))):o&&i?1:0,this.placed=i;}isHidden(){return 0===this.opacity&&!this.placed}}class ut{constructor(e,t,i,o,a){this.text=new ht(e?e.text:null,t,i,a),this.icon=new ht(e?e.icon:null,t,o,a);}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class dt{constructor(e,t,i){this.text=e,this.icon=t,this.skipFade=i;}}class _t{constructor(e,t,i,o,a){this.bucketInstanceId=e,this.featureIndex=t,this.sourceLayerIndex=i,this.bucketIndex=o,this.tileID=a;}}class pt{constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.collisionGroups={};}get(e){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[e]){const t=++this.maxGroupID;this.collisionGroups[e]={ID:t,predicate:e=>e.collisionGroupID===t};}return this.collisionGroups[e]}}function mt(e,i,o,a,r){const{horizontalAlign:s,verticalAlign:n}=t.aP(e);return new t.P(-(s-.5)*i+a[0]*r,-(n-.5)*o+a[1]*r)}class ft{constructor(e,t,i,o,a){this.transform=e.clone(),this.terrain=t,this.collisionIndex=new ct(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=i,this.retainedQueryData={},this.collisionGroups=new pt(o),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=a,a&&(a.prevPlacement=void 0),this.placedOrientations={};}_getTerrainElevationFunc(e){const t=this.terrain;return t?(i,o)=>t.getElevation(e,i,o):null}getBucketParts(e,i,o,a){const r=o.getBucket(i),s=o.latestFeatureIndex;if(!r||!s||i.id!==r.layerIds[0])return;const n=o.collisionBoxArray,l=r.layers[0].layout,c=r.layers[0].paint,h=Math.pow(2,this.transform.zoom-o.tileID.overscaledZ),u=o.tileSize/t.a6,d=o.tileID.toUnwrapped(),_="map"===l.get("text-rotation-alignment"),p=t.aK(o,1,this.transform.zoom),m=t.aL(this.collisionIndex.transform,o,c.get("text-translate"),c.get("text-translate-anchor")),f=t.aL(this.collisionIndex.transform,o,c.get("icon-translate"),c.get("icon-translate-anchor")),g=Ze(_,this.transform,p);this.retainedQueryData[r.bucketInstanceId]=new _t(r.bucketInstanceId,s,r.sourceLayerIndex,r.index,o.tileID);const v={bucket:r,layout:l,translationText:m,translationIcon:f,unwrappedTileID:d,pitchedLabelPlaneMatrix:g,scale:h,textPixelRatio:u,holdingForFade:o.holdingForSymbolFade(),collisionBoxArray:n,partiallyEvaluatedTextSize:t.aw(r.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(r.sourceID)};if(a)for(const t of r.sortKeyRanges){const{sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:a}=t;e.push({sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:a,parameters:v});}else e.push({symbolInstanceStart:0,symbolInstanceEnd:r.symbolInstances.length,parameters:v});}attemptAnchorPlacement(e,i,o,a,r,s,n,l,c,h,u,d,_,p,m,f,g,v,x,b){var y,w,T;const P=t.aM[e.textAnchor],C=[e.textOffset0,e.textOffset1],M=mt(P,o,a,C,r),I=this.collisionIndex.placeCollisionBox(i,d,l,c,h,n,s,f,u.predicate,x,M,b);if((!v||this.collisionIndex.placeCollisionBox(v,d,l,c,h,n,s,g,u.predicate,x,M,b).placeable)&&I.placeable){let e;if((null===(y=this.prevPlacement)||void 0===y?void 0:y.variableOffsets[_.crossTileID])&&(null===(T=null===(w=this.prevPlacement)||void 0===w?void 0:w.placements[_.crossTileID])||void 0===T?void 0:T.text)&&(e=this.prevPlacement.variableOffsets[_.crossTileID].anchor),0===_.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[_.crossTileID]={textOffset:C,width:o,height:a,anchor:P,textBoxScale:r,prevAnchor:e},this.markUsedJustification(p,P,_,m),p.allowVerticalPlacement&&(this.markUsedOrientation(p,m,_),this.placedOrientations[_.crossTileID]=m),{shift:M,placedGlyphBoxes:I}}}placeLayerBucketPart(e,i,o){const{bucket:a,layout:r,translationText:s,translationIcon:n,unwrappedTileID:l,pitchedLabelPlaneMatrix:c,textPixelRatio:h,holdingForFade:u,collisionBoxArray:d,partiallyEvaluatedTextSize:_,collisionGroup:p}=e.parameters,m=r.get("text-optional"),f=r.get("icon-optional"),g=t.aN(r,"text-overlap","text-allow-overlap"),v="always"===g,x=t.aN(r,"icon-overlap","icon-allow-overlap"),b="always"===x,y="map"===r.get("text-rotation-alignment"),w="map"===r.get("text-pitch-alignment"),T="none"!==r.get("icon-text-fit"),P="viewport-y"===r.get("symbol-z-order"),C=v&&(b||!a.hasIconData()||f),M=b&&(v||!a.hasTextData()||m);!a.collisionArrays&&d&&a.deserializeCollisionBoxes(d);const I=this.retainedQueryData[a.bucketInstanceId].tileID,E=this._getTerrainElevationFunc(I),S=this.transform.getFastPathSimpleProjectionMatrix(I),z=(e,d,b)=>{var P,z;if(i[e.crossTileID])return;if(u)return void(this.placements[e.crossTileID]=new dt(!1,!1,!1));let R=!1,D=!1,A=!0,L=null,F={box:null,placeable:!1,offscreen:null,occluded:!1},k={placeable:!1},B=null,O=null,j=null,N=0,Z=0,U=0;d.textFeatureIndex?N=d.textFeatureIndex:e.useRuntimeCollisionCircles&&(N=e.featureIndex),d.verticalTextFeatureIndex&&(Z=d.verticalTextFeatureIndex);const G=d.textBox;if(G){const i=i=>{let o=t.ax.horizontal;if(a.allowVerticalPlacement&&!i&&this.prevPlacement){const t=this.prevPlacement.placedOrientations[e.crossTileID];t&&(this.placedOrientations[e.crossTileID]=t,o=t,this.markUsedOrientation(a,o,e));}return o},r=(i,o)=>{if(a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&d.verticalTextBox){for(const e of a.writingModes)if(e===t.ax.vertical?(F=o(),k=F):F=i(),null==F?void 0:F.placeable)break}else F=i();},c=e.textAnchorOffsetStartIndex,u=e.textAnchorOffsetEndIndex;if(u===c){const o=(t,i)=>{const o=this.collisionIndex.placeCollisionBox(t,g,h,I,l,w,y,s,p.predicate,E,void 0,S);return (null==o?void 0:o.placeable)&&(this.markUsedOrientation(a,i,e),this.placedOrientations[e.crossTileID]=i),o};r((()=>o(G,t.ax.horizontal)),(()=>{const i=d.verticalTextBox;return a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&i?o(i,t.ax.vertical):{box:null,offscreen:null}})),i(null==F?void 0:F.placeable);}else {let _=t.aM[null===(z=null===(P=this.prevPlacement)||void 0===P?void 0:P.variableOffsets[e.crossTileID])||void 0===z?void 0:z.anchor];const m=(t,i,r)=>{const d=t.x2-t.x1,m=t.y2-t.y1,f=e.textBoxScale,v=T&&"never"===x?i:null;let b=null,P="never"===g?1:2,C="never";_&&P++;for(let i=0;im(G,d.iconBox,t.ax.horizontal)),(()=>{const i=d.verticalTextBox;return a.allowVerticalPlacement&&!(null==F?void 0:F.placeable)&&e.numVerticalGlyphVertices>0&&i?m(i,d.verticalIconBox,t.ax.vertical):{box:null,occluded:!0,offscreen:null}})),F&&(R=F.placeable,A=F.offscreen);const f=i(null==F?void 0:F.placeable);if(!R&&this.prevPlacement){const t=this.prevPlacement.variableOffsets[e.crossTileID];t&&(this.variableOffsets[e.crossTileID]=t,this.markUsedJustification(a,t.anchor,e,f));}}}if(B=F,R=null==B?void 0:B.placeable,A=null==B?void 0:B.offscreen,e.useRuntimeCollisionCircles&&e.centerJustifiedTextSymbolIndex>=0){const i=a.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),n=t.ay(a.textSizeData,_,i),h=r.get("text-padding");O=this.collisionIndex.placeCollisionCircles(g,i,a.lineVertexArray,a.glyphOffsetArray,n,l,c,o,w,p.predicate,e.collisionCircleDiameter,h,s,E),O.circles.length&&O.collisionDetected&&!o&&t.w("Collisions detected, but collision boxes are not shown"),R=v||O.circles.length>0&&!O.collisionDetected,A&&(A=O.offscreen);}if(d.iconFeatureIndex&&(U=d.iconFeatureIndex),d.iconBox){const e=e=>this.collisionIndex.placeCollisionBox(e,x,h,I,l,w,y,n,p.predicate,E,T&&L?L:void 0,S);k&&k.placeable&&d.verticalIconBox?(j=e(d.verticalIconBox),D=j.placeable):(j=e(d.iconBox),D=j.placeable),A&&(A=j.offscreen);}const V=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,W=f||0===e.numIconVertices;V||W?W?V||D&&(D=R):R=D&&R:D=R=D&&R;const q=D&&j.placeable;if(R&&B.placeable&&this.collisionIndex.insertCollisionBox(B.box,g,r.get("text-ignore-placement"),a.bucketInstanceId,k&&k.placeable&&Z?Z:N,p.ID),q&&this.collisionIndex.insertCollisionBox(j.box,x,r.get("icon-ignore-placement"),a.bucketInstanceId,U,p.ID),O&&R&&this.collisionIndex.insertCollisionCircles(O.circles,g,r.get("text-ignore-placement"),a.bucketInstanceId,N,p.ID),o&&this.storeCollisionData(a.bucketInstanceId,b,d,B,j,O),0===e.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");if(0===a.bucketInstanceId)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[e.crossTileID]=new dt((R||C)&&!(null==B?void 0:B.occluded),(D||M)&&!(null==j?void 0:j.occluded),A||a.justReloaded),i[e.crossTileID]=!0;};if(P){if(0!==e.symbolInstanceStart)throw new Error("bucket.bucketInstanceId should be 0");const t=a.getSortedSymbolIndexes(-this.transform.bearingInRadians);for(let e=t.length-1;e>=0;--e){const i=t[e];z(a.symbolInstances.get(i),a.collisionArrays[i],i);}}else for(let t=e.symbolInstanceStart;t=0&&(e.text.placedSymbolArray.get(t).crossTileID=r>=0&&t!==r?0:o.crossTileID);}markUsedOrientation(e,i,o){const a=i===t.ax.horizontal||i===t.ax.horizontalOnly?i:0,r=i===t.ax.vertical?i:0,s=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex];for(const t of s)e.text.placedSymbolArray.get(t).placedOrientation=a;o.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).placedOrientation=r);}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;const t=this.prevPlacement;let i=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;const o=t?t.symbolFadeChange(e):1,a=t?t.opacities:{},r=t?t.variableOffsets:{},s=t?t.placedOrientations:{};for(const e in this.placements){const t=this.placements[e],r=a[e];r?(this.opacities[e]=new ut(r,o,t.text,t.icon),i||(i=t.text!==r.text.placed),i||(i=t.icon!==r.icon.placed)):(this.opacities[e]=new ut(null,o,t.text,t.icon,t.skipFade),i||(i=t.text||t.icon));}for(const e in a){const t=a[e];if(!this.opacities[e]){const a=new ut(t,o,!1,!1);a.isHidden()||(this.opacities[e]=a,i||(i=t.text.placed),i||(i=t.icon.placed));}}for(const e in r)this.variableOffsets[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.variableOffsets[e]=r[e]);for(const e in s)this.placedOrientations[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.placedOrientations[e]=s[e]);if(t&&void 0===t.lastPlacementChangeTime)throw new Error("Last placement time for previous placement is not defined");i?this.lastPlacementChangeTime=e:"number"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e);}updateLayerOpacities(e,t){const i={};for(const o of t){const t=o.getBucket(e);t&&o.latestFeatureIndex&&e.id===t.layerIds[0]&&this.updateBucketOpacities(t,o.tileID,i,o.collisionBoxArray);}}updateBucketOpacities(e,i,o,a){e.hasTextData()&&(e.text.opacityVertexArray.clear(),e.text.hasVisibleVertices=!1),e.hasIconData()&&(e.icon.opacityVertexArray.clear(),e.icon.hasVisibleVertices=!1),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();const r=e.layers[0],s=r.layout,n=new ut(null,0,!1,!1,!0),l=s.get("text-allow-overlap"),c=s.get("icon-allow-overlap"),h=r._unevaluatedLayout.hasValue("text-variable-anchor")||r._unevaluatedLayout.hasValue("text-variable-anchor-offset"),u="map"===s.get("text-rotation-alignment"),d="map"===s.get("text-pitch-alignment"),_="none"!==s.get("icon-text-fit"),p=new ut(null,0,l&&(c||!e.hasIconData()||s.get("icon-optional")),c&&(l||!e.hasTextData()||s.get("text-optional")),!0);!e.collisionArrays&&a&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(a);const m=(e,t,i)=>{for(let o=0;o0,v=this.placedOrientations[a.crossTileID],x=v===t.ax.vertical,b=v===t.ax.horizontal||v===t.ax.horizontalOnly;if(r>0||s>0){const t=Ct(c.text);m(e.text,r,x?Mt:t),m(e.text,s,b?Mt:t);const i=c.text.isHidden(),o=[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex];for(const t of o)t>=0&&(e.text.placedSymbolArray.get(t).hidden=i||x?1:0);a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=i||b?1:0);const n=this.variableOffsets[a.crossTileID];n&&this.markUsedJustification(e,n.anchor,a,v);const l=this.placedOrientations[a.crossTileID];l&&(this.markUsedJustification(e,"left",a,l),this.markUsedOrientation(e,l,a));}if(g){const t=Ct(c.icon),i=!(_&&a.verticalPlacedIconSymbolIndex&&x);a.placedIconSymbolIndex>=0&&(m(e.icon,a.numIconVertices,i?t:Mt),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=c.icon.isHidden()),a.verticalPlacedIconSymbolIndex>=0&&(m(e.icon,a.numVerticalIconVertices,i?Mt:t),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=c.icon.isHidden());}const y=(null==f?void 0:f.has(i))?f.get(i):{text:null,icon:null};if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){const o=e.collisionArrays[i];if(o){let i=new t.P(0,0);if(o.textBox||o.verticalTextBox){let t=!0;if(h){const e=this.variableOffsets[l];e?(i=mt(e.anchor,e.width,e.height,e.textOffset,e.textBoxScale),u&&i._rotate(d?-this.transform.bearingInRadians:this.transform.bearingInRadians)):t=!1;}if(o.textBox||o.verticalTextBox){let a;o.textBox&&(a=x),o.verticalTextBox&&(a=b),gt(e.textCollisionBox.collisionVertexArray,c.text.placed,!t||a,y.text,i.x,i.y);}}if(o.iconBox||o.verticalIconBox){const t=Boolean(!b&&o.verticalIconBox);let a;o.iconBox&&(a=t),o.verticalIconBox&&(a=!t),gt(e.iconCollisionBox.collisionVertexArray,c.icon.placed,a,y.icon,_?i.x:0,_?i.y:0);}}}}if(e.sortFeatures(-this.transform.bearingInRadians),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.text.opacityVertexArray.length!==e.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${e.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${e.text.layoutVertexArray.length}) / 4`);if(e.icon.opacityVertexArray.length!==e.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${e.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${e.icon.layoutVertexArray.length}) / 4`);e.bucketInstanceId in this.collisionCircleArrays&&(e.collisionCircleArray=this.collisionCircleArrays[e.bucketInstanceId],delete this.collisionCircleArrays[e.bucketInstanceId]);}symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTimee}setStale(){this.stale=!0;}}function gt(e,t,i,o,a,r){o&&0!==o.length||(o=[0,0,0,0]);const s=o[0]-lt,n=o[1]-lt,l=o[2]-lt,c=o[3]-lt;e.emplaceBack(t?1:0,i?1:0,a||0,r||0,s,n),e.emplaceBack(t?1:0,i?1:0,a||0,r||0,l,n),e.emplaceBack(t?1:0,i?1:0,a||0,r||0,l,c),e.emplaceBack(t?1:0,i?1:0,a||0,r||0,s,c);}const vt=Math.pow(2,25),xt=Math.pow(2,24),bt=Math.pow(2,17),yt=Math.pow(2,16),wt=Math.pow(2,9),Tt=Math.pow(2,8),Pt=Math.pow(2,1);function Ct(e){if(0===e.opacity&&!e.placed)return 0;if(1===e.opacity&&e.placed)return 4294967295;const t=e.placed?1:0,i=Math.floor(127*e.opacity);return i*vt+t*xt+i*bt+t*yt+i*wt+t*Tt+i*Pt+t}const Mt=0;class It{constructor(e){this._sortAcrossTiles="viewport-y"!==e.layout.get("symbol-z-order")&&!e.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];}continuePlacement(e,t,i,o,a){const r=this._bucketParts;for(;this._currentTileIndexe.sortKey-t.sortKey)));this._currentPartIndex!this._forceFullPlacement&&c()-a>2;for(;this._currentPlacementIndex>=0;){const a=i[e[this._currentPlacementIndex]],s=this.placement.collisionIndex.transform.zoom;if(t.aQ(a)&&a.layout&&(!a.minzoom||a.minzoom<=s)&&(!a.maxzoom||a.maxzoom>s)){if(this._inProgressLayer||(this._inProgressLayer=new It(a)),this._inProgressLayer.continuePlacement(o[a.source],this.placement,this._showCollisionBoxes,a,r))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;}commit(e){return this.placement.commit(e),this.placement}}const St=512/t.a6/2;class zt{constructor(e,i,o){this.tileID=e,this.bucketInstanceId=o,this._symbolsByKey={};const a=new Map;for(let e=0;e({x:Math.floor(e.anchorX*St),y:Math.floor(e.anchorY*St)}))),crossTileIDs:i.map((e=>e.crossTileID))};if(o.positions.length>128){const e=new t.aR(o.positions.length,16,Uint16Array);for(const{x:t,y:i}of o.positions)e.add(t,i);e.finish(),delete o.positions,o.index=e;}this._symbolsByKey[e]=o;}}getScaledCoordinates(e,i){const{x:o,y:a,z:r}=this.tileID.canonical,{x:s,y:n,z:l}=i.canonical,c=St/Math.pow(2,l-r),h=(n*t.a6+e.anchorY)*c,u=a*t.a6*St;return {x:Math.floor((s*t.a6+e.anchorX)*c-o*t.a6*St),y:Math.floor(h-u)}}findMatches(e,t,i){const o=this.tileID.canonical.ze))}}class Rt{constructor(){this.maxCrossTileID=0;}generate(){return ++this.maxCrossTileID}}class Dt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;}handleWrapJump(e){const t=Math.round((e-this.lng)/360);if(0!==t)for(const e in this.indexes){const i=this.indexes[e],o={};for(const e in i){const a=i[e];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+t),o[a.tileID.key]=a;}this.indexes[e]=o;}this.lng=e;}addBucket(e,t,i){var o,a,r;if(null===(o=this.indexes[e.overscaledZ])||void 0===o?void 0:o[e.key]){if(this.indexes[e.overscaledZ][e.key].bucketInstanceId===t.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(e.overscaledZ,this.indexes[e.overscaledZ][e.key]);}for(let e=0;ee.overscaledZ)for(const i in o){const a=o[i];a.tileID.isChildOf(e)&&a.findMatches(t.symbolInstances,e,s);}else {const a=o[e.scaledTo(Number(i)).key];a&&a.findMatches(t.symbolInstances,e,s);}}for(let e=0;e 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\n#ifdef GLOBE\nif ((pos.y <-32767.5) || (pos.y > 32766.5)) {return 0.0;}\n#endif\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}const float PI=3.141592653589793;uniform mat4 u_projection_matrix;"),projectionMercator:kt("","float projectLineThickness(float tileY) {return 1.0;}float projectCircleRadius(float tileY) {return 1.0;}vec4 projectTile(vec2 p) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);return result;}vec4 projectTile(vec2 p,vec2 rawPos) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);if (rawPos.y <-32767.5 || rawPos.y > 32766.5) {result.z=-10000000.0;}return result;}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_projection_matrix*vec4(posInTile,elevation,1.0);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {return projectTileWithElevation(posInTile,elevation);}"),projectionGlobe:kt("","#define GLOBE_RADIUS 6371008.8\nuniform highp vec4 u_projection_tile_mercator_coords;uniform highp vec4 u_projection_clipping_plane;uniform highp float u_projection_transition;uniform mat4 u_projection_fallback_matrix;vec3 globeRotateVector(vec3 vec,vec2 angles) {vec3 axisRight=vec3(vec.z,0.0,-vec.x);vec3 axisUp=cross(axisRight,vec);axisRight=normalize(axisRight);axisUp=normalize(axisUp);vec2 t=tan(angles);return normalize(vec+axisRight*t.x+axisUp*t.y);}mat3 globeGetRotationMatrix(vec3 spherePos) {vec3 axisRight=vec3(spherePos.z,0.0,-spherePos.x);vec3 axisDown=cross(axisRight,spherePos);axisRight=normalize(axisRight);axisDown=normalize(axisDown);return mat3(axisRight,axisDown,spherePos\n);}float circumferenceRatioAtTileY(float tileY) {float mercator_pos_y=u_projection_tile_mercator_coords.y+u_projection_tile_mercator_coords.w*tileY;float spherical_y=2.0*atan(exp(PI-(mercator_pos_y*PI*2.0)))-PI*0.5;return cos(spherical_y);}float projectLineThickness(float tileY) {float thickness=1.0/circumferenceRatioAtTileY(tileY); \nif (u_projection_transition < 0.999) {return mix(1.0,thickness,u_projection_transition);} else {return thickness;}}vec3 projectToSphere(vec2 translatedPos,vec2 rawPos) {vec2 mercator_pos=u_projection_tile_mercator_coords.xy+u_projection_tile_mercator_coords.zw*translatedPos;vec2 spherical;spherical.x=mercator_pos.x*PI*2.0+PI;spherical.y=2.0*atan(exp(PI-(mercator_pos.y*PI*2.0)))-PI*0.5;float len=cos(spherical.y);vec3 pos=vec3(sin(spherical.x)*len,sin(spherical.y),cos(spherical.x)*len\n);if (rawPos.y <-32767.5) {pos=vec3(0.0,1.0,0.0);}if (rawPos.y > 32766.5) {pos=vec3(0.0,-1.0,0.0);}return pos;}vec3 projectToSphere(vec2 posInTile) {return projectToSphere(posInTile,vec2(0.0,0.0));}float globeComputeClippingZ(vec3 spherePos) {return (1.0-(dot(spherePos,u_projection_clipping_plane.xyz)+u_projection_clipping_plane.w));}vec4 interpolateProjection(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);globePosition.z=globeComputeClippingZ(elevatedPos)*globePosition.w;if (u_projection_transition > 0.999) {return globePosition;}vec4 flatPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);const float z_globeness_threshold=0.2;vec4 result=globePosition;result.z=mix(0.0,globePosition.z,clamp((u_projection_transition-z_globeness_threshold)/(1.0-z_globeness_threshold),0.0,1.0));result.xyw=mix(flatPosition.xyw,globePosition.xyw,u_projection_transition);if ((posInTile.y <-32767.5) || (posInTile.y > 32766.5)) {result=globePosition;const float poles_hidden_anim_percentage=0.02;result.z=mix(globePosition.z,100.0,pow(max((1.0-u_projection_transition)/poles_hidden_anim_percentage,0.0),8.0));}return result;}vec4 interpolateProjectionFor3D(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);if (u_projection_transition > 0.999) {return globePosition;}vec4 fallbackPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);return mix(fallbackPosition,globePosition,u_projection_transition);}vec4 projectTile(vec2 posInTile) {return interpolateProjection(posInTile,projectToSphere(posInTile),0.0);}vec4 projectTile(vec2 posInTile,vec2 rawPos) {return interpolateProjection(posInTile,projectToSphere(posInTile,rawPos),0.0);}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return interpolateProjection(posInTile,projectToSphere(posInTile),elevation);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {vec3 spherePos=projectToSphere(posInTile,posInTile);return interpolateProjectionFor3D(posInTile,spherePos,elevation);}"),background:kt("uniform vec4 u_color;uniform float u_opacity;void main() {fragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),backgroundPattern:kt("uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;void main() {gl_Position=projectTile(a_pos);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:kt("in vec3 v_data;in float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));fragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);const float epsilon=0.5/255.0;if (fragColor.r < epsilon && fragColor.g < epsilon && fragColor.b < epsilon && fragColor.a < epsilon) {discard;}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform highp float u_globe_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;uniform vec2 u_translate;in vec2 a_pos;out vec3 v_data;out float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 pos_raw=a_pos+32768.0;vec2 extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);vec2 circle_center=floor(pos_raw/8.0)+u_translate;float ele=get_elevation(circle_center);v_visibility=calculate_visibility(projectTileWithElevation(circle_center,ele));if (u_pitch_with_map) {\n#ifdef GLOBE\nvec3 center_vector=projectToSphere(circle_center);\n#endif\nfloat angle_scale=u_globe_extrude_scale;vec2 corner_position=circle_center;if (u_scale_with_map) {angle_scale*=(radius+stroke_width);corner_position+=extrude*u_extrude_scale*(radius+stroke_width);} else {\n#ifdef GLOBE\nvec4 projected_center=interpolateProjection(circle_center,center_vector,ele);\n#else\nvec4 projected_center=projectTileWithElevation(circle_center,ele);\n#endif\ncorner_position+=extrude*u_extrude_scale*(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);angle_scale*=(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);}\n#ifdef GLOBE\nvec2 angles=extrude*angle_scale;vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(corner_position,corner_vector,ele);\n#else\ngl_Position=projectTileWithElevation(corner_position,ele);\n#endif\n} else {gl_Position=projectTileWithElevation(circle_center,ele);if (gl_Position.z/gl_Position.w > 1.0) {gl_Position.xy=vec2(10000.0);}if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}"),clippingMask:kt(Lt,"in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),heatmap:kt("uniform highp float u_intensity;in vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);fragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;uniform highp float u_globe_extrude_scale;in vec2 a_pos;out vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 pos_raw=a_pos+32768.0;vec2 unscaled_extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 circle_center=floor(pos_raw/8.0);\n#ifdef GLOBE\nvec2 angles=v_extrude*radius*u_globe_extrude_scale;vec3 center_vector=projectToSphere(circle_center);vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(circle_center+extrude,corner_vector,0.0);\n#else\ngl_Position=projectTileFor3D(circle_center+extrude,get_elevation(circle_center));\n#endif\n}"),heatmapTexture:kt("uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;in vec2 v_pos;void main() {float t=texture(u_image,v_pos).r;vec4 color=texture(u_color_ramp,vec2(t,0.5));fragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(0.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:kt("in float v_placed;in float v_notUsed;void main() {float alpha=0.5;fragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {fragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {fragColor*=.1;}}","in vec2 a_anchor_pos;in vec2 a_placed;in vec2 a_box_real;uniform vec2 u_pixel_extrude_scale;out float v_placed;out float v_notUsed;void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:kt("in float v_radius;in vec2 v_extrude;in float v_collision;void main() {float alpha=0.5;float stroke_radius=0.9;float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);fragColor=color*alpha*opacity_t;}","in vec2 a_pos;in float a_radius;in vec2 a_flags;uniform vec2 u_viewport_size;out float v_radius;out vec2 v_extrude;out float v_collision;void main() {float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_collision=collision;gl_Position=vec4((a_pos/u_viewport_size*2.0-1.0)*vec2(1.0,-1.0),0.0,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),colorRelief:kt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;uniform vec4 u_unpack;uniform sampler2D u_elevation_stops;uniform sampler2D u_color_stops;uniform int u_color_ramp_size;uniform float u_opacity;in vec2 v_pos;float getElevation(vec2 coord) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}float getElevationStop(int stop) {float x=(float(stop)+0.5)/float(u_color_ramp_size);vec4 data=texture(u_elevation_stops,vec2(x,0))*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {float el=getElevation(v_pos);int r=(u_color_ramp_size-1);int l=0;float el_l=getElevationStop(l);float el_r=getElevationStop(r);while(r-l > 1){int m=(r+l)/2;float el_m=getElevationStop(m);if(el < el_m){r=m;el_r=el_m;}else\n{l=m;el_l=el_m;}}float x=(float(l)+(el-el_l)/(el_r-el_l)+0.5)/float(u_color_ramp_size);fragColor=u_opacity*texture(u_color_stops,vec2(x,0));\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_dimension;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_pos/8192.0)*scale+epsilon;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),debug:kt("uniform highp vec4 u_color;uniform sampler2D u_overlay;in vec2 v_uv;void main() {vec4 overlay_color=texture(u_overlay,v_uv);fragColor=mix(u_color,overlay_color,overlay_color.a);}","in vec2 a_pos;out vec2 v_uv;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=projectTileWithElevation(a_pos*u_overlay_scale,get_elevation(a_pos));}"),depth:kt(Lt,"in vec2 a_pos;void main() {\n#ifdef GLOBE\ngl_Position=projectTileFor3D(a_pos,0.0);\n#else\ngl_Position=u_projection_matrix*vec4(a_pos,0.0,1.0);\n#endif\n}"),fill:kt("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\nfragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_fill_translate;in vec2 a_pos;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=projectTile(a_pos+u_fill_translate,a_pos);}"),fillOutline:kt("in vec2 v_pos;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=outline_color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_world;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n}"),fillOutlinePattern:kt("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;in vec2 v_pos_a;in vec2 v_pos_b;in vec2 v_pos;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;out vec2 v_pos;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=projectTile(a_pos+u_fill_translate,a_pos);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n}"),fillPattern:kt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}"),fillExtrusion:kt("in vec4 v_color;void main() {fragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;in vec2 a_pos;in vec4 a_normal_ed;\n#ifdef TERRAIN3D\nin vec2 a_centroid;\n#endif\nout vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;\n#ifdef GLOBE\nvec3 spherePos=projectToSphere(posInTile,a_pos);gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);\n#else\ngl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);\n#endif\nfloat colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;vec3 normalForLighting=normal/16384.0;float directional=clamp(dot(normalForLighting,u_lightpos),0.0,1.0);\n#ifdef GLOBE\nmat3 rotMatrix=globeGetRotationMatrix(spherePos);normalForLighting=rotMatrix*normalForLighting;directional=mix(directional,clamp(dot(normalForLighting,u_lightpos_globe),0.0,1.0),u_projection_transition);\n#endif\ndirectional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}"),fillExtrusionPattern:kt("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;in vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);fragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;in vec2 a_pos;in vec4 a_normal_ed;\n#ifdef TERRAIN3D\nin vec2 a_centroid;\n#endif\n#ifdef GLOBE\nout vec3 v_sphere_pos;\n#endif\nout vec2 v_pos_a;out vec2 v_pos_b;out vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;\n#ifdef GLOBE\nvec3 spherePos=projectToSphere(posInTile,a_pos);vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);v_sphere_pos=elevatedPos;gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);\n#else\ngl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);\n#endif\nvec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,elevation*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}"),hillshadePrepare:kt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {vec2 epsilon=1.0/u_dimension;float tileSize=u_dimension.x-2.0;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))*tileSize/pow(2.0,exaggeration+(28.2562-u_zoom));fragColor=clamp(vec4(deriv.x/8.0+0.5,deriv.y/8.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;in vec2 a_pos;in vec2 a_texture_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:kt("uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_latrange;uniform float u_exaggeration;uniform vec4 u_accent;uniform int u_method;uniform float u_altitudes[NUM_ILLUMINATION_SOURCES];uniform float u_azimuths[NUM_ILLUMINATION_SOURCES];uniform vec4 u_shadows[NUM_ILLUMINATION_SOURCES];uniform vec4 u_highlights[NUM_ILLUMINATION_SOURCES];\n#define PI 3.141592653589793\n#define STANDARD 0\n#define COMBINED 1\n#define IGOR 2\n#define MULTIDIRECTIONAL 3\n#define BASIC 4\nfloat get_aspect(vec2 deriv){return deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);}void igor_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float aspect=get_aspect(deriv);float azimuth=u_azimuths[0]+PI;float slope_stength=atan(length(deriv))*2.0/PI;float aspect_strength=1.0-abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);float shadow_strength=slope_stength*aspect_strength;float highlight_strength=slope_stength*(1.0-aspect_strength);fragColor=u_shadows[0]*shadow_strength+u_highlights[0]*highlight_strength;}void standard_hillshade(vec2 deriv){float azimuth=u_azimuths[0]+PI;float slope=atan(0.625*length(deriv));float aspect=get_aspect(deriv);float intensity=u_exaggeration;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadows[0],u_highlights[0],shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);fragColor=accent_color*(1.0-shade_color.a)+shade_color;}void basic_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor=u_highlights[0]*(2.0*shade-1.0);}else\n{fragColor=u_shadows[0]*(1.0-2.0*shade);}}void multidirectional_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;fragColor=vec4(0,0,0,0);for(int i=0; i < NUM_ILLUMINATION_SOURCES; i++){float cos_alt=cos(u_altitudes[i]);float sin_alt=sin(u_altitudes[i]);float cos_az=-cos(u_azimuths[i]);float sin_az=-sin(u_azimuths[i]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor+=u_highlights[i]*(2.0*shade-1.0)/float(NUM_ILLUMINATION_SOURCES);}else\n{fragColor+=u_shadows[i]*(1.0-2.0*shade)/float(NUM_ILLUMINATION_SOURCES);}}}void combined_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=acos((sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv)));cang=clamp(cang,0.0,PI/2.0);float shade=cang*atan(length(deriv))*4.0/PI/PI;float highlight=(PI/2.0-cang)*atan(length(deriv))*4.0/PI/PI;fragColor=u_shadows[0]*shade+u_highlights[0]*highlight;}void main() {vec4 pixel=texture(u_image,v_pos);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));vec2 deriv=((pixel.rg*8.0)-4.0)/scaleFactor;if (u_method==BASIC) {basic_hillshade(deriv);} else if (u_method==COMBINED) {combined_hillshade(deriv);} else if (u_method==IGOR) {igor_hillshade(deriv);} else if (u_method==MULTIDIRECTIONAL) {multidirectional_hillshade(deriv);} else if (u_method==STANDARD) {standard_hillshade(deriv);} else {standard_hillshade(deriv);}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);v_pos=a_pos/8192.0;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),line:kt("uniform lowp float u_device_pixel_ratio;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp float v_linesofar;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),lineGradient:kt("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;in highp vec2 v_uv;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nin vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),linePattern:kt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;in vec2 v_normal;in vec2 v_width2;in float v_linesofar;in float v_gamma_scale;in float v_width;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture(u_image,pos_a),texture(u_image,pos_b),u_fade);fragColor=color*alpha*opacity;\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_linesofar;out float v_gamma_scale;out float v_width;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),lineSDF:kt("uniform lowp float u_device_pixel_ratio;uniform lowp float u_lineatlas_width;uniform sampler2D u_image;uniform float u_mix;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture(u_image,v_tex_a).a;float sdfdist_b=texture(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0/u_device_pixel_ratio)/min(dasharray_from.w,dasharray_to.w);alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out vec2 v_tex_a;out vec2 v_tex_b;out float v_gamma_scale;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nfloat u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}"),lineGradientSDF:kt("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform sampler2D u_image_dash;uniform float u_mix;uniform lowp float u_lineatlas_width;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;in highp vec2 v_uv;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);float sdfdist_a=texture(u_image_dash,v_tex_a).a;float sdfdist_b=texture(u_image_dash,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0)/min(dasharray_from.w,dasharray_to.w);float dash_alpha=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*dash_alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;out vec2 v_tex_a;out vec2 v_tex_b;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;float texel_height=1.0/u_image_height;float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nfloat u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}"),raster:kt("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;in vec2 v_pos0;in vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture(u_image0,v_pos0);vec4 color1=texture(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);fragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;uniform vec4 u_coords_top;uniform vec4 u_coords_bottom;in vec2 a_pos;out vec2 v_pos0;out vec2 v_pos1;void main() {vec2 fractionalPos=a_pos/8192.0;vec2 position=mix(mix(u_coords_top.xy,u_coords_top.zw,fractionalPos.x),mix(u_coords_bottom.xy,u_coords_bottom.zw,fractionalPos.x),fractionalPos.y);gl_Position=projectTile(position,position);v_pos0=((fractionalPos-0.5)/u_buffer_scale)+0.5;\n#ifdef GLOBE\nif (a_pos.y <-32767.5) {v_pos0.y=0.0;}if (a_pos.y > 32766.5) {v_pos0.y=1.0;}\n#endif\nv_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:kt("uniform sampler2D u_texture;in vec2 v_tex;in float v_total_opacity;void main() {fragColor=texture(u_texture,v_tex)*v_total_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_tex;out float v_total_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_total_opacity=opacity*max(0.0,min(visibility,fade_opacity[0]+fade_change));if (v_total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;\n#ifdef GLOBE\nif(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;}"),symbolSDF:kt("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform bool u_is_plain;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;in vec2 v_data0;in vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float total_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;lowp float dist=texture(u_texture,tex).a;lowp vec4 color_alpha_out_text,color_alpha_out_halo;if (u_is_plain){highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);color_alpha_out_text=total_opacity*alpha*fill_color;}if (u_is_halo) {float gamma_halo=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);float inner_edge_halo=inner_edge+gamma_halo*gamma_scale;highp float gamma_scaled_halo=gamma_halo*gamma_scale;highp float alpha_halo=smoothstep(inner_edge_halo-gamma_scaled_halo,inner_edge_halo+gamma_scaled_halo,dist);highp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha_halo= min(smoothstep(halo_edge-gamma_scaled_halo,halo_edge+gamma_scaled_halo,dist),1.0-alpha_halo);color_alpha_out_halo=total_opacity*alpha_halo*halo_color;}if (u_is_plain && u_is_halo) {fragColor=color_alpha_out_text+(1.-color_alpha_out_text.a)*color_alpha_out_halo;} else if (u_is_halo){fragColor=color_alpha_out_halo;} else {fragColor=color_alpha_out_text;}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_data0;out vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy/16.0;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));float total_opacity=opacity*interpolated_fade_opacity;if (total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;\n#ifdef GLOBE\nif(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,total_opacity);}"),symbolTextAndIcon:kt("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform bool u_is_text;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;in vec4 v_data0;in vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat total_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;fragColor=texture(u_texture_icon,tex_icon)*total_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;lowp float dist=texture(u_texture,tex).a;lowp vec4 color_alpha_out,color_alpha_out_halo;if (u_is_text) {highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);color_alpha_out=fill_color*(alpha*total_opacity);}if (u_is_halo) {highp float gamma_halo=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);lowp float buff_halo=(6.0-halo_width/fontScale)/SDF_PX;highp float gamma_scaled_halo=gamma_halo*gamma_scale;highp float alpha_halo=smoothstep(buff_halo-gamma_scaled_halo,buff_halo+gamma_scaled_halo,dist);color_alpha_out_halo=halo_color*(alpha_halo*total_opacity);}if (u_is_text && u_is_halo) {fragColor=color_alpha_out+(1.-color_alpha_out.a)*color_alpha_out_halo;} else if (u_is_halo) {fragColor=color_alpha_out_halo;} else {fragColor=color_alpha_out;}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec4 v_data0;out vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));float total_opacity=opacity*interpolated_fade_opacity;if (total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;\n#ifdef GLOBE\nif(u_pitch_with_map && !u_is_along_line) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,total_opacity,is_sdf);}"),terrain:kt("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;uniform bool u_is_globe_mode;in vec2 v_texture_pos;in float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture(u_texture,vec2(v_texture_pos.x,1.0-v_texture_pos.y));if (!u_is_globe_mode && u_fog_ground_blend_opacity > 0.0 && v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);fragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {fragColor=surface_color;}}","in vec3 a_pos3d;uniform mat4 u_fog_matrix;uniform float u_ele_delta;out vec2 v_texture_pos;out float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:kt("in float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {fragColor=pack(v_depth);}","in vec3 a_pos3d;uniform float u_ele_delta;out float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:kt("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;in vec2 v_texture_pos;void main() {vec4 rgba=texture(u_texture,v_texture_pos);fragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","in vec3 a_pos3d;uniform float u_ele_delta;out vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);}"),projectionErrorMeasurement:kt("in vec4 v_output_error_encoded;void main() {fragColor=v_output_error_encoded;}","in vec2 a_pos;uniform highp float u_input;uniform highp float u_output_expected;out vec4 v_output_error_encoded;void main() {float real_output=2.0*atan(exp(PI-(u_input*PI*2.0)))-PI*0.5;float error=real_output-u_output_expected;float abs_error=abs(error)*128.0;v_output_error_encoded.x=min(floor(abs_error*256.0),255.0)/255.0;abs_error-=v_output_error_encoded.x;v_output_error_encoded.y=min(floor(abs_error*65536.0),255.0)/255.0;abs_error-=v_output_error_encoded.x/255.0;v_output_error_encoded.z=min(floor(abs_error*16777216.0),255.0)/255.0;v_output_error_encoded.w=error >=0.0 ? 1.0 : 0.0;gl_Position=vec4(a_pos,0.0,1.0);}"),atmosphere:kt("#ifdef GL_ES\nprecision highp float;\n#endif\nin vec3 view_direction;uniform vec3 u_sun_pos;uniform vec3 u_globe_position;uniform float u_globe_radius;uniform float u_atmosphere_blend;/**Shader use from https:*Made some change to adapt to MapLibre Globe geometry*/const float PI=3.141592653589793;const int iSteps=5;const int jSteps=3;/*radius of the planet*/const float EARTH_RADIUS=6371e3;/*radius of the atmosphere*/const float ATMOS_RADIUS=6471e3;vec2 rsi(vec3 r0,vec3 rd,float sr) {float a=dot(rd,rd);float b=2.0*dot(rd,r0);float c=dot(r0,r0)-(sr*sr);float d=(b*b)-4.0*a*c;if (d < 0.0) return vec2(1e5,-1e5);return vec2((-b-sqrt(d))/(2.0*a),(-b+sqrt(d))/(2.0*a));}vec4 atmosphere(vec3 r,vec3 r0,vec3 pSun,float iSun,float rPlanet,float rAtmos,vec3 kRlh,float kMie,float shRlh,float shMie,float g) {pSun=normalize(pSun);r=normalize(r);vec2 p=rsi(r0,r,rAtmos);if (p.x > p.y) {return vec4(0.0,0.0,0.0,1.0);}if (p.x < 0.0) {p.x=0.0;}vec3 pos=r0+r*p.x;vec2 p2=rsi(r0,r,rPlanet);if (p2.x <=p2.y && p2.x > 0.0) {p.y=min(p.y,p2.x);}float iStepSize=(p.y-p.x)/float(iSteps);float iTime=p.x+iStepSize*0.5;vec3 totalRlh=vec3(0,0,0);vec3 totalMie=vec3(0,0,0);float iOdRlh=0.0;float iOdMie=0.0;float mu=dot(r,pSun);float mumu=mu*mu;float gg=g*g;float pRlh=3.0/(16.0*PI)*(1.0+mumu);float pMie=3.0/(8.0*PI)*((1.0-gg)*(mumu+1.0))/(pow(1.0+gg-2.0*mu*g,1.5)*(2.0+gg));for (int i=0; i < iSteps; i++) {vec3 iPos=r0+r*iTime;float iHeight=length(iPos)-rPlanet;float odStepRlh=exp(-iHeight/shRlh)*iStepSize;float odStepMie=exp(-iHeight/shMie)*iStepSize;iOdRlh+=odStepRlh;iOdMie+=odStepMie;float jStepSize=rsi(iPos,pSun,rAtmos).y/float(jSteps);float jTime=jStepSize*0.5;float jOdRlh=0.0;float jOdMie=0.0;for (int j=0; j < jSteps; j++) {vec3 jPos=iPos+pSun*jTime;float jHeight=length(jPos)-rPlanet;jOdRlh+=exp(-jHeight/shRlh)*jStepSize;jOdMie+=exp(-jHeight/shMie)*jStepSize;jTime+=jStepSize;}vec3 attn=exp(-(kMie*(iOdMie+jOdMie)+kRlh*(iOdRlh+jOdRlh)));totalRlh+=odStepRlh*attn;totalMie+=odStepMie*attn;iTime+=iStepSize;}float opacity=exp(-(length(kRlh)*length(totalRlh)+kMie*length(totalMie)));vec3 color=iSun*(pRlh*kRlh*totalRlh+pMie*kMie*totalMie);return vec4(color,opacity);}void main() {vec3 scale_camera_pos=-u_globe_position*EARTH_RADIUS/u_globe_radius;vec4 color=atmosphere(normalize(view_direction),scale_camera_pos,u_sun_pos,22.0,EARTH_RADIUS,ATMOS_RADIUS,vec3(5.5e-6,13.0e-6,22.4e-6),21e-6,8e3,1.2e3,0.758\n);color.rgb=1.0-exp(-1.0*color.rgb);color=pow(color,vec4(1.0/2.2));fragColor=vec4(color.rgb,1.0-color.a)*u_atmosphere_blend;}","in vec2 a_pos;uniform mat4 u_inv_proj_matrix;out vec3 view_direction;void main() {view_direction=(u_inv_proj_matrix*vec4(a_pos,0.0,1.0)).xyz;gl_Position=vec4(a_pos,0.0,1.0);}"),sky:kt("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform vec2 u_horizon;uniform vec2 u_horizon_normal;uniform float u_sky_horizon_blend;uniform float u_sky_blend;void main() {float x=gl_FragCoord.x;float y=gl_FragCoord.y;float blend=(y-u_horizon.y)*u_horizon_normal.y+(x-u_horizon.x)*u_horizon_normal.x;if (blend > 0.0) {if (blend < u_sky_horizon_blend) {fragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {fragColor=u_sky_color;}}fragColor=mix(fragColor,vec4(vec3(0.0),0.0),u_sky_blend);}","in vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function kt(e,t){const i=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,o=t.match(/in ([\w]+) ([\w]+)/g),a=e.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),r=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),s=r?r.concat(a):a,n={};return {fragmentSource:e=e.replace(i,((e,t,i,o,a)=>(n[a]=!0,"define"===t?`\n#ifndef HAS_UNIFORM_u_${a}\nin ${i} ${o} ${a};\n#else\nuniform ${i} ${o} u_${a};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${a}\n ${i} ${o} ${a} = u_${a};\n#endif\n`))),vertexSource:t=t.replace(i,((e,t,i,o,a)=>{const r="float"===o?"vec2":"vec4",s=a.match(/color/)?"color":r;return n[a]?"define"===t?`\n#ifndef HAS_UNIFORM_u_${a}\nuniform lowp float u_${a}_t;\nin ${i} ${r} a_${a};\nout ${i} ${o} ${a};\n#else\nuniform ${i} ${o} u_${a};\n#endif\n`:"vec4"===s?`\n#ifndef HAS_UNIFORM_u_${a}\n ${a} = a_${a};\n#else\n ${i} ${o} ${a} = u_${a};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${a}\n ${a} = unpack_mix_${s}(a_${a}, u_${a}_t);\n#else\n ${i} ${o} ${a} = u_${a};\n#endif\n`:"define"===t?`\n#ifndef HAS_UNIFORM_u_${a}\nuniform lowp float u_${a}_t;\nin ${i} ${r} a_${a};\n#else\nuniform ${i} ${o} u_${a};\n#endif\n`:"vec4"===s?`\n#ifndef HAS_UNIFORM_u_${a}\n ${i} ${o} ${a} = a_${a};\n#else\n ${i} ${o} ${a} = u_${a};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${a}\n ${i} ${o} ${a} = unpack_mix_${s}(a_${a}, u_${a}_t);\n#else\n ${i} ${o} ${a} = u_${a};\n#endif\n`})),staticAttributes:o,staticUniforms:s}}class Bt{constructor(e,t,i){this.vertexBuffer=e,this.indexBuffer=t,this.segments=i;}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null;}}var Ot=t.aS([{name:"a_pos",type:"Int16",components:2}]);const jt="#define PROJECTION_MERCATOR",Nt="mercator";class Zt{constructor(){this._cachedMesh=null;}get name(){return "mercator"}get useSubdivision(){return !1}get shaderVariantName(){return Nt}get shaderDefine(){return jt}get shaderPreludeCode(){return Ft.projectionMercator}get vertexShaderPreludeCode(){return Ft.projectionMercator.vertexSource}get subdivisionGranularity(){return t.aT.noSubdivision}get useGlobeControls(){return !1}get transitionState(){return 0}get latitudeErrorCorrectionRadians(){return 0}destroy(){}updateGPUdependent(e){}getMeshFromTileID(e,i,o,a,r){if(this._cachedMesh)return this._cachedMesh;const s=new t.aU;s.emplaceBack(0,0),s.emplaceBack(t.a6,0),s.emplaceBack(0,t.a6),s.emplaceBack(t.a6,t.a6);const n=e.createVertexBuffer(s,Ot.members),l=t.aV.simpleSegment(0,0,4,2),c=new t.aW;c.emplaceBack(1,0,2),c.emplaceBack(1,2,3);const h=e.createIndexBuffer(c);return this._cachedMesh=new Bt(n,h,l),this._cachedMesh}recalculate(){}hasTransition(){return !1}setErrorQueryLatitudeDegrees(e){}}class Ut{constructor(e=0,t=0,i=0,o=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)||i<0||isNaN(o)||o<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=e,this.bottom=t,this.left=i,this.right=o;}interpolate(e,i,o){return null!=i.top&&null!=e.top&&(this.top=t.H.number(e.top,i.top,o)),null!=i.bottom&&null!=e.bottom&&(this.bottom=t.H.number(e.bottom,i.bottom,o)),null!=i.left&&null!=e.left&&(this.left=t.H.number(e.left,i.left,o)),null!=i.right&&null!=e.right&&(this.right=t.H.number(e.right,i.right,o)),this}getCenter(e,i){const o=t.al((this.left+e-this.right)/2,0,e),a=t.al((this.top+i-this.bottom)/2,0,i);return new t.P(o,a)}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new Ut(this.top,this.bottom,this.left,this.right)}toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function Gt(e,t){if(!e.renderWorldCopies||e.lngRange)return;const i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0;}function Vt(e){return Math.max(0,Math.floor(e))}class Wt{constructor(e,i){var o;this.applyConstrain=(e,t)=>null!==this._constrainOverride?this._constrainOverride(e,t):this._callbacks.defaultConstrain(e,t),this._callbacks=e,this._tileSize=512,this._renderWorldCopies=void 0===(null==i?void 0:i.renderWorldCopies)||!!(null==i?void 0:i.renderWorldCopies),this._minZoom=(null==i?void 0:i.minZoom)||0,this._maxZoom=(null==i?void 0:i.maxZoom)||22,this._minPitch=null==(null==i?void 0:i.minPitch)?0:null==i?void 0:i.minPitch,this._maxPitch=null==(null==i?void 0:i.maxPitch)?60:null==i?void 0:i.maxPitch,this._constrainOverride=null!==(o=null==i?void 0:i.constrainOverride)&&void 0!==o?o:null,this.setMaxBounds(),this._width=0,this._height=0,this._center=new t.W(0,0),this._elevation=0,this._zoom=0,this._tileZoom=Vt(this._zoom),this._scale=t.ao(this._zoom),this._bearingInRadians=0,this._fovInRadians=.6435011087932844,this._pitchInRadians=0,this._rollInRadians=0,this._unmodified=!0,this._edgeInsets=new Ut,this._minElevationForCurrentTile=0,this._autoCalculateNearFarZ=!0;}apply(e,i,o){this._constrainOverride=e.constrainOverride,this._latRange=e.latRange,this._lngRange=e.lngRange,this._width=e.width,this._height=e.height,this._center=e.center,this._elevation=e.elevation,this._minElevationForCurrentTile=e.minElevationForCurrentTile,this._zoom=e.zoom,this._tileZoom=Vt(this._zoom),this._scale=t.ao(this._zoom),this._bearingInRadians=e.bearingInRadians,this._fovInRadians=e.fovInRadians,this._pitchInRadians=e.pitchInRadians,this._rollInRadians=e.rollInRadians,this._unmodified=e.unmodified,this._edgeInsets=new Ut(e.padding.top,e.padding.bottom,e.padding.left,e.padding.right),this._minZoom=e.minZoom,this._maxZoom=e.maxZoom,this._minPitch=e.minPitch,this._maxPitch=e.maxPitch,this._renderWorldCopies=e.renderWorldCopies,this._cameraToCenterDistance=e.cameraToCenterDistance,this._nearZ=e.nearZ,this._farZ=e.farZ,this._autoCalculateNearFarZ=!o&&e.autoCalculateNearFarZ,i&&this.constrainInternal(),this._calcMatrices();}get pixelsToClipSpaceMatrix(){return this._pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._clipSpaceToPixelsMatrix}get minElevationForCurrentTile(){return this._minElevationForCurrentTile}setMinElevationForCurrentTile(e){this._minElevationForCurrentTile=e;}get tileSize(){return this._tileSize}get tileZoom(){return this._tileZoom}get scale(){return this._scale}get width(){return this._width}get height(){return this._height}get bearingInRadians(){return this._bearingInRadians}get lngRange(){return this._lngRange}get latRange(){return this._latRange}get pixelsToGLUnits(){return this._pixelsToGLUnits}get minZoom(){return this._minZoom}setMinZoom(e){this._minZoom!==e&&(this._minZoom=e,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom));}get maxZoom(){return this._maxZoom}setMaxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom));}get minPitch(){return this._minPitch}setMinPitch(e){this._minPitch!==e&&(this._minPitch=e,this.setPitch(Math.max(this.pitch,e)));}get maxPitch(){return this._maxPitch}setMaxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.setPitch(Math.min(this.pitch,e)));}get renderWorldCopies(){return this._renderWorldCopies}setRenderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderWorldCopies=e;}get constrainOverride(){return this._constrainOverride}setConstrainOverride(e){void 0===e&&(e=null),this._constrainOverride!==e&&(this._constrainOverride=e,this.constrainInternal(),this._calcMatrices());}get worldSize(){return this._tileSize*this._scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new t.P(this._width,this._height)}get bearing(){return this._bearingInRadians/Math.PI*180}setBearing(e){const i=t.X(e,-180,180)*Math.PI/180;var a,r,s,n,l,c,h,u,d;this._bearingInRadians!==i&&(this._unmodified=!1,this._bearingInRadians=i,this._calcMatrices(),this._rotationMatrix=o(),a=this._rotationMatrix,s=-this._bearingInRadians,n=(r=this._rotationMatrix)[0],l=r[1],c=r[2],h=r[3],u=Math.sin(s),d=Math.cos(s),a[0]=n*d+c*u,a[1]=l*d+h*u,a[2]=n*-u+c*d,a[3]=l*-u+h*d);}get rotationMatrix(){return this._rotationMatrix}get pitchInRadians(){return this._pitchInRadians}get pitch(){return this._pitchInRadians/Math.PI*180}setPitch(e){const i=t.al(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitchInRadians!==i&&(this._unmodified=!1,this._pitchInRadians=i,this._calcMatrices());}get rollInRadians(){return this._rollInRadians}get roll(){return this._rollInRadians/Math.PI*180}setRoll(e){const t=e/180*Math.PI;this._rollInRadians!==t&&(this._unmodified=!1,this._rollInRadians=t,this._calcMatrices());}get fovInRadians(){return this._fovInRadians}get fov(){return t.aX(this._fovInRadians)}setFov(e){e=t.al(e,.1,150),this.fov!==e&&(this._unmodified=!1,this._fovInRadians=t.an(e),this._calcMatrices());}get zoom(){return this._zoom}setZoom(e){const i=this.applyConstrain(this._center,e).zoom;this._zoom!==i&&(this._unmodified=!1,this._zoom=i,this._tileZoom=Math.max(0,Math.floor(i)),this._scale=t.ao(i),this.constrainInternal(),this._calcMatrices());}get center(){return this._center}setCenter(e){e.lat===this._center.lat&&e.lng===this._center.lng||(this._unmodified=!1,this._center=e,this.constrainInternal(),this._calcMatrices());}get elevation(){return this._elevation}setElevation(e){e!==this._elevation&&(this._elevation=e,this.constrainInternal(),this._calcMatrices());}get padding(){return this._edgeInsets.toJSON()}setPadding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,e,1),this._calcMatrices());}get centerPoint(){return this._edgeInsets.getCenter(this._width,this._height)}get pixelsPerMeter(){return this._pixelPerMeter}get unmodified(){return this._unmodified}get cameraToCenterDistance(){return this._cameraToCenterDistance}get nearZ(){return this._nearZ}get farZ(){return this._farZ}get autoCalculateNearFarZ(){return this._autoCalculateNearFarZ}overrideNearFarZ(e,t){this._autoCalculateNearFarZ=!1,this._nearZ=e,this._farZ=t,this._calcMatrices();}clearNearFarZOverride(){this._autoCalculateNearFarZ=!0,this._calcMatrices();}isPaddingEqual(e){return this._edgeInsets.equals(e)}interpolatePadding(e,t,i){this._unmodified=!1,this._edgeInsets.interpolate(e,t,i),this.constrainInternal(),this._calcMatrices();}resize(e,t,i=!0){this._width=e,this._height=t,i&&this.constrainInternal(),this._calcMatrices();}getMaxBounds(){var e,t;return 2!==(null===(e=this._latRange)||void 0===e?void 0:e.length)||2!==(null===(t=this._lngRange)||void 0===t?void 0:t.length)?null:new G([this._lngRange[0],this._latRange[0]],[this._lngRange[1],this._latRange[1]])}setMaxBounds(e){e?(this._lngRange=[e.getWest(),e.getEast()],this._latRange=[e.getSouth(),e.getNorth()],this.constrainInternal()):(this._lngRange=null,this._latRange=[-t.am,t.am]);}getCameraQueryGeometry(e,i){if(1===i.length)return [i[0],e];{const{minX:o,minY:a,maxX:r,maxY:s}=t.a8.fromPoints(i).extend(e);return [new t.P(o,a),new t.P(r,a),new t.P(r,s),new t.P(o,s),new t.P(o,a)]}}constrainInternal(){if(!this.center||!this._width||!this._height||this._constraining)return;this._constraining=!0;const e=this._unmodified,{center:t,zoom:i}=this.applyConstrain(this.center,this.zoom);this.setCenter(t),this.setZoom(i),this._unmodified=e,this._constraining=!1;}_calcMatrices(){if(this._width&&this._height){this._pixelsToGLUnits=[2/this._width,-2/this._height];let e=t.ap(new Float64Array(16));t.S(e,e,[this._width/2,-this._height/2,1]),t.Q(e,e,[1,-1,0]),this._clipSpaceToPixelsMatrix=e,e=t.ap(new Float64Array(16)),t.S(e,e,[1,-1,1]),t.Q(e,e,[-1,-1,0]),t.S(e,e,[2/this._width,2/this._height,1]),this._pixelsToClipSpaceMatrix=e,this._cameraToCenterDistance=.5/Math.tan(this.fovInRadians/2)*this._height;}this._callbacks.calcMatrices();}calculateCenterFromCameraLngLatAlt(e,i,o,a){const r=void 0!==o?o:this.bearing,s=a=void 0!==a?a:this.pitch,{distanceToCenter:n,clampedElevation:l}=this._distanceToCenterFromAltElevationPitch(i,this.elevation,s),{x:c,y:h}=be(s,r),u=t.a7.fromLngLat(e,i);let d,_,p=t.aY(1,u.y),m=0;do{if(m+=1,m>10)break;_=n/p,d=new t.a7(u.x+c*_,u.y+h*_),p=1/d.meterInMercatorCoordinateUnits();}while(Math.abs(n-_*p)>1e-12);return {center:d.toLngLat(),elevation:l,zoom:t.ar(this.height/2/Math.tan(this.fovInRadians/2)/_/this.tileSize)}}recalculateZoomAndCenter(e){if(this.elevation-e==0)return;const i=1/this.worldSize,o=t.aq(1,this.center.lat)*this.worldSize,a=t.a7.fromLngLat(this.center,this.elevation),r=a.x/i,s=a.y/i,n=a.z/i,l=this.pitch,c=this.bearing,{x:h,y:u,z:d}=be(l,c),_=this.cameraToCenterDistance,p=r+_*-h,m=s+_*-u,f=n+_*d,{distanceToCenter:g,clampedElevation:v}=this._distanceToCenterFromAltElevationPitch(f/o,e,l),x=g*o,b=new t.a7((p+h*x)*i,(m+u*x)*i,0).toLngLat(),y=t.aq(1,b.lat),w=t.ar(this.height/2/Math.tan(this.fovInRadians/2)/g/y/this.tileSize);this._elevation=v,this._center=b,this.setZoom(w);}_distanceToCenterFromAltElevationPitch(e,i,o){const a=-Math.cos(t.an(o)),r=e-i;let s,n=i;return a*r>=0||Math.abs(a)<.1?(s=1e4,n=e+s*a):s=-r/a,{distanceToCenter:s,clampedElevation:n}}getCameraPoint(){const e=Math.tan(this.pitchInRadians)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.P(e*Math.sin(this.rollInRadians),e*Math.cos(this.rollInRadians)))}getCameraAltitude(){return Math.cos(this.pitchInRadians)*this._cameraToCenterDistance/this._pixelPerMeter+this.elevation}getCameraLngLat(){const e=t.aq(1,this.center.lat)*this.worldSize;return xe(this.center,this.elevation,this.pitch,this.bearing,this.cameraToCenterDistance/e).toLngLat()}getMercatorTileCoordinates(e){if(!e)return [0,0,1,1];const i=e.canonical.z>=0?1<this.max[0]||e.aabb.min[1]>this.max[1]||e.aabb.min[2]>this.max[2]||e.aabb.max[0]0?(t+=e[o]*this.min[o],i+=e[o]*this.max[o]):(i+=e[o]*this.min[o],t+=e[o]*this.max[o]);return t>=0?2:i<0?0:1}}class $t{distanceToTile2d(e,t,i,o){const a=o,r=a.distanceX([e,t]),s=a.distanceY([e,t]);return Math.hypot(r,s)}getWrap(e,t,i){return i}getTileBoundingVolume(e,i,o,a){var r,s;let n=0,l=0;if(null==a?void 0:a.terrain){const c=new t.a3(e.z,i,e.z,e.x,e.y),h=a.terrain.getMinMaxElevation(c);n=null!==(r=h.minElevation)&&void 0!==r?r:Math.min(0,o),l=null!==(s=h.maxElevation)&&void 0!==s?s:Math.max(0,o);}const c=1<a}allowWorldCopies(){return !0}prepareNextFrame(){}}class Ht{constructor(e,t,i){this.points=e,this.planes=t,this.aabb=i;}static fromInvProjectionMatrix(e,i=1,o=0,a,r){const s=r?[[6,5,4],[0,1,2],[0,3,7],[2,1,5],[3,2,6],[0,4,5]]:[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],n=Math.pow(2,o),l=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((o=>function(e,i,o,a){const r=t.aE([],e,i),s=1/r[3]/o*a;return t.b4(r,r,[s,s,1/r[3],s])}(o,e,i,n)));a&&function(e,i,o,a){const r=a?4:0,s=a?0:4;let n=0;const l=[],c=[];for(let i=0;i<4;i++){const o=t.b0([],e[i+s],e[i+r]),a=t.b5(o);t.aZ(o,o,1/a),l.push(a),c.push(o);}for(let i=0;i<4;i++){const a=t.b6(e[i+r],c[i],o);n=null!==a&&a>=0?Math.max(n,a):Math.max(n,l[i]);}const h=function(e,i){const o=t.b0([],e[i[0]],e[i[1]]),a=t.b0([],e[i[2]],e[i[1]]),r=[0,0,0,0];return t.b1(r,t.b2([],o,a)),r[3]=-t.b3(r,e[i[0]]),r}(e,i),u=function(e,i){const o=t.b7(e),a=t.b8([],e,1/o),r=t.b0([],i,t.aZ([],a,t.b3(i,a))),s=t.b7(r);if(s>0){const e=Math.sqrt(1-a[3]*a[3]),o=t.aZ([],a,-a[3]),n=t.a_([],o,t.aZ([],r,e/s));return t.b9(i,n)}return null}(o,h);if(null!==u){const e=u/t.b3(c[0],h);n=Math.min(n,e);}for(let t=0;t<4;t++){const i=Math.min(n,l[t]);e[t+s]=[e[t+r][0]+c[t][0]*i,e[t+r][1]+c[t][1]*i,e[t+r][2]+c[t][2]*i,1];}}(l,s[0],a,r);const c=s.map((e=>{const i=t.b0([],l[e[0]],l[e[1]]),o=t.b0([],l[e[2]],l[e[1]]),a=t.b1([],t.b2([],i,o)),r=-t.b3(a,l[e[1]]);return a.concat(r)})),h=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],u=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(const e of l)for(let t=0;t<3;t++)h[t]=Math.min(h[t],e[t]),u[t]=Math.max(u[t],e[t]);return new Ht(l,c,new qt(h,u))}}class Xt{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e);}setMaxZoom(e){this._helper.setMaxZoom(e);}setMinPitch(e){this._helper.setMinPitch(e);}setMaxPitch(e){this._helper.setMaxPitch(e);}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e);}setBearing(e){this._helper.setBearing(e);}setPitch(e){this._helper.setPitch(e);}setRoll(e){this._helper.setRoll(e);}setFov(e){this._helper.setFov(e);}setZoom(e){this._helper.setZoom(e);}setCenter(e){this._helper.setCenter(e);}setElevation(e){this._helper.setElevation(e);}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e);}setPadding(e){this._helper.setPadding(e);}interpolatePadding(e,t,i){this._helper.interpolatePadding(e,t,i);}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,i=!0){this._helper.resize(e,t,i);}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e);}setConstrainOverride(e){this._helper.setConstrainOverride(e);}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t);}clearNearFarZOverride(){this._helper.clearNearFarZOverride();}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(e,t){}constructor(e){this._posMatrixCache=new Map,this._alignedPosMatrixCache=new Map,this._fogMatrixCacheF32=new Map,this.defaultConstrain=(e,i)=>{i=t.al(+i,this.minZoom,this.maxZoom);const o={center:new t.W(e.lng,e.lat),zoom:i};let a=this._helper._lngRange;if(!this._helper._renderWorldCopies&&null===a){const e=180-1e-10;a=[-e,e];}const r=this.tileSize*t.ao(o.zoom);let s=0,n=r,l=0,c=r,h=0,u=0;const{x:d,y:_}=this.size;if(this._helper._latRange){const e=this._helper._latRange;s=t.Y(e[1])*r,n=t.Y(e[0])*r,n-s<_&&(h=_/(n-s));}a&&(l=t.X(t.Z(a[0])*r,0,r),c=t.X(t.Z(a[1])*r,0,r),cn&&(g=n-e);}if(a){const e=(l+c)/2;let i=p;this._helper._renderWorldCopies&&(i=t.X(p,e-r/2,e+r/2));const o=d/2;i-oc&&(f=c-o);}if(void 0!==f||void 0!==g){const e=new t.P(null!=f?f:p,null!=g?g:m);o.center=fe(r,e).wrap();}return o},this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new Wt({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new $t;}clone(){const e=new Xt;return e.apply(this,!1),e}apply(e,t,i){this._helper.apply(e,t,i);}get cameraPosition(){return this._cameraPosition}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._viewProjMatrix}get inverseProjectionMatrix(){return this._invProjMatrix}get mercatorMatrix(){return this._mercatorMatrix}getVisibleUnwrappedCoordinates(e){const i=[new t.ba(0,e)];if(this._helper._renderWorldCopies){const o=this.screenPointToMercatorCoordinate(new t.P(0,0)),a=this.screenPointToMercatorCoordinate(new t.P(this._helper._width,0)),r=this.screenPointToMercatorCoordinate(new t.P(this._helper._width,this._helper._height)),s=this.screenPointToMercatorCoordinate(new t.P(0,this._helper._height)),n=Math.floor(Math.min(o.x,a.x,r.x,s.x)),l=Math.floor(Math.max(o.x,a.x,r.x,s.x)),c=1;for(let o=n-c;o<=l+c;o++)0!==o&&i.push(new t.ba(o,e));}return i}getCameraFrustum(){return Ht.fromInvProjectionMatrix(this._invViewProjMatrix,this.worldSize)}getClippingPlane(){return null}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(e){const t=this.screenPointToLocation(this.centerPoint,e),i=e?e.getElevationForLngLatZoom(t,this._helper._tileZoom):0;this._helper.recalculateZoomAndCenter(i);}setLocationAtPoint(e,i){const o=t.aq(this.elevation,this.center.lat),a=this.screenPointToMercatorCoordinateAtZ(i,o),r=this.screenPointToMercatorCoordinateAtZ(this.centerPoint,o),s=t.a7.fromLngLat(e),n=new t.a7(s.x-(a.x-r.x),s.y-(a.y-r.y));this.setCenter(null==n?void 0:n.toLngLat()),this._helper._renderWorldCopies&&this.setCenter(this.center.wrap());}locationToScreenPoint(e,i){return i?this.coordinatePoint(t.a7.fromLngLat(e),i.getElevationForLngLat(e,this),this._pixelMatrix3D):this.coordinatePoint(t.a7.fromLngLat(e))}screenPointToLocation(e,t){var i;return null===(i=this.screenPointToMercatorCoordinate(e,t))||void 0===i?void 0:i.toLngLat()}screenPointToMercatorCoordinate(e,t){if(t){const i=t.pointCoordinate(e);if(null!=i)return i}return this.screenPointToMercatorCoordinateAtZ(e)}screenPointToMercatorCoordinateAtZ(e,i){const o=i||0,a=[e.x,e.y,0,1],r=[e.x,e.y,1,1];t.aE(a,a,this._pixelMatrixInverse),t.aE(r,r,this._pixelMatrixInverse);const s=a[3],n=r[3],l=a[1]/s,c=r[1]/n,h=a[2]/s,u=r[2]/n,d=h===u?0:(o-h)/(u-h);return new t.a7(t.H.number(a[0]/s,r[0]/n,d)/this.worldSize,t.H.number(l,c,d)/this.worldSize,o)}coordinatePoint(e,i=0,o=this._pixelMatrix){const a=[e.x*this.worldSize,e.y*this.worldSize,i,1];return t.aE(a,a,o),new t.P(a[0]/a[3],a[1]/a[3])}getBounds(){const e=Math.max(0,this._helper._height/2-ge(this));return (new G).extend(this.screenPointToLocation(new t.P(0,e))).extend(this.screenPointToLocation(new t.P(this._helper._width,e))).extend(this.screenPointToLocation(new t.P(this._helper._width,this._helper._height))).extend(this.screenPointToLocation(new t.P(0,this._helper._height)))}isPointOnMapSurface(e,t){return t?null!=t.pointCoordinate(e):e.y>this.height/2-ge(this)}calculatePosMatrix(e,i=!1,o){var a;const r=null!==(a=e.key)&&void 0!==a?a:t.bb(e.wrap,e.canonical.z,e.canonical.z,e.canonical.x,e.canonical.y),s=i?this._alignedPosMatrixCache:this._posMatrixCache;if(s.has(r)){const e=s.get(r);return o?e.f32:e.f64}const n=ve(e,this.worldSize);t.U(n,i?this._alignedProjMatrix:this._viewProjMatrix,n);const l={f64:n,f32:new Float32Array(n)};return s.set(r,l),o?l.f32:l.f64}calculateFogMatrix(e){const i=e.key,o=this._fogMatrixCacheF32;if(o.has(i))return o.get(i);const a=ve(e,this.worldSize);return t.U(a,this._fogMatrix,a),o.set(i,new Float32Array(a)),o.get(i)}calculateCenterFromCameraLngLatAlt(e,t,i,o){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,o)}_calculateNearFarZIfNeeded(e,i,o){if(!this._helper.autoCalculateNearFarZ)return;const a=Math.min(this.elevation,this.minElevationForCurrentTile,this.getCameraAltitude()-100),r=e-a*this._helper._pixelPerMeter/Math.cos(i),s=a<0?r:e,n=Math.PI/2+this.pitchInRadians,l=t.an(this.fov)*(Math.abs(Math.cos(t.an(this.roll)))*this.height+Math.abs(Math.sin(t.an(this.roll)))*this.width)/this.height*(.5+o.y/this.height),c=Math.sin(l)*s/Math.sin(t.al(Math.PI-n-l,.01,Math.PI-.01)),h=ge(this),u=Math.atan(h/this._helper.cameraToCenterDistance),d=t.an(.75),_=u>d?2*u*(.5+o.y/(2*h)):d,p=Math.sin(_)*s/Math.sin(t.al(Math.PI-n-_,.01,Math.PI-.01)),m=Math.min(c,p);this._helper._farZ=1.01*(Math.cos(Math.PI/2-i)*m+s),this._helper._nearZ=this._helper._height/50;}_calcMatrices(){if(!this._helper._height)return;const e=this.centerOffset,i=me(this.worldSize,this.center),o=i.x,a=i.y;this._helper._pixelPerMeter=t.aq(1,this.center.lat)*this.worldSize;const r=t.an(Math.min(this.pitch,pe)),s=Math.max(this._helper.cameraToCenterDistance/2,this._helper.cameraToCenterDistance+this._helper._elevation*this._helper._pixelPerMeter/Math.cos(r));let n;var l,c;this._calculateNearFarZIfNeeded(s,r,e),n=new Float64Array(16),t.bc(n,this.fovInRadians,this._helper._width/this._helper._height,this._helper._nearZ,this._helper._farZ),this._invProjMatrix=new Float64Array(16),(l=this._invProjMatrix)[0]=1/(c=n)[0],l[1]=0,l[2]=0,l[3]=0,l[4]=0,l[5]=1/c[5],l[6]=0,l[7]=0,l[8]=0,l[9]=0,l[10]=0,l[11]=1/c[14],l[12]=0,l[13]=0,l[14]=-1,l[15]=c[10]/c[14],n[8]=2*-e.x/this._helper._width,n[9]=2*e.y/this._helper._height,this._projectionMatrix=t.bd(n),t.S(n,n,[1,-1,1]),t.Q(n,n,[0,0,-this._helper.cameraToCenterDistance]),t.be(n,n,-this.rollInRadians),t.bf(n,n,this.pitchInRadians),t.be(n,n,-this.bearingInRadians),t.Q(n,n,[-o,-a,0]),this._mercatorMatrix=t.S([],n,[this.worldSize,this.worldSize,this.worldSize]),t.S(n,n,[1,1,this._helper._pixelPerMeter]),this._pixelMatrix=t.U(new Float64Array(16),this.clipSpaceToPixelsMatrix,n),t.Q(n,n,[0,0,-this.elevation]),this._viewProjMatrix=n,this._invViewProjMatrix=t.bg([],n);const h=[0,0,-1,1];t.aE(h,h,this._invViewProjMatrix),this._cameraPosition=[h[0]/h[3],h[1]/h[3],h[2]/h[3]],this._fogMatrix=new Float64Array(16),t.bc(this._fogMatrix,this.fovInRadians,this.width/this.height,s,this._helper._farZ),this._fogMatrix[8]=2*-e.x/this.width,this._fogMatrix[9]=2*e.y/this.height,t.S(this._fogMatrix,this._fogMatrix,[1,-1,1]),t.Q(this._fogMatrix,this._fogMatrix,[0,0,-this.cameraToCenterDistance]),t.be(this._fogMatrix,this._fogMatrix,-this.rollInRadians),t.bf(this._fogMatrix,this._fogMatrix,this.pitchInRadians),t.be(this._fogMatrix,this._fogMatrix,-this.bearingInRadians),t.Q(this._fogMatrix,this._fogMatrix,[-o,-a,0]),t.S(this._fogMatrix,this._fogMatrix,[1,1,this._helper._pixelPerMeter]),t.Q(this._fogMatrix,this._fogMatrix,[0,0,-this.elevation]),this._pixelMatrix3D=t.U(new Float64Array(16),this.clipSpaceToPixelsMatrix,n);const u=this._helper._width%2/2,d=this._helper._height%2/2,_=Math.cos(this.bearingInRadians),p=Math.sin(-this.bearingInRadians),m=o-Math.round(o)+_*u+p*d,f=a-Math.round(a)+_*d+p*u,g=new Float64Array(n);if(t.Q(g,g,[m>.5?m-1:m,f>.5?f-1:f,0]),this._alignedProjMatrix=g,n=t.bg(new Float64Array(16),this._pixelMatrix),!n)throw new Error("failed to invert matrix");this._pixelMatrixInverse=n,this._clearMatrixCaches();}_clearMatrixCaches(){this._posMatrixCache.clear(),this._alignedPosMatrixCache.clear(),this._fogMatrixCacheF32.clear();}maxPitchScaleFactor(){if(!this._pixelMatrixInverse)return 1;const e=this.screenPointToMercatorCoordinate(new t.P(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.aE(i,i,this._pixelMatrix)[3]/this._helper.cameraToCenterDistance}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){const e=t.aq(1,this.center.lat)*this.worldSize;return xe(this.center,this.elevation,this.pitch,this.bearing,this._helper.cameraToCenterDistance/e).toLngLat()}lngLatToCameraDepth(e,i){const o=t.a7.fromLngLat(e),a=[o.x*this.worldSize,o.y*this.worldSize,i,1];return t.aE(a,a,this._viewProjMatrix),a[2]/a[3]}getProjectionData(e){const{overscaledTileID:i,aligned:o,applyTerrainMatrix:a}=e,r=this._helper.getMercatorTileCoordinates(i),s=i?this.calculatePosMatrix(i,o,!0):null;let n;return n=(null==i?void 0:i.terrainRttPosMatrix32f)&&a?i.terrainRttPosMatrix32f:s||t.bh(),{mainMatrix:n,tileMercatorCoords:r,clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:n}}isLocationOccluded(e){return !1}getPixelScale(){return 1}getCircleRadiusCorrection(){return 1}getPitchedTextCorrection(e,t,i){return 1}transformLightDirection(e){return t.a$(e)}getRayDirectionFromPixel(e){throw new Error("Not implemented.")}projectTileCoordinates(e,i,o,a){const r=this.calculatePosMatrix(o);let s;a?(s=[e,i,a(e,i),1],t.aE(s,s,r)):(s=[e,i,0,1],nt(s,s,r));const n=s[3];return {point:new t.P(s[0]/n,s[1]/n),signedDistanceFromCamera:n,isOccluded:!1}}populateCache(e){for(const t of e)this.calculatePosMatrix(t);}getMatrixForModel(e,i){const o=t.a7.fromLngLat(e,i),a=o.meterInMercatorCoordinateUnits(),r=t.bi();return t.Q(r,r,[o.x,o.y,o.z]),t.be(r,r,Math.PI),t.bf(r,r,Math.PI/2),t.S(r,r,[-a,a,a]),r}getProjectionDataForCustomLayer(e=!0){const i=new t.a3(0,0,0,0,0),o=this.getProjectionData({overscaledTileID:i,applyGlobeMatrix:e}),a=ve(i,this.worldSize);t.U(a,this._viewProjMatrix,a),o.tileMercatorCoords=[0,0,1,1];const r=[t.a6,t.a6,this.worldSize/this._helper.pixelsPerMeter],s=t.bj();return t.S(s,a,r),o.fallbackMatrix=s,o.mainMatrix=s,o}getFastPathSimpleProjectionMatrix(e){return this.calculatePosMatrix(e)}}function Kt(){t.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.");}function Yt(e){if(e.useSlerp)if(e.k<1){const i=t.bk(e.startEulerAngles.roll,e.startEulerAngles.pitch,e.startEulerAngles.bearing),o=t.bk(e.endEulerAngles.roll,e.endEulerAngles.pitch,e.endEulerAngles.bearing),a=new Float64Array(4);t.bl(a,i,o,e.k);const r=t.bm(a);e.tr.setRoll(r.roll),e.tr.setPitch(r.pitch),e.tr.setBearing(r.bearing);}else e.tr.setRoll(e.endEulerAngles.roll),e.tr.setPitch(e.endEulerAngles.pitch),e.tr.setBearing(e.endEulerAngles.bearing);else e.tr.setRoll(t.H.number(e.startEulerAngles.roll,e.endEulerAngles.roll,e.k)),e.tr.setPitch(t.H.number(e.startEulerAngles.pitch,e.endEulerAngles.pitch,e.k)),e.tr.setBearing(t.H.number(e.startEulerAngles.bearing,e.endEulerAngles.bearing,e.k));}function Qt(e,i,o,a,r){const s=r.padding,n=me(r.worldSize,o.getNorthWest()),l=me(r.worldSize,o.getNorthEast()),c=me(r.worldSize,o.getSouthEast()),h=me(r.worldSize,o.getSouthWest()),u=t.an(-a),d=n.rotate(u),_=l.rotate(u),p=c.rotate(u),m=h.rotate(u),f=new t.P(Math.max(d.x,_.x,m.x,p.x),Math.max(d.y,_.y,m.y,p.y)),g=new t.P(Math.min(d.x,_.x,m.x,p.x),Math.min(d.y,_.y,m.y,p.y)),v=f.sub(g),x=(r.width-(s.left+s.right+i.left+i.right))/v.x,b=(r.height-(s.top+s.bottom+i.top+i.bottom))/v.y;if(b<0||x<0)return void Kt();const y=Math.min(t.ar(r.scale*Math.min(x,b)),e.maxZoom),w=t.P.convert(e.offset),T=new t.P((i.left-i.right)/2,(i.top-i.bottom)/2).rotate(t.an(a)),P=w.add(T).mult(r.scale/t.ao(y));return {center:fe(r.worldSize,n.add(c).div(2).sub(P)),zoom:y,bearing:a}}class Jt{get useGlobeControls(){return !1}handlePanInertia(e,t){const i=e.mag(),o=Math.abs(ge(t));return {easingOffset:e.mult(Math.min(.75*o/i,1)),easingCenter:t.center}}handleMapControlsRollPitchBearingZoom(e,t){e.bearingDelta&&t.setBearing(t.bearing+e.bearingDelta),e.pitchDelta&&t.setPitch(t.pitch+e.pitchDelta),e.rollDelta&&t.setRoll(t.roll+e.rollDelta),e.zoomDelta&&t.setZoom(t.zoom+e.zoomDelta);}handleMapControlsPan(e,t,i){e.around.distSqr(t.centerPoint)<.01||t.setLocationAtPoint(i,e.around);}cameraForBoxAndBearing(e,t,i,o,a){return Qt(e,t,i,o,a)}handleJumpToCenterZoom(e,i){e.zoom!==(void 0!==i.zoom?+i.zoom:e.zoom)&&e.setZoom(+i.zoom),void 0!==i.center&&e.setCenter(t.W.convert(i.center));}handleEaseTo(e,i){const o=e.zoom,a=e.padding,r={roll:e.roll,pitch:e.pitch,bearing:e.bearing},s={roll:void 0===i.roll?e.roll:i.roll,pitch:void 0===i.pitch?e.pitch:i.pitch,bearing:void 0===i.bearing?e.bearing:i.bearing},n=void 0!==i.zoom,l=!e.isPaddingEqual(i.padding);let c=!1;const h=n?+i.zoom:e.zoom;let u=e.centerPoint.add(i.offsetAsPoint);const d=e.screenPointToLocation(u),{center:_,zoom:p}=e.applyConstrain(t.W.convert(i.center||d),null!=h?h:o);Gt(e,_);const m=me(e.worldSize,d),f=me(e.worldSize,_).sub(m),g=t.ao(p-o);return c=p!==o,{easeFunc:n=>{if(c&&e.setZoom(t.H.number(o,p,n)),t.bn(r,s)||Yt({startEulerAngles:r,endEulerAngles:s,tr:e,k:n,useSlerp:r.roll!=s.roll}),l&&(e.interpolatePadding(a,i.padding,n),u=e.centerPoint.add(i.offsetAsPoint)),i.around)e.setLocationAtPoint(i.around,i.aroundPoint);else {const i=t.ao(e.zoom-o),a=p>o?Math.min(2,g):Math.max(.5,g),r=Math.pow(a,1-n),s=fe(e.worldSize,m.add(f.mult(n*r)).mult(i));e.setLocationAtPoint(e.renderWorldCopies?s.wrap():s,u);}},isZooming:c,elevationCenter:_}}handleFlyTo(e,i){const o=void 0!==i.zoom,a=e.zoom,r=e.applyConstrain(t.W.convert(i.center||i.locationAtOffset),o?+i.zoom:a),s=r.center,n=r.zoom;Gt(e,s);const l=me(e.worldSize,i.locationAtOffset),c=me(e.worldSize,s).sub(l),h=c.mag(),u=t.ao(n-a);let d;if(void 0!==i.minZoom){const o=Math.min(+i.minZoom,a,n),r=e.applyConstrain(s,o).zoom;d=t.ao(r-a);}return {easeFunc:(i,o,r,h)=>{e.setZoom(1===i?n:a+t.ar(o));const u=1===i?s:fe(e.worldSize,l.add(c.mult(r)).mult(o));e.setLocationAtPoint(e.renderWorldCopies?u.wrap():u,h);},scaleOfZoom:u,targetCenter:s,scaleOfMinZoom:d,pixelPathLength:h}}}class ei{constructor(e,t,i){this.blendFunction=e,this.blendColor=t,this.mask=i;}}ei.Replace=[1,0],ei.disabled=new ei(ei.Replace,t.bo.transparent,[!1,!1,!1,!1]),ei.unblended=new ei(ei.Replace,t.bo.transparent,[!0,!0,!0,!0]),ei.alphaBlended=new ei([1,771],t.bo.transparent,[!0,!0,!0,!0]);const ti=2305;class ii{constructor(e,t,i){this.enable=e,this.mode=t,this.frontFace=i;}}ii.disabled=new ii(!1,1029,ti),ii.backCCW=new ii(!0,1029,ti),ii.frontCCW=new ii(!0,1028,ti);class oi{constructor(e,t,i){this.func=e,this.mask=t,this.range=i;}}oi.ReadOnly=!1,oi.ReadWrite=!0,oi.disabled=new oi(519,oi.ReadOnly,[0,1]);const ai=7680;class ri{constructor(e,t,i,o,a,r){this.test=e,this.ref=t,this.mask=i,this.fail=o,this.depthFail=a,this.pass=r;}}function si(e){return "undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext}ri.disabled=new ri({func:519,mask:0},0,0,ai,ai,ai);class ni{get awaitingQuery(){return !!this._readbackQueue}constructor(e){this._readbackWaitFrames=4,this._measureWaitFrames=6,this._texWidth=1,this._texHeight=1,this._measuredError=0,this._updateCount=0,this._lastReadbackFrame=-1e3,this._readbackQueue=null,this._cachedRenderContext=e;const i=e.context,o=i.gl;this._texFormat=o.RGBA,this._texType=o.UNSIGNED_BYTE;const a=new t.aU;a.emplaceBack(-1,-1),a.emplaceBack(2,-1),a.emplaceBack(-1,2);const r=new t.aW;r.emplaceBack(0,1,2),this._fullscreenTriangle=new Bt(i.createVertexBuffer(a,Ot.members),i.createIndexBuffer(r),t.aV.simpleSegment(0,0,a.length,r.length)),this._resultBuffer=new Uint8Array(4),i.activeTexture.set(o.TEXTURE1);const s=o.createTexture();o.bindTexture(o.TEXTURE_2D,s),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.NEAREST),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.NEAREST),o.texImage2D(o.TEXTURE_2D,0,this._texFormat,this._texWidth,this._texHeight,0,this._texFormat,this._texType,null),this._fbo=i.createFramebuffer(this._texWidth,this._texHeight,!1,!1),this._fbo.colorAttachment.set(s),si(o)&&(this._pbo=o.createBuffer(),o.bindBuffer(o.PIXEL_PACK_BUFFER,this._pbo),o.bufferData(o.PIXEL_PACK_BUFFER,4,o.STREAM_READ),o.bindBuffer(o.PIXEL_PACK_BUFFER,null));}destroy(){const e=this._cachedRenderContext.context.gl;this._fullscreenTriangle.destroy(),this._fbo.destroy(),e.deleteBuffer(this._pbo),this._fullscreenTriangle=null,this._fbo=null,this._pbo=null,this._resultBuffer=null;}updateErrorLoop(e,t){const i=this._updateCount;return this._readbackQueue?i>=this._readbackQueue.frameNumberIssued+this._readbackWaitFrames&&this._tryReadback():i>=this._lastReadbackFrame+this._measureWaitFrames&&this._renderErrorTexture(e,t),this._updateCount++,this._measuredError}_bindFramebuffer(){const e=this._cachedRenderContext.context,t=e.gl;e.activeTexture.set(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this._fbo.colorAttachment.get()),e.bindFramebuffer.set(this._fbo.framebuffer);}_renderErrorTexture(e,i){const o=this._cachedRenderContext.context,a=o.gl;if(this._bindFramebuffer(),o.viewport.set([0,0,this._texWidth,this._texHeight]),o.clear({color:t.bo.transparent}),this._cachedRenderContext.useProgram("projectionErrorMeasurement").draw(o,a.TRIANGLES,oi.disabled,ri.disabled,ei.unblended,ii.disabled,((e,t)=>({u_input:e,u_output_expected:t}))(e,i),null,null,"$clipping",this._fullscreenTriangle.vertexBuffer,this._fullscreenTriangle.indexBuffer,this._fullscreenTriangle.segments),this._pbo&&si(a)){a.bindBuffer(a.PIXEL_PACK_BUFFER,this._pbo),a.readBuffer(a.COLOR_ATTACHMENT0),a.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,0),a.bindBuffer(a.PIXEL_PACK_BUFFER,null);const e=a.fenceSync(a.SYNC_GPU_COMMANDS_COMPLETE,0);a.flush(),this._readbackQueue={frameNumberIssued:this._updateCount,sync:e};}else this._readbackQueue={frameNumberIssued:this._updateCount,sync:null};}_tryReadback(){const e=this._cachedRenderContext.context.gl;if(this._pbo&&this._readbackQueue&&si(e)){const i=e.clientWaitSync(this._readbackQueue.sync,0,0);if(i===e.WAIT_FAILED)return t.w("WebGL2 clientWaitSync failed."),this._readbackQueue=null,void(this._lastReadbackFrame=this._updateCount);if(i===e.TIMEOUT_EXPIRED)return;e.bindBuffer(e.PIXEL_PACK_BUFFER,this._pbo),e.getBufferSubData(e.PIXEL_PACK_BUFFER,0,this._resultBuffer,0,4),e.bindBuffer(e.PIXEL_PACK_BUFFER,null);}else this._bindFramebuffer(),e.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,this._resultBuffer);this._readbackQueue=null,this._measuredError=ni._parseRGBA8float(this._resultBuffer),this._lastReadbackFrame=this._updateCount;}static _parseRGBA8float(e){let t=0;return t+=e[0]/256,t+=e[1]/65536,t+=e[2]/16777216,e[3]<127&&(t=-t),t/128}}const li=t.a6/128;function ci(e,i){const o=void 0!==e.granularity?Math.max(e.granularity,1):1,a=o+(e.generateBorders?2:0),r=o+(e.extendToNorthPole||e.generateBorders?1:0)+(e.extendToSouthPole||e.generateBorders?1:0),s=a+1,n=r+1,l=e.generateBorders?-1:0,c=e.generateBorders||e.extendToNorthPole?-1:0,h=o+(e.generateBorders?1:0),u=o+(e.generateBorders||e.extendToSouthPole?1:0),d=s*n,_=a*r*6,p=s*n>65536;if(p&&"16bit"===i)throw new Error("Granularity is too large and meshes would not fit inside 16 bit vertex indices.");const m=p||"32bit"===i,f=new Int16Array(2*d);let g=0;for(let i=c;i<=u;i++)for(let a=l;a<=h;a++){let r=a/o*t.a6;-1===a&&(r=-li),a===o+1&&(r=t.a6+li);let s=i/o*t.a6;-1===i&&(s=e.extendToNorthPole?t.bq:-li),i===o+1&&(s=e.extendToSouthPole?t.br:t.a6+li),f[g++]=r,f[g++]=s;}const v=m?new Uint32Array(_):new Uint16Array(_);let x=0;for(let e=0;e0}get latitudeErrorCorrectionRadians(){return this._verticalPerspectiveProjection.latitudeErrorCorrectionRadians}get currentProjection(){return this.useGlobeRendering?this._verticalPerspectiveProjection:this._mercatorProjection}get name(){return "globe"}get useSubdivision(){return this.currentProjection.useSubdivision}get shaderVariantName(){return this.currentProjection.shaderVariantName}get shaderDefine(){return this.currentProjection.shaderDefine}get shaderPreludeCode(){return this.currentProjection.shaderPreludeCode}get vertexShaderPreludeCode(){return this.currentProjection.vertexShaderPreludeCode}get subdivisionGranularity(){return this.currentProjection.subdivisionGranularity}get useGlobeControls(){return this.transitionState>0}destroy(){this._mercatorProjection.destroy(),this._verticalPerspectiveProjection.destroy();}updateGPUdependent(e){this._mercatorProjection.updateGPUdependent(e),this._verticalPerspectiveProjection.updateGPUdependent(e);}getMeshFromTileID(e,t,i,o,a){return this.currentProjection.getMeshFromTileID(e,t,i,o,a)}setProjection(e){this._transitionable.setValue("type",(null==e?void 0:e.type)||"mercator");}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()||this.currentProjection.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}setErrorQueryLatitudeDegrees(e){this._verticalPerspectiveProjection.setErrorQueryLatitudeDegrees(e),this._mercatorProjection.setErrorQueryLatitudeDegrees(e);}}function pi(e){const t=gi(e.worldSize,e.center.lat);return 2*Math.PI*t}function mi(e,i,o,a,r){const s=1/(1<1e-6){const a=e[0]/o,r=Math.acos(e[2]/o),s=(a>0?r:-r)/Math.PI*180;return new t.W(t.X(s,-180,180),i)}return new t.W(0,i)}function xi(e){return Math.cos(e*Math.PI/180)}function bi(e,i){const o=xi(e),a=xi(i);return t.ar(a/o)}function yi(e,i){const o=e.rotate(i.bearingInRadians),a=i.zoom+bi(i.center.lat,0),r=t.bt(1/xi(i.center.lat),1/xi(Math.min(Math.abs(i.center.lat),60)),t.bw(a,7,3,0,1)),s=360/pi({worldSize:i.worldSize,center:{lat:i.center.lat}});return new t.W(i.center.lng-o.x*s*r,t.al(i.center.lat+o.y*s,-t.am,t.am))}function wi(e){const t=.5*e,i=Math.sin(t),o=Math.cos(t);return Math.log(i+o)-Math.log(o-i)}function Ti(e,i,o,a){const r=e.lat+o*a;if(Math.abs(o)>1){const s=(Math.sign(e.lat+o)!==Math.sign(e.lat)?-Math.abs(e.lat):Math.abs(e.lat))*Math.PI/180,n=Math.abs(e.lat+o)*Math.PI/180,l=wi(s+a*(n-s)),c=wi(s),h=wi(n);return new t.W(e.lng+i*((l-c)/(h-c)),r)}return new t.W(e.lng+i*a,r)}class Pi{constructor(e){this._cachePrevious=new Map,this._cache=new Map,this._hadAnyChanges=!1,this._boundingVolumeFactory=e;}swapBuffers(){if(!this._hadAnyChanges)return;const e=this._cachePrevious;this._cachePrevious=this._cache,this._cache=e,this._cache.clear(),this._hadAnyChanges=!1;}getTileBoundingVolume(e,t,i,o){const a=`${e.z}_${e.x}_${e.y}_${(null==o?void 0:o.terrain)?"t":""}`,r=this._cache.get(a);if(r)return r;const s=this._cachePrevious.get(a);if(s)return this._cache.set(a,s),s;const n=this._boundingVolumeFactory(e,t,i,o);return this._cache.set(a,n),this._hadAnyChanges=!0,n}}class Ci{constructor(e,t,i,o){this.min=i,this.max=o,this.points=e,this.planes=t;}static fromAabb(e,t){const i=[];for(let o=0;o<8;o++)i.push([1&~o?e[0]:t[0],1==(o>>1&1)?t[1]:e[1],1==(o>>2&1)?t[2]:e[2]]);return new Ci(i,[[-1,0,0,t[0]],[1,0,0,-e[0]],[0,-1,0,t[1]],[0,1,0,-e[1]],[0,0,-1,t[2]],[0,0,1,-e[2]]],e,t)}static fromCenterSizeAngles(e,i,o){const a=t.bA([],o[0],o[1],o[2]),r=t.bB([],[i[0],0,0],a),s=t.bB([],[0,i[1],0],a),n=t.bB([],[0,0,i[2]],a),l=[...e],c=[...e];for(let t=0;t<8;t++)for(let i=0;i<3;i++){const o=e[i]+r[i]*(1&~t?-1:1)+s[i]*(1==(t>>1&1)?1:-1)+n[i]*(1==(t>>2&1)?1:-1);l[i]=Math.min(l[i],o),c[i]=Math.max(c[i],o);}const h=[];for(let i=0;i<8;i++){const o=[...e];t.a_(o,o,t.aZ([],r,1&~i?-1:1)),t.a_(o,o,t.aZ([],s,1==(i>>1&1)?1:-1)),t.a_(o,o,t.aZ([],n,1==(i>>2&1)?1:-1)),h.push(o);}return new Ci(h,[[...r,-t.b3(r,h[0])],[...s,-t.b3(s,h[0])],[...n,-t.b3(n,h[0])],[-r[0],-r[1],-r[2],-t.b3(r,h[7])],[-s[0],-s[1],-s[2],-t.b3(s,h[7])],[-n[0],-n[1],-n[2],-t.b3(n,h[7])]],l,c)}intersectsFrustum(e){let t=!0;const i=this.points.length,o=this.planes.length,a=e.planes.length,r=e.points.length;for(let o=0;o=0&&r++;}if(0===r)return 0;r=0&&o++;}if(0===o)return 0}return 1}intersectsPlane(e){const t=this.points.length;let i=0;for(let o=0;o=0&&i++;}return i===t?2:0===i?0:1}}function Mi(e,t,i){const o=e-t;return o<0?-o:Math.max(0,o-i)}function Ii(e,t,i,o,a){const r=e-i;let s;return s=r<0?Math.min(-r,1+r-a):r>a?Math.min(Math.max(r-a,0),1-r):0,Math.max(s,Mi(t,o,a))}class Ei{constructor(){this._boundingVolumeCache=new Pi(this._computeTileBoundingVolume);}prepareNextFrame(){this._boundingVolumeCache.swapBuffers();}distanceToTile2d(e,t,i,o){const a=1<4}allowWorldCopies(){return !1}getTileBoundingVolume(e,t,i,o){return this._boundingVolumeCache.getTileBoundingVolume(e,t,i,o)}_computeTileBoundingVolume(e,i,o,a){var r,s;let n=0,l=0;if(null==a?void 0:a.terrain){const c=new t.a3(e.z,i,e.z,e.x,e.y),h=a.terrain.getMinMaxElevation(c);n=null!==(r=h.minElevation)&&void 0!==r?r:Math.min(0,o),l=null!==(s=h.maxElevation)&&void 0!==s?s:Math.max(0,o);}if(n/=t.bD,l/=t.bD,n+=1,l+=1,e.z<=0)return Ci.fromAabb([-l,-l,-l],[l,l,l]);if(1===e.z)return Ci.fromAabb([0===e.x?-l:0,0===e.y?0:-l,-l],[0===e.x?0:l,0===e.y?l:0,l]);{const i=[mi(0,0,e.x,e.y,e.z),mi(t.a6,0,e.x,e.y,e.z),mi(t.a6,t.a6,e.x,e.y,e.z),mi(0,t.a6,e.x,e.y,e.z)],o=[];for(const e of i)o.push(t.aZ([],e,l));if(l!==n)for(const e of i)o.push(t.aZ([],e,n));0===e.y&&o.push([0,1,0]),e.y===(1<=(1<{const o=t.al(e.lat,-t.am,t.am),a=t.al(+i,this.minZoom+bi(0,o),this.maxZoom);return {center:new t.W(e.lng,o),zoom:a}},this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new Wt({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new Ei;}clone(){const e=new zi;return e.apply(this,!1),e}apply(e,t,i){this._globeLatitudeErrorCorrectionRadians=i||0,this._helper.apply(e,t);}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._globeViewProjMatrixNoCorrection}get inverseProjectionMatrix(){return this._globeProjMatrixInverted}get cameraPosition(){const e=t.bz();return e[0]=this._cameraPosition[0],e[1]=this._cameraPosition[1],e[2]=this._cameraPosition[2],e}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}getProjectionData(e){const{overscaledTileID:t,applyGlobeMatrix:i}=e,o=this._helper.getMercatorTileCoordinates(t);return {mainMatrix:this._globeViewProjMatrix32f,tileMercatorCoords:o,clippingPlane:this._cachedClippingPlane,projectionTransition:i?1:0,fallbackMatrix:this._globeViewProjMatrix32f}}_computeClippingPlane(e){const i=this.pitchInRadians,o=this.cameraToCenterDistance/e,a=Math.sin(i)*o,r=Math.cos(i)*o+1,s=1/Math.sqrt(a*a+r*r)*1;let n=-a,l=r;const c=Math.sqrt(n*n+l*l);n/=c,l/=c;const h=[0,n,l];t.bF(h,h,[0,0,0],-this.bearingInRadians),t.bG(h,h,[0,0,0],-1*this.center.lat*Math.PI/180),t.bH(h,h,[0,0,0],this.center.lng*Math.PI/180);const u=1/t.b5(h);return t.aZ(h,h,u),[...h,-s*u]}isLocationOccluded(e){return !this.isSurfacePointVisible(fi(e))}transformLightDirection(e){const i=this._helper._center.lng*Math.PI/180,o=this._helper._center.lat*Math.PI/180,a=Math.cos(o),r=[Math.sin(i)*a,Math.sin(o),Math.cos(i)*a],s=[r[2],0,-r[0]],n=[0,0,0];t.b2(n,s,r),t.b1(s,s),t.b1(n,n);const l=[0,0,0];return t.b1(l,[s[0]*e[0]+n[0]*e[1]+r[0]*e[2],s[1]*e[0]+n[1]*e[1]+r[1]*e[2],s[2]*e[0]+n[2]*e[1]+r[2]*e[2]]),l}getPixelScale(){return 1/Math.cos(this._helper._center.lat*Math.PI/180)}getCircleRadiusCorrection(){return Math.cos(this._helper._center.lat*Math.PI/180)}getPitchedTextCorrection(e,i,o){const a=function(e,i,o){const a=1/(1<r&&(r=i),on&&(n=o);}const h=[c.lng+s,c.lat+l,c.lng+r,c.lat+n];return this.isSurfacePointOnScreen([0,1,0])&&(h[3]=90,h[0]=-180,h[2]=180),this.isSurfacePointOnScreen([0,-1,0])&&(h[1]=-90,h[0]=-180,h[2]=180),new G(h)}calculateCenterFromCameraLngLatAlt(e,t,i,o){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,o)}setLocationAtPoint(e,i){const o=fi(this.unprojectScreenPoint(i)),a=fi(e),r=t.bz();t.bK(r);const s=t.bz();t.bH(s,o,r,-this.center.lng*Math.PI/180),t.bG(s,s,r,this.center.lat*Math.PI/180);const n=a[0]*a[0]+a[2]*a[2],l=s[0]*s[0];if(n=-g&&p<=g,x=f>=-g&&f<=g;let b,y;if(v&&x){const e=this.center.lng*Math.PI/180,i=this.center.lat*Math.PI/180;t.bM(u,e)+t.bM(p,i)=0}isSurfacePointOnScreen(e){if(!this.isSurfacePointVisible(e))return !1;const i=t.bE();return t.aE(i,[...e,1],this._globeViewProjMatrixNoCorrection),i[0]/=i[3],i[1]/=i[3],i[2]/=i[3],i[0]>-1&&i[0]<1&&i[1]>-1&&i[1]<1&&i[2]>-1&&i[2]<1}rayPlanetIntersection(e,i){const o=t.b3(e,i),a=t.bz(),r=t.bz();t.aZ(r,i,o),t.b0(a,e,r);const s=1-t.b3(a,a);if(s<0)return null;const n=t.b3(e,e)-1,l=-o+(o<0?1:-1)*Math.sqrt(s),c=n/l,h=l;return {tMin:Math.min(c,h),tMax:Math.max(c,h)}}unprojectScreenPoint(e){const i=this._cameraPosition,o=this.getRayDirectionFromPixel(e),a=this.rayPlanetIntersection(i,o);if(a){const e=t.bz();t.a_(e,i,[o[0]*a.tMin,o[1]*a.tMin,o[2]*a.tMin]);const r=t.bz();return t.b1(r,e),vi(r)}const r=this._cachedClippingPlane,s=r[0]*o[0]+r[1]*o[1]+r[2]*o[2],n=-t.b9(r,i)/s,l=t.bz();if(n>0)t.a_(l,i,[o[0]*n,o[1]*n,o[2]*n]);else {const e=t.bz();t.a_(e,i,[2*o[0],2*o[1],2*o[2]]);const a=t.b9(this._cachedClippingPlane,e);t.b0(l,e,[this._cachedClippingPlane[0]*a,this._cachedClippingPlane[1]*a,this._cachedClippingPlane[2]*a]);}const c=function(e){const i=t.bz();return i[0]=e[0]*-e[3],i[1]=e[1]*-e[3],i[2]=e[2]*-e[3],{center:i,radius:Math.sqrt(1-e[3]*e[3])}}(r);return vi(function(e,i,o){const a=t.bz();t.b0(a,o,e);const r=t.bz();return t.bx(r,e,a,i/t.b7(a)),r}(c.center,c.radius,l))}getMatrixForModel(e,i){const o=t.W.convert(e),a=1/t.bD,r=t.bi();return t.bI(r,r,o.lng/180*Math.PI),t.bf(r,r,-o.lat/180*Math.PI),t.Q(r,r,[0,0,1+i/t.bD]),t.bf(r,r,.5*Math.PI),t.S(r,r,[a,a,a]),r}getProjectionDataForCustomLayer(e=!0){const i=this.getProjectionData({overscaledTileID:new t.a3(0,0,0,0,0),applyGlobeMatrix:e});return i.tileMercatorCoords=[0,0,1,1],i}getFastPathSimpleProjectionMatrix(e){}}class Ri{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e);}setMaxZoom(e){this._helper.setMaxZoom(e);}setMinPitch(e){this._helper.setMinPitch(e);}setMaxPitch(e){this._helper.setMaxPitch(e);}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e);}setBearing(e){this._helper.setBearing(e);}setPitch(e){this._helper.setPitch(e);}setRoll(e){this._helper.setRoll(e);}setFov(e){this._helper.setFov(e);}setZoom(e){this._helper.setZoom(e);}setCenter(e){this._helper.setCenter(e);}setElevation(e){this._helper.setElevation(e);}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e);}setPadding(e){this._helper.setPadding(e);}interpolatePadding(e,t,i){this._helper.interpolatePadding(e,t,i);}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,i=!0){this._helper.resize(e,t,i);}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e);}setConstrainOverride(e){this._helper.setConstrainOverride(e);}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t);}clearNearFarZOverride(){this._helper.clearNearFarZOverride();}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}get isGlobeRendering(){return this._globeness>0}setTransitionState(e,t){this._globeness=e,this._globeLatitudeErrorCorrectionRadians=t,this._calcMatrices(),this._verticalPerspectiveTransform.getCoveringTilesDetailsProvider().prepareNextFrame(),this._mercatorTransform.getCoveringTilesDetailsProvider().prepareNextFrame();}get currentTransform(){return this.isGlobeRendering?this._verticalPerspectiveTransform:this._mercatorTransform}constructor(e){this._globeLatitudeErrorCorrectionRadians=0,this._globeness=1,this.defaultConstrain=(e,t)=>this.currentTransform.defaultConstrain(e,t),this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new Wt({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._globeness=1,this._mercatorTransform=new Xt,this._verticalPerspectiveTransform=new zi;}clone(){const e=new Ri;return e._globeness=this._globeness,e._globeLatitudeErrorCorrectionRadians=this._globeLatitudeErrorCorrectionRadians,e.apply(this,!1),e}apply(e,t){this._helper.apply(e,t),this._mercatorTransform.apply(this,!1),this._verticalPerspectiveTransform.apply(this,!1,this._globeLatitudeErrorCorrectionRadians);}get projectionMatrix(){return this.currentTransform.projectionMatrix}get modelViewProjectionMatrix(){return this.currentTransform.modelViewProjectionMatrix}get inverseProjectionMatrix(){return this.currentTransform.inverseProjectionMatrix}get cameraPosition(){return this.currentTransform.cameraPosition}getProjectionData(e){const t=this._mercatorTransform.getProjectionData(e),i=this._verticalPerspectiveTransform.getProjectionData(e);return {mainMatrix:this.isGlobeRendering?i.mainMatrix:t.mainMatrix,clippingPlane:i.clippingPlane,tileMercatorCoords:i.tileMercatorCoords,projectionTransition:e.applyGlobeMatrix?this._globeness:0,fallbackMatrix:t.fallbackMatrix}}isLocationOccluded(e){return this.currentTransform.isLocationOccluded(e)}transformLightDirection(e){return this.currentTransform.transformLightDirection(e)}getPixelScale(){return t.bt(this._mercatorTransform.getPixelScale(),this._verticalPerspectiveTransform.getPixelScale(),this._globeness)}getCircleRadiusCorrection(){return t.bt(this._mercatorTransform.getCircleRadiusCorrection(),this._verticalPerspectiveTransform.getCircleRadiusCorrection(),this._globeness)}getPitchedTextCorrection(e,i,o){const a=this._mercatorTransform.getPitchedTextCorrection(e,i,o),r=this._verticalPerspectiveTransform.getPitchedTextCorrection(e,i,o);return t.bt(a,r,this._globeness)}projectTileCoordinates(e,t,i,o){return this.currentTransform.projectTileCoordinates(e,t,i,o)}_calcMatrices(){this._helper._width&&this._helper._height&&(this._verticalPerspectiveTransform.apply(this,!1,this._globeLatitudeErrorCorrectionRadians),this._helper._nearZ=this._verticalPerspectiveTransform.nearZ,this._helper._farZ=this._verticalPerspectiveTransform.farZ,this._mercatorTransform.apply(this,!0,this.isGlobeRendering),this._helper._nearZ=this._mercatorTransform.nearZ,this._helper._farZ=this._mercatorTransform.farZ);}calculateFogMatrix(e){return this.currentTransform.calculateFogMatrix(e)}getVisibleUnwrappedCoordinates(e){return this.currentTransform.getVisibleUnwrappedCoordinates(e)}getCameraFrustum(){return this.currentTransform.getCameraFrustum()}getClippingPlane(){return this.currentTransform.getClippingPlane()}getCoveringTilesDetailsProvider(){return this.currentTransform.getCoveringTilesDetailsProvider()}recalculateZoomAndCenter(e){this._mercatorTransform.recalculateZoomAndCenter(e),this._verticalPerspectiveTransform.recalculateZoomAndCenter(e);}maxPitchScaleFactor(){return this._mercatorTransform.maxPitchScaleFactor()}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){return this._helper.getCameraLngLat()}lngLatToCameraDepth(e,t){return this.currentTransform.lngLatToCameraDepth(e,t)}populateCache(e){this._mercatorTransform.populateCache(e),this._verticalPerspectiveTransform.populateCache(e);}getBounds(){return this.currentTransform.getBounds()}calculateCenterFromCameraLngLatAlt(e,t,i,o){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,o)}setLocationAtPoint(e,t){if(!this.isGlobeRendering)return this._mercatorTransform.setLocationAtPoint(e,t),void this.apply(this._mercatorTransform,!1);this._verticalPerspectiveTransform.setLocationAtPoint(e,t),this.apply(this._verticalPerspectiveTransform,!1);}locationToScreenPoint(e,t){return this.currentTransform.locationToScreenPoint(e,t)}screenPointToMercatorCoordinate(e,t){return this.currentTransform.screenPointToMercatorCoordinate(e,t)}screenPointToLocation(e,t){return this.currentTransform.screenPointToLocation(e,t)}isPointOnMapSurface(e,t){return this.currentTransform.isPointOnMapSurface(e,t)}getRayDirectionFromPixel(e){return this._verticalPerspectiveTransform.getRayDirectionFromPixel(e)}getMatrixForModel(e,t){return this.currentTransform.getMatrixForModel(e,t)}getProjectionDataForCustomLayer(e=!0){const t=this._mercatorTransform.getProjectionDataForCustomLayer(e);if(!this.isGlobeRendering)return t;const i=this._verticalPerspectiveTransform.getProjectionDataForCustomLayer(e);return i.fallbackMatrix=t.mainMatrix,i}getFastPathSimpleProjectionMatrix(e){return this.currentTransform.getFastPathSimpleProjectionMatrix(e)}}class Di{get useGlobeControls(){return !0}handlePanInertia(e,i){const o=yi(e,i);return Math.abs(o.lng-i.center.lng)>180&&(o.lng=i.center.lng+179.5*Math.sign(o.lng-i.center.lng)),{easingCenter:o,easingOffset:new t.P(0,0)}}handleMapControlsRollPitchBearingZoom(e,i){const o=e.around,a=i.screenPointToLocation(o);e.bearingDelta&&i.setBearing(i.bearing+e.bearingDelta),e.pitchDelta&&i.setPitch(i.pitch+e.pitchDelta),e.rollDelta&&i.setRoll(i.roll+e.rollDelta);const r=i.zoom;e.zoomDelta&&i.setZoom(i.zoom+e.zoomDelta);const s=i.zoom-r;if(0===s)return;const n=t.bJ(i.center.lng,a.lng),l=n/(Math.abs(n/180)+1),c=t.bJ(i.center.lat,a.lat),h=i.getRayDirectionFromPixel(o),u=i.cameraPosition,d=-1*t.b3(u,h),_=t.bz();t.a_(_,u,[h[0]*d,h[1]*d,h[2]*d]);const p=t.b5(_)-1,m=Math.exp(.5*-Math.max(p-.3,0)),f=gi(i.worldSize,i.center.lat)/Math.min(i.width,i.height),g=t.bw(f,.9,.5,1,.25),v=(1-t.ao(-s))*Math.min(m,g),x=i.center.lat,b=i.zoom,y=new t.W(i.center.lng+l*v,t.al(i.center.lat+c*v,-t.am,t.am));i.setLocationAtPoint(a,o);const w=i.center,T=t.bw(Math.abs(n),45,85,0,1),P=t.bw(f,.75,.35,0,1),C=Math.pow(Math.max(T,P),.25),M=t.bJ(w.lng,y.lng),I=t.bJ(w.lat,y.lat);i.setCenter(new t.W(w.lng+M*C,w.lat+I*C).wrap()),i.setZoom(b+bi(x,i.center.lat));}handleMapControlsPan(e,t,i){if(!e.panDelta)return;const o=t.center.lat,a=t.zoom;t.setCenter(yi(e.panDelta,t).wrap()),t.setZoom(a+bi(o,t.center.lat));}cameraForBoxAndBearing(e,i,o,a,r){const s=Qt(e,i,o,a,r),n=i.left/r.width*2-1,l=(r.width-i.right)/r.width*2-1,c=i.top/r.height*-2+1,h=(r.height-i.bottom)/r.height*-2+1,u=t.bJ(o.getWest(),o.getEast())<0,d=u?o.getEast():o.getWest(),_=u?o.getWest():o.getEast(),p=Math.max(o.getNorth(),o.getSouth()),m=Math.min(o.getNorth(),o.getSouth()),f=d+.5*t.bJ(d,_),g=p+.5*t.bJ(p,m),v=r.clone();v.setCenter(s.center),v.setBearing(s.bearing),v.setPitch(0),v.setRoll(0),v.setZoom(s.zoom);const x=v.modelViewProjectionMatrix,b=[fi(o.getNorthWest()),fi(o.getNorthEast()),fi(o.getSouthWest()),fi(o.getSouthEast()),fi(new t.W(_,g)),fi(new t.W(d,g)),fi(new t.W(f,p)),fi(new t.W(f,m))],y=fi(s.center);let w=Number.POSITIVE_INFINITY;for(const e of b)n<0&&(w=Di.getLesserNonNegativeNonNull(w,Di.solveVectorScale(e,y,x,"x",n))),l>0&&(w=Di.getLesserNonNegativeNonNull(w,Di.solveVectorScale(e,y,x,"x",l))),c>0&&(w=Di.getLesserNonNegativeNonNull(w,Di.solveVectorScale(e,y,x,"y",c))),h<0&&(w=Di.getLesserNonNegativeNonNull(w,Di.solveVectorScale(e,y,x,"y",h)));if(Number.isFinite(w)&&0!==w)return s.zoom=Math.min(v.zoom+t.ar(w),e.maxZoom),s;Kt();}handleJumpToCenterZoom(e,i){const o=e.center.lat,a=e.applyConstrain(i.center?t.W.convert(i.center):e.center,e.zoom).center;e.setCenter(a.wrap());const r=void 0!==i.zoom?+i.zoom:e.zoom+bi(o,a.lat);e.zoom!==r&&e.setZoom(r);}handleEaseTo(e,i){const o=e.zoom,a=e.center,r=e.padding,s={roll:e.roll,pitch:e.pitch,bearing:e.bearing},n={roll:void 0===i.roll?e.roll:i.roll,pitch:void 0===i.pitch?e.pitch:i.pitch,bearing:void 0===i.bearing?e.bearing:i.bearing},l=void 0!==i.zoom,c=!e.isPaddingEqual(i.padding);let h=!1;const u=i.center?t.W.convert(i.center):a,d=e.applyConstrain(u,o).center;Gt(e,d);const _=e.clone();_.setCenter(d),_.setZoom(l?+i.zoom:o+bi(a.lat,u.lat)),_.setBearing(i.bearing);const p=new t.P(t.al(e.centerPoint.x+i.offsetAsPoint.x,0,e.width),t.al(e.centerPoint.y+i.offsetAsPoint.y,0,e.height));_.setLocationAtPoint(d,p);const m=(i.offset&&i.offsetAsPoint.mag())>0?_.center:d,f=l?+i.zoom:o+bi(a.lat,m.lat),g=o+bi(a.lat,0),v=f+bi(m.lat,0),x=t.bJ(a.lng,m.lng),b=t.bJ(a.lat,m.lat),y=t.ao(v-g);return h=f!==o,{easeFunc:o=>{if(t.bn(s,n)||Yt({startEulerAngles:s,endEulerAngles:n,tr:e,k:o,useSlerp:s.roll!=n.roll}),c&&e.interpolatePadding(r,i.padding,o),i.around)t.w("Easing around a point is not supported under globe projection."),e.setLocationAtPoint(i.around,i.aroundPoint);else {const t=v>g?Math.min(2,y):Math.max(.5,y),i=Math.pow(t,1-o),r=Ti(a,x,b,o*i);e.setCenter(r.wrap());}if(h){const i=t.H.number(g,v,o)+bi(0,e.center.lat);e.setZoom(i);}},isZooming:h,elevationCenter:m}}handleFlyTo(e,i){const o=void 0!==i.zoom,a=e.center,r=e.zoom,s=e.padding,n=!e.isPaddingEqual(i.padding),l=e.applyConstrain(t.W.convert(i.center||i.locationAtOffset),r).center,c=o?+i.zoom:e.zoom+bi(e.center.lat,l.lat),h=e.clone();h.setCenter(l),h.setZoom(c),h.setBearing(i.bearing);const u=new t.P(t.al(e.centerPoint.x+i.offsetAsPoint.x,0,e.width),t.al(e.centerPoint.y+i.offsetAsPoint.y,0,e.height));h.setLocationAtPoint(l,u);const d=h.center;Gt(e,d);const _=function(e,i,o){const a=fi(i),r=fi(o),s=t.b3(a,r),n=Math.acos(s),l=pi(e);return n/(2*Math.PI)*l}(e,a,d),p=r+bi(a.lat,0),m=c+bi(d.lat,0),f=t.ao(m-p);let g;if("number"==typeof i.minZoom){const o=+i.minZoom+bi(d.lat,0),a=Math.min(o,p,m)+bi(0,d.lat),r=e.applyConstrain(d,a).zoom+bi(d.lat,0);g=t.ao(r-p);}const v=t.bJ(a.lng,d.lng),x=t.bJ(a.lat,d.lat);return {easeFunc:(o,r,l,h)=>{const u=Ti(a,v,x,l);n&&e.interpolatePadding(s,i.padding,o);const _=1===o?d:u;e.setCenter(_.wrap());const m=p+t.ar(r);e.setZoom(1===o?c:m+bi(0,_.lat));},scaleOfZoom:f,targetCenter:d,scaleOfMinZoom:g,pixelPathLength:_}}static solveVectorScale(e,t,i,o,a){const r="x"===o?[i[0],i[4],i[8],i[12]]:[i[1],i[5],i[9],i[13]],s=[i[3],i[7],i[11],i[15]],n=e[0]*r[0]+e[1]*r[1]+e[2]*r[2],l=e[0]*s[0]+e[1]*s[1]+e[2]*s[2],c=t[0]*r[0]+t[1]*r[1]+t[2]*r[2],h=t[0]*s[0]+t[1]*s[1]+t[2]*s[2];return c+a*l===n+a*h||s[3]*(n-c)+r[3]*(h-l)+n*h==c*l?null:(c+r[3]-a*h-a*s[3])/(c-n-a*h+a*l)}static getLesserNonNegativeNonNull(e,t){return null!==t&&t>=0&&tt.C(e,null==i?void 0:i.filter((e=>"source.canvas"!==e.identifier))),Fi=t.bN();class ki extends t.E{constructor(e,i={}){var o,a;super(),this._rtlPluginLoaded=()=>{for(const e in this.tileManagers){const t=this.tileManagers[e].getSource().type;"vector"!==t&&"geojson"!==t||this.tileManagers[e].reload();}},this.map=e,this.dispatcher=new k(F(),e._getMapId()),this.dispatcher.registerMessageHandler("GG",((e,t)=>this.getGlyphs(e,t))),this.dispatcher.registerMessageHandler("GI",((e,t)=>this.getImages(e,t))),this.dispatcher.registerMessageHandler("GDA",((e,t)=>this.getDashes(e,t))),this.imageManager=new g,this.imageManager.setEventedParent(this);const r=(null===(o=e._container)||void 0===o?void 0:o.lang)||"undefined"!=typeof document&&(null===(a=document.documentElement)||void 0===a?void 0:a.lang)||void 0;this.glyphManager=new T(e._requestManager,i.localIdeographFontFamily,r),this.lineAtlas=new S(256,512),this.crossTileSymbolIndex=new At,this._setInitialValues(),this._resetUpdates(),this.dispatcher.broadcast("SR",t.bO()),ce().on(se,this._rtlPluginLoaded),this.on("data",(e=>{if("source"!==e.dataType||"metadata"!==e.sourceDataType)return;const t=this.tileManagers[e.sourceId];if(!t)return;const i=t.getSource();if(null==i?void 0:i.vectorLayerIds)for(const e in this._layers){const t=this._layers[e];t.source===i.id&&this._validateLayer(t);}}));}_setInitialValues(){var e;this._spritesImagesIds={},this._layers={},this._order=[],this.tileManagers={},this.zoomHistory=new t.bP,this._availableImages=[],this._globalState={},this._serializedLayers={},this.stylesheet=null,this.light=null,this.sky=null,this.projection&&(this.projection.destroy(),delete this.projection),this._loaded=!1,this._changed=!1,this._updatedLayers={},this._updatedSources={},this._changedImages={},this._glyphsDidChange=!1,this._updatedPaintProps={},this._layerOrderChanged=!1,this.crossTileSymbolIndex=new((null===(e=this.crossTileSymbolIndex)||void 0===e?void 0:e.constructor)||Object),this.pauseablePlacement=void 0,this.placement=void 0,this.z=0;}setGlobalStateProperty(e,i){var o,a,r;this._checkLoaded();const s=null===i?null!==(r=null===(a=null===(o=this.stylesheet.state)||void 0===o?void 0:o[e])||void 0===a?void 0:a.default)&&void 0!==r?r:null:i;if(t.bQ(s,this._globalState[e]))return this;this._globalState[e]=s,this._applyGlobalStateChanges([e]);}getGlobalState(){return this._globalState}setGlobalState(e){this._checkLoaded();const i=[];for(const o in e)!t.bQ(this._globalState[o],e[o].default)&&(i.push(o),this._globalState[o]=e[o].default);this._applyGlobalStateChanges(i);}_applyGlobalStateChanges(e){if(0===e.length)return;const t=new Set,i={};for(const o of e){i[o]=this._globalState[o];for(const e in this._layers){const i=this._layers[e],a=i.getLayoutAffectingGlobalStateRefs(),r=i.getPaintAffectingGlobalStateRefs(),s=i.getVisibilityAffectingGlobalStateRefs();if(a.has(o)&&t.add(i.source),r.has(o))for(const{name:e,value:t}of r.get(o))this._updatePaintProperty(i,e,t);(null==s?void 0:s.has(o))&&(i.recalculateVisibility(),this._updateLayer(i));}}this.dispatcher.broadcast("UGS",i);for(const e in this.tileManagers)t.has(e)&&(this._reloadSource(e),this._changed=!0);}loadURL(e){return t._(this,arguments,void 0,(function*(e,i={},o){this.fire(new t.n("dataloading",{dataType:"style"})),i.validate="boolean"!=typeof i.validate||i.validate,this._loadStyleRequest=new AbortController;const a=this._loadStyleRequest;try{const r=yield this.map._requestManager.transformRequest(e,"Style");t.bR(a.signal);const s=yield t.k(r,a);this._loadStyleRequest===a&&(this._loadStyleRequest=null),this._load(s.data,i,o);}catch(e){this._loadStyleRequest===a&&(this._loadStyleRequest=null),e&&!a.signal.aborted&&this.fire(new t.l(t.d(e)));}}))}loadJSON(e,i={},o){this.fire(new t.n("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,n.frameAsync(this._frameRequest,this.map._ownerWindow).then((()=>{this._frameRequest=null,i.validate=!1!==i.validate,this._load(e,i,o);})).catch((()=>{}));}loadEmpty(){this.fire(new t.n("dataloading",{dataType:"style"})),this._load(Fi,{validate:!1});}_load(e,i,o){var a,r;let s=i.transformStyle?i.transformStyle(o,e):e;if(!i.validate||!Li(this,t.F(s))){s=Object.assign({},s),this._loaded=!0,this.stylesheet=s;for(const e in s.sources)this.addSource(e,s.sources[e],{validate:!1});s.sprite?this._loadSprite(s.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(s.glyphs),this._createLayers(),this.light=new M(this.stylesheet.light),this._setProjectionInternal((null===(a=this.stylesheet.projection)||void 0===a?void 0:a.type)||"mercator"),this.sky=new E(this.stylesheet.sky),this.map.setTerrain(null!==(r=this.stylesheet.terrain)&&void 0!==r?r:null),this.fire(new t.n("data",{dataType:"style"})),this.fire(new t.n("style.load"));}}_createLayers(){var e,i,o;const a=t.bS(this.stylesheet.layers);this.setGlobalState(null!==(e=this.stylesheet.state)&&void 0!==e?e:null),this.dispatcher.broadcast("SL",a),this._order=a.map((e=>e.id)),this._layers={},this._serializedLayers=null;for(const e of a){const a=t.bT(e,this._globalState);if(a.setEventedParent(this,{layer:{id:e.id}}),this._layers[e.id]=a,t.bU(a)&&this.tileManagers[a.source]){const t=null!==(o=null===(i=e.paint)||void 0===i?void 0:i["raster-fade-duration"])&&void 0!==o?o:a.paint.get("raster-fade-duration");this.tileManagers[a.source].setRasterFadeDuration(t);}}}_loadSprite(e,i=!1,o=void 0){this.imageManager.setLoaded(!1);const a=new AbortController;let r;this._spriteRequest=a,function(e,i,o,a){return t._(this,void 0,void 0,(function*(){const r=p(e),s=o>1?"@2x":"",l={},c={};for(const{id:e,url:o}of r){const r=yield i.transformRequest(m(o,s,".json"),"SpriteJSON");l[e]=t.k(r,a);const n=yield i.transformRequest(m(o,s,".png"),"SpriteImage");c[e]=u.getImage(n,a);}return yield Promise.all([...Object.values(l),...Object.values(c)]),function(e,i){return t._(this,void 0,void 0,(function*(){const t={};for(const o in e){t[o]={};const a=n.getImageCanvasContext((yield i[o]).data),r=(yield e[o]).data;for(const e in r){const{width:i,height:s,x:n,y:l,sdf:c,pixelRatio:h,stretchX:u,stretchY:d,content:_,textFitWidth:p,textFitHeight:m}=r[e];t[o][e]={data:null,pixelRatio:h,sdf:c,stretchX:u,stretchY:d,content:_,textFitWidth:p,textFitHeight:m,spriteData:{width:i,height:s,x:n,y:l,context:a}};}}return t}))}(l,c)}))}(e,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then((e=>{if(this._spriteRequest=null,e)for(const t in e){this._spritesImagesIds[t]=[];const o=this._spritesImagesIds[t]?this._spritesImagesIds[t].filter((t=>!(t in e))):[];for(const e of o)this.imageManager.removeImage(e),this._changedImages[e]=!0;for(const o in e[t]){const a="default"===t?o:`${t}:${o}`;this._spritesImagesIds[t].push(a),a in this.imageManager.images?this.imageManager.updateImage(a,e[t][o],!1):this.imageManager.addImage(a,e[t][o]),i&&(this._changedImages[a]=!0);}}})).catch((e=>{this._spriteRequest=null,r=e,a.signal.aborted||this.fire(new t.l(r));})).finally((()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),i&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.n("data",{dataType:"style"})),o&&o(r);}));}_unloadSprite(){for(const e of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(e),this._changedImages[e]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.n("data",{dataType:"style"}));}_validateLayer(e){const i=this.tileManagers[e.source];if(!i)return;const o=e.sourceLayer;if(!o)return;const a=i.getSource();("geojson"===a.type||a.vectorLayerIds&&!a.vectorLayerIds.includes(o))&&this.fire(new t.l(new Error(`Source layer "${o}" does not exist on source "${a.id}" as specified by style layer "${e.id}".`)));}loaded(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(const e in this.tileManagers)if(!this.tileManagers[e].loaded())return !1;return this.imageManager.isLoaded()}_serializeByIds(e,i=!1){const o=this._serializedAllLayers();if(!e||0===e.length)return Object.values(i?t.bV(o):o);const a=[];for(const r of e)if(o[r]){const e=i?t.bV(o[r]):o[r];a.push(e);}return a}_serializedAllLayers(){let e=this._serializedLayers;if(e)return e;e=this._serializedLayers={};const t=Object.keys(this._layers);for(const i of t){const t=this._layers[i];"custom"!==t.type&&(e[i]=t.serialize());}return e}hasTransitions(){var e,t,i;if(null===(e=this.light)||void 0===e?void 0:e.hasTransition())return !0;if(null===(t=this.sky)||void 0===t?void 0:t.hasTransition())return !0;if(null===(i=this.projection)||void 0===i?void 0:i.hasTransition())return !0;for(const e in this.tileManagers)if(this.tileManagers[e].hasTransition())return !0;for(const e in this._layers)if(this._layers[e].hasTransition())return !0;return !1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(e){if(!this._loaded)return;const i=this._changed;if(i){const t=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(t.length||i.length)&&this._updateWorkerLayers(t,i);for(const e in this._updatedSources){const t=this._updatedSources[e];if("reload"===t)this._reloadSource(e);else {if("clear"!==t)throw new Error(`Invalid action ${t}`);this._clearSource(e);}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const t in this._updatedPaintProps)this._layers[t].updateTransitions(e);this.light.updateTransitions(e),this.sky.updateTransitions(e),this._resetUpdates();}const o={};for(const e in this.tileManagers){const t=this.tileManagers[e];o[e]=t.used,t.used=!1;}for(const t of this._order){const i=this._layers[t];i.recalculate(e,this._availableImages),!i.isHidden(e.zoom)&&i.source&&(this.tileManagers[i.source].used=!0);}for(const e in o){const i=this.tileManagers[e];!!o[e]!=!!i.used&&i.fire(new t.n("data",{sourceDataType:"visibility",dataType:"source",sourceId:e}));}this.light.recalculate(e),this.sky.recalculate(e),this.projection.recalculate(e),this.z=e.zoom,i&&this.fire(new t.n("data",{dataType:"style"}));}_updateTilesForChangedImages(){const e=Object.keys(this._changedImages);if(e.length){for(const t in this.tileManagers)this.tileManagers[t].reloadTilesForDependencies(["icons","patterns"],e);this._changedImages={};}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const e in this.tileManagers)this.tileManagers[e].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1;}}_updateWorkerLayers(e,t){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(e,!1),removedIds:t});}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1;}setState(e,i={}){var o;this._checkLoaded();const a=this.serialize();if(e=i.transformStyle?i.transformStyle(a,e):e,(null===(o=i.validate)||void 0===o||o)&&Li(this,t.F(e)))return !1;(e=t.bV(e)).layers=t.bS(e.layers);const r=t.bW(a,e),s=this._getOperationsToPerform(r);if(s.unimplemented.length>0)throw new Error(`Unimplemented: ${s.unimplemented.join(", ")}.`);if(0===s.operations.length)return !1;for(const e of s.operations)e();return this.stylesheet=e,this._serializedLayers=null,this.fire(new t.n("style.load",{style:this})),!0}_getOperationsToPerform(e){const t=[],i=[];for(const o of e)switch(o.command){case "setCenter":case "setZoom":case "setBearing":case "setPitch":case "setRoll":continue;case "addLayer":t.push((()=>this.addLayer.apply(this,o.args)));break;case "removeLayer":t.push((()=>this.removeLayer.apply(this,o.args)));break;case "setPaintProperty":t.push((()=>this.setPaintProperty.apply(this,o.args)));break;case "setLayoutProperty":t.push((()=>this.setLayoutProperty.apply(this,o.args)));break;case "setFilter":t.push((()=>this.setFilter.apply(this,o.args)));break;case "addSource":t.push((()=>this.addSource.apply(this,o.args)));break;case "removeSource":t.push((()=>this.removeSource.apply(this,o.args)));break;case "setLayerZoomRange":t.push((()=>this.setLayerZoomRange.apply(this,o.args)));break;case "setLight":t.push((()=>this.setLight.apply(this,o.args)));break;case "setGeoJSONSourceData":t.push((()=>this.setGeoJSONSourceData.apply(this,o.args)));break;case "setGlyphs":t.push((()=>this.setGlyphs.apply(this,o.args)));break;case "setSprite":t.push((()=>this.setSprite.apply(this,o.args)));break;case "setTerrain":t.push((()=>this.map.setTerrain.apply(this,o.args)));break;case "setSky":t.push((()=>this.setSky.apply(this,o.args)));break;case "setProjection":this.setProjection.apply(this,o.args);break;case "setGlobalState":t.push((()=>this.setGlobalState.apply(this,o.args)));break;case "setTransition":t.push((()=>{}));break;default:i.push(o.command);}return {operations:t,unimplemented:i}}addImage(e,i){if(this.getImage(e))return this.fire(new t.l(new Error(`An image named "${e}" already exists.`)));this.imageManager.addImage(e,i),this._afterImageUpdated(e);}updateImage(e,t){this.imageManager.updateImage(e,t);}getImage(e){return this.imageManager.getImage(e)}removeImage(e){if(!this.getImage(e))return this.fire(new t.l(new Error(`An image named "${e}" does not exist.`)));this.imageManager.removeImage(e),this._afterImageUpdated(e);}_afterImageUpdated(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.n("data",{dataType:"style"}));}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(e,i,o={}){var a;if(this._checkLoaded(),void 0!==this.tileManagers[e])throw new Error(`Source "${e}" already exists.`);if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(", ")}.`);if(["vector","raster","geojson","video","image"].includes(i.type)&&this._validate(t.F.source,`sources.${e}`,i,null,o))return;(null===(a=this.map)||void 0===a?void 0:a._collectResourceTiming)&&(i.collectResourceTiming=!0);const r=this.tileManagers[e]=new Fe(e,i,this.dispatcher);r.style=this,r.setEventedParent(this,(()=>({isSourceLoaded:r.loaded(),source:r.serialize(),sourceId:e}))),r.onAdd(this.map),this._changed=!0;}removeSource(e){if(this._checkLoaded(),void 0===this.tileManagers[e])throw new Error(`There is no source with this ID=${e}`);for(const i in this._layers)if(this._layers[i].source===e)return this.fire(new t.l(new Error(`Source "${e}" cannot be removed while layer "${i}" is using it.`)));const i=this.tileManagers[e];delete this.tileManagers[e],delete this._updatedSources[e],i.fire(new t.n("data",{sourceDataType:"metadata",dataType:"source",sourceId:e})),i.setEventedParent(null),i.onRemove(this.map),this._changed=!0;}setGeoJSONSourceData(e,t){if(this._checkLoaded(),void 0===this.tileManagers[e])throw new Error(`There is no source with this ID=${e}`);const i=this.tileManagers[e].getSource();if("geojson"!==i.type)throw new Error(`geojsonSource.type is ${i.type}, which is !== 'geojson`);i.setData(t),this._changed=!0;}getSource(e){var t;return null===(t=this.tileManagers[e])||void 0===t?void 0:t.getSource()}addLayer(e,i,o={}){this._checkLoaded();const a=e.id;if(this.getLayer(a))return void this.fire(new t.l(new Error(`Layer "${a}" already exists on this map.`)));let r;if("custom"===e.type){if(Li(this,t.bX(e)))return;r=t.bT(e,this._globalState);}else {if("source"in e&&"object"==typeof e.source&&(this.addSource(a,e.source),e=t.bV(e),e=t.e(e,{source:a})),this._validate(t.F.layer,`layers.${a}`,e,{arrayIndex:-1},o))return;r=t.bT(e,this._globalState),this._validateLayer(r),r.setEventedParent(this,{layer:{id:a}});}const s=i?this._order.indexOf(i):this._order.length;if(i&&-1===s)this.fire(new t.l(new Error(`Cannot add layer "${a}" before non-existing layer "${i}".`)));else {if(this._order.splice(s,0,a),this._layerOrderChanged=!0,this._layers[a]=r,this._removedLayers[a]&&r.source&&"custom"!==r.type){const e=this._removedLayers[a];delete this._removedLayers[a],e.type!==r.type?this._updatedSources[r.source]="clear":(this._updatedSources[r.source]="reload",this.tileManagers[r.source].pause());}this._updateLayer(r),r.onAdd&&r.onAdd(this.map);}}moveLayer(e,i){if(this._checkLoaded(),this._changed=!0,!this._layers[e])return void this.fire(new t.l(new Error(`The layer '${e}' does not exist in the map's style and cannot be moved.`)));if(e===i)return;const o=this._order.indexOf(e);this._order.splice(o,1);const a=i?this._order.indexOf(i):this._order.length;i&&-1===a?this.fire(new t.l(new Error(`Cannot move layer "${e}" before non-existing layer "${i}".`))):(this._order.splice(a,0,e),this._layerOrderChanged=!0);}removeLayer(e){this._checkLoaded();const i=this._layers[e];if(!i)return void this.fire(new t.l(new Error(`Cannot remove non-existing layer "${e}".`)));i.setEventedParent(null);const o=this._order.indexOf(e);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],this._serializedLayers&&delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}getLayer(e){return this._layers[e]}getLayersOrder(){return [...this._order]}hasLayer(e){return e in this._layers}setLayerZoomRange(e,i,o){this._checkLoaded();const a=this.getLayer(e);a?a.minzoom===i&&a.maxzoom===o||(null!=i&&(a.minzoom=i),null!=o&&(a.maxzoom=o),this._updateLayer(a)):this.fire(new t.l(new Error(`Cannot set the zoom range of non-existing layer "${e}".`)));}setFilter(e,i,o={}){this._checkLoaded();const a=this.getLayer(e);if(a){if(!t.bQ(a.filter,i))return null==i?(a.setFilter(void 0),void this._updateLayer(a)):void(this._validate(t.F.filter,`layers.${a.id}.filter`,i,null,o)||(a.setFilter(t.bV(i)),this._updateLayer(a)))}else this.fire(new t.l(new Error(`Cannot filter non-existing layer "${e}".`)));}getFilter(e){return t.bV(this.getLayer(e).filter)}setLayoutProperty(e,i,o,a={}){this._checkLoaded();const r=this.getLayer(e);r?t.bQ(r.getLayoutProperty(i),o)||(r.setLayoutProperty(i,o,a),this._updateLayer(r)):this.fire(new t.l(new Error(`Cannot style non-existing layer "${e}".`)));}getLayoutProperty(e,i){const o=this.getLayer(e);if(o)return o.getLayoutProperty(i);this.fire(new t.l(new Error(`Cannot get style of non-existing layer "${e}".`)));}setPaintProperty(e,i,o,a={}){this._checkLoaded();const r=this.getLayer(e);r?t.bQ(r.getPaintProperty(i),o)||this._updatePaintProperty(r,i,o,a):this.fire(new t.l(new Error(`Cannot style non-existing layer "${e}".`)));}_updatePaintProperty(e,i,o,a={}){e.setPaintProperty(i,o,a)&&this._updateLayer(e),t.bU(e)&&"raster-fade-duration"===i&&this.tileManagers[e.source].setRasterFadeDuration(o),this._changed=!0,this._updatedPaintProps[e.id]=!0,this._serializedLayers=null;}getPaintProperty(e,t){return this.getLayer(e).getPaintProperty(t)}setFeatureState(e,i){this._checkLoaded();const o=e.source,a=e.sourceLayer,r=this.tileManagers[o];if(void 0===r)return void this.fire(new t.l(new Error(`The source '${o}' does not exist in the map's style.`)));const s=r.getSource().type;"geojson"===s&&a?this.fire(new t.l(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==s||a?(void 0===e.id&&this.fire(new t.l(new Error("The feature id parameter must be provided."))),r.setFeatureState(a,e.id,i)):this.fire(new t.l(new Error("The sourceLayer parameter must be provided for vector source types.")));}removeFeatureState(e,i){this._checkLoaded();const o=e.source,a=this.tileManagers[o];if(void 0===a)return void this.fire(new t.l(new Error(`The source '${o}' does not exist in the map's style.`)));const r=a.getSource().type,s="vector"===r?e.sourceLayer:void 0;"vector"!==r||s?i&&"string"!=typeof e.id&&"number"!=typeof e.id?this.fire(new t.l(new Error("A feature id is required to remove its specific state property."))):a.removeFeatureState(s,e.id,i):this.fire(new t.l(new Error("The sourceLayer parameter must be provided for vector source types.")));}getFeatureState(e){this._checkLoaded();const i=e.source,o=e.sourceLayer,a=this.tileManagers[i];if(void 0!==a)return "vector"!==a.getSource().type||o?(void 0===e.id&&this.fire(new t.l(new Error("The feature id parameter must be provided."))),a.getFeatureState(o,e.id)):void this.fire(new t.l(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new t.l(new Error(`The source '${i}' does not exist in the map's style.`)));}getTransition(){var e;return t.e({duration:300,delay:0},null===(e=this.stylesheet)||void 0===e?void 0:e.transition)}serialize(){if(!this._loaded)return;const e=t.bY(this.tileManagers,(e=>e.serialize())),i=this._serializeByIds(this._order,!0),o=this.map.getTerrain()||void 0,a=this.stylesheet;return t.bZ({version:a.version,name:a.name,metadata:a.metadata,light:a.light,sky:a.sky,center:a.center,zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,sprite:a.sprite,glyphs:a.glyphs,transition:a.transition,projection:a.projection,sources:e,layers:i,terrain:o},(e=>void 0!==e))}_updateLayer(e){this._updatedLayers[e.id]=!0,e.source&&!this._updatedSources[e.source]&&"raster"!==this.tileManagers[e.source].getSource().type&&(this._updatedSources[e.source]="reload",this.tileManagers[e.source].pause()),this._serializedLayers=null,this._changed=!0;}_flattenAndSortRenderedFeatures(e){const t=e=>"fill-extrusion"===this._layers[e].type,i={},o=[];for(let a=this._order.length-1;a>=0;a--){const r=this._order[a];if(t(r)){i[r]=a;for(const t of e){const e=t[r];if(e)for(const t of e)o.push(t);}}}o.sort(((e,t)=>t.intersectionZ-e.intersectionZ));const a=[];for(let r=this._order.length-1;r>=0;r--){const s=this._order[r];if(t(s))for(let e=o.length-1;e>=0;e--){const t=o[e].feature;if(i[t.layer.id]this.map.terrain.getElevation(e,t,i):void 0));return this.placement&&r.push(function(e,t,i,o,a,r,s){const n={},l=r.queryRenderedSymbols(o),c=[];for(const e of Object.keys(l).map(Number))c.push(s[e]);c.sort(N);for(const i of c){const o=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],t,i.bucketIndex,i.sourceLayerIndex,{filterSpec:a.filter,globalState:a.globalState},a.layers,a.availableImages,e);for(const e in o){n[e]||(n[e]=[]);const t=o[e];t.sort(((e,t)=>{const o=i.featureSortOrder;if(o){const i=o.indexOf(e.featureIndex);return o.indexOf(t.featureIndex)-i}return t.featureIndex-e.featureIndex}));for(const i of t)n[e].push(i);}}return function(e,t,i){for(const o in e)for(const a of e[o])Z(a,i[t[o].source]);return e}(n,e,i)}(this._layers,s,this.tileManagers,e,l,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(r)}querySourceFeatures(e,i){(null==i?void 0:i.filter)&&this._validate(t.F.filter,"querySourceFeatures.filter",i.filter,null,i);const o=this.tileManagers[e];return o?function(e,t){const i=e.getRenderableIds().map((t=>e.getTileByID(t))),o=[],a={};for(const e of i){const i=e.tileID.canonical.key;a[i]||(a[i]=!0,e.querySourceFeatures(o,t));}return o}(o,i?Object.assign(Object.assign({},i),{globalState:this._globalState}):{globalState:this._globalState}):[]}getLight(){return this.light.getLight()}setLight(e,i={}){this._checkLoaded();const o=this.light.getLight();let a=!1;for(const i in e)if(!t.bQ(e[i],o[i])){a=!0;break}if(!a)return;const r={now:c(),transition:t.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e,i),this.light.updateTransitions(r);}getProjection(){var e;return null===(e=this.stylesheet)||void 0===e?void 0:e.projection}setProjection(e){this._checkLoaded();const t=null!=e?e:{type:"mercator"};if(this.stylesheet.projection=e,this.projection){if(this.projection.name===t.type)return;this.projection.destroy(),delete this.projection;}this._setProjectionInternal(t.type);}getSky(){var e;return null===(e=this.stylesheet)||void 0===e?void 0:e.sky}setSky(e,i={}){this._checkLoaded();const o=this.getSky();let a=!1;if(!e&&!o)return;if(e&&!o)a=!0;else if(!e&&o)a=!0;else for(const i in e)if(!t.bQ(e[i],o[i])){a=!0;break}if(!a)return;const r={now:c(),transition:t.e({duration:300,delay:0},this.stylesheet.transition)};this.stylesheet.sky=e,this.sky.setSky(e,i),this.sky.updateTransitions(r);}_setProjectionInternal(e){const i=function(e,i){const o={constrainOverride:i};if(Array.isArray(e)){const t=new _i({type:e});return {projection:t,transform:new Ri(o),cameraHelper:new Ai(t)}}switch(e){case "mercator":return {projection:new Zt,transform:new Xt(o),cameraHelper:new Jt};case "globe":{const e=new _i({type:["interpolate",["linear"],["zoom"],11,"vertical-perspective",12,"mercator"]});return {projection:e,transform:new Ri(o),cameraHelper:new Ai(e)}}case "vertical-perspective":return {projection:new ui,transform:new zi(o),cameraHelper:new Di};default:return t.w(`Unknown projection name: ${e}. Falling back to mercator projection.`),{projection:new Zt,transform:new Xt(o),cameraHelper:new Jt}}}(e,this.map.transformConstrain);this.projection=i.projection,this.map.migrateProjection(i.transform,i.cameraHelper);for(const e in this.tileManagers)this.tileManagers[e].reload();}_validate(e,i,o,a,r={}){return !1!==(null==r?void 0:r.validate)&&Li(this,e.call(t.F,t.e({key:i,style:this.serialize(),value:o,styleSpec:t.x},a)))}_remove(e=!0){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null),ce().off(se,this._rtlPluginLoaded);for(const e in this._layers)this._layers[e].setEventedParent(null);for(const e in this.tileManagers){const t=this.tileManagers[e];t.setEventedParent(null),t.onRemove(this.map);}this.imageManager.setEventedParent(null),this.setEventedParent(null),e&&this.dispatcher.broadcast("RM",void 0),this.dispatcher.remove(e);}_clearSource(e){this.tileManagers[e].clearTiles();}_reloadSource(e){this.tileManagers[e].resume(),this.tileManagers[e].reload();}_updateSources(e){for(const t in this.tileManagers)this.tileManagers[t].update(e,this.map.terrain);}_generateCollisionBoxes(){for(const e in this.tileManagers)this._reloadSource(e);}_updatePlacement(e,t,i,o,a=!1){let r=!1,s=!1;const n={};for(const t of this._order){const i=this._layers[t];if("symbol"!==i.type)continue;if(!n[i.source]){const e=this.tileManagers[i.source];n[i.source]=e.getRenderableIds(!0).map((t=>e.getTileByID(t))).sort(((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1)));}const o=this.crossTileSymbolIndex.addLayer(i,n[i.source],e.center.lng);r||(r=o);}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),a||(a=this._layerOrderChanged||0===i),(a||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(c(),e.zoom))&&(this.pauseablePlacement=new Et(e,this.map.terrain,this._order,a,t,i,o,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,n),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(c()),s=!0),r&&this.pauseablePlacement.placement.setStale()),s||r)for(const e of this._order){const t=this._layers[e];"symbol"===t.type&&this.placement.updateLayerOpacities(t,n[t.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(c())}_releaseSymbolFadeTiles(){for(const e in this.tileManagers)this.tileManagers[e].releaseSymbolFadeTiles();}getImages(e,i){return t._(this,void 0,void 0,(function*(){const e=yield this.imageManager.getImages(i.icons);this._updateTilesForChangedImages();const t=this.tileManagers[i.source];return t&&t.setDependencies(i.tileID.key,i.type,i.icons),e}))}getGlyphs(e,i){return t._(this,void 0,void 0,(function*(){const e=yield this.glyphManager.getGlyphs(i.stacks),t=this.tileManagers[i.source];return t&&t.setDependencies(i.tileID.key,i.type,[""]),e}))}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(e,i={}){this._checkLoaded(),e&&this._validate(t.F.glyphs,"glyphs",e,null,i)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=e,this.glyphManager.entries={},this.glyphManager.setURL(e));}getDashes(e,i){return t._(this,void 0,void 0,(function*(){const e={};for(const[t,o]of Object.entries(i.dashes))e[t]=this.lineAtlas.getDash(o.dasharray,o.round);return e}))}addSprite(e,i,o={},a){this._checkLoaded();const r=[{id:e,url:i}],s=[...p(this.stylesheet.sprite),...r];this._validate(t.F.sprite,"sprite",s,null,o)||(this.stylesheet.sprite=s,this._loadSprite(r,!0,a));}removeSprite(e){this._checkLoaded();const i=p(this.stylesheet.sprite);if(i.find((t=>t.id===e))){if(this._spritesImagesIds[e])for(const t of this._spritesImagesIds[e])this.imageManager.removeImage(t),this._changedImages[t]=!0;i.splice(i.findIndex((t=>t.id===e)),1),this.stylesheet.sprite=i.length>0?i:void 0,delete this._spritesImagesIds[e],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.n("data",{dataType:"style"}));}else this.fire(new t.l(new Error(`Sprite "${e}" doesn't exists on this map.`)));}getSprite(){return p(this.stylesheet.sprite)}setSprite(e,i={},o){this._checkLoaded(),e&&this._validate(t.F.sprite,"sprite",e,null,i)||(this.stylesheet.sprite=e,e?this._loadSprite(e,!0,o):(this._unloadSprite(),o&&o(null)));}destroy(){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null);for(const e in this.tileManagers){const t=this.tileManagers[e];t.setEventedParent(null),t.onRemove(this.map);}this.tileManagers={},this.imageManager&&(this.imageManager.setEventedParent(null),this.imageManager.destroy(),this._availableImages=[],this._spritesImagesIds={}),this.glyphManager&&this.glyphManager.destroy();for(const e in this._layers){const t=this._layers[e];t.setEventedParent(null),t.onRemove&&t.onRemove(this.map);}this._setInitialValues(),this.setEventedParent(null),this.dispatcher.unregisterMessageHandler("GG"),this.dispatcher.unregisterMessageHandler("GI"),this.dispatcher.unregisterMessageHandler("GDA"),this.dispatcher.remove(!0),this._listeners={},this._oneTimeListeners={};}}var Bi=t.aS([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Oi{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;}bind(e,t,i,o,a,r,s,n,l){this.context=e;let c=this.boundPaintVertexBuffers.length!==o.length;for(let e=0;!c&&e({u_texture:0,u_ele_delta:e,u_fog_matrix:i,u_fog_color:o?o.properties.get("fog-color"):t.bo.white,u_fog_ground_blend:o?o.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:r?0:o?o.calculateFogBlendOpacity(a):0,u_horizon_color:o?o.properties.get("horizon-color"):t.bo.white,u_horizon_fog_blend:o?o.properties.get("horizon-fog-blend"):1,u_is_globe_mode:r?1:0}),Ni={mainMatrix:"u_projection_matrix",tileMercatorCoords:"u_projection_tile_mercator_coords",clippingPlane:"u_projection_clipping_plane",projectionTransition:"u_projection_transition",fallbackMatrix:"u_projection_fallback_matrix"};function Zi(e){const t=[];for(const i of e){if(null===i)continue;const e=i.split(" ");t.push(e.pop());}return t}class Ui{constructor(e,i,o,a,r,s,n,l,c=[]){const h=e.gl;this.program=h.createProgram();const u=Zi(i.staticAttributes),d=o?o.getBinderAttributes():[],_=u.concat(d),p=Ft.prelude.staticUniforms?Zi(Ft.prelude.staticUniforms):[],m=n.staticUniforms?Zi(n.staticUniforms):[],f=i.staticUniforms?Zi(i.staticUniforms):[],g=o?o.getBinderUniforms():[],v=p.concat(m).concat(f).concat(g),x=[];for(const e of v)x.includes(e)||x.push(e);const b=o?o.defines():[];si(h)&&b.unshift("#version 300 es"),r&&b.push("#define OVERDRAW_INSPECTOR;"),s&&b.push("#define TERRAIN3D;"),l&&b.push(l),c&&b.push(...c);let y=b.concat(Ft.prelude.fragmentSource,n.fragmentSource,i.fragmentSource).join("\n"),w=b.concat(Ft.prelude.vertexSource,n.vertexSource,i.vertexSource).join("\n");si(h)||(y=function(e){return e.replace(/\bin\s/g,"varying ").replace("out highp vec4 fragColor;","").replace(/fragColor/g,"gl_FragColor").replace(/texture\(/g,"texture2D(")}(y),w=function(e){return e.replace(/\bin\s/g,"attribute ").replace(/\bout\s/g,"varying ").replace(/texture\(/g,"texture2D(")}(w));const T=h.createShader(h.FRAGMENT_SHADER);if(h.isContextLost())return void(this.failedToCreate=!0);if(h.shaderSource(T,y),h.compileShader(T),!h.getShaderParameter(T,h.COMPILE_STATUS))throw new Error(`Could not compile fragment shader: ${h.getShaderInfoLog(T)}`);h.attachShader(this.program,T);const P=h.createShader(h.VERTEX_SHADER);if(h.isContextLost())return void(this.failedToCreate=!0);if(h.shaderSource(P,w),h.compileShader(P),!h.getShaderParameter(P,h.COMPILE_STATUS))throw new Error(`Could not compile vertex shader: ${h.getShaderInfoLog(P)}`);h.attachShader(this.program,P),this.attributes={};const C={};this.numAttributes=_.length;for(let e=0;e({u_depth:new t.b_(e,i.u_depth),u_terrain:new t.b_(e,i.u_terrain),u_terrain_dim:new t.bp(e,i.u_terrain_dim),u_terrain_matrix:new t.c0(e,i.u_terrain_matrix),u_terrain_unpack:new t.c1(e,i.u_terrain_unpack),u_terrain_exaggeration:new t.bp(e,i.u_terrain_exaggeration)}))(e,C),this.projectionUniforms=((e,i)=>({u_projection_matrix:new t.c0(e,i.u_projection_matrix),u_projection_tile_mercator_coords:new t.c1(e,i.u_projection_tile_mercator_coords),u_projection_clipping_plane:new t.c1(e,i.u_projection_clipping_plane),u_projection_transition:new t.bp(e,i.u_projection_transition),u_projection_fallback_matrix:new t.c0(e,i.u_projection_fallback_matrix)}))(e,C),this.binderUniforms=o?o.getUniforms(e,C):[];}draw(e,t,i,o,a,r,s,n,l,c,h,u,d,_,p,m,f,g,v){var x;const b=e.gl;if(this.failedToCreate)return;if(e.program.set(this.program),e.setDepthMode(i),e.setStencilMode(o),e.setColorMode(a),e.setCullFace(r),n){e.activeTexture.set(b.TEXTURE2),b.bindTexture(b.TEXTURE_2D,n.depthTexture),e.activeTexture.set(b.TEXTURE3),b.bindTexture(b.TEXTURE_2D,n.texture);for(const e in this.terrainUniforms)this.terrainUniforms[e].set(n[e]);}if(l)for(const e in l)this.projectionUniforms[Ni[e]].set(l[e]);if(s)for(const e in this.fixedUniforms)this.fixedUniforms[e].set(s[e]);m&&m.setUniforms(e,this.binderUniforms,_,{zoom:p});let y=0;switch(t){case b.LINES:y=2;break;case b.TRIANGLES:y=3;break;case b.LINE_STRIP:y=1;}for(const i of d.get())i.vaos||(i.vaos={}),(x=i.vaos)[c]||(x[c]=new Oi),i.vaos[c].bind(e,this,h,m?m.getPaintVertexBuffers():[],u,i.vertexOffset,f,g,v),b.drawElements(t,i.primitiveLength*y,b.UNSIGNED_SHORT,i.primitiveOffset*y*2);}}function Gi(e,i,o){const a=1/t.aK(o,1,i.transform.tileZoom),r=Math.pow(2,o.tileID.overscaledZ),s=o.tileSize*Math.pow(2,i.transform.tileZoom)/r,n=s*(o.tileID.canonical.x+o.tileID.wrap*r),l=s*o.tileID.canonical.y;return {u_image:0,u_texsize:o.imageAtlasTexture.size,u_scale:[a,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[n>>16,l>>16],u_pixel_coord_lower:[65535&n,65535&l]}}const Vi=(e,i,o,a)=>{const r=e.style.light,s=r.properties.get("position"),n=[s.x,s.y,s.z],l=t.c4();"viewport"===r.properties.get("anchor")&&t.c5(l,e.transform.bearingInRadians),t.c6(n,n,l);const c=e.transform.transformLightDirection(n),h=r.properties.get("color");return {u_lightpos:n,u_lightpos_globe:c,u_lightintensity:r.properties.get("intensity"),u_lightcolor:[h.r,h.g,h.b],u_vertical_gradient:+i,u_opacity:o,u_fill_translate:a}},Wi=(e,i,o,a,r,s,n)=>t.e(Vi(e,i,o,a),Gi(s,e,n),{u_height_factor:-Math.pow(2,r.overscaledZ)/n.tileSize/8}),qi=(e,i,o,a)=>t.e(Gi(i,e,o),{u_fill_translate:a}),$i=(e,t)=>({u_world:e,u_fill_translate:t}),Hi=(e,i,o,a,r)=>t.e(qi(e,i,o,r),{u_world:a}),Xi=(e,i,o,a,r)=>{const s=e.transform;let n,l,c=0;if("map"===o.paint.get("circle-pitch-alignment")){const e=t.aK(i,1,s.zoom);n=!0,l=[e,e],c=e/(t.a6*Math.pow(2,i.tileID.overscaledZ))*2*Math.PI*r;}else n=!1,l=s.pixelsToGLUnits;return {u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+("map"===o.paint.get("circle-pitch-scale")),u_pitch_with_map:+n,u_device_pixel_ratio:e.pixelRatio,u_extrude_scale:l,u_globe_extrude_scale:c,u_translate:a}},Ki=e=>({u_pixel_extrude_scale:[1/e.width,1/e.height]}),Yi=e=>({u_viewport_size:[e.width,e.height]}),Qi=(e,t=1)=>({u_color:e,u_overlay:0,u_overlay_scale:t}),Ji=(e,i,o,a)=>{const r=t.aK(e,1,i)/(t.a6*Math.pow(2,e.tileID.overscaledZ))*2*Math.PI*a;return {u_extrude_scale:t.aK(e,1,i),u_intensity:o,u_globe_extrude_scale:r}},eo=(e,i,o,a)=>{const r=t.O();t.c7(r,0,e.width,e.height,0,0,1);const s=e.context.gl;return {u_matrix:r,u_world:[s.drawingBufferWidth,s.drawingBufferHeight],u_image:o,u_color_ramp:a,u_opacity:i.paint.get("heatmap-opacity")}},to=(e,t,i)=>{const o=i.paint.get("hillshade-accent-color");let a;switch(i.paint.get("hillshade-method")){case "basic":a=4;break;case "combined":a=1;break;case "igor":a=2;break;case "multidirectional":a=3;break;default:a=0;}const r=i.getIlluminationProperties();for(let t=0;t{const o=i.stride,a=t.O();return t.c7(a,0,t.a6,-t.a6,0,0,1),t.Q(a,a,[0,-t.a6,0]),{u_matrix:a,u_image:1,u_dimension:[o,o],u_zoom:e.overscaledZ,u_unpack:i.getUnpackVector()}};function oo(e,i){const o=Math.pow(2,i.canonical.z),a=i.canonical.y;return [new t.a7(0,a/o).toLngLat().lat,new t.a7(0,(a+1)/o).toLngLat().lat]}const ao=(e,t,i=0)=>({u_image:0,u_unpack:t.getUnpackVector(),u_dimension:[t.stride,t.stride],u_elevation_stops:1,u_color_stops:4,u_color_ramp_size:i,u_opacity:e.paint.get("color-relief-opacity")}),ro=(e,i,o,a)=>{const r=e.transform;return {u_translation:uo(e,i,o),u_ratio:a/t.aK(i,1,r.zoom),u_device_pixel_ratio:e.pixelRatio,u_units_to_pixels:[1/r.pixelsToGLUnits[0],1/r.pixelsToGLUnits[1]]}},so=(e,i,o,a,r)=>t.e(ro(e,i,o,a),{u_image:0,u_image_height:r}),no=(e,i,o,a,r)=>{const s=e.transform,n=ho(i,s);return {u_translation:uo(e,i,o),u_texsize:i.imageAtlasTexture.size,u_ratio:a/t.aK(i,1,s.zoom),u_device_pixel_ratio:e.pixelRatio,u_image:0,u_scale:[n,r.fromScale,r.toScale],u_fade:r.t,u_units_to_pixels:[1/s.pixelsToGLUnits[0],1/s.pixelsToGLUnits[1]]}},lo=(e,i,o,a,r)=>{const s=ho(i,e.transform);return t.e(ro(e,i,o,a),{u_tileratio:s,u_crossfade_from:r.fromScale,u_crossfade_to:r.toScale,u_image:0,u_mix:r.t,u_lineatlas_width:e.lineAtlas.width,u_lineatlas_height:e.lineAtlas.height})},co=(e,i,o,a,r,s)=>{const n=ho(i,e.transform);return t.e(ro(e,i,o,a),{u_image:0,u_image_height:s,u_tileratio:n,u_crossfade_from:r.fromScale,u_crossfade_to:r.toScale,u_image_dash:1,u_mix:r.t,u_lineatlas_width:e.lineAtlas.width,u_lineatlas_height:e.lineAtlas.height})};function ho(e,i){return 1/t.aK(e,1,i.tileZoom)}function uo(e,i,o){return t.aL(e.transform,i,o.paint.get("line-translate"),o.paint.get("line-translate-anchor"))}const _o=(e,t,i,o,a)=>{return {u_tl_parent:e,u_scale_parent:t,u_buffer_scale:1,u_fade_t:i.mix,u_opacity:i.opacity*o.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:o.paint.get("raster-brightness-min"),u_brightness_high:o.paint.get("raster-brightness-max"),u_saturation_factor:(s=o.paint.get("raster-saturation"),s>0?1-1/(1.001-s):-s),u_contrast_factor:(r=o.paint.get("raster-contrast"),r>0?1/(1-r):1+r),u_spin_weights:po(o.paint.get("raster-hue-rotate")),u_coords_top:[a[0].x,a[0].y,a[1].x,a[1].y],u_coords_bottom:[a[3].x,a[3].y,a[2].x,a[2].y]};var r,s;};function po(e){e*=Math.PI/180;const t=Math.sin(e),i=Math.cos(e);return [(2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3]}const mo=(e,t,i,o,a,r,s,n,l,c,h,u,d)=>{const _=s.transform;return {u_is_size_zoom_constant:+("constant"===e||"source"===e),u_is_size_feature_constant:+("constant"===e||"camera"===e),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:_.cameraToCenterDistance,u_pitch:_.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:_.width/_.height,u_fade_change:s.options.fadeDuration?s.symbolFadeChange:1,u_label_plane_matrix:n,u_coord_matrix:l,u_is_text:+h,u_pitch_with_map:+o,u_is_along_line:a,u_is_variable_anchor:r,u_texsize:u,u_texture:0,u_translation:c,u_pitched_scale:d}},fo=(e,i,o,a,r,s,n,l,c,h,u,d,_,p)=>{const m=n.transform;return t.e(mo(e,i,o,a,r,s,n,l,c,h,u,d,p),{u_gamma_scale:a?Math.cos(m.pitch*Math.PI/180)*m.cameraToCenterDistance:1,u_device_pixel_ratio:n.pixelRatio,u_is_halo:_?1:0,u_is_plain:1})},go=(e,i,o,a,r,s,n,l,c,h,u,d,_)=>t.e(fo(e,i,o,a,r,s,n,l,c,h,!0,u,!0,_),{u_texsize_icon:d,u_texture_icon:1}),vo=(e,t)=>({u_opacity:e,u_color:t}),xo=(e,i,o,a,r)=>t.e(function(e,i,o,a){const r=o.imageManager.getPattern(e.from.toString()),s=o.imageManager.getPattern(e.to.toString()),{width:n,height:l}=o.imageManager.getPixelSize(),c=Math.pow(2,a.tileID.overscaledZ),h=a.tileSize*Math.pow(2,o.transform.tileZoom)/c,u=h*(a.tileID.canonical.x+a.tileID.wrap*c),d=h*a.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:r.tl,u_pattern_br_a:r.br,u_pattern_tl_b:s.tl,u_pattern_br_b:s.br,u_texsize:[n,l],u_mix:i.t,u_pattern_size_a:r.displaySize,u_pattern_size_b:s.displaySize,u_scale_a:i.fromScale,u_scale_b:i.toScale,u_tile_units_to_pixels:1/t.aK(a,1,o.transform.tileZoom),u_pixel_coord_upper:[u>>16,d>>16],u_pixel_coord_lower:[65535&u,65535&d]}}(o,r,i,a),{u_opacity:e}),bo=(e,t)=>{},yo={fillExtrusion:(e,i)=>({u_lightpos:new t.c2(e,i.u_lightpos),u_lightpos_globe:new t.c2(e,i.u_lightpos_globe),u_lightintensity:new t.bp(e,i.u_lightintensity),u_lightcolor:new t.c2(e,i.u_lightcolor),u_vertical_gradient:new t.bp(e,i.u_vertical_gradient),u_opacity:new t.bp(e,i.u_opacity),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillExtrusionPattern:(e,i)=>({u_lightpos:new t.c2(e,i.u_lightpos),u_lightpos_globe:new t.c2(e,i.u_lightpos_globe),u_lightintensity:new t.bp(e,i.u_lightintensity),u_lightcolor:new t.c2(e,i.u_lightcolor),u_vertical_gradient:new t.bp(e,i.u_vertical_gradient),u_height_factor:new t.bp(e,i.u_height_factor),u_opacity:new t.bp(e,i.u_opacity),u_fill_translate:new t.c3(e,i.u_fill_translate),u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bp(e,i.u_fade)}),fill:(e,i)=>({u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillPattern:(e,i)=>({u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bp(e,i.u_fade),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillOutline:(e,i)=>({u_world:new t.c3(e,i.u_world),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillOutlinePattern:(e,i)=>({u_world:new t.c3(e,i.u_world),u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bp(e,i.u_fade),u_fill_translate:new t.c3(e,i.u_fill_translate)}),circle:(e,i)=>({u_camera_to_center_distance:new t.bp(e,i.u_camera_to_center_distance),u_scale_with_map:new t.b_(e,i.u_scale_with_map),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_extrude_scale:new t.c3(e,i.u_extrude_scale),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_globe_extrude_scale:new t.bp(e,i.u_globe_extrude_scale),u_translate:new t.c3(e,i.u_translate)}),collisionBox:(e,i)=>({u_pixel_extrude_scale:new t.c3(e,i.u_pixel_extrude_scale)}),collisionCircle:(e,i)=>({u_viewport_size:new t.c3(e,i.u_viewport_size)}),debug:(e,i)=>({u_color:new t.b$(e,i.u_color),u_overlay:new t.b_(e,i.u_overlay),u_overlay_scale:new t.bp(e,i.u_overlay_scale)}),depth:bo,clippingMask:bo,heatmap:(e,i)=>({u_extrude_scale:new t.bp(e,i.u_extrude_scale),u_intensity:new t.bp(e,i.u_intensity),u_globe_extrude_scale:new t.bp(e,i.u_globe_extrude_scale)}),heatmapTexture:(e,i)=>({u_matrix:new t.c0(e,i.u_matrix),u_world:new t.c3(e,i.u_world),u_image:new t.b_(e,i.u_image),u_color_ramp:new t.b_(e,i.u_color_ramp),u_opacity:new t.bp(e,i.u_opacity)}),hillshade:(e,i)=>({u_image:new t.b_(e,i.u_image),u_latrange:new t.c3(e,i.u_latrange),u_exaggeration:new t.bp(e,i.u_exaggeration),u_altitudes:new t.c9(e,i.u_altitudes),u_azimuths:new t.c9(e,i.u_azimuths),u_accent:new t.b$(e,i.u_accent),u_method:new t.b_(e,i.u_method),u_shadows:new t.c8(e,i.u_shadows),u_highlights:new t.c8(e,i.u_highlights)}),hillshadePrepare:(e,i)=>({u_matrix:new t.c0(e,i.u_matrix),u_image:new t.b_(e,i.u_image),u_dimension:new t.c3(e,i.u_dimension),u_zoom:new t.bp(e,i.u_zoom),u_unpack:new t.c1(e,i.u_unpack)}),colorRelief:(e,i)=>({u_image:new t.b_(e,i.u_image),u_unpack:new t.c1(e,i.u_unpack),u_dimension:new t.c3(e,i.u_dimension),u_elevation_stops:new t.b_(e,i.u_elevation_stops),u_color_stops:new t.b_(e,i.u_color_stops),u_color_ramp_size:new t.b_(e,i.u_color_ramp_size),u_opacity:new t.bp(e,i.u_opacity)}),line:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bp(e,i.u_ratio),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels)}),lineGradient:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bp(e,i.u_ratio),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_image_height:new t.bp(e,i.u_image_height)}),linePattern:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_texsize:new t.c3(e,i.u_texsize),u_ratio:new t.bp(e,i.u_ratio),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_image:new t.b_(e,i.u_image),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bp(e,i.u_fade)}),lineSDF:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bp(e,i.u_ratio),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_mix:new t.bp(e,i.u_mix),u_tileratio:new t.bp(e,i.u_tileratio),u_crossfade_from:new t.bp(e,i.u_crossfade_from),u_crossfade_to:new t.bp(e,i.u_crossfade_to),u_lineatlas_width:new t.bp(e,i.u_lineatlas_width),u_lineatlas_height:new t.bp(e,i.u_lineatlas_height)}),lineGradientSDF:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bp(e,i.u_ratio),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_image_height:new t.bp(e,i.u_image_height),u_tileratio:new t.bp(e,i.u_tileratio),u_crossfade_from:new t.bp(e,i.u_crossfade_from),u_crossfade_to:new t.bp(e,i.u_crossfade_to),u_image_dash:new t.b_(e,i.u_image_dash),u_mix:new t.bp(e,i.u_mix),u_lineatlas_width:new t.bp(e,i.u_lineatlas_width),u_lineatlas_height:new t.bp(e,i.u_lineatlas_height)}),raster:(e,i)=>({u_tl_parent:new t.c3(e,i.u_tl_parent),u_scale_parent:new t.bp(e,i.u_scale_parent),u_buffer_scale:new t.bp(e,i.u_buffer_scale),u_fade_t:new t.bp(e,i.u_fade_t),u_opacity:new t.bp(e,i.u_opacity),u_image0:new t.b_(e,i.u_image0),u_image1:new t.b_(e,i.u_image1),u_brightness_low:new t.bp(e,i.u_brightness_low),u_brightness_high:new t.bp(e,i.u_brightness_high),u_saturation_factor:new t.bp(e,i.u_saturation_factor),u_contrast_factor:new t.bp(e,i.u_contrast_factor),u_spin_weights:new t.c2(e,i.u_spin_weights),u_coords_top:new t.c1(e,i.u_coords_top),u_coords_bottom:new t.c1(e,i.u_coords_bottom)}),symbolIcon:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bp(e,i.u_size_t),u_size:new t.bp(e,i.u_size),u_camera_to_center_distance:new t.bp(e,i.u_camera_to_center_distance),u_pitch:new t.bp(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bp(e,i.u_aspect_ratio),u_fade_change:new t.bp(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texture:new t.b_(e,i.u_texture),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bp(e,i.u_pitched_scale)}),symbolSDF:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bp(e,i.u_size_t),u_size:new t.bp(e,i.u_size),u_camera_to_center_distance:new t.bp(e,i.u_camera_to_center_distance),u_pitch:new t.bp(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bp(e,i.u_aspect_ratio),u_fade_change:new t.bp(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texture:new t.b_(e,i.u_texture),u_gamma_scale:new t.bp(e,i.u_gamma_scale),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_is_halo:new t.b_(e,i.u_is_halo),u_is_plain:new t.b_(e,i.u_is_plain),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bp(e,i.u_pitched_scale)}),symbolTextAndIcon:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bp(e,i.u_size_t),u_size:new t.bp(e,i.u_size),u_camera_to_center_distance:new t.bp(e,i.u_camera_to_center_distance),u_pitch:new t.bp(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bp(e,i.u_aspect_ratio),u_fade_change:new t.bp(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texsize_icon:new t.c3(e,i.u_texsize_icon),u_texture:new t.b_(e,i.u_texture),u_texture_icon:new t.b_(e,i.u_texture_icon),u_gamma_scale:new t.bp(e,i.u_gamma_scale),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_is_halo:new t.b_(e,i.u_is_halo),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bp(e,i.u_pitched_scale)}),background:(e,i)=>({u_opacity:new t.bp(e,i.u_opacity),u_color:new t.b$(e,i.u_color)}),backgroundPattern:(e,i)=>({u_opacity:new t.bp(e,i.u_opacity),u_image:new t.b_(e,i.u_image),u_pattern_tl_a:new t.c3(e,i.u_pattern_tl_a),u_pattern_br_a:new t.c3(e,i.u_pattern_br_a),u_pattern_tl_b:new t.c3(e,i.u_pattern_tl_b),u_pattern_br_b:new t.c3(e,i.u_pattern_br_b),u_texsize:new t.c3(e,i.u_texsize),u_mix:new t.bp(e,i.u_mix),u_pattern_size_a:new t.c3(e,i.u_pattern_size_a),u_pattern_size_b:new t.c3(e,i.u_pattern_size_b),u_scale_a:new t.bp(e,i.u_scale_a),u_scale_b:new t.bp(e,i.u_scale_b),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.bp(e,i.u_tile_units_to_pixels)}),terrain:(e,i)=>({u_texture:new t.b_(e,i.u_texture),u_ele_delta:new t.bp(e,i.u_ele_delta),u_fog_matrix:new t.c0(e,i.u_fog_matrix),u_fog_color:new t.b$(e,i.u_fog_color),u_fog_ground_blend:new t.bp(e,i.u_fog_ground_blend),u_fog_ground_blend_opacity:new t.bp(e,i.u_fog_ground_blend_opacity),u_horizon_color:new t.b$(e,i.u_horizon_color),u_horizon_fog_blend:new t.bp(e,i.u_horizon_fog_blend),u_is_globe_mode:new t.bp(e,i.u_is_globe_mode)}),terrainDepth:(e,i)=>({u_ele_delta:new t.bp(e,i.u_ele_delta)}),terrainCoords:(e,i)=>({u_texture:new t.b_(e,i.u_texture),u_terrain_coords_id:new t.bp(e,i.u_terrain_coords_id),u_ele_delta:new t.bp(e,i.u_ele_delta)}),projectionErrorMeasurement:(e,i)=>({u_input:new t.bp(e,i.u_input),u_output_expected:new t.bp(e,i.u_output_expected)}),atmosphere:(e,i)=>({u_sun_pos:new t.c2(e,i.u_sun_pos),u_atmosphere_blend:new t.bp(e,i.u_atmosphere_blend),u_globe_position:new t.c2(e,i.u_globe_position),u_globe_radius:new t.bp(e,i.u_globe_radius),u_inv_proj_matrix:new t.c0(e,i.u_inv_proj_matrix)}),sky:(e,i)=>({u_sky_color:new t.b$(e,i.u_sky_color),u_horizon_color:new t.b$(e,i.u_horizon_color),u_horizon:new t.c3(e,i.u_horizon),u_horizon_normal:new t.c3(e,i.u_horizon_normal),u_sky_horizon_blend:new t.bp(e,i.u_sky_horizon_blend),u_sky_blend:new t.bp(e,i.u_sky_blend)})};class wo{constructor(e,t,i){this.context=e;const o=e.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||t.freeBufferAfterUpload();}bind(){this.context.bindElementBuffer.set(this.buffer);}updateData(e){const t=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer);}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const To={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Po{constructor(e,t,i,o){this.length=t.length,this.attributes=i,this.itemSize=t.bytesPerElement,this.dynamicDraw=o,this.context=e;const a=e.gl;this.buffer=a.createBuffer(),e.bindVertexBuffer.set(this.buffer),a.bufferData(a.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?a.DYNAMIC_DRAW:a.STATIC_DRAW),this.dynamicDraw||t.freeBufferAfterUpload();}bind(){this.context.bindVertexBuffer.set(this.buffer);}updateData(e){if(e.length!==this.length)throw new Error(`Length of new data is ${e.length}, which doesn't match current length of ${this.length}`);const t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer);}enableAttributes(e,t){for(const i of this.attributes){const o=t.attributes[i.name];void 0!==o&&e.enableVertexAttribArray(o);}}setVertexAttribPointers(e,t,i){for(const o of this.attributes){const a=t.attributes[o.name];void 0!==a&&e.vertexAttribPointer(a,o.components,e[To[o.type]],!1,this.itemSize,o.offset+this.itemSize*(i||0));}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}class Co{constructor(e){this.gl=e.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;}get(){return this.current}set(e){}getDefault(){return this.default}setDefault(){this.set(this.default);}}class Mo extends Co{getDefault(){return t.bo.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.clearColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class Io extends Co{getDefault(){return 1}set(e){(e!==this.current||this.dirty)&&(this.gl.clearDepth(e),this.current=e,this.dirty=!1);}}class Eo extends Co{getDefault(){return 0}set(e){(e!==this.current||this.dirty)&&(this.gl.clearStencil(e),this.current=e,this.dirty=!1);}}class So extends Co{getDefault(){return [!0,!0,!0,!0]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.colorMask(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class zo extends Co{getDefault(){return !0}set(e){(e!==this.current||this.dirty)&&(this.gl.depthMask(e),this.current=e,this.dirty=!1);}}class Ro extends Co{getDefault(){return 255}set(e){(e!==this.current||this.dirty)&&(this.gl.stencilMask(e),this.current=e,this.dirty=!1);}}class Do extends Co{getDefault(){return {func:this.gl.ALWAYS,ref:0,mask:255}}set(e){const t=this.current;(e.func!==t.func||e.ref!==t.ref||e.mask!==t.mask||this.dirty)&&(this.gl.stencilFunc(e.func,e.ref,e.mask),this.current=e,this.dirty=!1);}}class Ao extends Co{getDefault(){const e=this.gl;return [e.KEEP,e.KEEP,e.KEEP]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||this.dirty)&&(this.gl.stencilOp(e[0],e[1],e[2]),this.current=e,this.dirty=!1);}}class Lo extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.STENCIL_TEST):t.disable(t.STENCIL_TEST),this.current=e,this.dirty=!1;}}class Fo extends Co{getDefault(){return [0,1]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.depthRange(e[0],e[1]),this.current=e,this.dirty=!1);}}class ko extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.DEPTH_TEST):t.disable(t.DEPTH_TEST),this.current=e,this.dirty=!1;}}class Bo extends Co{getDefault(){return this.gl.LESS}set(e){(e!==this.current||this.dirty)&&(this.gl.depthFunc(e),this.current=e,this.dirty=!1);}}class Oo extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.BLEND):t.disable(t.BLEND),this.current=e,this.dirty=!1;}}class jo extends Co{getDefault(){const e=this.gl;return [e.ONE,e.ZERO]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.blendFunc(e[0],e[1]),this.current=e,this.dirty=!1);}}class No extends Co{getDefault(){return t.bo.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.blendColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class Zo extends Co{getDefault(){return this.gl.FUNC_ADD}set(e){(e!==this.current||this.dirty)&&(this.gl.blendEquation(e),this.current=e,this.dirty=!1);}}class Uo extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.CULL_FACE):t.disable(t.CULL_FACE),this.current=e,this.dirty=!1;}}class Go extends Co{getDefault(){return this.gl.BACK}set(e){(e!==this.current||this.dirty)&&(this.gl.cullFace(e),this.current=e,this.dirty=!1);}}class Vo extends Co{getDefault(){return this.gl.CCW}set(e){(e!==this.current||this.dirty)&&(this.gl.frontFace(e),this.current=e,this.dirty=!1);}}class Wo extends Co{getDefault(){return null}set(e){(e!==this.current||this.dirty)&&(this.gl.useProgram(e),this.current=e,this.dirty=!1);}}class qo extends Co{getDefault(){return this.gl.TEXTURE0}set(e){(e!==this.current||this.dirty)&&(this.gl.activeTexture(e),this.current=e,this.dirty=!1);}}class $o extends Co{getDefault(){const e=this.gl;return [0,0,e.drawingBufferWidth,e.drawingBufferHeight]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.viewport(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class Ho extends Co{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,e),this.current=e,this.dirty=!1;}}class Xo extends Co{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindRenderbuffer(t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class Ko extends Co{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindTexture(t.TEXTURE_2D,e),this.current=e,this.dirty=!1;}}class Yo extends Co{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class Qo extends Co{getDefault(){return null}set(e){const t=this.gl;t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class Jo extends Co{getDefault(){return null}set(e){var t;if(e===this.current&&!this.dirty)return;const i=this.gl;si(i)?i.bindVertexArray(e):null===(t=i.getExtension("OES_vertex_array_object"))||void 0===t||t.bindVertexArrayOES(e),this.current=e,this.dirty=!1;}}class ea extends Co{getDefault(){return 4}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_ALIGNMENT,e),this.current=e,this.dirty=!1;}}class ta extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e),this.current=e,this.dirty=!1;}}class ia extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,e),this.current=e,this.dirty=!1;}}class oa extends Co{constructor(e,t){super(e),this.context=e,this.parent=t;}getDefault(){return null}}class aa extends oa{setDirty(){this.dirty=!0;}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),this.current=e,this.dirty=!1;}}class ra extends oa{set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class sa extends oa{set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}const na="Framebuffer is not complete";class la{constructor(e,t,i,o,a){this.context=e,this.width=t,this.height=i;const r=e.gl,s=this.framebuffer=r.createFramebuffer();if(this.colorAttachment=new aa(e,s),o)this.depthAttachment=a?new sa(e,s):new ra(e,s);else if(a)throw new Error("Stencil cannot be set without depth");if(r.checkFramebufferStatus(r.FRAMEBUFFER)!==r.FRAMEBUFFER_COMPLETE)throw new Error(na)}destroy(){const e=this.context.gl,t=this.colorAttachment.get();if(t&&e.deleteTexture(t),this.depthAttachment){const t=this.depthAttachment.get();t&&e.deleteRenderbuffer(t);}e.deleteFramebuffer(this.framebuffer);}}class ca{constructor(e){var t,i;if(this.gl=e,this.clearColor=new Mo(this),this.clearDepth=new Io(this),this.clearStencil=new Eo(this),this.colorMask=new So(this),this.depthMask=new zo(this),this.stencilMask=new Ro(this),this.stencilFunc=new Do(this),this.stencilOp=new Ao(this),this.stencilTest=new Lo(this),this.depthRange=new Fo(this),this.depthTest=new ko(this),this.depthFunc=new Bo(this),this.blend=new Oo(this),this.blendFunc=new jo(this),this.blendColor=new No(this),this.blendEquation=new Zo(this),this.cullFace=new Uo(this),this.cullFaceSide=new Go(this),this.frontFace=new Vo(this),this.program=new Wo(this),this.activeTexture=new qo(this),this.viewport=new $o(this),this.bindFramebuffer=new Ho(this),this.bindRenderbuffer=new Xo(this),this.bindTexture=new Ko(this),this.bindVertexBuffer=new Yo(this),this.bindElementBuffer=new Qo(this),this.bindVertexArray=new Jo(this),this.pixelStoreUnpack=new ea(this),this.pixelStoreUnpackPremultiplyAlpha=new ta(this),this.pixelStoreUnpackFlipY=new ia(this),this.extTextureFilterAnisotropic=e.getExtension("EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE),si(e)){this.HALF_FLOAT=e.HALF_FLOAT;const o=e.getExtension("EXT_color_buffer_half_float");this.RGBA16F=null!==(t=e.RGBA16F)&&void 0!==t?t:null==o?void 0:o.RGBA16F_EXT,this.RGB16F=null!==(i=e.RGB16F)&&void 0!==i?i:null==o?void 0:o.RGB16F_EXT,e.getExtension("EXT_color_buffer_float");}else {e.getExtension("EXT_color_buffer_half_float"),e.getExtension("OES_texture_half_float_linear");const t=e.getExtension("OES_texture_half_float");this.HALF_FLOAT=null==t?void 0:t.HALF_FLOAT_OES;}}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.bindVertexArray.dirty=!0,this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;}createIndexBuffer(e,t){return new wo(this,e,t)}createVertexBuffer(e,t,i){return new Po(this,e,t,i)}createRenderbuffer(e,t,i){const o=this.gl,a=o.createRenderbuffer();return this.bindRenderbuffer.set(a),o.renderbufferStorage(o.RENDERBUFFER,e,t,i),this.bindRenderbuffer.set(null),a}createFramebuffer(e,t,i,o){return new la(this,e,t,i,o)}clear({color:e,depth:t,stencil:i}){const o=this.gl;let a=0;e&&(a|=o.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==t&&(a|=o.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(t),this.depthMask.set(!0)),void 0!==i&&(a|=o.STENCIL_BUFFER_BIT,this.clearStencil.set(i),this.stencilMask.set(255)),o.clear(a);}setCullFace(e){!1===e.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(e.mode),this.frontFace.set(e.frontFace));}setDepthMode(e){e.func!==this.gl.ALWAYS||e.mask?(this.depthTest.set(!0),this.depthFunc.set(e.func),this.depthMask.set(e.mask),this.depthRange.set(e.range)):this.depthTest.set(!1);}setStencilMode(e){e.test.func!==this.gl.ALWAYS||e.mask?(this.stencilTest.set(!0),this.stencilMask.set(e.mask),this.stencilOp.set([e.fail,e.depthFail,e.pass]),this.stencilFunc.set({func:e.test.func,ref:e.ref,mask:e.test.mask})):this.stencilTest.set(!1);}setColorMode(e){t.bQ(e.blendFunction,ei.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask);}createVertexArray(){var e;return si(this.gl)?this.gl.createVertexArray():null===(e=this.gl.getExtension("OES_vertex_array_object"))||void 0===e?void 0:e.createVertexArrayOES()}deleteVertexArray(e){var t;si(this.gl)?this.gl.deleteVertexArray(e):null===(t=this.gl.getExtension("OES_vertex_array_object"))||void 0===t||t.deleteVertexArrayOES(e);}unbindVAO(){this.bindVertexArray.set(null);}}let ha;function ua(e,i,o,a,r){var s,n;const l=e.context,c=e.transform,h=l.gl,u=e.useProgram("collisionBox"),d=[];let _=0,p=0;for(const t of a){const a=i.getTile(t).getBucket(o);if(!a)continue;const n=r?a.textCollisionBox:a.iconCollisionBox,m=a.collisionCircleArray;m.length>0&&(d.push({circleArray:m,circleOffset:p,coord:t}),_+=m.length/4,p=_),n&&u.draw(l,h.LINES,oi.disabled,ri.disabled,e.colorModeForRenderPass(),ii.disabled,Ki(e.transform),null===(s=e.style.map.terrain)||void 0===s?void 0:s.getTerrainData(t),c.getProjectionData({overscaledTileID:t,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),o.id,n.layoutVertexBuffer,n.indexBuffer,n.segments,null,e.transform.zoom,null,null,n.collisionVertexBuffer);}if(!r||!d.length)return;const m=e.useProgram("collisionCircle"),f=new t.ca;f.resize(4*_),f._trim();let g=0;for(const e of d)for(let t=0;t=0&&(f[g.associatedIconIndex]={shiftedAnchor:E,angle:S});}else st(g.numGlyphs,p);}if(c){m.clear();const i=e.icon.placedSymbolArray;for(let e=0;ee.style.map.terrain.getElevation(l,t,i):null,s="map"===o.layout.get("text-rotation-alignment");$e(c,e,r,j,i,b,h,s,l.toUnwrapped(),v.width,v.height,Z,a);}const W=r&&M||V,q=y||W?da:b?j:e.transform.clipSpaceToPixelsMatrix,$=m&&0!==o.paint.get(r?"text-halo-width":"icon-halo-width").constantOr(1);let H;H=m?c.iconsInText?go(f.kind,z,w,b,y,W,e,q,N,Z,D,k,E):fo(f.kind,z,w,b,y,W,e,q,N,Z,r,D,$,E):mo(f.kind,z,w,b,y,W,e,q,N,Z,r,D,E);const X={program:S,buffers:u,uniformValues:H,projectionData:U,atlasTexture:A,atlasTextureIcon:B,atlasInterpolation:L,atlasInterpolationIcon:F,isSDF:m,hasHalo:$};if(T&&c.canOverlap){P=!0;const e=u.segments.get();for(const i of e)I.push({segments:new t.aV([i]),sortKey:i.sortKey,state:X,terrainData:R});}else I.push({segments:u.segments,sortKey:0,state:X,terrainData:R});}P&&I.sort(((e,t)=>e.sortKey-t.sortKey));const S=null!==(m=o.paint.get(r?"text-halo-width":"icon-halo-width").constantOr(null))&&void 0!==m?m:1/0,z=o.layout.get("text-letter-spacing").constantOr(0)*t.aJ<0||S>1;for(const t of I){const i=t.state;f.activeTexture.set(g.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,g.CLAMP_TO_EDGE),i.atlasTextureIcon&&(f.activeTexture.set(g.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,g.CLAMP_TO_EDGE));const a=i.isSDF&&i.hasHalo;if(a){const a=i.uniformValues;a.u_is_halo=1,z&&(a.u_is_plain=0,va(i.buffers,t.segments,o,e,i.program,C,u,d,a,i.projectionData,t.terrainData),a.u_is_halo=0,a.u_is_plain=1);}va(i.buffers,t.segments,o,e,i.program,C,u,d,i.uniformValues,i.projectionData,t.terrainData),a&&!z&&(i.uniformValues.u_is_halo=0);}}function va(e,t,i,o,a,r,s,n,l,c,h){const u=o.context;a.draw(u,u.gl.TRIANGLES,r,s,n,ii.backCCW,l,h,c,i.id,e.layoutVertexBuffer,e.indexBuffer,t,i.paint,o.transform.zoom,e.programConfigurations.get(i.id),e.dynamicLayoutVertexBuffer,e.opacityVertexBuffer);}function xa(e,i,o,a,r){const s=e.context,n=s.gl,l=ri.disabled,c=new ei([n.ONE,n.ONE],t.bo.transparent,[!0,!0,!0,!0]),h=i.getBucket(o);if(!h)return;const u=a.key;let d=o.heatmapFbos.get(u);d||(d=ya(s,i.tileSize,i.tileSize),o.heatmapFbos.set(u,d)),s.bindFramebuffer.set(d.framebuffer),s.viewport.set([0,0,i.tileSize,i.tileSize]),s.clear({color:t.bo.transparent});const _=h.programConfigurations.get(o.id),p=e.useProgram("heatmap",_,!r),m=e.transform.getProjectionData({overscaledTileID:i.tileID,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),f=e.style.map.terrain.getTerrainData(a);p.draw(s,n.TRIANGLES,oi.disabled,l,c,ii.disabled,Ji(i,e.transform.zoom,o.paint.get("heatmap-intensity"),1),f,m,o.id,h.layoutVertexBuffer,h.indexBuffer,h.segments,o.paint,e.transform.zoom,_);}function ba(e,t,i,o,a){const r=e.context,s=r.gl,n=e.transform;r.setColorMode(e.colorModeForRenderPass());const l=wa(r,t),c=i.key,h=t.heatmapFbos.get(c);if(!h)return;r.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,h.colorAttachment.get()),r.activeTexture.set(s.TEXTURE1),l.bind(s.LINEAR,s.CLAMP_TO_EDGE);const u=n.getProjectionData({overscaledTileID:i,applyTerrainMatrix:a,applyGlobeMatrix:!o});e.useProgram("heatmapTexture").draw(r,s.TRIANGLES,oi.disabled,ri.disabled,e.colorModeForRenderPass(),ii.disabled,eo(e,t,0,1),null,u,t.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments,t.paint,n.zoom),h.destroy(),t.heatmapFbos.delete(c);}function ya(e,t,i){var o,a;const r=e.gl,s=r.createTexture();r.bindTexture(r.TEXTURE_2D,s),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR);const n=null!==(o=e.HALF_FLOAT)&&void 0!==o?o:r.UNSIGNED_BYTE,l=null!==(a=e.RGBA16F)&&void 0!==a?a:r.RGBA;r.texImage2D(r.TEXTURE_2D,0,l,t,i,0,r.RGBA,n,null);const c=e.createFramebuffer(t,i,!1,!1);return c.colorAttachment.set(s),c}function wa(e,i){return i.colorRampTexture||(i.colorRampTexture=new t.T(e,i.colorRamp,e.gl.RGBA)),i.colorRampTexture}function Ta(e,i,o,a,r,s,n,l){let c=256;if(r.stepInterpolant){const a=i.getSource().maxzoom,r=n.canonical.z===a?Math.ceil(1<e.options.anisotropicFilterPitch&&_.texParameterf(_.TEXTURE_2D,d.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,d.extTextureFilterAnisotropicMax);const S=null===(h=e.style.map.terrain)||void 0===h?void 0:h.getTerrainData(T),z=m.getProjectionData({overscaledTileID:T,aligned:v,applyGlobeMatrix:!c,applyTerrainMatrix:!0}),R=_o(I,M,E.fadeMix,i,n),D=f.getMeshFromTileID(d,T.canonical,r,s,"raster");p.draw(d,_.TRIANGLES,o,a?a[T.overscaledZ]:ri.disabled,g,l?ii.frontCCW:ii.backCCW,R,S,z,i.id,D.vertexBuffer,D.indexBuffer,D.segments);}}function ka(e,i,o,a){const r={parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:{tileOpacity:1,parentTileOpacity:1,fadeMix:{opacity:1,mix:0}}};if(0===o||a)return r;if(e.fadingParentID){const a=i.getLoadedTile(e.fadingParentID);if(!a)return r;const s=Math.pow(2,a.tileID.overscaledZ-e.tileID.overscaledZ),n=[e.tileID.canonical.x*s%1,e.tileID.canonical.y*s%1],l=function(e,i,o){const a=c(),r=(a-i.timeAdded)/o,s=e.fadingDirection===ue.Incoming,n=t.al((a-e.timeAdded)/o,0,1),l=t.al(1-r,0,1),h=s?n:l;return {tileOpacity:h,parentTileOpacity:s?l:n,fadeMix:{opacity:1,mix:1-h}}}(e,a,o);return {parentTile:a,parentScaleBy:s,parentTopLeft:n,fadeValues:l}}if(e.selfFading){const i=function(e,i){const o=(c()-e.timeAdded)/i,a=t.al(o,0,1);return {tileOpacity:a,fadeMix:{opacity:a,mix:0}}}(e,o);return {parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:i}}return r}const Ba=new t.bo(1,0,0,1),Oa=new t.bo(0,1,0,1),ja=new t.bo(0,0,1,1),Na=new t.bo(1,0,1,1),Za=new t.bo(0,1,1,1);function Ua(e,t,i,o){Va(e,0,t+i/2,e.transform.width,i,o);}function Ga(e,t,i,o){Va(e,t-i/2,0,i,e.transform.height,o);}function Va(e,t,i,o,a,r){const s=e.context,n=s.gl;n.enable(n.SCISSOR_TEST),n.scissor(t*e.pixelRatio,i*e.pixelRatio,o*e.pixelRatio,a*e.pixelRatio),s.clear({color:r}),n.disable(n.SCISSOR_TEST);}function Wa(e,i,o){var a;const r=e.context,s=r.gl,n=e.useProgram("debug"),l=oi.disabled,c=ri.disabled,h=e.colorModeForRenderPass(),u="$debug",d=null===(a=e.style.map.terrain)||void 0===a?void 0:a.getTerrainData(o);r.activeTexture.set(s.TEXTURE0);const _=i.getTileByID(o.key).latestRawTileData,p=Math.floor(((null==_?void 0:_.byteLength)||0)/1024),m=i.getTile(o).tileSize,f=512/Math.min(m,512)*(o.overscaledZ/e.transform.zoom)*.5;let g=o.canonical.toString();o.overscaledZ!==o.canonical.z&&(g+=` => ${o.overscaledZ}`),function(e,t){e.initDebugOverlayCanvas();const i=e.debugOverlayCanvas,o=e.context.gl,a=e.debugOverlayCanvas.getContext("2d");a.clearRect(0,0,i.width,i.height),a.shadowColor="white",a.shadowBlur=2,a.lineWidth=1.5,a.strokeStyle="white",a.textBaseline="top",a.font="bold 36px Open Sans, sans-serif",a.fillText(t,5,5),a.strokeText(t,5,5),e.debugOverlayTexture.update(i),e.debugOverlayTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE);}(e,`${g} ${p}kB`);const v=e.transform.getProjectionData({overscaledTileID:o,applyGlobeMatrix:!0,applyTerrainMatrix:!0});n.draw(r,s.TRIANGLES,l,c,ei.alphaBlended,ii.disabled,Qi(t.bo.transparent,f),null,v,u,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments),n.draw(r,s.LINE_STRIP,l,c,h,ii.disabled,Qi(t.bo.red),d,v,u,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);}function qa(e,t,i,o){const{isRenderingGlobe:a}=o,r=e.context,s=r.gl,n=e.transform,l=e.colorModeForRenderPass(),c=e.getDepthModeFor3D(),h=e.useProgram("terrain");r.bindFramebuffer.set(null),r.viewport.set([0,0,e.width,e.height]);for(const o of i){const i=t.getTerrainMesh(o.tileID),u=e.renderToTexture.getTexture(o),d=t.getTerrainData(o.tileID);r.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,u.texture);const _=t.getMeshFrameDelta(n.zoom),p=n.calculateFogMatrix(o.tileID.toUnwrapped()),m=ji(_,p,e.style.sky,n.pitch,a),f=n.getProjectionData({overscaledTileID:o.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});h.draw(r,s.TRIANGLES,c,ri.disabled,l,ii.backCCW,m,d,f,"terrain",i.vertexBuffer,i.indexBuffer,i.segments);}}function $a(e,i){if(!i.mesh){const o=new t.aU;o.emplaceBack(-1,-1),o.emplaceBack(1,-1),o.emplaceBack(1,1),o.emplaceBack(-1,1);const a=new t.aW;a.emplaceBack(0,1,2),a.emplaceBack(0,2,3),i.mesh=new Bt(e.createVertexBuffer(o,Ot.members),e.createIndexBuffer(a),t.aV.simpleSegment(0,0,o.length,a.length));}return i.mesh}const Ha={symbol:function(e,i,o,a,r,s){if("translucent"!==e.renderPass)return;const{isRenderingToTexture:n}=s,l=ri.disabled,c=e.colorModeForRenderPass();(o._unevaluatedLayout.hasValue("text-variable-anchor")||o._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(e,i,o,a,r,s,n,l,c){var h;const u=i.transform,d=i.style.map.terrain,_="map"===r,p="map"===s;for(const r of e){const e=a.getTile(r),s=e.getBucket(o);if(!(null===(h=null==s?void 0:s.text)||void 0===h?void 0:h.segments.get().length))continue;const m=t.aw(s.textSizeData,u.zoom),f=t.aK(e,1,i.transform.zoom),g=Ze(_,i.transform,f),v="none"!==o.layout.get("icon-text-fit")&&s.hasIconData();if(m){const i=Math.pow(2,u.zoom-e.tileID.overscaledZ),o=d?(e,t)=>d.getElevation(r,e,t):null;ma(s,_,p,c,u,g,i,m,v,t.aL(u,e,n,l),r.toUnwrapped(),o);}}}(a,e,o,i,o.layout.get("text-rotation-alignment"),o.layout.get("text-pitch-alignment"),o.paint.get("text-translate"),o.paint.get("text-translate-anchor"),r),0!==o.paint.get("icon-opacity").constantOr(1)&&ga(e,i,o,a,!1,o.paint.get("icon-translate"),o.paint.get("icon-translate-anchor"),o.layout.get("icon-rotation-alignment"),o.layout.get("icon-pitch-alignment"),o.layout.get("icon-keep-upright"),l,c,n),0!==o.paint.get("text-opacity").constantOr(1)&&ga(e,i,o,a,!0,o.paint.get("text-translate"),o.paint.get("text-translate-anchor"),o.layout.get("text-rotation-alignment"),o.layout.get("text-pitch-alignment"),o.layout.get("text-keep-upright"),l,c,n),i.map.showCollisionBoxes&&(ua(e,i,o,a,!0),ua(e,i,o,a,!1));},circle:function(e,i,o,a,r){var s;if("translucent"!==e.renderPass)return;const{isRenderingToTexture:n}=r,l=o.paint.get("circle-opacity"),c=o.paint.get("circle-stroke-width"),h=o.paint.get("circle-stroke-opacity"),u=!o.layout.get("circle-sort-key").isConstant();if(0===l.constantOr(1)&&(0===c.constantOr(1)||0===h.constantOr(1)))return;const d=e.context,_=d.gl,p=e.transform,m=e.getDepthModeForSublayer(0,oi.ReadOnly),f=ri.disabled,g=e.colorModeForRenderPass(),v=[],x=p.getCircleRadiusCorrection();for(const r of a){const a=i.getTile(r),l=a.getBucket(o);if(!l)continue;const c=o.paint.get("circle-translate"),h=o.paint.get("circle-translate-anchor"),d=t.aL(p,a,c,h),_=l.programConfigurations.get(o.id),m=e.useProgram("circle",_),f=l.layoutVertexBuffer,g=l.indexBuffer,b=null===(s=e.style.map.terrain)||void 0===s?void 0:s.getTerrainData(r),y={programConfiguration:_,program:m,layoutVertexBuffer:f,indexBuffer:g,uniformValues:Xi(e,a,o,d,x),terrainData:b,projectionData:p.getProjectionData({overscaledTileID:r,applyGlobeMatrix:!n,applyTerrainMatrix:!0})};if(u){const e=l.segments.get();for(const i of e)v.push({segments:new t.aV([i]),sortKey:i.sortKey,state:y});}else v.push({segments:l.segments,sortKey:0,state:y});}u&&v.sort(((e,t)=>e.sortKey-t.sortKey));for(const t of v){const{programConfiguration:i,program:a,layoutVertexBuffer:r,indexBuffer:s,uniformValues:n,terrainData:l,projectionData:c}=t.state;a.draw(d,_.TRIANGLES,m,f,g,ii.backCCW,n,l,c,o.id,r,s,t.segments,o.paint,e.transform.zoom,i);}},heatmap:function(e,i,o,a,r){if(0===o.paint.get("heatmap-opacity"))return;const s=e.context,{isRenderingToTexture:n,isRenderingGlobe:l}=r;if(e.style.map.terrain){for(const t of a){const a=i.getTile(t);i.hasRenderableParent(t)||("offscreen"===e.renderPass?xa(e,a,o,t,l):"translucent"===e.renderPass&&ba(e,o,t,n,l));}s.viewport.set([0,0,e.width,e.height]);}else "offscreen"===e.renderPass?function(e,i,o,a){const r=e.context,s=r.gl,n=e.transform,l=ri.disabled,c=new ei([s.ONE,s.ONE],t.bo.transparent,[!0,!0,!0,!0]);((function(e,i,o){const a=e.gl;e.activeTexture.set(a.TEXTURE1),e.viewport.set([0,0,i.width/4,i.height/4]);let r=o.heatmapFbos.get(t.cd);r?(a.bindTexture(a.TEXTURE_2D,r.colorAttachment.get()),e.bindFramebuffer.set(r.framebuffer)):(r=ya(e,i.width/4,i.height/4),o.heatmapFbos.set(t.cd,r));}))(r,e,o),r.clear({color:t.bo.transparent});for(const t of a){if(i.hasRenderableParent(t))continue;const a=i.getTile(t),h=a.getBucket(o);if(!h)continue;const u=h.programConfigurations.get(o.id),d=e.useProgram("heatmap",u),_=n.getProjectionData({overscaledTileID:t,applyGlobeMatrix:!0,applyTerrainMatrix:!1}),p=n.getCircleRadiusCorrection();d.draw(r,s.TRIANGLES,oi.disabled,l,c,ii.backCCW,Ji(a,n.zoom,o.paint.get("heatmap-intensity"),p),null,_,o.id,h.layoutVertexBuffer,h.indexBuffer,h.segments,o.paint,n.zoom,u);}r.viewport.set([0,0,e.width,e.height]);}(e,i,o,a):"translucent"===e.renderPass&&function(e,i){const o=e.context,a=o.gl;o.setColorMode(e.colorModeForRenderPass());const r=i.heatmapFbos.get(t.cd);r&&(o.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,r.colorAttachment.get()),o.activeTexture.set(a.TEXTURE1),wa(o,i).bind(a.LINEAR,a.CLAMP_TO_EDGE),e.useProgram("heatmapTexture").draw(o,a.TRIANGLES,oi.disabled,ri.disabled,e.colorModeForRenderPass(),ii.disabled,eo(e,i,0,1),null,null,i.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,i.paint,e.transform.zoom));}(e,o);},line:function(e,t,i,o,a){var r;if("translucent"!==e.renderPass)return;const{isRenderingToTexture:s}=a,n=i.paint.get("line-opacity"),l=i.paint.get("line-width");if(0===n.constantOr(1)||0===l.constantOr(1))return;const c=e.getDepthModeForSublayer(0,oi.ReadOnly),h=e.colorModeForRenderPass(),u=i.paint.get("line-dasharray"),d=u.constantOr(1),_=i.paint.get("line-pattern"),p=_.constantOr(1),m=i.paint.get("line-gradient"),f=i.getCrossfadeParameters();let g;g=p?"linePattern":d&&m?"lineGradientSDF":d?"lineSDF":m?"lineGradient":"line";const v=e.context,x=v.gl,b=e.transform;let y=!0;for(const a of o){const o=t.getTile(a);if(p&&!o.patternsLoaded())continue;const n=o.getBucket(i);if(!n)continue;const l=n.programConfigurations.get(i.id),w=e.context.program.get(),T=e.useProgram(g,l),P=y||T.program!==w,C=null===(r=e.style.map.terrain)||void 0===r?void 0:r.getTerrainData(a),M=_.constantOr(null),I=null==u?void 0:u.constantOr(null);if(M&&o.imageAtlas){const e=o.imageAtlas,t=e.patternPositions[M.to.toString()],i=e.patternPositions[M.from.toString()];t&&i&&l.setConstantPatternPositions(t,i);}else if(I){const t="round"===i.layout.get("line-cap").constantOr(null),o=e.lineAtlas.getDash(I.to,t),a=e.lineAtlas.getDash(I.from,t);l.setConstantDashPositions(o,a);}const E=b.getProjectionData({overscaledTileID:a,applyGlobeMatrix:!s,applyTerrainMatrix:!0}),S=b.getPixelScale();let z;p?(z=no(e,o,i,S,f),Pa(v,x,o,l,f)):d&&m?(z=co(e,o,i,S,f,n.lineClipsArray.length),Ia(e,t,v,x,i,n,a,l,f)):d?(z=lo(e,o,i,S,f),Ca(e,v,x,l,P,f)):m?(z=so(e,o,i,S,n.lineClipsArray.length),Ma(e,t,v,x,i,n,a)):z=ro(e,o,i,S);const R=e.stencilModeForClipping(a);T.draw(v,x.TRIANGLES,c,R,h,ii.disabled,z,C,E,i.id,n.layoutVertexBuffer,n.indexBuffer,n.segments,i.paint,e.transform.zoom,l,n.layoutVertexBuffer2),y=!1;}},fill:function(e,i,o,a,r){const s=o.paint.get("fill-color"),n=o.paint.get("fill-opacity");if(0===n.constantOr(1))return;const{isRenderingToTexture:l}=r,c=e.colorModeForRenderPass(),h=o.paint.get("fill-pattern"),u=e.opaquePassEnabledForLayer()&&!h.constantOr(1)&&1===s.constantOr(t.bo.transparent).a&&1===n.constantOr(0)?"opaque":"translucent";if(e.renderPass===u){const t=e.getDepthModeForSublayer(1,"opaque"===e.renderPass?oi.ReadWrite:oi.ReadOnly);Sa(e,i,o,a,t,c,!1,l);}if("translucent"===e.renderPass&&o.paint.get("fill-antialias")){const t=e.getDepthModeForSublayer(o.getPaintProperty("fill-outline-color")?2:0,oi.ReadOnly);Sa(e,i,o,a,t,c,!0,l);}},fillExtrusion:function(e,t,i,o,a){const r=i.paint.get("fill-extrusion-opacity");if(0===r)return;const{isRenderingToTexture:s}=a;if("translucent"===e.renderPass){const a=new oi(e.context.gl.LEQUAL,oi.ReadWrite,e.depthRangeFor3D);if(1!==r||i.paint.get("fill-extrusion-pattern").constantOr(1))za(e,t,i,o,a,ri.disabled,ei.disabled,s),za(e,t,i,o,a,e.stencilModeFor3D(),e.colorModeForRenderPass(),s);else {const r=e.colorModeForRenderPass();za(e,t,i,o,a,ri.disabled,r,s);}}},hillshade:function(e,i,o,a,r){if("offscreen"!==e.renderPass&&"translucent"!==e.renderPass)return;const{isRenderingToTexture:s}=r,n=e.context,l=e.style.projection.useSubdivision,c=e.getDepthModeForSublayer(0,oi.ReadOnly),h=e.colorModeForRenderPass();if("offscreen"===e.renderPass)!function(e,i,o,a,r,s,n){const l=e.context,c=l.gl,h="nearest"===a.paint.get("resampling")?c.NEAREST:c.LINEAR;for(const u of o){const o=i.getTile(u),d=o.dem;if(!(null==d?void 0:d.data))continue;if(!o.needsHillshadePrepare)continue;const _=d.dim,p=d.stride,m=d.getPixels();if(l.activeTexture.set(c.TEXTURE1),l.pixelStoreUnpackPremultiplyAlpha.set(!1),o.demTexture||(o.demTexture=e.getTileTexture(p)),o.demTexture){const e=o.demTexture;e.update(m,{premultiply:!1}),e.bind(c.NEAREST,c.CLAMP_TO_EDGE);}else o.demTexture=new t.T(l,m,c.RGBA,{premultiply:!1}),o.demTexture.bind(c.NEAREST,c.CLAMP_TO_EDGE);l.activeTexture.set(c.TEXTURE0);let f=o.fbo;if(!f){const e=new t.T(l,{width:_,height:_,data:null},c.RGBA);e.bind(h,c.CLAMP_TO_EDGE),f=o.fbo=l.createFramebuffer(_,_,!0,!1),f.colorAttachment.set(e.texture);}l.bindFramebuffer.set(f.framebuffer),l.viewport.set([0,0,_,_]),e.useProgram("hillshadePrepare").draw(l,c.TRIANGLES,r,s,n,ii.disabled,io(o.tileID,d),null,null,a.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),o.needsHillshadePrepare=!1;}}(e,i,a,o,c,ri.disabled,h),n.viewport.set([0,0,e.width,e.height]);else if("translucent"===e.renderPass)if(l){const[t,r,n]=e.stencilConfigForOverlapTwoPass(a);Ra(e,i,o,n,t,c,h,!1,s),Ra(e,i,o,n,r,c,h,!0,s);}else {const[t,r]=e.getStencilConfigForOverlapAndUpdateStencilID(a);Ra(e,i,o,r,t,c,h,!1,s);}},colorRelief:function(e,t,i,o,a){if("translucent"!==e.renderPass)return;if(!o.length)return;const{isRenderingToTexture:r}=a,s=e.style.projection.useSubdivision,n=e.getDepthModeForSublayer(0,oi.ReadOnly),l=e.colorModeForRenderPass();if(s){const[a,s,c]=e.stencilConfigForOverlapTwoPass(o);Aa(e,t,i,c,a,n,l,!1,r),Aa(e,t,i,c,s,n,l,!0,r);}else {const[a,s]=e.getStencilConfigForOverlapAndUpdateStencilID(o);Aa(e,t,i,s,a,n,l,!1,r);}},raster:function(e,t,i,o,a){if("translucent"!==e.renderPass)return;if(0===i.paint.get("raster-opacity"))return;if(!o.length)return;const{isRenderingToTexture:r}=a,s=t.getSource(),n=e.style.projection.useSubdivision;if(s instanceof te)Fa(e,t,i,o,null,!1,!1,s.tileCoords,s.flippedWindingOrder,r);else if(n){const[a,s,n]=e.stencilConfigForOverlapTwoPass(o);Fa(e,t,i,n,a,!1,!0,La,!1,r),Fa(e,t,i,n,s,!0,!0,La,!1,r);}else {const[a,s]=e.getStencilConfigForOverlapAndUpdateStencilID(o);Fa(e,t,i,s,a,!1,!0,La,!1,r);}},background:function(e,t,i,o,a){var r;const s=i.paint.get("background-color"),n=i.paint.get("background-opacity");if(0===n)return;const{isRenderingToTexture:l}=a,c=e.context,h=c.gl,u=e.style.projection,d=e.transform,_=d.tileSize,p=i.paint.get("background-pattern");if(e.isPatternMissing(p))return;const m=!p&&1===s.a&&1===n&&e.opaquePassEnabledForLayer()?"opaque":"translucent";if(e.renderPass!==m)return;const f=ri.disabled,g=e.getDepthModeForSublayer(0,"opaque"===m?oi.ReadWrite:oi.ReadOnly),v=e.colorModeForRenderPass(),x=e.useProgram(p?"backgroundPattern":"background"),b=o||Me(d,{tileSize:_,terrain:e.style.map.terrain});p&&(c.activeTexture.set(h.TEXTURE0),e.imageManager.bind(e.context));const y=i.getCrossfadeParameters();for(const t of b){const o=d.getProjectionData({overscaledTileID:t,applyGlobeMatrix:!l,applyTerrainMatrix:!0}),a=p?xo(n,e,p,{tileID:t,tileSize:_},y):vo(n,s),m=null===(r=e.style.map.terrain)||void 0===r?void 0:r.getTerrainData(t),b=u.getMeshFromTileID(c,t.canonical,!1,!0,"raster");x.draw(c,h.TRIANGLES,g,f,v,ii.backCCW,a,m,o,i.id,b.vertexBuffer,b.indexBuffer,b.segments);}},sky:function(e,t){const i=e.context,o=i.gl,a=((e,t,i)=>{const o=Math.cos(t.rollInRadians),a=Math.sin(t.rollInRadians),r=ge(t),s=t.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}).projectionTransition;return {u_sky_color:e.properties.get("sky-color"),u_horizon_color:e.properties.get("horizon-color"),u_horizon:[(t.width/2-r*a)*i,(t.height/2+r*o)*i],u_horizon_normal:[-a,o],u_sky_horizon_blend:e.properties.get("sky-horizon-blend")*t.height/2*i,u_sky_blend:s}})(t,e.style.map.transform,e.pixelRatio),r=new oi(o.LEQUAL,oi.ReadWrite,[0,1]),s=ri.disabled,n=e.colorModeForRenderPass(),l=e.useProgram("sky"),c=$a(i,t);l.draw(i,o.TRIANGLES,r,s,n,ii.disabled,a,null,void 0,"sky",c.vertexBuffer,c.indexBuffer,c.segments);},atmosphere:function(e,i,o){const a=e.context,r=a.gl,s=e.useProgram("atmosphere"),n=new oi(r.LEQUAL,oi.ReadOnly,[0,1]),l=e.transform,c=function(e,i){const o=e.properties.get("position"),a=[-o.x,-o.y,-o.z],r=t.ap(new Float64Array(16));return "map"===e.properties.get("anchor")&&(t.be(r,r,i.rollInRadians),t.bf(r,r,-i.pitchInRadians),t.be(r,r,i.bearingInRadians),t.bf(r,r,i.center.lat*Math.PI/180),t.bI(r,r,-i.center.lng*Math.PI/180)),t.cg(a,a,r),a}(o,e.transform),h=l.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),u=i.properties.get("atmosphere-blend")*h.projectionTransition;if(0===u)return;const d=gi(l.worldSize,l.center.lat),_=l.inverseProjectionMatrix,p=new Float64Array(4);p[3]=1,t.aE(p,p,l.modelViewProjectionMatrix),p[0]/=p[3],p[1]/=p[3],p[2]/=p[3],p[3]=1,t.aE(p,p,_),p[0]/=p[3],p[1]/=p[3],p[2]/=p[3],p[3]=1;const m=((e,t,i,o,a)=>({u_sun_pos:e,u_atmosphere_blend:t,u_globe_position:i,u_globe_radius:o,u_inv_proj_matrix:a}))(c,u,[p[0],p[1],p[2]],d,_),f=$a(a,i);s.draw(a,r.TRIANGLES,n,ri.disabled,ei.alphaBlended,ii.disabled,m,null,null,"atmosphere",f.vertexBuffer,f.indexBuffer,f.segments);},custom:function(e,t,i,o){const{isRenderingGlobe:a}=o,r=e.context,s=i.implementation,n=e.style.projection,l=e.transform,c=l.getProjectionDataForCustomLayer(a),h={farZ:l.farZ,nearZ:l.nearZ,fov:l.fov*Math.PI/180,modelViewProjectionMatrix:l.modelViewProjectionMatrix,projectionMatrix:l.projectionMatrix,shaderData:{variantName:n.shaderVariantName,vertexShaderPrelude:`const float PI = 3.141592653589793;\nuniform mat4 u_projection_matrix;\n${n.shaderPreludeCode.vertexSource}`,define:n.shaderDefine},defaultProjectionData:c},u=s.renderingMode?s.renderingMode:"2d";if("offscreen"===e.renderPass){const t=s.prerender;t&&(e.setCustomLayerDefaults(),r.setColorMode(e.colorModeForRenderPass()),t.call(s,r.gl,h),r.setDirty(),e.setBaseState());}else if("translucent"===e.renderPass){e.setCustomLayerDefaults(),r.setColorMode(e.colorModeForRenderPass()),r.setStencilMode(ri.disabled);const t="3d"===u?e.getDepthModeFor3D():e.getDepthModeForSublayer(0,oi.ReadOnly);r.setDepthMode(t),s.render(r.gl,h),r.setDirty(),e.setBaseState(),r.bindFramebuffer.set(null);}},debug:function(e,t,i){for(const o of i)Wa(e,t,o);},debugPadding:function(e){const t=e.transform.padding;Ua(e,e.transform.height-(t.top||0),3,Ba),Ua(e,t.bottom||0,3,Oa),Ga(e,t.left||0,3,ja),Ga(e,e.transform.width-(t.right||0),3,Na);const i=e.transform.centerPoint;!function(e,t,i,o){Va(e,t-1,i-10,2,20,o),Va(e,t-10,i-1,20,2,o);}(e,i.x,e.transform.height-i.y,Za);},terrainDepth:function(e,i){const o=e.context,a=o.gl,r=e.transform,s=ei.unblended,n=new oi(a.LEQUAL,oi.ReadWrite,[0,1]),l=i.tileManager.getRenderableTiles(),c=e.useProgram("terrainDepth");o.bindFramebuffer.set(i.getFramebuffer("depth").framebuffer),o.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),o.clear({color:t.bo.transparent,depth:1});for(const e of l){const t=i.getTerrainMesh(e.tileID),l=i.getTerrainData(e.tileID),h=r.getProjectionData({overscaledTileID:e.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0}),u={u_ele_delta:i.getMeshFrameDelta(r.zoom)};c.draw(o,a.TRIANGLES,n,ri.disabled,s,ii.backCCW,u,l,h,"terrain",t.vertexBuffer,t.indexBuffer,t.segments);}o.bindFramebuffer.set(null),o.viewport.set([0,0,e.width,e.height]);},terrainCoords:function(e,i){const o=e.context,a=o.gl,r=e.transform,s=ei.unblended,n=new oi(a.LEQUAL,oi.ReadWrite,[0,1]),l=i.getCoordsTexture(),c=i.tileManager.getRenderableTiles(),h=e.useProgram("terrainCoords");o.bindFramebuffer.set(i.getFramebuffer("coords").framebuffer),o.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),o.clear({color:t.bo.transparent,depth:1}),i.coordsIndex=[];for(const e of c){const t=i.getTerrainMesh(e.tileID),c=i.getTerrainData(e.tileID);o.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,l.texture);const u={u_terrain_coords_id:(255-i.coordsIndex.length)/255,u_texture:0,u_ele_delta:i.getMeshFrameDelta(r.zoom)},d=r.getProjectionData({overscaledTileID:e.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});h.draw(o,a.TRIANGLES,n,ri.disabled,s,ii.backCCW,u,c,d,"terrain",t.vertexBuffer,t.indexBuffer,t.segments),i.coordsIndex.push(e.tileID.key);}o.bindFramebuffer.set(null),o.viewport.set([0,0,e.width,e.height]);}};class Xa{constructor(e,i){this.drawFunctions=Ha,this.context=new ca(e),this.transform=i,this._tileTextures={},this.terrainFacilitator={depthDirty:!0,coordsDirty:!1,matrix:t.ap(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=Fe.maxOverzooming+Fe.maxUnderzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new At;}resize(e,t,i){if(this.width=Math.floor(e*i),this.height=Math.floor(t*i),this.pixelRatio=i,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const e of this.style._order)this.style._layers[e].resize();}setup(){const e=this.context,i=new t.aU;i.emplaceBack(0,0),i.emplaceBack(t.a6,0),i.emplaceBack(0,t.a6),i.emplaceBack(t.a6,t.a6),this.tileExtentBuffer=e.createVertexBuffer(i,Ot.members),this.tileExtentSegments=t.aV.simpleSegment(0,0,4,2);const o=new t.aU;o.emplaceBack(0,0),o.emplaceBack(t.a6,0),o.emplaceBack(0,t.a6),o.emplaceBack(t.a6,t.a6),this.debugBuffer=e.createVertexBuffer(o,Ot.members),this.debugSegments=t.aV.simpleSegment(0,0,4,5);const a=new t.ch;a.emplaceBack(0,0,0,0),a.emplaceBack(t.a6,0,t.a6,0),a.emplaceBack(0,t.a6,0,t.a6),a.emplaceBack(t.a6,t.a6,t.a6,t.a6),this.rasterBoundsBuffer=e.createVertexBuffer(a,Bi.members),this.rasterBoundsSegments=t.aV.simpleSegment(0,0,4,2);const r=new t.aU;r.emplaceBack(0,0),r.emplaceBack(t.a6,0),r.emplaceBack(0,t.a6),r.emplaceBack(t.a6,t.a6),this.rasterBoundsBufferPosOnly=e.createVertexBuffer(r,Ot.members),this.rasterBoundsSegmentsPosOnly=t.aV.simpleSegment(0,0,4,5);const s=new t.aU;s.emplaceBack(0,0),s.emplaceBack(1,0),s.emplaceBack(0,1),s.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(s,Ot.members),this.viewportSegments=t.aV.simpleSegment(0,0,4,2);const n=new t.ci;n.emplaceBack(0),n.emplaceBack(1),n.emplaceBack(3),n.emplaceBack(2),n.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(n);const l=new t.aW;l.emplaceBack(1,0,2),l.emplaceBack(1,2,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(l);const c=this.context.gl;this.stencilClearMode=new ri({func:c.ALWAYS,mask:0},0,255,c.ZERO,c.ZERO,c.ZERO),this.tileExtentMesh=new Bt(this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments);}clearStencil(){const e=this.context,i=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const o=t.O();t.c7(o,0,this.width,this.height,0,0,1),t.S(o,o,[i.drawingBufferWidth,i.drawingBufferHeight,0]);const a={mainMatrix:o,tileMercatorCoords:[0,0,1,1],clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:o};this.useProgram("clippingMask",null,!0).draw(e,i.TRIANGLES,oi.disabled,this.stencilClearMode,ei.disabled,ii.disabled,null,null,a,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);}_renderTileClippingMasks(e,t,i){if(this.currentStencilSource===e.source||!e.isTileClipped()||!(null==t?void 0:t.length))return;this.currentStencilSource=e.source,this.nextStencilID+t.length>256&&this.clearStencil();const o=this.context;o.setColorMode(ei.disabled),o.setDepthMode(oi.disabled);const a={};for(const e of t)a[e.key]=this.nextStencilID++;this._renderTileMasks(a,t,i,!0),this._renderTileMasks(a,t,i,!1),this._tileClippingMaskIDs=a;}_renderTileMasks(e,t,i,o){var a;const r=this.context,s=r.gl,n=this.style.projection,l=this.transform,c=this.useProgram("clippingMask");for(const h of t){const t=e[h.key],u=null===(a=this.style.map.terrain)||void 0===a?void 0:a.getTerrainData(h),d=n.getMeshFromTileID(this.context,h.canonical,o,!0,"stencil"),_=l.getProjectionData({overscaledTileID:h,applyGlobeMatrix:!i,applyTerrainMatrix:!0});c.draw(r,s.TRIANGLES,oi.disabled,new ri({func:s.ALWAYS,mask:0},t,255,s.KEEP,s.KEEP,s.REPLACE),ei.disabled,i?ii.disabled:ii.backCCW,null,u,_,"$clipping",d.vertexBuffer,d.indexBuffer,d.segments);}}_renderTilesDepthBuffer(){var e;const t=this.context,i=t.gl,o=this.style.projection,a=this.transform,r=this.useProgram("depth"),s=this.getDepthModeFor3D(),n=Me(a,{tileSize:a.tileSize});for(const l of n){const n=null===(e=this.style.map.terrain)||void 0===e?void 0:e.getTerrainData(l),c=o.getMeshFromTileID(this.context,l.canonical,!0,!0,"raster"),h=a.getProjectionData({overscaledTileID:l,applyGlobeMatrix:!0,applyTerrainMatrix:!0});r.draw(t,i.TRIANGLES,s,ri.disabled,ei.disabled,ii.backCCW,null,n,h,"$clipping",c.vertexBuffer,c.indexBuffer,c.segments);}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const e=this.nextStencilID++,t=this.context.gl;return new ri({func:t.NOTEQUAL,mask:255},e,255,t.KEEP,t.KEEP,t.REPLACE)}stencilModeForClipping(e){const t=this.context.gl;return new ri({func:t.EQUAL,mask:255},this._tileClippingMaskIDs[e.key],0,t.KEEP,t.KEEP,t.REPLACE)}getStencilConfigForOverlapAndUpdateStencilID(e){const t=this.context.gl,i=e.sort(((e,t)=>t.overscaledZ-e.overscaledZ)),o=i[i.length-1].overscaledZ,a=i[0].overscaledZ-o+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();const e={};for(let i=0;it.overscaledZ-e.overscaledZ)),o=i[i.length-1].overscaledZ,a=i[0].overscaledZ-o+1;if(this.clearStencil(),a>1){const e={},r={};for(let i=0;i0};for(const e in n){const t=n[e];t.used&&t.prepare(this.context),l[e]=t.getVisibleCoordinates(!1),h[e]=l[e].slice().reverse(),u[e]=t.getVisibleCoordinates(!0).reverse();}this.opaquePassCutoff=1/0;for(let e=0;ethis.useProgram(e)}),this.context.viewport.set([0,0,this.width,this.height]),this.context.bindFramebuffer.set(null),this.context.clear({color:i.showOverdrawInspector?t.bo.black:t.bo.transparent,depth:1}),this.clearStencil(),this.style.sky&&this.drawFunctions.sky(this,this.style.sky),this._showOverdrawInspector=i.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=s.length-1;this.currentLayer>=0;this.currentLayer--){const e=this.style._layers[s[this.currentLayer]],t=n[e.source],i=l[e.source];this._renderTileClippingMasks(e,i,!1),this.renderLayer(this,t,e,i,d);}this.renderPass="translucent";let _=!1;for(this.currentLayer=0;this.currentLayeri.source&&!i.isHidden(t)?[e.tileManagers[i.source]]:[])),a=o.filter((e=>"vector"===e.getSource().type)),r=o.filter((e=>"vector"!==e.getSource().type)),s=e=>{(!i||i.getSource().maxzoom0?t.pop():null}isPatternMissing(e){if(!e)return !1;if(!e.from||!e.to)return !0;const t=this.imageManager.getPattern(e.from.toString()),i=this.imageManager.getPattern(e.to.toString());return !t||!i}useProgram(e,t,i=!1,o=[]){var a;this.cache||(this.cache={});const r=!!this.style.map.terrain,s=this.style.projection,n=i?Ft.projectionMercator:s.shaderPreludeCode,l=i?jt:s.shaderDefine,c=e+(t?t.cacheKey:"")+`/${i?Nt:s.shaderVariantName}`+(this._showOverdrawInspector?"/overdraw":"")+(r?"/terrain":"")+(o?`/${o.join("/")}`:"");return (a=this.cache)[c]||(a[c]=new Ui(this.context,Ft[e],t,yo[e],this._showOverdrawInspector,r,n,l,o)),this.cache[c]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();}setBaseState(){const e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD);}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new t.T(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));}destroy(){var e,t;if(this._tileTextures){for(const e in this._tileTextures){const t=this._tileTextures[e];if(t)for(const e of t)e.destroy();}this._tileTextures={};}if(this.tileExtentBuffer&&this.tileExtentBuffer.destroy(),this.debugBuffer&&this.debugBuffer.destroy(),this.rasterBoundsBuffer&&this.rasterBoundsBuffer.destroy(),this.rasterBoundsBufferPosOnly&&this.rasterBoundsBufferPosOnly.destroy(),this.viewportBuffer&&this.viewportBuffer.destroy(),this.tileBorderIndexBuffer&&this.tileBorderIndexBuffer.destroy(),this.quadTriangleIndexBuffer&&this.quadTriangleIndexBuffer.destroy(),this.tileExtentMesh&&(null===(e=this.tileExtentMesh.vertexBuffer)||void 0===e||e.destroy()),this.tileExtentMesh&&(null===(t=this.tileExtentMesh.indexBuffer)||void 0===t||t.destroy()),this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this.cache){for(const e in this.cache){const t=this.cache[e];(null==t?void 0:t.program)&&this.context.gl.deleteProgram(t.program);}this.cache={};}this.context&&this.context.setDefault();}overLimit(){const{drawingBufferWidth:e,drawingBufferHeight:t}=this.context.gl;return this.width!==e||this.height!==t}}function Ka(e,t){let i,o=!1,a=null;const r=()=>{a=null,o&&(e(...i),a=setTimeout(r,t),o=!1);};return (...e)=>(o=!0,i=e,a||r(),a)}Xa.MAX_TEXTURE_POOL_SIZE_PER_BUCKET=50;class Ya{constructor(e){this._getCurrentHash=()=>{const e=window.location.hash.replace("#","");if(this._hashName){let t;const i=e.split("&").map((e=>e.split("=")));for(const e of i)e[0]===this._hashName&&(t=e);return (t&&t[1]||"").split("/")}return e.split("/")},this._onHashChange=()=>{const e=this._getCurrentHash();if(!this._isValidHash(e))return !1;const t=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(e[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+e[2],+e[1]],zoom:+e[0],bearing:t,pitch:+(e[4]||0)}),!0},this._updateHashUnthrottled=()=>{const e=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,e);},this._removeHash=()=>{const e=this._getCurrentHash();if(0===e.length)return;const t=e.join("/");let i=t;i.split("&").length>0&&(i=i.split("&")[0]),this._hashName&&(i=`${this._hashName}=${t}`);let o=window.location.hash.replace(i,"");o.startsWith("#&")?o=o.slice(0,1)+o.slice(2):"#"===o&&(o="");let a=window.location.href.replace(/(#.+)?$/,o);a=a.replace("&&","&"),window.history.replaceState(window.history.state,null,a);},this._updateHash=Ka(this._updateHashUnthrottled,300),this._hashName=e&&encodeURIComponent(e);}addTo(e){return this._map=e,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(e){const t=this._map.getCenter(),i=Math.round(100*this._map.getZoom())/100,o=Math.ceil((i*Math.LN2+Math.log(512/360/.5))/Math.LN10),a=Math.pow(10,o),r=Math.round(t.lng*a)/a,s=Math.round(t.lat*a)/a,n=this._map.getBearing(),l=this._map.getPitch();let c="";if(c+=e?`/${r}/${s}/${i}`:`${i}/${s}/${r}`,(n||l)&&(c+="/"+Math.round(10*n)/10),l&&(c+=`/${Math.round(l)}`),this._hashName){const e=this._hashName;let t=!1;const i=window.location.hash.slice(1).split("&").map((i=>{const o=i.split("=")[0];return o===e?(t=!0,`${o}=${c}`):i})).filter((e=>e));return t||i.push(`${e}=${c}`),`#${i.join("&")}`}return `#${c}`}_isValidHash(e){if(e.length<3||e.some(isNaN))return !1;try{new t.W(+e[2],+e[1]);}catch(e){return !1}const i=+e[0],o=+(e[3]||0),a=+(e[4]||0);return i>=this._map.getMinZoom()&&i<=this._map.getMaxZoom()&&o>=-180&&o<=180&&a>=this._map.getMinPitch()&&a<=this._map.getMaxPitch()}}const Qa={linearity:.3,easing:t.cv(0,0,.3,1)},Ja=t.e({deceleration:2500,maxSpeed:1400},Qa),er=t.e({deceleration:20,maxSpeed:1400},Qa),tr=t.e({deceleration:1e3,maxSpeed:360},Qa),ir=t.e({deceleration:1e3,maxSpeed:90},Qa),or=t.e({deceleration:1e3,maxSpeed:360},Qa);class ar{constructor(e){this._map=e,this.clear();}clear(){this._inertiaBuffer=[];}record(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:c(),settings:e});}_drainInertiaBuffer(){const e=this._inertiaBuffer,t=c();for(;e.length>0&&t-e[0].time>160;)e.shift();}_onMoveEnd(e){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,roll:0,pan:new t.P(0,0),pinchAround:void 0,around:void 0};for(const{settings:e}of this._inertiaBuffer)i.zoom+=e.zoomDelta||0,i.bearing+=e.bearingDelta||0,i.pitch+=e.pitchDelta||0,i.roll+=e.rollDelta||0,e.panDelta&&i.pan._add(e.panDelta),e.around&&(i.around=e.around),e.pinchAround&&(i.pinchAround=e.pinchAround);const o=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,a={};if(i.pan.mag()){const r=sr(i.pan.mag(),o,t.e({},Ja,e||{})),s=i.pan.mult(r.amount/i.pan.mag()),n=this._map.cameraHelper.handlePanInertia(s,this._map.transform);a.center=n.easingCenter,a.offset=n.easingOffset,rr(a,r);}if(i.zoom){const e=sr(i.zoom,o,er);a.zoom=t.cw(this._map.transform.zoom+e.amount,this._map.getZoomSnap(),e.amount),rr(a,e);}if(i.bearing){const e=sr(i.bearing,o,tr);a.bearing=this._map.transform.bearing+t.al(e.amount,-179,179),rr(a,e);}if(i.pitch){const e=sr(i.pitch,o,ir);a.pitch=this._map.transform.pitch+e.amount,rr(a,e);}if(i.roll){const e=sr(i.roll,o,or);a.roll=this._map.transform.roll+t.al(e.amount,-179,179),rr(a,e);}if(a.zoom||a.bearing){const e=void 0===i.pinchAround?i.around:i.pinchAround;a.around=e?this._map.unproject(e):this._map.getCenter();}return this.clear(),t.e(a,{noMoveStart:!0})}}function rr(e,t){(!e.duration||e.durationi.unproject(e))),n=r.reduce(((e,t,i,o)=>e.add(t.div(o.length))),new t.P(0,0));super(e,{points:r,point:n,lngLats:s,lngLat:i.unproject(n),originalEvent:o}),this._defaultPrevented=!1;}}class cr extends t.n{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,i){super(e,{originalEvent:i}),this._defaultPrevented=!1;}}class hr{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance;}reset(){delete this._mousedownPos;}wheel(e){return this._firePreventable(new cr(e.type,this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new nr(e.type,this._map,e))}mouseup(e){this._map.fire(new nr(e.type,this._map,e));}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||this._map.fire(new nr(e.type,this._map,e));}dblclick(e){return this._firePreventable(new nr(e.type,this._map,e))}mouseover(e){this._map.fire(new nr(e.type,this._map,e));}mouseout(e){this._map.fire(new nr(e.type,this._map,e));}touchstart(e){return this._firePreventable(new lr(e.type,this._map,e))}touchmove(e){this._map.fire(new lr(e.type,this._map,e));}touchend(e){this._map.fire(new lr(e.type,this._map,e));}touchcancel(e){this._map.fire(new lr(e.type,this._map,e));}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return {}}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class ur{constructor(e){this._map=e;}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent;}mousemove(e){this._map.fire(new nr(e.type,this._map,e));}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1;}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new nr("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);}contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._ignoreContextMenu||this._map.fire(new nr(e.type,this._map,e)),this._map.listens("contextmenu")&&e.preventDefault();}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class dr{constructor(e){this._map=e;}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return {lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(e){return this.transform.screenPointToLocation(t.P.convert(e),this._map.terrain)}}class _r{constructor(e,t){this._map=e,this._tr=new dr(e),this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1,t.boxZoom&&"object"==typeof t.boxZoom&&(this._boxZoomEnd=t.boxZoom.boxZoomEnd);}isEnabled(){return !!this._enabled}isActive(){return !!this._active}enable(){this.isEnabled()||(this._enabled=!0);}disable(){this.isEnabled()&&(this._enabled=!1);}mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(d.disableDrag(),this._startPos=this._lastPos=t,this._active=!0);}mousemoveWindow(e,t){if(!this._active)return;const i=t;if(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)e.fitScreenCoordinates(o,a,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",e);}keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent("boxzoomcancel",e));}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(this._box.remove(),this._box=null),d.enableDrag(),delete this._startPos,delete this._lastPos;}_fireEvent(e,i){return this._map.fire(new t.n(e,{originalEvent:i}))}}function pr(e,t){if(e.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${e.length}, points ${t.length}`);const i={};for(let o=0;othis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),o.length===this.numTouches&&(this.centroid=function(e){const i=new t.P(0,0);for(const t of e)i._add(t);return i.div(e.length)}(i),this.touches=pr(o,i)));}touchmove(e,t,i){if(this.aborted||!this.centroid)return;const o=pr(i,t);for(const e in this.touches){const t=o[e];(!t||t.dist(this.touches[e])>30)&&(this.aborted=!0);}}touchend(e,t,i){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}}class fr{constructor(e){this.singleTap=new mr(e),this.numTaps=e.numTaps,this.reset();}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset();}touchstart(e,t,i){this.singleTap.touchstart(e,t,i);}touchmove(e,t,i){this.singleTap.touchmove(e,t,i);}touchend(e,t,i){const o=this.singleTap.touchend(e,t,i);if(o){const t=e.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(o)<30;if(t&&i||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=o,this.count===this.numTaps)return this.reset(),o}}}class gr{constructor(e){this._tr=new dr(e),this._zoomIn=new fr({numTouches:1,numTaps:2}),this._zoomOut=new fr({numTouches:2,numTaps:1}),this.reset();}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();}touchstart(e,t,i){this._zoomIn.touchstart(e,t,i),this._zoomOut.touchstart(e,t,i);}touchmove(e,t,i){this._zoomIn.touchmove(e,t,i),this._zoomOut.touchmove(e,t,i);}touchend(e,i,o){const a=this._zoomIn.touchend(e,i,o),r=this._zoomOut.touchend(e,i,o),s=this._tr;return a?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:i=>i.easeTo({duration:300,zoom:t.cw(s.zoom+1,i.getZoomSnap()),around:s.unproject(a)},{originalEvent:e})}):r?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:i=>i.easeTo({duration:300,zoom:t.cw(s.zoom-1,i.getZoomSnap()),around:s.unproject(r)},{originalEvent:e})}):void 0}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class vr{constructor(e){this._enabled=!!e.enable,this._moveStateManager=e.moveStateManager,this._clickTolerance=e.clickTolerance||1,this._moveFunction=e.move,this._activateOnStart=!!e.activateOnStart,e.assignEvents(this),this.reset();}reset(e){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(e);}_move(...e){const t=this._moveFunction(...e);if(t.bearingDelta||t.pitchDelta||t.rollDelta||t.around||t.panDelta)return this._active=!0,t}dragStart(e,t){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(e)&&(this._moveStateManager.startMove(e),this._lastPoint=Array.isArray(t)?t[0]:t,this._activateOnStart&&this._lastPoint&&(this._active=!0));}dragMove(e,t){if(!this.isEnabled())return;const i=this._lastPoint;if(!i)return;if(e.preventDefault(),!this._moveStateManager.isValidMoveEvent(e))return void this.reset(e);const o=Array.isArray(t)?t[0]:t;return !this._moved&&o.dist(i)!0}),t=new Tr){this.mouseMoveStateManager=e,this.oneFingerTouchMoveStateManager=t;}_executeRelevantHandler(e,t,i){return e instanceof MouseEvent?t(e):"undefined"!=typeof TouchEvent&&e instanceof TouchEvent?i(e):void 0}startMove(e){this._executeRelevantHandler(e,(e=>{this.mouseMoveStateManager.startMove(e);}),(e=>{this.oneFingerTouchMoveStateManager.startMove(e);}));}endMove(e){this._executeRelevantHandler(e,(e=>{this.mouseMoveStateManager.endMove(e);}),(e=>{this.oneFingerTouchMoveStateManager.endMove(e);}));}isValidStartEvent(e){return this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.isValidStartEvent(e)),(e=>this.oneFingerTouchMoveStateManager.isValidStartEvent(e)))}isValidMoveEvent(e){return this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.isValidMoveEvent(e)),(e=>this.oneFingerTouchMoveStateManager.isValidMoveEvent(e)))}isValidEndEvent(e){return this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.isValidEndEvent(e)),(e=>this.oneFingerTouchMoveStateManager.isValidEndEvent(e)))}}const Cr=e=>{e.mousedown=e.dragStart,e.mousemoveWindow=e.dragMove,e.mouseup=e.dragEnd,e.contextmenu=e=>{e.preventDefault();};};class Mr{constructor(e,t){this._clickTolerance=e.clickTolerance||1,this._map=t,this.reset();}reset(){this._active=!1,this._touches={},this._sum=new t.P(0,0);}_shouldBePrevented(e){return e<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(e,t,i){return this._calculateTransform(e,t,i)}touchmove(e,t,i){if(this._active){if(!this._shouldBePrevented(i.length))return e.preventDefault(),this._calculateTransform(e,t,i);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",e);}}touchend(e,t,i){this._calculateTransform(e,t,i),this._active&&this._shouldBePrevented(i.length)&&this.reset();}touchcancel(){this.reset();}_calculateTransform(e,i,o){o.length>0&&(this._active=!0);const a=pr(o,i),r=new t.P(0,0),s=new t.P(0,0);let n=0;for(const e in a){const t=a[e],i=this._touches[e];i&&(r._add(t),s._add(t.sub(i)),n++,a[e]=t);}if(this._touches=a,this._shouldBePrevented(n)||!s.mag())return;const l=s.div(n);return this._sum._add(l),this._sum.mag()Math.abs(e.x)}class Lr extends Ir{constructor(e){super(),this._currentTouchCount=0,this._map=e;}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints;}touchstart(e,t,i){super.touchstart(e,t,i),this._currentTouchCount=i.length;}_start(e){this._lastPoints=e,Ar(e[0].sub(e[1]))&&(this._valid=!1);}_move(e,t,i){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;const o=e[0].sub(this._lastPoints[0]),a=e[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(o,a,i.timeStamp),this._valid?(this._lastPoints=e,this._active=!0,{pitchDelta:(o.y+a.y)/2*-.5}):void 0}gestureBeginsVertically(e,t,i){if(void 0!==this._valid)return this._valid;const o=e.mag()>=2,a=t.mag()>=2;if(!o&&!a)return;if(!o||!a)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const r=e.y>0==t.y>0;return Ar(e)&&Ar(t)&&r}}const Fr={panStep:100,bearingStep:15,pitchStep:10};class kr{constructor(e){this._tr=new dr(e);const t=Fr;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep,this._rotationDisabled=!1;}reset(){this._active=!1;}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let i=0,o=0,a=0,r=0,s=0;switch(e.keyCode){case 61:case 107:case 171:case 187:i=1;break;case 189:case 109:case 173:i=-1;break;case 37:e.shiftKey?o=-1:(e.preventDefault(),r=-1);break;case 39:e.shiftKey?o=1:(e.preventDefault(),r=1);break;case 38:e.shiftKey?a=1:(e.preventDefault(),s=-1);break;case 40:e.shiftKey?a=-1:(e.preventDefault(),s=1);break;default:return}return this._rotationDisabled&&(o=0,a=0),{cameraAnimation:n=>{const l=this._tr;n.easeTo({duration:300,easeId:"keyboardHandler",easing:Br,zoom:i?t.cw(l.zoom+i*(e.shiftKey?2:1),n.getZoomSnap()):l.zoom,bearing:l.bearing+o*this._bearingStep,pitch:l.pitch+a*this._pitchStep,offset:[-r*this._panStep,-s*this._panStep],center:l.center},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0;}enableRotation(){this._rotationDisabled=!1;}}function Br(e){return e*(2-e)}const Or=4.000244140625,jr=1/450;class Nr{constructor(e,t){this._onTimeout=e=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(e);},this._map=e,this._tr=new dr(e),this._triggerRenderFrame=t,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=jr;}setZoomRate(e){this._defaultZoomRate=e;}setWheelZoomRate(e){this._wheelZoomRate=e;}isEnabled(){return !!this._enabled}isActive(){return !!this._active||void 0!==this._finishTimeout}isZooming(){return !!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&"center"===e.around);}disable(){this.isEnabled()&&(this._enabled=!1);}_shouldBePrevented(e){return !!this._map.cooperativeGestures.isEnabled()&&!(e.ctrlKey||this._map.cooperativeGestures.isBypassed(e))}wheel(e){if(!this.isEnabled())return;if(this._shouldBePrevented(e))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",e);let t=e.deltaMode===WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY;const i=c(),o=i-(this._lastWheelEventTime||0);this._lastWheelEventTime=i,0!==t&&t%Or==0?this._type="wheel":0!==t&&Math.abs(t)<4?this._type="trackpad":o>400?(this._type=null,this._lastValue=t,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(o*t)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,t+=this._lastValue)),e.shiftKey&&t&&(t/=4),this._type&&(this._lastWheelEvent=e,this._delta-=t,this._active||this._start(e)),e.preventDefault();}_start(e){if(!this._delta)return;this._needsRerender=!1,this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const i=d.mousePos(this._map.getCanvas(),e),o=this._tr;this._aroundPoint=this._aroundCenter?o.transform.locationToScreenPoint(t.W.convert(o.center)):i,this._needsRerender||(this._needsRerender=!0,this._triggerRenderFrame());}renderFrame(){if(!this._needsRerender)return;if(this._needsRerender=!1,!this.isActive())return;const e=this._tr.transform;if("number"==typeof this._lastExpectedZoom){const t=e.zoom-this._lastExpectedZoom;"number"==typeof this._startZoom&&(this._startZoom+=t),"number"==typeof this._targetZoom&&(this._targetZoom+=t);}if(0!==this._delta){const i="wheel"===this._type&&Math.abs(this._delta)>Or?this._wheelZoomRate:this._defaultZoomRate;let o=2/(1+Math.exp(-Math.abs(this._delta*i)));this._delta<0&&0!==o&&(o=1/o);const a="number"!=typeof this._targetZoom?e.scale:t.ao(this._targetZoom),r=e.applyConstrain(e.getCameraLngLat(),t.ar(a*o)).zoom,s=this._map.getZoomSnap();if("wheel"===this._type&&s>0){const i=t.cw(e.zoom,s);this._targetZoom=t.cw(r,s,r-i);}else this._targetZoom=r;"wheel"===this._type&&(this._startZoom=e.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}const i="number"!=typeof this._targetZoom?e.zoom:this._targetZoom,o=this._startZoom,a=this._easing;let r,s=!1;if("wheel"===this._type&&o&&a){const e=c()-this._lastWheelEventTime,n=Math.min((e+5)/200,1),l=a(n);r=t.H.number(o,i,l),n<1?this._needsRerender=!0:s=!0;}else r=i,s=!0;return this._active=!0,s&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._lastExpectedZoom,delete this._finishTimeout;}),200)),this._lastExpectedZoom=r,{noInertia:!0,needsRenderFrame:!s,zoomDelta:r-e.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(e){let i=t.cy;if(this._prevEase){const e=this._prevEase,o=(c()-e.start)/e.duration,a=e.easing(o+.01)-e.easing(o),r=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-r*r);i=t.cv(r,s,.25,1);}return this._prevEase={start:c(),duration:e,easing:i},i}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,delete this._lastExpectedZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);}}class Zr{constructor(e,t){this._clickZoom=e,this._tapZoom=t;}enable(){this._clickZoom.enable(),this._tapZoom.enable();}disable(){this._clickZoom.disable(),this._tapZoom.disable();}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Ur{constructor(e){this._tr=new dr(e),this.reset();}reset(){this._active=!1;}dblclick(e,i){return e.preventDefault(),{cameraAnimation:o=>{o.easeTo({duration:300,zoom:t.cw(this._tr.zoom+(e.shiftKey?-1:1),o.getZoomSnap()),around:this._tr.unproject(i)},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Gr{constructor(){this._tap=new fr({numTouches:1,numTaps:1}),this._zoomRate=1,this.reset();}setZoomRate(e){this._zoomRate=null!=e?e:1;}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset();}touchstart(e,t,i){if(!this._swipePoint)if(this._tapTime){const o=t[0],a=e.timeStamp-this._tapTime<500,r=this._tapPoint.dist(o)<30;a&&r?i.length>0&&(this._swipePoint=o,this._swipeTouch=i[0].identifier):this.reset();}else this._tap.touchstart(e,t,i);}touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const o=t[0],a=o.y-this._swipePoint.y;return this._swipePoint=o,e.preventDefault(),this._active=!0,{zoomDelta:a/128*this._zoomRate}}}else this._tap.touchmove(e,t,i);}touchend(e,t,i){if(this._tapTime)this._swipePoint&&0===i.length&&this.reset();else {const o=this._tap.touchend(e,t,i);o&&(this._tapTime=e.timeStamp,this._tapPoint=o);}}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Vr{constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i;}enable(e){this._inertiaOptions=e||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan");}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan");}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Wr{constructor(e,t,i,o){this._pitchWithRotate=e.pitchWithRotate,this._rollEnabled=e.rollEnabled,this._mouseRotate=t,this._mousePitch=i,this._mouseRoll=o;}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable(),this._rollEnabled&&this._mouseRoll.enable();}disable(){this._mouseRotate.disable(),this._mousePitch.disable(),this._mouseRoll.disable();}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())&&(!this._rollEnabled||this._mouseRoll.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()||this._mouseRoll.isActive()}}class qr{constructor(e,t,i,o){this._el=e,this._touchZoom=t,this._touchRotate=i,this._tapDragZoom=o,this._rotationDisabled=!1,this._enabled=!0;}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate");}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate");}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}setZoomRate(e){this._touchZoom.setZoomRate(e),this._tapDragZoom.setZoomRate(e);}setZoomThreshold(e){this._touchZoom.setZoomThreshold(e);}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable();}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();}}class $r{constructor(e,t){this._bypassKey=navigator.userAgent.includes("Mac")?"metaKey":"ctrlKey",this._map=e,this._options=t,this._enabled=!1;}isActive(){return !1}reset(){}_setupUI(){if(this._container)return;const e=this._map.getCanvasContainer();e.classList.add("maplibregl-cooperative-gestures"),this._container=d.create("div","maplibregl-cooperative-gesture-screen",e);let t=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");"metaKey"===this._bypassKey&&(t=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));const i=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),o=document.createElement("div");o.className="maplibregl-desktop-message",o.textContent=t,this._container.appendChild(o);const a=document.createElement("div");a.className="maplibregl-mobile-message",a.textContent=i,this._container.appendChild(a),this._container.setAttribute("aria-hidden","true");}_destroyUI(){this._container&&(this._container.remove(),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container;}enable(){this._setupUI(),this._enabled=!0;}disable(){this._enabled=!1,this._destroyUI();}isEnabled(){return this._enabled}isBypassed(e){return e[this._bypassKey]}notifyGestureBlocked(e,i){this._enabled&&(this._map.fire(new t.n("cooperativegestureprevented",{gestureType:e,originalEvent:i})),this._container.classList.add("maplibregl-show"),setTimeout((()=>{this._container.classList.remove("maplibregl-show");}),100));}}const Hr=e=>e.zoom||e.drag||e.roll||e.pitch||e.rotate;class Xr extends t.n{}function Kr(e){var t;return (null===(t=e.panDelta)||void 0===t?void 0:t.mag())||e.zoomDelta||e.bearingDelta||e.pitchDelta||e.rollDelta}class Yr{get _ownerDocument(){var e;return (null===(e=this._el)||void 0===e?void 0:e.ownerDocument)||document}get _ownerWindow(){var e,t;return (null===(t=null===(e=this._el)||void 0===e?void 0:e.ownerDocument)||void 0===t?void 0:t.defaultView)||window}constructor(e,i){this.handleWindowEvent=e=>{this.handleEvent(e,`${e.type}Window`);},this.handleEvent=(e,i)=>{if("blur"===e.type)return void this.stop(!0);this._updatingCamera=!0;const o="renderFrame"===e.type?void 0:e,a={needsRenderFrame:!1},r={},s={};for(const{handlerName:n,handler:l,allowed:c}of this._handlers){if(!l.isEnabled())continue;let h;if(this._blockedByActive(s,c,n))l.reset();else if(l[i||e.type]){if(t.cz(e,i||e.type)){const t=d.mousePos(this._map.getCanvas(),e);h=l[i||e.type](e,t);}else if(t.cA(e,i||e.type)){const t=this._getMapTouches(e.touches),o=d.touchPos(this._map.getCanvas(),t);h=l[i||e.type](e,o,t);}else t.cB(i||e.type)||(h=l[i||e.type](e));this.mergeHandlerResult(a,r,h,n,o),(null==h?void 0:h.needsRenderFrame)&&this._triggerRenderFrame();}(h||l.isActive())&&(s[n]=l);}const n={};for(const e in this._previousActiveHandlers)s[e]||(n[e]=o);this._previousActiveHandlers=s,(Object.keys(n).length||Kr(a))&&(this._changes.push([a,r,n]),this._triggerRenderFrame()),(Object.keys(s).length||Kr(a))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:l}=a;l&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],l(this._map));},this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new ar(e),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(i);const o=this._el;this._listeners=[[o,"touchstart",{passive:!0}],[o,"touchmove",{passive:!1}],[o,"touchend",void 0],[o,"touchcancel",void 0],[o,"mousedown",void 0],[o,"mousemove",void 0],[o,"mouseup",void 0],[this._ownerDocument,"mousemove",{capture:!0}],[this._ownerDocument,"mouseup",void 0],[o,"mouseover",void 0],[o,"mouseout",void 0],[o,"dblclick",void 0],[o,"click",void 0],[o,"keydown",{capture:!1}],[o,"keyup",void 0],[o,"wheel",{passive:!1}],[o,"contextmenu",void 0],[this._ownerWindow,"blur",void 0]];for(const[e,t,i]of this._listeners)e.addEventListener(t,e===this._ownerDocument?this.handleWindowEvent:this.handleEvent,i);}destroy(){for(const[e,t,i]of this._listeners)e.removeEventListener(t,e===this._ownerDocument?this.handleWindowEvent:this.handleEvent,i);}_addDefaultHandlers(e){const i=this._map,o=i.getCanvasContainer();this._add("mapEvent",new hr(i,e));const a=i.boxZoom=new _r(i,e);this._add("boxZoom",a),e.interactive&&e.boxZoom&&a.enable();const r=i.cooperativeGestures=new $r(i,e.cooperativeGestures);this._add("cooperativeGestures",r),e.cooperativeGestures&&r.enable();const s=new gr(i),n=new Ur(i);i.doubleClickZoom=new Zr(n,s),this._add("tapZoom",s),this._add("clickZoom",n),e.interactive&&e.doubleClickZoom&&i.doubleClickZoom.enable();const l=new Gr;this._add("tapDragZoom",l);const c=i.touchPitch=new Lr(i);this._add("touchPitch",c),e.interactive&&e.touchPitch&&i.touchPitch.enable(e.touchPitch);const h=()=>i.project(i.getCenter()),u=function({enable:e,clickTolerance:i,aroundCenter:o=!0,minPixelCenterThreshold:a=100,rotateDegreesPerPixelMoved:r=.8},s){const n=new wr({checkCorrectEvent:e=>0===e.button&&e.ctrlKey||2===e.button&&!e.ctrlKey});return new vr({clickTolerance:i,move:(e,i)=>{const n=s();if(o&&Math.abs(n.y-e.y)>a)return {bearingDelta:t.cx(new t.P(e.x,i.y),i,n)};let l=(i.x-e.x)*r;return o&&i.y0===e.button&&e.ctrlKey||2===e.button});return new vr({clickTolerance:t,move:(e,t)=>({pitchDelta:(t.y-e.y)*i}),moveStateManager:o,enable:e,assignEvents:Cr})}(e),_=function({enable:e,clickTolerance:t,rollDegreesPerPixelMoved:i=.3},o){const a=new wr({checkCorrectEvent:e=>2===e.button&&e.ctrlKey});return new vr({clickTolerance:t,move:(e,t)=>{const a=o();let r=(t.x-e.x)*i;return t.y0===e.button&&!e.ctrlKey});return new vr({clickTolerance:t,move:(e,t)=>({around:t,panDelta:t.sub(e)}),activateOnStart:!0,moveStateManager:i,enable:e,assignEvents:Cr})}(e),m=new Mr(e,i);i.dragPan=new Vr(o,p,m),this._add("mousePan",p),this._add("touchPan",m,["touchZoom","touchRotate"]),e.interactive&&e.dragPan&&i.dragPan.enable(e.dragPan);const f=new Dr,g=new zr;i.touchZoomRotate=new qr(o,g,f,l),this._add("touchRotate",f,["touchPan","touchZoom"]),this._add("touchZoom",g,["touchPan","touchRotate"]),e.interactive&&e.touchZoomRotate&&i.touchZoomRotate.enable(e.touchZoomRotate),this._add("blockableMapEvent",new ur(i));const v=i.scrollZoom=new Nr(i,(()=>this._triggerRenderFrame()));this._add("scrollZoom",v,["mousePan"]),e.interactive&&e.scrollZoom&&i.scrollZoom.enable(e.scrollZoom);const x=i.keyboard=new kr(i);this._add("keyboard",x),e.interactive&&e.keyboard&&i.keyboard.enable();}_add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),this._handlersById[e]=t;}stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[];}}isActive(){for(const{handler:e}of this._handlers)if(e.isActive())return !0;return !1}isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return !!this._eventsInProgress.rotate}isMoving(){return Boolean(Hr(this._eventsInProgress))||this.isZooming()}_blockedByActive(e,t,i){for(const o in e)if(o!==i&&!(null==t?void 0:t.includes(o)))return !0;return !1}_getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.target)&&t.push(i);return t}mergeHandlerResult(e,i,o,a,r){if(!o)return;t.e(e,o);const s={handlerName:a,originalEvent:o.originalEvent||r};void 0!==o.zoomDelta&&(i.zoom=s),void 0!==o.panDelta&&(i.drag=s),void 0!==o.rollDelta&&(i.roll=s),void 0!==o.pitchDelta&&(i.pitch=s),void 0!==o.bearingDelta&&(i.rotate=s);}_applyChanges(){const e={},i={},o={};for(const[a,r,s]of this._changes)a.panDelta&&(e.panDelta=(e.panDelta||new t.P(0,0))._add(a.panDelta)),a.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+a.zoomDelta),a.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+a.bearingDelta),a.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+a.pitchDelta),a.rollDelta&&(e.rollDelta=(e.rollDelta||0)+a.rollDelta),void 0!==a.around&&(e.around=a.around),void 0!==a.pinchAround&&(e.pinchAround=a.pinchAround),a.noInertia&&(e.noInertia=a.noInertia),t.e(i,r),t.e(o,s);this._updateMapTransform(e,i,o),this._changes=[];}_updateMapTransform(e,t,i){const o=this._map,a=o._getTransformForUpdate(),r=o.terrain;if(!(Kr(e)||r&&this._terrainMovement))return void this._fireEvents(t,i,!0);o._stop(!0);let{panDelta:s,zoomDelta:n,bearingDelta:l,pitchDelta:c,rollDelta:h,around:u,pinchAround:d}=e;void 0!==d&&(u=d),u||(u=o.transform.centerPoint),r&&!a.isPointOnMapSurface(u)&&(u=a.centerPoint);const _={panDelta:s,zoomDelta:n,rollDelta:h,pitchDelta:c,bearingDelta:l,around:u};this._map.cameraHelper.useGlobeControls&&!a.isPointOnMapSurface(u)&&(u=a.centerPoint);const p=u.distSqr(a.centerPoint)<.01?a.center:a.screenPointToLocation(s?u.sub(s):u);this._handleMapControls({terrain:r,tr:a,deltasForHelper:_,preZoomAroundLoc:p,combinedEventsInProgress:t,panDelta:s}),o._applyUpdatedTransform(a),this._map._update(),e.noInertia||this._inertia.record(e),this._fireEvents(t,i,!0);}_handleMapControls({terrain:e,tr:t,deltasForHelper:i,preZoomAroundLoc:o,combinedEventsInProgress:a,panDelta:r}){const s=this._map.cameraHelper;if(s.handleMapControlsRollPitchBearingZoom(i,t),e)return s.useGlobeControls?(this._terrainMovement||!a.drag&&!a.zoom||(this._terrainMovement=!0,this._map._elevationFreeze=!0),void s.handleMapControlsPan(i,t,o)):this._terrainMovement||!a.drag&&!a.zoom?void(a.drag&&this._terrainMovement&&r?t.setCenter(t.screenPointToLocation(t.centerPoint.sub(r))):s.handleMapControlsPan(i,t,o)):(this._terrainMovement=!0,this._map._elevationFreeze=!0,void s.handleMapControlsPan(i,t,o));s.handleMapControlsPan(i,t,o);}_fireEvents(e,i,o){const a=Hr(this._eventsInProgress),r=Hr(e),s={};for(const t in e){const{originalEvent:i}=e[t];this._eventsInProgress[t]||(s[`${t}start`]=i),this._eventsInProgress[t]=e[t];}!a&&r&&this._fireEvent("movestart",r.originalEvent);for(const e in s)this._fireEvent(e,s[e]);r&&this._fireEvent("move",r.originalEvent);for(const t in e){const{originalEvent:i}=e[t];this._fireEvent(t,i);}const l={};let c;for(const e in this._eventsInProgress){const{handlerName:t,originalEvent:o}=this._eventsInProgress[e];this._handlersById[t].isActive()||(delete this._eventsInProgress[e],c=i[t]||o,l[`${e}end`]=c);}for(const e in l)this._fireEvent(e,l[e]);const h=Hr(this._eventsInProgress),u=(a||r)&&!h;if(u&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;const e=this._map._getTransformForUpdate();this._map.getCenterClampedToGround()&&e.recalculateZoomAndCenter(this._map.terrain),this._map._applyUpdatedTransform(e);}if(o&&u){this._updatingCamera=!0;const e=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=e=>0!==e&&-this._bearingSnap{delete this._frameId,this.handleEvent(new Xr("renderFrame",{timeStamp:e})),this._applyChanges();}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame());}}class Qr extends t.E{constructor(e,t,i){super(),this._renderFrameCallback=()=>{const e=Math.min((c()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();},this._moving=!1,this._zooming=!1,this.transform=e,this._bearingSnap=i.bearingSnap,this._zoomSnap=i.zoomSnap,this.cameraHelper=t,this.on("moveend",(()=>{delete this._requestedCameraState;}));}migrateProjection(e,t){e.apply(this.transform,!0),this.transform=e,this.cameraHelper=t;}getCenter(){return new t.W(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}getCenterElevation(){return this.transform.elevation}setCenterElevation(e,t){return this.jumpTo({elevation:e},t),this}getCenterClampedToGround(){return this._centerClampedToGround}setCenterClampedToGround(e){this._centerClampedToGround=e;}panBy(e,i,o){return e=t.P.convert(e).mult(-1),this.panTo(this.transform.center,t.e({offset:e},i),o)}panTo(e,i,o){return this.easeTo(t.e({center:e},i),o)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(e,i,o){return this.easeTo(t.e({zoom:e},i),o)}zoomIn(e,i){return this.zoomTo(t.cw(this.getZoom()+1,this._zoomSnap),e,i),this}zoomOut(e,i){return this.zoomTo(t.cw(this.getZoom()-1,this._zoomSnap),e,i),this}getVerticalFieldOfView(){return this.transform.fov}setVerticalFieldOfView(e,i){return e!=this.transform.fov&&(this.transform.setFov(e),this.fire(new t.n("movestart",i)).fire(new t.n("move",i)).fire(new t.n("moveend",i))),this}getBearing(){return this.transform.bearing}setZoomSnap(e){return this._zoomSnap=e,this}getZoomSnap(){return this._zoomSnap}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(e,i,o){return this.easeTo(t.e({bearing:e},i),o)}resetNorth(e,i){return this.rotateTo(0,t.e({duration:1e3},e),i),this}resetNorthPitch(e,i){return this.easeTo(t.e({bearing:0,pitch:0,roll:0,duration:1e3},e),i),this}snapToNorth(e,t){return Math.abs(this.getBearing()){f.easeFunc(t),this.terrain&&!e.freezeElevation&&this._updateElevation(t),this._applyUpdatedTransform(o),this._fireMoveEvents(i);}),(t=>{this.terrain&&e.freezeElevation&&this._finalizeElevation(),this._afterEase(i,t);}),e),this}_prepareEase(e,i,o={}){this._moving=!0,i||o.moving||this.fire(new t.n("movestart",e)),this._zooming&&!o.zooming&&this.fire(new t.n("zoomstart",e)),this._rotating&&!o.rotating&&this.fire(new t.n("rotatestart",e)),this._pitching&&!o.pitching&&this.fire(new t.n("pitchstart",e)),this._rolling&&!o.rolling&&this.fire(new t.n("rollstart",e));}_prepareElevation(e){this._elevationCenter=e,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(e,this.transform.tileZoom),this._elevationFreeze=!0;}_updateElevation(e){void 0!==this._elevationStart&&void 0!==this._elevationCenter||this._prepareElevation(this.transform.center),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom));const i=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(e<1&&i!==this._elevationTarget){const t=this._elevationTarget-this._elevationStart;this._elevationStart+=e*(t-(i-(t*e+this._elevationStart))/(1-e)),this._elevationTarget=i;}this.transform.setElevation(t.H.number(this._elevationStart,this._elevationTarget,e));}_finalizeElevation(){this._elevationFreeze=!1,this.getCenterClampedToGround()&&this.transform.recalculateZoomAndCenter(this.terrain);}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(e){if(!this.terrain&&e.elevation>=0&&e.pitch<=90)return {};const t=e.getCameraLngLat(),i=e.getCameraAltitude(),o=this.terrain?this.terrain.getElevationForLngLatZoom(t,e.zoom):0;if(ithis._elevateCameraIfInsideTerrain(e))),this.transformCameraUpdate&&t.push((e=>this.transformCameraUpdate(e))),!t.length)return;const i=e.clone();for(const e of t){const t=i.clone(),{center:o,zoom:a,roll:r,pitch:s,bearing:n,elevation:l}=e(t);o&&t.setCenter(o),void 0!==l&&t.setElevation(l),void 0!==a&&t.setZoom(a),void 0!==r&&t.setRoll(r),void 0!==s&&t.setPitch(s),void 0!==n&&t.setBearing(n),i.apply(t,!1);}this.transform.apply(i,!1);}_fireMoveEvents(e){this.fire(new t.n("move",e)),this._zooming&&this.fire(new t.n("zoom",e)),this._rotating&&this.fire(new t.n("rotate",e)),this._pitching&&this.fire(new t.n("pitch",e)),this._rolling&&this.fire(new t.n("roll",e));}_afterEase(e,i){if(this._easeId&&i&&this._easeId===i)return;delete this._easeId;const o=this._zooming,a=this._rotating,r=this._pitching,s=this._rolling;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._rolling=!1,this._padding=!1,o&&this.fire(new t.n("zoomend",e)),a&&this.fire(new t.n("rotateend",e)),r&&this.fire(new t.n("pitchend",e)),s&&this.fire(new t.n("rollend",e)),this.fire(new t.n("moveend",e));}flyTo(e,i){if(!e.essential&&n.prefersReducedMotion){const o=t.V(e,["center","zoom","bearing","pitch","roll","elevation","padding"]);return this.jumpTo(o,i)}this.stop(),"zoom"in(e=t.e({offset:[0,0],speed:1.2,curve:1.42,easing:t.cy},e))&&this._zoomSnap&&(e.zoom=t.cw(e.zoom,this._zoomSnap));const o=this._getTransformForUpdate(),a=o.bearing,r=o.pitch,s=o.roll,l=o.padding,c="bearing"in e?this._normalizeBearing(e.bearing,a):a,h="pitch"in e?+e.pitch:r,u="roll"in e?this._normalizeBearing(e.roll,s):s,d="padding"in e?e.padding:o.padding,_=t.P.convert(e.offset);let p=o.centerPoint.add(_);const m=o.screenPointToLocation(p),f=this.cameraHelper.handleFlyTo(o,{bearing:c,pitch:h,roll:u,padding:d,locationAtOffset:m,offsetAsPoint:_,center:e.center,minZoom:e.minZoom,zoom:e.zoom});let g=e.curve;const v=Math.max(o.width,o.height),x=v/f.scaleOfZoom,b=f.pixelPathLength;"number"==typeof f.scaleOfMinZoom&&(g=Math.sqrt(v/f.scaleOfMinZoom/b*2));const y=g*g;function w(e){const t=(x*x-v*v+(e?-1:1)*y*y*b*b)/(2*(e?x:v)*y*b);return Math.log(Math.sqrt(t*t+1)-t)}function T(e){return (Math.exp(e)-Math.exp(-e))/2}function P(e){return (Math.exp(e)+Math.exp(-e))/2}const C=w(!1);let M=function(e){return P(C)/P(C+g*e)},I=function(e){return v*((P(C)*(T(t=C+g*e)/P(t))-T(C))/y)/b;var t;},E=(w(!0)-C)/g;if(Math.abs(b)<2e-6||!isFinite(E)){if(Math.abs(v-x)<1e-6)return this.easeTo(e,i);const t=x0,M=e=>Math.exp(t*g*e);}return e.duration="duration"in e?+e.duration:1e3*E/("screenSpeed"in e?+e.screenSpeed/g:+e.speed),e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=a!==c,this._pitching=h!==r,this._rolling=u!==s,this._padding=!o.isPaddingEqual(d),this._prepareEase(i,!1),this.terrain&&this._prepareElevation(f.targetCenter),this._ease((n=>{const m=n*E,g=1/M(m),v=I(m);this._rotating&&o.setBearing(t.H.number(a,c,n)),this._pitching&&o.setPitch(t.H.number(r,h,n)),this._rolling&&o.setRoll(t.H.number(s,u,n)),this._padding&&(o.interpolatePadding(l,d,n),p=o.centerPoint.add(_)),f.easeFunc(n,g,v,p),this.terrain&&!e.freezeElevation&&this._updateElevation(n),this._applyUpdatedTransform(o),this._fireMoveEvents(i);}),(()=>{this.terrain&&e.freezeElevation&&this._finalizeElevation(),this._afterEase(i);}),e),this}isEasing(){return !!this._easeFrameId}stop(){return this._stop()}_stop(e,t){var i;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const e=this._onEaseEnd;delete this._onEaseEnd,e.call(this,t);}return e||null===(i=this.handlers)||void 0===i||i.stop(!1),this}_ease(e,t,i){!1===i.animate||0===i.duration?(e(1),t()):(this._easeStart=c(),this._easeOptions=i,this._onEaseFrame=e,this._onEaseEnd=t,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));}_normalizeBearing(e,i){e=t.X(e,-180,180);const o=Math.abs(e-i);return Math.abs(e-360-i)MapLibre'};class es{constructor(e=Jr){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")));},this._updateData=e=>{!e||"metadata"!==e.sourceDataType&&"visibility"!==e.sourceDataType&&"style"!==e.dataType&&"terrain"!==e.type||this._updateAttributions();},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1===this._compact?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"));},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show");},this.options=e;}getDefaultPosition(){return "bottom-right"}onAdd(e){return this._map=e,this._compact=this.options.compact,this._container=d.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=d.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=d.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){this._container.remove(),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0;}_setElementTitle(e,t){const i=this._map._getUIString(`AttributionControl.${t}`);e.title=i,e.setAttribute("aria-label",i);}_updateAttributions(){if(!this._map.style)return;let e=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=e.concat(this.options.customAttribution.map((e=>"string"!=typeof e?"":e))):"string"==typeof this.options.customAttribution&&e.push(this.options.customAttribution)),this._map.style.stylesheet){const e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id;}const t=this._map.style.tileManagers;for(const i in t){const o=t[i];if(o.used||o.usedForTerrain){const t=o.getSource();t.attribution&&!e.includes(t.attribution)&&e.push(t.attribution);}}e=e.filter((e=>String(e).trim())),e.sort(((e,t)=>e.length-t.length)),e=e.filter(((t,i)=>{for(let o=i+1;o{const e=this._container.children;if(e.length){const t=e[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1!==this._compact&&t.classList.add("maplibregl-compact"):t.classList.remove("maplibregl-compact");}},this.options=e;}getDefaultPosition(){return "bottom-left"}onAdd(e){var t;this._map=e,this._compact=null===(t=this.options)||void 0===t?void 0:t.compact,this._container=d.create("div","maplibregl-ctrl");const i=d.create("a","maplibregl-ctrl-logo");return i.target="_blank",i.rel="noopener nofollow",i.href="https://maplibre.org/",i.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),i.setAttribute("rel","noopener nofollow"),this._container.appendChild(i),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0;}}class is{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;}add(e){const t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){const t=this._currentlyRunning,i=t?this._queue.concat(t):this._queue;for(const t of i)if(t.id===e)return void(t.cancelled=!0)}run(e=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");const t=this._currentlyRunning=this._queue;this._queue=[];for(const i of t)if(!i.cancelled&&(i.callback(e),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1;}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];}}var os=t.aS([{name:"a_pos3d",type:"Int16",components:3}]);class as extends t.E{constructor(e){super(),this._lastTilesetChange=c(),this.tileManager=e,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.deltaZoom=1,this.tileSize=e._source.tileSize*2**this.deltaZoom,e.usedForTerrain=!0,e.tileSize=this.tileSize;}destruct(){this.tileManager.usedForTerrain=!1,this.tileManager.tileSize=null;}getSource(){return this.tileManager._source}update(e,i){this.tileManager.update(e,i),this._renderableTilesKeys=[];const o={};for(const a of Me(e,{tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:i,calculateTileZoom:this.tileManager._source.calculateTileZoom}))o[a.key]=!0,this._renderableTilesKeys.push(a.key),this._tiles[a.key]||(a.terrainRttPosMatrix32f=new Float64Array(16),t.c7(a.terrainRttPosMatrix32f,0,t.a6,t.a6,0,0,1),this._tiles[a.key]=new de(a,this.tileSize),this._lastTilesetChange=c());for(const e in this._tiles)o[e]||delete this._tiles[e];}freeRtt(e){for(const t in this._tiles){const i=this._tiles[t];(!e||i.tileID.equals(e)||i.tileID.isChildOf(e)||e.isChildOf(i.tileID))&&(i.rtt=[]);}}getRenderableTiles(){return this._renderableTilesKeys.map((e=>this.getTileByID(e)))}getTileByID(e){return this._tiles[e]}getTerrainCoords(e,t){return t?this._getTerrainCoordsForTileRanges(e,t):this._getTerrainCoordsForRegularTile(e)}_getTerrainCoordsForRegularTile(e){const i={};for(const o of this._renderableTilesKeys){const a=this._tiles[o].tileID,r=e.clone(),s=t.bj();if(a.canonical.equals(e.canonical))t.c7(s,0,t.a6,t.a6,0,0,1);else if(a.canonical.isChildOf(e.canonical)){const i=a.canonical.z-e.canonical.z,o=a.canonical.x-(a.canonical.x>>i<>i<>i;t.c7(s,0,n,n,0,0,1),t.Q(s,s,[-o*n,-r*n,0]);}else {if(!e.canonical.isChildOf(a.canonical))continue;{const i=e.canonical.z-a.canonical.z,o=e.canonical.x-(e.canonical.x>>i<>i<>i;t.c7(s,0,t.a6,t.a6,0,0,1),t.Q(s,s,[o*n,r*n,0]),t.S(s,s,[1/2**i,1/2**i,0]);}}r.terrainRttPosMatrix32f=new Float32Array(s),i[o]=r;}return i}_getTerrainCoordsForTileRanges(e,i){const o={};for(const a of this._renderableTilesKeys){const r=this._tiles[a].tileID;if(!this._isWithinTileRanges(r,i))continue;const s=e.clone(),n=t.bj();if(r.canonical.z===e.canonical.z){const i=e.canonical.x-r.canonical.x+e.wrap*(1<e.canonical.z){const i=r.canonical.z-e.canonical.z,o=r.canonical.x-(r.canonical.x>>i<>i<>i),l=e.canonical.y-(r.canonical.y>>i),c=t.a6>>i;t.c7(n,0,c,c,0,0,1),t.Q(n,n,[-o*c+s*t.a6,-a*c+l*t.a6,0]);}else {const i=e.canonical.z-r.canonical.z,o=e.canonical.x-(e.canonical.x>>i<>i<>i)-r.canonical.x,l=(e.canonical.y>>i)-r.canonical.y,c=t.a6<a.maxzoom&&(r=a.maxzoom),r=a.minzoom&&!(null==s?void 0:s.dem);)s=this.findTileInCaches(e.scaledTo(r--).key);return s}findTileInCaches(e){let t=this.tileManager.getTileByID(e);return t||(t=this.tileManager._outOfViewCache.getByKey(e),t)}anyTilesAfterTime(e=Date.now()){return this._lastTilesetChange>=e}_isWithinTileRanges(e,t){const i=t[e.canonical.z];return !!i&&(e.wrap>i.minWrap||e.wrap=i.minTileXWrapped&&e.canonical.x<=i.maxTileXWrapped&&e.canonical.y>=i.minTileY&&e.canonical.y<=i.maxTileY)}}class rs{constructor(e,t,i){this._meshCache={},this.painter=e,this.tileManager=new as(t),this.options=i,this.exaggeration="number"==typeof i.exaggeration?i.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024;}destroy(){this._fbo&&(this._fbo.destroy(),this._fbo=null),this._fboCoordsTexture&&(this._fboCoordsTexture.destroy(),this._fboCoordsTexture=null),this._fboDepthTexture&&(this._fboDepthTexture.destroy(),this._fboDepthTexture=null),this._emptyDemTexture&&(this._emptyDemTexture.destroy(),this._emptyDemTexture=null),this._emptyDepthTexture&&(this._emptyDepthTexture.destroy(),this._emptyDepthTexture=null),this._coordsTexture&&(this._coordsTexture.destroy(),this._coordsTexture=null);for(const e in this._meshCache)this._meshCache[e].destroy();this._meshCache={},this.tileManager.destruct();}getDEMElevation(e,i,o,a=t.a6){var r;const s=e.normalizeCoordinates(i,o,a);if(!s)return 0;const n=this.getTerrainData(s.tileID),l=null===(r=n.tile)||void 0===r?void 0:r.dem;if(!l)return 0;const c=t.cC([],[s.x/a*t.a6,s.y/a*t.a6],n.u_terrain_matrix),h=[c[0]*l.dim,c[1]*l.dim],u=Math.floor(h[0]),d=Math.floor(h[1]),_=h[0]-u,p=h[1]-d;return l.get(u,d)*(1-_)*(1-p)+l.get(u+1,d)*_*(1-p)+l.get(u,d+1)*(1-_)*p+l.get(u+1,d+1)*_*p}getElevationForLngLatZoom(e,i){if(!t.cD(i,e.wrap()))return 0;const{tileID:o,mercatorX:a,mercatorY:r}=this._getOverscaledTileIDFromLngLatZoom(e,i);return this.getElevation(o,a%t.a6,r%t.a6,t.a6)}getElevationForLngLat(e,t){const i=Me(t,{maxzoom:this.tileManager.maxzoom,minzoom:this.tileManager.minzoom,tileSize:512,terrain:this});let o=0;for(const e of i)e.canonical.z>o&&(o=Math.min(e.canonical.z,this.tileManager.maxzoom));return this.getElevationForLngLatZoom(e,o)}getElevation(e,i,o,a=t.a6){return this.getDEMElevation(e,i,o,a)*this.exaggeration}getTerrainData(e){var i,o;if(!this._emptyDemTexture){const e=this.painter.context,i=new t.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new t.T(e,i,e.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new t.T(e,new t.R({width:1,height:1}),e.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=t.ap([]);}const a=this.tileManager.getSourceTile(e,!0);if((null==a?void 0:a.dem)&&(!a.demTexture||a.needsTerrainPrepare)){const e=this.painter.context;a.demTexture=this.painter.getTileTexture(a.dem.stride),a.demTexture?a.demTexture.update(a.dem.getPixels(),{premultiply:!1}):a.demTexture=new t.T(e,a.dem.getPixels(),e.gl.RGBA,{premultiply:!1}),a.demTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),a.needsTerrainPrepare=!1;}const r=a&&a.toString()+a.tileID.key+e.key;if(r&&!this._demMatrixCache[r]){const i=this.tileManager.getSource().maxzoom;let o=e.canonical.z-a.tileID.canonical.z;e.overscaledZ>e.canonical.z&&(e.canonical.z>=i?o=e.canonical.z-i:t.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));const s=e.canonical.x-(e.canonical.x>>o<>o<>8<<4|e>>8,i[t+3]=0;const o=new t.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(i.buffer)),a=new t.T(e,o,e.gl.RGBA,{premultiply:!1});return a.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._coordsTexture=a,a}pointCoordinate(e){this.painter.maybeDrawDepth(!0),this.painter.maybeDrawCoords();const i=new Uint8Array(4),o=this.painter.context,a=o.gl,r=Math.round(e.x*this.painter.pixelRatio/devicePixelRatio),s=Math.round(e.y*this.painter.pixelRatio/devicePixelRatio),n=Math.round(this.painter.height/devicePixelRatio);o.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),a.readPixels(r,n-s-1,1,1,a.RGBA,a.UNSIGNED_BYTE,i),o.bindFramebuffer.set(null);const l=i[0]+(i[2]>>4<<8),c=i[1]+((15&i[2])<<8),h=this.coordsIndex[255-i[3]],u=h&&this.tileManager.getTileByID(h);if(!u)return null;const d=this._coordsTextureSize,_=(1<0,a=o&&0===e.canonical.y,r=o&&e.canonical.y===(1<e.id!==t)),this._recentlyUsed.push(e.id);}stampObject(e){e.stamp=++this._stamp;}getOrCreateFreeObject(){for(const e of this._recentlyUsed)if(!this._objects[e].inUse)return this._objects[e];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");const e=this._createObject(this._objects.length);return this._objects.push(e),e}freeObject(e){e.inUse=!1;}freeAllObjects(){for(const e of this._objects)this.freeObject(e);}isFull(){return !(this._objects.length!e.inUse))}}const ns={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0,"color-relief":!0};class ls{constructor(e,t){this.painter=e,this.terrain=t,this.pool=new ss(e.context,30,t.tileManager.tileSize*t.qualityFactor);}destruct(){this.pool.destruct();}getTexture(e){return this.pool.getObjectForId(e.rtt[this._stacks.length-1].id).texture}prepareForRender(e,t){var i,o,a;this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.tileManager.getRenderableTiles(),this._renderableLayerIds=e._order.filter((i=>!e._layers[i].isHidden(t))),this._coordsAscending={};for(const t in e.tileManagers){this._coordsAscending[t]={};const i=e.tileManagers[t].getVisibleCoordinates(),o=e.tileManagers[t].getSource(),r=o instanceof te?o.terrainTileRanges:null;for(const e of i){const i=this.terrain.tileManager.getTerrainCoords(e,r);for(const e in i)(a=this._coordsAscending[t])[e]||(a[e]=[]),this._coordsAscending[t][e].push(i[e]);}}this._rttFingerprints={};for(const t of e._order){const a=e._layers[t],r=a.source;if(ns[a.type]&&!this._rttFingerprints[r]){this._rttFingerprints[r]={};const t=null!==(o=null===(i=e.tileManagers[r])||void 0===i?void 0:i.getState().revision)&&void 0!==o?o:0;for(const e in this._coordsAscending[r])this._rttFingerprints[r][e]=`${this._coordsAscending[r][e].map((e=>e.key)).sort().join()}#${t}`;}}for(const e of this._renderableTiles)for(const t in this._rttFingerprints){const i=this._rttFingerprints[t][e.tileID.key];i&&i!==e.rttFingerprint[t]&&(e.rtt=[]);}}renderLayer(e,i){if(e.isHidden(this.painter.transform.zoom))return !1;const o=Object.assign(Object.assign({},i),{isRenderingToTexture:!0}),a=e.type,r=this.painter,s=this._renderableLayerIds[this._renderableLayerIds.length-1]===e.id;if(ns[a]&&(this._prevType&&ns[this._prevType]||this._stacks.push([]),this._prevType=a,this._stacks[this._stacks.length-1].push(e.id),!s))return !0;if(ns[this._prevType]||ns[a]&&s){this._prevType=a;const e=this._stacks.length-1,i=this._stacks[e]||[];for(const a of this._renderableTiles){if(this.pool.isFull()&&(qa(this.painter,this.terrain,this._rttTiles,o),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(a),a.rtt[e]){const t=this.pool.getObjectForId(a.rtt[e].id);if(t.stamp===a.rtt[e].stamp){this.pool.useObject(t);continue}}const s=this.pool.getOrCreateFreeObject();this.pool.useObject(s),this.pool.stampObject(s),a.rtt[e]={id:s.id,stamp:s.stamp},r.context.bindFramebuffer.set(s.fbo.framebuffer),r.context.clear({color:t.bo.transparent,stencil:0}),r.currentStencilSource=void 0;for(const e of i){const t=r.style._layers[e],i=t.source?this._coordsAscending[t.source][a.tileID.key]:[a.tileID];r.context.viewport.set([0,0,s.fbo.width,s.fbo.height]),r._renderTileClippingMasks(t,i,!0),r.renderLayer(r,r.style.tileManagers[t.source],t,i,o),t.source&&(a.rttFingerprint[t.source]=this._rttFingerprints[t.source][a.tileID.key]);}}return qa(this.painter,this.terrain,this._rttTiles,o),this._rttTiles=[],this.pool.freeAllObjects(),ns[a]}return !1}}const cs={"AttributionControl.ToggleAttribution":"Toggle attribution","AttributionControl.MapFeedback":"Map feedback","FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"MapLibre logo","Map.Title":"Map","Marker.Title":"Map marker","NavigationControl.ResetBearing":"Drag to rotate map, click to reset north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","Popup.Close":"Close popup","ScaleControl.Feet":"ft","ScaleControl.Meters":"m","ScaleControl.Kilometers":"km","ScaleControl.Miles":"mi","ScaleControl.NauticalMiles":"nm","GlobeControl.Enable":"Enable globe","GlobeControl.Disable":"Disable globe","TerrainControl.Enable":"Enable terrain","TerrainControl.Disable":"Disable terrain","CooperativeGesturesHandler.WindowsHelpText":"Use Ctrl + scroll to zoom the map","CooperativeGesturesHandler.MacHelpText":"Use ⌘ + scroll to zoom the map","CooperativeGesturesHandler.MobileHelpText":"Use two fingers to move the map"},hs=i,us={hash:!1,interactive:!0,bearingSnap:7,zoomSnap:0,attributionControl:Jr,maplibreLogo:!1,refreshExpiredTiles:!0,canvasContextAttributes:{antialias:!1,preserveDrawingBuffer:!1,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,desynchronized:!1,contextType:void 0},scrollZoom:!0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,trackResize:!0,center:[0,0],elevation:0,zoom:0,bearing:0,pitch:0,roll:0,renderWorldCopies:!0,maxTileCacheSize:null,maxTileCacheZoomLevels:t.c.MAX_TILE_CACHE_ZOOM_LEVELS,transformRequest:null,transformCameraUpdate:null,transformConstrain:null,fadeDuration:300,crossSourceCollisions:!0,clickTolerance:3,localIdeographFontFamily:"sans-serif",pitchWithRotate:!0,rollEnabled:!1,reduceMotion:void 0,validateStyle:!0,maxCanvasSize:[4096,4096],cancelPendingTileRequestsWhileZooming:!0,centerClampedToGround:!0,experimentalZoomLevelsToOverscale:void 0,anisotropicFilterPitch:20};let ds=class extends Qr{get _ownerWindow(){var e,t;return (null===(t=null===(e=this._container)||void 0===e?void 0:e.ownerDocument)||void 0===t?void 0:t.defaultView)||window}constructor(e){var i,o,a;const r=Object.assign(Object.assign(Object.assign({},us),e),{canvasContextAttributes:Object.assign(Object.assign({},us.canvasContextAttributes),e.canvasContextAttributes)});if(null!=r.minZoom&&null!=r.maxZoom&&r.minZoom>r.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=r.minPitch&&null!=r.maxPitch&&r.minPitch>r.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=r.minPitch&&r.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=r.maxPitch&&r.maxPitch>180)throw new Error("maxPitch must be less than or equal to 180");const s=new Xt,l=new Jt;void 0!==r.minZoom&&s.setMinZoom(r.minZoom),void 0!==r.maxZoom&&s.setMaxZoom(r.maxZoom),void 0!==r.minPitch&&s.setMinPitch(r.minPitch),void 0!==r.maxPitch&&s.setMaxPitch(r.maxPitch),void 0!==r.renderWorldCopies&&s.setRenderWorldCopies(r.renderWorldCopies),null!==r.transformConstrain&&s.setConstrainOverride(r.transformConstrain),super(s,l,{bearingSnap:r.bearingSnap,zoomSnap:r.zoomSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new is,this._controls=[],this._mapId=t.ad(),this._lostContextStyle={style:null,images:null},this._contextLost=e=>{if(e.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.painter.destroy(),this._lostContextStyle=this._getStyleAndImages(),this.style){for(const e of Object.values(this.style._layers))if("custom"===e.type&&console.warn(`Custom layer with id '${e.id}' cannot be restored after WebGL context loss. You will need to re-add it manually after context restoration.`),e._listeners)for(const[t]of Object.entries(e._listeners))console.warn(`Custom layer with id '${e.id}' had event listeners for event '${t}' which cannot be restored after WebGL context loss. You will need to re-add them manually after context restoration.`);this.style.destroy(),this.style=null,this.fire(new t.n("webglcontextlost",{originalEvent:e}));}else this.fire(new t.n("webglcontextlost",{originalEvent:e}));},this._contextRestored=e=>{this._lostContextStyle.style&&this.setStyle(this._lostContextStyle.style,{diff:!1}),this._lostContextStyle.images&&this.style&&(this.style.imageManager.images=this._lostContextStyle.images),this._lostContextStyle={style:null,images:null},this._setupPainter(),this.resize(),this._update(),this._resizeInternal(),this.fire(new t.n("webglcontextrestored",{originalEvent:e}));},this._onMapScroll=e=>{if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update();},this._interactive=r.interactive,this._maxTileCacheSize=r.maxTileCacheSize,this._maxTileCacheZoomLevels=r.maxTileCacheZoomLevels,this._canvasContextAttributes=Object.assign({},r.canvasContextAttributes),this._trackResize=!0===r.trackResize,this._bearingSnap=r.bearingSnap,this._zoomSnap=r.zoomSnap,this._centerClampedToGround=r.centerClampedToGround,this._refreshExpiredTiles=!0===r.refreshExpiredTiles,this._fadeDuration=r.fadeDuration,this._crossSourceCollisions=!0===r.crossSourceCollisions,this._collectResourceTiming=!0===r.collectResourceTiming,this._locale=Object.assign(Object.assign({},cs),r.locale),this._clickTolerance=r.clickTolerance,this._overridePixelRatio=r.pixelRatio,this._maxCanvasSize=r.maxCanvasSize,this._zoomLevelsToOverscale=r.experimentalZoomLevelsToOverscale,this.transformCameraUpdate=r.transformCameraUpdate,this.transformConstrain=r.transformConstrain,this.cancelPendingTileRequestsWhileZooming=!0===r.cancelPendingTileRequestsWhileZooming,this.setAnisotropicFilterPitch(r.anisotropicFilterPitch),void 0!==r.reduceMotion&&(n.prefersReducedMotion=r.reduceMotion),this._imageQueueHandle=u.addThrottleControl((()=>this.isMoving())),this._requestManager=new _(r.transformRequest),this._container=this._resolveContainer(r.container),r.maxBounds&&this.setMaxBounds(r.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",(()=>this._update(!1))),this.on("moveend",(()=>this._update(!1))),this.on("zoom",(()=>this._update(!0))),this.on("terrain",(()=>{this.painter.terrainFacilitator.depthDirty=!0,this._update(!0);})),this.once("idle",(()=>this._idleTriggered=!0)),"undefined"!=typeof window&&(this._ownerWindow.addEventListener("online",this._onWindowOnline,!1),this._setupResizeObserver()),this.handlers=new Yr(this,r),this._hash=r.hash?new Ya("string"==typeof r.hash&&r.hash||void 0).addTo(this):void 0,(null===(i=this._hash)||void 0===i?void 0:i._onHashChange())||(this.jumpTo({center:r.center,elevation:r.elevation,zoom:r.zoom,bearing:r.bearing,pitch:r.pitch,roll:r.roll}),r.bounds&&(this.resize(),this.fitBounds(r.bounds,t.e({},r.fitBoundsOptions,{duration:0}))));const c="string"==typeof r.style||!("globe"===(null===(a=null===(o=r.style)||void 0===o?void 0:o.projection)||void 0===a?void 0:a.type));this.resize(null,c),this._localIdeographFontFamily=r.localIdeographFontFamily,this._validateStyle=r.validateStyle,r.style&&this.setStyle(r.style,{localIdeographFontFamily:r.localIdeographFontFamily}),r.attributionControl&&this.addControl(new es("boolean"==typeof r.attributionControl?void 0:r.attributionControl)),r.maplibreLogo&&this.addControl(new ts,r.logoPosition),this.on("style.load",(()=>{if(c||this._resizeTransform(),this.transform.unmodified){const e=t.V(this.style.stylesheet,["center","zoom","bearing","pitch","roll"]);this.jumpTo(e);}})),this.on("data",(e=>{this._update("style"===e.dataType),this.fire(new t.n(`${e.dataType}data`,e));})),this.on("dataloading",(e=>{this.fire(new t.n(`${e.dataType}dataloading`,e));})),this.on("dataabort",(e=>{this.fire(new t.n("sourcedataabort",e));}));}_getMapId(){return this._mapId}setGlobalStateProperty(e,t){return this.style.setGlobalStateProperty(e,t),this._update(!0)}getGlobalState(){return this.style.getGlobalState()}addControl(e,i){if(void 0===i&&(i=e.getDefaultPosition?e.getDefaultPosition():"top-right"),!(null==e?void 0:e.onAdd))return this.fire(new t.l(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const o=e.onAdd(this);this._controls.push(e);const a=this._controlPositions[i];return i.includes("bottom")?a.insertBefore(o,a.firstChild):a.appendChild(o),this}removeControl(e){if(!(null==e?void 0:e.onRemove))return this.fire(new t.l(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this}hasControl(e){return this._controls.includes(e)}coveringTiles(e){return Me(this.transform,e)}calculateCameraOptionsFromTo(e,t,i,o){return null==o&&this.terrain&&(o=this.terrain.getElevationForLngLat(i,this.transform)),super.calculateCameraOptionsFromTo(e,t,i,o)}resize(e,i=!0){if(null!==this._lostContextStyle.style)return this;this._resizeInternal(i);const o=!this._moving;return o&&(this.stop(),this.fire(new t.n("movestart",e)).fire(new t.n("move",e))),this.fire(new t.n("resize",e)),o&&this.fire(new t.n("moveend",e)),this}_resizeInternal(e=!0){const[t,i]=this._containerDimensions(),o=this._getClampedPixelRatio(t,i);if(this._resizeCanvas(t,i,o),this.painter.resize(t,i,o),this.painter.overLimit()){const e=this.painter.context.gl;this._maxCanvasSize=[e.drawingBufferWidth,e.drawingBufferHeight];const o=this._getClampedPixelRatio(t,i);this._resizeCanvas(t,i,o),this.painter.resize(t,i,o);}this._resizeTransform(e);}_resizeTransform(e=!0){var t;const[i,o]=this._containerDimensions();this.transform.resize(i,o,e),null===(t=this._requestedCameraState)||void 0===t||t.resize(i,o,e);}_getClampedPixelRatio(e,t){const{0:i,1:o}=this._maxCanvasSize,a=this.getPixelRatio(),r=e*a,s=t*a;return Math.min(r>i?i/r:1,s>o?o/s:1)*a}getPixelRatio(){var e;return null!==(e=this._overridePixelRatio)&&void 0!==e?e:devicePixelRatio}setPixelRatio(e){this._overridePixelRatio=e,this.resize();}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(e){return this.transform.setMaxBounds(G.convert(e)),this._update()}setMinZoom(e){if((e=null==e?-2:e)>=-2&&e<=this.transform.maxZoom){const i=this.transform.zoom,o=this._getTransformForUpdate();return o.setMinZoom(e),this._applyUpdatedTransform(o),this._update(),i!==this.transform.zoom&&this.fire(new t.n("zoomstart")).fire(new t.n("zoom")).fire(new t.n("zoomend")).fire(new t.n("movestart")).fire(new t.n("move")).fire(new t.n("moveend")),this}throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(e){if((e=null==e?22:e)>=this.transform.minZoom){const i=this.transform.zoom,o=this._getTransformForUpdate();return o.setMaxZoom(e),this._applyUpdatedTransform(o),this._update(),i!==this.transform.zoom&&this.fire(new t.n("zoomstart")).fire(new t.n("zoom")).fire(new t.n("zoomend")).fire(new t.n("movestart")).fire(new t.n("move")).fire(new t.n("moveend")),this}throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(e){if((e=null==e?0:e)<0)throw new Error("minPitch must be greater than or equal to 0");if(e>=0&&e<=this.transform.maxPitch){const i=this.transform.pitch,o=this._getTransformForUpdate();return o.setMinPitch(e),this._applyUpdatedTransform(o),this._update(),i!==this.transform.pitch&&this.fire(new t.n("pitchstart")).fire(new t.n("pitch")).fire(new t.n("pitchend")).fire(new t.n("movestart")).fire(new t.n("move")).fire(new t.n("moveend")),this}throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(e){if((e=null==e?60:e)>180)throw new Error("maxPitch must be less than or equal to 180");if(e>=this.transform.minPitch){const i=this.transform.pitch,o=this._getTransformForUpdate();return o.setMaxPitch(e),this._applyUpdatedTransform(o),this._update(),i!==this.transform.pitch&&this.fire(new t.n("pitchstart")).fire(new t.n("pitch")).fire(new t.n("pitchend")).fire(new t.n("movestart")).fire(new t.n("move")).fire(new t.n("moveend")),this}throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getAnisotropicFilterPitch(){return this._anisotropicFilterPitch}setAnisotropicFilterPitch(e){if((e=null==e?20:e)>180)throw new Error("anisotropicFilterPitch must be less than or equal to 180");if(e<0)throw new Error("anisotropicFilterPitch must be greater than or equal to 0");return this._anisotropicFilterPitch=e,this._update()}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(e){return this.transform.setRenderWorldCopies(e),this._update()}setTransformConstrain(e){return this.transform.setConstrainOverride(e),this._update()}project(e){return this.transform.locationToScreenPoint(t.W.convert(e),this.style&&this.terrain)}unproject(e){return this.transform.screenPointToLocation(t.P.convert(e),this.terrain)}isMoving(){var e;return this._moving||(null===(e=this.handlers)||void 0===e?void 0:e.isMoving())}isZooming(){var e;return this._zooming||(null===(e=this.handlers)||void 0===e?void 0:e.isZooming())}isRotating(){var e;return this._rotating||(null===(e=this.handlers)||void 0===e?void 0:e.isRotating())}_createDelegatedListener(e,t,i){if("mouseenter"===e||"mouseover"===e){let o=!1;const a=a=>{const r=t.filter((e=>this.getLayer(e))),s=0!==r.length?this.queryRenderedFeatures(a.point,{layers:r}):[];s.length?o||(o=!0,i.call(this,new nr(e,this,a.originalEvent,{features:s}))):o=!1;};return {layers:t,listener:i,delegates:{mousemove:a,mouseout:()=>{o=!1;}}}}if("mouseleave"===e||"mouseout"===e){let o=!1;const a=a=>{const r=t.filter((e=>this.getLayer(e)));(0!==r.length?this.queryRenderedFeatures(a.point,{layers:r}):[]).length?o=!0:o&&(o=!1,i.call(this,new nr(e,this,a.originalEvent)));},r=t=>{o&&(o=!1,i.call(this,new nr(e,this,t.originalEvent)));};return {layers:t,listener:i,delegates:{mousemove:a,mouseout:r}}}{const o=e=>{const o=t.filter((e=>this.getLayer(e))),a=0!==o.length?this.queryRenderedFeatures(e.point,{layers:o}):[];a.length&&(e.features=a,i.call(this,e),delete e.features);};return {layers:t,listener:i,delegates:{[e]:o}}}}_saveDelegatedListener(e,t){var i;this._delegatedListeners||(this._delegatedListeners={}),(i=this._delegatedListeners)[e]||(i[e]=[]),this._delegatedListeners[e].push(t);}_removeDelegatedListener(e,t,i){var o;if(!(null===(o=this._delegatedListeners)||void 0===o?void 0:o[e]))return;const a=this._delegatedListeners[e];for(let e=0;et.includes(e)))){for(const e in o.delegates)this.off(e,o.delegates[e]);return void a.splice(e,1)}}}on(e,t,i){if(void 0===i)return super.on(e,t);const o="string"==typeof t?[t]:t,a=this._createDelegatedListener(e,o,i);this._saveDelegatedListener(e,a);for(const e in a.delegates)this.on(e,a.delegates[e]);return {unsubscribe:()=>{this._removeDelegatedListener(e,o,i);}}}once(e,t,i){if(void 0===i)return super.once(e,t);const o="string"==typeof t?[t]:t,a=this._createDelegatedListener(e,o,i);for(const t in a.delegates){const r=a.delegates[t];a.delegates[t]=(...t)=>{this._removeDelegatedListener(e,o,i),r(...t);};}this._saveDelegatedListener(e,a);for(const e in a.delegates)this.once(e,a.delegates[e]);return this}off(e,t,i){return void 0===i?super.off(e,t):(this._removeDelegatedListener(e,"string"==typeof t?[t]:t,i),this)}queryRenderedFeatures(e,i){if(!this.style)return [];let o;const a=e instanceof t.P||Array.isArray(e),r=a?e:[[0,0],[this.transform.width,this.transform.height]];if(i||(i=(a?{}:e)||{}),r instanceof t.P||"number"==typeof r[0])o=[t.P.convert(r)];else {const e=t.P.convert(r[0]),i=t.P.convert(r[1]);o=[e,new t.P(i.x,e.y),i,new t.P(e.x,i.y),e];}return this.style.queryRenderedFeatures(o,i,this.transform)}querySourceFeatures(e,t){return this.style.querySourceFeatures(e,t)}setStyle(e,i){return !1!==(i=t.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._updateStyle(e,i))}setTransformRequest(e){return this._requestManager.setTransformRequest(e),this}_getUIString(e){const t=this._locale[e];if(null==t)throw new Error(`Missing UI string '${e}'`);return t}_updateStyle(e,t){var i,o,a;if(null===(i=this._diffStyleRequest)||void 0===i||i.abort(),this._diffStyleRequest=null,t.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",(()=>this._updateStyle(e,t)));const r=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!e)),e?(this.style=new ki(this,t||{}),this.style.setEventedParent(this,{style:this.style}),"string"==typeof e?this.style.loadURL(e,t,r):this.style.loadJSON(e,t,r),this):(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),null===(a=null===(o=this.style)||void 0===o?void 0:o.projection)||void 0===a||a.destroy(),delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new ki(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty());}_diffStyle(e,i){return t._(this,void 0,void 0,(function*(){var o;if(null===(o=this._diffStyleRequest)||void 0===o||o.abort(),"string"==typeof e){const o=e;this._diffStyleRequest=new AbortController;const a=this._diffStyleRequest;try{const e=yield this._requestManager.transformRequest(o,"Style");if(a.signal.aborted)return void(this._diffStyleRequest=null);const r=yield t.k(e,a);this._diffStyleRequest=null,this._updateDiff(r.data,i);}catch(e){this._diffStyleRequest=null,t.$(e)||this.fire(new t.l(t.d(e)));}}else "object"==typeof e&&(this._diffStyleRequest=null,this._updateDiff(e,i));}))}_updateDiff(e,i){try{this.style.setState(e,i)&&this._update(!0);}catch(o){t.w(`Unable to perform style diff: ${t.d(o).message}. Rebuilding the style from scratch.`),this._updateStyle(e,i);}}getStyle(){if(this.style)return this.style.serialize()}_getStyleAndImages(){return this.style?{style:this.style.serialize(),images:this.style.imageManager.cloneImages()}:{style:null,images:{}}}isStyleLoaded(){if(this.style)return this.style.loaded();t.w("There is no style added to the map.");}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(e){var i;const o=null===(i=this.style)||void 0===i?void 0:i.tileManagers[e];if(void 0!==o)return o.loaded();this.fire(new t.l(new Error(`There is no tile manager with ID '${e}'`)));}setTerrain(e){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),e){const i=this.style.tileManagers[e.source];if(!i)throw new Error(`cannot load terrain, because there exists no source with ID: ${e.source}`);null===this.terrain&&i.reload();for(const i in this.style._layers){const o=this.style._layers[i];"hillshade"===o.type&&o.source===e.source&&t.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality."),"color-relief"===o.type&&o.source===e.source&&t.w("You are using the same source for a color-relief layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.");}this.terrain=new rs(this.painter,i,e),this.painter.renderToTexture=new ls(this.painter,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._terrainDataCallback=t=>{var i;"style"===t.dataType?this.terrain.tileManager.freeRtt():"source"===t.dataType&&t.tile&&(t.sourceId!==e.source||this._elevationFreeze||(this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))),"image"===(null===(i=t.source)||void 0===i?void 0:i.type)?this.terrain.tileManager.freeRtt():this.terrain.tileManager.freeRtt(t.tile.tileID));},this.style.on("data",this._terrainDataCallback);}else this.terrain&&this.terrain.destroy(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0);return this.fire(new t.n("terrain",{terrain:e})),this}getTerrain(){var e,t;return null!==(t=null===(e=this.terrain)||void 0===e?void 0:e.options)&&void 0!==t?t:null}areTilesLoaded(){var e;const t=null===(e=this.style)||void 0===e?void 0:e.tileManagers;for(const e of Object.values(t))if(!e.areTilesLoaded())return !1;return !0}removeSource(e){return this.style.removeSource(e),this._update(!0)}getSource(e){return this.style.getSource(e)}setSourceTileLodParams(e,t,i){if(i){const o=this.getSource(i);if(!o)throw new Error(`There is no source with ID "${i}", cannot set LOD parameters`);o.calculateTileZoom=Te(Math.max(1,e),Math.max(1,t));}else for(const i in this.style.tileManagers)this.style.tileManagers[i].getSource().calculateTileZoom=Te(Math.max(1,e),Math.max(1,t));return this._update(!0),this}refreshTiles(e,i){const o=this.style.tileManagers[e];if(!o)throw new Error(`There is no tile manager with ID "${e}", cannot refresh tile`);void 0===i?o.reload(!0):o.refreshTiles(i.map((e=>new t.aa(e.z,e.x,e.y))));}addImage(e,i,o={}){const{pixelRatio:a=1,sdf:r=!1,stretchX:s,stretchY:l,content:c,textFitWidth:h,textFitHeight:u}=o;if(this._lazyInitEmptyStyle(),!(i instanceof HTMLImageElement||t.b(i))){if(void 0===i.width||void 0===i.height)return this.fire(new t.l(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{const{width:o,height:n,data:d}=i,_=i;return this.style.addImage(e,{data:new t.R({width:o,height:n},new Uint8Array(d)),pixelRatio:a,stretchX:s,stretchY:l,content:c,textFitWidth:h,textFitHeight:u,sdf:r,version:0,userImage:_}),_.onAdd&&_.onAdd(this,e),this}}{const{width:o,height:d,data:_}=n.getImageData(i);this.style.addImage(e,{data:new t.R({width:o,height:d},_),pixelRatio:a,stretchX:s,stretchY:l,content:c,textFitWidth:h,textFitHeight:u,sdf:r,version:0});}}updateImage(e,i){const o=this.style.getImage(e);if(!o)return this.fire(new t.l(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const a=i instanceof HTMLImageElement||t.b(i)?n.getImageData(i):i,{width:r,height:s,data:l}=a;if(void 0===r||void 0===s)return this.fire(new t.l(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(r!==o.data.width||s!==o.data.height)return this.fire(new t.l(new Error("The width and height of the updated image must be that same as the previous version of the image")));const c=!(i instanceof HTMLImageElement||t.b(i));return o.data.replace(l,c),this.style.updateImage(e,o),this}getImage(e){return this.style.getImage(e)}hasImage(e){return e?!!this.style.getImage(e):(this.fire(new t.l(new Error("Missing required image id"))),!1)}removeImage(e){this.style.removeImage(e);}loadImage(e){return t._(this,void 0,void 0,(function*(){return u.getImage(yield this._requestManager.transformRequest(e,"Image"),new AbortController)}))}listImages(){return this.style.listImages()}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style.getLayer(e)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(e,t,i){return this.style.setLayerZoomRange(e,t,i),this._update(!0)}setFilter(e,t,i={}){return this.style.setFilter(e,t,i),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,i,o={}){return this.style.setPaintProperty(e,t,i,o),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,i,o={}){return this.style.setLayoutProperty(e,t,i,o),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setGlyphs(e,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(e,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(e,t,i={}){return this._lazyInitEmptyStyle(),this.style.addSprite(e,t,i,(e=>{e||this._update(!0);})),this}removeSprite(e){return this._lazyInitEmptyStyle(),this.style.removeSprite(e),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(e,t,(e=>{e||this._update(!0);})),this}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setSky(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSky(e,t),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let e=0,t=0;return this._container&&(e=this._container.clientWidth||400,t=this._container.clientHeight||300),[e,t]}_setupResizeObserver(){var e;let t=!1;const i=Ka((e=>{this._trackResize&&!this._removed&&(this.resize(e),this.redraw());}),50),o=null!==(e=this._ownerWindow.ResizeObserver)&&void 0!==e?e:ResizeObserver;this._resizeObserver=new o((e=>{t?i(e):t=!0;})),this._resizeObserver.observe(this._container);}_resolveContainer(e){if("string"==typeof e){const t=document.getElementById(e);if(!t)throw new Error(`Container '${e}' not found.`);return t}if(e instanceof HTMLElement)return e;if(e&&"object"==typeof e&&1===e.nodeType)return e;throw new Error("Invalid type: 'container' must be a String or HTMLElement.")}_setupContainer(){const e=this._container;e.classList.add("maplibregl-map");const t=this._canvasContainer=d.create("div","maplibregl-canvas-container",e);this._interactive&&t.classList.add("maplibregl-interactive"),this._canvas=d.create("canvas","maplibregl-canvas",t),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");const i=this._containerDimensions(),o=this._getClampedPixelRatio(i[0],i[1]);this._resizeCanvas(i[0],i[1],o);const a=this._controlContainer=d.create("div","maplibregl-control-container",e),r=this._controlPositions={};for(const e of ["top-left","top-right","bottom-left","bottom-right"])r[e]=d.create("div",`maplibregl-ctrl-${e} `,a);this._container.addEventListener("scroll",this._onMapScroll,!1);}_resizeCanvas(e,t,i){this._canvas.width=Math.floor(i*e),this._canvas.height=Math.floor(i*t),this._canvas.style.width=`${e}px`,this._canvas.style.height=`${t}px`;}_setupPainter(){const e=Object.assign(Object.assign({},this._canvasContextAttributes),{alpha:!0,depth:!0,stencil:!0,premultipliedAlpha:!0});let t=null;this._canvas.addEventListener("webglcontextcreationerror",(i=>{t={requestedAttributes:e},i&&(t.statusMessage=i.statusMessage,t.type=i.type);}),{once:!0});let i=null;if(i=this._canvasContextAttributes.contextType?this._canvas.getContext(this._canvasContextAttributes.contextType,e):this._canvas.getContext("webgl2",e)||this._canvas.getContext("webgl",e),!i){const e="Failed to initialize WebGL";throw t?(t.message=e,new Error(JSON.stringify(t))):new Error(e)}this.painter=new Xa(i,this.transform);}migrateProjection(e,i){super.migrateProjection(e,i),this.painter.transform=e,this.fire(new t.n("projectiontransition",{newProjection:this.style.projection.name}));}loaded(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){var t;return (null===(t=this.style)||void 0===t?void 0:t._loaded)?(this._styleDirty||(this._styleDirty=e),this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e);}_render(e){var i,o,a,r,s,n;const l=this._idleTriggered?this._fadeDuration:0,h=(null===(i=this.style.projection)||void 0===i?void 0:i.transitionState)>0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),this._removed)return;let u=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const e=this.transform.zoom,i=c();this.style.zoomHistory.update(e,i);const o=new t.J(e,{now:i,fadeDuration:l,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),a=o.crossFadingFactor();1===a&&a===this._crossFadingFactor||(u=!0,this._crossFadingFactor=a),this.style.update(o);}const d=(null===(o=this.style.projection)||void 0===o?void 0:o.transitionState)>0!==h;null===(a=this.style.projection)||void 0===a||a.setErrorQueryLatitudeDegrees(this.transform.center.lat),this.transform.setTransitionState(null===(r=this.style.projection)||void 0===r?void 0:r.transitionState,null===(s=this.style.projection)||void 0===s?void 0:s.latitudeErrorCorrectionRadians),this.style&&(this._sourcesDirty||d)&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.tileManager.update(this.transform,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),!this._elevationFreeze&&this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0)),this._placementDirty=null===(n=this.style)||void 0===n?void 0:n._updatePlacement(this.transform,this.showCollisionBoxes,l,this._crossSourceCollisions,d),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:l,showPadding:this.showPadding,anisotropicFilterPitch:this.getAnisotropicFilterPitch()}),this.fire(new t.n("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new t.n("load"))),this.style&&(this.style.hasTransitions()||u)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const _=this._sourcesDirty||this._styleDirty||this._placementDirty;return _||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.n("idle")),!this._loaded||this._fullyLoaded||_||(this._fullyLoaded=!0),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var e,i;this._hash&&this._hash.remove();for(const e of this._controls)e.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),null===(e=this._diffStyleRequest)||void 0===e||e.abort(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),"undefined"!=typeof window&&this._ownerWindow.removeEventListener("online",this._onWindowOnline,!1),u.removeThrottleControl(this._imageQueueHandle),null===(i=this._resizeObserver)||void 0===i||i.disconnect();const o=this.painter.context.gl.getExtension("WEBGL_lose_context");(null==o?void 0:o.loseContext)&&o.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),this._canvasContainer.remove(),this._controlContainer.remove(),this._container.removeEventListener("scroll",this._onMapScroll,!1),this._container.classList.remove("maplibregl-map"),this._removed=!0,this.fire(new t.n("remove"));}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,n.frame(this._frameRequest,(e=>{this._frameRequest=null;try{this._render(e);}catch(e){if(!t.$(e)&&!function(e){return e.message===na}(e))throw e}}),(()=>{}),this._ownerWindow));}get showTileBoundaries(){return !!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update());}get showPadding(){return !!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update());}get showCollisionBoxes(){return !!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update());}get showOverdrawInspector(){return !!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update());}get repaint(){return !!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint());}get vertices(){return !!this._vertices}set vertices(e){this._vertices=e,this._update();}get version(){return hs}getCameraTargetElevation(){return this.transform.elevation}getProjection(){return this.style.getProjection()}setProjection(e){return this._lazyInitEmptyStyle(),this.style.setProjection(e),this._update(!0)}};const _s={showCompass:!0,showZoom:!0,visualizePitch:!1,visualizeRoll:!0};class ps{constructor(e,i,o=!1){this.mousedown=e=>{this.startMove(e,d.mousePos(this.element,e)),window.addEventListener("mousemove",this.mousemove),window.addEventListener("mouseup",this.mouseup);},this.mousemove=e=>{this.move(e,d.mousePos(this.element,e));},this.mouseup=e=>{this._rotatePitchHandler.dragEnd(e),this.offTemp();},this.touchstart=e=>{1!==e.targetTouches.length?this.reset():(this._startPos=this._lastPos=d.touchPos(this.element,e.targetTouches)[0],this.startMove(e,this._startPos),window.addEventListener("touchmove",this.touchmove,{passive:!1}),window.addEventListener("touchend",this.touchend));},this.touchmove=e=>{1!==e.targetTouches.length?this.reset():(this._lastPos=d.touchPos(this.element,e.targetTouches)[0],this.move(e,this._lastPos));},this.touchend=e=>{0===e.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this._rotatePitchHandler.reset(),delete this._startPos,delete this._lastPos,this.offTemp();},this._clickTolerance=10,this.element=i;const a=new Pr;this._rotatePitchHandler=new vr({clickTolerance:3,move:(e,a)=>{const r=i.getBoundingClientRect(),s=new t.P((r.bottom-r.top)/2,(r.right-r.left)/2);return {bearingDelta:t.cx(new t.P(e.x,a.y),a,s),pitchDelta:o?-.5*(a.y-e.y):void 0}},moveStateManager:a,enable:!0,assignEvents:()=>{}}),this.map=e,i.addEventListener("mousedown",this.mousedown),i.addEventListener("touchstart",this.touchstart,{passive:!1}),i.addEventListener("touchcancel",this.reset);}startMove(e,t){this._rotatePitchHandler.dragStart(e,t),d.disableDrag();}move(e,t){const i=this.map,{bearingDelta:o,pitchDelta:a}=this._rotatePitchHandler.dragMove(e,t)||{};o&&i.setBearing(i.getBearing()+o),a&&i.setPitch(i.getPitch()+a);}off(){const e=this.element;e.removeEventListener("mousedown",this.mousedown),e.removeEventListener("touchstart",this.touchstart),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),e.removeEventListener("touchcancel",this.reset),this.offTemp();}offTemp(){d.enableDrag(),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend);}}let ms;function fs(e,i,o,a=!1){if(a||!o.getCoveringTilesDetailsProvider().allowWorldCopies())return null==e?void 0:e.wrap();const r=new t.W(e.lng,e.lat);if(e=new t.W(e.lng,e.lat),i){const a=new t.W(e.lng-360,e.lat),r=new t.W(e.lng+360,e.lat),s=o.locationToScreenPoint(e).distSqr(i);o.locationToScreenPoint(a).distSqr(i)180;){const t=o.locationToScreenPoint(e);if(t.x>=0&&t.y>=0&&t.x<=o.width&&t.y<=o.height)break;e.lng>o.center.lng?e.lng-=360:e.lng+=360;}return e.lng!==r.lng&&o.isPointOnMapSurface(o.locationToScreenPoint(e))?e:r}const gs={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function vs(e,t,i){const o=e.classList;for(const e in gs)o.remove(`maplibregl-${i}-anchor-${e}`);o.add(`maplibregl-${i}-anchor-${t}`);}class xs extends t.E{constructor(e){if(super(),this._onClick=e=>{this.fire(new t.n("click",{originalEvent:e}));},this._onKeyPress=e=>{"Space"!==e.code&&"Enter"!==e.code||this.togglePopup();},this._onMapClick=e=>{const t=e.originalEvent.target,i=this._element;this._popup&&(t===i||i.contains(t))&&this.togglePopup();},this._update=e=>{if(!this._map)return;const t=this._map.loaded()&&!this._map.isMoving();("terrain"===(null==e?void 0:e.type)||"render"===(null==e?void 0:e.type)&&!t)&&this._map.once("render",this._update),this._lngLat=fs(this._lngLat,this._flatPos,this._map.transform),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationToScreenPoint(this._lngLat)._add(this._offset));let i="";"viewport"===this._rotationAlignment||"auto"===this._rotationAlignment?i=`rotateZ(${this._rotation}deg)`:"map"===this._rotationAlignment&&(i=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let o="";"viewport"===this._pitchAlignment||"auto"===this._pitchAlignment?o="rotateX(0deg)":"map"===this._pitchAlignment&&(o=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||e&&"moveend"!==e.type||(this._pos=this._pos.round()),this._element.style.transform=`${gs[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${o} ${i}`,n.frameAsync(new AbortController,this._map._ownerWindow).then((()=>{this._updateOpacity("moveend"===(null==e?void 0:e.type));})).catch((()=>{}));},this._onMove=e=>{if(!this._isDragging){const t=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=t;}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none","pending"===this._state&&(this._state="active",this.fire(new t.n("dragstart"))),this.fire(new t.n("drag")));},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),"active"===this._state&&this.fire(new t.n("dragend")),this._state="inactive";},this._addDragHandler=e=>{this._element.contains(e.originalEvent.target)&&(e.preventDefault(),this._positionDelta=e.point.sub(this._pos).add(this._offset),this._pointerdownPos=e.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp));},this._anchor=(null==e?void 0:e.anchor)||"center",this._color=(null==e?void 0:e.color)||"#3FB1CE",this._scale=(null==e?void 0:e.scale)||1,this._draggable=(null==e?void 0:e.draggable)||!1,this._clickTolerance=(null==e?void 0:e.clickTolerance)||0,this._subpixelPositioning=(null==e?void 0:e.subpixelPositioning)||!1,this._isDragging=!1,this._state="inactive",this._rotation=(null==e?void 0:e.rotation)||0,this._rotationAlignment=(null==e?void 0:e.rotationAlignment)||"auto",this._pitchAlignment=(null==e?void 0:e.pitchAlignment)&&"auto"!==e.pitchAlignment?e.pitchAlignment:this._rotationAlignment,this.setOpacity(null==e?void 0:e.opacity,null==e?void 0:e.opacityWhenCovered),null==e?void 0:e.element)this._element=e.element,this._offset=t.P.convert((null==e?void 0:e.offset)||[0,0]);else {this._defaultMarker=!0,this._element=d.create("div");const i=d.createNS("http://www.w3.org/2000/svg","svg"),o=41,a=27;i.setAttributeNS(null,"display","block"),i.setAttributeNS(null,"height",`${o}px`),i.setAttributeNS(null,"width",`${a}px`),i.setAttributeNS(null,"viewBox",`0 0 ${a} ${o}`);const r=d.createNS("http://www.w3.org/2000/svg","g");r.setAttributeNS(null,"stroke","none"),r.setAttributeNS(null,"stroke-width","1"),r.setAttributeNS(null,"fill","none"),r.setAttributeNS(null,"fill-rule","evenodd");const s=d.createNS("http://www.w3.org/2000/svg","g");s.setAttributeNS(null,"fill-rule","nonzero");const n=d.createNS("http://www.w3.org/2000/svg","g");n.setAttributeNS(null,"transform","translate(3.0, 29.0)"),n.setAttributeNS(null,"fill","#000000");const l=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(const e of l){const t=d.createNS("http://www.w3.org/2000/svg","ellipse");t.setAttributeNS(null,"opacity","0.04"),t.setAttributeNS(null,"cx","10.5"),t.setAttributeNS(null,"cy","5.80029008"),t.setAttributeNS(null,"rx",e.rx),t.setAttributeNS(null,"ry",e.ry),n.appendChild(t);}const c=d.createNS("http://www.w3.org/2000/svg","g");c.setAttributeNS(null,"fill",this._color);const h=d.createNS("http://www.w3.org/2000/svg","path");h.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),c.appendChild(h);const u=d.createNS("http://www.w3.org/2000/svg","g");u.setAttributeNS(null,"opacity","0.25"),u.setAttributeNS(null,"fill","#000000");const _=d.createNS("http://www.w3.org/2000/svg","path");_.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),u.appendChild(_);const p=d.createNS("http://www.w3.org/2000/svg","g");p.setAttributeNS(null,"transform","translate(6.0, 7.0)"),p.setAttributeNS(null,"fill","#FFFFFF");const m=d.createNS("http://www.w3.org/2000/svg","g");m.setAttributeNS(null,"transform","translate(8.0, 8.0)");const f=d.createNS("http://www.w3.org/2000/svg","circle");f.setAttributeNS(null,"fill","#000000"),f.setAttributeNS(null,"opacity","0.25"),f.setAttributeNS(null,"cx","5.5"),f.setAttributeNS(null,"cy","5.5"),f.setAttributeNS(null,"r","5.4999962");const g=d.createNS("http://www.w3.org/2000/svg","circle");g.setAttributeNS(null,"fill","#FFFFFF"),g.setAttributeNS(null,"cx","5.5"),g.setAttributeNS(null,"cy","5.5"),g.setAttributeNS(null,"r","5.4999962"),m.appendChild(f),m.appendChild(g),s.appendChild(n),s.appendChild(c),s.appendChild(u),s.appendChild(p),s.appendChild(m),i.appendChild(s),i.setAttributeNS(null,"height",o*this._scale+"px"),i.setAttributeNS(null,"width",a*this._scale+"px"),this._element.appendChild(i),this._offset=t.P.convert((null==e?void 0:e.offset)||[0,-14]);}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",(e=>{e.preventDefault();})),this._element.addEventListener("mousedown",(e=>{e.preventDefault();})),vs(this._element,this._anchor,"marker"),null==e?void 0:e.className)for(const t of e.className.split(" "))this._element.classList.add(t);this._popup=null;}addTo(e){return this.remove(),this._map=e,this._element.hasAttribute("aria-label")||this._element.setAttribute("aria-label",e._getUIString("Marker.Title")),this._element.hasAttribute("role")||this._element.setAttribute("role","button"),e.getCanvasContainer().appendChild(this._element),e.on("move",this._update),e.on("moveend",this._update),e.on("terrain",this._update),e.on("projectiontransition",this._update),this._element.addEventListener("click",this._onClick),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("projectiontransition",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),this._element.removeEventListener("click",this._onClick),this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.W.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),e){if(!("offset"in e.options)){const t=38.1,i=13.5,o=Math.abs(i)/Math.SQRT2;e.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-t],"bottom-left":[o,-1*(t-i+o)],"bottom-right":[-o,-1*(t-i+o)],left:[i,-1*(t-i)],right:[-i,-1*(t-i)]}:this._offset;}this._popup=e,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress);}return this}setSubpixelPositioning(e){return this._subpixelPositioning=e,this}getPopup(){return this._popup}togglePopup(){const e=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:e?(e.isOpen()?e.remove():(e.setLngLat(this._lngLat),e.addTo(this._map)),this):this}_updateOpacity(e=!1){var i,o;const a=null===(i=this._map)||void 0===i?void 0:i.terrain,r=this._map.transform.isLocationOccluded(this._lngLat);if(!a||r){const e=r?this._opacityWhenCovered:this._opacity;return void(this._element.style.opacity!==e&&(this._element.style.opacity=e,this._element.classList.toggle("maplibregl-marker-covered",r)))}if(e)this._opacityTimeout=null;else {if(this._opacityTimeout)return;this._opacityTimeout=setTimeout((()=>{this._opacityTimeout=null;}),100);}const s=this._map,n=s.terrain.depthAtPoint(this._pos),l=s.terrain.getElevationForLngLat(this._lngLat,s.transform);if(s.transform.lngLatToCameraDepth(this._lngLat,l)-n<.006)return this._element.style.opacity=this._opacity,void this._element.classList.remove("maplibregl-marker-covered");const c=-this._offset.y/s.transform.pixelsPerMeter,h=Math.sin(s.getPitch()*Math.PI/180)*c,u=s.terrain.depthAtPoint(new t.P(this._pos.x,this._pos.y-this._offset.y)),d=s.transform.lngLatToCameraDepth(this._lngLat,l+h)-u>.006;(null===(o=this._popup)||void 0===o?void 0:o.isOpen())&&d&&this._popup.remove(),this._element.style.opacity=d?this._opacityWhenCovered:this._opacity,this._element.classList.toggle("maplibregl-marker-covered",d);}getOffset(){return this._offset}setOffset(e){return this._offset=t.P.convert(e),this._update(),this}addClassName(e){this._element.classList.add(e);}removeClassName(e){this._element.classList.remove(e);}toggleClassName(e){return this._element.classList.toggle(e)}setDraggable(e){return this._draggable=!!e,this._map&&(e?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(e){return this._rotation=e||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(e){return this._rotationAlignment=e||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(e){return this._pitchAlignment=e&&"auto"!==e?e:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(e,t){return (void 0===this._opacity||void 0===e&&void 0===t)&&(this._opacity="1",this._opacityWhenCovered="0.2"),void 0!==e&&(this._opacity=String(e)),void 0!==t&&(this._opacityWhenCovered=String(t)),this._map&&this._updateOpacity(!0),this}}const bs={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let ys=0,ws=!1;const Ts={maxWidth:100,unit:"metric"};function Ps(e,t,i){const o=(null==i?void 0:i.maxWidth)||100,a=e._container.clientHeight/2,r=e._container.clientWidth/2,s=e.unproject([r-o/2,a]),n=e.unproject([r+o/2,a]),l=Math.round(e.project(n).x-e.project(s).x),c=Math.min(o,l,e._container.clientWidth),h=s.distanceTo(n);if("imperial"===(null==i?void 0:i.unit)){const i=3.2808*h;i>5280?Cs(t,c,i/5280,e._getUIString("ScaleControl.Miles")):Cs(t,c,i,e._getUIString("ScaleControl.Feet"));}else "nautical"===(null==i?void 0:i.unit)?Cs(t,c,h/1852,e._getUIString("ScaleControl.NauticalMiles")):h>=1e3?Cs(t,c,h/1e3,e._getUIString("ScaleControl.Kilometers")):Cs(t,c,h,e._getUIString("ScaleControl.Meters"));}function Cs(e,t,i,o){const a=function(e){const t=Math.pow(10,`${Math.floor(e)}`.length-1);let i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(e){const t=Math.pow(10,Math.ceil(-Math.log(e)/Math.LN10));return Math.round(e*t)/t}(i),t*i}(i);e.style.width=t*(a/i)+"px",e.innerHTML=`${a} ${o}`;}const Ms={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1,locationOccludedOpacity:void 0,padding:void 0},Is=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Es(e){if(e){if("number"==typeof e){const i=Math.round(Math.abs(e)/Math.SQRT2);return {center:new t.P(0,0),top:new t.P(0,e),"top-left":new t.P(i,i),"top-right":new t.P(-i,i),bottom:new t.P(0,-e),"bottom-left":new t.P(i,-i),"bottom-right":new t.P(-i,-i),left:new t.P(e,0),right:new t.P(-e,0)}}if(e instanceof t.P||Array.isArray(e)){const i=t.P.convert(e);return {center:i,top:i,"top-left":i,"top-right":i,bottom:i,"bottom-left":i,"bottom-right":i,left:i,right:i}}return {center:t.P.convert(e.center||[0,0]),top:t.P.convert(e.top||[0,0]),"top-left":t.P.convert(e["top-left"]||[0,0]),"top-right":t.P.convert(e["top-right"]||[0,0]),bottom:t.P.convert(e.bottom||[0,0]),"bottom-left":t.P.convert(e["bottom-left"]||[0,0]),"bottom-right":t.P.convert(e["bottom-right"]||[0,0]),left:t.P.convert(e.left||[0,0]),right:t.P.convert(e.right||[0,0])}}return Es(new t.P(0,0))}const Ss=i;e.AJAXError=t.cG,e.EXTENT=t.a6,e.Event=t.n,e.Evented=t.E,e.LngLat=t.W,e.MercatorCoordinate=t.a7,e.Point=t.P,e.addProtocol=t.cH,e.config=t.c,e.removeProtocol=t.cI,e.AttributionControl=es,e.BoxZoomHandler=_r,e.CanvasSource=oe,e.CooperativeGesturesHandler=$r,e.DoubleClickZoomHandler=Zr,e.DragPanHandler=Vr,e.DragRotateHandler=Wr,e.EdgeInsets=Ut,e.FullscreenControl=class extends t.E{constructor(e={}){var i;super(),this._onFullscreenChange=()=>{var e;let t=window.document.fullscreenElement||window.document.webkitFullscreenElement;for(;null===(e=null==t?void 0:t.shadowRoot)||void 0===e?void 0:e.fullscreenElement;)t=t.shadowRoot.fullscreenElement;t===this._container!==this._fullscreen&&this._handleFullscreenChange();},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen();},this._fullscreen=!1,this._pseudo=null!==(i=e.pseudo)&&void 0!==i&&i,(null==e?void 0:e.container)&&(e.container instanceof HTMLElement?this._container=e.container:t.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange");}onAdd(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=d.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange);}_setupUI(){const e=this._fullscreenButton=d.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);d.create("span","maplibregl-ctrl-icon",e).setAttribute("aria-hidden","true"),e.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange);}_updateTitle(){const e=this._getTitle();this._fullscreenButton.setAttribute("aria-label",e),this._fullscreenButton.title=e;}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new t.n("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new t.n("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable());}_exitFullscreen(){this._pseudo?this._togglePseudoFullScreen():window.document.exitFullscreen?window.document.exitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen();}_requestFullscreen(){this._pseudo?this._togglePseudoFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen();}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize();}},e.GeoJSONSource=ee,e.GeolocateControl=class extends t.E{constructor(e){super(),this._onSuccess=e=>{if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.n("outofmaxbounds",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case "WAITING_ACTIVE":case "ACTIVE_LOCK":case "ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case "BACKGROUND":case "BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new t.n("geolocate",e)),this._finish();}},this._updateCamera=e=>{const i=new t.W(e.coords.longitude,e.coords.latitude),o=e.coords.accuracy,a=this._map.getBearing(),r=t.e({bearing:a},this.options.fitBoundsOptions),s=G.fromLngLat(i,o);this._map.fitBounds(s,r,{geolocateSource:!0});},this._updateMarker=e=>{if(e){const i=new t.W(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=e.coords.accuracy,this._updateCircleRadiusIfNeeded();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();},this._onUpdate=()=>{this._updateCircleRadiusIfNeeded();},this._onError=e=>{if(this._map){if(1===e.code){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===e.code&&ws)return;this._setErrorState();}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new t.n("error",e)),this._finish();}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;},this._onMoveStart=e=>{if(!this._map)return;const i=(null==e?void 0:e[0])instanceof ResizeObserverEntry;e.geolocateSource||"ACTIVE_LOCK"!==this._watchState||i||this._map.isZooming()||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new t.n("trackuserlocationend")),this.fire(new t.n("userlocationlostfocus")));},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",(e=>{e.preventDefault();})),this._geolocateButton=d.create("button","maplibregl-ctrl-geolocate",this._container),d.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0);},this._finishSetupUI=e=>{if(this._map){if(!1===e){t.w("Geolocation support is not available so the GeolocateControl will be disabled.");const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e);}else {const e=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=d.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new xs({element:this._dotElement}),this._circleElement=d.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new xs({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onUpdate),this._map.on("move",this._onUpdate),this._map.on("rotate",this._onUpdate),this._map.on("pitch",this._onUpdate)),this._geolocateButton.addEventListener("click",(()=>this.trigger())),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",this._onMoveStart);}},this.options=t.e({},bs,e);}onAdd(e){return this._map=e,this._container=d.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return t._(this,arguments,void 0,(function*(e=!1){if(void 0!==ms&&!e)return ms;if(void 0===window.navigator.permissions)return ms=!!window.navigator.geolocation,ms;try{const e=yield window.navigator.permissions.query({name:"geolocation"});ms="denied"!==e.state;}catch(e){ms=!!window.navigator.geolocation;}return ms}))}().then((e=>this._finishSetupUI(e))),this._container}onRemove(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off("movestart",this._onMoveStart),this._map.off("zoom",this._onUpdate),this._map.off("move",this._onUpdate),this._map.off("rotate",this._onUpdate),this._map.off("pitch",this._onUpdate),this._map=void 0,ys=0,ws=!1;}_isOutOfMapMaxBounds(e){const t=this._map.getMaxBounds(),i=e.coords;return t&&(i.longitudet.getEast()||i.latitudet.getNorth())}_setErrorState(){switch(this._watchState){case "WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case "ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case "BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case "ACTIVE_ERROR":case "BACKGROUND_ERROR":case "OFF":case void 0:break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadiusIfNeeded(){const e=this._userLocationDotMarker.getLngLat();if(!(this.options.showUserLocation&&this.options.showAccuracyCircle&&this._accuracy&&e))return;const t=this._map.project(e),i=this._map.unproject([t.x+100,t.y]),o=e.distanceTo(i)/100,a=2*this._accuracy/o;this._circleElement.style.width=`${a.toFixed(2)}px`,this._circleElement.style.height=`${a.toFixed(2)}px`;}trigger(){if(!this._setup)return t.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case "OFF":this._watchState="WAITING_ACTIVE",this.fire(new t.n("trackuserlocationstart"));break;case "WAITING_ACTIVE":case "ACTIVE_LOCK":case "ACTIVE_ERROR":case "BACKGROUND_ERROR":ys--,ws=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new t.n("trackuserlocationend"));break;case "BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.n("trackuserlocationstart")),this.fire(new t.n("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case "WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case "ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case "OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let e;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),ys++,ys>1?(e={maximumAge:6e5,timeout:0},ws=!0):(e=this.options.positionOptions,ws=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e);}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null);}},e.GlobeControl=class{constructor(){this._toggleProjection=()=>{var e;const t=null===(e=this._map.getProjection())||void 0===e?void 0:e.type;this._map.setProjection("mercator"!==t&&t?{type:"mercator"}:{type:"globe"}),this._updateGlobeIcon();},this._updateGlobeIcon=()=>{var e;this._globeButton.classList.remove("maplibregl-ctrl-globe"),this._globeButton.classList.remove("maplibregl-ctrl-globe-enabled"),"globe"===(null===(e=this._map.getProjection())||void 0===e?void 0:e.type)?(this._globeButton.classList.add("maplibregl-ctrl-globe-enabled"),this._globeButton.title=this._map._getUIString("GlobeControl.Disable")):(this._globeButton.classList.add("maplibregl-ctrl-globe"),this._globeButton.title=this._map._getUIString("GlobeControl.Enable"));};}onAdd(e){return this._map=e,this._container=d.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._globeButton=d.create("button","maplibregl-ctrl-globe",this._container),d.create("span","maplibregl-ctrl-icon",this._globeButton).setAttribute("aria-hidden","true"),this._globeButton.type="button",this._globeButton.addEventListener("click",this._toggleProjection),this._updateGlobeIcon(),this._map.on("styledata",this._updateGlobeIcon),this._map.on("projectiontransition",this._updateGlobeIcon),this._container}onRemove(){this._container.remove(),this._map.off("styledata",this._updateGlobeIcon),this._map.off("projectiontransition",this._updateGlobeIcon),this._globeButton.removeEventListener("click",this._toggleProjection),this._map=void 0;}},e.Hash=Ya,e.ImageSource=te,e.KeyboardHandler=kr,e.LngLatBounds=G,e.LogoControl=ts,e.Map=ds,e.MapLibreMap=ds,e.MapMouseEvent=nr,e.MapTouchEvent=lr,e.MapWheelEvent=cr,e.Marker=xs,e.NavigationControl=class{constructor(e){this._updateZoomButtons=()=>{const e=this._map.getZoom(),t=e===this._map.getMaxZoom(),i=e===this._map.getMinZoom();this._zoomInButton.disabled=t,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute("aria-disabled",t.toString()),this._zoomOutButton.setAttribute("aria-disabled",i.toString());},this._rotateCompassArrow=()=>{this._compassIcon.style.transform=this.options.visualizePitch&&this.options.visualizeRoll?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateZ(${-this._map.transform.roll}deg) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizeRoll?`rotate(${-this._map.transform.bearing-this._map.transform.roll}deg)`:`rotate(${-this._map.transform.bearing}deg)`;},this._setButtonTitle=(e,t)=>{const i=this._map._getUIString(`NavigationControl.${t}`);e.title=i,e.setAttribute("aria-label",i);},this.options=t.e({},_s,e),this._container=d.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",(e=>e.preventDefault())),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",(e=>this._map.zoomIn({},{originalEvent:e}))),d.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",(e=>this._map.zoomOut({},{originalEvent:e}))),d.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",(e=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:e}):this._map.resetNorth({},{originalEvent:e});})),this._compassIcon=d.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"));}onAdd(e){return this._map=e,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this.options.visualizeRoll&&this._map.on("roll",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new ps(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){this._container.remove(),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this.options.visualizeRoll&&this._map.off("roll",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map;}_createButton(e,t){const i=d.create("button",e,this._container);return i.type="button",i.addEventListener("click",t),i}},e.Popup=class extends t.E{constructor(e){super(),this._updateOpacity=()=>{void 0!==this.options.locationOccludedOpacity&&(this._container.style.opacity=this._map.transform.isLocationOccluded(this.getLngLat())?`${this.options.locationOccludedOpacity}`:"");},this.remove=()=>(this._content&&this._content.remove(),this._container&&(this._container.remove(),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("terrain",this._update),this._map.off("projectiontransition",this._update),this._map.off("mousemove",this._update),this._map.off("mouseup",this._update),this._map.off("drag",this._update),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new t.n("close"))),this),this._update=e=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=d.create("div","maplibregl-popup",this._map.getContainer()),this._tip=d.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(const e of this.options.className.split(" "))this._container.classList.add(e);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer");}let t;if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=fs(this._lngLat,this._flatPos,this._map.transform,this._trackPointer),e&&"point"in e&&e.point&&(t=e.point),this._trackPointer&&!t)return;const i=this._flatPos=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&t?t:this._map.transform.locationToScreenPoint(this._lngLat));let o=this.options.anchor;const a=Es(this.options.offset);if(!o){const e=this._container.offsetWidth,t=this._container.offsetHeight,r=function(e){var t,i,o,a;return e?{top:null!==(t=e.top)&&void 0!==t?t:0,right:null!==(i=e.right)&&void 0!==i?i:0,bottom:null!==(o=e.bottom)&&void 0!==o?o:0,left:null!==(a=e.left)&&void 0!==a?a:0}:{top:0,right:0,bottom:0,left:0}}(this.options.padding);let s;s=i.y+a.bottom.ythis._map.transform.height-t-r.bottom?["bottom"]:[],i.xthis._map.transform.width-e/2-r.right&&s.push("right"),o=0===s.length?"bottom":s.join("-");}let r=i.add(a[o]);this.options.subpixelPositioning||(r=r.round()),this._container.style.transform=`${gs[o]} translate(${r.x}px,${r.y}px)`,vs(this._container,o,"popup"),this._updateOpacity();},this._onClose=()=>{this.remove();},this.options=t.e(Object.create(Ms),e);}addTo(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._map.on("terrain",this._update),this._map.on("projectiontransition",this._update),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._update),this._map.on("mouseup",this._update),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new t.n("open")),this}isOpen(){return !!this._map}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.W.convert(e),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._update),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._update),this._map.on("drag",this._update),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(e){return this.setDOMContent(document.createTextNode(e))}setHTML(e){const t=document.createDocumentFragment(),i=document.createElement("body");let o;for(i.innerHTML=e;o=i.firstChild,o;)t.appendChild(o);return this.setDOMContent(t)}getMaxWidth(){var e;return null===(e=this._container)||void 0===e?void 0:e.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=d.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(e),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(e){return this._container&&this._container.classList.add(e),this}removeClassName(e){return this._container&&this._container.classList.remove(e),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){if(this._container)return this._container.classList.toggle(e)}setSubpixelPositioning(e){this.options.subpixelPositioning=e;}setPadding(e){this.options.padding=e,this._update();}_createCloseButton(){this.options.closeButton&&(this._closeButton=d.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose));}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const e=this._container.querySelector(Is);e&&e.focus();}},e.RasterDEMTileSource=$,e.RasterTileSource=q,e.ScaleControl=class{constructor(e){this._onMove=()=>{Ps(this._map,this._container,this.options);},this.setUnit=e=>{this.options.unit=e,Ps(this._map,this._container,this.options);},this.options=Object.assign(Object.assign({},Ts),e);}getDefaultPosition(){return "bottom-left"}onAdd(e){return this._map=e,this._container=d.create("div","maplibregl-ctrl maplibregl-ctrl-scale",e.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){this._container.remove(),this._map.off("move",this._onMove),this._map=void 0;}},e.ScrollZoomHandler=Nr,e.Style=ki,e.TerrainControl=class{constructor(e){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon();},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"));},this.options=e;}onAdd(e){return this._map=e,this._container=d.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=d.create("button","maplibregl-ctrl-terrain",this._container),d.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){this._container.remove(),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0;}},e.TwoFingersTouchPitchHandler=Lr,e.TwoFingersTouchRotateHandler=Dr,e.TwoFingersTouchZoomHandler=zr,e.TwoFingersTouchZoomRotateHandler=qr,e.VectorTileSource=W,e.VideoSource=ie,e.addSourceType=(e,i)=>t._(void 0,void 0,void 0,(function*(){if(re(e))throw new Error(`A source type called "${e}" already exists.`);((e,t)=>{ae[e]=t;})(e,i);})),e.clearPrewarmedResources=function(){const e=A;e&&(e.isPreloaded()&&1===e.numActive()?(e.release(z),A=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"));},e.createTileMesh=ci,e.getGlobalDispatcher=B,e.getMaxParallelImageRequests=function(){return t.c.MAX_PARALLEL_IMAGE_REQUESTS},e.getRTLTextPluginStatus=function(){return ce().getRTLTextPluginStatus()},e.getVersion=function(){return Ss},e.getWorkerCount=function(){return R.workerCount},e.getWorkerUrl=function(){return t.c.WORKER_URL},e.importScriptInWorkers=function(e){return B().broadcast("IS",e)},e.isTimeFrozen=function(){return l.isFrozen()},e.now=c,e.prewarm=function(){F().acquire(z);},e.restoreNow=function(){l.restoreNow();},e.setMaxParallelImageRequests=function(e){t.c.MAX_PARALLEL_IMAGE_REQUESTS=e;},e.setNow=function(e){l.setNow(e);},e.setRTLTextPlugin=function(e,t){return ce().setRTLTextPlugin(e,t)},e.setWorkerCount=function(e){R.workerCount=e;},e.setWorkerUrl=function(e){t.c.WORKER_URL=e;};})); - -// -// Our custom intro provides a specialized "define()" function, called by the -// AMD modules below, that sets up the worker blob URL and then executes the -// main module, storing its exported value as 'maplibregl' - - -var maplibregl$1 = maplibregl; - -return maplibregl$1; - -})); -//# sourceMappingURL=maplibre-gl.js.map diff --git a/data/legacy/upg-neighbor/upg-neighbor.iife.js b/data/legacy/upg-neighbor/upg-neighbor.iife.js deleted file mode 100644 index 58523ca2e..000000000 --- a/data/legacy/upg-neighbor/upg-neighbor.iife.js +++ /dev/null @@ -1,548 +0,0 @@ -(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".profile-loader[data-v-8d448c33]{width:100%;height:100%;position:relative}.profile-error[data-v-8d448c33]{padding:1rem;background:#fff3cd;border:1px solid #ffc107;border-radius:4px;font-family:monospace;font-size:13px}")),document.head.appendChild(e)}}catch(d){console.error("vite-plugin-css-injected-by-js",d)}})(); -(function(){"use strict";var xu;const Hf="modulepreload",Df=function(a){return"/"+a},zf={},oi=function(n,e,i){let t=Promise.resolve();function o(r){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=r,window.dispatchEvent(l),!l.defaultPrevented)throw r}return t.then(r=>{for(const l of r||[])l.status==="rejected"&&o(l.reason);return n().catch(o)})};/** -* @vue/shared v3.5.34 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function ro(a){const n=Object.create(null);for(const e of a.split(","))n[e]=1;return e=>e in n}const Fa={},Le=[],Mn=()=>{},tl=()=>!1,qi=a=>a.charCodeAt(0)===111&&a.charCodeAt(1)===110&&(a.charCodeAt(2)>122||a.charCodeAt(2)<97),Xi=a=>a.startsWith("onUpdate:"),Ja=Object.assign,lo=(a,n)=>{const e=a.indexOf(n);e>-1&&a.splice(e,1)},Tu=Object.prototype.hasOwnProperty,Ta=(a,n)=>Tu.call(a,n),Ca=Array.isArray,Re=a=>ri(a)==="[object Map]",ol=a=>ri(a)==="[object Set]",rl=a=>ri(a)==="[object Date]",ka=a=>typeof a=="function",Da=a=>typeof a=="string",Pn=a=>typeof a=="symbol",Na=a=>a!==null&&typeof a=="object",ll=a=>(Na(a)||ka(a))&&ka(a.then)&&ka(a.catch),sl=Object.prototype.toString,ri=a=>sl.call(a),Nu=a=>ri(a).slice(8,-1),Qi=a=>ri(a)==="[object Object]",at=a=>Da(a)&&a!=="NaN"&&a[0]!=="-"&&""+parseInt(a,10)===a,li=ro(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),nt=a=>{const n=Object.create(null);return e=>n[e]||(n[e]=a(e))},Lu=/-\w/g,nn=nt(a=>a.replace(Lu,n=>n.slice(1).toUpperCase())),Ru=/\B([A-Z])/g,yn=nt(a=>a.replace(Ru,"-$1").toLowerCase()),et=nt(a=>a.charAt(0).toUpperCase()+a.slice(1)),so=nt(a=>a?`on${et(a)}`:""),In=(a,n)=>!Object.is(a,n),co=(a,...n)=>{for(let e=0;e{Object.defineProperty(a,n,{configurable:!0,enumerable:!1,writable:i,value:e})},$u=a=>{const n=parseFloat(a);return isNaN(n)?a:n},gl=a=>{const n=Da(a)?Number(a):NaN;return isNaN(n)?a:n};let ul;const it=()=>ul||(ul=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ka(a){if(Ca(a)){const n={};for(let e=0;e{if(e){const i=e.split(Ku);i.length>1&&(n[i[0].trim()]=i[1].trim())}}),n}function Ia(a){let n="";if(Da(a))n=a;else if(Ca(a))for(let e=0;e!!(a&&a.__v_isRef===!0),X=a=>Da(a)?a:a==null?"":Ca(a)||Na(a)&&(a.toString===sl||!ka(a.toString))?pl(a)?X(a.value):JSON.stringify(a,ml,2):String(a),ml=(a,n)=>pl(n)?ml(a,n.value):Re(n)?{[`Map(${n.size})`]:[...n.entries()].reduce((e,[i,t],o)=>(e[uo(i,o)+" =>"]=t,e),{})}:ol(n)?{[`Set(${n.size})`]:[...n.values()].map(e=>uo(e))}:Pn(n)?uo(n):Na(n)&&!Ca(n)&&!Qi(n)?String(n):n,uo=(a,n="")=>{var e;return Pn(a)?`Symbol(${(e=a.description)!=null?e:n})`:a};/** -* @vue/reactivity v3.5.34 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Xa;class hl{constructor(n=!1){this.detached=n,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!n&&Xa&&(Xa.active?(this.parent=Xa,this.index=(Xa.scopes||(Xa.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let n,e;if(this.scopes)for(n=0,e=this.scopes.length;n0&&--this._on===0){if(Xa===this)Xa=this.prevScope;else{let n=Xa;for(;n;){if(n.prevScope===this){n.prevScope=this.prevScope;break}n=n.prevScope}}this.prevScope=void 0}}stop(n){if(this._active){this._active=!1;let e,i;for(e=0,i=this.effects.length;e0)return;if(ci){let n=ci;for(ci=void 0;n;){const e=n.next;n.next=void 0,n.flags&=-9,n=e}}let a;for(;si;){let n=si;for(si=void 0;n;){const e=n.next;if(n.next=void 0,n.flags&=-9,n.flags&1)try{n.trigger()}catch(i){a||(a=i)}n=e}}if(a)throw a}function Pl(a){for(let n=a.deps;n;n=n.nextDep)n.version=-1,n.prevActiveLink=n.dep.activeLink,n.dep.activeLink=n}function Cl(a){let n,e=a.depsTail,i=e;for(;i;){const t=i.prevDep;i.version===-1?(i===e&&(e=t),_o(i),zu(i)):n=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=t}a.deps=n,a.depsTail=e}function bo(a){for(let n=a.deps;n;n=n.nextDep)if(n.dep.version!==n.version||n.dep.computed&&(jl(n.dep.computed)||n.dep.version!==n.version))return!0;return!!a._dirty}function jl(a){if(a.flags&4&&!(a.flags&16)||(a.flags&=-17,a.globalVersion===gi)||(a.globalVersion=gi,!a.isSSR&&a.flags&128&&(!a.deps&&!a._dirty||!bo(a))))return;a.flags|=2;const n=a.dep,e=Oa,i=kn;Oa=a,kn=!0;try{Pl(a);const t=a.fn(a._value);(n.version===0||In(t,a._value))&&(a.flags|=128,a._value=t,n.version++)}catch(t){throw n.version++,t}finally{Oa=e,kn=i,Cl(a),a.flags&=-3}}function _o(a,n=!1){const{dep:e,prevSub:i,nextSub:t}=a;if(i&&(i.nextSub=t,a.prevSub=void 0),t&&(t.prevSub=i,a.nextSub=void 0),e.subs===a&&(e.subs=i,!i&&e.computed)){e.computed.flags&=-5;for(let o=e.computed.deps;o;o=o.nextDep)_o(o,!0)}!n&&!--e.sc&&e.map&&e.map.delete(e.key)}function zu(a){const{prevDep:n,nextDep:e}=a;n&&(n.nextDep=e,a.prevDep=void 0),e&&(e.prevDep=n,a.nextDep=void 0)}let kn=!0;const kl=[];function wn(){kl.push(kn),kn=!1}function xn(){const a=kl.pop();kn=a===void 0?!0:a}function Gl(a){const{cleanup:n}=a;if(a.cleanup=void 0,n){const e=Oa;Oa=void 0;try{n()}finally{Oa=e}}}let gi=0;class Vu{constructor(n,e){this.sub=n,this.dep=e,this.version=e.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class fo{constructor(n){this.computed=n,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(n){if(!Oa||!kn||Oa===this.computed)return;let e=this.activeLink;if(e===void 0||e.sub!==Oa)e=this.activeLink=new Vu(Oa,this),Oa.deps?(e.prevDep=Oa.depsTail,Oa.depsTail.nextDep=e,Oa.depsTail=e):Oa.deps=Oa.depsTail=e,vl(e);else if(e.version===-1&&(e.version=this.version,e.nextDep)){const i=e.nextDep;i.prevDep=e.prevDep,e.prevDep&&(e.prevDep.nextDep=i),e.prevDep=Oa.depsTail,e.nextDep=void 0,Oa.depsTail.nextDep=e,Oa.depsTail=e,Oa.deps===e&&(Oa.deps=i)}return e}trigger(n){this.version++,gi++,this.notify(n)}notify(n){ho();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{yo()}}}function vl(a){if(a.dep.sc++,a.sub.flags&4){const n=a.dep.computed;if(n&&!a.dep.subs){n.flags|=20;for(let i=n.deps;i;i=i.nextDep)vl(i)}const e=a.dep.subs;e!==a&&(a.prevSub=e,e&&(e.nextSub=a)),a.dep.subs=a}}const tt=new WeakMap,Ge=Symbol(""),Po=Symbol(""),ui=Symbol("");function rn(a,n,e){if(kn&&Oa){let i=tt.get(a);i||tt.set(a,i=new Map);let t=i.get(e);t||(i.set(e,t=new fo),t.map=i,t.key=e),t.track()}}function Dn(a,n,e,i,t,o){const r=tt.get(a);if(!r){gi++;return}const l=s=>{s&&s.trigger()};if(ho(),n==="clear")r.forEach(l);else{const s=Ca(a),g=s&&at(e);if(s&&e==="length"){const d=Number(i);r.forEach((_,k)=>{(k==="length"||k===ui||!Pn(k)&&k>=d)&&l(_)})}else switch((e!==void 0||r.has(void 0))&&l(r.get(e)),g&&l(r.get(ui)),n){case"add":s?g&&l(r.get("length")):(l(r.get(Ge)),Re(a)&&l(r.get(Po)));break;case"delete":s||(l(r.get(Ge)),Re(a)&&l(r.get(Po)));break;case"set":Re(a)&&l(r.get(Ge));break}}yo()}function Yu(a,n){const e=tt.get(a);return e&&e.get(n)}function $e(a){const n=wa(a);return n===a?n:(rn(n,"iterate",ui),bn(a)?n:n.map(Gn))}function ot(a){return rn(a=wa(a),"iterate",ui),a}function Tn(a,n){return Yn(a)?Fe(Vn(a)?Gn(n):n):Gn(n)}const Wu={__proto__:null,[Symbol.iterator](){return Co(this,Symbol.iterator,a=>Tn(this,a))},concat(...a){return $e(this).concat(...a.map(n=>Ca(n)?$e(n):n))},entries(){return Co(this,"entries",a=>(a[1]=Tn(this,a[1]),a))},every(a,n){return zn(this,"every",a,n,void 0,arguments)},filter(a,n){return zn(this,"filter",a,n,e=>e.map(i=>Tn(this,i)),arguments)},find(a,n){return zn(this,"find",a,n,e=>Tn(this,e),arguments)},findIndex(a,n){return zn(this,"findIndex",a,n,void 0,arguments)},findLast(a,n){return zn(this,"findLast",a,n,e=>Tn(this,e),arguments)},findLastIndex(a,n){return zn(this,"findLastIndex",a,n,void 0,arguments)},forEach(a,n){return zn(this,"forEach",a,n,void 0,arguments)},includes(...a){return jo(this,"includes",a)},indexOf(...a){return jo(this,"indexOf",a)},join(a){return $e(this).join(a)},lastIndexOf(...a){return jo(this,"lastIndexOf",a)},map(a,n){return zn(this,"map",a,n,void 0,arguments)},pop(){return di(this,"pop")},push(...a){return di(this,"push",a)},reduce(a,...n){return Al(this,"reduce",a,n)},reduceRight(a,...n){return Al(this,"reduceRight",a,n)},shift(){return di(this,"shift")},some(a,n){return zn(this,"some",a,n,void 0,arguments)},splice(...a){return di(this,"splice",a)},toReversed(){return $e(this).toReversed()},toSorted(a){return $e(this).toSorted(a)},toSpliced(...a){return $e(this).toSpliced(...a)},unshift(...a){return di(this,"unshift",a)},values(){return Co(this,"values",a=>Tn(this,a))}};function Co(a,n,e){const i=ot(a),t=i[n]();return i!==a&&!bn(a)&&(t._next=t.next,t.next=()=>{const o=t._next();return o.done||(o.value=e(o.value)),o}),t}const Ju=Array.prototype;function zn(a,n,e,i,t,o){const r=ot(a),l=r!==a&&!bn(a),s=r[n];if(s!==Ju[n]){const _=s.apply(a,o);return l?Gn(_):_}let g=e;r!==a&&(l?g=function(_,k){return e.call(this,Tn(a,_),k,a)}:e.length>2&&(g=function(_,k){return e.call(this,_,k,a)}));const d=s.call(r,g,i);return l&&t?t(d):d}function Al(a,n,e,i){const t=ot(a),o=t!==a&&!bn(a);let r=e,l=!1;t!==a&&(o?(l=i.length===0,r=function(g,d,_){return l&&(l=!1,g=Tn(a,g)),e.call(this,g,Tn(a,d),_,a)}):e.length>3&&(r=function(g,d,_){return e.call(this,g,d,_,a)}));const s=t[n](r,...i);return l?Tn(a,s):s}function jo(a,n,e){const i=wa(a);rn(i,"iterate",ui);const t=i[n](...e);return(t===-1||t===!1)&>(e[0])?(e[0]=wa(e[0]),i[n](...e)):t}function di(a,n,e=[]){wn(),ho();const i=wa(a)[n].apply(a,e);return yo(),xn(),i}const Zu=ro("__proto__,__v_isRef,__isVue"),Sl=new Set(Object.getOwnPropertyNames(Symbol).filter(a=>a!=="arguments"&&a!=="caller").map(a=>Symbol[a]).filter(Pn));function qu(a){Pn(a)||(a=String(a));const n=wa(this);return rn(n,"has",a),n.hasOwnProperty(a)}class El{constructor(n=!1,e=!1){this._isReadonly=n,this._isShallow=e}get(n,e,i){if(e==="__v_skip")return n.__v_skip;const t=this._isReadonly,o=this._isShallow;if(e==="__v_isReactive")return!t;if(e==="__v_isReadonly")return t;if(e==="__v_isShallow")return o;if(e==="__v_raw")return i===(t?o?Nl:Tl:o?xl:wl).get(n)||Object.getPrototypeOf(n)===Object.getPrototypeOf(i)?n:void 0;const r=Ca(n);if(!t){let s;if(r&&(s=Wu[e]))return s;if(e==="hasOwnProperty")return qu}const l=Reflect.get(n,e,Va(n)?n:i);if((Pn(e)?Sl.has(e):Zu(e))||(t||rn(n,"get",e),o))return l;if(Va(l)){const s=r&&at(e)?l:l.value;return t&&Na(s)?Go(s):s}return Na(l)?t?Go(l):pi(l):l}}class Ml extends El{constructor(n=!1){super(!1,n)}set(n,e,i,t){let o=n[e];const r=Ca(n)&&at(e);if(!this._isShallow){const g=Yn(o);if(!bn(i)&&!Yn(i)&&(o=wa(o),i=wa(i)),!r&&Va(o)&&!Va(i))return g||(o.value=i),!0}const l=r?Number(e)a,rt=a=>Reflect.getPrototypeOf(a);function ed(a,n,e){return function(...i){const t=this.__v_raw,o=wa(t),r=Re(o),l=a==="entries"||a===Symbol.iterator&&r,s=a==="keys"&&r,g=t[a](...i),d=e?ko:n?Fe:Gn;return!n&&rn(o,"iterate",s?Po:Ge),Ja(Object.create(g),{next(){const{value:_,done:k}=g.next();return k?{value:_,done:k}:{value:l?[d(_[0]),d(_[1])]:d(_),done:k}}})}}function lt(a){return function(...n){return a==="delete"?!1:a==="clear"?void 0:this}}function id(a,n){const e={get(t){const o=this.__v_raw,r=wa(o),l=wa(t);a||(In(t,l)&&rn(r,"get",t),rn(r,"get",l));const{has:s}=rt(r),g=n?ko:a?Fe:Gn;if(s.call(r,t))return g(o.get(t));if(s.call(r,l))return g(o.get(l));o!==r&&o.get(t)},get size(){const t=this.__v_raw;return!a&&rn(wa(t),"iterate",Ge),t.size},has(t){const o=this.__v_raw,r=wa(o),l=wa(t);return a||(In(t,l)&&rn(r,"has",t),rn(r,"has",l)),t===l?o.has(t):o.has(t)||o.has(l)},forEach(t,o){const r=this,l=r.__v_raw,s=wa(l),g=n?ko:a?Fe:Gn;return!a&&rn(s,"iterate",Ge),l.forEach((d,_)=>t.call(o,g(d),g(_),r))}};return Ja(e,a?{add:lt("add"),set:lt("set"),delete:lt("delete"),clear:lt("clear")}:{add(t){const o=wa(this),r=rt(o),l=wa(t),s=!n&&!bn(t)&&!Yn(t)?l:t;return r.has.call(o,s)||In(t,s)&&r.has.call(o,t)||In(l,s)&&r.has.call(o,l)||(o.add(s),Dn(o,"add",s,s)),this},set(t,o){!n&&!bn(o)&&!Yn(o)&&(o=wa(o));const r=wa(this),{has:l,get:s}=rt(r);let g=l.call(r,t);g||(t=wa(t),g=l.call(r,t));const d=s.call(r,t);return r.set(t,o),g?In(o,d)&&Dn(r,"set",t,o):Dn(r,"add",t,o),this},delete(t){const o=wa(this),{has:r,get:l}=rt(o);let s=r.call(o,t);s||(t=wa(t),s=r.call(o,t)),l&&l.call(o,t);const g=o.delete(t);return s&&Dn(o,"delete",t,void 0),g},clear(){const t=wa(this),o=t.size!==0,r=t.clear();return o&&Dn(t,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(t=>{e[t]=ed(t,a,n)}),e}function st(a,n){const e=id(a,n);return(i,t,o)=>t==="__v_isReactive"?!a:t==="__v_isReadonly"?a:t==="__v_raw"?i:Reflect.get(Ta(e,t)&&t in i?e:i,t,o)}const td={get:st(!1,!1)},od={get:st(!1,!0)},rd={get:st(!0,!1)},ld={get:st(!0,!0)},wl=new WeakMap,xl=new WeakMap,Tl=new WeakMap,Nl=new WeakMap;function sd(a){switch(a){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function cd(a){return a.__v_skip||!Object.isExtensible(a)?0:sd(Nu(a))}function pi(a){return Yn(a)?a:ct(a,!1,Xu,td,wl)}function gd(a){return ct(a,!1,ad,od,xl)}function Go(a){return ct(a,!0,Qu,rd,Tl)}function Yf(a){return ct(a,!0,nd,ld,Nl)}function ct(a,n,e,i,t){if(!Na(a)||a.__v_raw&&!(n&&a.__v_isReactive))return a;const o=cd(a);if(o===0)return a;const r=t.get(a);if(r)return r;const l=new Proxy(a,o===2?i:e);return t.set(a,l),l}function Vn(a){return Yn(a)?Vn(a.__v_raw):!!(a&&a.__v_isReactive)}function Yn(a){return!!(a&&a.__v_isReadonly)}function bn(a){return!!(a&&a.__v_isShallow)}function gt(a){return a?!!a.__v_raw:!1}function wa(a){const n=a&&a.__v_raw;return n?wa(n):a}function mi(a){return!Ta(a,"__v_skip")&&Object.isExtensible(a)&&cl(a,"__v_skip",!0),a}const Gn=a=>Na(a)?pi(a):a,Fe=a=>Na(a)?Go(a):a;function Va(a){return a?a.__v_isRef===!0:!1}function ua(a){return Rl(a,!1)}function Ll(a){return Rl(a,!0)}function Rl(a,n){return Va(a)?a:new ud(a,n)}class ud{constructor(n,e){this.dep=new fo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=e?n:wa(n),this._value=e?n:Gn(n),this.__v_isShallow=e}get value(){return this.dep.track(),this._value}set value(n){const e=this._rawValue,i=this.__v_isShallow||bn(n)||Yn(n);n=i?n:wa(n),In(n,e)&&(this._rawValue=n,this._value=i?n:Gn(n),this.dep.trigger())}}function ha(a){return Va(a)?a.value:a}const dd={get:(a,n,e)=>n==="__v_raw"?a:ha(Reflect.get(a,n,e)),set:(a,n,e,i)=>{const t=a[n];return Va(t)&&!Va(e)?(t.value=e,!0):Reflect.set(a,n,e,i)}};function $l(a){return Vn(a)?a:new Proxy(a,dd)}function pd(a){const n=Ca(a)?new Array(a.length):{};for(const e in a)n[e]=hd(a,e);return n}class md{constructor(n,e,i){this._object=n,this._defaultValue=i,this.__v_isRef=!0,this._value=void 0,this._key=Pn(e)?e:String(e),this._raw=wa(n);let t=!0,o=n;if(!Ca(n)||Pn(this._key)||!at(this._key))do t=!gt(o)||bn(o);while(t&&(o=o.__v_raw));this._shallow=t}get value(){let n=this._object[this._key];return this._shallow&&(n=ha(n)),this._value=n===void 0?this._defaultValue:n}set value(n){if(this._shallow&&Va(this._raw[this._key])){const e=this._object[this._key];if(Va(e)){e.value=n;return}}this._object[this._key]=n}get dep(){return Yu(this._raw,this._key)}}function hd(a,n,e){return new md(a,n,e)}class yd{constructor(n,e,i){this.fn=n,this.setter=e,this._value=void 0,this.dep=new fo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=gi-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!e,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&Oa!==this)return fl(this,!0),!0}get value(){const n=this.dep.track();return jl(this),n&&(n.version=this.dep.version),this._value}set value(n){this.setter&&this.setter(n)}}function bd(a,n,e=!1){let i,t;return ka(a)?i=a:(i=a.get,t=a.set),new yd(i,t,e)}const ut={},dt=new WeakMap;let ve;function _d(a,n=!1,e=ve){if(e){let i=dt.get(e);i||dt.set(e,i=[]),i.push(a)}}function fd(a,n,e=Fa){const{immediate:i,deep:t,once:o,scheduler:r,augmentJob:l,call:s}=e,g=I=>t?I:bn(I)||t===!1||t===0?Wn(I,1):Wn(I);let d,_,k,x,D=!1,T=!1;if(Va(a)?(_=()=>a.value,D=bn(a)):Vn(a)?(_=()=>g(a),D=!0):Ca(a)?(T=!0,D=a.some(I=>Vn(I)||bn(I)),_=()=>a.map(I=>{if(Va(I))return I.value;if(Vn(I))return g(I);if(ka(I))return s?s(I,2):I()})):ka(a)?n?_=s?()=>s(a,2):a:_=()=>{if(k){wn();try{k()}finally{xn()}}const I=ve;ve=d;try{return s?s(a,3,[x]):a(x)}finally{ve=I}}:_=Mn,n&&t){const I=_,G=t===!0?1/0:t;_=()=>Wn(I(),G)}const $=yl(),w=()=>{d.stop(),$&&$.active&&lo($.effects,d)};if(o&&n){const I=n;n=(...G)=>{I(...G),w()}}let L=T?new Array(a.length).fill(ut):ut;const E=I=>{if(!(!(d.flags&1)||!d.dirty&&!I))if(n){const G=d.run();if(t||D||(T?G.some((S,v)=>In(S,L[v])):In(G,L))){k&&k();const S=ve;ve=d;try{const v=[G,L===ut?void 0:T&&L[0]===ut?[]:L,x];L=G,s?s(n,3,v):n(...v)}finally{ve=S}}}else d.run()};return l&&l(E),d=new bl(_),d.scheduler=r?()=>r(E,!1):E,x=I=>_d(I,!1,d),k=d.onStop=()=>{const I=dt.get(d);if(I){if(s)s(I,4);else for(const G of I)G();dt.delete(d)}},n?i?E(!0):L=d.run():r?r(E.bind(null,!0),!0):d.run(),w.pause=d.pause.bind(d),w.resume=d.resume.bind(d),w.stop=w,w}function Wn(a,n=1/0,e){if(n<=0||!Na(a)||a.__v_skip||(e=e||new Map,(e.get(a)||0)>=n))return a;if(e.set(a,n),n--,Va(a))Wn(a.value,n,e);else if(Ca(a))for(let i=0;i{Wn(i,n,e)});else if(Qi(a)){for(const i in a)Wn(a[i],n,e);for(const i of Object.getOwnPropertySymbols(a))Object.prototype.propertyIsEnumerable.call(a,i)&&Wn(a[i],n,e)}return a}/** -* @vue/runtime-core v3.5.34 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const hi=[];let vo=!1;function Wf(a,...n){if(vo)return;vo=!0,wn();const e=hi.length?hi[hi.length-1].component:null,i=e&&e.appContext.config.warnHandler,t=Pd();if(i)Ke(i,e,11,[a+n.map(o=>{var r,l;return(l=(r=o.toString)==null?void 0:r.call(o))!=null?l:JSON.stringify(o)}).join(""),e&&e.proxy,t.map(({vnode:o})=>`at <${xs(e,o.type)}>`).join(` -`),t]);else{const o=[`[Vue warn]: ${a}`,...n];t.length&&o.push(` -`,...Cd(t)),console.warn(...o)}xn(),vo=!1}function Pd(){let a=hi[hi.length-1];if(!a)return[];const n=[];for(;a;){const e=n[0];e&&e.vnode===a?e.recurseCount++:n.push({vnode:a,recurseCount:0});const i=a.component&&a.component.parent;a=i&&i.vnode}return n}function Cd(a){const n=[];return a.forEach((e,i)=>{n.push(...i===0?[]:[` -`],...jd(e))}),n}function jd({vnode:a,recurseCount:n}){const e=n>0?`... (${n} recursive calls)`:"",i=a.component?a.component.parent==null:!1,t=` at <${xs(a.component,a.type,i)}`,o=">"+e;return a.props?[t,...kd(a.props),o]:[t+o]}function kd(a){const n=[],e=Object.keys(a);return e.slice(0,3).forEach(i=>{n.push(...Fl(i,a[i]))}),e.length>3&&n.push(" ..."),n}function Fl(a,n,e){return Da(n)?(n=JSON.stringify(n),e?n:[`${a}=${n}`]):typeof n=="number"||typeof n=="boolean"||n==null?e?n:[`${a}=${n}`]:Va(n)?(n=Fl(a,wa(n.value),!0),e?n:[`${a}=Ref<`,n,">"]):ka(n)?[`${a}=fn${n.name?`<${n.name}>`:""}`]:(n=wa(n),e?n:[`${a}=`,n])}function Ke(a,n,e,i){try{return i?a(...i):a()}catch(t){yi(t,n,e)}}function Nn(a,n,e,i){if(ka(a)){const t=Ke(a,n,e,i);return t&&ll(t)&&t.catch(o=>{yi(o,n,e)}),t}if(Ca(a)){const t=[];for(let o=0;o>>1,t=sn[i],o=_i(t);o=_i(e)?sn.push(a):sn.splice(vd(n),0,a),a.flags|=1,Bl()}}function Bl(){pt||(pt=Kl.then(Hl))}function Ad(a){Ca(a)?Be.push(...a):ce&&a.id===-1?ce.splice(Oe+1,0,a):a.flags&1||(Be.push(a),a.flags|=1),Bl()}function Ol(a,n,e=Ln+1){for(;e_i(e)-_i(i));if(Be.length=0,ce){ce.push(...n);return}for(ce=n,Oe=0;Oea.id==null?a.flags&2?-1:1/0:a.id;function Hl(a){try{for(Ln=0;Ln{i._d&&Ct(-1);const o=mt(n);let r;try{r=a(...t)}finally{mt(o),i._d&&Ct(1)}return r};return i._n=!0,i._c=!0,i._d=!0,i}function Ed(a,n){if(_n===null)return a;const e=vt(_n),i=a.dirs||(a.dirs=[]);for(let t=0;t1)return e&&ka(n)?n.call(i&&i.proxy):n}}function Md(){return!!(ue()||Se)}const Id=Symbol.for("v-scx"),wd=()=>Ya(Id);function xd(a,n){return So(a,null,n)}function cn(a,n,e){return So(a,n,e)}function So(a,n,e=Fa){const{immediate:i,deep:t,flush:o,once:r}=e,l=Ja({},e),s=n&&i||!n&&o!=="post";let g;if(De){if(o==="sync"){const x=wd();g=x.__watcherHandles||(x.__watcherHandles=[])}else if(!s){const x=()=>{};return x.stop=Mn,x.resume=Mn,x.pause=Mn,x}}const d=tn;l.call=(x,D,T)=>Nn(x,d,D,T);let _=!1;o==="post"?l.scheduler=x=>{pn(x,d&&d.suspense)}:o!=="sync"&&(_=!0,l.scheduler=(x,D)=>{D?x():Ao(x)}),l.augmentJob=x=>{n&&(x.flags|=4),_&&(x.flags|=2,d&&(x.id=d.uid,x.i=d))};const k=fd(a,n,l);return De&&(g?g.push(k):s&&k()),k}function Td(a,n,e){const i=this.proxy,t=Da(a)?a.includes(".")?zl(i,a):()=>i[a]:a.bind(i,i);let o;ka(n)?o=n:(o=n.handler,e=n);const r=Ei(this),l=So(t,o.bind(i),e);return r(),l}function zl(a,n){const e=n.split(".");return()=>{let i=a;for(let t=0;ta.__isTeleport,Rd=Symbol("_leaveCb");function Eo(a,n){a.shapeFlag&6&&a.component?(a.transition=n,Eo(a.component.subTree,n)):a.shapeFlag&128?(a.ssContent.transition=n.clone(a.ssContent),a.ssFallback.transition=n.clone(a.ssFallback)):a.transition=n}function fi(a,n){return ka(a)?Ja({name:a.name},n,{setup:a}):a}function Mo(a){a.ids=[a.ids[0]+a.ids[2]+++"-",0,0]}function Vl(a,n){let e;return!!((e=Object.getOwnPropertyDescriptor(a,n))&&!e.configurable)}const ht=new WeakMap;function Pi(a,n,e,i,t=!1){if(Ca(a)){a.forEach((T,$)=>Pi(T,n&&(Ca(n)?n[$]:n),e,i,t));return}if(Ci(i)&&!t){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&Pi(a,n,e,i.component.subTree);return}const o=i.shapeFlag&4?vt(i.component):i.el,r=t?null:o,{i:l,r:s}=a,g=n&&n.r,d=l.refs===Fa?l.refs={}:l.refs,_=l.setupState,k=wa(_),x=_===Fa?tl:T=>Vl(d,T)?!1:Ta(k,T),D=(T,$)=>!($&&Vl(d,$));if(g!=null&&g!==s){if(Yl(n),Da(g))d[g]=null,x(g)&&(_[g]=null);else if(Va(g)){const T=n;D(g,T.k)&&(g.value=null),T.k&&(d[T.k]=null)}}if(ka(s))Ke(s,l,12,[r,d]);else{const T=Da(s),$=Va(s);if(T||$){const w=()=>{if(a.f){const L=T?x(s)?_[s]:d[s]:D()||!a.k?s.value:d[a.k];if(t)Ca(L)&&lo(L,o);else if(Ca(L))L.includes(o)||L.push(o);else if(T)d[s]=[o],x(s)&&(_[s]=d[s]);else{const E=[o];D(s,a.k)&&(s.value=E),a.k&&(d[a.k]=E)}}else T?(d[s]=r,x(s)&&(_[s]=r)):$&&(D(s,a.k)&&(s.value=r),a.k&&(d[a.k]=r))};if(r){const L=()=>{w(),ht.delete(a)};L.id=-1,ht.set(a,L),pn(L,e)}else Yl(a),w()}}}function Yl(a){const n=ht.get(a);n&&(n.flags|=8,ht.delete(a))}const Wl=a=>a.nodeType===8;it().requestIdleCallback,it().cancelIdleCallback;function $d(a,n){if(Wl(a)&&a.data==="["){let e=1,i=a.nextSibling;for(;i;){if(i.nodeType===1){if(n(i)===!1)break}else if(Wl(i))if(i.data==="]"){if(--e===0)break}else i.data==="["&&e++;i=i.nextSibling}}else n(a)}const Ci=a=>!!a.type.__asyncLoader;function Fd(a){ka(a)&&(a={loader:a});const{loader:n,loadingComponent:e,errorComponent:i,delay:t=200,hydrate:o,timeout:r,suspensible:l=!0,onError:s}=a;let g=null,d,_=0;const k=()=>(_++,g=null,x()),x=()=>{let D;return g||(D=g=n().catch(T=>{if(T=T instanceof Error?T:new Error(String(T)),s)return new Promise(($,w)=>{s(T,()=>$(k()),()=>w(T),_+1)});throw T}).then(T=>D!==g&&g?g:(T&&(T.__esModule||T[Symbol.toStringTag]==="Module")&&(T=T.default),d=T,T)))};return fi({name:"AsyncComponentWrapper",__asyncLoader:x,__asyncHydrate(D,T,$){let w=!1;(T.bu||(T.bu=[])).push(()=>w=!0);const L=()=>{w||$()},E=o?()=>{const I=o(L,G=>$d(D,G));I&&(T.bum||(T.bum=[])).push(I)}:L;d?E():x().then(()=>!T.isUnmounted&&E())},get __asyncResolved(){return d},setup(){const D=tn;if(Mo(D),d)return()=>yt(d,D);const T=E=>{g=null,yi(E,D,13,!i)};if(l&&D.suspense||De)return x().then(E=>()=>yt(E,D)).catch(E=>(T(E),()=>i?Wa(i,{error:E}):null));const $=ua(!1),w=ua(),L=ua(!!t);return t&&setTimeout(()=>{L.value=!1},t),r!=null&&setTimeout(()=>{if(!$.value&&!w.value){const E=new Error(`Async component timed out after ${r}ms.`);T(E),w.value=E}},r),x().then(()=>{$.value=!0,D.parent&&Io(D.parent.vnode)&&D.parent.update()}).catch(E=>{T(E),w.value=E}),()=>{if($.value&&d)return yt(d,D);if(w.value&&i)return Wa(i,{error:w.value});if(e&&!L.value)return yt(e,D)}}})}function yt(a,n){const{ref:e,props:i,children:t,ce:o}=n.vnode,r=Wa(a,i,t);return r.ref=e,r.ce=o,delete n.vnode.ce,r}const Io=a=>a.type.__isKeepAlive;function Kd(a,n){Jl(a,"a",n)}function Bd(a,n){Jl(a,"da",n)}function Jl(a,n,e=tn){const i=a.__wdc||(a.__wdc=()=>{let t=e;for(;t;){if(t.isDeactivated)return;t=t.parent}return a()});if(bt(n,i,e),e){let t=e.parent;for(;t&&t.parent;)Io(t.parent.vnode)&&Od(i,n,e,t),t=t.parent}}function Od(a,n,e,i){const t=bt(n,a,i,!0);wo(()=>{lo(i[n],t)},e)}function bt(a,n,e=tn,i=!1){if(e){const t=e[a]||(e[a]=[]),o=n.__weh||(n.__weh=(...r)=>{wn();const l=Ei(e),s=Nn(n,e,a,r);return l(),xn(),s});return i?t.unshift(o):t.push(o),o}}const Jn=a=>(n,e=tn)=>{(!De||a==="sp")&&bt(a,(...i)=>n(...i),e)},Zl=Jn("bm"),Rn=Jn("m"),Ud=Jn("bu"),Hd=Jn("u"),Ue=Jn("bum"),wo=Jn("um"),Dd=Jn("sp"),zd=Jn("rtg"),Vd=Jn("rtc");function Yd(a,n=tn){bt("ec",a,n)}const Wd="components",ql=Symbol.for("v-ndc");function Jd(a){return Da(a)?Zd(Wd,a,!1)||a:a||ql}function Zd(a,n,e=!0,i=!1){const t=_n||tn;if(t){const o=t.type;{const l=ws(o,!1);if(l&&(l===n||l===nn(n)||l===et(nn(n))))return o}const r=Xl(t[a]||o[a],n)||Xl(t.appContext[a],n);return!r&&i?o:r}}function Xl(a,n){return a&&(a[n]||a[nn(n)]||a[et(nn(n))])}function Ua(a,n,e,i){let t;const o=e,r=Ca(a);if(r||Da(a)){const l=r&&Vn(a);let s=!1,g=!1;l&&(s=!bn(a),g=Yn(a),a=ot(a)),t=new Array(a.length);for(let d=0,_=a.length;d<_;d++)t[d]=n(s?g?Fe(Gn(a[d])):Gn(a[d]):a[d],d,void 0,o)}else if(typeof a=="number"){t=new Array(a);for(let l=0;ln(l,s,void 0,o));else{const l=Object.keys(a);t=new Array(l.length);for(let s=0,g=l.length;sa?Es(a)?vt(a):xo(a.parent):null,ji=Ja(Object.create(null),{$:a=>a,$el:a=>a.vnode.el,$data:a=>a.data,$props:a=>a.props,$attrs:a=>a.attrs,$slots:a=>a.slots,$refs:a=>a.refs,$parent:a=>xo(a.parent),$root:a=>xo(a.root),$host:a=>a.ce,$emit:a=>a.emit,$options:a=>es(a),$forceUpdate:a=>a.f||(a.f=()=>{Ao(a.update)}),$nextTick:a=>a.n||(a.n=bi.bind(a.proxy)),$watch:a=>Td.bind(a)}),To=(a,n)=>a!==Fa&&!a.__isScriptSetup&&Ta(a,n),qd={get({_:a},n){if(n==="__v_skip")return!0;const{ctx:e,setupState:i,data:t,props:o,accessCache:r,type:l,appContext:s}=a;if(n[0]!=="$"){const k=r[n];if(k!==void 0)switch(k){case 1:return i[n];case 2:return t[n];case 4:return e[n];case 3:return o[n]}else{if(To(i,n))return r[n]=1,i[n];if(t!==Fa&&Ta(t,n))return r[n]=2,t[n];if(Ta(o,n))return r[n]=3,o[n];if(e!==Fa&&Ta(e,n))return r[n]=4,e[n];No&&(r[n]=0)}}const g=ji[n];let d,_;if(g)return n==="$attrs"&&rn(a.attrs,"get",""),g(a);if((d=l.__cssModules)&&(d=d[n]))return d;if(e!==Fa&&Ta(e,n))return r[n]=4,e[n];if(_=s.config.globalProperties,Ta(_,n))return _[n]},set({_:a},n,e){const{data:i,setupState:t,ctx:o}=a;return To(t,n)?(t[n]=e,!0):i!==Fa&&Ta(i,n)?(i[n]=e,!0):Ta(a.props,n)||n[0]==="$"&&n.slice(1)in a?!1:(o[n]=e,!0)},has({_:{data:a,setupState:n,accessCache:e,ctx:i,appContext:t,props:o,type:r}},l){let s;return!!(e[l]||a!==Fa&&l[0]!=="$"&&Ta(a,l)||To(n,l)||Ta(o,l)||Ta(i,l)||Ta(ji,l)||Ta(t.config.globalProperties,l)||(s=r.__cssModules)&&s[l])},defineProperty(a,n,e){return e.get!=null?a._.accessCache[n]=0:Ta(e,"value")&&this.set(a,n,e.value,null),Reflect.defineProperty(a,n,e)}};function Ql(a){return Ca(a)?a.reduce((n,e)=>(n[e]=null,n),{}):a}let No=!0;function Xd(a){const n=es(a),e=a.proxy,i=a.ctx;No=!1,n.beforeCreate&&as(n.beforeCreate,a,"bc");const{data:t,computed:o,methods:r,watch:l,provide:s,inject:g,created:d,beforeMount:_,mounted:k,beforeUpdate:x,updated:D,activated:T,deactivated:$,beforeDestroy:w,beforeUnmount:L,destroyed:E,unmounted:I,render:G,renderTracked:S,renderTriggered:v,errorCaptured:K,serverPrefetch:O,expose:q,inheritAttrs:sa,components:ea,directives:ga,filters:Sa}=n;if(g&&Qd(g,i,null),r)for(const pa in r){const Y=r[pa];ka(Y)&&(i[pa]=Y.bind(e))}if(t){const pa=t.call(e,e);Na(pa)&&(a.data=pi(pa))}if(No=!0,o)for(const pa in o){const Y=o[pa],ta=ka(Y)?Y.bind(e,e):ka(Y.get)?Y.get.bind(e,e):Mn,aa=!ka(Y)&&ka(Y.set)?Y.set.bind(e):Mn,ba=la({get:ta,set:aa});Object.defineProperty(i,pa,{enumerable:!0,configurable:!0,get:()=>ba.value,set:na=>ba.value=na})}if(l)for(const pa in l)ns(l[pa],i,e,pa);if(s){const pa=ka(s)?s.call(e):s;Reflect.ownKeys(pa).forEach(Y=>{vn(Y,pa[Y])})}d&&as(d,a,"c");function ma(pa,Y){Ca(Y)?Y.forEach(ta=>pa(ta.bind(e))):Y&&pa(Y.bind(e))}if(ma(Zl,_),ma(Rn,k),ma(Ud,x),ma(Hd,D),ma(Kd,T),ma(Bd,$),ma(Yd,K),ma(Vd,S),ma(zd,v),ma(Ue,L),ma(wo,I),ma(Dd,O),Ca(q))if(q.length){const pa=a.exposed||(a.exposed={});q.forEach(Y=>{Object.defineProperty(pa,Y,{get:()=>e[Y],set:ta=>e[Y]=ta,enumerable:!0})})}else a.exposed||(a.exposed={});G&&a.render===Mn&&(a.render=G),sa!=null&&(a.inheritAttrs=sa),ea&&(a.components=ea),ga&&(a.directives=ga),O&&Mo(a)}function Qd(a,n,e=Mn){Ca(a)&&(a=Lo(a));for(const i in a){const t=a[i];let o;Na(t)?"default"in t?o=Ya(t.from||i,t.default,!0):o=Ya(t.from||i):o=Ya(t),Va(o)?Object.defineProperty(n,i,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):n[i]=o}}function as(a,n,e){Nn(Ca(a)?a.map(i=>i.bind(n.proxy)):a.bind(n.proxy),n,e)}function ns(a,n,e,i){let t=i.includes(".")?zl(e,i):()=>e[i];if(Da(a)){const o=n[a];ka(o)&&cn(t,o)}else if(ka(a))cn(t,a.bind(e));else if(Na(a))if(Ca(a))a.forEach(o=>ns(o,n,e,i));else{const o=ka(a.handler)?a.handler.bind(e):n[a.handler];ka(o)&&cn(t,o,a)}}function es(a){const n=a.type,{mixins:e,extends:i}=n,{mixins:t,optionsCache:o,config:{optionMergeStrategies:r}}=a.appContext,l=o.get(n);let s;return l?s=l:!t.length&&!e&&!i?s=n:(s={},t.length&&t.forEach(g=>_t(s,g,r,!0)),_t(s,n,r)),Na(n)&&o.set(n,s),s}function _t(a,n,e,i=!1){const{mixins:t,extends:o}=n;o&&_t(a,o,e,!0),t&&t.forEach(r=>_t(a,r,e,!0));for(const r in n)if(!(i&&r==="expose")){const l=ap[r]||e&&e[r];a[r]=l?l(a[r],n[r]):n[r]}return a}const ap={data:is,props:ts,emits:ts,methods:ki,computed:ki,beforeCreate:gn,created:gn,beforeMount:gn,mounted:gn,beforeUpdate:gn,updated:gn,beforeDestroy:gn,beforeUnmount:gn,destroyed:gn,unmounted:gn,activated:gn,deactivated:gn,errorCaptured:gn,serverPrefetch:gn,components:ki,directives:ki,watch:ep,provide:is,inject:np};function is(a,n){return n?a?function(){return Ja(ka(a)?a.call(this,this):a,ka(n)?n.call(this,this):n)}:n:a}function np(a,n){return ki(Lo(a),Lo(n))}function Lo(a){if(Ca(a)){const n={};for(let e=0;en==="modelValue"||n==="model-value"?a.modelModifiers:a[`${n}Modifiers`]||a[`${nn(n)}Modifiers`]||a[`${yn(n)}Modifiers`];function rp(a,n,...e){if(a.isUnmounted)return;const i=a.vnode.props||Fa;let t=e;const o=n.startsWith("update:"),r=o&&op(i,n.slice(7));r&&(r.trim&&(t=e.map(d=>Da(d)?d.trim():d)),r.number&&(t=e.map($u)));let l,s=i[l=so(n)]||i[l=so(nn(n))];!s&&o&&(s=i[l=so(yn(n))]),s&&Nn(s,a,6,t);const g=i[l+"Once"];if(g){if(!a.emitted)a.emitted={};else if(a.emitted[l])return;a.emitted[l]=!0,Nn(g,a,6,t)}}const lp=new WeakMap;function rs(a,n,e=!1){const i=e?lp:n.emitsCache,t=i.get(a);if(t!==void 0)return t;const o=a.emits;let r={},l=!1;if(!ka(a)){const s=g=>{const d=rs(g,n,!0);d&&(l=!0,Ja(r,d))};!e&&n.mixins.length&&n.mixins.forEach(s),a.extends&&s(a.extends),a.mixins&&a.mixins.forEach(s)}return!o&&!l?(Na(a)&&i.set(a,null),null):(Ca(o)?o.forEach(s=>r[s]=null):Ja(r,o),Na(a)&&i.set(a,r),r)}function ft(a,n){return!a||!qi(n)?!1:(n=n.slice(2).replace(/Once$/,""),Ta(a,n[0].toLowerCase()+n.slice(1))||Ta(a,yn(n))||Ta(a,n))}function Jf(){}function ls(a){const{type:n,vnode:e,proxy:i,withProxy:t,propsOptions:[o],slots:r,attrs:l,emit:s,render:g,renderCache:d,props:_,data:k,setupState:x,ctx:D,inheritAttrs:T}=a,$=mt(a);let w,L;try{if(e.shapeFlag&4){const I=t||i,G=I;w=$n(g.call(G,I,d,_,x,k,D)),L=l}else{const I=n;w=$n(I.length>1?I(_,{attrs:l,slots:r,emit:s}):I(_,null)),L=n.props?l:sp(l)}}catch(I){vi.length=0,yi(I,a,1),w=Wa(ge)}let E=w;if(L&&T!==!1){const I=Object.keys(L),{shapeFlag:G}=E;I.length&&G&7&&(o&&I.some(Xi)&&(L=cp(L,o)),E=He(E,L,!1,!0))}return e.dirs&&(E=He(E,null,!1,!0),E.dirs=E.dirs?E.dirs.concat(e.dirs):e.dirs),e.transition&&Eo(E,e.transition),w=E,mt($),w}const sp=a=>{let n;for(const e in a)(e==="class"||e==="style"||qi(e))&&((n||(n={}))[e]=a[e]);return n},cp=(a,n)=>{const e={};for(const i in a)(!Xi(i)||!(i.slice(9)in n))&&(e[i]=a[i]);return e};function gp(a,n,e){const{props:i,children:t,component:o}=a,{props:r,children:l,patchFlag:s}=n,g=o.emitsOptions;if(n.dirs||n.transition)return!0;if(e&&s>=0){if(s&1024)return!0;if(s&16)return i?ss(i,r,g):!!r;if(s&8){const d=n.dynamicProps;for(let _=0;_Object.create(gs),ds=a=>Object.getPrototypeOf(a)===gs;function dp(a,n,e,i=!1){const t={},o=us();a.propsDefaults=Object.create(null),ps(a,n,t,o);for(const r in a.propsOptions[0])r in t||(t[r]=void 0);e?a.props=i?t:gd(t):a.type.props?a.props=t:a.props=o,a.attrs=o}function pp(a,n,e,i){const{props:t,attrs:o,vnode:{patchFlag:r}}=a,l=wa(t),[s]=a.propsOptions;let g=!1;if((i||r>0)&&!(r&16)){if(r&8){const d=a.vnode.dynamicProps;for(let _=0;_{s=!0;const[k,x]=ms(_,n,!0);Ja(r,k),x&&l.push(...x)};!e&&n.mixins.length&&n.mixins.forEach(d),a.extends&&d(a.extends),a.mixins&&a.mixins.forEach(d)}if(!o&&!s)return Na(a)&&i.set(a,Le),Le;if(Ca(o))for(let d=0;da==="_"||a==="_ctx"||a==="$stable",Fo=a=>Ca(a)?a.map($n):[$n(a)],hp=(a,n,e)=>{if(n._n)return n;const i=Sd((...t)=>Fo(n(...t)),e);return i._c=!1,i},ys=(a,n,e)=>{const i=a._ctx;for(const t in a){if($o(t))continue;const o=a[t];if(ka(o))n[t]=hp(t,o,i);else if(o!=null){const r=Fo(o);n[t]=()=>r}}},bs=(a,n)=>{const e=Fo(n);a.slots.default=()=>e},_s=(a,n,e)=>{for(const i in n)(e||!$o(i))&&(a[i]=n[i])},yp=(a,n,e)=>{const i=a.slots=us();if(a.vnode.shapeFlag&32){const t=n._;t?(_s(i,n,e),e&&cl(i,"_",t,!0)):ys(n,i)}else n&&bs(a,n)},bp=(a,n,e)=>{const{vnode:i,slots:t}=a;let o=!0,r=Fa;if(i.shapeFlag&32){const l=n._;l?e&&l===1?o=!1:_s(t,n,e):(o=!n.$stable,ys(n,t)),r=n}else n&&(bs(a,n),r={default:1});if(o)for(const l in t)!$o(l)&&r[l]==null&&delete t[l]},pn=jp;function _p(a){return fp(a)}function fp(a,n){const e=it();e.__VUE__=!0;const{insert:i,remove:t,patchProp:o,createElement:r,createText:l,createComment:s,setText:g,setElementText:d,parentNode:_,nextSibling:k,setScopeId:x=Mn,insertStaticContent:D}=a,T=(h,C,y,R=null,H=null,V=null,oa=void 0,Q=null,m=!!C.dynamicChildren)=>{if(h===C)return;h&&!Si(h,C)&&(R=P(h),na(h,H,V,!0),h=null),C.patchFlag===-2&&(m=!1,C.dynamicChildren=null);const{type:b,ref:F,shapeFlag:J}=C;switch(b){case Gi:$(h,C,y,R);break;case ge:w(h,C,y,R);break;case Pt:h==null&&L(C,y,R,oa);break;case Aa:ea(h,C,y,R,H,V,oa,Q,m);break;default:J&1?G(h,C,y,R,H,V,oa,Q,m):J&6?ga(h,C,y,R,H,V,oa,Q,m):(J&64||J&128)&&b.process(h,C,y,R,H,V,oa,Q,m,N)}F!=null&&H?Pi(F,h&&h.ref,V,C||h,!C):F==null&&h&&h.ref!=null&&Pi(h.ref,null,V,h,!0)},$=(h,C,y,R)=>{if(h==null)i(C.el=l(C.children),y,R);else{const H=C.el=h.el;C.children!==h.children&&g(H,C.children)}},w=(h,C,y,R)=>{h==null?i(C.el=s(C.children||""),y,R):C.el=h.el},L=(h,C,y,R)=>{[h.el,h.anchor]=D(h.children,C,y,R,h.el,h.anchor)},E=({el:h,anchor:C},y,R)=>{let H;for(;h&&h!==C;)H=k(h),i(h,y,R),h=H;i(C,y,R)},I=({el:h,anchor:C})=>{let y;for(;h&&h!==C;)y=k(h),t(h),h=y;t(C)},G=(h,C,y,R,H,V,oa,Q,m)=>{if(C.type==="svg"?oa="svg":C.type==="math"&&(oa="mathml"),h==null)S(C,y,R,H,V,oa,Q,m);else{const b=h.el&&h.el._isVueCE?h.el:null;try{b&&b._beginPatch(),O(h,C,H,V,oa,Q,m)}finally{b&&b._endPatch()}}},S=(h,C,y,R,H,V,oa,Q)=>{let m,b;const{props:F,shapeFlag:J,transition:ca,dirs:ra}=h;if(m=h.el=r(h.type,V,F&&F.is,F),J&8?d(m,h.children):J&16&&K(h.children,m,null,R,H,Ko(h,V),oa,Q),ra&&Ae(h,null,R,"created"),v(m,h,h.scopeId,oa,R),F){for(const Z in F)Z!=="value"&&!li(Z)&&o(m,Z,null,F[Z],V,R);"value"in F&&o(m,"value",null,F.value,V),(b=F.onVnodeBeforeMount)&&Fn(b,R,h)}ra&&Ae(h,null,R,"beforeMount");const B=Pp(H,ca);B&&ca.beforeEnter(m),i(m,C,y),((b=F&&F.onVnodeMounted)||B||ra)&&pn(()=>{try{b&&Fn(b,R,h),B&&ca.enter(m),ra&&Ae(h,null,R,"mounted")}finally{}},H)},v=(h,C,y,R,H)=>{if(y&&x(h,y),R)for(let V=0;V{for(let b=m;b{const Q=C.el=h.el;let{patchFlag:m,dynamicChildren:b,dirs:F}=C;m|=h.patchFlag&16;const J=h.props||Fa,ca=C.props||Fa;let ra;if(y&&Ee(y,!1),(ra=ca.onVnodeBeforeUpdate)&&Fn(ra,y,C,h),F&&Ae(C,h,y,"beforeUpdate"),y&&Ee(y,!0),(J.innerHTML&&ca.innerHTML==null||J.textContent&&ca.textContent==null)&&d(Q,""),b?q(h.dynamicChildren,b,Q,y,R,Ko(C,H),V):oa||Y(h,C,Q,null,y,R,Ko(C,H),V,!1),m>0){if(m&16)sa(Q,J,ca,y,H);else if(m&2&&J.class!==ca.class&&o(Q,"class",null,ca.class,H),m&4&&o(Q,"style",J.style,ca.style,H),m&8){const B=C.dynamicProps;for(let Z=0;Z{ra&&Fn(ra,y,C,h),F&&Ae(C,h,y,"updated")},R)},q=(h,C,y,R,H,V,oa)=>{for(let Q=0;Q{if(C!==y){if(C!==Fa)for(const V in C)!li(V)&&!(V in y)&&o(h,V,C[V],null,H,R);for(const V in y){if(li(V))continue;const oa=y[V],Q=C[V];oa!==Q&&V!=="value"&&o(h,V,Q,oa,H,R)}"value"in y&&o(h,"value",C.value,y.value,H)}},ea=(h,C,y,R,H,V,oa,Q,m)=>{const b=C.el=h?h.el:l(""),F=C.anchor=h?h.anchor:l("");let{patchFlag:J,dynamicChildren:ca,slotScopeIds:ra}=C;ra&&(Q=Q?Q.concat(ra):ra),h==null?(i(b,y,R),i(F,y,R),K(C.children||[],y,F,H,V,oa,Q,m)):J>0&&J&64&&ca&&h.dynamicChildren&&h.dynamicChildren.length===ca.length?(q(h.dynamicChildren,ca,y,H,V,oa,Q),(C.key!=null||H&&C===H.subTree)&&fs(h,C,!0)):Y(h,C,y,F,H,V,oa,Q,m)},ga=(h,C,y,R,H,V,oa,Q,m)=>{C.slotScopeIds=Q,h==null?C.shapeFlag&512?H.ctx.activate(C,y,R,oa,m):Sa(C,y,R,H,V,oa,m):Ma(h,C,m)},Sa=(h,C,y,R,H,V,oa)=>{const Q=h.component=Mp(h,R,H);if(Io(h)&&(Q.ctx.renderer=N),Ip(Q,!1,oa),Q.asyncDep){if(H&&H.registerDep(Q,ma,oa),!h.el){const m=Q.subTree=Wa(ge);w(null,m,C,y),h.placeholder=m.el}}else ma(Q,h,C,y,H,V,oa)},Ma=(h,C,y)=>{const R=C.component=h.component;if(gp(h,C,y))if(R.asyncDep&&!R.asyncResolved){pa(R,C,y);return}else R.next=C,R.update();else C.el=h.el,R.vnode=C},ma=(h,C,y,R,H,V,oa)=>{const Q=()=>{if(h.isMounted){let{next:J,bu:ca,u:ra,parent:B,vnode:Z}=h;{const qa=Ps(h);if(qa){J&&(J.el=Z.el,pa(h,J,oa)),qa.asyncDep.then(()=>{pn(()=>{h.isUnmounted||b()},H)});return}}let _a=J,va;Ee(h,!1),J?(J.el=Z.el,pa(h,J,oa)):J=Z,ca&&co(ca),(va=J.props&&J.props.onVnodeBeforeUpdate)&&Fn(va,B,J,Z),Ee(h,!0);const Ra=ls(h),an=h.subTree;h.subTree=Ra,T(an,Ra,_(an.el),P(an),h,H,V),J.el=Ra.el,_a===null&&up(h,Ra.el),ra&&pn(ra,H),(va=J.props&&J.props.onVnodeUpdated)&&pn(()=>Fn(va,B,J,Z),H)}else{let J;const{el:ca,props:ra}=C,{bm:B,m:Z,parent:_a,root:va,type:Ra}=h,an=Ci(C);Ee(h,!1),B&&co(B),!an&&(J=ra&&ra.onVnodeBeforeMount)&&Fn(J,_a,C),Ee(h,!0);{va.ce&&va.ce._hasShadowRoot()&&va.ce._injectChildStyle(Ra,h.parent?h.parent.type:void 0);const qa=h.subTree=ls(h);T(null,qa,y,R,h,H,V),C.el=qa.el}if(Z&&pn(Z,H),!an&&(J=ra&&ra.onVnodeMounted)){const qa=C;pn(()=>Fn(J,_a,qa),H)}(C.shapeFlag&256||_a&&Ci(_a.vnode)&&_a.vnode.shapeFlag&256)&&h.a&&pn(h.a,H),h.isMounted=!0,C=y=R=null}};h.scope.on();const m=h.effect=new bl(Q);h.scope.off();const b=h.update=m.run.bind(m),F=h.job=m.runIfDirty.bind(m);F.i=h,F.id=h.uid,m.scheduler=()=>Ao(F),Ee(h,!0),b()},pa=(h,C,y)=>{C.component=h;const R=h.vnode.props;h.vnode=C,h.next=null,pp(h,C.props,R,y),bp(h,C.children,y),wn(),Ol(h),xn()},Y=(h,C,y,R,H,V,oa,Q,m=!1)=>{const b=h&&h.children,F=h?h.shapeFlag:0,J=C.children,{patchFlag:ca,shapeFlag:ra}=C;if(ca>0){if(ca&128){aa(b,J,y,R,H,V,oa,Q,m);return}else if(ca&256){ta(b,J,y,R,H,V,oa,Q,m);return}}ra&8?(F&16&&c(b,H,V),J!==b&&d(y,J)):F&16?ra&16?aa(b,J,y,R,H,V,oa,Q,m):c(b,H,V,!0):(F&8&&d(y,""),ra&16&&K(J,y,R,H,V,oa,Q,m))},ta=(h,C,y,R,H,V,oa,Q,m)=>{h=h||Le,C=C||Le;const b=h.length,F=C.length,J=Math.min(b,F);let ca;for(ca=0;caF?c(h,H,V,!0,!1,J):K(C,y,R,H,V,oa,Q,m,J)},aa=(h,C,y,R,H,V,oa,Q,m)=>{let b=0;const F=C.length;let J=h.length-1,ca=F-1;for(;b<=J&&b<=ca;){const ra=h[b],B=C[b]=m?Zn(C[b]):$n(C[b]);if(Si(ra,B))T(ra,B,y,null,H,V,oa,Q,m);else break;b++}for(;b<=J&&b<=ca;){const ra=h[J],B=C[ca]=m?Zn(C[ca]):$n(C[ca]);if(Si(ra,B))T(ra,B,y,null,H,V,oa,Q,m);else break;J--,ca--}if(b>J){if(b<=ca){const ra=ca+1,B=raca)for(;b<=J;)na(h[b],H,V,!0),b++;else{const ra=b,B=b,Z=new Map;for(b=B;b<=ca;b++){const Ba=C[b]=m?Zn(C[b]):$n(C[b]);Ba.key!=null&&Z.set(Ba.key,b)}let _a,va=0;const Ra=ca-B+1;let an=!1,qa=0;const Pa=new Array(Ra);for(b=0;b=Ra){na(Ba,H,V,!0);continue}let dn;if(Ba.key!=null)dn=Z.get(Ba.key);else for(_a=B;_a<=ca;_a++)if(Pa[_a-B]===0&&Si(Ba,C[_a])){dn=_a;break}dn===void 0?na(Ba,H,V,!0):(Pa[dn-B]=b+1,dn>=qa?qa=dn:an=!0,T(Ba,C[dn],y,null,H,V,oa,Q,m),va++)}const $a=an?Cp(Pa):Le;for(_a=$a.length-1,b=Ra-1;b>=0;b--){const Ba=B+b,dn=C[Ba],Ne=C[Ba+1],hn=Ba+1{const{el:V,type:oa,transition:Q,children:m,shapeFlag:b}=h;if(b&6){ba(h.component.subTree,C,y,R);return}if(b&128){h.suspense.move(C,y,R);return}if(b&64){oa.move(h,C,y,N);return}if(oa===Aa){i(V,C,y);for(let J=0;JQ.enter(V),H);else{const{leave:J,delayLeave:ca,afterLeave:ra}=Q,B=()=>{h.ctx.isUnmounted?t(V):i(V,C,y)},Z=()=>{V._isLeaving&&V[Rd](!0),J(V,()=>{B(),ra&&ra()})};ca?ca(V,B,Z):Z()}else i(V,C,y)},na=(h,C,y,R=!1,H=!1)=>{const{type:V,props:oa,ref:Q,children:m,dynamicChildren:b,shapeFlag:F,patchFlag:J,dirs:ca,cacheIndex:ra,memo:B}=h;if(J===-2&&(H=!1),Q!=null&&(wn(),Pi(Q,null,y,h,!0),xn()),ra!=null&&(C.renderCache[ra]=void 0),F&256){C.ctx.deactivate(h);return}const Z=F&1&&ca,_a=!Ci(h);let va;if(_a&&(va=oa&&oa.onVnodeBeforeUnmount)&&Fn(va,C,h),F&6)j(h.component,y,R);else{if(F&128){h.suspense.unmount(y,R);return}Z&&Ae(h,null,C,"beforeUnmount"),F&64?h.type.remove(h,C,y,N,R):b&&!b.hasOnce&&(V!==Aa||J>0&&J&64)?c(b,C,y,!1,!0):(V===Aa&&J&384||!H&&F&16)&&c(m,C,y),R&&u(h)}const Ra=B!=null&&ra==null;(_a&&(va=oa&&oa.onVnodeUnmounted)||Z||Ra)&&pn(()=>{va&&Fn(va,C,h),Z&&Ae(h,null,C,"unmounted"),Ra&&(h.el=null)},y)},u=h=>{const{type:C,el:y,anchor:R,transition:H}=h;if(C===Aa){A(y,R);return}if(C===Pt){I(h);return}const V=()=>{t(y),H&&!H.persisted&&H.afterLeave&&H.afterLeave()};if(h.shapeFlag&1&&H&&!H.persisted){const{leave:oa,delayLeave:Q}=H,m=()=>oa(y,V);Q?Q(h.el,V,m):m()}else V()},A=(h,C)=>{let y;for(;h!==C;)y=k(h),t(h),h=y;t(C)},j=(h,C,y)=>{const{bum:R,scope:H,job:V,subTree:oa,um:Q,m,a:b}=h;Cs(m),Cs(b),R&&co(R),H.stop(),V&&(V.flags|=8,na(oa,h,C,y)),Q&&pn(Q,C),pn(()=>{h.isUnmounted=!0},C)},c=(h,C,y,R=!1,H=!1,V=0)=>{for(let oa=V;oa{if(h.shapeFlag&6)return P(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const C=k(h.anchor||h.el),y=C&&C[Nd];return y?k(y):C};let p=!1;const M=(h,C,y)=>{let R;h==null?C._vnode&&(na(C._vnode,null,null,!0),R=C._vnode.component):T(C._vnode||null,h,C,null,null,null,y),C._vnode=h,p||(p=!0,Ol(R),Ul(),p=!1)},N={p:T,um:na,m:ba,r:u,mt:Sa,mc:K,pc:Y,pbc:q,n:P,o:a};return{render:M,hydrate:void 0,createApp:tp(M)}}function Ko({type:a,props:n},e){return e==="svg"&&a==="foreignObject"||e==="mathml"&&a==="annotation-xml"&&n&&n.encoding&&n.encoding.includes("html")?void 0:e}function Ee({effect:a,job:n},e){e?(a.flags|=32,n.flags|=4):(a.flags&=-33,n.flags&=-5)}function Pp(a,n){return(!a||a&&!a.pendingBranch)&&n&&!n.persisted}function fs(a,n,e=!1){const i=a.children,t=n.children;if(Ca(i)&&Ca(t))for(let o=0;o>1,a[e[l]]0&&(n[i]=e[o-1]),e[o]=i)}}for(o=e.length,r=e[o-1];o-- >0;)e[o]=r,r=n[r];return e}function Ps(a){const n=a.subTree.component;if(n)return n.asyncDep&&!n.asyncResolved?n:Ps(n)}function Cs(a){if(a)for(let n=0;na.__isSuspense;function jp(a,n){n&&n.pendingBranch?Ca(a)?n.effects.push(...a):n.effects.push(a):Ad(a)}const Aa=Symbol.for("v-fgt"),Gi=Symbol.for("v-txt"),ge=Symbol.for("v-cmt"),Pt=Symbol.for("v-stc"),vi=[];let fn=null;function z(a=!1){vi.push(fn=a?null:[])}function kp(){vi.pop(),fn=vi[vi.length-1]||null}let Ai=1;function Ct(a,n=!1){Ai+=a,a<0&&fn&&n&&(fn.hasOnce=!0)}function Gs(a){return a.dynamicChildren=Ai>0?fn||Le:null,kp(),Ai>0&&fn&&fn.push(a),a}function W(a,n,e,i,t,o){return Gs(f(a,n,e,i,t,o,!0))}function Me(a,n,e,i,t){return Gs(Wa(a,n,e,i,t,!0))}function jt(a){return a?a.__v_isVNode===!0:!1}function Si(a,n){return a.type===n.type&&a.key===n.key}const vs=({key:a})=>a??null,kt=({ref:a,ref_key:n,ref_for:e})=>(typeof a=="number"&&(a=""+a),a!=null?Da(a)||Va(a)||ka(a)?{i:_n,r:a,k:n,f:!!e}:a:null);function f(a,n=null,e=null,i=0,t=null,o=a===Aa?0:1,r=!1,l=!1){const s={__v_isVNode:!0,__v_skip:!0,type:a,props:n,key:n&&vs(n),ref:n&&kt(n),scopeId:Dl,slotScopeIds:null,children:e,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:i,dynamicProps:t,dynamicChildren:null,appContext:null,ctx:_n};return l?(Bo(s,e),o&128&&a.normalize(s)):e&&(s.shapeFlag|=Da(e)?8:16),Ai>0&&!r&&fn&&(s.patchFlag>0||o&6)&&s.patchFlag!==32&&fn.push(s),s}const Wa=Gp;function Gp(a,n=null,e=null,i=0,t=null,o=!1){if((!a||a===ql)&&(a=ge),jt(a)){const l=He(a,n,!0);return e&&Bo(l,e),Ai>0&&!o&&fn&&(l.shapeFlag&6?fn[fn.indexOf(a)]=l:fn.push(l)),l.patchFlag=-2,l}if(Rp(a)&&(a=a.__vccOpts),n){n=vp(n);let{class:l,style:s}=n;l&&!Da(l)&&(n.class=Ia(l)),Na(s)&&(gt(s)&&!Ca(s)&&(s=Ja({},s)),n.style=Ka(s))}const r=Da(a)?1:ks(a)?128:Ld(a)?64:Na(a)?4:ka(a)?2:0;return f(a,n,e,i,t,r,o,!0)}function vp(a){return a?gt(a)||ds(a)?Ja({},a):a:null}function He(a,n,e=!1,i=!1){const{props:t,ref:o,patchFlag:r,children:l,transition:s}=a,g=n?Ap(t||{},n):t,d={__v_isVNode:!0,__v_skip:!0,type:a.type,props:g,key:g&&vs(g),ref:n&&n.ref?e&&o?Ca(o)?o.concat(kt(n)):[o,kt(n)]:kt(n):o,scopeId:a.scopeId,slotScopeIds:a.slotScopeIds,children:l,target:a.target,targetStart:a.targetStart,targetAnchor:a.targetAnchor,staticCount:a.staticCount,shapeFlag:a.shapeFlag,patchFlag:n&&a.type!==Aa?r===-1?16:r|16:r,dynamicProps:a.dynamicProps,dynamicChildren:a.dynamicChildren,appContext:a.appContext,dirs:a.dirs,transition:s,component:a.component,suspense:a.suspense,ssContent:a.ssContent&&He(a.ssContent),ssFallback:a.ssFallback&&He(a.ssFallback),placeholder:a.placeholder,el:a.el,anchor:a.anchor,ctx:a.ctx,ce:a.ce};return s&&i&&Eo(d,s.clone(d)),d}function ya(a=" ",n=0){return Wa(Gi,null,a,n)}function As(a,n){const e=Wa(Pt,null,a);return e.staticCount=n,e}function fa(a="",n=!1){return n?(z(),Me(ge,null,a)):Wa(ge,null,a)}function $n(a){return a==null||typeof a=="boolean"?Wa(ge):Ca(a)?Wa(Aa,null,a.slice()):jt(a)?Zn(a):Wa(Gi,null,String(a))}function Zn(a){return a.el===null&&a.patchFlag!==-1||a.memo?a:He(a)}function Bo(a,n){let e=0;const{shapeFlag:i}=a;if(n==null)n=null;else if(Ca(n))e=16;else if(typeof n=="object")if(i&65){const t=n.default;t&&(t._c&&(t._d=!1),Bo(a,t()),t._c&&(t._d=!0));return}else{e=32;const t=n._;!t&&!ds(n)?n._ctx=_n:t===3&&_n&&(_n.slots._===1?n._=1:(n._=2,a.patchFlag|=1024))}else ka(n)?(n={default:n,_ctx:_n},e=32):(n=String(n),i&64?(e=16,n=[ya(n)]):e=8);a.children=n,a.shapeFlag|=e}function Ap(...a){const n={};for(let e=0;etn||_n;let Gt,Oo;{const a=it(),n=(e,i)=>{let t;return(t=a[e])||(t=a[e]=[]),t.push(i),o=>{t.length>1?t.forEach(r=>r(o)):t[0](o)}};Gt=n("__VUE_INSTANCE_SETTERS__",e=>tn=e),Oo=n("__VUE_SSR_SETTERS__",e=>De=e)}const Ei=a=>{const n=tn;return Gt(a),a.scope.on(),()=>{a.scope.off(),Gt(n)}},Ss=()=>{tn&&tn.scope.off(),Gt(null)};function Es(a){return a.vnode.shapeFlag&4}let De=!1;function Ip(a,n=!1,e=!1){n&&Oo(n);const{props:i,children:t}=a.vnode,o=Es(a);dp(a,i,o,n),yp(a,t,e||n);const r=o?wp(a,n):void 0;return n&&Oo(!1),r}function wp(a,n){const e=a.type;a.accessCache=Object.create(null),a.proxy=new Proxy(a.ctx,qd);const{setup:i}=e;if(i){wn();const t=a.setupContext=i.length>1?Tp(a):null,o=Ei(a),r=Ke(i,a,0,[a.props,t]),l=ll(r);if(xn(),o(),(l||a.sp)&&!Ci(a)&&Mo(a),l){if(r.then(Ss,Ss),n)return r.then(s=>{Ms(a,s)}).catch(s=>{yi(s,a,0)});a.asyncDep=r}else Ms(a,r)}else Is(a)}function Ms(a,n,e){ka(n)?a.type.__ssrInlineRender?a.ssrRender=n:a.render=n:Na(n)&&(a.setupState=$l(n)),Is(a)}function Is(a,n,e){const i=a.type;a.render||(a.render=i.render||Mn);{const t=Ei(a);wn();try{Xd(a)}finally{xn(),t()}}}const xp={get(a,n){return rn(a,"get",""),a[n]}};function Tp(a){const n=e=>{a.exposed=e||{}};return{attrs:new Proxy(a.attrs,xp),slots:a.slots,emit:a.emit,expose:n}}function vt(a){return a.exposed?a.exposeProxy||(a.exposeProxy=new Proxy($l(mi(a.exposed)),{get(n,e){if(e in n)return n[e];if(e in ji)return ji[e](a)},has(n,e){return e in n||e in ji}})):a.proxy}const Np=/(?:^|[-_])\w/g,Lp=a=>a.replace(Np,n=>n.toUpperCase()).replace(/[-_]/g,"");function ws(a,n=!0){return ka(a)?a.displayName||a.name:a.name||n&&a.__name}function xs(a,n,e=!1){let i=ws(n);if(!i&&n.__file){const t=n.__file.match(/([^/\\]+)\.\w+$/);t&&(i=t[1])}if(!i&&a){const t=o=>{for(const r in o)if(o[r]===n)return r};i=t(a.components)||a.parent&&t(a.parent.type.components)||t(a.appContext.components)}return i?Lp(i):e?"App":"Anonymous"}function Rp(a){return ka(a)&&"__vccOpts"in a}const la=(a,n)=>bd(a,n,De);function Ts(a,n,e){try{Ct(-1);const i=arguments.length;return i===2?Na(n)&&!Ca(n)?jt(n)?Wa(a,null,[n]):Wa(a,n):Wa(a,null,n):(i>3?e=Array.prototype.slice.call(arguments,2):i===3&&jt(e)&&(e=[e]),Wa(a,n,e))}finally{Ct(1)}}const $p="3.5.34";/** -* @vue/runtime-dom v3.5.34 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Uo;const Ns=typeof window<"u"&&window.trustedTypes;if(Ns)try{Uo=Ns.createPolicy("vue",{createHTML:a=>a})}catch{}const Ls=Uo?a=>Uo.createHTML(a):a=>a,Fp="http://www.w3.org/2000/svg",Kp="http://www.w3.org/1998/Math/MathML",qn=typeof document<"u"?document:null,Rs=qn&&qn.createElement("template"),Bp={insert:(a,n,e)=>{n.insertBefore(a,e||null)},remove:a=>{const n=a.parentNode;n&&n.removeChild(a)},createElement:(a,n,e,i)=>{const t=n==="svg"?qn.createElementNS(Fp,a):n==="mathml"?qn.createElementNS(Kp,a):e?qn.createElement(a,{is:e}):qn.createElement(a);return a==="select"&&i&&i.multiple!=null&&t.setAttribute("multiple",i.multiple),t},createText:a=>qn.createTextNode(a),createComment:a=>qn.createComment(a),setText:(a,n)=>{a.nodeValue=n},setElementText:(a,n)=>{a.textContent=n},parentNode:a=>a.parentNode,nextSibling:a=>a.nextSibling,querySelector:a=>qn.querySelector(a),setScopeId(a,n){a.setAttribute(n,"")},insertStaticContent(a,n,e,i,t,o){const r=e?e.previousSibling:n.lastChild;if(t&&(t===o||t.nextSibling))for(;n.insertBefore(t.cloneNode(!0),e),!(t===o||!(t=t.nextSibling)););else{Rs.innerHTML=Ls(i==="svg"?`${a}`:i==="mathml"?`${a}`:a);const l=Rs.content;if(i==="svg"||i==="mathml"){const s=l.firstChild;for(;s.firstChild;)l.appendChild(s.firstChild);l.removeChild(s)}n.insertBefore(l,e)}return[r?r.nextSibling:n.firstChild,e?e.previousSibling:n.lastChild]}},Op=Symbol("_vtc");function Up(a,n,e){const i=a[Op];i&&(n=(n?[n,...i]:[...i]).join(" ")),n==null?a.removeAttribute("class"):e?a.setAttribute("class",n):a.className=n}const At=Symbol("_vod"),$s=Symbol("_vsh"),Hp={name:"show",beforeMount(a,{value:n},{transition:e}){a[At]=a.style.display==="none"?"":a.style.display,e&&n?e.beforeEnter(a):Mi(a,n)},mounted(a,{value:n},{transition:e}){e&&n&&e.enter(a)},updated(a,{value:n,oldValue:e},{transition:i}){!n!=!e&&(i?n?(i.beforeEnter(a),Mi(a,!0),i.enter(a)):i.leave(a,()=>{Mi(a,!1)}):Mi(a,n))},beforeUnmount(a,{value:n}){Mi(a,n)}};function Mi(a,n){a.style.display=n?a[At]:"none",a[$s]=!n}const Dp=Symbol(""),zp=/(?:^|;)\s*display\s*:/;function Vp(a,n,e){const i=a.style,t=Da(e);let o=!1;if(e&&!t){if(n)if(Da(n))for(const r of n.split(";")){const l=r.slice(0,r.indexOf(":")).trim();e[l]==null&&Ii(i,l,"")}else for(const r in n)e[r]==null&&Ii(i,r,"");for(const r in e){r==="display"&&(o=!0);const l=e[r];l!=null?Wp(a,r,!Da(n)&&n?n[r]:void 0,l)||Ii(i,r,l):Ii(i,r,"")}}else if(t){if(n!==e){const r=i[Dp];r&&(e+=";"+r),i.cssText=e,o=zp.test(e)}}else n&&a.removeAttribute("style");At in a&&(a[At]=o?i.display:"",a[$s]&&(i.display="none"))}const Fs=/\s*!important$/;function Ii(a,n,e){if(Ca(e))e.forEach(i=>Ii(a,n,i));else if(e==null&&(e=""),n.startsWith("--"))a.setProperty(n,e);else{const i=Yp(a,n);Fs.test(e)?a.setProperty(yn(i),e.replace(Fs,""),"important"):a[i]=e}}const Ks=["Webkit","Moz","ms"],Ho={};function Yp(a,n){const e=Ho[n];if(e)return e;let i=nn(n);if(i!=="filter"&&i in a)return Ho[n]=i;i=et(i);for(let t=0;tDo||(Qp.then(()=>Do=0),Do=Date.now());function nm(a,n){const e=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=e.attached)return;Nn(em(i,e.value),n,5,[i])};return e.value=a,e.attached=am(),e}function em(a,n){if(Ca(n)){const e=a.stopImmediatePropagation;return a.stopImmediatePropagation=()=>{e.call(a),a._stopped=!0},n.map(i=>t=>!t._stopped&&i&&i(t))}else return n}const zs=a=>a.charCodeAt(0)===111&&a.charCodeAt(1)===110&&a.charCodeAt(2)>96&&a.charCodeAt(2)<123,im=(a,n,e,i,t,o)=>{const r=t==="svg";n==="class"?Up(a,i,r):n==="style"?Vp(a,e,i):qi(n)?Xi(n)||qp(a,n,e,i,o):(n[0]==="."?(n=n.slice(1),!0):n[0]==="^"?(n=n.slice(1),!1):tm(a,n,i,r))?(Us(a,n,i),!a.tagName.includes("-")&&(n==="value"||n==="checked"||n==="selected")&&Os(a,n,i,r,o,n!=="value")):a._isVueCE&&(om(a,n)||a._def.__asyncLoader&&(/[A-Z]/.test(n)||!Da(i)))?Us(a,nn(n),i,o,n):(n==="true-value"?a._trueValue=i:n==="false-value"&&(a._falseValue=i),Os(a,n,i,r))};function tm(a,n,e,i){if(i)return!!(n==="innerHTML"||n==="textContent"||n in a&&zs(n)&&ka(e));if(n==="spellcheck"||n==="draggable"||n==="translate"||n==="autocorrect"||n==="sandbox"&&a.tagName==="IFRAME"||n==="form"||n==="list"&&a.tagName==="INPUT"||n==="type"&&a.tagName==="TEXTAREA")return!1;if(n==="width"||n==="height"){const t=a.tagName;if(t==="IMG"||t==="VIDEO"||t==="CANVAS"||t==="SOURCE")return!1}return zs(n)&&Da(e)?!1:n in a}function om(a,n){const e=a._def.props;if(!e)return!1;const i=nn(n);return Array.isArray(e)?e.some(t=>nn(t)===i):Object.keys(e).some(t=>nn(t)===i)}const Vs={};function rm(a,n,e){let i=fi(a,n);Qi(i)&&(i=Ja({},i,n));class t extends zo{constructor(r){super(i,r,e)}}return t.def=i,t}const lm=typeof HTMLElement<"u"?HTMLElement:class{};class zo extends lm{constructor(n,e={},i=Zs){super(),this._def=n,this._props=e,this._createApp=i,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&i!==Zs?this._root=this.shadowRoot:n.shadowRoot!==!1?(this.attachShadow(Ja({},n.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let n=this;for(;n=n&&(n.assignedSlot||n.parentNode||n.host);)if(n instanceof zo){this._parent=n;break}this._instance||(this._resolved?this._mount(this._def):n&&n._pendingResolve?this._pendingResolve=n._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}_setParent(n=this._parent){n&&(this._instance.parent=n._instance,this._inheritParentContext(n))}_inheritParentContext(n=this._parent){n&&this._app&&Object.setPrototypeOf(this._app._context.provides,n._instance.provides)}disconnectedCallback(){this._connected=!1,bi(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(n){for(const e of n)this._setAttr(e.attributeName)}_resolveDef(){if(this._pendingResolve)return;for(let i=0;i{this._resolved=!0,this._pendingResolve=void 0;const{props:o,styles:r}=i;let l;if(o&&!Ca(o))for(const s in o){const g=o[s];(g===Number||g&&g.type===Number)&&(s in this._props&&(this._props[s]=gl(this._props[s])),(l||(l=Object.create(null)))[nn(s)]=!0)}this._numberProps=l,this._resolveProps(i),this.shadowRoot&&this._applyStyles(r),this._mount(i)},e=this._def.__asyncLoader;e?this._pendingResolve=e().then(i=>{i.configureApp=this._def.configureApp,n(this._def=i,!0)}):n(this._def)}_mount(n){this._app=this._createApp(n),this._inheritParentContext(),n.configureApp&&n.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const e=this._instance&&this._instance.exposed;if(e)for(const i in e)Ta(this,i)||Object.defineProperty(this,i,{get:()=>ha(e[i])})}_resolveProps(n){const{props:e}=n,i=Ca(e)?e:Object.keys(e||{});for(const t of Object.keys(this))t[0]!=="_"&&i.includes(t)&&this._setProp(t,this[t]);for(const t of i.map(nn))Object.defineProperty(this,t,{get(){return this._getProp(t)},set(o){this._setProp(t,o,!0,!this._patching)}})}_setAttr(n){if(n.startsWith("data-v-"))return;const e=this.hasAttribute(n);let i=e?this.getAttribute(n):Vs;const t=nn(n);e&&this._numberProps&&this._numberProps[t]&&(i=gl(i)),this._setProp(t,i,!1,!0)}_getProp(n){return this._props[n]}_setProp(n,e,i=!0,t=!1){if(e!==this._props[n]&&(this._dirty=!0,e===Vs?delete this._props[n]:(this._props[n]=e,n==="key"&&this._app&&(this._app._ceVNode.key=e)),t&&this._instance&&this._update(),i)){const o=this._ob;o&&(this._processMutations(o.takeRecords()),o.disconnect()),e===!0?this.setAttribute(yn(n),""):typeof e=="string"||typeof e=="number"?this.setAttribute(yn(n),e+""):e||this.removeAttribute(yn(n)),o&&o.observe(this,{attributes:!0})}}_update(){const n=this._createVNode();this._app&&(n.appContext=this._app._context),dm(n,this._root)}_createVNode(){const n={};this.shadowRoot||(n.onVnodeMounted=n.onVnodeUpdated=this._renderSlots.bind(this));const e=Wa(this._def,Ja(n,this._props));return this._instance||(e.ce=i=>{this._instance=i,i.ce=this,i.isCE=!0;const t=(o,r)=>{this.dispatchEvent(new CustomEvent(o,Qi(r[0])?Ja({detail:r},r[0]):{detail:r}))};i.emit=(o,...r)=>{t(o,r),yn(o)!==o&&t(yn(o),r)},this._setParent()}),e}_applyStyles(n,e,i){if(!n)return;if(e){if(e===this._def||this._styleChildren.has(e))return;this._styleChildren.add(e)}const t=this._nonce,o=this.shadowRoot,r=i?this._getStyleAnchor(i)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(o);let l=null;for(let s=n.length-1;s>=0;s--){const g=document.createElement("style");t&&g.setAttribute("nonce",t),g.textContent=n[s],o.insertBefore(g,l||r),l=g,s===0&&(i||this._styleAnchors.set(this._def,g),e&&this._styleAnchors.set(e,g))}}_getStyleAnchor(n){if(!n)return null;const e=this._styleAnchors.get(n);return e&&e.parentNode===this.shadowRoot?e:(e&&this._styleAnchors.delete(n),null)}_getRootStyleInsertionAnchor(n){for(let e=0;ea.stopPropagation(),prevent:a=>a.preventDefault(),self:a=>a.target!==a.currentTarget,ctrl:a=>!a.ctrlKey,shift:a=>!a.shiftKey,alt:a=>!a.altKey,meta:a=>!a.metaKey,left:a=>"button"in a&&a.button!==0,middle:a=>"button"in a&&a.button!==1,right:a=>"button"in a&&a.button!==2,exact:(a,n)=>sm.some(e=>a[`${e}Key`]&&!n.includes(e))},Xn=(a,n)=>{if(!a)return a;const e=a._withMods||(a._withMods={}),i=n.join(".");return e[i]||(e[i]=(t,...o)=>{for(let r=0;r{const e=a._withKeys||(a._withKeys={}),i=n.join(".");return e[i]||(e[i]=t=>{if(!("key"in t))return;const o=yn(t.key);if(n.some(r=>r===o||gm[r]===o))return a(t)})},um=Ja({patchProp:im},Bp);let Ws;function Js(){return Ws||(Ws=_p(um))}const dm=(...a)=>{Js().render(...a)},Zs=(...a)=>{const n=Js().createApp(...a),{mount:e}=n;return n.mount=i=>{const t=mm(i);if(!t)return;const o=n._component;!ka(o)&&!o.render&&!o.template&&(o.template=t.innerHTML),t.nodeType===1&&(t.textContent="");const r=e(t,!1,pm(t));return t instanceof Element&&(t.removeAttribute("v-cloak"),t.setAttribute("data-v-app","")),r},n};function pm(a){if(a instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&a instanceof MathMLElement)return"mathml"}function mm(a){return Da(a)?document.querySelector(a):a}/*! - * pinia v2.3.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let qs;const St=a=>qs=a,Xs=Symbol();function Vo(a){return a&&typeof a=="object"&&Object.prototype.toString.call(a)==="[object Object]"&&typeof a.toJSON!="function"}var wi;(function(a){a.direct="direct",a.patchObject="patch object",a.patchFunction="patch function"})(wi||(wi={}));function hm(){const a=po(!0),n=a.run(()=>ua({}));let e=[],i=[];const t=mi({install(o){St(t),t._a=o,o.provide(Xs,t),o.config.globalProperties.$pinia=t,i.forEach(r=>e.push(r)),i=[]},use(o){return this._a?e.push(o):i.push(o),this},_p:e,_a:null,_e:a,_s:new Map,state:n});return t}const Qs=()=>{};function ac(a,n,e,i=Qs){a.push(n);const t=()=>{const o=a.indexOf(n);o>-1&&(a.splice(o,1),i())};return!e&&yl()&&Du(t),t}function ze(a,...n){a.slice().forEach(e=>{e(...n)})}const ym=a=>a(),nc=Symbol(),Yo=Symbol();function Wo(a,n){a instanceof Map&&n instanceof Map?n.forEach((e,i)=>a.set(i,e)):a instanceof Set&&n instanceof Set&&n.forEach(a.add,a);for(const e in n){if(!n.hasOwnProperty(e))continue;const i=n[e],t=a[e];Vo(t)&&Vo(i)&&a.hasOwnProperty(e)&&!Va(i)&&!Vn(i)?a[e]=Wo(t,i):a[e]=i}return a}const bm=Symbol();function _m(a){return!Vo(a)||!a.hasOwnProperty(bm)}const{assign:de}=Object;function fm(a){return!!(Va(a)&&a.effect)}function Pm(a,n,e,i){const{state:t,actions:o,getters:r}=n,l=e.state.value[a];let s;function g(){l||(e.state.value[a]=t?t():{});const d=pd(e.state.value[a]);return de(d,o,Object.keys(r||{}).reduce((_,k)=>(_[k]=mi(la(()=>{St(e);const x=e._s.get(a);return r[k].call(x,x)})),_),{}))}return s=ec(a,g,n,e,i,!0),s}function ec(a,n,e={},i,t,o){let r;const l=de({actions:{}},e),s={deep:!0};let g,d,_=[],k=[],x;const D=i.state.value[a];!o&&!D&&(i.state.value[a]={});let T;function $(K){let O;g=d=!1,typeof K=="function"?(K(i.state.value[a]),O={type:wi.patchFunction,storeId:a,events:x}):(Wo(i.state.value[a],K),O={type:wi.patchObject,payload:K,storeId:a,events:x});const q=T=Symbol();bi().then(()=>{T===q&&(g=!0)}),d=!0,ze(_,O,i.state.value[a])}const w=o?function(){const{state:O}=e,q=O?O():{};this.$patch(sa=>{de(sa,q)})}:Qs;function L(){r.stop(),_=[],k=[],i._s.delete(a)}const E=(K,O="")=>{if(nc in K)return K[Yo]=O,K;const q=function(){St(i);const sa=Array.from(arguments),ea=[],ga=[];function Sa(pa){ea.push(pa)}function Ma(pa){ga.push(pa)}ze(k,{args:sa,name:q[Yo],store:G,after:Sa,onError:Ma});let ma;try{ma=K.apply(this&&this.$id===a?this:G,sa)}catch(pa){throw ze(ga,pa),pa}return ma instanceof Promise?ma.then(pa=>(ze(ea,pa),pa)).catch(pa=>(ze(ga,pa),Promise.reject(pa))):(ze(ea,ma),ma)};return q[nc]=!0,q[Yo]=O,q},I={_p:i,$id:a,$onAction:ac.bind(null,k),$patch:$,$reset:w,$subscribe(K,O={}){const q=ac(_,K,O.detached,()=>sa()),sa=r.run(()=>cn(()=>i.state.value[a],ea=>{(O.flush==="sync"?d:g)&&K({storeId:a,type:wi.direct,events:x},ea)},de({},s,O)));return q},$dispose:L},G=pi(I);i._s.set(a,G);const v=(i._a&&i._a.runWithContext||ym)(()=>i._e.run(()=>(r=po()).run(()=>n({action:E}))));for(const K in v){const O=v[K];if(Va(O)&&!fm(O)||Vn(O))o||(D&&_m(O)&&(Va(O)?O.value=D[K]:Wo(O,D[K])),i.state.value[a][K]=O);else if(typeof O=="function"){const q=E(O,K);v[K]=q,l.actions[K]=O}}return de(G,v),de(wa(G),v),Object.defineProperty(G,"$state",{get:()=>i.state.value[a],set:K=>{$(O=>{de(O,K)})}}),i._p.forEach(K=>{de(G,r.run(()=>K({store:G,app:i._a,pinia:i,options:l})))}),D&&o&&e.hydrate&&e.hydrate(G.$state,D),g=!0,d=!0,G}/*! #__NO_SIDE_EFFECTS__ */function Jo(a,n,e){let i,t;const o=typeof n=="function";typeof a=="string"?(i=a,t=o?e:n):(t=a,i=a.id);function r(l,s){const g=Md();return l=l||(g?Ya(Xs,null):null),l&&St(l),l=qs,l._s.has(i)||(o?ec(i,n,t,l):Pm(i,t,l)),l._s.get(i)}return r.$id=i,r}const Cm={backToLegend:"العودة إلى المفتاح",closeDetailView:"إغلاق عرض التفاصيل"},jm={prayForThem:"صلِّ من أجلهم",adoptThem:"تبنَّهم",moreInfo:"مزيد من المعلومات",zoomIn:"تكبير",zoomOut:"تصغير",switchToLightMode:"التبديل إلى الوضع الفاتح",switchToDarkMode:"التبديل إلى الوضع الداكن",resetView:"إعادة تعيين العرض",toggleFullscreen:"تبديل ملء الشاشة",aboutThisMap:"حول هذه الخريطة",closeMenu:"إغلاق القائمة",reloadMap:"إعادة تحميل الخريطة",showClusters:"إظهار المجموعات",clusterSettings:"إعدادات المجموعات",startAutoFly:"بدء الطيران التلقائي",stopFlight:"إيقاف الطيران",speedLabel:"السرعة:",speedOption:{slow:"بطيء",normal:"عادي",fast:"سريع"},shareEmbed:"مشاركة وتضمين"},km={labels:{country:"الدولة:",population:"السكان:",language:"اللغة:",religion:"الديانة:",languageFamily:"العائلة اللغوية:",peopleCommitted:"ملتزمون بالصلاة:"},messages:{noDescription:"لا يوجد وصف متاح."}},Gm={title:{prayer:"تقدم الصلاة",engagement:"تقدم الانخراط",adoption:"تقدم التبني",languageFamilies:"العائلات اللغوية",geoRegions:"مناطق",affinityBlocs:"كتل القرابة",gospelResources:"موارد الإنجيل"},header:{collapsed:"وسيلة الإيضاح",peopleGroupFallback:"مجموعة الشعب"},prayer:{needsPrayer:"يحتاج إلى صلاة",hasPrayer:"لديه صلاة",fullPrayerCoverage:"تغطية صلاة كاملة"},engagement:{needsEngagement:"يحتاج إلى انخراط",hasEngagement:"لديه انخراط"},adoption:{needsAdoption:"يحتاج إلى تبني",hasAdoption:"لديه تبني"},columns:{upgs:"UUPGs",population:"السكان",name:"الاسم"},footer:{total:"الإجمالي"},sortByUpgs:"ترتيب حسب UUPG",sortByPop:"ترتيب حسب السكان",colLabel:{religion:"ديانات UUPG",prayer:"حالة الصلاة",engagement:"حالة المشاركة",adoption:"حالة التبني",status:"الحالة"},titleBar:{legend:"مفتاح الخريطة",peopleGroups:"الشعوب",wagfRegions:"مناطق WAGF",languages:"اللغات"}},vm={menuComingSoon:"القائمة قادمة قريباً"},Am={clusterByRegion:"حسب منطقة",clusterByLanguageFamily:"حسب العائلة اللغوية",clusterByGospelResource:"حسب مورد الإنجيل"},Sm={header:"دورة الصلاة الحالية",lap:"الدورة",upgs:"UUPGs",separator:" من "},Em={placeholder:"شعب، مكان، لغة، ديانة",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"}},Mm={prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة"},Im={backToLegend:"Zurück zur Legende",closeDetailView:"Detailansicht schließen"},wm={prayForThem:"Für sie beten",adoptThem:"Sie adoptieren",moreInfo:"Mehr Infos",zoomIn:"Vergrößern",zoomOut:"Verkleinern",switchToLightMode:"Zum hellen Modus wechseln",switchToDarkMode:"Zum dunklen Modus wechseln",resetView:"Ansicht zurücksetzen",toggleFullscreen:"Vollbild umschalten",aboutThisMap:"Über diese Karte",closeMenu:"Menü schließen",reloadMap:"Karte neu laden",showClusters:"Cluster anzeigen",clusterSettings:"Cluster-Einstellungen",startAutoFly:"Auto-Flug starten",stopFlight:"Flug stoppen",speedLabel:"Geschwindigkeit:",speedOption:{slow:"Langsam",normal:"Normal",fast:"Schnell"},shareEmbed:"Teilen und einbetten"},xm={labels:{country:"Land:",population:"Bevölkerung:",language:"Sprache:",religion:"Religion:",languageFamily:"Sprachfamilie:",peopleCommitted:"Zum Gebet verpflichtet:"},messages:{noDescription:"Keine Beschreibung verfügbar."}},Tm={title:{prayer:"Gebetsfortschritt",engagement:"Engagement-Fortschritt",adoption:"Adoptionsfortschritt",languageFamilies:"Sprachfamilien",geoRegions:"Regionen",affinityBlocs:"Affinitätsblöcke",gospelResources:"Evangeliumsressourcen"},header:{collapsed:"Legende",peopleGroupFallback:"Volksgruppe"},prayer:{needsPrayer:"Braucht Gebet",hasPrayer:"Hat Gebet",fullPrayerCoverage:"Vollständige Gebetsabdeckung"},engagement:{needsEngagement:"Braucht Engagement",hasEngagement:"Hat Engagement"},adoption:{needsAdoption:"Braucht Adoption",hasAdoption:"Hat Adoption"},columns:{upgs:"UUPGs",population:"Bevölkerung"},footer:{total:"Gesamt"}},Nm={menuComingSoon:"Menü folgt in Kürze"},Lm={clusterByRegion:"Nach Region",clusterByLanguageFamily:"Nach Sprachfamilie",clusterByGospelResource:"Nach Evangeliumsressource"},Rm={header:"AKTUELLE GEBETSRUNDE",lap:"Runde",upgs:"UUPGs",separator:" von "},$m={placeholder:"Volk, Ort, Sprache, Religion",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle Daten"}},Fm={prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land"},Km={backToLegend:"Back to Legend",closeDetailView:"Close detail view"},Bm={prayForThem:"Pray for them",adoptThem:"Adopt",moreInfo:"More info",zoomIn:"Zoom in",zoomOut:"Zoom out",switchToLightMode:"Switch to light mode",switchToDarkMode:"Switch to dark mode",resetView:"Reset view",toggleFullscreen:"Toggle fullscreen",aboutThisMap:"About this map",closeMenu:"Close menu",reloadMap:"Reload Map",showClusters:"Show Clusters",clusterSettings:"Cluster Settings",startAutoFly:"Start Auto Fly",stopFlight:"Stop Flight",speedLabel:"Speed:",speedOption:{slow:"Slow",normal:"Normal",fast:"Fast"},shareEmbed:"Share & embed"},Om={labels:{country:"Country:",population:"Population:",language:"Language:",religion:"Religion:",languageFamily:"Language Family:",peopleCommitted:"Committed to pray:"},messages:{noDescription:"No description available."}},Um={title:{prayer:"Prayer Progress",engagement:"Engagement Progress",adoption:"Adoption Progress",languageFamilies:"Language Families",geoRegions:"Regions",affinityBlocs:"Affinity Blocks",gospelResources:"Gospel Resources"},header:{default:"Legend",collapsed:"Legend",peopleGroupFallback:"People Group"},prayer:{needsPrayer:"Needs Prayer",hasPrayer:"Has Prayer",fullPrayerCoverage:"Full Prayer Coverage"},engagement:{needsEngagement:"Unengaged",hasEngagement:"Engaged"},adoption:{needsAdoption:"Needs Adoption",hasAdoption:"Has Adoption"},columns:{upgs:"UUPGs",population:"Population",name:"Name"},footer:{total:"Total"},sortByUpgs:"Sort by UUPGs",sortByPop:"Sort by Population",colLabel:{religion:"UUPG Religions",prayer:"Prayer Status",engagement:"Engagement Status",adoption:"Adoption Status",status:"Status"},titleBar:{legend:"Legend",peopleGroups:"People Groups",wagfRegions:"WAGF Regions",languages:"Languages"}},Hm={menuComingSoon:"Menu coming soon"},Dm={clusterByRegion:"By Region",clusterByLanguageFamily:"By Language Family",clusterByGospelResource:"By Gospel Resource"},zm={country:{wagfRegion:"WAGF Region",wagfBlock:"WAGF Bloc",country:"Country",uupgCount:"UUPG Count"}},Vm={header:"CURRENT PRAYER LAP",lap:"Lap",upgs:"UUPGs",separator:" of "},Ym={placeholder:"People, place, language, religion",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All Data"}},Wm={prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country"},Jm={backToLegend:"Volver a la leyenda",closeDetailView:"Cerrar vista de detalle"},Zm={prayForThem:"Ora por ellos",adoptThem:"Adóptalos",moreInfo:"Más información",zoomIn:"Acercar",zoomOut:"Alejar",switchToLightMode:"Cambiar a modo claro",switchToDarkMode:"Cambiar a modo oscuro",resetView:"Restablecer vista",toggleFullscreen:"Alternar pantalla completa",aboutThisMap:"Acerca de este mapa",closeMenu:"Cerrar menú",reloadMap:"Recargar mapa",showClusters:"Mostrar clústeres",clusterSettings:"Ajustes de clústeres",startAutoFly:"Iniciar vuelo automático",stopFlight:"Detener vuelo",speedLabel:"Velocidad:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Compartir e incrustar"},qm={labels:{country:"País:",population:"Población:",language:"Idioma:",religion:"Religión:",languageFamily:"Familia lingüística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"No hay descripción disponible."}},Xm={title:{prayer:"Progreso de oración",engagement:"Progreso de implicación",adoption:"Progreso de adopción",languageFamilies:"Familias lingüísticas",geoRegions:"Regiones",affinityBlocs:"Bloques de afinidad",gospelResources:"Recursos del Evangelio"},header:{collapsed:"Leyenda",peopleGroupFallback:"Grupo de personas"},prayer:{needsPrayer:"Necesita oración",hasPrayer:"Tiene oración",fullPrayerCoverage:"Cobertura de oración completa"},engagement:{needsEngagement:"Necesita implicación",hasEngagement:"Tiene implicación"},adoption:{needsAdoption:"Necesita adopción",hasAdoption:"Tiene adopción"},columns:{upgs:"UUPGs",population:"Población",name:"Nombre"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por población",colLabel:{religion:"Religiones UUPG",prayer:"Estado de oración",engagement:"Estado de compromiso",adoption:"Estado de adopción",status:"Estado"},titleBar:{legend:"Leyenda",peopleGroups:"Pueblos",wagfRegions:"Regiones WAGF",languages:"Idiomas"}},Qm={menuComingSoon:"Menú próximamente"},ah={clusterByRegion:"Por región",clusterByLanguageFamily:"Por familia lingüística",clusterByGospelResource:"Por recurso del Evangelio"},nh={header:"VUELTA DE ORACIÓN ACTUAL",lap:"Vuelta",upgs:"UUPGs",separator:" de "},eh={placeholder:"Pueblo, lugar, idioma, religión",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"}},ih={prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País"},th={backToLegend:"Retour à la légende",closeDetailView:"Fermer la vue détaillée"},oh={prayForThem:"Priez pour eux",adoptThem:"Adoptez-les",moreInfo:"Plus d'infos",zoomIn:"Zoom avant",zoomOut:"Zoom arrière",switchToLightMode:"Passer au mode clair",switchToDarkMode:"Passer au mode sombre",resetView:"Réinitialiser la vue",toggleFullscreen:"Basculer en plein écran",aboutThisMap:"À propos de cette carte",closeMenu:"Fermer le menu",reloadMap:"Recharger la carte",showClusters:"Afficher les clusters",clusterSettings:"Paramètres des clusters",startAutoFly:"Démarrer le vol auto",stopFlight:"Arrêter le vol",speedLabel:"Vitesse :",speedOption:{slow:"Lente",normal:"Normale",fast:"Rapide"},shareEmbed:"Partager et intégrer"},rh={labels:{country:"Pays :",population:"Population :",language:"Langue :",religion:"Religion :",languageFamily:"Famille de langues :",peopleCommitted:"Engagés à prier :"},messages:{noDescription:"Aucune description disponible."}},lh={title:{prayer:"Progression de la prière",engagement:"Progression de l'engagement",adoption:"Progression de l'adoption",languageFamilies:"Familles de langues",geoRegions:"Régions",affinityBlocs:"Blocs d'affinité",gospelResources:"Ressources de l'Évangile"},header:{collapsed:"Légende",peopleGroupFallback:"Groupe de personnes"},prayer:{needsPrayer:"Besoin de prière",hasPrayer:"Prière en cours",fullPrayerCoverage:"Couverture de prière complète"},engagement:{needsEngagement:"Besoin d'engagement",hasEngagement:"Engagement en cours"},adoption:{needsAdoption:"Besoin d'adoption",hasAdoption:"Adoption en cours"},columns:{upgs:"UUPGs",population:"Population",name:"Nom"},footer:{total:"Total"},sortByUpgs:"Trier par UUPG",sortByPop:"Trier par population",colLabel:{religion:"Religions UUPG",prayer:"Statut de prière",engagement:"Statut d'engagement",adoption:"Statut d'adoption",status:"Statut"},titleBar:{legend:"Légende",peopleGroups:"Peuples",wagfRegions:"Régions WAGF",languages:"Langues"}},sh={menuComingSoon:"Menu bientôt disponible"},ch={clusterByRegion:"Par région",clusterByLanguageFamily:"Par famille de langues",clusterByGospelResource:"Par ressource de l'Évangile"},gh={country:{wagfRegion:"Région WAGF",wagfBlock:"Bloc WAGF",country:"Pays",uupgCount:"Nombre d'UUPG"}},uh={header:"TOUR DE PRIÈRE ACTUEL",lap:"Tour",upgs:"UUPGs",separator:" sur "},dh={placeholder:"Peuple, lieu, langue, religion",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"}},ph={prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays"},mh={backToLegend:"लेजेंड पर वापस जाएं",closeDetailView:"विवरण दृश्य बंद करें"},hh={prayForThem:"उनके लिए प्रार्थना करें",adoptThem:"उन्हें गोद लें",moreInfo:"अधिक जानकारी",zoomIn:"ज़ूम इन",zoomOut:"ज़ूम आउट",switchToLightMode:"लाइट मोड पर जाएं",switchToDarkMode:"डार्क मोड पर जाएं",resetView:"दृश्य रीसेट करें",toggleFullscreen:"फ़ुलस्क्रीन टॉगल करें",aboutThisMap:"इस मानचित्र के बारे में",closeMenu:"मेनू बंद करें",reloadMap:"मानचित्र पुनः लोड करें",showClusters:"क्लस्टर दिखाएं",clusterSettings:"क्लस्टर सेटिंग्स",startAutoFly:"ऑटो फ्लाई शुरू करें",stopFlight:"उड़ान रोकें",speedLabel:"गति:",speedOption:{slow:"धीमी",normal:"सामान्य",fast:"तेज़"},shareEmbed:"साझा करें और एम्बेड करें"},yh={labels:{country:"देश:",population:"जनसंख्या:",language:"भाषा:",religion:"धर्म:",languageFamily:"भाषा परिवार:",peopleCommitted:"प्रार्थना के लिए प्रतिबद्ध:"},messages:{noDescription:"कोई विवरण उपलब्ध नहीं है।"}},bh={title:{prayer:"प्रार्थना प्रगति",engagement:"सहभागिता प्रगति",adoption:"गोद लेने की प्रगति",languageFamilies:"भाषा परिवार",geoRegions:"क्षेत्र",affinityBlocs:"समानता समूह",gospelResources:"सुसमाचार संसाधन"},header:{collapsed:"किंवदंती",peopleGroupFallback:"जनजाति समूह"},prayer:{needsPrayer:"प्रार्थना चाहिए",hasPrayer:"प्रार्थना है",fullPrayerCoverage:"पूर्ण प्रार्थना कवरेज"},engagement:{needsEngagement:"सहभागिता चाहिए",hasEngagement:"सहभागिता है"},adoption:{needsAdoption:"गोद लेना चाहिए",hasAdoption:"गोद लिया गया"},columns:{upgs:"UUPGs",population:"जनसंख्या"},footer:{total:"कुल"}},_h={menuComingSoon:"मेनू शीघ्र आ रहा है"},fh={clusterByRegion:"क्षेत्र के अनुसार",clusterByLanguageFamily:"भाषा परिवार के अनुसार",clusterByGospelResource:"सुसमाचार संसाधन के अनुसार"},Ph={header:"वर्तमान प्रार्थना चक्र",lap:"चक्र",upgs:"UUPGs",separator:" में से "},Ch={placeholder:"लोग, स्थान, भाषा, धर्म",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"}},jh={backToLegend:"Torna alla legenda",closeDetailView:"Chiudi vista dettaglio"},kh={prayForThem:"Prega per loro",adoptThem:"Adottali",moreInfo:"Più informazioni",zoomIn:"Ingrandisci",zoomOut:"Riduci",switchToLightMode:"Passa alla modalità chiara",switchToDarkMode:"Passa alla modalità scura",resetView:"Reimposta vista",toggleFullscreen:"Attiva/disattiva schermo intero",aboutThisMap:"Informazioni su questa mappa",closeMenu:"Chiudi menu",reloadMap:"Ricarica mappa",showClusters:"Mostra cluster",clusterSettings:"Impostazioni cluster",startAutoFly:"Avvia volo automatico",stopFlight:"Ferma volo",speedLabel:"Velocità:",speedOption:{slow:"Lenta",normal:"Normale",fast:"Veloce"},shareEmbed:"Condividi e incorpora"},Gh={labels:{country:"Paese:",population:"Popolazione:",language:"Lingua:",religion:"Religione:",languageFamily:"Famiglia linguistica:",peopleCommitted:"Impegnati a pregare:"},messages:{noDescription:"Nessuna descrizione disponibile."}},vh={title:{prayer:"Avanzamento della preghiera",engagement:"Avanzamento dell'impegno",adoption:"Avanzamento dell'adozione",languageFamilies:"Famiglie linguistiche",geoRegions:"Regioni",affinityBlocs:"Blocchi di affinità",gospelResources:"Risorse del Vangelo"},header:{collapsed:"Legenda",peopleGroupFallback:"Gruppo di persone"},prayer:{needsPrayer:"Necessita preghiera",hasPrayer:"Ha preghiera",fullPrayerCoverage:"Copertura di preghiera completa"},engagement:{needsEngagement:"Necessita impegno",hasEngagement:"Ha impegno"},adoption:{needsAdoption:"Necessita adozione",hasAdoption:"Ha adozione"},columns:{upgs:"UUPGs",population:"Popolazione"},footer:{total:"Totale"}},Ah={menuComingSoon:"Menu in arrivo"},Sh={clusterByRegion:"Per regione",clusterByLanguageFamily:"Per famiglia linguistica",clusterByGospelResource:"Per risorsa del Vangelo"},Eh={header:"GIRO DI PREGHIERA ATTUALE",lap:"Giro",upgs:"UUPGs",separator:" di "},Mh={placeholder:"Popolo, luogo, lingua, religione",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"}},Ih={backToLegend:"Voltar à legenda",closeDetailView:"Fechar vista de detalhe"},wh={prayForThem:"Ore por eles",adoptThem:"Adote-os",moreInfo:"Mais informações",zoomIn:"Ampliar",zoomOut:"Reduzir",switchToLightMode:"Mudar para modo claro",switchToDarkMode:"Mudar para modo escuro",resetView:"Repor vista",toggleFullscreen:"Alternar ecrã inteiro",aboutThisMap:"Sobre este mapa",closeMenu:"Fechar menu",reloadMap:"Recarregar mapa",showClusters:"Mostrar clusters",clusterSettings:"Definições de clusters",startAutoFly:"Iniciar voo automático",stopFlight:"Parar voo",speedLabel:"Velocidade:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Partilhar e incorporar"},xh={labels:{country:"País:",population:"População:",language:"Língua:",religion:"Religião:",languageFamily:"Família linguística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"Sem descrição disponível."}},Th={title:{prayer:"Progresso da oração",engagement:"Progresso do envolvimento",adoption:"Progresso da adoção",languageFamilies:"Famílias linguísticas",geoRegions:"Regiões",affinityBlocs:"Blocos de afinidade",gospelResources:"Recursos do Evangelho"},header:{collapsed:"Legenda",peopleGroupFallback:"Grupo de pessoas"},prayer:{needsPrayer:"Precisa de oração",hasPrayer:"Tem oração",fullPrayerCoverage:"Cobertura de oração completa"},engagement:{needsEngagement:"Precisa de envolvimento",hasEngagement:"Tem envolvimento"},adoption:{needsAdoption:"Precisa de adoção",hasAdoption:"Tem adoção"},columns:{upgs:"UUPGs",population:"População",name:"Nome"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por população",colLabel:{religion:"Religiões UUPG",prayer:"Status de oração",engagement:"Status de engajamento",adoption:"Status de adoção",status:"Status"},titleBar:{legend:"Legenda",peopleGroups:"Povos",wagfRegions:"Regiões WAGF",languages:"Idiomas"}},Nh={menuComingSoon:"Menu em breve"},Lh={clusterByRegion:"Por região",clusterByLanguageFamily:"Por família linguística",clusterByGospelResource:"Por recurso do Evangelho"},Rh={header:"VOLTA DE ORAÇÃO ATUAL",lap:"Volta",upgs:"UUPGs",separator:" de "},$h={placeholder:"Povo, local, língua, religião",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"}},Fh={prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País"},Kh={backToLegend:"Înapoi la legendă",closeDetailView:"Închide vizualizarea detaliată"},Bh={prayForThem:"Roagă-te pentru ei",adoptThem:"Adoptă-i",moreInfo:"Mai multe informații",zoomIn:"Mărește",zoomOut:"Micșorează",switchToLightMode:"Comută la modul luminos",switchToDarkMode:"Comută la modul întunecat",resetView:"Resetează vizualizarea",toggleFullscreen:"Comută ecran complet",aboutThisMap:"Despre această hartă",closeMenu:"Închide meniul",reloadMap:"Reîncarcă harta",showClusters:"Arată clusterele",clusterSettings:"Setări clustere",startAutoFly:"Pornește zborul automat",stopFlight:"Oprește zborul",speedLabel:"Viteză:",speedOption:{slow:"Lent",normal:"Normal",fast:"Rapid"},shareEmbed:"Partajează și încorporează"},Oh={labels:{country:"Țară:",population:"Populație:",language:"Limbă:",religion:"Religie:",languageFamily:"Familie de limbi:",peopleCommitted:"Angajați să se roage:"},messages:{noDescription:"Nicio descriere disponibilă."}},Uh={title:{prayer:"Progresul rugăciunii",engagement:"Progresul implicării",adoption:"Progresul adopției",languageFamilies:"Familii de limbi",geoRegions:"Regiuni",affinityBlocs:"Blocuri de afinitate",gospelResources:"Resurse ale Evangheliei"},header:{collapsed:"Legendă",peopleGroupFallback:"Grup de popoare"},prayer:{needsPrayer:"Necesită rugăciune",hasPrayer:"Are rugăciune",fullPrayerCoverage:"Acoperire completă de rugăciune"},engagement:{needsEngagement:"Necesită implicare",hasEngagement:"Are implicare"},adoption:{needsAdoption:"Necesită adopție",hasAdoption:"Are adopție"},columns:{upgs:"UUPGs",population:"Populație"},footer:{total:"Total"}},Hh={menuComingSoon:"Meniu în curând"},Dh={clusterByRegion:"După regiune",clusterByLanguageFamily:"După familia de limbi",clusterByGospelResource:"După resursa Evangheliei"},zh={header:"TURUL DE RUGĂCIUNE CURENT",lap:"Tur",upgs:"UUPGs",separator:" din "},Vh={placeholder:"Popor, loc, limbă, religie",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"}},Yh={backToLegend:"Назад к легенде",closeDetailView:"Закрыть подробный вид"},Wh={prayForThem:"Молитесь о них",adoptThem:"Усыновите их",moreInfo:"Подробнее",zoomIn:"Приблизить",zoomOut:"Отдалить",switchToLightMode:"Переключить на светлый режим",switchToDarkMode:"Переключить на тёмный режим",resetView:"Сбросить вид",toggleFullscreen:"Полноэкранный режим",aboutThisMap:"Об этой карте",closeMenu:"Закрыть меню",reloadMap:"Перезагрузить карту",showClusters:"Показать кластеры",clusterSettings:"Настройки кластеров",startAutoFly:"Начать авто-полёт",stopFlight:"Остановить полёт",speedLabel:"Скорость:",speedOption:{slow:"Медленно",normal:"Нормально",fast:"Быстро"},shareEmbed:"Поделиться и встроить"},Jh={labels:{country:"Страна:",population:"Население:",language:"Язык:",religion:"Религия:",languageFamily:"Языковая семья:",peopleCommitted:"Обязались молиться:"},messages:{noDescription:"Описание недоступно."}},Zh={title:{prayer:"Прогресс молитвы",engagement:"Прогресс вовлечённости",adoption:"Прогресс усыновления",languageFamilies:"Языковые семьи",geoRegions:"Регионы",affinityBlocs:"Блоки родства",gospelResources:"Евангельские ресурсы"},header:{collapsed:"Условные обозначения",peopleGroupFallback:"Народная группа"},prayer:{needsPrayer:"Нуждается в молитве",hasPrayer:"Есть молитва",fullPrayerCoverage:"Полное молитвенное покрытие"},engagement:{needsEngagement:"Нуждается в вовлечённости",hasEngagement:"Есть вовлечённость"},adoption:{needsAdoption:"Нуждается в усыновлении",hasAdoption:"Есть усыновление"},columns:{upgs:"UUPGs",population:"Население",name:"Название"},footer:{total:"Всего"},sortByUpgs:"Сортировать по UUPG",sortByPop:"Сортировать по населению",colLabel:{religion:"Религии UUPG",prayer:"Статус молитвы",engagement:"Статус вовлечённости",adoption:"Статус усыновления",status:"Статус"},titleBar:{legend:"Легенда",peopleGroups:"Народы",wagfRegions:"Регионы WAGF",languages:"Языки"}},qh={menuComingSoon:"Меню скоро появится"},Xh={clusterByRegion:"По региону",clusterByLanguageFamily:"По языковой семье",clusterByGospelResource:"По евангельскому ресурсу"},Qh={header:"ТЕКУЩИЙ КРУГ МОЛИТВЫ",lap:"Круг",upgs:"UUPGs",separator:" из "},a0={placeholder:"Народ, место, язык, религия",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"}},n0={prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна"},e0={backToLegend:"返回图例",closeDetailView:"关闭详情视图"},i0={prayForThem:"为他们祷告",adoptThem:"认领他们",moreInfo:"更多信息",zoomIn:"放大",zoomOut:"缩小",switchToLightMode:"切换至浅色模式",switchToDarkMode:"切换至深色模式",resetView:"重置视图",toggleFullscreen:"切换全屏",aboutThisMap:"关于此地图",closeMenu:"关闭菜单",reloadMap:"重新加载地图",showClusters:"显示聚类",clusterSettings:"聚类设置",startAutoFly:"开始自动飞行",stopFlight:"停止飞行",speedLabel:"速度:",speedOption:{slow:"慢",normal:"正常",fast:"快"},shareEmbed:"分享与嵌入"},t0={labels:{country:"国家:",population:"人口:",language:"语言:",religion:"宗教:",languageFamily:"语系:",peopleCommitted:"承诺祷告人数:"},messages:{noDescription:"暂无描述。"}},o0={title:{prayer:"祷告进度",engagement:"参与进度",adoption:"认领进度",languageFamilies:"语系",geoRegions:"区域",affinityBlocs:"亲缘板块",gospelResources:"福音资源"},header:{collapsed:"图例",peopleGroupFallback:"民族群体"},prayer:{needsPrayer:"需要祷告",hasPrayer:"已有祷告",fullPrayerCoverage:"全面祷告覆盖"},engagement:{needsEngagement:"需要参与",hasEngagement:"已有参与"},adoption:{needsAdoption:"需要认领",hasAdoption:"已有认领"},columns:{upgs:"UUPGs",population:"人口"},footer:{total:"总计"}},r0={menuComingSoon:"菜单即将推出"},l0={clusterByRegion:"按 区域",clusterByLanguageFamily:"按语系",clusterByGospelResource:"按福音资源"},s0={header:"当前祷告轮次",lap:"第",upgs:"UUPGs",separator:" / "},c0={placeholder:"民族、地点、语言、宗教",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"}};/*! - * shared v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */function g0(a,n){typeof console<"u"&&(console.warn("[intlify] "+a),n&&console.warn(n.stack))}const Et=typeof window<"u",pe=(a,n=!1)=>n?Symbol.for(a):Symbol(a),u0=(a,n,e)=>d0({l:a,k:n,s:e}),d0=a=>JSON.stringify(a).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Za=a=>typeof a=="number"&&isFinite(a),p0=a=>lc(a)==="[object Date]",me=a=>lc(a)==="[object RegExp]",Mt=a=>Ga(a)&&Object.keys(a).length===0,on=Object.assign,m0=Object.create,La=(a=null)=>m0(a);let ic;const Qn=()=>ic||(ic=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:La());function tc(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/=/g,"=")}function oc(a){return a.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function h0(a){return a=a.replace(/(\w+)\s*=\s*"([^"]*)"/g,(i,t,o)=>`${t}="${oc(o)}"`),a=a.replace(/(\w+)\s*=\s*'([^']*)'/g,(i,t,o)=>`${t}='${oc(o)}'`),/\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi.test(a)&&(a=a.replace(/(\s+)(on)(\w+\s*=)/gi,"$1on$3")),[/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi].forEach(i=>{a=a.replace(i,"$1javascript:")}),a}const y0=Object.prototype.hasOwnProperty;function An(a,n){return y0.call(a,n)}const za=Array.isArray,Ha=a=>typeof a=="function",da=a=>typeof a=="string",Ea=a=>typeof a=="boolean",xa=a=>a!==null&&typeof a=="object",b0=a=>xa(a)&&Ha(a.then)&&Ha(a.catch),rc=Object.prototype.toString,lc=a=>rc.call(a),Ga=a=>{if(!xa(a))return!1;const n=Object.getPrototypeOf(a);return n===null||n.constructor===Object},_0=a=>a==null?"":za(a)||Ga(a)&&a.toString===rc?JSON.stringify(a,null,2):String(a);function f0(a,n=""){return a.reduce((e,i,t)=>t===0?e+i:e+n+i,"")}function It(a){let n=a;return()=>++n}const wt=a=>!xa(a)||za(a);function xt(a,n){if(wt(a)||wt(n))throw new Error("Invalid value");const e=[{src:a,des:n}];for(;e.length;){const{src:i,des:t}=e.pop();Object.keys(i).forEach(o=>{o!=="__proto__"&&(xa(i[o])&&!xa(t[o])&&(t[o]=Array.isArray(i[o])?[]:La()),wt(t[o])||wt(i[o])?t[o]=i[o]:e.push({src:i[o],des:t[o]}))})}}/*! - * message-compiler v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */function P0(a,n,e){return{line:a,column:n,offset:e}}function Tt(a,n,e){return{start:a,end:n}}const C0=/\{([0-9a-zA-Z]+)\}/g;function sc(a,...n){return n.length===1&&j0(n[0])&&(n=n[0]),(!n||!n.hasOwnProperty)&&(n={}),a.replace(C0,(e,i)=>n.hasOwnProperty(i)?n[i]:"")}const cc=Object.assign,gc=a=>typeof a=="string",j0=a=>a!==null&&typeof a=="object";function uc(a,n=""){return a.reduce((e,i,t)=>t===0?e+i:e+n+i,"")}const Zo={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},k0={[Zo.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function G0(a,n,...e){const i=sc(k0[a],...e||[]),t={message:String(i),code:a};return n&&(t.location=n),t}const ja={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},v0={[ja.EXPECTED_TOKEN]:"Expected token: '{0}'",[ja.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[ja.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[ja.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[ja.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[ja.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[ja.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[ja.EMPTY_PLACEHOLDER]:"Empty placeholder",[ja.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[ja.INVALID_LINKED_FORMAT]:"Invalid linked format",[ja.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[ja.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[ja.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[ja.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[ja.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[ja.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function Ve(a,n,e={}){const{domain:i,messages:t,args:o}=e,r=sc((t||v0)[a]||"",...o||[]),l=new SyntaxError(String(r));return l.code=a,n&&(l.location=n),l.domain=i,l}function A0(a){throw a}const ae=" ",S0="\r",un=` -`,E0="\u2028",M0="\u2029";function I0(a){const n=a;let e=0,i=1,t=1,o=0;const r=v=>n[v]===S0&&n[v+1]===un,l=v=>n[v]===un,s=v=>n[v]===M0,g=v=>n[v]===E0,d=v=>r(v)||l(v)||s(v)||g(v),_=()=>e,k=()=>i,x=()=>t,D=()=>o,T=v=>r(v)||s(v)||g(v)?un:n[v],$=()=>T(e),w=()=>T(e+o);function L(){return o=0,d(e)&&(i++,t=0),r(e)&&e++,e++,t++,n[e]}function E(){return r(e+o)&&o++,o++,n[e+o]}function I(){e=0,i=1,t=1,o=0}function G(v=0){o=v}function S(){const v=e+o;for(;v!==e;)L();o=0}return{index:_,line:k,column:x,peekOffset:D,charAt:T,currentChar:$,currentPeek:w,next:L,peek:E,reset:I,resetPeek:G,skipToPeek:S}}const he=void 0,w0=".",dc="'",x0="tokenizer";function T0(a,n={}){const e=n.location!==!1,i=I0(a),t=()=>i.index(),o=()=>P0(i.line(),i.column(),i.index()),r=o(),l=t(),s={currentType:14,offset:l,startLoc:r,endLoc:r,lastType:14,lastOffset:l,lastStartLoc:r,lastEndLoc:r,braceNest:0,inLinked:!1,text:""},g=()=>s,{onError:d}=n;function _(m,b,F,...J){const ca=g();if(b.column+=F,b.offset+=F,d){const ra=e?Tt(ca.startLoc,b):null,B=Ve(m,ra,{domain:x0,args:J});d(B)}}function k(m,b,F){m.endLoc=o(),m.currentType=b;const J={type:b};return e&&(J.loc=Tt(m.startLoc,m.endLoc)),F!=null&&(J.value=F),J}const x=m=>k(m,14);function D(m,b){return m.currentChar()===b?(m.next(),b):(_(ja.EXPECTED_TOKEN,o(),0,b),"")}function T(m){let b="";for(;m.currentPeek()===ae||m.currentPeek()===un;)b+=m.currentPeek(),m.peek();return b}function $(m){const b=T(m);return m.skipToPeek(),b}function w(m){if(m===he)return!1;const b=m.charCodeAt(0);return b>=97&&b<=122||b>=65&&b<=90||b===95}function L(m){if(m===he)return!1;const b=m.charCodeAt(0);return b>=48&&b<=57}function E(m,b){const{currentType:F}=b;if(F!==2)return!1;T(m);const J=w(m.currentPeek());return m.resetPeek(),J}function I(m,b){const{currentType:F}=b;if(F!==2)return!1;T(m);const J=m.currentPeek()==="-"?m.peek():m.currentPeek(),ca=L(J);return m.resetPeek(),ca}function G(m,b){const{currentType:F}=b;if(F!==2)return!1;T(m);const J=m.currentPeek()===dc;return m.resetPeek(),J}function S(m,b){const{currentType:F}=b;if(F!==8)return!1;T(m);const J=m.currentPeek()===".";return m.resetPeek(),J}function v(m,b){const{currentType:F}=b;if(F!==9)return!1;T(m);const J=w(m.currentPeek());return m.resetPeek(),J}function K(m,b){const{currentType:F}=b;if(!(F===8||F===12))return!1;T(m);const J=m.currentPeek()===":";return m.resetPeek(),J}function O(m,b){const{currentType:F}=b;if(F!==10)return!1;const J=()=>{const ra=m.currentPeek();return ra==="{"?w(m.peek()):ra==="@"||ra==="%"||ra==="|"||ra===":"||ra==="."||ra===ae||!ra?!1:ra===un?(m.peek(),J()):ea(m,!1)},ca=J();return m.resetPeek(),ca}function q(m){T(m);const b=m.currentPeek()==="|";return m.resetPeek(),b}function sa(m){const b=T(m),F=m.currentPeek()==="%"&&m.peek()==="{";return m.resetPeek(),{isModulo:F,hasSpace:b.length>0}}function ea(m,b=!0){const F=(ca=!1,ra="",B=!1)=>{const Z=m.currentPeek();return Z==="{"?ra==="%"?!1:ca:Z==="@"||!Z?ra==="%"?!0:ca:Z==="%"?(m.peek(),F(ca,"%",!0)):Z==="|"?ra==="%"||B?!0:!(ra===ae||ra===un):Z===ae?(m.peek(),F(!0,ae,B)):Z===un?(m.peek(),F(!0,un,B)):!0},J=F();return b&&m.resetPeek(),J}function ga(m,b){const F=m.currentChar();return F===he?he:b(F)?(m.next(),F):null}function Sa(m){const b=m.charCodeAt(0);return b>=97&&b<=122||b>=65&&b<=90||b>=48&&b<=57||b===95||b===36}function Ma(m){return ga(m,Sa)}function ma(m){const b=m.charCodeAt(0);return b>=97&&b<=122||b>=65&&b<=90||b>=48&&b<=57||b===95||b===36||b===45}function pa(m){return ga(m,ma)}function Y(m){const b=m.charCodeAt(0);return b>=48&&b<=57}function ta(m){return ga(m,Y)}function aa(m){const b=m.charCodeAt(0);return b>=48&&b<=57||b>=65&&b<=70||b>=97&&b<=102}function ba(m){return ga(m,aa)}function na(m){let b="",F="";for(;b=ta(m);)F+=b;return F}function u(m){$(m);const b=m.currentChar();return b!=="%"&&_(ja.EXPECTED_TOKEN,o(),0,b),m.next(),"%"}function A(m){let b="";for(;;){const F=m.currentChar();if(F==="{"||F==="}"||F==="@"||F==="|"||!F)break;if(F==="%")if(ea(m))b+=F,m.next();else break;else if(F===ae||F===un)if(ea(m))b+=F,m.next();else{if(q(m))break;b+=F,m.next()}else b+=F,m.next()}return b}function j(m){$(m);let b="",F="";for(;b=pa(m);)F+=b;return m.currentChar()===he&&_(ja.UNTERMINATED_CLOSING_BRACE,o(),0),F}function c(m){$(m);let b="";return m.currentChar()==="-"?(m.next(),b+=`-${na(m)}`):b+=na(m),m.currentChar()===he&&_(ja.UNTERMINATED_CLOSING_BRACE,o(),0),b}function P(m){return m!==dc&&m!==un}function p(m){$(m),D(m,"'");let b="",F="";for(;b=ga(m,P);)b==="\\"?F+=M(m):F+=b;const J=m.currentChar();return J===un||J===he?(_(ja.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,o(),0),J===un&&(m.next(),D(m,"'")),F):(D(m,"'"),F)}function M(m){const b=m.currentChar();switch(b){case"\\":case"'":return m.next(),`\\${b}`;case"u":return N(m,b,4);case"U":return N(m,b,6);default:return _(ja.UNKNOWN_ESCAPE_SEQUENCE,o(),0,b),""}}function N(m,b,F){D(m,b);let J="";for(let ca=0;ca{const J=m.currentChar();return J==="{"||J==="%"||J==="@"||J==="|"||J==="("||J===")"||!J||J===ae?F:(F+=J,m.next(),b(F))};return b("")}function R(m){$(m);const b=D(m,"|");return $(m),b}function H(m,b){let F=null;switch(m.currentChar()){case"{":return b.braceNest>=1&&_(ja.NOT_ALLOW_NEST_PLACEHOLDER,o(),0),m.next(),F=k(b,2,"{"),$(m),b.braceNest++,F;case"}":return b.braceNest>0&&b.currentType===2&&_(ja.EMPTY_PLACEHOLDER,o(),0),m.next(),F=k(b,3,"}"),b.braceNest--,b.braceNest>0&&$(m),b.inLinked&&b.braceNest===0&&(b.inLinked=!1),F;case"@":return b.braceNest>0&&_(ja.UNTERMINATED_CLOSING_BRACE,o(),0),F=V(m,b)||x(b),b.braceNest=0,F;default:{let ca=!0,ra=!0,B=!0;if(q(m))return b.braceNest>0&&_(ja.UNTERMINATED_CLOSING_BRACE,o(),0),F=k(b,1,R(m)),b.braceNest=0,b.inLinked=!1,F;if(b.braceNest>0&&(b.currentType===5||b.currentType===6||b.currentType===7))return _(ja.UNTERMINATED_CLOSING_BRACE,o(),0),b.braceNest=0,oa(m,b);if(ca=E(m,b))return F=k(b,5,j(m)),$(m),F;if(ra=I(m,b))return F=k(b,6,c(m)),$(m),F;if(B=G(m,b))return F=k(b,7,p(m)),$(m),F;if(!ca&&!ra&&!B)return F=k(b,13,h(m)),_(ja.INVALID_TOKEN_IN_PLACEHOLDER,o(),0,F.value),$(m),F;break}}return F}function V(m,b){const{currentType:F}=b;let J=null;const ca=m.currentChar();switch((F===8||F===9||F===12||F===10)&&(ca===un||ca===ae)&&_(ja.INVALID_LINKED_FORMAT,o(),0),ca){case"@":return m.next(),J=k(b,8,"@"),b.inLinked=!0,J;case".":return $(m),m.next(),k(b,9,".");case":":return $(m),m.next(),k(b,10,":");default:return q(m)?(J=k(b,1,R(m)),b.braceNest=0,b.inLinked=!1,J):S(m,b)||K(m,b)?($(m),V(m,b)):v(m,b)?($(m),k(b,12,C(m))):O(m,b)?($(m),ca==="{"?H(m,b)||J:k(b,11,y(m))):(F===8&&_(ja.INVALID_LINKED_FORMAT,o(),0),b.braceNest=0,b.inLinked=!1,oa(m,b))}}function oa(m,b){let F={type:14};if(b.braceNest>0)return H(m,b)||x(b);if(b.inLinked)return V(m,b)||x(b);switch(m.currentChar()){case"{":return H(m,b)||x(b);case"}":return _(ja.UNBALANCED_CLOSING_BRACE,o(),0),m.next(),k(b,3,"}");case"@":return V(m,b)||x(b);default:{if(q(m))return F=k(b,1,R(m)),b.braceNest=0,b.inLinked=!1,F;const{isModulo:ca,hasSpace:ra}=sa(m);if(ca)return ra?k(b,0,A(m)):k(b,4,u(m));if(ea(m))return k(b,0,A(m));break}}return F}function Q(){const{currentType:m,offset:b,startLoc:F,endLoc:J}=s;return s.lastType=m,s.lastOffset=b,s.lastStartLoc=F,s.lastEndLoc=J,s.offset=t(),s.startLoc=o(),i.currentChar()===he?k(s,14):oa(i,s)}return{nextToken:Q,currentOffset:t,currentPosition:o,context:g}}const N0="parser",L0=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function R0(a,n,e){switch(a){case"\\\\":return"\\";case"\\'":return"'";default:{const i=parseInt(n||e,16);return i<=55295||i>=57344?String.fromCodePoint(i):"�"}}}function $0(a={}){const n=a.location!==!1,{onError:e,onWarn:i}=a;function t(E,I,G,S,...v){const K=E.currentPosition();if(K.offset+=S,K.column+=S,e){const O=n?Tt(G,K):null,q=Ve(I,O,{domain:N0,args:v});e(q)}}function o(E,I,G,S,...v){const K=E.currentPosition();if(K.offset+=S,K.column+=S,i){const O=n?Tt(G,K):null;i(G0(I,O,v))}}function r(E,I,G){const S={type:E};return n&&(S.start=I,S.end=I,S.loc={start:G,end:G}),S}function l(E,I,G,S){n&&(E.end=I,E.loc&&(E.loc.end=G))}function s(E,I){const G=E.context(),S=r(3,G.offset,G.startLoc);return S.value=I,l(S,E.currentOffset(),E.currentPosition()),S}function g(E,I){const G=E.context(),{lastOffset:S,lastStartLoc:v}=G,K=r(5,S,v);return K.index=parseInt(I,10),E.nextToken(),l(K,E.currentOffset(),E.currentPosition()),K}function d(E,I,G){const S=E.context(),{lastOffset:v,lastStartLoc:K}=S,O=r(4,v,K);return O.key=I,G===!0&&(O.modulo=!0),E.nextToken(),l(O,E.currentOffset(),E.currentPosition()),O}function _(E,I){const G=E.context(),{lastOffset:S,lastStartLoc:v}=G,K=r(9,S,v);return K.value=I.replace(L0,R0),E.nextToken(),l(K,E.currentOffset(),E.currentPosition()),K}function k(E){const I=E.nextToken(),G=E.context(),{lastOffset:S,lastStartLoc:v}=G,K=r(8,S,v);return I.type!==12?(t(E,ja.UNEXPECTED_EMPTY_LINKED_MODIFIER,G.lastStartLoc,0),K.value="",l(K,S,v),{nextConsumeToken:I,node:K}):(I.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,G.lastStartLoc,0,Sn(I)),K.value=I.value||"",l(K,E.currentOffset(),E.currentPosition()),{node:K})}function x(E,I){const G=E.context(),S=r(7,G.offset,G.startLoc);return S.value=I,l(S,E.currentOffset(),E.currentPosition()),S}function D(E){const I=E.context(),G=r(6,I.offset,I.startLoc);let S=E.nextToken();if(S.type===9){const v=k(E);G.modifier=v.node,S=v.nextConsumeToken||E.nextToken()}switch(S.type!==10&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(S)),S=E.nextToken(),S.type===2&&(S=E.nextToken()),S.type){case 11:S.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(S)),G.key=x(E,S.value||"");break;case 5:S.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(S)),G.key=d(E,S.value||"");break;case 6:S.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(S)),G.key=g(E,S.value||"");break;case 7:S.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(S)),G.key=_(E,S.value||"");break;default:{t(E,ja.UNEXPECTED_EMPTY_LINKED_KEY,I.lastStartLoc,0);const v=E.context(),K=r(7,v.offset,v.startLoc);return K.value="",l(K,v.offset,v.startLoc),G.key=K,l(G,v.offset,v.startLoc),{nextConsumeToken:S,node:G}}}return l(G,E.currentOffset(),E.currentPosition()),{node:G}}function T(E){const I=E.context(),G=I.currentType===1?E.currentOffset():I.offset,S=I.currentType===1?I.endLoc:I.startLoc,v=r(2,G,S);v.items=[];let K=null,O=null;do{const ea=K||E.nextToken();switch(K=null,ea.type){case 0:ea.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(ea)),v.items.push(s(E,ea.value||""));break;case 6:ea.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(ea)),v.items.push(g(E,ea.value||""));break;case 4:O=!0;break;case 5:ea.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(ea)),v.items.push(d(E,ea.value||"",!!O)),O&&(o(E,Zo.USE_MODULO_SYNTAX,I.lastStartLoc,0,Sn(ea)),O=null);break;case 7:ea.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(ea)),v.items.push(_(E,ea.value||""));break;case 8:{const ga=D(E);v.items.push(ga.node),K=ga.nextConsumeToken||null;break}}}while(I.currentType!==14&&I.currentType!==1);const q=I.currentType===1?I.lastOffset:E.currentOffset(),sa=I.currentType===1?I.lastEndLoc:E.currentPosition();return l(v,q,sa),v}function $(E,I,G,S){const v=E.context();let K=S.items.length===0;const O=r(1,I,G);O.cases=[],O.cases.push(S);do{const q=T(E);K||(K=q.items.length===0),O.cases.push(q)}while(v.currentType!==14);return K&&t(E,ja.MUST_HAVE_MESSAGES_IN_PLURAL,G,0),l(O,E.currentOffset(),E.currentPosition()),O}function w(E){const I=E.context(),{offset:G,startLoc:S}=I,v=T(E);return I.currentType===14?v:$(E,G,S,v)}function L(E){const I=T0(E,cc({},a)),G=I.context(),S=r(0,G.offset,G.startLoc);return n&&S.loc&&(S.loc.source=E),S.body=w(I),a.onCacheKey&&(S.cacheKey=a.onCacheKey(E)),G.currentType!==14&&t(I,ja.UNEXPECTED_LEXICAL_ANALYSIS,G.lastStartLoc,0,E[G.offset]||""),l(S,I.currentOffset(),I.currentPosition()),S}return{parse:L}}function Sn(a){if(a.type===14)return"EOF";const n=(a.value||"").replace(/\r?\n/gu,"\\n");return n.length>10?n.slice(0,9)+"…":n}function F0(a,n={}){const e={ast:a,helpers:new Set};return{context:()=>e,helper:o=>(e.helpers.add(o),o)}}function pc(a,n){for(let e=0;emc(e)),a}function mc(a){if(a.items.length===1){const n=a.items[0];(n.type===3||n.type===9)&&(a.static=n.value,delete n.value)}else{const n=[];for(let e=0;er;function s(T,$){r.code+=T}function g(T,$=!0){const w=$?i:"";s(t?w+" ".repeat(T):w)}function d(T=!0){const $=++r.indentLevel;T&&g($)}function _(T=!0){const $=--r.indentLevel;T&&g($)}function k(){g(r.indentLevel)}return{context:l,push:s,indent:d,deindent:_,newline:k,helper:T=>`_${T}`,needIndent:()=>r.needIndent}}function D0(a,n){const{helper:e}=a;a.push(`${e("linked")}(`),We(a,n.key),n.modifier?(a.push(", "),We(a,n.modifier),a.push(", _type")):a.push(", undefined, _type"),a.push(")")}function z0(a,n){const{helper:e,needIndent:i}=a;a.push(`${e("normalize")}([`),a.indent(i());const t=n.items.length;for(let o=0;o1){a.push(`${e("plural")}([`),a.indent(i());const t=n.cases.length;for(let o=0;o{const e=gc(n.mode)?n.mode:"normal",i=gc(n.filename)?n.filename:"message.intl";n.sourceMap;const t=n.breakLineCode!=null?n.breakLineCode:e==="arrow"?";":` -`,o=n.needIndent?n.needIndent:e!=="arrow",r=a.helpers||[],l=H0(a,{filename:i,breakLineCode:t,needIndent:o});l.push(e==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(o),r.length>0&&(l.push(`const { ${uc(r.map(d=>`${d}: _${d}`),", ")} } = ctx`),l.newline()),l.push("return "),We(l,a),l.deindent(o),l.push("}"),delete a.helpers;const{code:s,map:g}=l.context();return{ast:a,code:s,map:g?g.toJSON():void 0}};function J0(a,n={}){const e=cc({},n),i=!!e.jit,t=!!e.minify,o=e.optimize==null?!0:e.optimize,l=$0(e).parse(a);return i?(o&&B0(l),t&&Ye(l),{ast:l,code:""}):(K0(l,e),W0(l,e))}/*! - * core-base v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */function Z0(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Qn().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Qn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Qn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Kn(a){return xa(a)&&Xo(a)===0&&(An(a,"b")||An(a,"body"))}const hc=["b","body"];function q0(a){return ye(a,hc)}const yc=["c","cases"];function X0(a){return ye(a,yc,[])}const bc=["s","static"];function Q0(a){return ye(a,bc)}const _c=["i","items"];function ay(a){return ye(a,_c,[])}const fc=["t","type"];function Xo(a){return ye(a,fc)}const Pc=["v","value"];function Nt(a,n){const e=ye(a,Pc);if(e!=null)return e;throw xi(n)}const Cc=["m","modifier"];function ny(a){return ye(a,Cc)}const jc=["k","key"];function ey(a){const n=ye(a,jc);if(n)return n;throw xi(6)}function ye(a,n,e){for(let i=0;i{r===void 0?r=l:r+=l},k[1]=()=>{r!==void 0&&(n.push(r),r=void 0)},k[2]=()=>{k[0](),t++},k[3]=()=>{if(t>0)t--,i=4,k[0]();else{if(t=0,r===void 0||(r=ly(r),r===!1))return!1;k[1]()}};function x(){const D=a[e+1];if(i===5&&D==="'"||i===6&&D==='"')return e++,l="\\"+D,k[0](),!0}for(;i!==null;)if(e++,o=a[e],!(o==="\\"&&x())){if(s=ry(o),_=be[i],g=_[s]||_.l||8,g===8||(i=g[0],g[1]!==void 0&&(d=k[g[1]],d&&(l=o,d()===!1))))return;if(i===7)return n}}const Gc=new Map;function cy(a,n){return xa(a)?a[n]:null}function gy(a,n){if(!xa(a))return null;let e=Gc.get(n);if(e||(e=sy(n),e&&Gc.set(n,e)),!e)return null;const i=e.length;let t=a,o=0;for(;oa,dy=a=>"",py="text",my=a=>a.length===0?"":f0(a),hy=_0;function vc(a,n){return a=Math.abs(a),n===2?a?a>1?1:0:1:a?Math.min(a,2):0}function yy(a){const n=Za(a.pluralIndex)?a.pluralIndex:-1;return a.named&&(Za(a.named.count)||Za(a.named.n))?Za(a.named.count)?a.named.count:Za(a.named.n)?a.named.n:n:n}function by(a,n){n.count||(n.count=a),n.n||(n.n=a)}function _y(a={}){const n=a.locale,e=yy(a),i=xa(a.pluralRules)&&da(n)&&Ha(a.pluralRules[n])?a.pluralRules[n]:vc,t=xa(a.pluralRules)&&da(n)&&Ha(a.pluralRules[n])?vc:void 0,o=w=>w[i(e,w.length,t)],r=a.list||[],l=w=>r[w],s=a.named||La();Za(a.pluralIndex)&&by(e,s);const g=w=>s[w];function d(w){const L=Ha(a.messages)?a.messages(w):xa(a.messages)?a.messages[w]:!1;return L||(a.parent?a.parent.message(w):dy)}const _=w=>a.modifiers?a.modifiers[w]:uy,k=Ga(a.processor)&&Ha(a.processor.normalize)?a.processor.normalize:my,x=Ga(a.processor)&&Ha(a.processor.interpolate)?a.processor.interpolate:hy,D=Ga(a.processor)&&da(a.processor.type)?a.processor.type:py,$={list:l,named:g,plural:o,linked:(w,...L)=>{const[E,I]=L;let G="text",S="";L.length===1?xa(E)?(S=E.modifier||S,G=E.type||G):da(E)&&(S=E||S):L.length===2&&(da(E)&&(S=E||S),da(I)&&(G=I||G));const v=d(w)($),K=G==="vnode"&&za(v)&&S?v[0]:v;return S?_(S)(K,G):K},message:d,type:D,interpolate:x,normalize:k,values:on(La(),r,s)};return $}let Ti=null;function fy(a){Ti=a}function Py(a,n,e){Ti&&Ti.emit("i18n:init",{timestamp:Date.now(),i18n:a,version:n,meta:e})}const Cy=jy("function:translate");function jy(a){return n=>Ti&&Ti.emit(a,n)}const ky=Zo.__EXTEND_POINT__,Ie=It(ky),Gy={FALLBACK_TO_TRANSLATE:Ie(),CANNOT_FORMAT_NUMBER:Ie(),FALLBACK_TO_NUMBER_FORMAT:Ie(),CANNOT_FORMAT_DATE:Ie(),FALLBACK_TO_DATE_FORMAT:Ie(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:Ie(),__EXTEND_POINT__:Ie()},Ac=ja.__EXTEND_POINT__,we=It(Ac),En={INVALID_ARGUMENT:Ac,INVALID_DATE_ARGUMENT:we(),INVALID_ISO_DATE_ARGUMENT:we(),NOT_SUPPORT_NON_STRING_MESSAGE:we(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:we(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:we(),NOT_SUPPORT_LOCALE_TYPE:we(),__EXTEND_POINT__:we()};function Bn(a){return Ve(a,null,void 0)}function Qo(a,n){return n.locale!=null?Sc(n.locale):Sc(a.locale)}let ar;function Sc(a){if(da(a))return a;if(Ha(a)){if(a.resolvedOnce&&ar!=null)return ar;if(a.constructor.name==="Function"){const n=a();if(b0(n))throw Bn(En.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return ar=n}else throw Bn(En.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Bn(En.NOT_SUPPORT_LOCALE_TYPE)}function vy(a,n,e){return[...new Set([e,...za(n)?n:xa(n)?Object.keys(n):da(n)?[n]:[e]])]}function Ec(a,n,e){const i=da(e)?e:Je,t=a;t.__localeChainCache||(t.__localeChainCache=new Map);let o=t.__localeChainCache.get(i);if(!o){o=[];let r=[e];for(;za(r);)r=Mc(o,r,n);const l=za(n)||!Ga(n)?n:n.default?n.default:null;r=da(l)?[l]:l,za(r)&&Mc(o,r,!1),t.__localeChainCache.set(i,o)}return o}function Mc(a,n,e){let i=!0;for(let t=0;t`${a.charAt(0).toLocaleUpperCase()}${a.substr(1)}`;function My(){return{upper:(a,n)=>n==="text"&&da(a)?a.toUpperCase():n==="vnode"&&xa(a)&&"__v_isVNode"in a?a.children.toUpperCase():a,lower:(a,n)=>n==="text"&&da(a)?a.toLowerCase():n==="vnode"&&xa(a)&&"__v_isVNode"in a?a.children.toLowerCase():a,capitalize:(a,n)=>n==="text"&&da(a)?wc(a):n==="vnode"&&xa(a)&&"__v_isVNode"in a?wc(a.children):a}}let xc;function Tc(a){xc=a}let Nc;function Iy(a){Nc=a}let Lc;function wy(a){Lc=a}let Rc=null;const xy=a=>{Rc=a},Ty=()=>Rc;let $c=null;const Fc=a=>{$c=a},Ny=()=>$c;let Kc=0;function Ly(a={}){const n=Ha(a.onWarn)?a.onWarn:g0,e=da(a.version)?a.version:Ey,i=da(a.locale)||Ha(a.locale)?a.locale:Je,t=Ha(i)?Je:i,o=za(a.fallbackLocale)||Ga(a.fallbackLocale)||da(a.fallbackLocale)||a.fallbackLocale===!1?a.fallbackLocale:t,r=Ga(a.messages)?a.messages:nr(t),l=Ga(a.datetimeFormats)?a.datetimeFormats:nr(t),s=Ga(a.numberFormats)?a.numberFormats:nr(t),g=on(La(),a.modifiers,My()),d=a.pluralRules||La(),_=Ha(a.missing)?a.missing:null,k=Ea(a.missingWarn)||me(a.missingWarn)?a.missingWarn:!0,x=Ea(a.fallbackWarn)||me(a.fallbackWarn)?a.fallbackWarn:!0,D=!!a.fallbackFormat,T=!!a.unresolving,$=Ha(a.postTranslation)?a.postTranslation:null,w=Ga(a.processor)?a.processor:null,L=Ea(a.warnHtmlMessage)?a.warnHtmlMessage:!0,E=!!a.escapeParameter,I=Ha(a.messageCompiler)?a.messageCompiler:xc,G=Ha(a.messageResolver)?a.messageResolver:Nc||cy,S=Ha(a.localeFallbacker)?a.localeFallbacker:Lc||vy,v=xa(a.fallbackContext)?a.fallbackContext:void 0,K=a,O=xa(K.__datetimeFormatters)?K.__datetimeFormatters:new Map,q=xa(K.__numberFormatters)?K.__numberFormatters:new Map,sa=xa(K.__meta)?K.__meta:{};Kc++;const ea={version:e,cid:Kc,locale:i,fallbackLocale:o,messages:r,modifiers:g,pluralRules:d,missing:_,missingWarn:k,fallbackWarn:x,fallbackFormat:D,unresolving:T,postTranslation:$,processor:w,warnHtmlMessage:L,escapeParameter:E,messageCompiler:I,messageResolver:G,localeFallbacker:S,fallbackContext:v,onWarn:n,__meta:sa};return ea.datetimeFormats=l,ea.numberFormats=s,ea.__datetimeFormatters=O,ea.__numberFormatters=q,__INTLIFY_PROD_DEVTOOLS__&&Py(ea,e,sa),ea}const nr=a=>({[a]:La()});function er(a,n,e,i,t){const{missing:o,onWarn:r}=a;if(o!==null){const l=o(a,e,n,t);return da(l)?l:n}else return n}function Ni(a,n,e){const i=a;i.__localeChainCache=new Map,a.localeFallbacker(a,e,n)}function Ry(a,n){return a===n?!1:a.split("-")[0]===n.split("-")[0]}function $y(a,n){const e=n.indexOf(a);if(e===-1)return!1;for(let i=e+1;iFy(e,a)}function Fy(a,n){const e=q0(n);if(e==null)throw xi(0);if(Xo(e)===1){const o=X0(e);return a.plural(o.reduce((r,l)=>[...r,Bc(a,l)],[]))}else return Bc(a,e)}function Bc(a,n){const e=Q0(n);if(e!=null)return a.type==="text"?e:a.normalize([e]);{const i=ay(n).reduce((t,o)=>[...t,tr(a,o)],[]);return a.normalize(i)}}function tr(a,n){const e=Xo(n);switch(e){case 3:return Nt(n,e);case 9:return Nt(n,e);case 4:{const i=n;if(An(i,"k")&&i.k)return a.interpolate(a.named(i.k));if(An(i,"key")&&i.key)return a.interpolate(a.named(i.key));throw xi(e)}case 5:{const i=n;if(An(i,"i")&&Za(i.i))return a.interpolate(a.list(i.i));if(An(i,"index")&&Za(i.index))return a.interpolate(a.list(i.index));throw xi(e)}case 6:{const i=n,t=ny(i),o=ey(i);return a.linked(tr(a,o),t?tr(a,t):void 0,a.type)}case 7:return Nt(n,e);case 8:return Nt(n,e);default:throw new Error(`unhandled node on format message part: ${e}`)}}const Oc=a=>a;let Ze=La();function Uc(a,n={}){let e=!1;const i=n.onError||A0;return n.onError=t=>{e=!0,i(t)},{...J0(a,n),detectError:e}}const Ky=(a,n)=>{if(!da(a))throw Bn(En.NOT_SUPPORT_NON_STRING_MESSAGE);{Ea(n.warnHtmlMessage)&&n.warnHtmlMessage;const i=(n.onCacheKey||Oc)(a),t=Ze[i];if(t)return t;const{code:o,detectError:r}=Uc(a,n),l=new Function(`return ${o}`)();return r?l:Ze[i]=l}};function By(a,n){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&da(a)){Ea(n.warnHtmlMessage)&&n.warnHtmlMessage;const i=(n.onCacheKey||Oc)(a),t=Ze[i];if(t)return t;const{ast:o,detectError:r}=Uc(a,{...n,location:!1,jit:!0}),l=ir(o);return r?l:Ze[i]=l}else{const e=a.cacheKey;if(e){const i=Ze[e];return i||(Ze[e]=ir(a))}else return ir(a)}}const Hc=()=>"",Cn=a=>Ha(a);function Dc(a,...n){const{fallbackFormat:e,postTranslation:i,unresolving:t,messageCompiler:o,fallbackLocale:r,messages:l}=a,[s,g]=or(...n),d=Ea(g.missingWarn)?g.missingWarn:a.missingWarn,_=Ea(g.fallbackWarn)?g.fallbackWarn:a.fallbackWarn,k=Ea(g.escapeParameter)?g.escapeParameter:a.escapeParameter,x=!!g.resolvedMessage,D=da(g.default)||Ea(g.default)?Ea(g.default)?o?s:()=>s:g.default:e?o?s:()=>s:"",T=e||D!=="",$=Qo(a,g);k&&Oy(g);let[w,L,E]=x?[s,$,l[$]||La()]:zc(a,s,$,r,_,d),I=w,G=s;if(!x&&!(da(I)||Kn(I)||Cn(I))&&T&&(I=D,G=I),!x&&(!(da(I)||Kn(I)||Cn(I))||!da(L)))return t?Lt:s;let S=!1;const v=()=>{S=!0},K=Cn(I)?I:Vc(a,s,L,I,G,v);if(S)return I;const O=Dy(a,L,E,g),q=_y(O),sa=Uy(a,K,q);let ea=i?i(sa,s):sa;if(k&&da(ea)&&(ea=h0(ea)),__INTLIFY_PROD_DEVTOOLS__){const ga={timestamp:Date.now(),key:da(s)?s:Cn(I)?I.key:"",locale:L||(Cn(I)?I.locale:""),format:da(I)?I:Cn(I)?I.source:"",message:ea};ga.meta=on({},a.__meta,Ty()||{}),Cy(ga)}return ea}function Oy(a){za(a.list)?a.list=a.list.map(n=>da(n)?tc(n):n):xa(a.named)&&Object.keys(a.named).forEach(n=>{da(a.named[n])&&(a.named[n]=tc(a.named[n]))})}function zc(a,n,e,i,t,o){const{messages:r,onWarn:l,messageResolver:s,localeFallbacker:g}=a,d=g(a,i,e);let _=La(),k,x=null;const D="translate";for(let T=0;Ti;return g.locale=e,g.key=n,g}const s=r(i,Hy(a,e,t,i,l,o));return s.locale=e,s.key=n,s.source=i,s}function Uy(a,n,e){return n(e)}function or(...a){const[n,e,i]=a,t=La();if(!da(n)&&!Za(n)&&!Cn(n)&&!Kn(n))throw Bn(En.INVALID_ARGUMENT);const o=Za(n)?String(n):(Cn(n),n);return Za(e)?t.plural=e:da(e)?t.default=e:Ga(e)&&!Mt(e)?t.named=e:za(e)&&(t.list=e),Za(i)?t.plural=i:da(i)?t.default=i:Ga(i)&&on(t,i),[o,t]}function Hy(a,n,e,i,t,o){return{locale:n,key:e,warnHtmlMessage:t,onError:r=>{throw o&&o(r),r},onCacheKey:r=>u0(n,e,r)}}function Dy(a,n,e,i){const{modifiers:t,pluralRules:o,messageResolver:r,fallbackLocale:l,fallbackWarn:s,missingWarn:g,fallbackContext:d}=a,k={locale:n,modifiers:t,pluralRules:o,messages:x=>{let D=r(e,x);if(D==null&&d){const[,,T]=zc(d,x,n,l,s,g);D=r(T,x)}if(da(D)||Kn(D)){let T=!1;const w=Vc(a,x,n,D,x,()=>{T=!0});return T?Hc:w}else return Cn(D)?D:Hc}};return a.processor&&(k.processor=a.processor),i.list&&(k.list=i.list),i.named&&(k.named=i.named),Za(i.plural)&&(k.pluralIndex=i.plural),k}function Yc(a,...n){const{datetimeFormats:e,unresolving:i,fallbackLocale:t,onWarn:o,localeFallbacker:r}=a,{__datetimeFormatters:l}=a,[s,g,d,_]=rr(...n),k=Ea(d.missingWarn)?d.missingWarn:a.missingWarn;Ea(d.fallbackWarn)?d.fallbackWarn:a.fallbackWarn;const x=!!d.part,D=Qo(a,d),T=r(a,t,D);if(!da(s)||s==="")return new Intl.DateTimeFormat(D,_).format(g);let $={},w,L=null;const E="datetime format";for(let S=0;S{Wc.includes(s)?r[s]=e[s]:o[s]=e[s]}),da(i)?o.locale=i:Ga(i)&&(r=i),Ga(t)&&(r=t),[o.key||"",l,o,r]}function Jc(a,n,e){const i=a;for(const t in e){const o=`${n}__${t}`;i.__datetimeFormatters.has(o)&&i.__datetimeFormatters.delete(o)}}function Zc(a,...n){const{numberFormats:e,unresolving:i,fallbackLocale:t,onWarn:o,localeFallbacker:r}=a,{__numberFormatters:l}=a,[s,g,d,_]=lr(...n),k=Ea(d.missingWarn)?d.missingWarn:a.missingWarn;Ea(d.fallbackWarn)?d.fallbackWarn:a.fallbackWarn;const x=!!d.part,D=Qo(a,d),T=r(a,t,D);if(!da(s)||s==="")return new Intl.NumberFormat(D,_).format(g);let $={},w,L=null;const E="number format";for(let S=0;S{qc.includes(s)?r[s]=e[s]:o[s]=e[s]}),da(i)?o.locale=i:Ga(i)&&(r=i),Ga(t)&&(r=t),[o.key||"",l,o,r]}function Xc(a,n,e){const i=a;for(const t in e){const o=`${n}__${t}`;i.__numberFormatters.has(o)&&i.__numberFormatters.delete(o)}}Z0();/*! - * vue-i18n v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */const zy="9.14.5";function Vy(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(Qn().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(Qn().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Qn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Qn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Qn().__INTLIFY_PROD_DEVTOOLS__=!1)}const Yy=Gy.__EXTEND_POINT__,ne=It(Yy);ne(),ne(),ne(),ne(),ne(),ne(),ne(),ne(),ne();const Qc=En.__EXTEND_POINT__,mn=It(Qc),Qa={UNEXPECTED_RETURN_TYPE:Qc,INVALID_ARGUMENT:mn(),MUST_BE_CALL_SETUP_TOP:mn(),NOT_INSTALLED:mn(),NOT_AVAILABLE_IN_LEGACY_MODE:mn(),REQUIRED_VALUE:mn(),INVALID_VALUE:mn(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:mn(),NOT_INSTALLED_WITH_PROVIDE:mn(),UNEXPECTED_ERROR:mn(),NOT_COMPATIBLE_LEGACY_VUE_I18N:mn(),BRIDGE_SUPPORT_VUE_2_ONLY:mn(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:mn(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:mn(),__EXTEND_POINT__:mn()};function en(a,...n){return Ve(a,null,void 0)}const sr=pe("__translateVNode"),cr=pe("__datetimeParts"),gr=pe("__numberParts"),ag=pe("__setPluralRules"),ng=pe("__injectWithOption"),ur=pe("__dispose");function Li(a){if(!xa(a)||Kn(a))return a;for(const n in a)if(An(a,n))if(!n.includes("."))xa(a[n])&&Li(a[n]);else{const e=n.split("."),i=e.length-1;let t=a,o=!1;for(let r=0;r{if("locale"in l&&"resource"in l){const{locale:s,resource:g}=l;s?(r[s]=r[s]||La(),xt(g,r[s])):xt(g,r)}else da(l)&&xt(JSON.parse(l),r)}),t==null&&o)for(const l in r)An(r,l)&&Li(r[l]);return r}function eg(a){return a.type}function ig(a,n,e){let i=xa(n.messages)?n.messages:La();"__i18nGlobal"in e&&(i=Rt(a.locale.value,{messages:i,__i18n:e.__i18nGlobal}));const t=Object.keys(i);t.length&&t.forEach(o=>{a.mergeLocaleMessage(o,i[o])});{if(xa(n.datetimeFormats)){const o=Object.keys(n.datetimeFormats);o.length&&o.forEach(r=>{a.mergeDateTimeFormat(r,n.datetimeFormats[r])})}if(xa(n.numberFormats)){const o=Object.keys(n.numberFormats);o.length&&o.forEach(r=>{a.mergeNumberFormat(r,n.numberFormats[r])})}}}function tg(a){return Wa(Gi,null,a,0)}const og="__INTLIFY_META__",rg=()=>[],Wy=()=>!1;let lg=0;function sg(a){return(n,e,i,t)=>a(e,i,ue()||void 0,t)}const Jy=()=>{const a=ue();let n=null;return a&&(n=eg(a)[og])?{[og]:n}:null};function dr(a={},n){const{__root:e,__injectWithOption:i}=a,t=e===void 0,o=a.flatJson,r=Et?ua:Ll,l=!!a.translateExistCompatible;let s=Ea(a.inheritLocale)?a.inheritLocale:!0;const g=r(e&&s?e.locale.value:da(a.locale)?a.locale:Je),d=r(e&&s?e.fallbackLocale.value:da(a.fallbackLocale)||za(a.fallbackLocale)||Ga(a.fallbackLocale)||a.fallbackLocale===!1?a.fallbackLocale:g.value),_=r(Rt(g.value,a)),k=r(Ga(a.datetimeFormats)?a.datetimeFormats:{[g.value]:{}}),x=r(Ga(a.numberFormats)?a.numberFormats:{[g.value]:{}});let D=e?e.missingWarn:Ea(a.missingWarn)||me(a.missingWarn)?a.missingWarn:!0,T=e?e.fallbackWarn:Ea(a.fallbackWarn)||me(a.fallbackWarn)?a.fallbackWarn:!0,$=e?e.fallbackRoot:Ea(a.fallbackRoot)?a.fallbackRoot:!0,w=!!a.fallbackFormat,L=Ha(a.missing)?a.missing:null,E=Ha(a.missing)?sg(a.missing):null,I=Ha(a.postTranslation)?a.postTranslation:null,G=e?e.warnHtmlMessage:Ea(a.warnHtmlMessage)?a.warnHtmlMessage:!0,S=!!a.escapeParameter;const v=e?e.modifiers:Ga(a.modifiers)?a.modifiers:{};let K=a.pluralRules||e&&e.pluralRules,O;O=(()=>{t&&Fc(null);const B={version:zy,locale:g.value,fallbackLocale:d.value,messages:_.value,modifiers:v,pluralRules:K,missing:E===null?void 0:E,missingWarn:D,fallbackWarn:T,fallbackFormat:w,unresolving:!0,postTranslation:I===null?void 0:I,warnHtmlMessage:G,escapeParameter:S,messageResolver:a.messageResolver,messageCompiler:a.messageCompiler,__meta:{framework:"vue"}};B.datetimeFormats=k.value,B.numberFormats=x.value,B.__datetimeFormatters=Ga(O)?O.__datetimeFormatters:void 0,B.__numberFormatters=Ga(O)?O.__numberFormatters:void 0;const Z=Ly(B);return t&&Fc(Z),Z})(),Ni(O,g.value,d.value);function sa(){return[g.value,d.value,_.value,k.value,x.value]}const ea=la({get:()=>g.value,set:B=>{g.value=B,O.locale=g.value}}),ga=la({get:()=>d.value,set:B=>{d.value=B,O.fallbackLocale=d.value,Ni(O,g.value,B)}}),Sa=la(()=>_.value),Ma=la(()=>k.value),ma=la(()=>x.value);function pa(){return Ha(I)?I:null}function Y(B){I=B,O.postTranslation=B}function ta(){return L}function aa(B){B!==null&&(E=sg(B)),L=B,O.missing=E}const ba=(B,Z,_a,va,Ra,an)=>{sa();let qa;try{__INTLIFY_PROD_DEVTOOLS__,t||(O.fallbackContext=e?Ny():void 0),qa=B(O)}finally{__INTLIFY_PROD_DEVTOOLS__,t||(O.fallbackContext=void 0)}if(_a!=="translate exists"&&Za(qa)&&qa===Lt||_a==="translate exists"&&!qa){const[Pa,$a]=Z();return e&&$?va(e):Ra(Pa)}else{if(an(qa))return qa;throw en(Qa.UNEXPECTED_RETURN_TYPE)}};function na(...B){return ba(Z=>Reflect.apply(Dc,null,[Z,...B]),()=>or(...B),"translate",Z=>Reflect.apply(Z.t,Z,[...B]),Z=>Z,Z=>da(Z))}function u(...B){const[Z,_a,va]=B;if(va&&!xa(va))throw en(Qa.INVALID_ARGUMENT);return na(Z,_a,on({resolvedMessage:!0},va||{}))}function A(...B){return ba(Z=>Reflect.apply(Yc,null,[Z,...B]),()=>rr(...B),"datetime format",Z=>Reflect.apply(Z.d,Z,[...B]),()=>Ic,Z=>da(Z))}function j(...B){return ba(Z=>Reflect.apply(Zc,null,[Z,...B]),()=>lr(...B),"number format",Z=>Reflect.apply(Z.n,Z,[...B]),()=>Ic,Z=>da(Z))}function c(B){return B.map(Z=>da(Z)||Za(Z)||Ea(Z)?tg(String(Z)):Z)}const p={normalize:c,interpolate:B=>B,type:"vnode"};function M(...B){return ba(Z=>{let _a;const va=Z;try{va.processor=p,_a=Reflect.apply(Dc,null,[va,...B])}finally{va.processor=null}return _a},()=>or(...B),"translate",Z=>Z[sr](...B),Z=>[tg(Z)],Z=>za(Z))}function N(...B){return ba(Z=>Reflect.apply(Zc,null,[Z,...B]),()=>lr(...B),"number format",Z=>Z[gr](...B),rg,Z=>da(Z)||za(Z))}function U(...B){return ba(Z=>Reflect.apply(Yc,null,[Z,...B]),()=>rr(...B),"datetime format",Z=>Z[cr](...B),rg,Z=>da(Z)||za(Z))}function h(B){K=B,O.pluralRules=K}function C(B,Z){return ba(()=>{if(!B)return!1;const _a=da(Z)?Z:g.value,va=H(_a),Ra=O.messageResolver(va,B);return l?Ra!=null:Kn(Ra)||Cn(Ra)||da(Ra)},()=>[B],"translate exists",_a=>Reflect.apply(_a.te,_a,[B,Z]),Wy,_a=>Ea(_a))}function y(B){let Z=null;const _a=Ec(O,d.value,g.value);for(let va=0;va<_a.length;va++){const Ra=_.value[_a[va]]||{},an=O.messageResolver(Ra,B);if(an!=null){Z=an;break}}return Z}function R(B){const Z=y(B);return Z??(e?e.tm(B)||{}:{})}function H(B){return _.value[B]||{}}function V(B,Z){if(o){const _a={[B]:Z};for(const va in _a)An(_a,va)&&Li(_a[va]);Z=_a[B]}_.value[B]=Z,O.messages=_.value}function oa(B,Z){_.value[B]=_.value[B]||{};const _a={[B]:Z};if(o)for(const va in _a)An(_a,va)&&Li(_a[va]);Z=_a[B],xt(Z,_.value[B]),O.messages=_.value}function Q(B){return k.value[B]||{}}function m(B,Z){k.value[B]=Z,O.datetimeFormats=k.value,Jc(O,B,Z)}function b(B,Z){k.value[B]=on(k.value[B]||{},Z),O.datetimeFormats=k.value,Jc(O,B,Z)}function F(B){return x.value[B]||{}}function J(B,Z){x.value[B]=Z,O.numberFormats=x.value,Xc(O,B,Z)}function ca(B,Z){x.value[B]=on(x.value[B]||{},Z),O.numberFormats=x.value,Xc(O,B,Z)}lg++,e&&Et&&(cn(e.locale,B=>{s&&(g.value=B,O.locale=B,Ni(O,g.value,d.value))}),cn(e.fallbackLocale,B=>{s&&(d.value=B,O.fallbackLocale=B,Ni(O,g.value,d.value))}));const ra={id:lg,locale:ea,fallbackLocale:ga,get inheritLocale(){return s},set inheritLocale(B){s=B,B&&e&&(g.value=e.locale.value,d.value=e.fallbackLocale.value,Ni(O,g.value,d.value))},get availableLocales(){return Object.keys(_.value).sort()},messages:Sa,get modifiers(){return v},get pluralRules(){return K||{}},get isGlobal(){return t},get missingWarn(){return D},set missingWarn(B){D=B,O.missingWarn=D},get fallbackWarn(){return T},set fallbackWarn(B){T=B,O.fallbackWarn=T},get fallbackRoot(){return $},set fallbackRoot(B){$=B},get fallbackFormat(){return w},set fallbackFormat(B){w=B,O.fallbackFormat=w},get warnHtmlMessage(){return G},set warnHtmlMessage(B){G=B,O.warnHtmlMessage=B},get escapeParameter(){return S},set escapeParameter(B){S=B,O.escapeParameter=B},t:na,getLocaleMessage:H,setLocaleMessage:V,mergeLocaleMessage:oa,getPostTranslationHandler:pa,setPostTranslationHandler:Y,getMissingHandler:ta,setMissingHandler:aa,[ag]:h};return ra.datetimeFormats=Ma,ra.numberFormats=ma,ra.rt=u,ra.te=C,ra.tm=R,ra.d=A,ra.n=j,ra.getDateTimeFormat=Q,ra.setDateTimeFormat=m,ra.mergeDateTimeFormat=b,ra.getNumberFormat=F,ra.setNumberFormat=J,ra.mergeNumberFormat=ca,ra[ng]=i,ra[sr]=M,ra[cr]=U,ra[gr]=N,ra}function Zy(a){const n=da(a.locale)?a.locale:Je,e=da(a.fallbackLocale)||za(a.fallbackLocale)||Ga(a.fallbackLocale)||a.fallbackLocale===!1?a.fallbackLocale:n,i=Ha(a.missing)?a.missing:void 0,t=Ea(a.silentTranslationWarn)||me(a.silentTranslationWarn)?!a.silentTranslationWarn:!0,o=Ea(a.silentFallbackWarn)||me(a.silentFallbackWarn)?!a.silentFallbackWarn:!0,r=Ea(a.fallbackRoot)?a.fallbackRoot:!0,l=!!a.formatFallbackMessages,s=Ga(a.modifiers)?a.modifiers:{},g=a.pluralizationRules,d=Ha(a.postTranslation)?a.postTranslation:void 0,_=da(a.warnHtmlInMessage)?a.warnHtmlInMessage!=="off":!0,k=!!a.escapeParameterHtml,x=Ea(a.sync)?a.sync:!0;let D=a.messages;if(Ga(a.sharedMessages)){const S=a.sharedMessages;D=Object.keys(S).reduce((K,O)=>{const q=K[O]||(K[O]={});return on(q,S[O]),K},D||{})}const{__i18n:T,__root:$,__injectWithOption:w}=a,L=a.datetimeFormats,E=a.numberFormats,I=a.flatJson,G=a.translateExistCompatible;return{locale:n,fallbackLocale:e,messages:D,flatJson:I,datetimeFormats:L,numberFormats:E,missing:i,missingWarn:t,fallbackWarn:o,fallbackRoot:r,fallbackFormat:l,modifiers:s,pluralRules:g,postTranslation:d,warnHtmlMessage:_,escapeParameter:k,messageResolver:a.messageResolver,inheritLocale:x,translateExistCompatible:G,__i18n:T,__root:$,__injectWithOption:w}}function pr(a={},n){{const e=dr(Zy(a)),{__extender:i}=a,t={id:e.id,get locale(){return e.locale.value},set locale(o){e.locale.value=o},get fallbackLocale(){return e.fallbackLocale.value},set fallbackLocale(o){e.fallbackLocale.value=o},get messages(){return e.messages.value},get datetimeFormats(){return e.datetimeFormats.value},get numberFormats(){return e.numberFormats.value},get availableLocales(){return e.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(o){},get missing(){return e.getMissingHandler()},set missing(o){e.setMissingHandler(o)},get silentTranslationWarn(){return Ea(e.missingWarn)?!e.missingWarn:e.missingWarn},set silentTranslationWarn(o){e.missingWarn=Ea(o)?!o:o},get silentFallbackWarn(){return Ea(e.fallbackWarn)?!e.fallbackWarn:e.fallbackWarn},set silentFallbackWarn(o){e.fallbackWarn=Ea(o)?!o:o},get modifiers(){return e.modifiers},get formatFallbackMessages(){return e.fallbackFormat},set formatFallbackMessages(o){e.fallbackFormat=o},get postTranslation(){return e.getPostTranslationHandler()},set postTranslation(o){e.setPostTranslationHandler(o)},get sync(){return e.inheritLocale},set sync(o){e.inheritLocale=o},get warnHtmlInMessage(){return e.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(o){e.warnHtmlMessage=o!=="off"},get escapeParameterHtml(){return e.escapeParameter},set escapeParameterHtml(o){e.escapeParameter=o},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(o){},get pluralizationRules(){return e.pluralRules||{}},__composer:e,t(...o){const[r,l,s]=o,g={};let d=null,_=null;if(!da(r))throw en(Qa.INVALID_ARGUMENT);const k=r;return da(l)?g.locale=l:za(l)?d=l:Ga(l)&&(_=l),za(s)?d=s:Ga(s)&&(_=s),Reflect.apply(e.t,e,[k,d||_||{},g])},rt(...o){return Reflect.apply(e.rt,e,[...o])},tc(...o){const[r,l,s]=o,g={plural:1};let d=null,_=null;if(!da(r))throw en(Qa.INVALID_ARGUMENT);const k=r;return da(l)?g.locale=l:Za(l)?g.plural=l:za(l)?d=l:Ga(l)&&(_=l),da(s)?g.locale=s:za(s)?d=s:Ga(s)&&(_=s),Reflect.apply(e.t,e,[k,d||_||{},g])},te(o,r){return e.te(o,r)},tm(o){return e.tm(o)},getLocaleMessage(o){return e.getLocaleMessage(o)},setLocaleMessage(o,r){e.setLocaleMessage(o,r)},mergeLocaleMessage(o,r){e.mergeLocaleMessage(o,r)},d(...o){return Reflect.apply(e.d,e,[...o])},getDateTimeFormat(o){return e.getDateTimeFormat(o)},setDateTimeFormat(o,r){e.setDateTimeFormat(o,r)},mergeDateTimeFormat(o,r){e.mergeDateTimeFormat(o,r)},n(...o){return Reflect.apply(e.n,e,[...o])},getNumberFormat(o){return e.getNumberFormat(o)},setNumberFormat(o,r){e.setNumberFormat(o,r)},mergeNumberFormat(o,r){e.mergeNumberFormat(o,r)},getChoiceIndex(o,r){return-1}};return t.__extender=i,t}}const mr={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:a=>a==="parent"||a==="global",default:"parent"},i18n:{type:Object}};function qy({slots:a},n){return n.length===1&&n[0]==="default"?(a.default?a.default():[]).reduce((i,t)=>[...i,...t.type===Aa?t.children:[t]],[]):n.reduce((e,i)=>{const t=a[i];return t&&(e[i]=t()),e},La())}function cg(a){return Aa}const gg=fi({name:"i18n-t",props:on({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:a=>Za(a)||!isNaN(a)}},mr),setup(a,n){const{slots:e,attrs:i}=n,t=a.i18n||hr({useScope:a.scope,__useComponent:!0});return()=>{const o=Object.keys(e).filter(_=>_!=="_"),r=La();a.locale&&(r.locale=a.locale),a.plural!==void 0&&(r.plural=da(a.plural)?+a.plural:a.plural);const l=qy(n,o),s=t[sr](a.keypath,l,r),g=on(La(),i),d=da(a.tag)||xa(a.tag)?a.tag:cg();return Ts(d,g,s)}}});function Xy(a){return za(a)&&!da(a[0])}function ug(a,n,e,i){const{slots:t,attrs:o}=n;return()=>{const r={part:!0};let l=La();a.locale&&(r.locale=a.locale),da(a.format)?r.key=a.format:xa(a.format)&&(da(a.format.key)&&(r.key=a.format.key),l=Object.keys(a.format).reduce((k,x)=>e.includes(x)?on(La(),k,{[x]:a.format[x]}):k,La()));const s=i(a.value,r,l);let g=[r.key];za(s)?g=s.map((k,x)=>{const D=t[k.type],T=D?D({[k.type]:k.value,index:x,parts:s}):[k.value];return Xy(T)&&(T[0].key=`${k.type}-${x}`),T}):da(s)&&(g=[s]);const d=on(La(),o),_=da(a.tag)||xa(a.tag)?a.tag:cg();return Ts(_,d,g)}}const dg=fi({name:"i18n-n",props:on({value:{type:Number,required:!0},format:{type:[String,Object]}},mr),setup(a,n){const e=a.i18n||hr({useScope:a.scope,__useComponent:!0});return ug(a,n,qc,(...i)=>e[gr](...i))}}),pg=fi({name:"i18n-d",props:on({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},mr),setup(a,n){const e=a.i18n||hr({useScope:a.scope,__useComponent:!0});return ug(a,n,Wc,(...i)=>e[cr](...i))}});function Qy(a,n){const e=a;if(a.mode==="composition")return e.__getInstance(n)||a.global;{const i=e.__getInstance(n);return i!=null?i.__composer:a.global.__composer}}function ab(a){const n=r=>{const{instance:l,modifiers:s,value:g}=r;if(!l||!l.$)throw en(Qa.UNEXPECTED_ERROR);const d=Qy(a,l.$),_=mg(g);return[Reflect.apply(d.t,d,[...hg(_)]),d]};return{created:(r,l)=>{const[s,g]=n(l);Et&&a.global===g&&(r.__i18nWatcher=cn(g.locale,()=>{l.instance&&l.instance.$forceUpdate()})),r.__composer=g,r.textContent=s},unmounted:r=>{Et&&r.__i18nWatcher&&(r.__i18nWatcher(),r.__i18nWatcher=void 0,delete r.__i18nWatcher),r.__composer&&(r.__composer=void 0,delete r.__composer)},beforeUpdate:(r,{value:l})=>{if(r.__composer){const s=r.__composer,g=mg(l);r.textContent=Reflect.apply(s.t,s,[...hg(g)])}},getSSRProps:r=>{const[l]=n(r);return{textContent:l}}}}function mg(a){if(da(a))return{path:a};if(Ga(a)){if(!("path"in a))throw en(Qa.REQUIRED_VALUE,"path");return a}else throw en(Qa.INVALID_VALUE)}function hg(a){const{path:n,locale:e,args:i,choice:t,plural:o}=a,r={},l=i||{};return da(e)&&(r.locale=e),Za(t)&&(r.plural=t),Za(o)&&(r.plural=o),[n,l,r]}function nb(a,n,...e){const i=Ga(e[0])?e[0]:{},t=!!i.useI18nComponentName;(Ea(i.globalInstall)?i.globalInstall:!0)&&([t?"i18n":gg.name,"I18nT"].forEach(r=>a.component(r,gg)),[dg.name,"I18nN"].forEach(r=>a.component(r,dg)),[pg.name,"I18nD"].forEach(r=>a.component(r,pg))),a.directive("t",ab(n))}function eb(a,n,e){return{beforeCreate(){const i=ue();if(!i)throw en(Qa.UNEXPECTED_ERROR);const t=this.$options;if(t.i18n){const o=t.i18n;if(t.__i18n&&(o.__i18n=t.__i18n),o.__root=n,this===this.$root)this.$i18n=yg(a,o);else{o.__injectWithOption=!0,o.__extender=e.__vueI18nExtend,this.$i18n=pr(o);const r=this.$i18n;r.__extender&&(r.__disposer=r.__extender(this.$i18n))}}else if(t.__i18n)if(this===this.$root)this.$i18n=yg(a,t);else{this.$i18n=pr({__i18n:t.__i18n,__injectWithOption:!0,__extender:e.__vueI18nExtend,__root:n});const o=this.$i18n;o.__extender&&(o.__disposer=o.__extender(this.$i18n))}else this.$i18n=a;t.__i18nGlobal&&ig(n,t,t),this.$t=(...o)=>this.$i18n.t(...o),this.$rt=(...o)=>this.$i18n.rt(...o),this.$tc=(...o)=>this.$i18n.tc(...o),this.$te=(o,r)=>this.$i18n.te(o,r),this.$d=(...o)=>this.$i18n.d(...o),this.$n=(...o)=>this.$i18n.n(...o),this.$tm=o=>this.$i18n.tm(o),e.__setInstance(i,this.$i18n)},mounted(){},unmounted(){const i=ue();if(!i)throw en(Qa.UNEXPECTED_ERROR);const t=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,t.__disposer&&(t.__disposer(),delete t.__disposer,delete t.__extender),e.__deleteInstance(i),delete this.$i18n}}}function yg(a,n){a.locale=n.locale||a.locale,a.fallbackLocale=n.fallbackLocale||a.fallbackLocale,a.missing=n.missing||a.missing,a.silentTranslationWarn=n.silentTranslationWarn||a.silentFallbackWarn,a.silentFallbackWarn=n.silentFallbackWarn||a.silentFallbackWarn,a.formatFallbackMessages=n.formatFallbackMessages||a.formatFallbackMessages,a.postTranslation=n.postTranslation||a.postTranslation,a.warnHtmlInMessage=n.warnHtmlInMessage||a.warnHtmlInMessage,a.escapeParameterHtml=n.escapeParameterHtml||a.escapeParameterHtml,a.sync=n.sync||a.sync,a.__composer[ag](n.pluralizationRules||a.pluralizationRules);const e=Rt(a.locale,{messages:n.messages,__i18n:n.__i18n});return Object.keys(e).forEach(i=>a.mergeLocaleMessage(i,e[i])),n.datetimeFormats&&Object.keys(n.datetimeFormats).forEach(i=>a.mergeDateTimeFormat(i,n.datetimeFormats[i])),n.numberFormats&&Object.keys(n.numberFormats).forEach(i=>a.mergeNumberFormat(i,n.numberFormats[i])),a}const ib=pe("global-vue-i18n");function tb(a={},n){const e=__VUE_I18N_LEGACY_API__&&Ea(a.legacy)?a.legacy:__VUE_I18N_LEGACY_API__,i=Ea(a.globalInjection)?a.globalInjection:!0,t=__VUE_I18N_LEGACY_API__&&e?!!a.allowComposition:!0,o=new Map,[r,l]=ob(a,e),s=pe("");function g(k){return o.get(k)||null}function d(k,x){o.set(k,x)}function _(k){o.delete(k)}{const k={get mode(){return __VUE_I18N_LEGACY_API__&&e?"legacy":"composition"},get allowComposition(){return t},async install(x,...D){if(x.__VUE_I18N_SYMBOL__=s,x.provide(x.__VUE_I18N_SYMBOL__,k),Ga(D[0])){const w=D[0];k.__composerExtend=w.__composerExtend,k.__vueI18nExtend=w.__vueI18nExtend}let T=null;!e&&i&&(T=mb(x,k.global)),__VUE_I18N_FULL_INSTALL__&&nb(x,k,...D),__VUE_I18N_LEGACY_API__&&e&&x.mixin(eb(l,l.__composer,k));const $=x.unmount;x.unmount=()=>{T&&T(),k.dispose(),$()}},get global(){return l},dispose(){r.stop()},__instances:o,__getInstance:g,__setInstance:d,__deleteInstance:_};return k}}function hr(a={}){const n=ue();if(n==null)throw en(Qa.MUST_BE_CALL_SETUP_TOP);if(!n.isCE&&n.appContext.app!=null&&!n.appContext.app.__VUE_I18N_SYMBOL__)throw en(Qa.NOT_INSTALLED);const e=rb(n),i=sb(e),t=eg(n),o=lb(a,t);if(__VUE_I18N_LEGACY_API__&&e.mode==="legacy"&&!a.__useComponent){if(!e.allowComposition)throw en(Qa.NOT_AVAILABLE_IN_LEGACY_MODE);return db(n,o,i,a)}if(o==="global")return ig(i,a,t),i;if(o==="parent"){let s=cb(e,n,a.__useComponent);return s==null&&(s=i),s}const r=e;let l=r.__getInstance(n);if(l==null){const s=on({},a);"__i18n"in t&&(s.__i18n=t.__i18n),i&&(s.__root=i),l=dr(s),r.__composerExtend&&(l[ur]=r.__composerExtend(l)),ub(r,n,l),r.__setInstance(n,l)}return l}function ob(a,n,e){const i=po();{const t=__VUE_I18N_LEGACY_API__&&n?i.run(()=>pr(a)):i.run(()=>dr(a));if(t==null)throw en(Qa.UNEXPECTED_ERROR);return[i,t]}}function rb(a){{const n=Ya(a.isCE?ib:a.appContext.app.__VUE_I18N_SYMBOL__);if(!n)throw en(a.isCE?Qa.NOT_INSTALLED_WITH_PROVIDE:Qa.UNEXPECTED_ERROR);return n}}function lb(a,n){return Mt(a)?"__i18n"in n?"local":"global":a.useScope?a.useScope:"local"}function sb(a){return a.mode==="composition"?a.global:a.global.__composer}function cb(a,n,e=!1){let i=null;const t=n.root;let o=gb(n,e);for(;o!=null;){const r=a;if(a.mode==="composition")i=r.__getInstance(o);else if(__VUE_I18N_LEGACY_API__){const l=r.__getInstance(o);l!=null&&(i=l.__composer,e&&i&&!i[ng]&&(i=null))}if(i!=null||t===o)break;o=o.parent}return i}function gb(a,n=!1){return a==null?null:n&&a.vnode.ctx||a.parent}function ub(a,n,e){Rn(()=>{},n),wo(()=>{const i=e;a.__deleteInstance(n);const t=i[ur];t&&(t(),delete i[ur])},n)}function db(a,n,e,i={}){const t=n==="local",o=Ll(null);if(t&&a.proxy&&!(a.proxy.$options.i18n||a.proxy.$options.__i18n))throw en(Qa.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const r=Ea(i.inheritLocale)?i.inheritLocale:!da(i.locale),l=ua(!t||r?e.locale.value:da(i.locale)?i.locale:Je),s=ua(!t||r?e.fallbackLocale.value:da(i.fallbackLocale)||za(i.fallbackLocale)||Ga(i.fallbackLocale)||i.fallbackLocale===!1?i.fallbackLocale:l.value),g=ua(Rt(l.value,i)),d=ua(Ga(i.datetimeFormats)?i.datetimeFormats:{[l.value]:{}}),_=ua(Ga(i.numberFormats)?i.numberFormats:{[l.value]:{}}),k=t?e.missingWarn:Ea(i.missingWarn)||me(i.missingWarn)?i.missingWarn:!0,x=t?e.fallbackWarn:Ea(i.fallbackWarn)||me(i.fallbackWarn)?i.fallbackWarn:!0,D=t?e.fallbackRoot:Ea(i.fallbackRoot)?i.fallbackRoot:!0,T=!!i.fallbackFormat,$=Ha(i.missing)?i.missing:null,w=Ha(i.postTranslation)?i.postTranslation:null,L=t?e.warnHtmlMessage:Ea(i.warnHtmlMessage)?i.warnHtmlMessage:!0,E=!!i.escapeParameter,I=t?e.modifiers:Ga(i.modifiers)?i.modifiers:{},G=i.pluralRules||t&&e.pluralRules;function S(){return[l.value,s.value,g.value,d.value,_.value]}const v=la({get:()=>o.value?o.value.locale.value:l.value,set:y=>{o.value&&(o.value.locale.value=y),l.value=y}}),K=la({get:()=>o.value?o.value.fallbackLocale.value:s.value,set:y=>{o.value&&(o.value.fallbackLocale.value=y),s.value=y}}),O=la(()=>o.value?o.value.messages.value:g.value),q=la(()=>d.value),sa=la(()=>_.value);function ea(){return o.value?o.value.getPostTranslationHandler():w}function ga(y){o.value&&o.value.setPostTranslationHandler(y)}function Sa(){return o.value?o.value.getMissingHandler():$}function Ma(y){o.value&&o.value.setMissingHandler(y)}function ma(y){return S(),y()}function pa(...y){return o.value?ma(()=>Reflect.apply(o.value.t,null,[...y])):ma(()=>"")}function Y(...y){return o.value?Reflect.apply(o.value.rt,null,[...y]):""}function ta(...y){return o.value?ma(()=>Reflect.apply(o.value.d,null,[...y])):ma(()=>"")}function aa(...y){return o.value?ma(()=>Reflect.apply(o.value.n,null,[...y])):ma(()=>"")}function ba(y){return o.value?o.value.tm(y):{}}function na(y,R){return o.value?o.value.te(y,R):!1}function u(y){return o.value?o.value.getLocaleMessage(y):{}}function A(y,R){o.value&&(o.value.setLocaleMessage(y,R),g.value[y]=R)}function j(y,R){o.value&&o.value.mergeLocaleMessage(y,R)}function c(y){return o.value?o.value.getDateTimeFormat(y):{}}function P(y,R){o.value&&(o.value.setDateTimeFormat(y,R),d.value[y]=R)}function p(y,R){o.value&&o.value.mergeDateTimeFormat(y,R)}function M(y){return o.value?o.value.getNumberFormat(y):{}}function N(y,R){o.value&&(o.value.setNumberFormat(y,R),_.value[y]=R)}function U(y,R){o.value&&o.value.mergeNumberFormat(y,R)}const h={get id(){return o.value?o.value.id:-1},locale:v,fallbackLocale:K,messages:O,datetimeFormats:q,numberFormats:sa,get inheritLocale(){return o.value?o.value.inheritLocale:r},set inheritLocale(y){o.value&&(o.value.inheritLocale=y)},get availableLocales(){return o.value?o.value.availableLocales:Object.keys(g.value)},get modifiers(){return o.value?o.value.modifiers:I},get pluralRules(){return o.value?o.value.pluralRules:G},get isGlobal(){return o.value?o.value.isGlobal:!1},get missingWarn(){return o.value?o.value.missingWarn:k},set missingWarn(y){o.value&&(o.value.missingWarn=y)},get fallbackWarn(){return o.value?o.value.fallbackWarn:x},set fallbackWarn(y){o.value&&(o.value.missingWarn=y)},get fallbackRoot(){return o.value?o.value.fallbackRoot:D},set fallbackRoot(y){o.value&&(o.value.fallbackRoot=y)},get fallbackFormat(){return o.value?o.value.fallbackFormat:T},set fallbackFormat(y){o.value&&(o.value.fallbackFormat=y)},get warnHtmlMessage(){return o.value?o.value.warnHtmlMessage:L},set warnHtmlMessage(y){o.value&&(o.value.warnHtmlMessage=y)},get escapeParameter(){return o.value?o.value.escapeParameter:E},set escapeParameter(y){o.value&&(o.value.escapeParameter=y)},t:pa,getPostTranslationHandler:ea,setPostTranslationHandler:ga,getMissingHandler:Sa,setMissingHandler:Ma,rt:Y,d:ta,n:aa,tm:ba,te:na,getLocaleMessage:u,setLocaleMessage:A,mergeLocaleMessage:j,getDateTimeFormat:c,setDateTimeFormat:P,mergeDateTimeFormat:p,getNumberFormat:M,setNumberFormat:N,mergeNumberFormat:U};function C(y){y.locale.value=l.value,y.fallbackLocale.value=s.value,Object.keys(g.value).forEach(R=>{y.mergeLocaleMessage(R,g.value[R])}),Object.keys(d.value).forEach(R=>{y.mergeDateTimeFormat(R,d.value[R])}),Object.keys(_.value).forEach(R=>{y.mergeNumberFormat(R,_.value[R])}),y.escapeParameter=E,y.fallbackFormat=T,y.fallbackRoot=D,y.fallbackWarn=x,y.missingWarn=k,y.warnHtmlMessage=L}return Zl(()=>{if(a.proxy==null||a.proxy.$i18n==null)throw en(Qa.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const y=o.value=a.proxy.$i18n.__composer;n==="global"?(l.value=y.locale.value,s.value=y.fallbackLocale.value,g.value=y.messages.value,d.value=y.datetimeFormats.value,_.value=y.numberFormats.value):t&&C(y)}),h}const pb=["locale","fallbackLocale","availableLocales"],bg=["t","rt","d","n","tm","te"];function mb(a,n){const e=Object.create(null);return pb.forEach(t=>{const o=Object.getOwnPropertyDescriptor(n,t);if(!o)throw en(Qa.UNEXPECTED_ERROR);const r=Va(o.value)?{get(){return o.value.value},set(l){o.value.value=l}}:{get(){return o.get&&o.get()}};Object.defineProperty(e,t,r)}),a.config.globalProperties.$i18n=e,bg.forEach(t=>{const o=Object.getOwnPropertyDescriptor(n,t);if(!o||!o.value)throw en(Qa.UNEXPECTED_ERROR);Object.defineProperty(a.config.globalProperties,`$${t}`,o)}),()=>{delete a.config.globalProperties.$i18n,bg.forEach(t=>{delete a.config.globalProperties[`$${t}`]})}}if(Vy(),__INTLIFY_JIT_COMPILATION__?Tc(By):Tc(Ky),Iy(gy),wy(Ec),__INTLIFY_PROD_DEVTOOLS__){const a=Qn();a.__INTLIFY__=!0,fy(a.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const hb=Object.assign({"./locales/ar/aria.json":Cm,"./locales/ar/buttons.json":jm,"./locales/ar/detail.json":km,"./locales/ar/legend.json":Gm,"./locales/ar/messages.json":vm,"./locales/ar/options.json":Am,"./locales/ar/prayerLaps.json":Sm,"./locales/ar/search.json":Em,"./locales/ar/tabs.json":Mm,"./locales/de/aria.json":Im,"./locales/de/buttons.json":wm,"./locales/de/detail.json":xm,"./locales/de/legend.json":Tm,"./locales/de/messages.json":Nm,"./locales/de/options.json":Lm,"./locales/de/prayerLaps.json":Rm,"./locales/de/search.json":$m,"./locales/de/tabs.json":Fm,"./locales/en/aria.json":Km,"./locales/en/buttons.json":Bm,"./locales/en/detail.json":Om,"./locales/en/legend.json":Um,"./locales/en/messages.json":Hm,"./locales/en/options.json":Dm,"./locales/en/popup.json":zm,"./locales/en/prayerLaps.json":Vm,"./locales/en/search.json":Ym,"./locales/en/tabs.json":Wm,"./locales/es/aria.json":Jm,"./locales/es/buttons.json":Zm,"./locales/es/detail.json":qm,"./locales/es/legend.json":Xm,"./locales/es/messages.json":Qm,"./locales/es/options.json":ah,"./locales/es/prayerLaps.json":nh,"./locales/es/search.json":eh,"./locales/es/tabs.json":ih,"./locales/fr/aria.json":th,"./locales/fr/buttons.json":oh,"./locales/fr/detail.json":rh,"./locales/fr/legend.json":lh,"./locales/fr/messages.json":sh,"./locales/fr/options.json":ch,"./locales/fr/popup.json":gh,"./locales/fr/prayerLaps.json":uh,"./locales/fr/search.json":dh,"./locales/fr/tabs.json":ph,"./locales/hi/aria.json":mh,"./locales/hi/buttons.json":hh,"./locales/hi/detail.json":yh,"./locales/hi/legend.json":bh,"./locales/hi/messages.json":_h,"./locales/hi/options.json":fh,"./locales/hi/prayerLaps.json":Ph,"./locales/hi/search.json":Ch,"./locales/it/aria.json":jh,"./locales/it/buttons.json":kh,"./locales/it/detail.json":Gh,"./locales/it/legend.json":vh,"./locales/it/messages.json":Ah,"./locales/it/options.json":Sh,"./locales/it/prayerLaps.json":Eh,"./locales/it/search.json":Mh,"./locales/pt/aria.json":Ih,"./locales/pt/buttons.json":wh,"./locales/pt/detail.json":xh,"./locales/pt/legend.json":Th,"./locales/pt/messages.json":Nh,"./locales/pt/options.json":Lh,"./locales/pt/prayerLaps.json":Rh,"./locales/pt/search.json":$h,"./locales/pt/tabs.json":Fh,"./locales/ro/aria.json":Kh,"./locales/ro/buttons.json":Bh,"./locales/ro/detail.json":Oh,"./locales/ro/legend.json":Uh,"./locales/ro/messages.json":Hh,"./locales/ro/options.json":Dh,"./locales/ro/prayerLaps.json":zh,"./locales/ro/search.json":Vh,"./locales/ru/aria.json":Yh,"./locales/ru/buttons.json":Wh,"./locales/ru/detail.json":Jh,"./locales/ru/legend.json":Zh,"./locales/ru/messages.json":qh,"./locales/ru/options.json":Xh,"./locales/ru/prayerLaps.json":Qh,"./locales/ru/search.json":a0,"./locales/ru/tabs.json":n0,"./locales/zh/aria.json":e0,"./locales/zh/buttons.json":i0,"./locales/zh/detail.json":t0,"./locales/zh/legend.json":o0,"./locales/zh/messages.json":r0,"./locales/zh/options.json":l0,"./locales/zh/prayerLaps.json":s0,"./locales/zh/search.json":c0}),Ri={};for(const[a,n]of Object.entries(hb)){const e=a.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!e)continue;const[,i,t]=e;Ri[i]??(Ri[i]={}),Ri[i][t]=n}const _g=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"];function yb(){var e;const n=(((e=document==null?void 0:document.documentElement)==null?void 0:e.lang)||"").split("-")[0].toLowerCase();return _g.includes(n)?n:"en"}function bb(){return tb({legacy:!1,globalInjection:!0,locale:yb(),fallbackLocale:"en",messages:Ri,missingWarn:!1,fallbackWarn:!1})}let _b=0;const fb=Jo("ui",{state:()=>({_storeInstanceId:++_b,theme:"light",colorScheme:"default",reducedMotion:!1,highContrast:!1,activeTab:"geo-regions",sidebarCollapsed:!1,mobileMenuOpen:!1,legendState:"collapsed",_customLegendHeight:null,searchMode:!1,hamburgerMenuOpen:!1,legendMode:"prayer",prayerFilter:null,engagementFilter:null,adoptionFilter:null,religionFilter:null,selectedPeopleGroup:null,breakpoint:"desktop",windowSize:{width:window.innerWidth,height:window.innerHeight},toasts:[],nextToastId:1,toastDuration:5e3,openModals:[],modalData:new Map,isGlobalLoading:!1,globalLoadingMessage:"Loading...",loadingStates:new Map,interactionHistory:[],maxHistoryLength:20,keyboardShortcutsEnabled:!0,screenReaderAnnouncement:"",focusTrapActive:!1,debugMode:!1,showPerformanceOverlay:!1}),getters:{isDarkTheme:a=>a.theme==="auto"?window.matchMedia("(prefers-color-scheme: dark)").matches:a.theme==="dark",isMobile:a=>a.breakpoint==="mobile",isTablet:a=>a.breakpoint==="tablet",isDesktop:a=>a.breakpoint==="desktop"||a.breakpoint==="wide",legendHeight:a=>a._customLegendHeight?a._customLegendHeight:a.legendState==="collapsed"?"48px":a.legendState==="open"?"30%":a.legendState==="fullyOpen"?"calc(100% - 80px)":"48px",caretRotation:a=>a.legendState==="collapsed"?0:90,showPullTab:a=>a.legendState==="open"||a.legendState==="fullyOpen",getToastsByType:a=>n=>a.toasts.filter(e=>e.type===n),hasOpenModal:a=>a.openModals.length>0,topModal:a=>a.openModals.length===0?null:a.openModals[a.openModals.length-1],isModalOpen:a=>n=>a.openModals.includes(n),isAnyLoading:a=>a.isGlobalLoading||a.loadingStates.size>0,isLoading:a=>n=>a.loadingStates.get(n)||!1},actions:{setTheme(a){if(!["light","dark","auto"].includes(a))return;this.theme=a;const e=this.isDarkTheme;document.documentElement.setAttribute("data-theme",e?"dark":"light"),localStorage.setItem("theme",a)},toggleTheme(){const a=this.theme==="light"?"dark":"light";this.setTheme(a)},setColorScheme(a){this.colorScheme=a,document.documentElement.setAttribute("data-color-scheme",a)},toggleReducedMotion(){this.reducedMotion=!this.reducedMotion,document.documentElement.setAttribute("data-reduced-motion",this.reducedMotion)},toggleHighContrast(){this.highContrast=!this.highContrast,document.documentElement.setAttribute("data-high-contrast",this.highContrast)},setActiveTab(a){this.activeTab=a,this.addToHistory({type:"tab-change",tabId:a,timestamp:Date.now()})},toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed},openMobileMenu(){this.mobileMenuOpen=!0},closeMobileMenu(){this.mobileMenuOpen=!1},setLegendMode(a){["prayer","detail"].includes(a)&&(this.legendMode=a)},setPrayerFilter(a){[null,"noPrayer","hasPrayer","fullPrayer"].includes(a)&&(this.prayerFilter=a)},setEngagementFilter(a){[null,"notEngaged","hasEngagement"].includes(a)&&(this.engagementFilter=a)},setAdoptionFilter(a){[null,"notAdopted","hasAdoption"].includes(a)&&(this.adoptionFilter=a)},setReligionFilter(a){[null,"C","M","H","B","E","J","S","N","O","U"].includes(a)&&(this.religionFilter=a)},selectPeopleGroup(a){this.selectedPeopleGroup=a,a?(this._legendStateBeforeDetail=this.legendState,this.legendState="open",this._customLegendHeight=null,this.setLegendMode("detail")):(this.legendState=this._legendStateBeforeDetail||"open",this._customLegendHeight=null,this.setLegendMode("prayer"))},setLegendState(a){["collapsed","open","fullyOpen"].includes(a)&&(this.legendState=a)},toggleSearchMode(){this.searchMode=!this.searchMode},setSearchMode(a){this.searchMode=a},toggleHamburgerMenu(){this.hamburgerMenuOpen=!this.hamburgerMenuOpen},updateBreakpoint(a){let n;a<768?n="mobile":a<1024?n="tablet":a<1920?n="desktop":n="wide",n!==this.breakpoint&&(this.breakpoint=n)},updateWindowSize(a,n){this.windowSize.width=a,this.windowSize.height=n,this.updateBreakpoint(a)},showToast(a){const{message:n,type:e="info",duration:i=this.toastDuration,action:t=null,persistent:o=!1}=a,r={id:this.nextToastId++,message:n,type:e,duration:i,action:t,persistent:o,createdAt:Date.now()};return this.toasts.push(r),!o&&i>0&&setTimeout(()=>{this.removeToast(r.id)},i),r.id},showSuccess(a,n={}){return this.showToast({message:a,type:"success",...n})},showError(a,n={}){return this.showToast({message:a,type:"error",duration:7e3,...n})},showWarning(a,n={}){return this.showToast({message:a,type:"warning",...n})},showInfo(a,n={}){return this.showToast({message:a,type:"info",...n})},removeToast(a){const n=this.toasts.findIndex(e=>e.id===a);n!==-1&&this.toasts.splice(n,1)},clearAllToasts(){this.toasts=[]},openModal(a,n={}){this.openModals.includes(a)||(this.openModals.push(a),this.modalData.set(a,n),this.focusTrapActive=!0)},closeModal(a=null){if(a){const n=this.openModals.indexOf(a);n!==-1&&(this.openModals.splice(n,1),this.modalData.delete(a))}else{const n=this.openModals.pop();n&&this.modalData.delete(n)}this.openModals.length===0&&(this.focusTrapActive=!1)},closeAllModals(){this.openModals=[],this.modalData.clear(),this.focusTrapActive=!1},getModalData(a){return this.modalData.get(a)},showGlobalLoading(a="Loading..."){this.isGlobalLoading=!0,this.globalLoadingMessage=a},hideGlobalLoading(){this.isGlobalLoading=!1},setLoading(a,n=!0){n?this.loadingStates.set(a,!0):this.loadingStates.delete(a)},addToHistory(a){this.interactionHistory.push(a),this.interactionHistory.length>this.maxHistoryLength&&this.interactionHistory.shift()},clearHistory(){this.interactionHistory=[]},announce(a,n="polite"){this.screenReaderAnnouncement=a,setTimeout(()=>{this.screenReaderAnnouncement===a&&(this.screenReaderAnnouncement="")},1e3)},toggleKeyboardShortcuts(){this.keyboardShortcutsEnabled=!this.keyboardShortcutsEnabled},toggleDebugMode(){this.debugMode=!this.debugMode},togglePerformanceOverlay(){this.showPerformanceOverlay=!this.showPerformanceOverlay},toggleLegend(){this.legendState==="fullyOpen"?this.legendState="open":this.legendState==="open"?this.legendState="collapsed":this.legendState="open",this._customLegendHeight=null},openLegend(){this.legendState="open",this._customLegendHeight=null},fullyOpenLegend(){this.legendState="fullyOpen",this._customLegendHeight=null},collapseLegend(){this.legendState="collapsed",this._customLegendHeight=null},setLegendHeight(a){this._customLegendHeight=a},handleLegendItemClick(){this.legendState==="fullyOpen"&&(this.legendState="open")},enableSearchMode(){this.searchMode=!0},disableSearchMode(){this.searchMode=!1},toggleHamburgerMenu(){this.hamburgerMenuOpen=!this.hamburgerMenuOpen},openHamburgerMenu(){this.hamburgerMenuOpen=!0},closeHamburgerMenu(){this.hamburgerMenuOpen=!1},init(){const a=localStorage.getItem("theme");a&&this.setTheme(a),new ResizeObserver(e=>{for(const i of e)this.updateWindowSize(i.contentRect.width,i.contentRect.height)}).observe(document.documentElement),window.matchMedia&&(window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{this.theme==="auto"&&document.documentElement.setAttribute("data-theme",e.matches?"dark":"light")}),window.matchMedia("(prefers-reduced-motion: reduce)").addEventListener("change",e=>{this.reducedMotion=e.matches,document.documentElement.setAttribute("data-reduced-motion",e.matches)}))}}}),Pb=Jo("map",{state:()=>({maps:{},activeMapId:null,selectedRegion:null,selectedFamily:null,selectedAffinityBlock:null,selectedLanguage:null,selectedDialect:null,activeLegendTab:"family",selectedResource:null,selectedPeopleGroup:null,selectedPinIds:[],globalFilters:{},searchQuery:"",autoFly:{isActive:!1,speed:1,interval:5e3,currentIndex:0,items:[],timerId:null},guidedTour:{isActive:!1,currentStep:0,steps:[]},showClusters:!1,clusterMode:"region",clusterFilterProperty:null,clusterFilterValue:null,flySpeed:"normal",fullscreenMapId:null,preferences:{theme:"light",defaultMapStyle:"streets",enableAnimations:!0,autoSavePreferences:!0}}),getters:{getMapById:a=>n=>a.maps[n],activeMap:a=>a.activeMapId?a.maps[a.activeMapId]:null,hasMap:a=>n=>n in a.maps,allMapIds:a=>Object.keys(a.maps),hasSelection:a=>!!(a.selectedRegion||a.selectedFamily||a.selectedAffinityBlock||a.selectedPeopleGroup),isAutoFlying:a=>a.autoFly.isActive,isGuidedTourActive:a=>a.guidedTour.isActive,isMapFullscreen:a=>n=>a.fullscreenMapId===n},actions:{registerMap(a,n,e={}){let i=1.5;e.zoom!==void 0?i=e.zoom:n&&typeof n.getZoom=="function"&&(i=n.getZoom());let t=[0,0];if(e.center)t=e.center;else if(n&&typeof n.getCenter=="function"){const o=n.getCenter();o&&(t=[o.lng,o.lat])}this.maps[a]={instance:n,config:e,isReady:!1,zoom:i,center:t,registeredAt:Date.now()},this.activeMapId||(this.activeMapId=a)},setMapReady(a){const n=this.maps[a];n&&(n.isReady=!0)},updateMapState(a,n){const e=this.maps[a];e&&Object.assign(e,n)},unregisterMap(a){if(delete this.maps[a],this.activeMapId===a){const n=this.allMapIds;this.activeMapId=n.length>0?n[0]:null}},setActiveMap(a){a in this.maps&&(this.activeMapId=a)},selectRegion(a){this.selectedFamily=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedRegion=a},selectFamily(a){this.selectedRegion=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedLanguage=null,this.selectedDialect=null,this.selectedFamily=a},setActiveLegendTab(a){this.activeLegendTab=a},selectLanguage(a){this.selectedRegion=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedFamily=null,this.selectedDialect=null,this.selectedLanguage=a},selectDialect(a){this.selectedRegion=null,this.selectedFamily=null,this.selectedLanguage=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedDialect=a},selectAffinityBlock(a){this.selectedRegion=null,this.selectedFamily=null,this.selectedPeopleGroup=null,this.selectedAffinityBlock=a},selectPeopleGroup(a){this.selectedPeopleGroup=a},selectResource(a){this.selectedRegion=null,this.selectedFamily=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedResource===a?this.selectedResource=null:this.selectedResource=a},clearSelections(){this.selectedRegion=null,this.selectedFamily=null,this.selectedLanguage=null,this.selectedDialect=null,this.selectedAffinityBlock=null,this.selectedResource=null,this.selectedPeopleGroup=null,this.selectedPinIds=[],this.showClusters=!1,this.clusterMode="region"},setSelectedPinIds(a){this.selectedPinIds=a||[]},setFilter(a,n){this.globalFilters[a]=n},removeFilter(a){delete this.globalFilters[a]},clearFilters(){this.globalFilters={},this.searchQuery=""},setSearchQuery(a){this.searchQuery=a},startAutoFly(a,n=1){this.stopAutoFly(),this.autoFly.isActive=!0,this.autoFly.speed=n,this.autoFly.items=a,this.autoFly.currentIndex=0},stopAutoFly(){this.autoFly.timerId&&(clearInterval(this.autoFly.timerId),this.autoFly.timerId=null),this.autoFly.isActive=!1,this.autoFly.currentIndex=0},setAutoFlySpeed(a){this.autoFly.speed=Math.max(.5,Math.min(2,a))},nextAutoFlyItem(){if(!this.autoFly.isActive||this.autoFly.items.length===0)return;this.autoFly.currentIndex=(this.autoFly.currentIndex+1)%this.autoFly.items.length;const a=this.autoFly.items[this.autoFly.currentIndex];a.type==="region"?this.selectRegion(a):a.type==="family"&&this.selectFamily(a)},toggleClusters(a){typeof a=="boolean"?this.showClusters=a:this.showClusters=!this.showClusters},setClusterMode(a){["region","language-family","affinity-block","mst","resource"].includes(a)&&(this.clusterMode=a)},setClusterFilter(a,n){this.clusterFilterProperty=a||null,this.clusterFilterValue=n||null},clearClusterFilter(){this.clusterFilterProperty=null,this.clusterFilterValue=null},setFlySpeed(a){["slow","normal","fast"].includes(a)&&(this.flySpeed=a)},setSelectedFamily(a){this.selectFamily(a)},clearSelectedFamily(){this.selectFamily(null)},setSelectedRegion(a){this.selectRegion(a)},clearSelectedRegion(){this.selectRegion(null)},clearSelectedResource(){this.selectResource(null)},clearSelectedLanguage(){this.selectLanguage(null)},clearSelectedDialect(){this.selectDialect(null)},toggleFullscreen(a){this.fullscreenMapId===a?this.fullscreenMapId=null:this.fullscreenMapId=a},loadPreferences(){try{const a=localStorage.getItem("mapUserPreferences");if(a){const n=JSON.parse(a);this.preferences={...this.preferences,...n}}}catch(a){console.error("[mapStore] Failed to load preferences:",a)}},savePreferences(){try{localStorage.setItem("mapUserPreferences",JSON.stringify(this.preferences))}catch(a){console.error("[mapStore] Failed to save preferences:",a)}},setPreference(a,n){this.preferences[a]=n,this.preferences.autoSavePreferences&&this.savePreferences()}}}),Cb=Jo("data",{state:()=>({sources:{},loadingStates:{}}),actions:{async load(a,n){if(!this.sources[a]){this.loadingStates[a]={isLoading:!0,error:null};try{const e=await n();this.sources[a]=mi({features:e,timestamp:Date.now()}),this.loadingStates[a]={isLoading:!1,error:null}}catch(e){console.error(`[dataStore] Failed to load source "${a}":`,e),this.loadingStates[a]={isLoading:!1,error:e}}}},clearSource(a){delete this.sources[a],delete this.loadingStates[a]},cacheSourceData(a,n){this.sources[a]=mi({features:n.normalizedData||[],timestamp:n.timestamp||Date.now()})},hasSourceData(a){return!!this.sources[a]},getSourceData(a){return this.sources[a]?{normalizedData:this.sources[a].features}:null}},getters:{getData:a=>n=>{var e;return((e=a.sources[n])==null?void 0:e.features)??null},isLoading:a=>n=>{var e;return((e=a.loadingStates[n])==null?void 0:e.isLoading)??!1},getError:a=>n=>{var e;return((e=a.loadingStates[n])==null?void 0:e.error)??null}}}),jb={activeSource:"pray-tools"},kb=(a,n)=>{const e=a.__vccOpts||a;for(const[i,t]of n)e[i]=t;return e},Gb={class:"profile-loader"},vb={key:0,class:"profile-error"},Ab={key:1,class:"profile-error"},Sb=kb({__name:"ProfileLoader",props:{profileConfig:{type:String,default:""}},setup(a){var $;const n=a,e=la(()=>{if(!n.profileConfig)return null;try{return JSON.parse(n.profileConfig)}catch{return console.error("[ProfileLoader] Invalid profile-config JSON:",n.profileConfig),null}}),i=la(()=>{var w;return((w=e.value)==null?void 0:w.profile)||null}),t=la(()=>{var w;return((w=e.value)==null?void 0:w.tk)||""}),o=la(()=>{var w;return((w=e.value)==null?void 0:w.dataSource)||jb.activeSource}),r=la(()=>{var w;return((w=e.value)==null?void 0:w.colorSet)||"default"}),l=la(()=>{var L,E;const w=(((L=e.value)==null?void 0:L.locale)||((E=e.value)==null?void 0:E.lang)||"").split("-")[0].toLowerCase();return _g.includes(w)?w:""}),s=Ya("appI18n",null);xd(()=>{l.value&&s&&(s.global.locale.value=l.value)});const g=la(()=>{var w,L;return l.value||((L=(w=s==null?void 0:s.global)==null?void 0:w.locale)==null?void 0:L.value)||"en"}),d=la(()=>{var w;return((w=e.value)==null?void 0:w.instanceId)||"map-embed-"+Math.random().toString(36).slice(2,9)}),_=Ya("profileModules",null);if(!_)throw new Error('[ProfileLoader] No profileModules provided. Bundle entry must `app.provide("profileModules", import.meta.glob("./*.vue"))`');const k=la(()=>{if(!i.value)return null;const w=`./${i.value}.vue`;return _[w]?Fd(_[w]):(console.error(`[ProfileLoader] Profile not found: "${i.value}". Available:`,Object.keys(_)),null)});vn("mapboxToken",t),vn("dataSource",o),vn("colorSet",r),vn("profileConfig",e),vn("instanceId",d),vn("lang",g);const x=fb(),D=Pb(),T=Cb();try{window.localStorage.getItem("__probe__")}catch{const L=Object.create(null),E={getItem:I=>I in L?L[I]:null,setItem:(I,G)=>{L[I]=String(G)},removeItem:I=>{delete L[I]},clear:()=>{for(const I in L)delete L[I]},key:I=>Object.keys(L)[I]??null,get length(){return Object.keys(L).length}};try{Object.defineProperty(window,"localStorage",{configurable:!0,value:E})}catch{}}try{const w=localStorage.getItem("theme");w&&(($=x.setTheme)==null||$.call(x,w))}catch{}return vn("uiStore",x),vn("mapStore",D),vn("dataStore",T),(w,L)=>(z(),W("div",Gb,[e.value?k.value?(z(),Me(Jd(k.value),{key:2})):(z(),W("div",Ab,[f("p",null,[L[1]||(L[1]=ya("⚠️ Profile ",-1)),f("strong",null,'"'+X(i.value)+'"',1),L[2]||(L[2]=ya(" not found.",-1))])])):(z(),W("div",vb,[...L[0]||(L[0]=[f("p",null,[ya("⚠️ "),f("strong",null,"map-embed"),ya(": missing or invalid "),f("code",null,"profile-config"),ya(" prop.")],-1),f("p",null,[ya("Example: "),f("code",null,`profile-config='{"profile":"example-map","tk":"pk.YOUR_MAPBOX_TOKEN"}'`)],-1)])]))]))}},[["__scopeId","data-v-8d448c33"]]),Eb=Object.assign({"./bloom-cockpit.vue":()=>oi(()=>Promise.resolve().then(()=>P_),void 0),"./flower-mesh.vue":()=>oi(()=>Promise.resolve().then(()=>Y_),void 0),"./lang-cluster.vue":()=>oi(()=>Promise.resolve().then(()=>p5),void 0),"./send-map.vue":()=>oi(()=>Promise.resolve().then(()=>K5),void 0),"./upg-neighbors.vue":()=>oi(()=>Promise.resolve().then(()=>Of),void 0)});if(typeof window<"u"&&((xu=window.mapboxgl)!=null&&xu.setRTLTextPlugin))try{window.mapboxgl.setRTLTextPlugin("https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.3.0/mapbox-gl-rtl-text.js",null,!0)}catch{}function $i(){return rm(Sb,{configureApp(a){a.use(hm()),a.use(bb()),a.provide("profileModules",Eb)}})}typeof customElements<"u"&&(customElements.get("send-map")||customElements.define("send-map",$i()),customElements.get("flower-mesh")||customElements.define("flower-mesh",$i()),customElements.get("lang-cluster")||customElements.define("lang-cluster",$i()),customElements.get("bloom-cockpit")||customElements.define("bloom-cockpit",$i()),customElements.get("upg-neighbors")||customElements.define("upg-neighbors",$i()));function On(a,n){const e=n||Mb(a);Rn(()=>{var l;const i=ue();if(!i)return;const t=(l=i.proxy)==null?void 0:l.$el;if(!t)return;const o=t.getRootNode();if(!(o instanceof ShadowRoot)||o.querySelector(`style[data-shadow-styles="${e}"]`))return;const r=document.createElement("style");r.setAttribute("data-shadow-styles",e),r.textContent=a,o.appendChild(r)})}function Mb(a){let n=0;for(let e=0;e=2% (>=2% evangelical) OR GSEC>=4 — senders only; 'Engaged' excluded (engaged != reached)",reached_pool:5146,target_countries:40,total_neighbors:2603,neighbors_with_rol3:2603,neighbors_with_coords:2603},countries:{India:{target_upg:2040,target_pop:1394512400,target_top_langs:["Hindi","Urdu","Gujarati","Marathi"],target_top_religion:"Hinduism",neighbors:[{name:"Naga, Sangtam",country:"India",lang:"Naga, Sangtam",rol3:"nsa",pct_christian:75,pop:12e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.85,lng:94.62,code:"PG041909"},{name:"Naga Kacha",country:"India",lang:"Naga, Zeme",rol3:"nzm",pct_christian:75,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.21,lng:94.04,code:"PG049568"},{name:"Moyon",country:"India",lang:"Naga, Moyon",rol3:"nmo",pct_christian:75,pop:3600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049747"},{name:"Lisu",country:"India",lang:"Lisu",rol3:"lis",pct_christian:75,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.37,lng:96.37,code:"PG049761"},{name:"Koirao",country:"India",lang:"Boro (India)",rol3:"brx",pct_christian:75,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.2,lng:94.05,code:"PG049766"},{name:"Beldar (Bundelkhandi)",country:"India",lang:"Bundeli",rol3:"bns",pct_christian:75,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.76,lng:81.58,code:"PG048210"},{name:"Majhi",country:"India",lang:"Majhi",rol3:"mjz",pct_christian:75,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.11,lng:88.35,code:"PG049075"},{name:"Ansari-Momin (Sadri)",country:"India",lang:"Sadri",rol3:"sck",pct_christian:75,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:23.63,lng:85.55,code:"PG048700"},{name:"Syrian Christian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:62.5,pop:4495e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:12.35,lng:76.09,code:"PG041308"},{name:"Naga, Ao",country:"India",lang:"Naga, Ao",rol3:"njo",pct_christian:62.5,pop:411e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.34,lng:94.36,code:"PG041361"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Naga, Sema",country:"India",lang:"Naga, Sumi",rol3:"nsm",pct_christian:62.5,pop:368e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.93,lng:94.23,code:"PG041651"},{name:"Naga, Konyak",country:"India",lang:"Naga, Konyak",rol3:"nbe",pct_christian:62.5,pop:361e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.72,lng:95.04,code:"PG041687"},{name:"Naga, Angami",country:"India",lang:"Naga, Angami",rol3:"njm",pct_christian:62.5,pop:241e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.69,lng:93.9,code:"PG041738"},{name:"Naga, Lotha",country:"India",lang:"Naga, Lotha",rol3:"njh",pct_christian:62.5,pop:234e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.01,lng:94.06,code:"PG041755"},{name:"Naga, Tangkhul",country:"India",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:214e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.07,lng:94.38,code:"PG041697"},{name:"Naga, Chakhesang",country:"India",lang:"Naga, Chokri",rol3:"nri",pct_christian:62.5,pop:198e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.56,lng:94.3,code:"PG041748"},{name:"Kuki",country:"India",lang:"Chin, Thado",rol3:"tcz",pct_christian:62.5,pop:179e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.49,lng:93.86,code:"PG041761"},{name:"Naga, Kabui",country:"India",lang:"Naga, Rongmei",rol3:"nbu",pct_christian:62.5,pop:121e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.15,lng:93.79,code:"PG041943"},{name:"Naga, Yimchunger",country:"India",lang:"Naga, Yimchungru",rol3:"yim",pct_christian:62.5,pop:112e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.8,lng:94.83,code:"PG041978"},{name:"Naga, Mao",country:"India",lang:"Naga, Mao",rol3:"nbi",pct_christian:62.5,pop:106e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.2,lng:94.04,code:"PG041779"},{name:"Naga, Zeliang",country:"India",lang:"Naga, Zeme",rol3:"nzm",pct_christian:62.5,pop:106e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.62,lng:93.83,code:"PG041995"},{name:"Naga, Rengma",country:"India",lang:"Naga, Southern Rengma",rol3:"nre",pct_christian:62.5,pop:79e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.26,lng:94.7,code:"PG042067"},{name:"Vaiphei",country:"India",lang:"Vaiphei",rol3:"vap",pct_christian:62.5,pop:56e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.31,lng:93.43,code:"PG042060"},{name:"Kahha",country:"India",lang:"Naga, Phom",rol3:"nph",pct_christian:62.5,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.48,lng:94.74,code:"PG041953"},{name:"Mizo, Pawi",country:"India",lang:"Chin, Paite",rol3:"pck",pct_christian:62.5,pop:47500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.88,code:"PG041966"},{name:"Nicobarese",country:"India",lang:"Nicobarese, Car",rol3:"caq",pct_christian:62.5,pop:42500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.18,lng:92.77,code:"PG041984"},{name:"Naga, Maring",country:"India",lang:"Naga, Maring",rol3:"nng",pct_christian:62.5,pop:34500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG042119"},{name:"Chin, Mara",country:"India",lang:"Mara",rol3:"mrh",pct_christian:62.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.89,code:"PG042043"},{name:"Zou",country:"India",lang:"Zo",rol3:"zom",pct_christian:62.5,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.16,lng:93.71,code:"PG042107"},{name:"Naga, Pochury",country:"India",lang:"Naga, Pochuri",rol3:"npo",pct_christian:62.5,pop:24500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.03,lng:94.53,code:"PG049624"},{name:"Gangte",country:"India",lang:"Gangte",rol3:"gnb",pct_christian:62.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.28,lng:93.69,code:"PG042166"},{name:"Lamgang",country:"India",lang:"Lamkang",rol3:"lmk",pct_christian:62.5,pop:8700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.44,lng:94.05,code:"PG049002"},{name:"Chiru",country:"India",lang:"Chiru",rol3:"cdf",pct_christian:62.5,pop:8300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.35,lng:94.11,code:"PG049001"},{name:"Cote",country:"India",lang:"Naga, Chothe",rol3:"nct",pct_christian:62.5,pop:4100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049749"},{name:"Aimol",country:"India",lang:"Aimol",rol3:"aim",pct_christian:62.5,pop:3700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.7,lng:93.92,code:"PG048880"},{name:"Ucai",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:62.5,pop:3100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.36,lng:92.17,code:"PG049762"},{name:"Monsang",country:"India",lang:"Naga, Monsang",rol3:"nmh",pct_christian:62.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049759"},{name:"Soria",country:"India",lang:"Hindi",rol3:"hin",pct_christian:62.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.2,lng:77.09,code:"PG048955"},{name:"Pnar",country:"India",lang:"Pnar",rol3:"pbv",pct_christian:62.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.89,code:"PG049638"},{name:"Mangli",country:"India",lang:"Sambalpuri",rol3:"spv",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.91,lng:83.18,code:"PG049616"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Tarao",country:"India",lang:"Naga, Tarao",rol3:"tro",pct_christian:62.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049555"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Khasi",country:"India",lang:"Khasi",rol3:"kha",pct_christian:45,pop:1675e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.52,lng:91.79,code:"PG041380"},{name:"Pulayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:45,pop:154e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.06,lng:76.53,code:"PG041344"},{name:"Garo",country:"India",lang:"Garo",rol3:"grt",pct_christian:45,pop:1065e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.62,lng:90.74,code:"PG041444"},{name:"Meghval",country:"India",lang:"Hindi",rol3:"hin",pct_christian:45,pop:377e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.87,lng:73.03,code:"PG041328"},{name:"Santal (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:45,pop:176e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.8,lng:87.48,code:"PG046353"},{name:"Hmar",country:"India",lang:"Hmar",rol3:"hmr",pct_christian:45,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.97,lng:93.56,code:"PG041808"},{name:"Paite",country:"India",lang:"Chin, Paite",rol3:"pck",pct_christian:45,pop:94e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.3,lng:93.43,code:"PG041890"},{name:"Naga, Khiamngan",country:"India",lang:"Naga, Khiamniungan",rol3:"kix",pct_christian:45,pop:56e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.17,lng:94.89,code:"PG042023"},{name:"Mizo",country:"India",lang:"Mizo",rol3:"lus",pct_christian:35,pop:1115e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.31,lng:92.83,code:"PG041461"},{name:"Thadou",country:"India",lang:"Chin, Thado",rol3:"tcz",pct_christian:35,pop:268e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.3,lng:93.43,code:"PG041679"},{name:"Mal Paharia",country:"India",lang:"Mal Paharia",rol3:"mkb",pct_christian:35,pop:231e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.56,lng:87.66,code:"PG041653"},{name:"Bhil Mina",country:"India",lang:"Vaghri",rol3:"vgr",pct_christian:35,pop:131e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.59,lng:73.72,code:"PG048977"},{name:"Nissi",country:"India",lang:"Nyishi",rol3:"njz",pct_christian:35,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.27,lng:93.61,code:"PG041760"},{name:"Chang (Naga)",country:"India",lang:"Naga, Chang",rol3:"nbc",pct_christian:35,pop:81500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.17,lng:94.89,code:"PG041979"},{name:"Malai Arayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:35,pop:48e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:9.65,lng:76.66,code:"PG041952"},{name:"Anal",country:"India",lang:"Anal",rol3:"anm",pct_christian:35,pop:31500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.04,lng:94.14,code:"PG042153"},{name:"Nagbansi (Dogri)",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:35,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:33.05,lng:75.08,code:"PG048317"},{name:"Pagi",country:"India",lang:"Konkani",rol3:"knn",pct_christian:35,pop:650,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:14.91,lng:74.23,code:"PG049171"},{name:"Munda ",country:"India",lang:"Munda",rol3:"unx",pct_christian:25,pop:2875e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.75,lng:88.2,code:"PG041329"},{name:"Kharia",country:"India",lang:"Kharia",rol3:"khr",pct_christian:25,pop:889e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.47,lng:84.55,code:"PG041457"},{name:"Paravar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:162e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:8.62,lng:77,code:"PG041743"},{name:"Koh",country:"India",lang:"Marathi",rol3:"mar",pct_christian:25,pop:96500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.29,lng:76.9,code:"PG041285"},{name:"Mehar",country:"India",lang:"Mewari",rol3:"mtr",pct_christian:25,pop:84500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:24.37,lng:76.25,code:"PG041828"},{name:"Madgi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:76500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.17,lng:79.45,code:"PG041802"},{name:"Mech",country:"India",lang:"Assamese",rol3:"asm",pct_christian:25,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:27.1,lng:92.43,code:"PG041900"},{name:"Adi Gallong",country:"India",lang:"Adi, Galo",rol3:"adl",pct_christian:25,pop:71e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:28.32,lng:94.51,code:"PG041851"},{name:"Gounder",country:"India",lang:"Tamil",rol3:"tam",pct_christian:25,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:11.68,lng:78.22,code:"PG041906"},{name:"Hajong",country:"India",lang:"Hajong",rol3:"haj",pct_christian:25,pop:47e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.53,lng:89.89,code:"PG041954"},{name:"Kerala Mudali",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:9.44,lng:78.7,code:"PG049672"},{name:"Noatia",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:25,pop:9800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:23.79,lng:91.46,code:"PG042172"},{name:"Godari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:17.69,lng:83.22,code:"PG049205"},{name:"Kambodia Bhagat",country:"India",lang:"Marwari (India)",rol3:"rwr",pct_christian:25,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.95,lng:72.49,code:"PG049636"},{name:"Chamail",country:"India",lang:"Hindi",rol3:"hin",pct_christian:25,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:25.48,lng:85.95,code:"PG049469"},{name:"Ghogia",country:"India",lang:"Odia",rol3:"ory",pct_christian:25,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.15,lng:84.09,code:"PG049008"},{name:"Gangai",country:"India",lang:"Surjapuri",rol3:"sjp",pct_christian:25,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:25.69,lng:87.53,code:"PG049394"},{name:"Arakala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:18.11,lng:83.4,code:"PG049160"},{name:"Mala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:7615e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:16.36,lng:79.51,code:"PG041263"},{name:"Balmiki (Haryanvi)",country:"India",lang:"Haryanvi",rol3:"bgc",pct_christian:17.5,pop:189e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:29.19,lng:76.36,code:"PG048194"},{name:"Balmiki (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:17.5,pop:172e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.93,lng:78.08,code:"PG041289"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Balmiki (Pahari)",country:"India",lang:"Garhwali",rol3:"gbm",pct_christian:17.5,pop:131e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:30.26,lng:78.62,code:"PG048196"},{name:"Damor",country:"India",lang:"Wagdi",rol3:"wbr",pct_christian:17.5,pop:128e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:23.74,lng:73.85,code:"PG041876"},{name:"Lepcha",country:"India",lang:"Lepcha",rol3:"lep",pct_christian:17.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.34,lng:88.58,code:"PG041791"},{name:"Kachari",country:"India",lang:"Kachari",rol3:"xac",pct_christian:17.5,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.37,lng:95.08,code:"PG041505"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Chuhra",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:17.5,pop:59e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:31.92,lng:77.25,code:"PG049402"},{name:"Adi Minyong",country:"India",lang:"Adi",rol3:"adi",pct_christian:17.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:28.05,lng:94.43,code:"PG041950"},{name:"Nocte",country:"India",lang:"Naga, Nocte",rol3:"njb",pct_christian:17.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.07,lng:95.23,code:"PG042002"},{name:"Ojha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:46e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.74,lng:78.25,code:"PG041974"},{name:"Badhi",country:"India",lang:"Hindi",rol3:"hin",pct_christian:17.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:29.95,lng:77.55,code:"PG041480"},{name:"Goudu",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:17.71,lng:83.25,code:"PG042158"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Miji",country:"India",lang:"Miji",rol3:"sjl",pct_christian:17.5,pop:7e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.3,lng:92.4,code:"PG049709"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Bari (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.86,lng:84.8,code:"PG048204"},{name:"Babar",country:"India",lang:"Haroti",rol3:"hoj",pct_christian:17.5,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:25.43,lng:75.65,code:"PG048961"},{name:"Bayil Kammara",country:"India",lang:"Marwari (India)",rol3:"rwr",pct_christian:17.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:16.34,lng:76.08,code:"PG049856"},{name:"Candhai Maru",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.48,lng:83.97,code:"PG049648"},{name:"Khati (Haryanvi)",country:"India",lang:"Haryanvi",rol3:"bgc",pct_christian:17.5,pop:200,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:29.21,lng:76.34,code:"PG048299"},{name:"Madiga",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:9445e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:16.51,lng:79.06,code:"PG041253"},{name:"Mang",country:"India",lang:"Marathi",rol3:"mar",pct_christian:12.5,pop:304e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:20.38,lng:76.05,code:"PG041315"},{name:"Chakkiliyan",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1205e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.61,lng:77.71,code:"PG041373"},{name:"Saora",country:"India",lang:"Sora",rol3:"srb",pct_christian:12.5,pop:119e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:20.64,lng:83.56,code:"PG041407"},{name:"Nadua Shabar",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:659e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:19.9,lng:85.17,code:"PG049502"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Mannan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:145e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.8,lng:76.55,code:"PG041756"},{name:"Chakravar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:45e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:8.62,lng:77,code:"PG041956"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Domar",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:12.5,pop:27e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.45,lng:80.38,code:"PG049077"},{name:"Samban",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:24500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:8.7,lng:77.49,code:"PG041752"},{name:"Mehtar",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:2e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:16.22,lng:75.63,code:"PG042116"},{name:"Panchama",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:17.01,lng:81.79,code:"PG042086"},{name:"Palliyan",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:9.89,lng:77.09,code:"PG049215"},{name:"Puroik",country:"India",lang:"Adi",rol3:"adi",pct_christian:12.5,pop:4300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.43,lng:92.97,code:"PG049739"},{name:"Karen",country:"India",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:12.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.78,lng:92.86,code:"PG048894"},{name:"Padigarajulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:15.58,lng:79.51,code:"PG049165"},{name:"Kuda",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.83,lng:85.53,code:"PG049016"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Tharua",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:650,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.49,lng:86.93,code:"PG049031"},{name:"Gharrami",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:28.64,lng:77.12,code:"PG049392"},{name:"Dusadh",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:7.5,pop:691e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.23,lng:85.31,code:"PG041266"},{name:"Nadar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:6365e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:11.17,lng:77.82,code:"PG041309"},{name:"Oraon",country:"India",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:551e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:24.4,lng:86.87,code:"PG041304"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Vellalar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:308e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.78,lng:77.78,code:"PG041493"},{name:"Kondh",country:"India",lang:"Kuvi",rol3:"kxv",pct_christian:7.5,pop:219e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:18.49,lng:83.27,code:"PG041352"},{name:"Pano",country:"India",lang:"Odia",rol3:"ory",pct_christian:7.5,pop:1735e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.04,lng:85.14,code:"PG041345"},{name:"Chamar (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:7.5,pop:1275e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:26.07,lng:80.62,code:"PG046031"},{name:"Munda (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:1235e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:26.97,lng:94.06,code:"PG048248"},{name:"Santal (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:697e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:26.55,lng:92.86,code:"PG046151"},{name:"Goan",country:"India",lang:"Konkani",rol3:"knn",pct_christian:7.5,pop:661e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:17.38,lng:74.3,code:"PG041474"},{name:"Gamit",country:"India",lang:"Gamit",rol3:"gbl",pct_christian:7.5,pop:649e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:21.11,lng:73.62,code:"PG041462"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"},{name:"Karbi",country:"India",lang:"Karbi",rol3:"mjw",pct_christian:7.5,pop:537e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.62,lng:93.03,code:"PG041521"},{name:"Cheruman",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:467e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.61,lng:76.25,code:"PG041452"},{name:"Garasia",country:"India",lang:"Garasia, Adiwasi",rol3:"gas",pct_christian:7.5,pop:295e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:24.08,lng:73.13,code:"PG041610"},{name:"Amant",country:"India",lang:"Maithili",rol3:"mai",pct_christian:7.5,pop:244e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:25.04,lng:86.5,code:"PG042053"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Jamatia",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:7.5,pop:138e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:23.36,lng:91.61,code:"PG041812"},{name:"Ghanchi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:129e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:22.02,lng:73.03,code:"PG041585"},{name:"Tangsa",country:"India",lang:"Naga, Tangshang",rol3:"nst",pct_christian:7.5,pop:85500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.37,lng:96.37,code:"PG042146"},{name:"Bharathar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:81e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:8.94,lng:76.82,code:"PG049578"},{name:"Wancho",country:"India",lang:"Naga, Wancho",rol3:"nnp",pct_christian:7.5,pop:7e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.56,lng:95.05,code:"PG041877"},{name:"Halam",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:7.5,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:23.79,lng:91.46,code:"PG041914"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Asur",country:"India",lang:"Asuri",rol3:"asr",pct_christian:7.5,pop:52500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:23.18,lng:84.56,code:"PG042115"}]},Pakistan:{target_upg:782,target_pop:250773e3,target_top_langs:["Punjabi, Western","Pashto, Central","Sindhi","Saraiki"],target_top_religion:"Islam",neighbors:[{name:"Chandala",country:"Pakistan",lang:"Saraiki",rol3:"skr",pct_christian:35,pop:752e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:31.73,lng:73.95,code:"PG049353"},{name:"Goan",country:"Pakistan",lang:"Konkani, Goan",rol3:"gom",pct_christian:25,pop:80500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.89,lng:67.06,code:"PG006349"},{name:"Marwari, Northern",country:"Pakistan",lang:"Marwari (Pakistan)",rol3:"mve",pct_christian:7.5,pop:17e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:28.82,lng:71.72,code:"PG006386"},{name:"Han Chinese",country:"Pakistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:31.52,lng:74.34,code:"PG006354"},{name:"Gujarati",country:"Pakistan",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:146e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.88,lng:70.3,code:"PG006352"},{name:"Bhil, Meghwar",country:"Pakistan",lang:"Sindhi Bhil",rol3:"sbn",pct_christian:3.5,pop:73e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.75,lng:68.61,code:"PG006381"},{name:"British",country:"Pakistan",lang:"English",rol3:"eng",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:31.38,lng:72.73,code:"PG006336"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Bhil Mina",country:"India",lang:"Vaghri",rol3:"vgr",pct_christian:35,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:24.59,lng:73.72,code:"PG048977"},{name:"Nagbansi (Dogri)",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:35,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:33.05,lng:75.08,code:"PG048317"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Chuhra",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:17.5,pop:59e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.92,lng:77.25,code:"PG049402"},{name:"Romani, Vlax",country:"Belgium",lang:"Romani, Vlax",rol3:"rmy",pct_christian:17.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.85,lng:4.38,code:"PG000068"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Kela",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:20.46,lng:85.67,code:"PG042031"},{name:"Badhi",country:"India",lang:"Pahari-Potwari",rol3:"phr",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:31.86,lng:76.82,code:"PG041983"},{name:"Baiti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:23.24,lng:88.24,code:"PG042100"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Cheintz",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:7.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:34.09,lng:74.81,code:"PG049470"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Watal",country:"India",lang:"Kashmiri",rol3:"kas",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.11,lng:74.77,code:"PG049375"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Bhangi (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:699e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.15,lng:87.53,code:"PG048219"},{name:"Kora",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:279e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.29,lng:86.43,code:"PG041592"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Od",country:"India",lang:"Oadki",rol3:"odk",pct_christian:3.5,pop:166e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:29.22,lng:75.8,code:"PG041691"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Batwal",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:108e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:32.75,lng:74.8,code:"PG041740"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Romani, Vlax, Kalderash",country:"Argentina",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:61e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-34.65,lng:-58.56,code:"PG017346"},{name:"Koch",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.68,lng:88.93,code:"PG042084"},{name:"Kotal",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:42500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.42,lng:87.79,code:"PG041946"},{name:"Romani, Vlax",country:"Colombia",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:4.64,lng:-74.11,code:"PG016290"},{name:"Vaghri",country:"India",lang:"Vaghri",rol3:"vgr",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042168"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Doai",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.05,lng:88.57,code:"PG042134"},{name:"Saryara",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:19500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:33.44,lng:75.87,code:"PG042135"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Paharia",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.37,lng:86.02,code:"PG049049"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Jogi (Bagri)",country:"India",lang:"Bagri",rol3:"bgq",pct_christian:3.5,pop:6700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.06,lng:74.08,code:"PG048278"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Behera",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.44,code:"PG041569"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Dagi",country:"India",lang:"Pahari-Potwari",rol3:"phr",pct_christian:3.5,pop:3100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:32.6,lng:76.92,code:"PG049401"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Ratal",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:32.38,lng:75.51,code:"PG049072"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Bhat (Pahari)",country:"India",lang:"Pahari-Potwari",rol3:"phr",pct_christian:3.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.66,lng:77.43,code:"PG048019"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Arain (Dogri)",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:32.11,lng:75.88,code:"PG048186"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"}]},Indonesia:{target_upg:237,target_pop:200492130,target_top_langs:["Javanese","Sunda","Malay","Madura"],target_top_religion:"Islam",neighbors:[{name:"Ekagi",country:"Indonesia",lang:"Ekari",rol3:"ekg",pct_christian:75,pop:17e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.83,lng:136.16,code:"PG022913"},{name:"Damal",country:"Indonesia",lang:"Damal",rol3:"uhn",pct_christian:75,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.95,lng:137.47,code:"PG022898"},{name:"Waropen",country:"Indonesia",lang:"Waropen",rol3:"wrp",pct_christian:75,pop:9800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.32,lng:136.75,code:"PG023089"},{name:"Kayan River Kenyah",country:"Indonesia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:75,pop:9700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:1.79,lng:115.19,code:"PG022573"},{name:"Wandamen",country:"Indonesia",lang:"Wamesa",rol3:"wad",pct_christian:75,pop:7300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.19,lng:133.96,code:"PG023082"},{name:"Siagha-Yenimu",country:"Indonesia",lang:"Awyu, Edera",rol3:"awy",pct_christian:75,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.15,lng:139.79,code:"PG047129"},{name:"Sobei",country:"Indonesia",lang:"Sobei",rol3:"sob",pct_christian:75,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.9,lng:138.76,code:"PG023048"},{name:"Turu",country:"Indonesia",lang:"Iau",rol3:"tmu",pct_christian:75,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.23,lng:137.67,code:"PG023073"},{name:"Serui-Laut",country:"Indonesia",lang:"Serui-Laut",rol3:"seu",pct_christian:75,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.88,lng:136.25,code:"PG023046"},{name:"Kelinyau Kenyah",country:"Indonesia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:75,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:.97,lng:116.7,code:"PG022574"},{name:"Sekar",country:"Indonesia",lang:"Sekar",rol3:"skz",pct_christian:75,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.68,lng:132.45,code:"PG023040"},{name:"Awera",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:75,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.72,lng:136.08,code:"PG022455"},{name:"Mor",country:"Indonesia",lang:"Iha",rol3:"ihp",pct_christian:75,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.84,lng:132.97,code:"PG022996"},{name:"Dani, Western",country:"Indonesia",lang:"Dani, Western",rol3:"dnw",pct_christian:62.5,pop:266e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.77,lng:138.31,code:"PG022902"},{name:"Mamasa",country:"Indonesia",lang:"Mamasa",rol3:"mqj",pct_christian:62.5,pop:151e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.93,lng:119.31,code:"PG022838"},{name:"Dani, Mid Grand Valley",country:"Indonesia",lang:"Dani, Mid Grand Valley",rol3:"dnt",pct_christian:62.5,pop:77e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.09,lng:138.94,code:"PG022900"},{name:"Jamden",country:"Indonesia",lang:"Yamdena",rol3:"jmd",pct_christian:62.5,pop:56500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.72,lng:131.43,code:"PG022665"},{name:"Bolongan",country:"Indonesia",lang:"Bulungan",rol3:"blj",pct_christian:62.5,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:.38,lng:123.68,code:"PG022556"},{name:"Kedang",country:"Indonesia",lang:"Kedang",rol3:"ksx",pct_christian:62.5,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.25,lng:123.76,code:"PG022750"},{name:"Moni",country:"Indonesia",lang:"Moni",rol3:"mnz",pct_christian:62.5,pop:30500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.6,lng:136.94,code:"PG022995"},{name:"Kisar",country:"Indonesia",lang:"Kisar",rol3:"kje",pct_christian:62.5,pop:28500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.79,lng:126.33,code:"PG022683"},{name:"Dani, Lower Grand Valley",country:"Indonesia",lang:"Dani, Lower Grand Valley",rol3:"dni",pct_christian:62.5,pop:28500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.26,lng:138.95,code:"PG022899"},{name:"Dani, Upper Grand Valley",country:"Indonesia",lang:"Dani, Upper Grand Valley",rol3:"dna",pct_christian:62.5,pop:28500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.95,lng:138.86,code:"PG022901"},{name:"Meyah",country:"Indonesia",lang:"Meyah",rol3:"mej",pct_christian:62.5,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.07,lng:133.54,code:"PG022988"},{name:"Alune",country:"Indonesia",lang:"Alune",rol3:"alp",pct_christian:62.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.08,lng:128.41,code:"PG022622"},{name:"Galumpang",country:"Indonesia",lang:"Kalumpang",rol3:"kli",pct_christian:62.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.51,lng:119.48,code:"PG022810"},{name:"Tabaru",country:"Indonesia",lang:"Tabaru",rol3:"tby",pct_christian:62.5,pop:22500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:.75,lng:127.64,code:"PG022716"},{name:"Bantik",country:"Indonesia",lang:"Malay, Manado",rol3:"xmm",pct_christian:62.5,pop:2e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:1.5,lng:124.84,code:"PG022789"},{name:"Sougb",country:"Indonesia",lang:"Sougb",rol3:"mnx",pct_christian:62.5,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.52,lng:134.05,code:"PG022979"},{name:"Nduga",country:"Indonesia",lang:"Nduga",rol3:"ndx",pct_christian:62.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.03,lng:138.05,code:"PG023007"},{name:"Ngalum",country:"Indonesia",lang:"Ngalum",rol3:"szb",pct_christian:62.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.84,lng:140.6,code:"PG023008"},{name:"Asmat Casuarina",country:"Indonesia",lang:"Asmat, Casuarina Coast",rol3:"asc",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.18,lng:138.46,code:"PG022450"},{name:"Kupel",country:"Indonesia",lang:"Ketengban",rol3:"xte",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.36,lng:140.41,code:"PG022964"},{name:"Tehit",country:"Indonesia",lang:"Tehit",rol3:"kps",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.36,lng:131.98,code:"PG023068"},{name:"Kamoro",country:"Indonesia",lang:"Kamoro",rol3:"kgq",pct_christian:62.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.51,lng:136.26,code:"PG022935"},{name:"Leboni",country:"Indonesia",lang:"Rampi",rol3:"lje",pct_christian:62.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.13,lng:120.3,code:"PG022827"},{name:"Dobel",country:"Indonesia",lang:"Dobel",rol3:"kvo",pct_christian:62.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.2,lng:134.63,code:"PG022642"},{name:"Meninggo",country:"Indonesia",lang:"Moskona",rol3:"mtj",pct_christian:62.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.57,lng:133.18,code:"PG022990"},{name:"Southeast Marind",country:"Indonesia",lang:"Marind",rol3:"mrz",pct_christian:62.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.04,lng:140.21,code:"PG023051"},{name:"Selaru",country:"Indonesia",lang:"Selaru",rol3:"slu",pct_christian:62.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.2,lng:130.97,code:"PG022706"},{name:"Amberbaken",country:"Indonesia",lang:"Mpur",rol3:"akc",pct_christian:62.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-.73,lng:133.16,code:"PG022444"},{name:"Kulawi",country:"Indonesia",lang:"Moma",rol3:"myl",pct_christian:62.5,pop:9300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.64,lng:119.96,code:"PG022822"},{name:"Muyu North",country:"Indonesia",lang:"Muyu, North",rol3:"kti",pct_christian:62.5,pop:9300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.44,lng:140.79,code:"PG023016"},{name:"Iha",country:"Indonesia",lang:"Iha",rol3:"ihp",pct_christian:62.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.82,lng:132.32,code:"PG022922"},{name:"Wemale, North",country:"Indonesia",lang:"Wemale",rol3:"weo",pct_christian:62.5,pop:8900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.07,lng:128.83,code:"PG022694"},{name:"Seko Padang",country:"Indonesia",lang:"Seko Padang",rol3:"skx",pct_christian:62.5,pop:8100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.21,lng:119.85,code:"PG022864"},{name:"Saparua",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.55,lng:128.66,code:"PG022704"},{name:"Ansus",country:"Indonesia",lang:"Ansus",rol3:"and",pct_christian:62.5,pop:7500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.72,lng:135.78,code:"PG022446"},{name:"Awyu Asue",country:"Indonesia",lang:"Awyu, Asue",rol3:"psa",pct_christian:62.5,pop:7500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.09,lng:139.15,code:"PG022457"},{name:"Ndao",country:"Indonesia",lang:"Dhao",rol3:"nfa",pct_christian:62.5,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-10.82,lng:122.66,code:"PG022765"},{name:"Irahutu",country:"Indonesia",lang:"Irarutu",rol3:"irh",pct_christian:62.5,pop:6600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.05,lng:133.32,code:"PG022924"},{name:"Taliabo",country:"Indonesia",lang:"Taliabu",rol3:"tlv",pct_christian:62.5,pop:6e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.81,lng:125.36,code:"PG022717"},{name:"Nimboran",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.59,lng:140.2,code:"PG023010"},{name:"Tamagario",country:"Indonesia",lang:"Tamagario",rol3:"tcg",pct_christian:62.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.64,lng:138.92,code:"PG023056"},{name:"Tepera",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.46,lng:140.39,code:"PG023069"},{name:"Hupla",country:"Indonesia",lang:"Hupla",rol3:"hap",pct_christian:62.5,pop:5400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.35,lng:139.17,code:"PG022921"},{name:"Seluwasan",country:"Indonesia",lang:"Seluwasan",rol3:"sws",pct_christian:62.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.67,lng:131.23,code:"PG022707"},{name:"Sawuy",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:5100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-10.54,lng:121.85,code:"PG023038"},{name:"Babar Tenggara",country:"Indonesia",lang:"Babar, Southeast",rol3:"vbb",pct_christian:62.5,pop:5e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.96,lng:129.8,code:"PG022628"},{name:"Eipomek",country:"Indonesia",lang:"Lik",rol3:"eip",pct_christian:62.5,pop:4900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.36,lng:140.03,code:"PG022912"},{name:"Wambon",country:"Indonesia",lang:"Wambon",rol3:"wms",pct_christian:62.5,pop:4900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.47,lng:140.51,code:"PG023080"},{name:"Liana-Seti",country:"Indonesia",lang:"Liana-Seti",rol3:"ste",pct_christian:62.5,pop:4700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.12,lng:129.89,code:"PG022710"},{name:"Muyu South",country:"Indonesia",lang:"Muyu, South",rol3:"kts",pct_christian:62.5,pop:4600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.01,lng:140.84,code:"PG023052"},{name:"Kalabra",country:"Indonesia",lang:"Kalabra",rol3:"kzz",pct_christian:62.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.37,lng:131.65,code:"PG022932"},{name:"Nipsan",country:"Indonesia",lang:"Nipsan",rol3:"nps",pct_christian:62.5,pop:3700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.23,lng:139.04,code:"PG023012"},{name:"Seko, Central",country:"Indonesia",lang:"Seko Tengah",rol3:"sko",pct_christian:62.5,pop:3600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.49,lng:119.82,code:"PG022865"},{name:"Padoe",country:"Indonesia",lang:"Padoe",rol3:"pdo",pct_christian:62.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.46,lng:121.05,code:"PG022868"},{name:"Nafri",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.67,lng:140.74,code:"PG023003"},{name:"Pom",country:"Indonesia",lang:"Pom",rol3:"pmo",pct_christian:62.5,pop:3300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.65,lng:135.63,code:"PG023024"},{name:"Kurudu",country:"Indonesia",lang:"Kurudu",rol3:"kjr",pct_christian:62.5,pop:3200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.85,lng:137.01,code:"PG022966"},{name:"Yaosakor Asmat",country:"Indonesia",lang:"Asmat, Yaosakor",rol3:"asy",pct_christian:62.5,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.62,lng:138.54,code:"PG023099"},{name:"Mairasi",country:"Indonesia",lang:"Mairasi",rol3:"zrs",pct_christian:62.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.47,lng:134.02,code:"PG022976"},{name:"Marau",country:"Indonesia",lang:"Marau",rol3:"mvr",pct_christian:62.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.68,lng:135.79,code:"PG022982"},{name:"Somahai",country:"Indonesia",lang:"Momuna",rol3:"mqf",pct_christian:62.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5,lng:139.24,code:"PG023049"},{name:"Uria",country:"Indonesia",lang:"Orya",rol3:"ury",pct_christian:62.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.84,lng:139.74,code:"PG023074"},{name:"Inanwatan",country:"Indonesia",lang:"Suabo",rol3:"szp",pct_christian:62.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.07,lng:132.16,code:"PG022923"},{name:"Kemberano",country:"Indonesia",lang:"Kemberano",rol3:"bzp",pct_christian:62.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.37,lng:132.97,code:"PG022933"},{name:"Saberi",country:"Indonesia",lang:"Isirawa",rol3:"srl",pct_christian:62.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.82,lng:138.48,code:"PG023030"},{name:"Iria",country:"Indonesia",lang:"Kamberau",rol3:"irx",pct_christian:62.5,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.45,lng:133.58,code:"PG022926"},{name:"Riantana",country:"Indonesia",lang:"Riantana",rol3:"ran",pct_christian:62.5,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.68,lng:138.59,code:"PG023028"},{name:"Ninggrum",country:"Indonesia",lang:"Ninggerum",rol3:"nxr",pct_christian:62.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.3,lng:140.95,code:"PG023011"},{name:"Woi",country:"Indonesia",lang:"Woi",rol3:"wbw",pct_christian:62.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.64,lng:135.5,code:"PG023092"},{name:"Mekwei",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.51,lng:140.37,code:"PG022989"},{name:"Seget",country:"Indonesia",lang:"Moi Lemas",rol3:"sbg",pct_christian:62.5,pop:1900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.34,lng:131.17,code:"PG023039"},{name:"Demta",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.37,lng:140.16,code:"PG022906"},{name:"Berik",country:"Indonesia",lang:"Berik",rol3:"bkl",pct_christian:62.5,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.35,lng:138.86,code:"PG022467"},{name:"Bonfia",country:"Indonesia",lang:"Masiwang",rol3:"bnf",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.39,lng:130.57,code:"PG022636"},{name:"Davelor",country:"Indonesia",lang:"Dawera-Daweloor",rol3:"ddw",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.75,lng:130.04,code:"PG022641"},{name:"Dem",country:"Indonesia",lang:"Dem",rol3:"dem",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.73,lng:137.58,code:"PG022904"},{name:"Kamberataro",country:"Indonesia",lang:"Dla",rol3:"kbv",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.54,lng:140.96,code:"PG022934"},{name:"Kaugat",country:"Indonesia",lang:"Atohwaim",rol3:"aqm",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.28,lng:138.68,code:"PG022943"},{name:"Moraid",country:"Indonesia",lang:"Moraid",rol3:"msg",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.05,lng:131.88,code:"PG022998"},{name:"Ndom",country:"Indonesia",lang:"Ndom",rol3:"nqm",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.09,lng:138,code:"PG023006"},{name:"Sempan",country:"Indonesia",lang:"Sempan",rol3:"xse",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.04,lng:137.68,code:"PG023043"},{name:"Waris",country:"Indonesia",lang:"Waris",rol3:"wrs",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.24,lng:140.93,code:"PG023087"},{name:"Northern Asmat",country:"Indonesia",lang:"Asmat, North",rol3:"nks",pct_christian:62.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.69,lng:138.52,code:"PG023015"},{name:"Semimi",country:"Indonesia",lang:"Semimi",rol3:"etz",pct_christian:62.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.77,lng:134.45,code:"PG023042"},{name:"Panasuan",country:"Indonesia",lang:"Panasuan",rol3:"psn",pct_christian:62.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.26,lng:119.65,code:"PG022852"},{name:"Talondo",country:"Indonesia",lang:"Talondo’",rol3:"tln",pct_christian:62.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.51,lng:119.34,code:"PG022874"},{name:"Asienara, Buruwai",country:"Indonesia",lang:"Buruwai",rol3:"asi",pct_christian:62.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.59,lng:133.34,code:"PG022452"},{name:"Duvele",country:"Indonesia",lang:"Duvle",rol3:"duv",pct_christian:62.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.16,lng:137.97,code:"PG022911"},{name:"Taikat",country:"Indonesia",lang:"Taikat",rol3:"aos",pct_christian:62.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.86,lng:140.65,code:"PG023055"},{name:"Masela, West",country:"Indonesia",lang:"Masela, West",rol3:"mss",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.19,lng:129.83,code:"PG022735"},{name:"Kayupulau",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.54,lng:140.72,code:"PG022949"},{name:"Papuma",country:"Indonesia",lang:"Papuma",rol3:"ppm",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.74,lng:135.86,code:"PG023022"},{name:"Wanggom",country:"Indonesia",lang:"Wanggom",rol3:"wng",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.55,lng:140.17,code:"PG023083"},{name:"Dai",country:"Indonesia",lang:"Dai",rol3:"dij",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.55,lng:129.69,code:"PG022640"},{name:"Kaburi",country:"Indonesia",lang:"Kaburi",rol3:"uka",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.91,lng:132.48,code:"PG022929"},{name:"Kampung Baru",country:"Indonesia",lang:"Kais",rol3:"kzm",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.73,lng:132.29,code:"PG022936"},{name:"Puragi",country:"Indonesia",lang:"Puragi",rol3:"pru",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.94,lng:132.24,code:"PG023025"},{name:"Tanahmerah",country:"Indonesia",lang:"Tanahmerah",rol3:"tcm",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.56,lng:133.17,code:"PG023058"},{name:"Masela, East",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.14,lng:129.87,code:"PG022644"},{name:"Masela, Central",country:"Indonesia",lang:"Masela, West",rol3:"mss",pct_christian:62.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.18,lng:129.84,code:"PG022712"},{name:"Mawes",country:"Indonesia",lang:"Mawes",rol3:"mgk",pct_christian:62.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.36,lng:139.67,code:"PG022987"},{name:"Bonggo",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.31,lng:139.57,code:"PG022471"},{name:"Kaibubu",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.16,lng:128.22,code:"PG022667"},{name:"Keder",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.04,lng:139.05,code:"PG022950"},{name:"Bonefa",country:"Indonesia",lang:"Nisa",rol3:"njs",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.34,lng:137.23,code:"PG022470"},{name:"Konda",country:"Indonesia",lang:"Konda",rol3:"knd",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.56,lng:132.01,code:"PG022957"},{name:"Lepki",country:"Indonesia",lang:"Lepki",rol3:"lpe",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.13,lng:140.48,code:"PG022973"},{name:"Manem",country:"Indonesia",lang:"Manem",rol3:"jet",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.97,lng:140.9,code:"PG022978"},{name:"Yelmek",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.44,lng:139.16,code:"PG023105"},{name:"Kanum",country:"Indonesia",lang:"Kanum, Ngkâlmpw",rol3:"kcd",pct_christian:62.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.51,lng:140.84,code:"PG022938"},{name:"Tarunggare",country:"Indonesia",lang:"Tunggare",rol3:"trt",pct_christian:62.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.28,lng:135.6,code:"PG023063"},{name:"Kwansu",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.57,lng:140.29,code:"PG022968"},{name:"Papasena",country:"Indonesia",lang:"Papasena",rol3:"pas",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.8,lng:138.63,code:"PG023021"},{name:"Samarkena",country:"Indonesia",lang:"Samarokena",rol3:"tmj",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.83,lng:138.26,code:"PG023031"},{name:"Tarpia",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.37,lng:140.05,code:"PG023062"},{name:"Baburiwa",country:"Indonesia",lang:"Eritai",rol3:"ert",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.73,lng:138.12,code:"PG022459"},{name:"Serili",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.11,lng:129.91,code:"PG022708"},{name:"Kaure",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.24,lng:140.11,code:"PG022944"},{name:"Koneraw",country:"Indonesia",lang:"Koneraw",rol3:"kdw",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.36,lng:138.07,code:"PG022958"},{name:"Wakde",country:"Indonesia",lang:"Mo",rol3:"wkd",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.99,lng:138.99,code:"PG023078"},{name:"Sukubatong",country:"Indonesia",lang:"Kimki",rol3:"sbt",pct_christian:62.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.37,lng:140.91,code:"PG023054"},{name:"Taori-So",country:"Indonesia",lang:"Doutai",rol3:"tds",pct_christian:62.5,pop:475,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.31,lng:138.14,code:"PG023061"},{name:"Yotafa",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:475,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.58,lng:140.68,code:"PG023109"},{name:"Lorang",country:"Indonesia",lang:"Lorang",rol3:"lrn",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.3,lng:134.42,code:"PG022685"},{name:"Kirira",country:"Indonesia",lang:"Kirikiri",rol3:"kiy",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.18,lng:137.18,code:"PG022953"},{name:"Saweru",country:"Indonesia",lang:"Saweru",rol3:"swr",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.91,lng:136.29,code:"PG023037"},{name:"Yamna",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.1,lng:139.21,code:"PG023098"},{name:"Masimasi",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:425,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2,lng:139.14,code:"PG022984"},{name:"Sause",country:"Indonesia",lang:"Sause",rol3:"sao",pct_christian:62.5,pop:425,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.24,lng:139.62,code:"PG023036"},{name:"Biksi",country:"Indonesia",lang:"Yetfa",rol3:"yet",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.04,lng:140.79,code:"PG022469"},{name:"Karas",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.45,lng:132.68,code:"PG022940"},{name:"Sasawa",country:"Indonesia",lang:"Kwerba",rol3:"kwe",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.18,lng:138.47,code:"PG023034"},{name:"Yeretuar",country:"Indonesia",lang:"Yeretuar",rol3:"gop",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.04,lng:134.68,code:"PG023106"},{name:"Foau",country:"Indonesia",lang:"Foau",rol3:"flh",pct_christian:62.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.99,lng:139.29,code:"PG022917"},{name:"Kosare",country:"Indonesia",lang:"Kosare",rol3:"kiq",pct_christian:62.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.75,lng:140.22,code:"PG022962"},{name:"Rasawa",country:"Indonesia",lang:"Rasawa",rol3:"rac",pct_christian:62.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.35,lng:136.41,code:"PG023027"},{name:"Elseng",country:"Indonesia",lang:"Elseng",rol3:"mrf",pct_christian:62.5,pop:325,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.1,lng:140.39,code:"PG023000"}]},Bangladesh:{target_upg:276,target_pop:172467300,target_top_langs:["Bengali","Sylheti","Rohingya","Urdu"],target_top_religion:"Islam",neighbors:[{name:"Garo",country:"Bangladesh",lang:"Garo",rol3:"grt",pct_christian:62.5,pop:137e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.79,lng:90.47,code:"PG001167"},{name:"Pangkhu",country:"Bangladesh",lang:"Pangkhua",rol3:"pkh",pct_christian:62.5,pop:5400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.85,lng:92.38,code:"PG001197"},{name:"Santal",country:"Bangladesh",lang:"Santhali",rol3:"sat",pct_christian:45,pop:21e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.62,lng:88.79,code:"PG001203"},{name:"Migam",country:"Bangladesh",lang:"Megam",rol3:"mef",pct_christian:45,pop:8700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.09,lng:91,code:"PG001190"},{name:"Southern Chin",country:"Bangladesh",lang:"Chin, Asho",rol3:"csh",pct_christian:45,pop:4600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.96,lng:92.37,code:"PG001206"},{name:"Riang",country:"Bangladesh",lang:"Riang",rol3:"ria",pct_christian:45,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.56,lng:92.27,code:"PG001200"},{name:"Mahale",country:"Bangladesh",lang:"Santhali",rol3:"sat",pct_christian:35,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.62,lng:88.78,code:"PG001187"},{name:"Khumi Chin",country:"Bangladesh",lang:"Chin, Khumi",rol3:"cnk",pct_christian:35,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.8,lng:92.5,code:"PG001180"},{name:"Lushai",country:"Bangladesh",lang:"Mizo",rol3:"lus",pct_christian:35,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.67,lng:92.19,code:"PG001185"},{name:"Koch",country:"Bangladesh",lang:"Koch",rol3:"kdq",pct_christian:25,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.79,lng:89.7,code:"PG001181"},{name:"Munda",country:"Bangladesh",lang:"Mundari",rol3:"unr",pct_christian:25,pop:5800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:25.4,lng:88.78,code:"PG001192"},{name:"Oraon",country:"Bangladesh",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:89500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.86,lng:88.88,code:"PG001195"},{name:"Han Chinese",country:"Bangladesh",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:3500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.75,lng:90.4,code:"PG001172"},{name:"Marma",country:"Bangladesh",lang:"Marma",rol3:"rmz",pct_christian:3.5,pop:276e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:22.56,lng:92.24,code:"PG001189"},{name:"Tripuri",country:"Bangladesh",lang:"Kok Borok",rol3:"trp",pct_christian:3.5,pop:142e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.74,lng:91.28,code:"PG001215"},{name:"Manipuri",country:"Bangladesh",lang:"Meitei",rol3:"mni",pct_christian:3.5,pop:44e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.73,lng:91.74,code:"PG001188"},{name:"Mru",country:"Bangladesh",lang:"Mru",rol3:"mro",pct_christian:3.5,pop:35e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.71,lng:92.45,code:"PG001191"},{name:"Bawm",country:"Bangladesh",lang:"Chin, Bawm",rol3:"bgr",pct_christian:3.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.95,lng:92.46,code:"PG001153"},{name:"British",country:"Bangladesh",lang:"English",rol3:"eng",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:23.73,lng:90.42,code:"PG001159"},{name:"Hajong",country:"Bangladesh",lang:"Hajong",rol3:"haj",pct_christian:3.5,pop:9500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.11,lng:90.37,code:"PG001170"},{name:"Mara",country:"Bangladesh",lang:"Shendu",rol3:"shl",pct_christian:3.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.2,lng:92.54,code:"PG001204"},{name:"Ansari-Momin (Sadri)",country:"India",lang:"Sadri",rol3:"sck",pct_christian:75,pop:225,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.63,lng:85.55,code:"PG048700"},{name:"Pnar",country:"India",lang:"Pnar",rol3:"pbv",pct_christian:62.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.89,code:"PG049638"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Khasi",country:"India",lang:"Khasi",rol3:"kha",pct_christian:45,pop:1675e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:25.52,lng:91.79,code:"PG041380"},{name:"Santal (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:45,pop:176e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.8,lng:87.48,code:"PG046353"},{name:"Madgi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:76500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.17,lng:79.45,code:"PG041802"},{name:"Mech",country:"India",lang:"Assamese",rol3:"asm",pct_christian:25,pop:73500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.1,lng:92.43,code:"PG041900"},{name:"Godari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.69,lng:83.22,code:"PG049205"},{name:"Ghogia",country:"India",lang:"Odia",rol3:"ory",pct_christian:25,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.15,lng:84.09,code:"PG049008"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"Arakala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:375,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.11,lng:83.4,code:"PG049160"},{name:"Mala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:7615e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.36,lng:79.51,code:"PG041263"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Ojha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:46e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.74,lng:78.25,code:"PG041974"},{name:"Goudu",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.71,lng:83.25,code:"PG042158"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Bari (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.86,lng:84.8,code:"PG048204"},{name:"Candhai Maru",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.48,lng:83.97,code:"PG049648"},{name:"Madiga",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:9445e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.51,lng:79.06,code:"PG041253"},{name:"Chakkiliyan",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1205e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:77.71,code:"PG041373"},{name:"Nadua Shabar",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:659e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:19.9,lng:85.17,code:"PG049502"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Panchama",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:7800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.01,lng:81.79,code:"PG042086"},{name:"Padigarajulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.58,lng:79.51,code:"PG049165"},{name:"Kuda",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.83,lng:85.53,code:"PG049016"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Tharua",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.49,lng:86.93,code:"PG049031"},{name:"Dusadh",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:7.5,pop:691e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:25.23,lng:85.31,code:"PG041266"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Pano",country:"India",lang:"Odia",rol3:"ory",pct_christian:7.5,pop:1735e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:21.04,lng:85.14,code:"PG041345"},{name:"Munda (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:1235e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.97,lng:94.06,code:"PG048248"},{name:"Santal (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:697e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.55,lng:92.86,code:"PG046151"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Telugu",country:"Malaysia",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:137e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.62,code:"PG009356"},{name:"Ghanchi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:129e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.02,lng:73.03,code:"PG041585"},{name:"Mishmi",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:51500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.99,lng:96.59,code:"PG042163"},{name:"Badaik",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:47500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.23,lng:84.86,code:"PG042092"},{name:"Parhaiya",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.97,lng:84.3,code:"PG041928"},{name:"Mala Dasari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:15.53,lng:78,code:"PG041919"},{name:"Kela",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:20.46,lng:85.67,code:"PG042031"},{name:"Baiti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:23.24,lng:88.24,code:"PG042100"},{name:"Chhetri",country:"India",lang:"Nepali",rol3:"npi",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.34,lng:89.24,code:"PG041565"},{name:"Thoti",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:19.26,lng:79.01,code:"PG042167"},{name:"Bhandari",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.56,lng:73.13,code:"PG041414"},{name:"Ellamalawar",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.37,lng:76.49,code:"PG042033"},{name:"Gandla",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.61,lng:79.51,code:"PG041598"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Telugu",country:"Singapore",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:1.36,lng:103.82,code:"PG010724"},{name:"Gudugudupandi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.88,lng:78.56,code:"PG049883"},{name:"Banai",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.61,lng:90.3,code:"PG049560"},{name:"Patni Vankar",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:325,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.04,lng:72.6,code:"PG049948"},{name:"Yadava (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:8465e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.05,lng:84.06,code:"PG046313"},{name:"Chamar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:455e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.65,lng:84.13,code:"PG046025"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Mahyavanshi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:2305e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.73,lng:71.51,code:"PG041327"},{name:"Gujarati",country:"Pakistan",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:146e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.88,lng:70.3,code:"PG006352"},{name:"Ganda",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:128e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.6,lng:83.11,code:"PG041366"},{name:"Ho",country:"India",lang:"Ho",rol3:"hoc",pct_christian:3.5,pop:118e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:22.28,lng:85.76,code:"PG041399"},{name:"Gond (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:856e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.12,lng:83.68,code:"PG048258"},{name:"Kondara",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:702e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.46,lng:85.67,code:"PG041421"},{name:"Bhangi (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:699e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.15,lng:87.53,code:"PG048219"},{name:"Gond (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:3.5,pop:55e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.95,lng:94.05,code:"PG048259"},{name:"Adi Andhra",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:344e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.06,lng:81.75,code:"PG049197"},{name:"Lohara",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:324e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:25.14,lng:87.24,code:"PG041542"},{name:"Kora",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:279e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.29,lng:86.43,code:"PG041592"},{name:"Beda Jangam",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.11,lng:76.53,code:"PG041759"},{name:"Chakma",country:"India",lang:"Chakma",rol3:"ccp",pct_christian:3.5,pop:205e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Folk",lat:23.41,lng:92.17,code:"PG041710"},{name:"Mala Sale",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:169e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:19.26,lng:79.01,code:"PG041624"},{name:"Domban",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:163e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.35,lng:78.88,code:"PG042124"},{name:"Gurung",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:147e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.84,lng:90.63,code:"PG041693"},{name:"Nepali",country:"Bhutan",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.13,lng:89.79,code:"PG042388"},{name:"Beldar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:115e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.35,lng:83.71,code:"PG048209"},{name:"Kotia",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:104e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.9,lng:82.7,code:"PG041783"},{name:"Rajbhar",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:89e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.68,lng:80.47,code:"PG042085"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Bania, Brittial",country:"India",lang:"Assamese",rol3:"asm",pct_christian:3.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.14,lng:91.55,code:"PG041797"},{name:"Damai (Nepali)",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:66500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.66,lng:89.08,code:"PG041874"},{name:"Kunbi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.24,lng:70.76,code:"PG046238"},{name:"Mukha Dhora",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:56e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.9,lng:82.7,code:"PG042032"},{name:"Koch",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.68,lng:88.93,code:"PG042084"},{name:"Bagheti",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:20.46,lng:85.67,code:"PG041964"},{name:"Kotal",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:42500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.42,lng:87.79,code:"PG041946"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Omanatya",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:18.81,lng:82.76,code:"PG042004"},{name:"Mala Jangam",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:34e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.36,lng:76.78,code:"PG041898"},{name:"Burmese",country:"Malaysia",lang:"Burmese",rol3:"mya",pct_christian:3.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018483"},{name:"Binjhia",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22,lng:82.34,code:"PG042025"},{name:"Bariki",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:19.64,lng:84.68,code:"PG041881"},{name:"Bargunda",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.38,lng:75.65,code:"PG042022"},{name:"Sudugadu Siddha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:12.99,lng:76.11,code:"PG042143"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Gond (Sadri) ",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.17,lng:85,code:"PG048262"},{name:"Pap",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:23500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:21.21,lng:83.34,code:"PG042122"},{name:"Doai",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.05,lng:88.57,code:"PG042134"},{name:"Byagara",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.88,lng:78.22,code:"PG041825"},{name:"Konda Kapu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:18500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.19,lng:82.01,code:"PG041904"},{name:"Sarki",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.96,lng:88.33,code:"PG042059"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Telugu",country:"Sri Lanka",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:6.91,lng:79.9,code:"PG006443"},{name:"Pentia",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:18.81,lng:82.76,code:"PG042165"},{name:"Panka (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:19.21,lng:82.51,code:"PG049026"},{name:"Gorait",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.21,lng:85.33,code:"PG042169"},{name:"Jaggali",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:9700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:19.64,lng:84.68,code:"PG042152"},{name:"Paharia",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.37,lng:86.02,code:"PG049049"},{name:"Madiga Dasu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:7400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.39,lng:80.11,code:"PG049163"},{name:"Assamese",country:"Bhutan",lang:"Assamese",rol3:"asm",pct_christian:3.5,pop:7300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.87,lng:90.38,code:"PG001218"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Mali",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.9,lng:82.7,code:"PG047911"},{name:"Dakkala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.39,lng:83.94,code:"PG041849"},{name:"Behera",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.44,code:"PG041569"},{name:"Thogataveera Kshatriya",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:3100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.4,lng:77.89,code:"PG049753"},{name:"Kanda",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:3100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.9,lng:91.74,code:"PG049042"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Reddi Dora",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:2600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.68,lng:83.21,code:"PG049166"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"},{name:"Bhagotulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:450,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.89,lng:81.4,code:"PG049859"},{name:"Kusunda",country:"Nepal",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.17,lng:85.13,code:"PG049141"}]},China:{target_upg:444,target_pop:139759490,target_top_langs:["Chinese, Xiang","Chinese, Mandarin","Uyghur","Mongolian, Peripheral"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Ayi",country:"China",lang:"Lisu",rol3:"lis",pct_christian:62.5,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.14,lng:98.85,code:"PG006671"},{name:"Xiandao",country:"China",lang:"Achang",rol3:"acn",pct_christian:62.5,pop:200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.52,lng:97.88,code:"PG022125"},{name:"Hkauri",country:"China",lang:"Tibetan, Central",rol3:"bod",pct_christian:62.5,pop:40,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.55,lng:97.6,code:"PG022169"},{name:"Gha-Mu",country:"China",lang:"Miao, Small Flowery",rol3:"sfm",pct_christian:45,pop:171e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.53,lng:105.11,code:"PG006745"},{name:"Lipo, Eastern",country:"China",lang:"Lipo",rol3:"lpo",pct_christian:45,pop:139e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.84,lng:102.3,code:"PG007265"},{name:"Rawang",country:"China",lang:"Rawang",rol3:"raw",pct_christian:45,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.73,lng:98.31,code:"PG023113"},{name:"Lisu",country:"China",lang:"Lisu",rol3:"lis",pct_christian:35,pop:837e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.84,lng:99.07,code:"PG007267"},{name:"A-Hmao",country:"China",lang:"Miao, Large Flowery",rol3:"hmd",pct_christian:35,pop:644e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.11,lng:103.41,code:"PG006652"},{name:"Indonesian",country:"China",lang:"Indonesian",rol3:"ind",pct_christian:35,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.24,lng:110.15,code:"PG007207"},{name:"Maru",country:"China",lang:"Lhao Vo",rol3:"mhx",pct_christian:25,pop:31e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.33,lng:98.43,code:"PG007279"},{name:"Jingpo",country:"China",lang:"Jingpho",rol3:"kac",pct_christian:25,pop:29500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.41,lng:97.86,code:"PG007217"},{name:"Laka",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:25,pop:9700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.04,lng:102.28,code:"PG007241"},{name:"Lagou",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:25,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.23,lng:104.52,code:"PG007237"},{name:"Lashi",country:"China",lang:"Lacid",rol3:"lsi",pct_christian:25,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.06,lng:98.66,code:"PG007248"},{name:"Nasu, Eastern",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:17.5,pop:65e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.07,lng:102.78,code:"PG007326"},{name:"Nasu, Wusa",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:17.5,pop:412e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.27,lng:103.71,code:"PG007426"},{name:"Naluo",country:"China",lang:"Nuosu",rol3:"iii",pct_christian:17.5,pop:62500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.83,lng:102.4,code:"PG007323"},{name:"Minglang",country:"China",lang:"Sani",rol3:"ysn",pct_christian:17.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.77,lng:102.27,code:"PG007303"},{name:"Lawa",country:"China",lang:"Lawa, Western",rol3:"lcp",pct_christian:12.5,pop:67500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:23.84,lng:99.19,code:"PG007250"},{name:"Nu",country:"China",lang:"Nusu",rol3:"nuf",pct_christian:12.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.08,lng:98.94,code:"PG007338"},{name:"Guopu",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:12.5,pop:26500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.31,lng:104.13,code:"PG006753"},{name:"Bela",country:"China",lang:"Pela",rol3:"bxd",pct_christian:12.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:24.61,lng:98.31,code:"PG006684"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Han Chinese, Wu",country:"China",lang:"Chinese, Wu",rol3:"wuu",pct_christian:7.5,pop:9253e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:29.71,lng:119.11,code:"PG006806"},{name:"Han Chinese, Cantonese",country:"China",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6477e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.94,lng:111.32,code:"PG006808"},{name:"Han Chinese, Jinyu",country:"China",lang:"Chinese, Jinyu",rol3:"cjy",pct_christian:7.5,pop:6031e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:38.74,lng:111.39,code:"PG006801"},{name:"Han Chinese, Xiang",country:"China",lang:"Chinese, Xiang",rol3:"hsn",pct_christian:7.5,pop:423e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:27.97,lng:111.27,code:"PG006807"},{name:"Han Chinese, Gan",country:"China",lang:"Chinese, Gan",rol3:"gan",pct_christian:7.5,pop:4128e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:28.29,lng:115.02,code:"PG006798"},{name:"Han Chinese, Min Nan",country:"China",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:3555e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:23.42,lng:115.05,code:"PG006805"},{name:"Han Chinese, Min Bei",country:"China",lang:"Chinese, Min Bei",rol3:"mnp",pct_christian:7.5,pop:113e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:26.93,lng:117.92,code:"PG006803"},{name:"Han Chinese, Min Dong",country:"China",lang:"Chinese, Min Dong",rol3:"cdo",pct_christian:7.5,pop:106e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:26.54,lng:119.2,code:"PG006804"},{name:"Han Chinese, Puxian",country:"China",lang:"Chinese, Pu-Xian",rol3:"cpx",pct_christian:7.5,pop:31e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:25.37,lng:118.86,code:"PG007003"},{name:"Lahu",country:"China",lang:"Lahu",rol3:"lhu",pct_christian:7.5,pop:59e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.76,lng:99.83,code:"PG007238"},{name:"Wumeng",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:7.5,pop:61500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.46,lng:103.62,code:"PG022123"},{name:"Puwa",country:"China",lang:"Phowa, Hlepho",rol3:"yhl",pct_christian:7.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.46,lng:103.33,code:"PG022103"},{name:"Achang",country:"China",lang:"Achang",rol3:"acn",pct_christian:7.5,pop:38500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:24.64,lng:98.23,code:"PG006653"},{name:"Drung",country:"China",lang:"Drung",rol3:"duu",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.87,lng:98.32,code:"PG006724"},{name:"Depo",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:7.5,pop:9900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.39,lng:101.95,code:"PG006723"},{name:"Tuwo",country:"China",lang:"Lisu",rol3:"lis",pct_christian:7.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.05,lng:98.67,code:"PG007417"},{name:"Han Chinese, Huizhou",country:"China",lang:"Chinese, Huizhou",rol3:"czh",pct_christian:3.5,pop:542e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:29.62,lng:118.21,code:"PG006800"},{name:"Han Chinese, Min Zhong",country:"China",lang:"Chinese, Min Zhong",rol3:"czo",pct_christian:3.5,pop:963e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:26.14,lng:117.51,code:"PG006979"},{name:"Chuanlan",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:416e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.86,lng:105.07,code:"PG006713"},{name:"Han Chinese, Waxianghua",country:"China",lang:"Waxianghua",rol3:"wxa",pct_christian:3.5,pop:385e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:28.71,lng:110.24,code:"PG007076"},{name:"Xibe",country:"China",lang:"Xibe",rol3:"sjo",pct_christian:3.5,pop:151e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.78,lng:123.3,code:"PG007432"},{name:"Zaiwa",country:"China",lang:"Zaiwa",rol3:"atb",pct_christian:3.5,pop:142e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.36,lng:98.39,code:"PG007451"},{name:"Nosu, Tianba",country:"China",lang:"Nuosu",rol3:"iii",pct_christian:3.5,pop:138e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:28.87,lng:102.87,code:"PG022214"},{name:"Manchu",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:132e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:47.66,lng:124.56,code:"PG007275"},{name:"Naisu",country:"China",lang:"Yi, Wuding-Luquan",rol3:"ywq",pct_christian:3.5,pop:82e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:25.49,lng:101.86,code:"PG007322"},{name:"Maonan",country:"China",lang:"Maonan",rol3:"mmd",pct_christian:3.5,pop:79e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Daoism",lat:24.99,lng:108.02,code:"PG007278"},{name:"Michi",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:49e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.78,lng:102.18,code:"PG007300"},{name:"Muji, Southern",country:"China",lang:"Muji, Southern",rol3:"ymc",pct_christian:3.5,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.09,lng:103.31,code:"PG007319"},{name:"Neisu",country:"China",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:28e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.17,lng:100.64,code:"PG007334"},{name:"Sansu",country:"China",lang:"Hlersu",rol3:"hle",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.55,lng:102.25,code:"PG007382"},{name:"Laopang",country:"China",lang:"Laopang",rol3:"lbg",pct_christian:3.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:23.78,lng:99.39,code:"PG007247"},{name:"Achang, Husa",country:"China",lang:"Achang",rol3:"acn",pct_christian:3.5,pop:8500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Mahayana",lat:24.45,lng:97.87,code:"PG006654"},{name:"Gouzou",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:3.5,pop:6400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:26.92,lng:104.5,code:"PG006750"},{name:"Meng",country:"China",lang:"Hani",rol3:"hni",pct_christian:3.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.89,lng:101.81,code:"PG007280"},{name:"Zauzou",country:"China",lang:"Zauzou",rol3:"zal",pct_christian:3.5,pop:3800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:26.37,lng:99.01,code:"PG007453"},{name:"Naxi, Northern",country:"China",lang:"Naxi",rol3:"nxq",pct_christian:3.5,pop:3500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:28.78,lng:98.73,code:"PG022209"},{name:"Duoluo",country:"China",lang:"Duoluo",rol3:"giw",pct_christian:3.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:25.71,lng:105.63,code:"PG022159"},{name:"Fuma",country:"China",lang:"Hlai",rol3:"lic",pct_christian:3.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:19.33,lng:108.75,code:"PG006737"},{name:"Thmaun",country:"Cambodia",lang:"Undetermined",rol3:"und",pct_christian:45,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.12,lng:106.43,code:"PG022376"},{name:"Hmong",country:"Vietnam",lang:"Hmong Daw",rol3:"mww",pct_christian:35,pop:133e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.86,lng:103.59,code:"PG011142"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Rukai",country:"Taiwan",lang:"Rukai",rol3:"dru",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.82,lng:120.83,code:"PG007516"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Korean",country:"Argentina",lang:"Korean",rol3:"kor",pct_christian:25,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG046918"},{name:"Korean",country:"Singapore",lang:"Korean",rol3:"kor",pct_christian:25,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:1.36,lng:103.82,code:"PG010710"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"Korean",country:"Taiwan",lang:"Korean",rol3:"kor",pct_christian:25,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.63,lng:120.33,code:"PG007526"},{name:"Lanten",country:"Laos",lang:"Kim Mun",rol3:"mji",pct_christian:25,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:21.92,lng:101.91,code:"PG020923"},{name:"Korean",country:"Northern Mariana Islands",lang:"Korean",rol3:"kor",pct_christian:25,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:15.91,lng:145.61,code:"PG050228"},{name:"Korean",country:"Australia",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:167e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-33.85,lng:151.03,code:"PG021625"},{name:"Korean",country:"Canada",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:46.93,lng:-92.67,code:"PG043424"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Adi Minyong",country:"India",lang:"Adi",rol3:"adi",pct_christian:17.5,pop:5e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:28.05,lng:94.43,code:"PG041950"},{name:"Korean",country:"United Kingdom",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.5,lng:-.17,code:"PG000650"},{name:"Korean",country:"New Zealand",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-36.89,lng:174.78,code:"PG047592"},{name:"Korean",country:"Hong Kong",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.38,lng:114.13,code:"PG050601"},{name:"Korean",country:"Paraguay",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.3,lng:-57.56,code:"PG017246"},{name:"Korean",country:"Guam",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.44,lng:144.78,code:"PG050301"},{name:"Korean",country:"Dominican Republic",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:18.48,lng:-69.91,code:"PG022409"},{name:"Korean",country:"South Korea",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:5025e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.38,lng:127.82,code:"PG048088"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Nikkei, Brazilian",country:"Japan",lang:"Japanese",rol3:"jpn",pct_christian:12.5,pop:104e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:35.13,lng:136.92,code:"PG049262"},{name:"Korean",country:"Mozambique",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.89,lng:32.57,code:"PG015382"},{name:"Korean",country:"Madagascar",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-18.91,lng:47.53,code:"PG015310"},{name:"Blang",country:"Myanmar",lang:"Blang",rol3:"blr",pct_christian:12.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:21.5,lng:100.17,code:"PG022041"},{name:"Hsifan",country:"Myanmar",lang:"Tibetan, Central",rol3:"bod",pct_christian:12.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Tibetan",lat:27.24,lng:97.64,code:"PG009445"},{name:"Puroik",country:"India",lang:"Adi",rol3:"adi",pct_christian:12.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:27.43,lng:92.97,code:"PG049739"},{name:"Korean",country:"Honduras",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:14.08,lng:-87.2,code:"PG024788"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Han Chinese, Cantonese",country:"Hong Kong",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6255e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050587"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Han Chinese, Cantonese",country:"Malaysia",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:19e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.65,lng:101.56,code:"PG046594"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Khmu, Ou",country:"Laos",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:817e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:102.58,code:"PG020913"},{name:"Han Chinese, Cantonese",country:"Vietnam",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:784e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.03,lng:105.82,code:"PG046444"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Han Chinese, Cantonese",country:"Macao",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:663e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.16,lng:113.56,code:"PG050584"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Han Chinese, Cantonese",country:"Singapore",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:511e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020725"},{name:"Han Chinese, Mandarin",country:"Singapore",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020728"},{name:"Han Chinese",country:"Brazil",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-23.17,lng:-45.54,code:"PG016864"},{name:"Han Chinese, Mandarin",country:"United Arab Emirates",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:202e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.67,lng:55.14,code:"PG049240"},{name:"Han Chinese",country:"United Kingdom",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:196e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:51.5,lng:-.17,code:"PG043796"},{name:"Han Chinese, Mandarin",country:"North Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:184e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:39,lng:125.92,code:"PG007584"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Han Chinese",country:"France",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:172e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:48.2,lng:2.3,code:"PG023131"},{name:"Han Chinese, Mandarin",country:"Hong Kong",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:163e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050605"},{name:"Han Chinese, Cantonese",country:"Peru",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:117e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-12.05,lng:-77.02,code:"PG017533"},{name:"Han Chinese, Mandarin",country:"Saudi Arabia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.68,lng:46.74,code:"PG049246"},{name:"Han Chinese",country:"Tanzania",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:106e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-6.83,lng:39.25,code:"PG014935"},{name:"Han Chinese",country:"Italy",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:44.22,lng:10.5,code:"PG000330"},{name:"Han Chinese",country:"South Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:94500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.58,lng:127.64,code:"PG007589"},{name:"Han Chinese, Mandarin",country:"Tajikistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.57,lng:68.77,code:"PG049245"},{name:"Han Chinese",country:"Madagascar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:78500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-18.91,lng:47.53,code:"PG015301"},{name:"Han Chinese",country:"Panama",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:8.5,lng:-82.42,code:"PG024831"},{name:"Han Chinese, Mandarin",country:"Egypt",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:30.05,lng:31.32,code:"PG050167"},{name:"Han Chinese, Mandarin",country:"Russian Federation",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:62e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.07,lng:119.29,code:"PG048686"},{name:"Han Chinese",country:"Pakistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:6e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:31.52,lng:74.34,code:"PG006354"},{name:"Han Chinese",country:"Argentina",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:52500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-34.65,lng:-58.56,code:"PG042923"},{name:"Han Chinese",country:"Germany",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.84,lng:11.14,code:"PG023132"},{name:"Korean",country:"Brazil",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:48500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-23.57,lng:-46.57,code:"PG016974"},{name:"Korean",country:"Germany",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.12,lng:8.67,code:"PG000249"},{name:"Han Chinese",country:"Trinidad and Tobago",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:44500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.68,lng:-61.38,code:"PG016447"},{name:"Han Chinese",country:"Cuba",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:23.07,lng:-82.32,code:"PG016302"},{name:"Iu Mien",country:"United States",lang:"Iu Mien",rol3:"ium",pct_christian:7.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.75,lng:-111.78,code:"PG043283"},{name:"Han Chinese",country:"Zambia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:-15.4,lng:28.31,code:"PG015577"},{name:"Han Chinese",country:"Laos",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:17.97,lng:102.64,code:"PG009111"},{name:"Han Chinese",country:"Netherlands",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:52.33,lng:4.86,code:"PG023133"},{name:"Han Chinese, Cantonese",country:"Venezuela",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.48,lng:-66.88,code:"PG016472"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Han Chinese",country:"Greece",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.01,lng:23.77,code:"PG048769"},{name:"Han Chinese, Mandarin",country:"Venezuela",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.48,lng:-66.88,code:"PG016471"},{name:"Han Chinese",country:"Mexico",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:20.65,lng:-101.28,code:"PG024949"},{name:"Han Chinese",country:"Portugal",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:38.77,lng:-9.25,code:"PG000483"},{name:"Han Chinese, Mandarin",country:"Belgium",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.85,lng:4.38,code:"PG000057"},{name:"Han Chinese",country:"Mozambique",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:21e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:-25.92,lng:32.59,code:"PG015380"},{name:"Korean",country:"Kyrgyzstan",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:19500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:42.88,lng:74.63,code:"PG024358"},{name:"Korean",country:"Iran",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:17500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.7,lng:51.38,code:"PG024174"},{name:"Han Chinese, Mandarin",country:"Hungary",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:47.48,lng:19.11,code:"PG042235"}]},Japan:{target_upg:32,target_pop:120582800,target_top_langs:["Japanese","Okinawan, Central","Japanese Sign Language","Burmese"],target_top_religion:"Buddhism",neighbors:[{name:"Nikkei, Brazilian",country:"Japan",lang:"Japanese",rol3:"jpn",pct_christian:12.5,pop:104e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:35.13,lng:136.92,code:"PG049262"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Miyako-Irabu",country:"Japan",lang:"Japanese",rol3:"jpn",pct_christian:3.5,pop:65500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:24.77,lng:125.33,code:"PG047515"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Indian - Christian",country:"South Africa",lang:"English",rol3:"eng",pct_christian:62.5,pop:31e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-29.84,lng:30.93,code:"PG048045"},{name:"Euronesian",country:"Samoa",lang:"English",rol3:"eng",pct_christian:62.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.85,lng:-171.8,code:"PG018323"},{name:"British",country:"Tanzania",lang:"English",rol3:"eng",pct_christian:62.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-6.83,lng:39.25,code:"PG014914"},{name:"British",country:"Zimbabwe",lang:"English",rol3:"eng",pct_christian:62.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-17.83,lng:31.03,code:"PG015650"},{name:"Dominican",country:"Dominican Republic",lang:"Spanish",rol3:"spa",pct_christian:45,pop:109e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.9,lng:-70.49,code:"PG016313"},{name:"American",country:"Singapore",lang:"English",rol3:"eng",pct_christian:45,pop:9800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.36,lng:103.82,code:"PG018447"},{name:"British",country:"Barbados",lang:"English",rol3:"eng",pct_christian:45,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:13.12,lng:-59.6,code:"PG016197"},{name:"British",country:"Venezuela",lang:"English",rol3:"eng",pct_christian:45,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:10.48,lng:-66.88,code:"PG016461"},{name:"British",country:"Botswana",lang:"English",rol3:"eng",pct_christian:45,pop:7100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-24.65,lng:25.91,code:"PG015217"},{name:"Pitcairn Islander",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:45,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018502"},{name:"American",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:95500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.52,lng:142.46,code:"PG020268"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Caribbean Hindi",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:4.91,lng:-52.3,code:"PG022284"},{name:"Southwest Aborigine Creol",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-32.54,lng:115.99,code:"PG008068"},{name:"Anglo-Australian",country:"Singapore",lang:"English",rol3:"eng",pct_christian:35,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:1.36,lng:103.82,code:"PG010684"},{name:"American",country:"Iceland",lang:"English",rol3:"eng",pct_christian:35,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.14,lng:-21.89,code:"PG000293"},{name:"American",country:"Marshall Islands",lang:"English",rol3:"eng",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:7.1,lng:171.22,code:"PG009376"},{name:"Itene",country:"Bolivia",lang:"Spanish",rol3:"spa",pct_christian:35,pop:70,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-11.89,lng:-65.09,code:"PG046959"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Guatemalan",country:"Guatemala",lang:"Spanish",rol3:"spa",pct_christian:25,pop:1015e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.7,lng:-90.36,code:"PG024712"},{name:"El Salvadoran",country:"El Salvador",lang:"Spanish",rol3:"spa",pct_christian:25,pop:61e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.73,lng:-88.87,code:"PG024979"},{name:"Detribalized Aborigine",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:58e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG007863"},{name:"Jamaican",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:33e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047381"},{name:"Barbadian",country:"Barbados",lang:"English",rol3:"eng",pct_christian:25,pop:269e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.17,lng:-59.56,code:"PG016195"},{name:"American",country:"Panama",lang:"English",rol3:"eng",pct_christian:25,pop:186e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.06,lng:-79.38,code:"PG050309"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Barbadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047394"},{name:"Korean",country:"Argentina",lang:"Korean",rol3:"kor",pct_christian:25,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG046918"},{name:"Guatemalan",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:25,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047378"},{name:"Korean",country:"Singapore",lang:"Korean",rol3:"kor",pct_christian:25,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:1.36,lng:103.82,code:"PG010710"},{name:"Bay Islands Creole",country:"Honduras",lang:"English",rol3:"eng",pct_christian:25,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.34,lng:-86.39,code:"PG024758"},{name:"American",country:"Virgin Islands",lang:"English",rol3:"eng",pct_christian:25,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.96,lng:-64.8,code:"PG050296"},{name:"American",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:25,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018513"},{name:"American",country:"Guam",lang:"English",rol3:"eng",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.44,lng:144.78,code:"PG050299"},{name:"Korean",country:"Taiwan",lang:"Korean",rol3:"kor",pct_christian:25,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.63,lng:120.33,code:"PG007526"},{name:"Mixtec, Southeastern Nochixtlan",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.21,lng:-97.09,code:"PG039145"},{name:"American",country:"Fiji",lang:"English",rol3:"eng",pct_christian:25,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-18.13,lng:178.44,code:"PG018421"},{name:"American",country:"Greenland",lang:"English",rol3:"eng",pct_christian:25,pop:3400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.18,lng:-51.7,code:"PG000286"},{name:"Itza",country:"Guatemala",lang:"Spanish",rol3:"spa",pct_christian:25,pop:3200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:17,lng:-89.88,code:"PG024726"},{name:"Zapotec, Southeastern Ixtlan",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:2900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.23,lng:-96.49,code:"PG039219"},{name:"Maori",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050518"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Wik-Ngathan",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.84,lng:141.57,code:"PG008118"},{name:"Polynesian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050519"},{name:"Korean",country:"Northern Mariana Islands",lang:"Korean",rol3:"kor",pct_christian:25,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:15.91,lng:145.61,code:"PG050228"},{name:"Tektiteko",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.49,lng:-92.13,code:"PG039080"},{name:"Yankuntatjara",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-27.14,lng:133.83,code:"PG008134"},{name:"Bora",country:"Peru",lang:"Spanish",rol3:"spa",pct_christian:25,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-3.22,lng:-71.98,code:"PG017505"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"Mocho",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:225,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.27,lng:-92.35,code:"PG039159"},{name:"Mixtec, Sindihui",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:80,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.01,lng:-97.37,code:"PG039143"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Honduran",country:"Honduras",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:9865e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:14.82,lng:-86.62,code:"PG042459"},{name:"Panamanian",country:"Panama",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:2945e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.12,lng:-79.12,code:"PG024843"},{name:"Korean",country:"Australia",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:167e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-33.85,lng:151.03,code:"PG021625"},{name:"Korean",country:"Canada",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:46.93,lng:-92.67,code:"PG043424"},{name:"Salvadoran",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:70500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047373"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Bermudians",country:"Bermuda",lang:"English",rol3:"eng",pct_christian:17.5,pop:66e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.31,lng:-64.77,code:"PG016210"},{name:"Caymanian",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:17.5,pop:60500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:19.42,lng:-80.89,code:"PG016216"},{name:"Korean",country:"United Kingdom",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.5,lng:-.17,code:"PG000650"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Korean",country:"New Zealand",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-36.89,lng:174.78,code:"PG047592"},{name:"Kenyan",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:43.83,lng:-79.46,code:"PG047469"},{name:"American",country:"Haiti",lang:"English",rol3:"eng",pct_christian:17.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.55,lng:-72.32,code:"PG016382"},{name:"Mam",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:17500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.4,lng:-92.35,code:"PG039078"},{name:"Ghanaian",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:49.22,lng:-122.99,code:"PG047407"},{name:"Nicaraguan",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047377"},{name:"Honduran",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047379"},{name:"Kanjobal",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.63,lng:-89.7,code:"PG039087"},{name:"Korean",country:"Hong Kong",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.38,lng:114.13,code:"PG050601"},{name:"Korean",country:"Paraguay",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.3,lng:-57.56,code:"PG017246"},{name:"Zoque, Chimalapa",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:6400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.88,lng:-94.4,code:"PG039236"},{name:"Panamanian",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047376"},{name:"Zapotec, Southern Rincon",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.35,lng:-96.27,code:"PG039223"},{name:"Korean",country:"Guam",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.44,lng:144.78,code:"PG050301"},{name:"Passamaquoddy",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.36,lng:-67.46,code:"PG043437"},{name:"Tlingit",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:60.48,lng:-132.29,code:"PG043489"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Zapotec, San Baltazar Loxicha",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.05,lng:-96.76,code:"PG039195"},{name:"Huave, San Francisco del Mar",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.24,lng:-94.49,code:"PG039082"},{name:"Onondaga",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.05,lng:-80.11,code:"PG043451"},{name:"Korean",country:"Dominican Republic",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:18.48,lng:-69.91,code:"PG022409"},{name:"Popti",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.89,lng:-91.99,code:"PG039086"},{name:"Popoluca, Texistepec",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.78,lng:-94.8,code:"PG048643"},{name:"Zapotec, Southern Rincon",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:32.36,lng:-109.45,code:"PG049308"},{name:"K’ómoks",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-124.96,code:"PG043374"},{name:"Rembarunga",country:"Australia",lang:"English",rol3:"eng",pct_christian:17.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-12.96,lng:134.58,code:"PG008058"},{name:"Korean",country:"South Korea",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:5025e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.38,lng:127.82,code:"PG048088"},{name:"Chilean",country:"Chile",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:1776e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-32.83,lng:-71.15,code:"PG017439"},{name:"Puerto Rican",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:4035e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:35.35,lng:-95.96,code:"PG043603"},{name:"Irish, Northern",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:166e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:54.61,lng:-6.69,code:"PG022219"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Afro-Trinidadian",country:"Trinidad and Tobago",lang:"English",rol3:"eng",pct_christian:12.5,pop:725e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.42,lng:-61.3,code:"PG016442"},{name:"Metis",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:704e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.13,lng:-97.19,code:"PG043455"},{name:"American",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:402e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.97,lng:-107.63,code:"PG043500"},{name:"English Caribbean",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:394e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.73,lng:-90.31,code:"PG049256"},{name:"Han Chinese",country:"Singapore",lang:"English",rol3:"eng",pct_christian:12.5,pop:358e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020724"},{name:"Chiquitano",country:"Bolivia",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:211e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-15.91,lng:-61.84,code:"PG017398"},{name:"Detribalized Amerindian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.64,lng:-115.72,code:"PG043384"},{name:"Colombian",country:"Venezuela",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:189e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.01,lng:-66.66,code:"PG046909"},{name:"Afro-Argentine",country:"Argentina",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:153e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-34.65,lng:-58.56,code:"PG042890"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Sub-Saharan Africans, English-Speaking",country:"Belgium",lang:"English",rol3:"eng",pct_christian:12.5,pop:123e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.85,lng:4.38,code:"PG047833"},{name:"Tojolabal",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:92500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.4,lng:-91.85,code:"PG039160"},{name:"Chontal, Tabasco",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.1,lng:-92.61,code:"PG039061"},{name:"Nahuatl, Isthmus",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:78500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.12,lng:-94.34,code:"PG048653"},{name:"Fijian",country:"Australia",lang:"English",rol3:"eng",pct_christian:12.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG050451"},{name:"Cree, Woodland",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.6,lng:-106.15,code:"PG043378"},{name:"Dominican",country:"Dominica",lang:"English",rol3:"eng",pct_christian:12.5,pop:67e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.43,lng:-61.35,code:"PG016306"},{name:"Chilean",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047386"},{name:"Belizean",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:43500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:33.94,lng:-118.12,code:"PG047184"},{name:"Korean",country:"Mozambique",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.89,lng:32.57,code:"PG015382"},{name:"Welsh",country:"Argentina",lang:"English",rol3:"eng",pct_christian:12.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-43.27,lng:-65.44,code:"PG017376"},{name:"Chilean",country:"Sweden",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:58.15,lng:15.03,code:"PG000547"},{name:"Mixe, Isthmus",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.08,lng:-95.14,code:"PG039098"},{name:"Mohawk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:44.18,lng:-77.77,code:"PG043441"},{name:"Dominican",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047374"},{name:"Barbadian",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.5,lng:-.17,code:"PG048436"},{name:"Chinantec, Central",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.81,lng:-96.26,code:"PG039065"},{name:"Korean",country:"Madagascar",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-18.91,lng:47.53,code:"PG015310"},{name:"Euronesian",country:"Fiji",lang:"English",rol3:"eng",pct_christian:12.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-17.95,lng:178.24,code:"PG018419"},{name:"Spaniard",country:"Ireland",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:53.39,lng:-6.28,code:"PG000303"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"American",country:"Costa Rica",lang:"English",rol3:"eng",pct_christian:12.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:10.22,lng:-85.24,code:"PG025025"},{name:"Popoluca, Sayula",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.73,lng:-94.95,code:"PG048641"},{name:"Mixe, Coatlan",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:9100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.79,lng:-95.6,code:"PG039097"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Nahuatl, Isthmus",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:31.63,lng:-89.16,code:"PG049280"},{name:"Tsimshian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.42,lng:-130.3,code:"PG043490"},{name:"Lillooet",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.68,lng:-121.92,code:"PG043432"},{name:"Zapotec, Guevea de Humboldt",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.73,lng:-95.33,code:"PG039189"},{name:"Latin American",country:"Curacao",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:12.19,lng:-68.97,code:"PG023181"},{name:"Nakota (Assiniboine)",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:52.17,lng:-107.03,code:"PG043354"},{name:"Kwakwakaʼwakw",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.72,lng:-127.5,code:"PG043427"},{name:"Zapotec, Lachiguiri",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:5900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.61,lng:-95.5,code:"PG039196"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Dakota",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:5500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.52,lng:-102.88,code:"PG043381"},{name:"American",country:"Micronesia",lang:"English",rol3:"eng",pct_christian:12.5,pop:5400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.95,lng:158.2,code:"PG018394"},{name:"Straits Salish",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.49,lng:-123.46,code:"PG043479"},{name:"Bahamian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.9,lng:-79.58,code:"PG050486"},{name:"Chuj",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.06,lng:-91.88,code:"PG039062"},{name:"Zapotec, Xanaguia",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.1,lng:-96.24,code:"PG039207"}]},Iran:{target_upg:85,target_pop:91827910,target_top_langs:["Persian, Iranian","Azerbaijani, South","Kurdish, Southern","Gilaki"],target_top_religion:"Islam",neighbors:[{name:"Korean",country:"Iran",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:17500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:35.7,lng:51.38,code:"PG024174"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Romani, Balkan",country:"Italy",lang:"Romani, Balkan",rol3:"rmn",pct_christian:62.5,pop:2500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:45.54,lng:9.19,code:"PG000312"},{name:"Romani, Balkan",country:"Bulgaria",lang:"Romani, Balkan",rol3:"rmn",pct_christian:7.5,pop:267e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:42.86,lng:23.79,code:"PG000737"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Romani, Balkan",country:"France",lang:"Romani, Balkan",rol3:"rmn",pct_christian:3.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.84,lng:2.35,code:"PG000134"}]},"Türkiye (Turkey)":{target_upg:63,target_pop:86815200,target_top_langs:["Turkish","Kurdish, Northern","Arabic, Levantine","Zazaki, Southern"],target_top_religion:"Islam",neighbors:[{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Han Chinese",country:"Turkiye",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:44500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.04,lng:28.87,code:"PG024558"},{name:"Romani, Balkan",country:"Italy",lang:"Romani, Balkan",rol3:"rmn",pct_christian:62.5,pop:2500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:45.54,lng:9.19,code:"PG000312"},{name:"Romani, Balkan",country:"Bulgaria",lang:"Romani, Balkan",rol3:"rmn",pct_christian:7.5,pop:267e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:42.86,lng:23.79,code:"PG000737"},{name:"Armenian",country:"Canada",lang:"Armenian, Western",rol3:"hyw",pct_christian:7.5,pop:71e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.83,lng:-77.31,code:"PG043353"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Greek",country:"Czech Republic",lang:"Greek",rol3:"ell",pct_christian:7.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.82,lng:17.98,code:"PG048862"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"},{name:"Romani, Balkan",country:"France",lang:"Romani, Balkan",rol3:"rmn",pct_christian:3.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.84,lng:2.35,code:"PG000134"}]},Egypt:{target_upg:34,target_pop:82788900,target_top_langs:["Arabic, Egyptian","Arabic, Sudanese","Arabic, Algerian","Arabic, Moroccan"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Egypt",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:30.05,lng:31.32,code:"PG050167"},{name:"Amhara",country:"Canada",lang:"Amharic",rol3:"amh",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG047403"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Ethiopian, Oromo",country:"United States",lang:"Oromo, West Central",rol3:"gaz",pct_christian:3.5,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.9,lng:-77.19,code:"PG047338"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},Nigeria:{target_upg:52,target_pop:72422800,target_top_langs:["Hausa","Fulfulde, Nigerian","Kanuri, Yerwa","Fulfulde, Adamawa"],target_top_religion:"Islam",neighbors:[{name:"Rumaya",country:"Nigeria",lang:"Mala (Nigeria)",rol3:"ruy",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.42,lng:8.67,code:"PG014094"},{name:"Janji",country:"Nigeria",lang:"Janji",rol3:"jni",pct_christian:62.5,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.12,lng:8.62,code:"PG013870"},{name:"Kagoma",country:"Nigeria",lang:"Gyong",rol3:"kdm",pct_christian:45,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.26,lng:8.19,code:"PG013889"},{name:"Kaivi",country:"Nigeria",lang:"Kaivi",rol3:"kce",pct_christian:45,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.41,lng:8.67,code:"PG013891"},{name:"Sura",country:"Nigeria",lang:"Mwaghavul",rol3:"sur",pct_christian:35,pop:19e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.55,lng:9.02,code:"PG014115"},{name:"Dadiya",country:"Nigeria",lang:"Dadiya",rol3:"dbd",pct_christian:35,pop:66500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.64,lng:11.44,code:"PG013294"},{name:"Bajju",country:"Nigeria",lang:"Jju",rol3:"kaj",pct_christian:25,pop:685e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.68,lng:8.07,code:"PG013892"},{name:"Okpe",country:"Nigeria",lang:"Okpe (Southwestern Edoid)",rol3:"oke",pct_christian:25,pop:465e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.78,lng:5.57,code:"PG014065"},{name:"Wukari Jukun",country:"Nigeria",lang:"Wapan",rol3:"juk",pct_christian:25,pop:222e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.32,lng:9.7,code:"PG014174"},{name:"Aten",country:"Nigeria",lang:"Iten",rol3:"etx",pct_christian:25,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.65,lng:8.57,code:"PG013646"},{name:"Gure-Kahugu",country:"Nigeria",lang:"Tugbiri-Niragu",rol3:"grh",pct_christian:25,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.31,lng:8.42,code:"PG013815"},{name:"Kagoro",country:"Nigeria",lang:"Tyap",rol3:"kcg",pct_christian:25,pop:38e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.59,lng:8.26,code:"PG013890"},{name:"Awak",country:"Nigeria",lang:"Awak",rol3:"awo",pct_christian:25,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.92,lng:11.4,code:"PG013649"},{name:"Binawa",country:"Nigeria",lang:"Bina (Nigeria)",rol3:"byj",pct_christian:25,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.29,lng:8.26,code:"PG013689"},{name:"Naraguta",country:"Nigeria",lang:"Iguta",rol3:"nar",pct_christian:25,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.99,lng:8.85,code:"PG014012"},{name:"Karim-Maudi",country:"Nigeria",lang:"Karimjo",rol3:"cfg",pct_christian:25,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.86,lng:10.82,code:"PG023179"},{name:"Kono",country:"Nigeria",lang:"Kono (Nigeria)",rol3:"klk",pct_christian:25,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.23,lng:8.4,code:"PG013929"},{name:"Lakka",country:"Nigeria",lang:"Kabba",rol3:"ksp",pct_christian:25,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:9.15,lng:11.25,code:"PG013956"},{name:"Burak",country:"Nigeria",lang:"Burak",rol3:"bys",pct_christian:25,pop:8800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.74,lng:11.28,code:"PG013704"},{name:"Kholok",country:"Nigeria",lang:"Kholok",rol3:"ktc",pct_christian:25,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:9.3,lng:11.13,code:"PG014377"},{name:"Mingang Doso",country:"Nigeria",lang:"Mingang Doso",rol3:"mko",pct_christian:25,pop:6200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.4,lng:11.26,code:"PG014411"},{name:"Katab",country:"Nigeria",lang:"Tyap",rol3:"kcg",pct_christian:17.5,pop:287e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.82,lng:8.31,code:"PG013912"},{name:"Begbere",country:"Nigeria",lang:"Koro Wachi",rol3:"bqv",pct_christian:17.5,pop:171e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.69,lng:7.64,code:"PG013046"},{name:"Ndoro",country:"Nigeria",lang:"Ndoola",rol3:"ndr",pct_christian:17.5,pop:121e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.98,lng:10.78,code:"PG014016"},{name:"Chamba Leko",country:"Nigeria",lang:"Samba Leko",rol3:"ndi",pct_christian:17.5,pop:118e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.83,lng:10.69,code:"PG013720"},{name:"Pero",country:"Nigeria",lang:"Pero",rol3:"pip",pct_christian:17.5,pop:57500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.7,lng:11.17,code:"PG014080"},{name:"Bandawa-Minda",country:"Nigeria",lang:"Shoo-Minda-Nye",rol3:"bcv",pct_christian:17.5,pop:38e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:8.97,lng:10.99,code:"PG013664"},{name:"Etulo",country:"Nigeria",lang:"Etulo",rol3:"utr",pct_christian:17.5,pop:25500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.29,lng:9.32,code:"PG013776"},{name:"Ruruma",country:"Nigeria",lang:"Ruma",rol3:"ruz",pct_christian:17.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.23,lng:8.64,code:"PG014095"},{name:"Gwomu",country:"Nigeria",lang:"Moo",rol3:"gwg",pct_christian:17.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.48,lng:11.3,code:"PG013824"},{name:"Bukwun",country:"Nigeria",lang:"Bukwen",rol3:"buz",pct_christian:17.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.94,lng:10.2,code:"PG013283"},{name:"Berom",country:"Nigeria",lang:"Berom",rol3:"bom",pct_christian:12.5,pop:1485e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.58,lng:8.8,code:"PG013683"},{name:"Tarok",country:"Nigeria",lang:"Tarok",rol3:"yer",pct_christian:12.5,pop:584e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.13,lng:10.1,code:"PG014124"},{name:"Hyam",country:"Nigeria",lang:"Hyam",rol3:"jab",pct_christian:12.5,pop:396e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.54,lng:8.09,code:"PG013833"},{name:"Bachama",country:"Nigeria",lang:"Bacama",rol3:"bcy",pct_christian:12.5,pop:341e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.46,lng:12.08,code:"PG013653"},{name:"Tangale",country:"Nigeria",lang:"Tangale",rol3:"tan",pct_christian:12.5,pop:326e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.81,lng:11.21,code:"PG014122"},{name:"Kambari",country:"Nigeria",lang:"Tsishingini",rol3:"tsw",pct_christian:12.5,pop:318e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.34,lng:5.35,code:"PG013897"},{name:"Marghi Central",country:"Nigeria",lang:"Marghi Central",rol3:"mrt",pct_christian:12.5,pop:279e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.63,lng:13.35,code:"PG013988"},{name:"Kyibaku",country:"Nigeria",lang:"Kibaku",rol3:"ckl",pct_christian:12.5,pop:234e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.98,lng:12.88,code:"PG013953"},{name:"Chamba Daka",country:"Nigeria",lang:"Samba Daka",rol3:"ccg",pct_christian:12.5,pop:186e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:8.62,lng:11.73,code:"PG013719"},{name:"Rukuba",country:"Nigeria",lang:"Kuce",rol3:"ruk",pct_christian:12.5,pop:18e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.18,lng:8.24,code:"PG014093"},{name:"Kuteb",country:"Nigeria",lang:"Kutep",rol3:"kub",pct_christian:12.5,pop:84500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.24,lng:10.06,code:"PG013946"},{name:"Bitare",country:"Nigeria",lang:"Bitare",rol3:"brt",pct_christian:12.5,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.11,lng:10.74,code:"PG013691"},{name:"Glavda",country:"Nigeria",lang:"Glavda",rol3:"glw",pct_christian:12.5,pop:57500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:11.15,lng:13.81,code:"PG013803"},{name:"Kulung",country:"Nigeria",lang:"Kulung (Nigeria)",rol3:"bbu",pct_christian:12.5,pop:56e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.34,lng:11,code:"PG013941"},{name:"Chawai",country:"Nigeria",lang:"Atsam",rol3:"cch",pct_christian:12.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.26,lng:8.29,code:"PG013722"},{name:"Montol",country:"Nigeria",lang:"Tehl",rol3:"mtl",pct_christian:12.5,pop:46500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9,lng:9.64,code:"PG014003"},{name:"Fali",country:"Nigeria",lang:"Fali Muchella",rol3:"fli",pct_christian:12.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.32,lng:13.39,code:"PG013781"},{name:"Passam",country:"Nigeria",lang:"Kpasham",rol3:"pbn",pct_christian:12.5,pop:34500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.27,lng:11.76,code:"PG014079"},{name:"Epinmi",country:"Nigeria",lang:"Ukue",rol3:"uku",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.43,lng:5.78,code:"PG014146"},{name:"Yiwom",country:"Nigeria",lang:"Ywom",rol3:"gek",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:8.91,lng:9.75,code:"PG014192"},{name:"Magu",country:"Nigeria",lang:"Mvanip",rol3:"mcj",pct_christian:12.5,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.95,lng:11.02,code:"PG013979"},{name:"Lelau",country:"Nigeria",lang:"Leelau",rol3:"ldk",pct_christian:12.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.33,lng:11.1,code:"PG013964"},{name:"Kam",country:"Nigeria",lang:"Kam",rol3:"kdx",pct_christian:12.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:8.35,lng:11.06,code:"PG013895"},{name:"Tapshin",country:"Nigeria",lang:"Kusur-Myet",rol3:"tdl",pct_christian:12.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.55,lng:9.64,code:"PG014123"},{name:"Hedi",country:"Nigeria",lang:"Hdi",rol3:"xed",pct_christian:12.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.94,lng:13.69,code:"PG013829"},{name:"Lamja",country:"Nigeria",lang:"Lamja-Dengsa-Tola",rol3:"ldh",pct_christian:12.5,pop:7200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:8.87,lng:12.06,code:"PG013959"},{name:"Kumba",country:"Nigeria",lang:"Kumba",rol3:"ksm",pct_christian:12.5,pop:6900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.05,lng:12.04,code:"PG013943"},{name:"Pai",country:"Nigeria",lang:"Pye",rol3:"pai",pct_christian:12.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.55,lng:9.29,code:"PG014077"},{name:"Cara",country:"Nigeria",lang:"Cara",rol3:"cfd",pct_christian:12.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.09,lng:8.78,code:"PG012312"},{name:"Bali",country:"Nigeria",lang:"Bali (Nigeria)",rol3:"bcn",pct_christian:12.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.29,lng:11.81,code:"PG013660"},{name:"Aduge",country:"Nigeria",lang:"Aduge",rol3:"adu",pct_christian:12.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.61,lng:6.07,code:"PG013624"},{name:"Kapya",country:"Nigeria",lang:"Kapya",rol3:"klo",pct_christian:12.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.05,lng:9.93,code:"PG014375"},{name:"Mangas",country:"Nigeria",lang:"Mansi (Nigeria)",rol3:"zns",pct_christian:12.5,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.16,lng:9.82,code:"PG013986"},{name:"Igbo",country:"Nigeria",lang:"Igbo",rol3:"ibo",pct_christian:7.5,pop:3486e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.82,lng:7.31,code:"PG013844"},{name:"Ibibio",country:"Nigeria",lang:"Ibibio",rol3:"ibb",pct_christian:7.5,pop:697e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.13,lng:7.76,code:"PG013837"},{name:"Egba",country:"Nigeria",lang:"Yoruba",rol3:"yor",pct_christian:7.5,pop:6085e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:6.98,lng:3.48,code:"PG013759"},{name:"Tiv",country:"Nigeria",lang:"Tiv",rol3:"tiv",pct_christian:7.5,pop:52e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.58,lng:8.92,code:"PG014132"},{name:"Efik",country:"Nigeria",lang:"Efik",rol3:"efi",pct_christian:7.5,pop:289e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.26,lng:8.32,code:"PG013757"},{name:"Egbira",country:"Nigeria",lang:"Ebira",rol3:"igb",pct_christian:7.5,pop:2365e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8,lng:7.12,code:"PG013314"},{name:"Urhobo",country:"Nigeria",lang:"Urhobo",rol3:"urh",pct_christian:7.5,pop:1245e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.78,lng:5.78,code:"PG014152"},{name:"Isekiri",country:"Nigeria",lang:"Isekiri",rol3:"its",pct_christian:7.5,pop:1075e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.23,lng:5.42,code:"PG013858"},{name:"Ezaa",country:"Nigeria",lang:"Ezaa",rol3:"eza",pct_christian:7.5,pop:829e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.42,lng:7.87,code:"PG013780"},{name:"Kerang",country:"Nigeria",lang:"Ngas",rol3:"anc",pct_christian:7.5,pop:772e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.27,lng:9.56,code:"PG013642"},{name:"Isoko",country:"Nigeria",lang:"Isoko",rol3:"iso",pct_christian:7.5,pop:765e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.66,lng:6.09,code:"PG013859"},{name:"Ewe",country:"Nigeria",lang:"Éwé",rol3:"ewe",pct_christian:7.5,pop:696e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.76,lng:3.42,code:"PG013779"},{name:"Kamwe",country:"Nigeria",lang:"Kamwe",rol3:"hig",pct_christian:7.5,pop:683e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.57,lng:13.41,code:"PG013901"},{name:"Kalabari",country:"Nigeria",lang:"Kalabari",rol3:"ijn",pct_christian:7.5,pop:579e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.57,lng:6.83,code:"PG013754"},{name:"Yekhee",country:"Nigeria",lang:"Etsako",rol3:"ets",pct_christian:7.5,pop:574e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.2,lng:6.48,code:"PG014187"},{name:"Okrika",country:"Nigeria",lang:"Kirike",rol3:"okr",pct_christian:7.5,pop:52e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.69,lng:7.08,code:"PG014067"},{name:"Kana",country:"Nigeria",lang:"Khana",rol3:"ogo",pct_christian:7.5,pop:488e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.7,lng:7.47,code:"PG013902"},{name:"Ogbia",country:"Nigeria",lang:"Ogbia",rol3:"ogb",pct_christian:7.5,pop:45e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.81,lng:6.38,code:"PG014056"},{name:"Saya",country:"Nigeria",lang:"Saya",rol3:"say",pct_christian:7.5,pop:41e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.84,lng:9.64,code:"PG014099"},{name:"Ikwo",country:"Nigeria",lang:"Ikwo",rol3:"iqw",pct_christian:7.5,pop:366e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.99,lng:8.25,code:"PG013856"},{name:"Ukwuani-Aboh",country:"Nigeria",lang:"Ukwuani-Aboh-Ndoni",rol3:"ukw",pct_christian:7.5,pop:354e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.62,lng:6.57,code:"PG014147"},{name:"Bokyi",country:"Nigeria",lang:"Bokyi",rol3:"bky",pct_christian:7.5,pop:31e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.26,lng:8.99,code:"PG013695"},{name:"Yala",country:"Nigeria",lang:"Yala",rol3:"yba",pct_christian:7.5,pop:31e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.36,lng:8.5,code:"PG014182"},{name:"Mo Egon",country:"Nigeria",lang:"Eggon",rol3:"ego",pct_christian:7.5,pop:305e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.74,lng:8.46,code:"PG013760"},{name:"Bokkos",country:"Nigeria",lang:"Ron",rol3:"cla",pct_christian:7.5,pop:287e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.29,lng:8.98,code:"PG013693"},{name:"Yako",country:"Nigeria",lang:"Lokaa",rol3:"yaz",pct_christian:7.5,pop:273e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.9,lng:8.13,code:"PG014181"},{name:"Southeast Ijaw",country:"Nigeria",lang:"Ijo, Southeast",rol3:"ijs",pct_christian:7.5,pop:232e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.59,lng:6.21,code:"PG014113"},{name:"Mada",country:"Nigeria",lang:"Mada (Nigeria)",rol3:"mda",pct_christian:7.5,pop:223e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.01,lng:8.31,code:"PG014403"},{name:"Gokana",country:"Nigeria",lang:"Gokana",rol3:"gkn",pct_christian:7.5,pop:195e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.65,lng:7.29,code:"PG013806"},{name:"Lela",country:"Nigeria",lang:"C’Lela",rol3:"dri",pct_christian:7.5,pop:195e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:11.46,lng:5.28,code:"PG013963"},{name:"Adara",country:"Nigeria",lang:"Adara",rol3:"kad",pct_christian:7.5,pop:149e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.83,lng:7.41,code:"PG013886"},{name:"Obanliku",country:"Nigeria",lang:"Abanglekuo",rol3:"bzy",pct_christian:7.5,pop:141e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.57,lng:9.23,code:"PG014050"},{name:"Mbula-Bwazza",country:"Nigeria",lang:"Mbula-Bwazza",rol3:"mbu",pct_christian:7.5,pop:14e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.59,lng:12.36,code:"PG013994"},{name:"Dza",country:"Nigeria",lang:"Dza",rol3:"jen",pct_christian:7.5,pop:133e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.95,lng:10.93,code:"PG013311"},{name:"Yandang",country:"Nigeria",lang:"Yendang",rol3:"ynq",pct_christian:7.5,pop:127e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:8.95,lng:11.81,code:"PG014184"},{name:"Nungu",country:"Nigeria",lang:"Nungu",rol3:"rin",pct_christian:7.5,pop:108e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.18,lng:8.5,code:"PG014043"},{name:"Amo",country:"Nigeria",lang:"Amo",rol3:"amo",pct_christian:7.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.23,lng:8.64,code:"PG013640"},{name:"Irigwe",country:"Nigeria",lang:"Rigwe",rol3:"iri",pct_christian:7.5,pop:96e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.88,lng:8.83,code:"PG013857"},{name:"Mama",country:"Nigeria",lang:"Mama",rol3:"mma",pct_christian:7.5,pop:72500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9,lng:8.62,code:"PG013982"},{name:"Hwana",country:"Nigeria",lang:"Hwana",rol3:"hwo",pct_christian:7.5,pop:72e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.22,lng:12.67,code:"PG013832"},{name:"Koma",country:"Nigeria",lang:"Koma",rol3:"kmy",pct_christian:7.5,pop:7e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.67,lng:12.43,code:"PG013942"},{name:"Cham-Mwana",country:"Nigeria",lang:"Cham",rol3:"cfa",pct_christian:7.5,pop:55e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.77,lng:11.69,code:"PG013716"},{name:"Tigon Mbembe",country:"Nigeria",lang:"Mbembe, Tigon",rol3:"nza",pct_christian:7.5,pop:52e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.16,lng:10.68,code:"PG014130"},{name:"Mboi",country:"Nigeria",lang:"Mboi",rol3:"moi",pct_christian:7.5,pop:42500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.48,lng:12.67,code:"PG013992"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Etebi",country:"Nigeria",lang:"Etebi",rol3:"etb",pct_christian:7.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.63,lng:8.07,code:"PG013775"},{name:"Sukur",country:"Nigeria",lang:"Sukur",rol3:"syk",pct_christian:7.5,pop:33e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.88,lng:13.64,code:"PG014114"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Nandu-Tari",country:"Nigeria",lang:"Ahwai",rol3:"nfd",pct_christian:7.5,pop:28e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.26,lng:8.56,code:"PG014011"},{name:"Sasaru",country:"Nigeria",lang:"Sasaru",rol3:"sxs",pct_christian:7.5,pop:26e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.16,lng:6.17,code:"PG014098"},{name:"Yamba",country:"Nigeria",lang:"Yamba",rol3:"yam",pct_christian:7.5,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.62,lng:11.1,code:"PG014183"},{name:"Otwa",country:"Nigeria",lang:"Ghotuo",rol3:"aaa",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.18,lng:5.98,code:"PG013800"},{name:"Ngwaba",country:"Nigeria",lang:"Ngwaba",rol3:"ngw",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.17,lng:12.85,code:"PG014022"},{name:"Akpet",country:"Nigeria",lang:"Ukpet-Ehom",rol3:"akd",pct_christian:7.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.57,lng:8.17,code:"PG013636"},{name:"Bumaji",country:"Nigeria",lang:"Bumaji",rol3:"byp",pct_christian:7.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.48,lng:9.31,code:"PG013702"},{name:"Lubila",country:"Nigeria",lang:"Lubila",rol3:"kcc",pct_christian:7.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.41,lng:8.29,code:"PG013971"},{name:"Lo",country:"Nigeria",lang:"Loo",rol3:"ldo",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.35,lng:11.11,code:"PG013967"},{name:"Sara Mbai",country:"Nigeria",lang:"Mbay",rol3:"myb",pct_christian:7.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:11.84,lng:13.14,code:"PG014097"},{name:"Shal",country:"Nigeria",lang:"Shall-Zwall",rol3:"sha",pct_christian:7.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.26,lng:8.75,code:"PG014103"},{name:"Korop",country:"Nigeria",lang:"Durop",rol3:"krp",pct_christian:7.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.25,lng:8.66,code:"PG013931"},{name:"Kwa",country:"Nigeria",lang:"Kwa",rol3:"kwb",pct_christian:7.5,pop:15e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.5,lng:11.62,code:"PG013949"},{name:"Banwinji",country:"Nigeria",lang:"Bangwinji",rol3:"bsj",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.64,lng:11.33,code:"PG013667"},{name:"Ito",country:"Nigeria",lang:"Ito",rol3:"itw",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.06,lng:8,code:"PG013860"},{name:"Ebughu",country:"Nigeria",lang:"Ebughu",rol3:"ebg",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.68,lng:8.25,code:"PG013755"},{name:"Itu Mbon Uzo",country:"Nigeria",lang:"Itu Mbon Uzo",rol3:"itm",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.5,lng:7.81,code:"PG013861"},{name:"Idere",country:"Nigeria",lang:"Idere",rol3:"ide",pct_christian:7.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.22,lng:8.04,code:"PG013839"},{name:"Kyak",country:"Nigeria",lang:"Kyak",rol3:"bka",pct_christian:7.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.53,lng:11.35,code:"PG014393"},{name:"Arum-Chessu",country:"Nigeria",lang:"Arum",rol3:"aab",pct_christian:7.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.97,lng:8.7,code:"PG013643"},{name:"Ilue",country:"Nigeria",lang:"Ilue",rol3:"ilv",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.78,lng:8.25,code:"PG033351"},{name:"Mboa",country:"Nigeria",lang:"Mbonga",rol3:"xmb",pct_christian:7.5,pop:9900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:11.15,lng:13.75,code:"PG013993"},{name:"Turkwam",country:"Nigeria",lang:"Atoro",rol3:"tdv",pct_christian:7.5,pop:8e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.17,lng:8.65,code:"PG014136"},{name:"Duguza",country:"Nigeria",lang:"Tunzuii",rol3:"dza",pct_christian:7.5,pop:7400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.03,lng:9.12,code:"PG013308"},{name:"Idon",country:"Nigeria",lang:"Ajiya",rol3:"idc",pct_christian:7.5,pop:7300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.17,lng:7.87,code:"PG013841"},{name:"Kugama",country:"Nigeria",lang:"Kugama",rol3:"kow",pct_christian:7.5,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.14,lng:12.06,code:"PG013937"},{name:"Lam-nso",country:"Nigeria",lang:"Lamnso'",rol3:"lns",pct_christian:7.5,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.61,lng:11.16,code:"PG014395"},{name:"Bete",country:"Nigeria",lang:"Jukun Takum",rol3:"jbu",pct_christian:7.5,pop:6900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.02,lng:9.75,code:"PG013684"},{name:"Obulom",country:"Nigeria",lang:"Obulom",rol3:"obu",pct_christian:7.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.79,lng:7.05,code:"PG014052"},{name:"Teme",country:"Nigeria",lang:"Teme",rol3:"tdo",pct_christian:7.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:8.99,lng:11.97,code:"PG014126"},{name:"Mini",country:"Nigeria",lang:"Abureni",rol3:"mgj",pct_christian:7.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.61,lng:6.45,code:"PG013999"},{name:"Gyanzi",country:"Nigeria",lang:"Gyaazi",rol3:"gyz",pct_christian:7.5,pop:5900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.35,lng:9.62,code:"PG013826"},{name:"Bakpinka",country:"Nigeria",lang:"Iyongiyong",rol3:"bbs",pct_christian:7.5,pop:5400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.25,lng:8.27,code:"PG013658"},{name:"Firan",country:"Nigeria",lang:"Firan",rol3:"fir",pct_christian:7.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.6,lng:8.72,code:"PG013321"},{name:"Surubu",country:"Nigeria",lang:"Vori",rol3:"sde",pct_christian:7.5,pop:3800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.17,lng:8.32,code:"PG014116"},{name:"Zeem",country:"Nigeria",lang:"Zeem",rol3:"zem",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.95,lng:9.29,code:"PG014204"},{name:"Ambo",country:"Nigeria",lang:"Ambo",rol3:"amb",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.08,lng:10.77,code:"PG014310"},{name:"Tala",country:"Nigeria",lang:"Tala",rol3:"tak",pct_christian:7.5,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.23,lng:9.86,code:"PG014119"}]},Thailand:{target_upg:76,target_pop:61274800,target_top_langs:["Thai","Thai, Northeastern","Thai, Northern","Thai, Southern"],target_top_religion:"Buddhism",neighbors:[{name:"Lahu",country:"Thailand",lang:"Lahu",rol3:"lhu",pct_christian:35,pop:82e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.46,lng:99.05,code:"PG010877"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Sgaw Karen",country:"Thailand",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:25,pop:204e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:17.09,lng:98.79,code:"PG010917"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Red Karen",country:"Thailand",lang:"Kayah, Eastern",rol3:"eky",pct_christian:25,pop:11e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.47,lng:97.98,code:"PG010911"},{name:"Akha",country:"Thailand",lang:"Akha",rol3:"ahk",pct_christian:17.5,pop:58e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:20.08,lng:99.66,code:"PG010820"},{name:"Lahu Shi",country:"Thailand",lang:"Lahu Shi",rol3:"lhi",pct_christian:17.5,pop:15500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.98,lng:99.39,code:"PG010939"},{name:"Padaung Karen",country:"Thailand",lang:"Kayan (Myanmar)",rol3:"pdu",pct_christian:17.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.79,lng:98.99,code:"PG010902"},{name:"Bghai Karen",country:"Thailand",lang:"Karen, Bwe",rol3:"bwe",pct_christian:17.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.53,lng:97.93,code:"PG010827"},{name:"Black Karen",country:"Thailand",lang:"Pa’o",rol3:"blk",pct_christian:17.5,pop:850,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.74,lng:98.06,code:"PG010829"},{name:"Flowery/Southern Lisu",country:"Thailand",lang:"Lisu",rol3:"lis",pct_christian:12.5,pop:42e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.96,lng:98.82,code:"PG010847"},{name:"Western Lawa",country:"Thailand",lang:"Lawa, Western",rol3:"lcp",pct_christian:12.5,pop:8600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.36,lng:98.06,code:"PG010935"},{name:"Karen, Pwo Northern",country:"Thailand",lang:"Karen, Pwo Northern",rol3:"pww",pct_christian:7.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.22,lng:98.03,code:"PG010936"},{name:"Kensiu",country:"Thailand",lang:"Kensiu",rol3:"kns",pct_christian:7.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.02,lng:101.16,code:"PG010869"},{name:"Han Chinese",country:"Thailand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:5785e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:14.64,lng:101.07,code:"PG010849"},{name:"So",country:"Thailand",lang:"So (Laos)",rol3:"sss",pct_christian:3.5,pop:105e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Folk",lat:17.39,lng:104.05,code:"PG010920"},{name:"Mien",country:"Thailand",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:46500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:19.13,lng:100.45,code:"PG010890"},{name:"Tamil",country:"Thailand",lang:"Tamil",rol3:"tam",pct_christian:3.5,pop:35e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:13.76,lng:100.56,code:"PG010925"},{name:"Black Tai",country:"Thailand",lang:"Tai Dam",rol3:"blt",pct_christian:3.5,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.92,lng:99.84,code:"PG010830"},{name:"Western Bru",country:"Thailand",lang:"Bru, Western",rol3:"brv",pct_christian:3.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:17.21,lng:104.15,code:"PG010934"},{name:"Yoy",country:"Thailand",lang:"Yoy",rol3:"yoy",pct_christian:3.5,pop:6300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:17.71,lng:104.01,code:"PG010940"},{name:"Urak Lawoi Aborigine",country:"Thailand",lang:"Urak Lawoi’",rol3:"urk",pct_christian:3.5,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.44,lng:99.09,code:"PG010931"},{name:"Tonga",country:"Thailand",lang:"Ten’edn",rol3:"tnz",pct_christian:3.5,pop:200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.03,lng:101.16,code:"PG010894"},{name:"Khamet",country:"Thailand",lang:"Rmeet",rol3:"lbn",pct_christian:3.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.92,lng:99.84,code:"PG010870"},{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Indian - Christian",country:"South Africa",lang:"English",rol3:"eng",pct_christian:62.5,pop:31e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-29.84,lng:30.93,code:"PG048045"},{name:"Euronesian",country:"Samoa",lang:"English",rol3:"eng",pct_christian:62.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.85,lng:-171.8,code:"PG018323"},{name:"British",country:"Tanzania",lang:"English",rol3:"eng",pct_christian:62.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-6.83,lng:39.25,code:"PG014914"},{name:"British",country:"Zimbabwe",lang:"English",rol3:"eng",pct_christian:62.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-17.83,lng:31.03,code:"PG015650"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"American",country:"Singapore",lang:"English",rol3:"eng",pct_christian:45,pop:9800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.36,lng:103.82,code:"PG018447"},{name:"British",country:"Barbados",lang:"English",rol3:"eng",pct_christian:45,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:13.12,lng:-59.6,code:"PG016197"},{name:"British",country:"Venezuela",lang:"English",rol3:"eng",pct_christian:45,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:10.48,lng:-66.88,code:"PG016461"},{name:"British",country:"Botswana",lang:"English",rol3:"eng",pct_christian:45,pop:7100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-24.65,lng:25.91,code:"PG015217"},{name:"Pitcairn Islander",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:45,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018502"},{name:"American",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:95500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.52,lng:142.46,code:"PG020268"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Caribbean Hindi",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:4.91,lng:-52.3,code:"PG022284"},{name:"Southwest Aborigine Creol",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-32.54,lng:115.99,code:"PG008068"},{name:"Anglo-Australian",country:"Singapore",lang:"English",rol3:"eng",pct_christian:35,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:1.36,lng:103.82,code:"PG010684"},{name:"American",country:"Iceland",lang:"English",rol3:"eng",pct_christian:35,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.14,lng:-21.89,code:"PG000293"},{name:"American",country:"Marshall Islands",lang:"English",rol3:"eng",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:7.1,lng:171.22,code:"PG009376"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Detribalized Aborigine",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:58e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG007863"},{name:"Jamaican",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:33e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047381"},{name:"Barbadian",country:"Barbados",lang:"English",rol3:"eng",pct_christian:25,pop:269e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.17,lng:-59.56,code:"PG016195"},{name:"American",country:"Panama",lang:"English",rol3:"eng",pct_christian:25,pop:186e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.06,lng:-79.38,code:"PG050309"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Barbadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047394"},{name:"Bay Islands Creole",country:"Honduras",lang:"English",rol3:"eng",pct_christian:25,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.34,lng:-86.39,code:"PG024758"},{name:"American",country:"Virgin Islands",lang:"English",rol3:"eng",pct_christian:25,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.96,lng:-64.8,code:"PG050296"},{name:"American",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:25,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018513"},{name:"American",country:"Guam",lang:"English",rol3:"eng",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.44,lng:144.78,code:"PG050299"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"American",country:"Fiji",lang:"English",rol3:"eng",pct_christian:25,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-18.13,lng:178.44,code:"PG018421"},{name:"American",country:"Greenland",lang:"English",rol3:"eng",pct_christian:25,pop:3400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.18,lng:-51.7,code:"PG000286"},{name:"Maori",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050518"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Wik-Ngathan",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.84,lng:141.57,code:"PG008118"},{name:"Polynesian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050519"},{name:"Yankuntatjara",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-27.14,lng:133.83,code:"PG008134"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Bermudians",country:"Bermuda",lang:"English",rol3:"eng",pct_christian:17.5,pop:66e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.31,lng:-64.77,code:"PG016210"},{name:"Caymanian",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:17.5,pop:60500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:19.42,lng:-80.89,code:"PG016216"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Kenyan",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:43.83,lng:-79.46,code:"PG047469"},{name:"American",country:"Haiti",lang:"English",rol3:"eng",pct_christian:17.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.55,lng:-72.32,code:"PG016382"},{name:"Ghanaian",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:49.22,lng:-122.99,code:"PG047407"},{name:"Passamaquoddy",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.36,lng:-67.46,code:"PG043437"},{name:"Tlingit",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:60.48,lng:-132.29,code:"PG043489"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Onondaga",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.05,lng:-80.11,code:"PG043451"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"K’ómoks",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-124.96,code:"PG043374"},{name:"Rembarunga",country:"Australia",lang:"English",rol3:"eng",pct_christian:17.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-12.96,lng:134.58,code:"PG008058"},{name:"Irish, Northern",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:166e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:54.61,lng:-6.69,code:"PG022219"},{name:"Afro-Trinidadian",country:"Trinidad and Tobago",lang:"English",rol3:"eng",pct_christian:12.5,pop:725e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.42,lng:-61.3,code:"PG016442"},{name:"Metis",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:704e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.13,lng:-97.19,code:"PG043455"},{name:"American",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:402e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.97,lng:-107.63,code:"PG043500"},{name:"English Caribbean",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:394e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.73,lng:-90.31,code:"PG049256"},{name:"Han Chinese",country:"Singapore",lang:"English",rol3:"eng",pct_christian:12.5,pop:358e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020724"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Detribalized Amerindian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.64,lng:-115.72,code:"PG043384"},{name:"Sub-Saharan Africans, English-Speaking",country:"Belgium",lang:"English",rol3:"eng",pct_christian:12.5,pop:123e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.85,lng:4.38,code:"PG047833"},{name:"Fijian",country:"Australia",lang:"English",rol3:"eng",pct_christian:12.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG050451"},{name:"Cree, Woodland",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.6,lng:-106.15,code:"PG043378"},{name:"Dominican",country:"Dominica",lang:"English",rol3:"eng",pct_christian:12.5,pop:67e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.43,lng:-61.35,code:"PG016306"},{name:"Welsh",country:"Argentina",lang:"English",rol3:"eng",pct_christian:12.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-43.27,lng:-65.44,code:"PG017376"},{name:"Mohawk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:44.18,lng:-77.77,code:"PG043441"},{name:"Barbadian",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.5,lng:-.17,code:"PG048436"},{name:"Euronesian",country:"Fiji",lang:"English",rol3:"eng",pct_christian:12.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-17.95,lng:178.24,code:"PG018419"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"Hmong Njua",country:"Myanmar",lang:"Hmong Njua",rol3:"hnj",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Polytheism",lat:23.63,lng:97.65,code:"PG022056"},{name:"American",country:"Costa Rica",lang:"English",rol3:"eng",pct_christian:12.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:10.22,lng:-85.24,code:"PG025025"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Tsimshian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.42,lng:-130.3,code:"PG043490"},{name:"Lillooet",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.68,lng:-121.92,code:"PG043432"},{name:"Nakota (Assiniboine)",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:52.17,lng:-107.03,code:"PG043354"},{name:"Kwakwakaʼwakw",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.72,lng:-127.5,code:"PG043427"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Dakota",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:5500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.52,lng:-102.88,code:"PG043381"},{name:"American",country:"Micronesia",lang:"English",rol3:"eng",pct_christian:12.5,pop:5400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.95,lng:158.2,code:"PG018394"},{name:"Straits Salish",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.49,lng:-123.46,code:"PG043479"},{name:"Bahamian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.9,lng:-79.58,code:"PG050486"},{name:"Cree, Southern East",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.77,lng:-75.81,code:"PG043411"},{name:"Heiltsuk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:52.3,lng:-128.28,code:"PG043406"},{name:"Tolowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.9,lng:-124.16,code:"PG050627"},{name:"Sac & Fox Tribe of the Mississippi in Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.98,lng:-92.65,code:"PG043616"},{name:"Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.99,lng:-95.39,code:"PG043277"},{name:"Central Africans",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047190"},{name:"Jamaican",country:"Germany",lang:"English",rol3:"eng",pct_christian:12.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.13,lng:11.56,code:"PG048546"},{name:"American",country:"Curacao",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.19,lng:-68.97,code:"PG016406"},{name:"Saint Lucian",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:4.91,lng:-52.3,code:"PG022286"},{name:"Tubatulabal",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:36.07,lng:-118.31,code:"PG043660"},{name:"Euronesian",country:"Cook Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-21.23,lng:-159.78,code:"PG018317"},{name:"Nez Perce",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-116.41,code:"PG043560"},{name:"Salinan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:35.83,lng:-120.77,code:"PG050637"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Kaska",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:58.79,lng:-126.96,code:"PG043421"},{name:"Anuta",country:"Solomon Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-11.61,lng:169.85,code:"PG010725"},{name:"Sac & Fox Nation of Missouri in Kansas and Nebraska",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:450,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.01,lng:-95.52,code:"PG050671"},{name:"British",country:"Lesotho",lang:"English",rol3:"eng",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-29.33,lng:27.51,code:"PG015281"},{name:"Haida",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:55.19,lng:-132.88,code:"PG043257"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Chinuk Wawa",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.37,lng:-123.2,code:"PG043372"},{name:"Cayuga",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:60,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.55,lng:-79,code:"PG043191"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Upper Tanana",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:62.07,lng:-140.22,code:"PG043497"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Chinese American",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:175e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG050453"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Khmu, Ou",country:"Laos",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:817e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:102.58,code:"PG020913"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Jamaican",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:588e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.14,lng:-77.63,code:"PG043284"},{name:"Han Chinese, Mandarin",country:"Singapore",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020728"},{name:"Detribalized Amerindian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:454e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.9,lng:-111.06,code:"PG043225"},{name:"Cape Verdean",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:309e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.42,lng:-74.94,code:"PG047254"},{name:"Han Chinese",country:"Brazil",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-23.17,lng:-45.54,code:"PG016864"}]},Sudan:{target_upg:170,target_pop:48623100,target_top_langs:["Arabic, Sudanese","Bedawiyet","Fur","Nobiin"],target_top_religion:"Islam",neighbors:[{name:"Turum",country:"Sudan",lang:"Tagoi",rol3:"tag",pct_christian:45,pop:3200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:11.6,lng:31.08,code:"PG042842"},{name:"Acheron",country:"Sudan",lang:"Acheron",rol3:"acz",pct_christian:25,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.81,lng:30.25,code:"PG011958"},{name:"Heiban Nuba",country:"Sudan",lang:"Heiban",rol3:"hbn",pct_christian:25,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11.25,lng:30.48,code:"PG012038"},{name:"Moro",country:"Sudan",lang:"Moro",rol3:"mor",pct_christian:12.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.94,lng:30.18,code:"PG012112"},{name:"Katcha-Kadugli",country:"Sudan",lang:"Katcha-Kadugli-Miri",rol3:"xtc",pct_christian:7.5,pop:97e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.96,lng:29.69,code:"PG012053"},{name:"Dgik, Ruwa",country:"Sudan",lang:"Dagik",rol3:"dec",pct_christian:7.5,pop:72e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.66,lng:30,code:"PG012102"},{name:"Krongo",country:"Sudan",lang:"Krongo",rol3:"kgo",pct_christian:7.5,pop:66e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.55,lng:29.96,code:"PG012074"},{name:"Miri",country:"Sudan",lang:"Katcha-Kadugli-Miri",rol3:"xtc",pct_christian:7.5,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11,lng:29.5,code:"PG012105"},{name:"Tulishi",country:"Sudan",lang:"Tulishi",rol3:"tey",pct_christian:7.5,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11.47,lng:29.11,code:"PG012165"},{name:"Koalib",country:"Sudan",lang:"Koalib",rol3:"kib",pct_christian:3.5,pop:139e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:11.67,lng:30.4,code:"PG012071"},{name:"Laro",country:"Sudan",lang:"Laro",rol3:"lro",pct_christian:3.5,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11.35,lng:30.54,code:"PG012079"},{name:"Shatt",country:"Sudan",lang:"Shatt",rol3:"shj",pct_christian:3.5,pop:37500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.82,lng:29.76,code:"PG012132"},{name:"Komo",country:"Sudan",lang:"Komo (Sudan)",rol3:"xom",pct_christian:3.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:9.82,lng:34.09,code:"PG012072"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Indian - Christian",country:"South Africa",lang:"English",rol3:"eng",pct_christian:62.5,pop:31e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-29.84,lng:30.93,code:"PG048045"},{name:"Euronesian",country:"Samoa",lang:"English",rol3:"eng",pct_christian:62.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.85,lng:-171.8,code:"PG018323"},{name:"British",country:"Tanzania",lang:"English",rol3:"eng",pct_christian:62.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-6.83,lng:39.25,code:"PG014914"},{name:"British",country:"Zimbabwe",lang:"English",rol3:"eng",pct_christian:62.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-17.83,lng:31.03,code:"PG015650"},{name:"American",country:"Singapore",lang:"English",rol3:"eng",pct_christian:45,pop:9800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.36,lng:103.82,code:"PG018447"},{name:"British",country:"Barbados",lang:"English",rol3:"eng",pct_christian:45,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:13.12,lng:-59.6,code:"PG016197"},{name:"British",country:"Venezuela",lang:"English",rol3:"eng",pct_christian:45,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:10.48,lng:-66.88,code:"PG016461"},{name:"British",country:"Botswana",lang:"English",rol3:"eng",pct_christian:45,pop:7100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-24.65,lng:25.91,code:"PG015217"},{name:"Pitcairn Islander",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:45,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018502"},{name:"American",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:95500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.52,lng:142.46,code:"PG020268"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Caribbean Hindi",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:4.91,lng:-52.3,code:"PG022284"},{name:"Southwest Aborigine Creol",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-32.54,lng:115.99,code:"PG008068"},{name:"Anglo-Australian",country:"Singapore",lang:"English",rol3:"eng",pct_christian:35,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:1.36,lng:103.82,code:"PG010684"},{name:"American",country:"Iceland",lang:"English",rol3:"eng",pct_christian:35,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.14,lng:-21.89,code:"PG000293"},{name:"American",country:"Marshall Islands",lang:"English",rol3:"eng",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:7.1,lng:171.22,code:"PG009376"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Detribalized Aborigine",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:58e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG007863"},{name:"Jamaican",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:33e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047381"},{name:"Barbadian",country:"Barbados",lang:"English",rol3:"eng",pct_christian:25,pop:269e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.17,lng:-59.56,code:"PG016195"},{name:"American",country:"Panama",lang:"English",rol3:"eng",pct_christian:25,pop:186e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.06,lng:-79.38,code:"PG050309"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Barbadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047394"},{name:"Bay Islands Creole",country:"Honduras",lang:"English",rol3:"eng",pct_christian:25,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.34,lng:-86.39,code:"PG024758"},{name:"American",country:"Virgin Islands",lang:"English",rol3:"eng",pct_christian:25,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.96,lng:-64.8,code:"PG050296"},{name:"American",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:25,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018513"},{name:"American",country:"Guam",lang:"English",rol3:"eng",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.44,lng:144.78,code:"PG050299"},{name:"American",country:"Fiji",lang:"English",rol3:"eng",pct_christian:25,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-18.13,lng:178.44,code:"PG018421"},{name:"Mono",country:"Cameroon",lang:"Fulfulde, Adamawa",rol3:"fub",pct_christian:25,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:8.77,lng:14.12,code:"PG012705"},{name:"American",country:"Greenland",lang:"English",rol3:"eng",pct_christian:25,pop:3400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.18,lng:-51.7,code:"PG000286"},{name:"Maori",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050518"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Wik-Ngathan",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.84,lng:141.57,code:"PG008118"},{name:"Polynesian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050519"},{name:"Yankuntatjara",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-27.14,lng:133.83,code:"PG008134"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Bermudians",country:"Bermuda",lang:"English",rol3:"eng",pct_christian:17.5,pop:66e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.31,lng:-64.77,code:"PG016210"},{name:"Caymanian",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:17.5,pop:60500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:19.42,lng:-80.89,code:"PG016216"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Kenyan",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:43.83,lng:-79.46,code:"PG047469"},{name:"American",country:"Haiti",lang:"English",rol3:"eng",pct_christian:17.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.55,lng:-72.32,code:"PG016382"},{name:"Ghanaian",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:49.22,lng:-122.99,code:"PG047407"},{name:"Passamaquoddy",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.36,lng:-67.46,code:"PG043437"},{name:"Tlingit",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:60.48,lng:-132.29,code:"PG043489"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Onondaga",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.05,lng:-80.11,code:"PG043451"},{name:"K’ómoks",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-124.96,code:"PG043374"},{name:"Rembarunga",country:"Australia",lang:"English",rol3:"eng",pct_christian:17.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-12.96,lng:134.58,code:"PG008058"},{name:"Irish, Northern",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:166e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:54.61,lng:-6.69,code:"PG022219"},{name:"Afro-Trinidadian",country:"Trinidad and Tobago",lang:"English",rol3:"eng",pct_christian:12.5,pop:725e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.42,lng:-61.3,code:"PG016442"},{name:"Metis",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:704e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.13,lng:-97.19,code:"PG043455"},{name:"Gbaya",country:"Cameroon",lang:"Gbaya, Northwest",rol3:"gya",pct_christian:12.5,pop:442e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.26,lng:13.47,code:"PG012601"},{name:"American",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:402e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.97,lng:-107.63,code:"PG043500"},{name:"English Caribbean",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:394e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.73,lng:-90.31,code:"PG049256"},{name:"Han Chinese",country:"Singapore",lang:"English",rol3:"eng",pct_christian:12.5,pop:358e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020724"},{name:"Detribalized Amerindian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.64,lng:-115.72,code:"PG043384"},{name:"Sub-Saharan Africans, English-Speaking",country:"Belgium",lang:"English",rol3:"eng",pct_christian:12.5,pop:123e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.85,lng:4.38,code:"PG047833"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Fijian",country:"Australia",lang:"English",rol3:"eng",pct_christian:12.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG050451"},{name:"Cree, Woodland",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.6,lng:-106.15,code:"PG043378"},{name:"Dominican",country:"Dominica",lang:"English",rol3:"eng",pct_christian:12.5,pop:67e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.43,lng:-61.35,code:"PG016306"},{name:"Welsh",country:"Argentina",lang:"English",rol3:"eng",pct_christian:12.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-43.27,lng:-65.44,code:"PG017376"},{name:"Mohawk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:44.18,lng:-77.77,code:"PG043441"},{name:"Barbadian",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.5,lng:-.17,code:"PG048436"},{name:"Euronesian",country:"Fiji",lang:"English",rol3:"eng",pct_christian:12.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-17.95,lng:178.24,code:"PG018419"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"American",country:"Costa Rica",lang:"English",rol3:"eng",pct_christian:12.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:10.22,lng:-85.24,code:"PG025025"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Tsimshian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.42,lng:-130.3,code:"PG043490"},{name:"Lillooet",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.68,lng:-121.92,code:"PG043432"},{name:"Nakota (Assiniboine)",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:52.17,lng:-107.03,code:"PG043354"},{name:"Kwakwakaʼwakw",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.72,lng:-127.5,code:"PG043427"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Dakota",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:5500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.52,lng:-102.88,code:"PG043381"},{name:"American",country:"Micronesia",lang:"English",rol3:"eng",pct_christian:12.5,pop:5400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.95,lng:158.2,code:"PG018394"},{name:"Straits Salish",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.49,lng:-123.46,code:"PG043479"},{name:"Bahamian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.9,lng:-79.58,code:"PG050486"},{name:"Cree, Southern East",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.77,lng:-75.81,code:"PG043411"},{name:"Heiltsuk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:52.3,lng:-128.28,code:"PG043406"},{name:"Tolowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.9,lng:-124.16,code:"PG050627"},{name:"Sac & Fox Tribe of the Mississippi in Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.98,lng:-92.65,code:"PG043616"},{name:"Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.99,lng:-95.39,code:"PG043277"},{name:"Central Africans",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047190"},{name:"Jamaican",country:"Germany",lang:"English",rol3:"eng",pct_christian:12.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.13,lng:11.56,code:"PG048546"},{name:"American",country:"Curacao",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.19,lng:-68.97,code:"PG016406"},{name:"Saint Lucian",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:4.91,lng:-52.3,code:"PG022286"},{name:"Tubatulabal",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:36.07,lng:-118.31,code:"PG043660"},{name:"Euronesian",country:"Cook Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-21.23,lng:-159.78,code:"PG018317"},{name:"Nez Perce",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-116.41,code:"PG043560"},{name:"Salinan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:35.83,lng:-120.77,code:"PG050637"},{name:"Kaska",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:58.79,lng:-126.96,code:"PG043421"},{name:"Anuta",country:"Solomon Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-11.61,lng:169.85,code:"PG010725"},{name:"Sac & Fox Nation of Missouri in Kansas and Nebraska",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:450,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.01,lng:-95.52,code:"PG050671"},{name:"British",country:"Lesotho",lang:"English",rol3:"eng",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-29.33,lng:27.51,code:"PG015281"},{name:"Haida",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:55.19,lng:-132.88,code:"PG043257"},{name:"Chinuk Wawa",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.37,lng:-123.2,code:"PG043372"},{name:"Cayuga",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:60,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.55,lng:-79,code:"PG043191"},{name:"Upper Tanana",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:62.07,lng:-140.22,code:"PG043497"},{name:"Chinese American",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:175e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG050453"},{name:"Jamaican",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:588e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.14,lng:-77.63,code:"PG043284"},{name:"Detribalized Amerindian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:454e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.9,lng:-111.06,code:"PG043225"},{name:"Cape Verdean",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:309e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.42,lng:-74.94,code:"PG047254"},{name:"Ghanaian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:204e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG046500"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Trinidadian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.69,lng:-73.86,code:"PG046512"},{name:"Choctaw",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:121e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.5,lng:-95.33,code:"PG043202"},{name:"Liberian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:107e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG047273"},{name:"American",country:"Dominican Republic",lang:"English",rol3:"eng",pct_christian:7.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.48,lng:-69.91,code:"PG016327"},{name:"Kenyan",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:96e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:33.32,lng:-92.72,code:"PG050473"},{name:"Anglo-Australian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:84e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:35.02,lng:-98.4,code:"PG043519"},{name:"Trinidadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:84e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047383"},{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Channel Islanders",country:"Guernsey",lang:"English",rol3:"eng",pct_christian:7.5,pop:65e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.48,lng:-2.52,code:"PG048818"},{name:"South African",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:44e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:47.85,lng:-102.06,code:"PG050480"},{name:"Cree, Plains",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:43e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:53.8,lng:-109.54,code:"PG043505"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"British",country:"Zambia",lang:"English",rol3:"eng",pct_christian:7.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-15.4,lng:28.31,code:"PG015570"},{name:"Blackfoot, Siksika",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.66,lng:-112.87,code:"PG043538"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"American",country:"Ecuador",lang:"English",rol3:"eng",pct_christian:7.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.18,lng:-78.49,code:"PG017483"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Potawatomi",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.34,lng:-95.84,code:"PG043601"},{name:"Euronesian",country:"Solomon Islands",lang:"English",rol3:"eng",pct_christian:7.5,pop:23500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-9.43,lng:159.96,code:"PG018398"},{name:"Halkomelem",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:21e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.22,lng:-121.97,code:"PG043403"},{name:"Tlingit",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:57.16,lng:-133.75,code:"PG043653"},{name:"Filipino",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-36.89,lng:174.78,code:"PG047593"},{name:"Comanche",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.56,lng:-98.43,code:"PG043209"},{name:"British",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:7.5,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:19.33,lng:-81.38,code:"PG016215"},{name:"Cheyenne",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.53,lng:-106.68,code:"PG043198"},{name:"American",country:"Papua New Guinea",lang:"English",rol3:"eng",pct_christian:7.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-9.45,lng:147.18,code:"PG022038"},{name:"Pueblo, Santa Clara",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Native American religions",lat:35.98,lng:-106.22,code:"PG050653"},{name:"Shuswap",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.26,lng:-120.93,code:"PG043468"}]},Algeria:{target_upg:38,target_pop:47320600,target_top_langs:["Arabic, Algerian","Kabyle","Tachawit","Tamazight, Central Atlas"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Algeria",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:55e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:36.73,lng:3.13,code:"PG049244"},{name:"Bakole",country:"Cameroon",lang:"French",rol3:"fra",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:4.43,lng:8.97,code:"PG012493"},{name:"PoaPoa",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:25,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.87,lng:164.66,code:"PG018370"},{name:"Romani, Vlax",country:"Belgium",lang:"Romani, Vlax",rol3:"rmy",pct_christian:17.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.85,lng:4.38,code:"PG000068"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Euronesian",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:12.5,pop:58500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-17.56,lng:-149.57,code:"PG018408"},{name:"Euronesian",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-22.27,lng:166.45,code:"PG018406"},{name:"Aeke",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.07,lng:164.88,code:"PG009564"},{name:"French",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:7.5,pop:93500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.33,lng:165.49,code:"PG018389"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Sake",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:.07,lng:11.63,code:"PG013210"},{name:"Burundi",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050494"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Kande",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.09,lng:11.75,code:"PG013189"},{name:"Chadian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.58,lng:-73.7,code:"PG050504"},{name:"New Caledonian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.22,lng:-122.99,code:"PG047444"},{name:"Gabonese",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.9,lng:-77.19,code:"PG047191"},{name:"Chinese-Tahitian Creole",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:7.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.56,lng:-149.57,code:"PG018407"},{name:"Chadian",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:38.02,lng:-84.5,code:"PG047189"},{name:"Walloon",country:"Belgium",lang:"French",rol3:"fra",pct_christian:3.5,pop:3755e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.32,lng:4.95,code:"PG000076"},{name:"Swiss",country:"Switzerland",lang:"French",rol3:"fra",pct_christian:3.5,pop:2015e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.6,lng:6.93,code:"PG000585"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Franco-Mauritian",country:"Mauritius",lang:"French",rol3:"fra",pct_christian:3.5,pop:72500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.25,lng:57.51,code:"PG015346"},{name:"Romani, Vlax, Kalderash",country:"Argentina",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:61e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-34.65,lng:-58.56,code:"PG017346"},{name:"Romani, Vlax",country:"Colombia",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:4.64,lng:-74.11,code:"PG016290"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Romanian",country:"France",lang:"French",rol3:"fra",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000192"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"French Caribbean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.5,lng:-73.81,code:"PG047395"},{name:"Togolese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.52,lng:-73.68,code:"PG050478"},{name:"Congolese",country:"Spain",lang:"French",rol3:"fra",pct_christian:3.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.41,lng:-3.69,code:"PG042340"},{name:"Abenaki",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.07,lng:-72.82,code:"PG043348"},{name:"Ivorian",country:"United States",lang:"French",rol3:"fra",pct_christian:3.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047266"},{name:"Guinean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.5,lng:-73.81,code:"PG047454"},{name:"Sighu",country:"Gabon",lang:"French",rol3:"fra",pct_christian:3.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.84,lng:12.69,code:"PG013213"},{name:"Rwandan",country:"Netherlands",lang:"French",rol3:"fra",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:51.9,lng:4.47,code:"PG000430"},{name:"Gabonese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050505"}]},Iraq:{target_upg:31,target_pop:46011e3,target_top_langs:["Arabic, Mesopotamian","Arabic, North Mesopotamian","Kurdish, Central","Kurdish, Northern"],target_top_religion:"Islam",neighbors:[{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},"Myanmar (Burma)":{target_upg:58,target_pop:44445100,target_top_langs:["Burmese","Shan","Rakhine","Chinese, Mandarin"],target_top_religion:"Buddhism",neighbors:[{name:"Kayaw",country:"Myanmar",lang:"Kayaw",rol3:"kvl",pct_christian:75,pop:26e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.26,lng:96.85,code:"PG009414"},{name:"Zanniat Chin",country:"Myanmar",lang:"Chin, Falam",rol3:"cfm",pct_christian:75,pop:2e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23,lng:93.84,code:"PG009549"},{name:"Lushai",country:"Myanmar",lang:"Mizo",rol3:"lus",pct_christian:75,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.44,lng:93.63,code:"PG009473"},{name:"Siyin Chin",country:"Myanmar",lang:"Chin, Siyin",rol3:"csy",pct_christian:75,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.41,lng:93.63,code:"PG009521"},{name:"Anal",country:"Myanmar",lang:"Anal",rol3:"anm",pct_christian:75,pop:50,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.21,lng:94.31,code:"PG022039"},{name:"Karen, S'gaw",country:"Myanmar",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:62.5,pop:201e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:17.51,lng:96.16,code:"PG009518"},{name:"Tiddim Chin",country:"Myanmar",lang:"Chin, Tedim",rol3:"ctd",pct_christian:62.5,pop:256e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.5,lng:94.06,code:"PG009534"},{name:"Falam Chin",country:"Myanmar",lang:"Chin, Falam",rol3:"cfm",pct_christian:62.5,pop:147e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.02,lng:93.67,code:"PG022048"},{name:"Haka Chin",country:"Myanmar",lang:"Chin, Hakha",rol3:"cnh",pct_christian:62.5,pop:133e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.45,lng:93.8,code:"PG009431"},{name:"Rawang",country:"Myanmar",lang:"Rawang",rol3:"raw",pct_christian:62.5,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.25,lng:97.97,code:"PG009509"},{name:"Kuki Chin",country:"Myanmar",lang:"Chin, Thado",rol3:"tcz",pct_christian:62.5,pop:41e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.9,lng:94.73,code:"PG009461"},{name:"K'cho Chin",country:"Myanmar",lang:"Chin, Müün",rol3:"mwq",pct_christian:62.5,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:20.29,lng:94.3,code:"PG022045"},{name:"Ngawn Chin",country:"Myanmar",lang:"Chin, Ngawn",rol3:"cnw",pct_christian:62.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.09,lng:93.85,code:"PG009493"},{name:"Bawm",country:"Myanmar",lang:"Chin, Bawm",rol3:"bgr",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.59,lng:92.9,code:"PG009408"},{name:"Pyen",country:"Myanmar",lang:"Pyen",rol3:"pyy",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.03,lng:99.65,code:"PG009506"},{name:"Lahu",country:"Myanmar",lang:"Lahu",rol3:"lhu",pct_christian:45,pop:2e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.58,lng:99.59,code:"PG009463"},{name:"Zome",country:"Myanmar",lang:"Zo",rol3:"zom",pct_christian:45,pop:61e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.53,lng:94.12,code:"PG009551"},{name:"Zotung Chin",country:"Myanmar",lang:"Chin, Zotung",rol3:"czt",pct_christian:45,pop:54e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.55,lng:93.32,code:"PG009552"},{name:"Chin, Mara",country:"Myanmar",lang:"Mara",rol3:"mrh",pct_christian:45,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.05,lng:93.12,code:"PG009481"},{name:"Karen, Gheko",country:"Myanmar",lang:"Karen, Geko",rol3:"ghk",pct_christian:45,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.51,lng:96.75,code:"PG009428"},{name:"Kawyaw",country:"Myanmar",lang:"Kawyaw",rol3:"kxf",pct_christian:45,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.28,lng:97.08,code:"PG009479"},{name:"Naga, Konyak",country:"Myanmar",lang:"Naga, Konyak",rol3:"nbe",pct_christian:45,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.56,lng:95.18,code:"PG009460"},{name:"Kachin",country:"Myanmar",lang:"Jingpho",rol3:"kac",pct_christian:35,pop:1065e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.05,lng:97.44,code:"PG009448"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Lashi",country:"Myanmar",lang:"Lacid",rol3:"lsi",pct_christian:35,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.83,lng:98.25,code:"PG009469"},{name:"Rawngtu Chin",country:"Myanmar",lang:"Chin, Rawngtu",rol3:"weu",pct_christian:35,pop:5e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:21.55,lng:93.73,code:"PG009539"},{name:"Mro-Khimi",country:"Myanmar",lang:"Mro-Khimi",rol3:"cmr",pct_christian:25,pop:75e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:20.7,lng:92.98,code:"PG009456"},{name:"Karen, Geba",country:"Myanmar",lang:"Karen, Geba",rol3:"kvq",pct_christian:25,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:19.5,lng:96.62,code:"PG009427"},{name:"Karen, Bghai",country:"Myanmar",lang:"Karen, Bwe",rol3:"bwe",pct_christian:25,pop:21e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.09,lng:96.72,code:"PG009510"},{name:"Karen, Yinbaw",country:"Myanmar",lang:"Yinbaw",rol3:"kvu",pct_christian:25,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:18.96,lng:97.21,code:"PG009546"},{name:"Anu",country:"Myanmar",lang:"Chin, Anu-Khongso",rol3:"anl",pct_christian:25,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:21.31,lng:92.84,code:"PG009405"},{name:"Drung",country:"Myanmar",lang:"Drung",rol3:"duu",pct_christian:25,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:28.1,lng:97.69,code:"PG009535"},{name:"Achang",country:"Myanmar",lang:"Achang",rol3:"acn",pct_christian:17.5,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:24.31,lng:97.54,code:"PG009475"},{name:"Karen, Zayein",country:"Myanmar",lang:"Zayein",rol3:"kxk",pct_christian:17.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:97.06,code:"PG009550"},{name:"Chin, Asho",country:"Myanmar",lang:"Chin, Asho",rol3:"csh",pct_christian:12.5,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:20.4,lng:94.79,code:"PG009406"},{name:"Blang",country:"Myanmar",lang:"Blang",rol3:"blr",pct_christian:12.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:21.5,lng:100.17,code:"PG022041"},{name:"Hmong Njua",country:"Myanmar",lang:"Hmong Njua",rol3:"hnj",pct_christian:12.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:23.63,lng:97.65,code:"PG022056"},{name:"Hsifan",country:"Myanmar",lang:"Tibetan, Central",rol3:"bod",pct_christian:12.5,pop:5600,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:27.24,lng:97.64,code:"PG009445"},{name:"Karen, Mobwa",country:"Myanmar",lang:"Karen, Mobwa",rol3:"jkm",pct_christian:12.5,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:18.98,lng:96.63,code:"PG048772"},{name:"Tawr Chin",country:"Myanmar",lang:"Chin, Tawr",rol3:"tcp",pct_christian:12.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.5,lng:93.78,code:"PG009532"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Karen, Kayan",country:"Myanmar",lang:"Kayan (Myanmar)",rol3:"pdu",pct_christian:7.5,pop:133e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.56,lng:96.82,code:"PG009497"},{name:"Tai Mao",country:"Myanmar",lang:"Tai Long",rol3:"thi",pct_christian:7.5,pop:12e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:23.89,lng:97.73,code:"PG047888"},{name:"Chin, Daai",country:"Myanmar",lang:"Chin, Daai",rol3:"dao",pct_christian:7.5,pop:41e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:21.05,lng:93.67,code:"PG009421"},{name:"Senthang",country:"Myanmar",lang:"Chin, Senthang",rol3:"sez",pct_christian:7.5,pop:33e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.46,lng:93.85,code:"PG009516"},{name:"Uppu",country:"Myanmar",lang:"Chin, Uppu",rol3:"cnb",pct_christian:7.5,pop:30500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Folk",lat:19.9,lng:94.08,code:"PG009419"},{name:"Hrangkhol",country:"Myanmar",lang:"Hrangkhol",rol3:"hra",pct_christian:7.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:23.75,lng:93.78,code:"PG009444"},{name:"Karen, Paku",country:"Myanmar",lang:"Karen, Paku",rol3:"jkp",pct_christian:7.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.94,lng:96.86,code:"PG009499"},{name:"Lisu",country:"Myanmar",lang:"Lisu",rol3:"lis",pct_christian:3.5,pop:327e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.78,lng:97.17,code:"PG009523"},{name:"Akha",country:"Myanmar",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:23e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:21.71,lng:99.8,code:"PG009402"},{name:"Karen, Pow Western",country:"Myanmar",lang:"Karen, Pwo Western",rol3:"pwo",pct_christian:3.5,pop:21e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.46,lng:97.72,code:"PG046602"},{name:"Khumi Chin",country:"Myanmar",lang:"Chin, Khumi",rol3:"cnk",pct_christian:3.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.17,lng:92.98,code:"PG009457"},{name:"Naga, Tase",country:"Myanmar",lang:"Naga, Tangshang",rol3:"nst",pct_christian:3.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.71,lng:96.23,code:"PG009528"},{name:"Riang",country:"Myanmar",lang:"Riang Lang",rol3:"ril",pct_christian:3.5,pop:57500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:23.22,lng:98.73,code:"PG009511"},{name:"Zaiwa",country:"Myanmar",lang:"Zaiwa",rol3:"atb",pct_christian:3.5,pop:38500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:24.47,lng:97.99,code:"PG009407"},{name:"Lao",country:"Myanmar",lang:"Lao",rol3:"lao",pct_christian:3.5,pop:26e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:16.85,lng:96.15,code:"PG009467"},{name:"Anong",country:"Myanmar",lang:"Lisu",rol3:"lis",pct_christian:3.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.29,lng:98.68,code:"PG009495"},{name:"Karen, Lahta",country:"Myanmar",lang:"Lahta",rol3:"kvt",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:20.32,lng:96.89,code:"PG009462"},{name:"Karen, Yintale",country:"Myanmar",lang:"Yintale",rol3:"kvy",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:18.84,lng:97.26,code:"PG009547"},{name:"Samtao",country:"Myanmar",lang:"Samtao",rol3:"stu",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:21.3,lng:99.63,code:"PG022054"},{name:"Naga, Yimchungru",country:"Myanmar",lang:"Naga, Yimchungru",rol3:"yim",pct_christian:3.5,pop:5600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.38,lng:94.8,code:"PG009545"},{name:"Tailoi",country:"Myanmar",lang:"Tai Loi",rol3:"tlq",pct_christian:3.5,pop:5100,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:21.52,lng:100.94,code:"PG009525"},{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Syrian Christian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:62.5,pop:4495e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:12.35,lng:76.09,code:"PG041308"},{name:"Naga, Tangkhul",country:"India",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:25.07,lng:94.38,code:"PG041697"},{name:"Soria",country:"India",lang:"Hindi",rol3:"hin",pct_christian:62.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.2,lng:77.09,code:"PG048955"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Naga, Tangkhul",country:"United States",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.85,lng:-96.97,code:"PG050369"},{name:"Pulayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:45,pop:154e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.06,lng:76.53,code:"PG041344"},{name:"Meghval",country:"India",lang:"Hindi",rol3:"hin",pct_christian:45,pop:377e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.87,lng:73.03,code:"PG041328"},{name:"Santal (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:45,pop:176e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.8,lng:87.48,code:"PG046353"},{name:"Naga, Khiamngan",country:"India",lang:"Naga, Khiamniungan",rol3:"kix",pct_christian:45,pop:56e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:26.17,lng:94.89,code:"PG042023"},{name:"Hmong",country:"Vietnam",lang:"Hmong Daw",rol3:"mww",pct_christian:35,pop:133e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.86,lng:103.59,code:"PG011142"},{name:"Malai Arayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:35,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:9.65,lng:76.66,code:"PG041952"},{name:"Paravar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:8.62,lng:77,code:"PG041743"},{name:"Madgi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:76500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.17,lng:79.45,code:"PG041802"},{name:"Gounder",country:"India",lang:"Tamil",rol3:"tam",pct_christian:25,pop:6e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.68,lng:78.22,code:"PG041906"},{name:"Maru",country:"China",lang:"Lhao Vo",rol3:"mhx",pct_christian:25,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.33,lng:98.43,code:"PG007279"},{name:"Kerala Mudali",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.44,lng:78.7,code:"PG049672"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"Godari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.69,lng:83.22,code:"PG049205"},{name:"Chamail",country:"India",lang:"Hindi",rol3:"hin",pct_christian:25,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:25.48,lng:85.95,code:"PG049469"},{name:"Ghogia",country:"India",lang:"Odia",rol3:"ory",pct_christian:25,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.15,lng:84.09,code:"PG049008"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"Arakala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:375,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.11,lng:83.4,code:"PG049160"},{name:"Mala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:7615e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.36,lng:79.51,code:"PG041263"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Ojha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:46e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.74,lng:78.25,code:"PG041974"},{name:"Badhi",country:"India",lang:"Hindi",rol3:"hin",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:29.95,lng:77.55,code:"PG041480"},{name:"Lahu Shi",country:"Thailand",lang:"Lahu Shi",rol3:"lhi",pct_christian:17.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:18.98,lng:99.39,code:"PG010939"},{name:"Goudu",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.71,lng:83.25,code:"PG042158"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Black Karen",country:"Thailand",lang:"Pa’o",rol3:"blk",pct_christian:17.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.74,lng:98.06,code:"PG010829"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Bari (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.86,lng:84.8,code:"PG048204"},{name:"Candhai Maru",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.48,lng:83.97,code:"PG049648"},{name:"Madiga",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:9445e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.51,lng:79.06,code:"PG041253"},{name:"Chakkiliyan",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1205e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:77.71,code:"PG041373"},{name:"Nadua Shabar",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:659e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:19.9,lng:85.17,code:"PG049502"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Mannan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:145e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.8,lng:76.55,code:"PG041756"},{name:"Chakravar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.62,lng:77,code:"PG041956"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Samban",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.7,lng:77.49,code:"PG041752"},{name:"Mehtar",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:16.22,lng:75.63,code:"PG042116"},{name:"Panchama",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:7800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.01,lng:81.79,code:"PG042086"},{name:"Peranakan",country:"Malaysia",lang:"Malay",rol3:"zlm",pct_christian:12.5,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.4,lng:101.64,code:"PG018232"},{name:"Palliyan",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.89,lng:77.09,code:"PG049215"},{name:"Padigarajulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.58,lng:79.51,code:"PG049165"},{name:"Malayali",country:"Maldives",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:4.17,lng:73.51,code:"PG006163"},{name:"Kuda",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.83,lng:85.53,code:"PG049016"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Tharua",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.49,lng:86.93,code:"PG049031"},{name:"Gharrami",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:28.64,lng:77.12,code:"PG049392"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Nadar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:6365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.17,lng:77.82,code:"PG041309"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Vellalar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:308e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.78,lng:77.78,code:"PG041493"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Pano",country:"India",lang:"Odia",rol3:"ory",pct_christian:7.5,pop:1735e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:21.04,lng:85.14,code:"PG041345"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Indian - Hindu",country:"South Africa",lang:"Hindi",rol3:"hin",pct_christian:7.5,pop:1365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:-28.9,lng:26.75,code:"PG042180"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"},{name:"Cheruman",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:76.25,code:"PG041452"},{name:"Han Chinese, Mandarin",country:"Singapore",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020728"},{name:"Han Chinese",country:"Brazil",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-23.17,lng:-45.54,code:"PG016864"},{name:"Malayali",country:"Malaysia",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:206e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.64,code:"PG020224"},{name:"Han Chinese, Mandarin",country:"United Arab Emirates",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:202e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.67,lng:55.14,code:"PG049240"},{name:"Han Chinese, Mandarin",country:"North Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:184e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:39,lng:125.92,code:"PG007584"},{name:"Han Chinese",country:"France",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:172e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:48.2,lng:2.3,code:"PG023131"},{name:"Malayali",country:"United States",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:165e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:40.72,lng:-73.97,code:"PG043340"},{name:"Han Chinese, Mandarin",country:"Hong Kong",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:163e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050605"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Telugu",country:"Malaysia",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:137e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.62,code:"PG009356"},{name:"Ghanchi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:129e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.02,lng:73.03,code:"PG041585"},{name:"Han Chinese, Mandarin",country:"Saudi Arabia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.68,lng:46.74,code:"PG049246"},{name:"Han Chinese",country:"Tanzania",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:106e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-6.83,lng:39.25,code:"PG014935"},{name:"Han Chinese",country:"Italy",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:44.22,lng:10.5,code:"PG000330"},{name:"Han Chinese",country:"South Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:94500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.58,lng:127.64,code:"PG007589"},{name:"Han Chinese, Mandarin",country:"Tajikistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.57,lng:68.77,code:"PG049245"},{name:"Bharathar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:81e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:8.94,lng:76.82,code:"PG049578"}]},Afghanistan:{target_upg:68,target_pop:43626100,target_top_langs:["Pashto, Southern","Dari","Pashto, Northern","Hazaragi"],target_top_religion:"Islam",neighbors:[{name:"Romani, Balkan",country:"Italy",lang:"Romani, Balkan",rol3:"rmn",pct_christian:62.5,pop:2500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:45.54,lng:9.19,code:"PG000312"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Romani, Balkan",country:"Bulgaria",lang:"Romani, Balkan",rol3:"rmn",pct_christian:7.5,pop:267e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:42.86,lng:23.79,code:"PG000737"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"},{name:"Romani, Balkan",country:"France",lang:"Romani, Balkan",rol3:"rmn",pct_christian:3.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.84,lng:2.35,code:"PG000134"}]},Yemen:{target_upg:20,target_pop:41244500,target_top_langs:["Arabic, Sanaani","Arabic, Ta'izzi-Adeni","Arabic, Hadrami","Somali"],target_top_religion:"Islam",neighbors:[{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Hasidim",country:"United Kingdom",lang:"Hebrew",rol3:"heb",pct_christian:7.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:51.5,lng:-.17,code:"PG000648"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},Morocco:{target_upg:29,target_pop:38094500,target_top_langs:["Arabic, Moroccan","Tachelhit","Tamazight, Central Atlas","Tarifit"],target_top_religion:"Islam",neighbors:[]},Uzbekistan:{target_upg:34,target_pop:35401700,target_top_langs:["Uzbek, Northern","Tajik","Kazakh","Karakalpak"],target_top_religion:"Islam",neighbors:[{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Pole",country:"Uzbekistan",lang:"Polish",rol3:"pol",pct_christian:7.5,pop:3700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:41.31,lng:69.26,code:"PG024310"},{name:"Han Chinese",country:"Uzbekistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.33,lng:69.29,code:"PG024675"},{name:"Ukrainian",country:"Uzbekistan",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:47e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:41.31,lng:69.26,code:"PG024323"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Romanian",country:"Czech Republic",lang:"Romanian",rol3:"ron",pct_christian:25,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.07,lng:14.47,code:"PG050033"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Estonian",country:"Estonia",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:9e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:58.67,lng:25.55,code:"PG000779"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Estonian",country:"Canada",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043392"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Romanian",country:"Romania",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1637e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:45.84,lng:24.98,code:"PG000899"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Romanian",country:"Italy",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:13e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:44.5,lng:9.8,code:"PG048833"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Romanian",country:"Hungary",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.8,lng:20.84,code:"PG000835"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Romanian ",country:"Austria",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.18,lng:16.35,code:"PG049963"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Romanian",country:"Ireland",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:53.39,lng:-6.28,code:"PG048049"},{name:"Moldovan",country:"Canada",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.72,lng:-95.67,code:"PG047364"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Karakalpak",country:"Kazakhstan",lang:"Karakalpak",rol3:"kaa",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.62,lng:62.06,code:"PG024276"},{name:"Romanian",country:"Venezuela",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.48,lng:-66.88,code:"PG016490"}]},"Saudi Arabia":{target_upg:44,target_pop:31109500,target_top_langs:["Arabic, Najdi","Arabic, Hijazi","Bengali","Urdu"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Saudi Arabia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:24.68,lng:46.74,code:"PG049246"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Kela",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:20.46,lng:85.67,code:"PG042031"},{name:"Baiti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:23.24,lng:88.24,code:"PG042100"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Chhetri",country:"India",lang:"Nepali",rol3:"npi",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.34,lng:89.24,code:"PG041565"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Chagga",country:"Tanzania",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1185e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-3.29,lng:37.08,code:"PG014916"},{name:"Bhangi (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:699e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.15,lng:87.53,code:"PG048219"},{name:"Kora",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:279e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.29,lng:86.43,code:"PG041592"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Gurung",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:147e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.84,lng:90.63,code:"PG041693"},{name:"Nepali",country:"Bhutan",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.13,lng:89.79,code:"PG042388"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Damai (Nepali)",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:66500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.66,lng:89.08,code:"PG041874"},{name:"Koch",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.68,lng:88.93,code:"PG042084"},{name:"Kotal",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:42500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.42,lng:87.79,code:"PG041946"},{name:"Swahili",country:"Zambia",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-15.4,lng:28.31,code:"PG015634"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Doai",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.05,lng:88.57,code:"PG042134"},{name:"Sarki",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.96,lng:88.33,code:"PG042059"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Paharia",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.37,lng:86.02,code:"PG049049"},{name:"Behera",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.44,code:"PG041569"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Zanzibari",country:"South Africa",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-29.84,lng:30.93,code:"PG015550"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"},{name:"Kusunda",country:"Nepal",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.17,lng:85.13,code:"PG049141"}]},Ethiopia:{target_upg:33,target_pop:30668900,target_top_langs:["Somali","Amharic","Oromo, West Central","Oromo, Borana-Arsi-Guji"],target_top_religion:"Islam",neighbors:[{name:"Sidama",country:"Ethiopia",lang:"Sidamo",rol3:"sid",pct_christian:62.5,pop:524e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.66,lng:38.54,code:"PG011635"},{name:"Koorete",country:"Ethiopia",lang:"Koorete",rol3:"kqy",pct_christian:62.5,pop:252e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.79,lng:37.83,code:"PG011608"},{name:"Basketo",country:"Ethiopia",lang:"Basketo",rol3:"bst",pct_christian:62.5,pop:127e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.26,lng:36.56,code:"PG011552"},{name:"Konso",country:"Ethiopia",lang:"Konso",rol3:"kxc",pct_christian:45,pop:407e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:5.35,lng:37.39,code:"PG011607"},{name:"Naath",country:"Ethiopia",lang:"Nuer",rol3:"nus",pct_christian:45,pop:25e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:8.29,lng:34.17,code:"PG011572"},{name:"Oyda",country:"Ethiopia",lang:"Oyda",rol3:"oyd",pct_christian:45,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.18,lng:36.81,code:"PG011629"},{name:"Bussa",country:"Ethiopia",lang:"Mositacha",rol3:"dox",pct_christian:45,pop:31e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.75,lng:37.22,code:"PG042702"},{name:"Wolaitta",country:"Ethiopia",lang:"Wolaytta",rol3:"wal",pct_christian:35,pop:305e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.68,lng:37.63,code:"PG011653"},{name:"Hadiyya",country:"Ethiopia",lang:"Hadiyya",rol3:"hdy",pct_christian:35,pop:2255e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.48,lng:37.77,code:"PG011591"},{name:"Gedeo",country:"Ethiopia",lang:"Gedeo",rol3:"drs",pct_christian:35,pop:158e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.15,lng:38.28,code:"PG011567"},{name:"Kambata",country:"Ethiopia",lang:"Kambaata",rol3:"ktb",pct_christian:35,pop:1025e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.29,lng:37.83,code:"PG011602"},{name:"Meen",country:"Ethiopia",lang:"Me’en",rol3:"mym",pct_christian:35,pop:242e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:6.86,lng:35.75,code:"PG011617"},{name:"Melo",country:"Ethiopia",lang:"Melo",rol3:"mfx",pct_christian:35,pop:168e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.51,lng:36.68,code:"PG011618"},{name:"Gidole",country:"Ethiopia",lang:"Dirasha",rol3:"gdl",pct_christian:35,pop:67e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.63,lng:37.38,code:"PG011583"},{name:"Tambaro",country:"Ethiopia",lang:"Kambaata",rol3:"ktb",pct_christian:25,pop:158e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.26,lng:37.48,code:"PG011648"},{name:"Guji",country:"Ethiopia",lang:"Oromo, Borana-Arsi-Guji",rol3:"gax",pct_christian:17.5,pop:938e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:6.17,lng:39.39,code:"PG011557"},{name:"Dawro",country:"Ethiopia",lang:"Dawro",rol3:"dwr",pct_christian:17.5,pop:88e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:6.97,lng:37.1,code:"PG011568"},{name:"Gofa",country:"Ethiopia",lang:"Gofa",rol3:"gof",pct_christian:17.5,pop:59e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.27,lng:37.17,code:"PG011587"},{name:"Gamo",country:"Ethiopia",lang:"Gamo",rol3:"gmv",pct_christian:12.5,pop:18e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.26,lng:37.18,code:"PG011579"},{name:"Chara",country:"Ethiopia",lang:"Tsaara",rol3:"cra",pct_christian:12.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.35,lng:36.16,code:"PG011565"},{name:"Dache",country:"Ethiopia",lang:"Gamo",rol3:"gmv",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:5.96,lng:37.53,code:"PG042703"},{name:"Kachama",country:"Ethiopia",lang:"Kachama-Ganjule",rol3:"kcx",pct_christian:7.5,pop:4100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.88,lng:37.48,code:"PG011600"},{name:"Borana",country:"Ethiopia",lang:"Oromo, Borana-Arsi-Guji",rol3:"gax",pct_christian:3.5,pop:965e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:4.91,lng:38.51,code:"PG011558"},{name:"Ari",country:"Ethiopia",lang:"Aari",rol3:"aiw",pct_christian:3.5,pop:472e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:5.88,lng:36.5,code:"PG011548"},{name:"Mesqan",country:"Ethiopia",lang:"Mesqan",rol3:"mvz",pct_christian:3.5,pop:317e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:8.12,lng:38.39,code:"PG050130"},{name:"Zayse",country:"Ethiopia",lang:"Zayse",rol3:"zay",pct_christian:3.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.78,lng:37.38,code:"PG011659"},{name:"Gorose",country:"Ethiopia",lang:"Ale",rol3:"gwd",pct_christian:3.5,pop:7200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.46,lng:37.44,code:"PG042713"},{name:"Amhara",country:"Canada",lang:"Amharic",rol3:"amh",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG047403"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Eritreans",country:"Kenya",lang:"Tigrigna",rol3:"tir",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-1.3,lng:36.86,code:"PG050216"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Komo",country:"Sudan",lang:"Komo (Sudan)",rol3:"xom",pct_christian:3.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.82,lng:34.09,code:"PG012072"},{name:"Eritreans",country:"Uganda",lang:"Tigrigna",rol3:"tir",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:.34,lng:32.6,code:"PG050217"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Ethiopian, Oromo",country:"United States",lang:"Oromo, West Central",rol3:"gaz",pct_christian:3.5,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.9,lng:-77.19,code:"PG047338"}]},Niger:{target_upg:30,target_pop:27011e3,target_top_langs:["Hausa","Zarma","Fulfulde, Western Niger","Tamajaq, Tawallammat"],target_top_religion:"Islam",neighbors:[{name:"Gurma",country:"Niger",lang:"Gourmanchéma",rol3:"gux",pct_christian:3.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:12.86,lng:1.82,code:"PG013599"},{name:"Yoruba",country:"Niger",lang:"Yoruba",rol3:"yor",pct_christian:3.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:13.51,lng:2.12,code:"PG013615"},{name:"Burkina Faso",country:"Canada",lang:"Moore",rol3:"mos",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:43.83,lng:-79.46,code:"PG047453"},{name:"Mossi",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:8335e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.73,lng:-1.3,code:"PG012424"},{name:"Mossi",country:"Ghana",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:526e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:5.57,lng:-.22,code:"PG013360"},{name:"Zaore",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:68e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.36,lng:-1.52,code:"PG012427"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mossi",country:"United States",lang:"Moore",rol3:"mos",pct_christian:3.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.74,lng:-73.72,code:"PG047647"}]},"Korea, North":{target_upg:2,target_pop:263e5,target_top_langs:["Korean","Language unknown"],target_top_religion:"Non-Religious",neighbors:[{name:"Han Chinese, Mandarin",country:"North Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:184e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:39,lng:125.92,code:"PG007584"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Korean",country:"Argentina",lang:"Korean",rol3:"kor",pct_christian:25,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG046918"},{name:"Korean",country:"Singapore",lang:"Korean",rol3:"kor",pct_christian:25,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:1.36,lng:103.82,code:"PG010710"},{name:"Korean",country:"Taiwan",lang:"Korean",rol3:"kor",pct_christian:25,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.63,lng:120.33,code:"PG007526"},{name:"Korean",country:"Northern Mariana Islands",lang:"Korean",rol3:"kor",pct_christian:25,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:15.91,lng:145.61,code:"PG050228"},{name:"Korean",country:"Australia",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:167e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-33.85,lng:151.03,code:"PG021625"},{name:"Korean",country:"Canada",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:46.93,lng:-92.67,code:"PG043424"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"United Kingdom",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.5,lng:-.17,code:"PG000650"},{name:"Korean",country:"New Zealand",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-36.89,lng:174.78,code:"PG047592"},{name:"Korean",country:"Hong Kong",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.38,lng:114.13,code:"PG050601"},{name:"Korean",country:"Paraguay",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.3,lng:-57.56,code:"PG017246"},{name:"Korean",country:"Guam",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.44,lng:144.78,code:"PG050301"},{name:"Korean",country:"Dominican Republic",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:18.48,lng:-69.91,code:"PG022409"},{name:"Korean",country:"South Korea",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:5025e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.38,lng:127.82,code:"PG048088"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Korean",country:"Mozambique",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.89,lng:32.57,code:"PG015382"},{name:"Korean",country:"Madagascar",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-18.91,lng:47.53,code:"PG015310"},{name:"Korean",country:"Honduras",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:14.08,lng:-87.2,code:"PG024788"},{name:"Korean",country:"Brazil",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:48500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-23.57,lng:-46.57,code:"PG016974"},{name:"Korean",country:"Germany",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.12,lng:8.67,code:"PG000249"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Korean",country:"Kyrgyzstan",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:19500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:42.88,lng:74.63,code:"PG024358"},{name:"Korean",country:"Iran",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:17500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.7,lng:51.38,code:"PG024174"},{name:"Korean",country:"Guatemala",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:14.6,lng:-90.55,code:"PG024719"},{name:"Korean",country:"Turkmenistan",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:5200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:37.94,lng:58.39,code:"PG024622"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Korean",country:"France",lang:"Korean",rol3:"kor",pct_christian:3.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:48.84,lng:2.35,code:"PG000171"},{name:"Korean",country:"Spain",lang:"Korean",rol3:"kor",pct_christian:3.5,pop:2900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:40.41,lng:-3.69,code:"PG042347"},{name:"Korean",country:"Panama",lang:"Korean",rol3:"kor",pct_christian:3.5,pop:325,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:9.02,lng:-79.5,code:"PG024842"}]},Nepal:{target_upg:214,target_pop:26044700,target_top_langs:["Nepali","Maithili","Tharu, Dangaura","Newar"],target_top_religion:"Hinduism",neighbors:[{name:"Rai, Chamlinge",country:"Nepal",lang:"Chamling",rol3:"rab",pct_christian:25,pop:15e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.06,lng:86.49,code:"PG006185"},{name:"Chepang",country:"Nepal",lang:"Chepang",rol3:"cdm",pct_christian:7.5,pop:68500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:27.58,lng:84.79,code:"PG006189"},{name:"Rai, Sampange",country:"Nepal",lang:"Sampang",rol3:"rav",pct_christian:7.5,pop:14e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.57,lng:85.77,code:"PG006288"},{name:"Munda",country:"Nepal",lang:"Munda",rol3:"unx",pct_christian:7.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:26.75,lng:87.41,code:"PG006260"},{name:"Jirel",country:"Nepal",lang:"Jirel",rol3:"jul",pct_christian:7.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.8,lng:85.63,code:"PG006224"},{name:"Lepcha",country:"Nepal",lang:"Lepcha",rol3:"lep",pct_christian:7.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:26.86,lng:87.66,code:"PG006247"},{name:"Koi",country:"Nepal",lang:"Koyee",rol3:"kkt",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.15,lng:86.8,code:"PG006235"},{name:"Nawa Sherpa",country:"Nepal",lang:"Naaba",rol3:"nao",pct_christian:7.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.7,lng:87.34,code:"PG006265"},{name:"Danuwar",country:"Nepal",lang:"Danuwar",rol3:"dhw",pct_christian:3.5,pop:7e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.04,lng:86.13,code:"PG006196"},{name:"Santal",country:"Nepal",lang:"Santhali",rol3:"sat",pct_christian:3.5,pop:55500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:26.77,lng:86.99,code:"PG006289"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Han Chinese",country:"Nepal",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.71,lng:85.32,code:"PG006216"},{name:"Yakha",country:"Nepal",lang:"Yakkha",rol3:"ybh",pct_christian:3.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Other - Kirati",lat:27.08,lng:86.54,code:"PG006317"},{name:"Brahman (Hindi)",country:"Nepal",lang:"Hindi",rol3:"hin",pct_christian:3.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.43,lng:85.17,code:"PG045937"},{name:"Badhi",country:"Nepal",lang:"Jumli",rol3:"jml",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:28.3,lng:82.82,code:"PG049104"},{name:"Lhomi",country:"Nepal",lang:"Lhomi",rol3:"lhm",pct_christian:3.5,pop:7300,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:27.75,lng:86.08,code:"PG006248"},{name:"British",country:"Nepal",lang:"English",rol3:"eng",pct_christian:3.5,pop:3300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.71,lng:85.32,code:"PG006183"},{name:"Raji",country:"Nepal",lang:"Raji",rol3:"rji",pct_christian:3.5,pop:3100,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:28.61,lng:81.28,code:"PG006282"},{name:"Syuba",country:"Nepal",lang:"Syuba",rol3:"syw",pct_christian:3.5,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:27.45,lng:86.19,code:"PG006226"},{name:"Kusunda",country:"Nepal",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:275,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:27.17,lng:85.13,code:"PG049141"},{name:"Koirao",country:"India",lang:"Boro (India)",rol3:"brx",pct_christian:75,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:25.2,lng:94.05,code:"PG049766"},{name:"Majhi",country:"India",lang:"Majhi",rol3:"mjz",pct_christian:75,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.11,lng:88.35,code:"PG049075"},{name:"Ansari-Momin (Sadri)",country:"India",lang:"Sadri",rol3:"sck",pct_christian:75,pop:225,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.63,lng:85.55,code:"PG048700"},{name:"Hkauri",country:"China",lang:"Tibetan, Central",rol3:"bod",pct_christian:62.5,pop:40,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.55,lng:97.6,code:"PG022169"},{name:"Kharia",country:"India",lang:"Kharia",rol3:"khr",pct_christian:25,pop:889e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.47,lng:84.55,code:"PG041457"},{name:"Oraon",country:"Bhutan",lang:"Kurux",rol3:"kru",pct_christian:25,pop:4200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.88,lng:89.21,code:"PG001235"},{name:"Balmiki (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:17.5,pop:172e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.93,lng:78.08,code:"PG041289"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Domar",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:12.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:25.45,lng:80.38,code:"PG049077"},{name:"Hsifan",country:"Myanmar",lang:"Tibetan, Central",rol3:"bod",pct_christian:12.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Tibetan",lat:27.24,lng:97.64,code:"PG009445"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Dusadh",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:7.5,pop:691e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:25.23,lng:85.31,code:"PG041266"},{name:"Oraon",country:"India",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:551e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:24.4,lng:86.87,code:"PG041304"},{name:"Chamar (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:7.5,pop:1275e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.07,lng:80.62,code:"PG046031"},{name:"Amant",country:"India",lang:"Maithili",rol3:"mai",pct_christian:7.5,pop:244e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.04,lng:86.5,code:"PG042053"},{name:"Oraon",country:"Bangladesh",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.86,lng:88.88,code:"PG001195"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Badaik",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:47500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.23,lng:84.86,code:"PG042092"},{name:"Parhaiya",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.97,lng:84.3,code:"PG041928"},{name:"Chhetri",country:"India",lang:"Nepali",rol3:"npi",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.34,lng:89.24,code:"PG041565"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Kharwar (Khotta)",country:"India",lang:"Maithili",rol3:"mai",pct_christian:7.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.85,lng:87.96,code:"PG048298"},{name:"Yadava (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:8465e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.05,lng:84.06,code:"PG046313"},{name:"Chamar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:455e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.65,lng:84.13,code:"PG046025"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Boro",country:"India",lang:"Boro (India)",rol3:"brx",pct_christian:3.5,pop:1545e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.71,lng:89.29,code:"PG041371"},{name:"Kisan (Kurukh)",country:"India",lang:"Kurux",rol3:"kru",pct_christian:3.5,pop:544e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.1,lng:84.53,code:"PG041504"},{name:"Chamar (Maithili)",country:"India",lang:"Maithili",rol3:"mai",pct_christian:3.5,pop:43e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.09,lng:85.94,code:"PG046040"},{name:"Lohara",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:324e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:25.14,lng:87.24,code:"PG041542"},{name:"Gurung",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:147e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.84,lng:90.63,code:"PG041693"},{name:"Nepali",country:"Bhutan",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.13,lng:89.79,code:"PG042388"},{name:"Beldar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:115e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.35,lng:83.71,code:"PG048209"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Rajbhar",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:89e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.68,lng:80.47,code:"PG042085"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Damai (Nepali)",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:66500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.66,lng:89.08,code:"PG041874"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Binjhia",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22,lng:82.34,code:"PG042025"},{name:"Gond (Sadri) ",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.17,lng:85,code:"PG048262"},{name:"Sarki",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.96,lng:88.33,code:"PG042059"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Gorait",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.21,lng:85.33,code:"PG042169"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Boria",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:3.5,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.09,lng:82.01,code:"PG049076"},{name:"Sherpa",country:"Bhutan",lang:"Sherpa",rol3:"xsr",pct_christian:3.5,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Tibetan",lat:27.49,lng:89.64,code:"PG048796"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"},{name:"Dhamin",country:"India",lang:"Maithili",rol3:"mai",pct_christian:3.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.82,lng:87.13,code:"PG049396"}]},Mali:{target_upg:44,target_pop:22708100,target_top_langs:["Bamanankan","Soninke","Senoufo, Mamara","Fulfulde, Maasina"],target_top_religion:"Islam",neighbors:[{name:"Dogon",country:"Mali",lang:"Dogon, Toro So",rol3:"dts",pct_christian:3.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:14.21,lng:-3.27,code:"PG013545"},{name:"Bobo, Black",country:"Mali",lang:"Konabéré",rol3:"bbo",pct_christian:3.5,pop:48500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.6,lng:-4.54,code:"PG013536"},{name:"Burkina Faso",country:"Canada",lang:"Moore",rol3:"mos",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:43.83,lng:-79.46,code:"PG047453"},{name:"Mossi",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:8335e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.73,lng:-1.3,code:"PG012424"},{name:"Mossi",country:"Ghana",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:526e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:5.57,lng:-.22,code:"PG013360"},{name:"Zaore",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:68e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.36,lng:-1.52,code:"PG012427"},{name:"Fulfulde Masina",country:"Burkina Faso",lang:"Fulfulde, Maasina",rol3:"ffm",pct_christian:7.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:13.38,lng:-3.94,code:"PG012397"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mossi",country:"United States",lang:"Moore",rol3:"mos",pct_christian:3.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.74,lng:-73.72,code:"PG047647"}]},Somalia:{target_upg:20,target_pop:19407100,target_top_langs:["Somali","Maay","Swahili","Garre"],target_top_religion:"Islam",neighbors:[{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Chagga",country:"Tanzania",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1185e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-3.29,lng:37.08,code:"PG014916"},{name:"Swahili",country:"Zambia",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-15.4,lng:28.31,code:"PG015634"},{name:"Zanzibari",country:"South Africa",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-29.84,lng:30.93,code:"PG015550"}]},Malaysia:{target_upg:80,target_pop:18071880,target_top_langs:["Malay","Negeri Sembilan Malay","Bengali","Bajau, West Coast"],target_top_religion:"Islam",neighbors:[{name:"Chavacano",country:"Malaysia",lang:"Chavacano",rol3:"cbk",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:4.47,lng:118.57,code:"PG009226"},{name:"Bundu Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:45,pop:82e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.2,lng:116.43,code:"PG018481"},{name:"Tutoh Kenyah",country:"Malaysia",lang:"Long Wat",rol3:"ttw",pct_christian:45,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.86,lng:114.62,code:"PG019323"},{name:"Beketan",country:"Malaysia",lang:"Bukitan",rol3:"bkn",pct_christian:45,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:2.31,lng:113.01,code:"PG009208"},{name:"Central Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:35,pop:263e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:5.99,lng:116.62,code:"PG018484"},{name:"Tagal Murut",country:"Malaysia",lang:"Murut, Tahol",rol3:"mvv",pct_christian:35,pop:71e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:4.64,lng:116.14,code:"PG009348"},{name:"Southern Murut",country:"Malaysia",lang:"Lundayeh",rol3:"lnd",pct_christian:35,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.42,lng:115.51,code:"PG019277"},{name:"Tambunan Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:35,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.68,lng:116.39,code:"PG019283"},{name:"Madang",country:"Malaysia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:35,pop:23500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:3.5,lng:114.32,code:"PG009289"},{name:"Upper Kinabatangan",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:35,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.42,lng:116.97,code:"PG019329"},{name:"Central Murut",country:"Malaysia",lang:"Murut, Keningau",rol3:"kxi",pct_christian:35,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.35,lng:116.23,code:"PG018486"},{name:"Kalabit",country:"Malaysia",lang:"Kelabit",rol3:"kzi",pct_christian:35,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:3.76,lng:115.3,code:"PG009259"},{name:"Western Kenyah",country:"Malaysia",lang:"Uma’ Lasan",rol3:"xky",pct_christian:35,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:2.06,lng:114.21,code:"PG019333"},{name:"Sekapan",country:"Malaysia",lang:"Sekapan",rol3:"skp",pct_christian:35,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.6,lng:113.74,code:"PG018249"},{name:"Tungara",country:"Malaysia",lang:"Murut, Bookan",rol3:"bnb",pct_christian:35,pop:650,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:5.28,lng:116.53,code:"PG019322"},{name:"Bukar Sadong",country:"Malaysia",lang:"Bidayuh Serian",rol3:"sdo",pct_christian:25,pop:72500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.07,lng:110.62,code:"PG009221"},{name:"Sungai Dusun",country:"Malaysia",lang:"Kadazan, Labuk-Kinabatangan",rol3:"dtb",pct_christian:25,pop:62e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:5.68,lng:116.42,code:"PG019280"},{name:"Sugut Kadazan",country:"Malaysia",lang:"Sugut Dusun",rol3:"kzs",pct_christian:25,pop:19e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.13,lng:117.18,code:"PG019279"},{name:"Tobilang",country:"Malaysia",lang:"Tobilung",rol3:"tgb",pct_christian:25,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.56,lng:116.64,code:"PG009362"},{name:"Baram Kayan",country:"Malaysia",lang:"Kayan, Baram",rol3:"kys",pct_christian:25,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.53,lng:114.46,code:"PG009203"},{name:"Sinabu",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:25,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.3,lng:116.96,code:"PG019271"},{name:"Minokok Dusun",country:"Malaysia",lang:"Minokok",rol3:"mqq",pct_christian:25,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.46,lng:116.8,code:"PG018523"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Kimaragan",country:"Malaysia",lang:"Kimaragang",rol3:"kqr",pct_christian:17.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.53,lng:117.02,code:"PG009265"},{name:"Eastern Kadazan",country:"Malaysia",lang:"Kadazan, Labuk-Kinabatangan",rol3:"dtb",pct_christian:17.5,pop:31500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.58,lng:117.41,code:"PG020232"},{name:"Tidung",country:"Malaysia",lang:"Tidung, Northern",rol3:"ntd",pct_christian:17.5,pop:24500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.34,lng:117.7,code:"PG019289"},{name:"Tudan Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:17.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.01,lng:116.16,code:"PG019321"},{name:"Tambanua",country:"Malaysia",lang:"Tombonuo",rol3:"txa",pct_christian:17.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:6.39,lng:117.23,code:"PG019282"},{name:"Tempasuk Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:17.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.36,lng:116.55,code:"PG009358"},{name:"Balau",country:"Malaysia",lang:"Iban",rol3:"iba",pct_christian:17.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.32,lng:110.85,code:"PG009199"},{name:"Kwijau Dusun",country:"Malaysia",lang:"Kuijau",rol3:"dkr",pct_christian:17.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.43,lng:116.24,code:"PG009274"},{name:"Dusun Segama",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:17.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.16,lng:118.34,code:"PG020229"},{name:"Filipino",country:"Malaysia",lang:"Tagalog",rol3:"tgl",pct_christian:12.5,pop:874e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG018269"},{name:"Sea Dayak",country:"Malaysia",lang:"Iban",rol3:"iba",pct_christian:12.5,pop:68e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:2.27,lng:112.58,code:"PG009325"},{name:"Biatah",country:"Malaysia",lang:"Bidayuh, Biatah",rol3:"bth",pct_christian:12.5,pop:91e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:1.41,lng:110.32,code:"PG009211"},{name:"Rungus Dusun",country:"Malaysia",lang:"Rungus",rol3:"drg",pct_christian:12.5,pop:68e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.84,lng:116.91,code:"PG009320"},{name:"Sarawak Dayak",country:"Malaysia",lang:"Bidayuh, Bau",rol3:"sne",pct_christian:12.5,pop:31500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.46,lng:110.08,code:"PG009324"},{name:"Tutong",country:"Malaysia",lang:"Bisaya, Brunei",rol3:"bsb",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.35,lng:114.68,code:"PG019324"},{name:"Tuaran Dusun",country:"Malaysia",lang:"Lotud",rol3:"dtr",pct_christian:12.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.11,lng:116.24,code:"PG019320"},{name:"Lanas Lobu",country:"Malaysia",lang:"Lobu, Lanas",rol3:"ruu",pct_christian:12.5,pop:6100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.44,lng:116.54,code:"PG009276"},{name:"Millikin",country:"Malaysia",lang:"Remun",rol3:"lkj",pct_christian:12.5,pop:5500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.08,lng:110.66,code:"PG009300"},{name:"Peranakan",country:"Malaysia",lang:"Malay",rol3:"zlm",pct_christian:12.5,pop:5e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.4,lng:101.64,code:"PG018232"},{name:"Keningau Dusun",country:"Malaysia",lang:"Malay, Sabah",rol3:"msi",pct_christian:12.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.4,lng:116.19,code:"PG019337"},{name:"Baokan",country:"Malaysia",lang:"Murut, Bookan",rol3:"bnb",pct_christian:12.5,pop:4200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.28,lng:116.54,code:"PG009202"},{name:"Tampias Lobu",country:"Malaysia",lang:"Lobu, Tampias",rol3:"low",pct_christian:12.5,pop:4e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.74,lng:116.8,code:"PG019284"},{name:"Southern Kota Marudu",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:12.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.46,lng:116.83,code:"PG019276"},{name:"Dusun - Murut",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:12.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.34,lng:116.17,code:"PG020231"},{name:"Klias River Kadazan",country:"Malaysia",lang:"Kadazan, Klias River",rol3:"kqt",pct_christian:12.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.44,lng:115.63,code:"PG009270"},{name:"Han Chinese, Min Nan",country:"Malaysia",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:2375e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.94,lng:102.06,code:"PG046598"},{name:"Han Chinese, Cantonese",country:"Malaysia",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:19e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.65,lng:101.56,code:"PG046594"},{name:"Malayali",country:"Malaysia",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:206e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:3.07,lng:101.64,code:"PG020224"},{name:"Telugu",country:"Malaysia",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:137e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:3.07,lng:101.62,code:"PG009356"},{name:"Han Chinese, Hainanese",country:"Malaysia",lang:"Hainanese",rol3:"hnm",pct_christian:7.5,pop:79e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.07,lng:101.64,code:"PG046595"},{name:"Idahan Dusun",country:"Malaysia",lang:"Ida’an",rol3:"dbj",pct_christian:7.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.38,lng:118.38,code:"PG009252"},{name:"Timogun Murut",country:"Malaysia",lang:"Murut, Timugon",rol3:"tih",pct_christian:7.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.22,lng:115.85,code:"PG009361"},{name:"Kinabatangan Sungai",country:"Malaysia",lang:"Kadazan, Labuk-Kinabatangan",rol3:"dtb",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.54,lng:117.88,code:"PG019338"},{name:"Lara",country:"Malaysia",lang:"Bakati’, Rara",rol3:"lra",pct_christian:7.5,pop:17500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.59,lng:109.77,code:"PG009280"},{name:"Penan",country:"Malaysia",lang:"Penan, Eastern",rol3:"pez",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:3.59,lng:114.98,code:"PG018231"},{name:"Tatana",country:"Malaysia",lang:"Tatana",rol3:"txx",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.47,lng:115.52,code:"PG019285"},{name:"Kalabuan",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:7.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.4,lng:117.02,code:"PG009260"},{name:"Sembakung Murut",country:"Malaysia",lang:"Murut, Sembakung",rol3:"sbr",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.38,lng:116.43,code:"PG009334"},{name:"Sebuyau",country:"Malaysia",lang:"Iban",rol3:"iba",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.45,lng:110.55,code:"PG018247"},{name:"Bintulu",country:"Malaysia",lang:"Vaie",rol3:"bny",pct_christian:7.5,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.23,lng:112.98,code:"PG009212"},{name:"Selekau",country:"Malaysia",lang:"Kendayan",rol3:"knx",pct_christian:7.5,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:1.71,lng:109.77,code:"PG018250"},{name:"Rejang Kayan",country:"Malaysia",lang:"Kayan, Rejang",rol3:"ree",pct_christian:7.5,pop:7400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.55,lng:113.9,code:"PG018236"},{name:"Sonsogon",country:"Malaysia",lang:"Kimaragang",rol3:"kqr",pct_christian:7.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.5,lng:116.86,code:"PG019275"},{name:"Sibop Kenyah",country:"Malaysia",lang:"Sebop",rol3:"sib",pct_christian:7.5,pop:4200,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:3.35,lng:114.3,code:"PG019270"},{name:"Kalabakan Murut",country:"Malaysia",lang:"Murut, Kalabakan",rol3:"kve",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:4.53,lng:117.34,code:"PG009258"},{name:"Serudung Murut",country:"Malaysia",lang:"Murut, Serudung",rol3:"srk",pct_christian:7.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.37,lng:117.31,code:"PG009338"},{name:"Saban",country:"Malaysia",lang:"Sa’ban",rol3:"snv",pct_christian:7.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.22,lng:115.4,code:"PG009321"},{name:"Dumpas",country:"Malaysia",lang:"Dumpas",rol3:"dmv",pct_christian:7.5,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.97,lng:117.35,code:"PG009244"},{name:"Rejang Punan",country:"Malaysia",lang:"Punan Bah-Biau",rol3:"pna",pct_christian:7.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.09,lng:113.39,code:"PG009319"},{name:"Tring",country:"Malaysia",lang:"Tring",rol3:"tgq",pct_christian:7.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:3.98,lng:114.64,code:"PG019319"},{name:"Selungai Murut",country:"Malaysia",lang:"Murut, Selungai",rol3:"slg",pct_christian:7.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.52,lng:116.43,code:"PG009330"},{name:"Tamil",country:"Malaysia",lang:"Tamil",rol3:"tam",pct_christian:3.5,pop:26e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:3.9,lng:104.29,code:"PG009351"},{name:"Han Chinese, English",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:3.5,pop:2395e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.04,lng:102.22,code:"PG046932"},{name:"Han Chinese, Mandarin",country:"Malaysia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:1015e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:4.14,lng:101.06,code:"PG046597"},{name:"Indonesian",country:"Malaysia",lang:"Indonesian",rol3:"ind",pct_christian:3.5,pop:343e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:3.07,lng:101.64,code:"PG020239"},{name:"Melanau",country:"Malaysia",lang:"Melanau, Central",rol3:"mel",pct_christian:3.5,pop:159e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:2.54,lng:111.89,code:"PG018518"},{name:"Coastal Kadazan",country:"Malaysia",lang:"Papar",rol3:"dpp",pct_christian:3.5,pop:137e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.43,lng:115.5,code:"PG020225"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Kanarese",country:"Malaysia",lang:"Kannada",rol3:"kan",pct_christian:3.5,pop:72e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:1.51,lng:103.76,code:"PG019334"},{name:"Semai",country:"Malaysia",lang:"Semai",rol3:"sea",pct_christian:3.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.11,lng:101.3,code:"PG009331"},{name:"Sinhalese",country:"Malaysia",lang:"Sinhala",rol3:"sin",pct_christian:3.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018261"},{name:"Burmese",country:"Malaysia",lang:"Burmese",rol3:"mya",pct_christian:3.5,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018483"},{name:"Temuan",country:"Malaysia",lang:"Temuan",rol3:"tmw",pct_christian:3.5,pop:22500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.56,lng:101.72,code:"PG009359"},{name:"Daro - Matu",country:"Malaysia",lang:"Melanau, Daro-Matu",rol3:"dro",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:2.62,lng:111.54,code:"PG020227"},{name:"British",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:3.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:3.07,lng:101.62,code:"PG009217"},{name:"Japanese",country:"Malaysia",lang:"Japanese",rol3:"jpn",pct_christian:3.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:3.07,lng:101.64,code:"PG020241"},{name:"Semelai",country:"Malaysia",lang:"Semelai",rol3:"sza",pct_christian:3.5,pop:8e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.05,lng:102.62,code:"PG009335"},{name:"Peluan",country:"Malaysia",lang:"Murut, Paluan",rol3:"plz",pct_christian:3.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.12,lng:116.24,code:"PG009313"},{name:"Jah Hut",country:"Malaysia",lang:"Jah Hut",rol3:"jah",pct_christian:3.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.59,lng:102.33,code:"PG009254"},{name:"Semoq Beri",country:"Malaysia",lang:"Semaq Beri",rol3:"szc",pct_christian:3.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.06,lng:102.85,code:"PG009333"},{name:"Narom",country:"Malaysia",lang:"Narom",rol3:"nrm",pct_christian:3.5,pop:5200,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:4.21,lng:113.93,code:"PG009306"},{name:"Lower Murut",country:"Malaysia",lang:"Murut, Timugon",rol3:"tih",pct_christian:3.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.18,lng:115.93,code:"PG020131"},{name:"Pandewan Murut",country:"Malaysia",lang:"Murut, Paluan",rol3:"plz",pct_christian:3.5,pop:2900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.13,lng:116.22,code:"PG018226"},{name:"Murik Kayan",country:"Malaysia",lang:"Murik (Malaysia)",rol3:"mxr",pct_christian:3.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.6,lng:114.41,code:"PG009305"},{name:"Bakong Kenyah",country:"Malaysia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:3.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:1.48,lng:114.55,code:"PG009198"},{name:"Bateq",country:"Malaysia",lang:"Batek",rol3:"btq",pct_christian:3.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.68,lng:102.47,code:"PG009204"},{name:"Bajau Bukit",country:"Malaysia",lang:"Papar",rol3:"dpp",pct_christian:3.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.6,lng:115.6,code:"PG018466"},{name:"Berawan",country:"Malaysia",lang:"Berawan, West",rol3:"zbw",pct_christian:3.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4,lng:114.71,code:"PG009210"},{name:"Orang Seletar",country:"Malaysia",lang:"Orang Seletar",rol3:"ors",pct_christian:3.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.6,lng:104.13,code:"PG018223"},{name:"Kayaman",country:"Malaysia",lang:"Kajaman",rol3:"kag",pct_christian:3.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.7,lng:114.06,code:"PG009262"},{name:"Siduan",country:"Malaysia",lang:"Melanau, Sibu",rol3:"sdx",pct_christian:3.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:2.33,lng:111.76,code:"PG009341"},{name:"Kanowit",country:"Malaysia",lang:"Melanau, Kanowit-Tanjong",rol3:"kxn",pct_christian:3.5,pop:425,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.06,lng:112.25,code:"PG009261"},{name:"Lanoh",country:"Malaysia",lang:"Lanoh",rol3:"lnh",pct_christian:3.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.1,lng:101.03,code:"PG009279"},{name:"Ukit",country:"Malaysia",lang:"Ukit",rol3:"umi",pct_christian:3.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.71,lng:113.04,code:"PG019326"},{name:"Tanjong",country:"Malaysia",lang:"Melanau, Kanowit-Tanjong",rol3:"kxn",pct_christian:3.5,pop:250,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.06,lng:112.25,code:"PG009353"},{name:"Sian",country:"Malaysia",lang:"Sihan (Malaysia)",rol3:"spg",pct_christian:3.5,pop:175,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.7,lng:113.83,code:"PG009339"},{name:"Batu Punan",country:"Malaysia",lang:"Punan Batu",rol3:"pnm",pct_christian:3.5,pop:125,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.21,lng:114.35,code:"PG018470"},{name:"Orang Kanaq",country:"Malaysia",lang:"Malay",rol3:"zlm",pct_christian:3.5,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.88,lng:104.03,code:"PG018222"},{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Soria",country:"India",lang:"Hindi",rol3:"hin",pct_christian:62.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.2,lng:77.09,code:"PG048955"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Meghval",country:"India",lang:"Hindi",rol3:"hin",pct_christian:45,pop:377e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.87,lng:73.03,code:"PG041328"},{name:"Gounder",country:"India",lang:"Tamil",rol3:"tam",pct_christian:25,pop:6e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.68,lng:78.22,code:"PG041906"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"Chamail",country:"India",lang:"Hindi",rol3:"hin",pct_christian:25,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:25.48,lng:85.95,code:"PG049469"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Badhi",country:"India",lang:"Hindi",rol3:"hin",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:29.95,lng:77.55,code:"PG041480"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Chakravar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.62,lng:77,code:"PG041956"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Han Chinese, Min Nan",country:"Canada",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:12.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:45.42,lng:-75.69,code:"PG047427"},{name:"Samban",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.7,lng:77.49,code:"PG041752"},{name:"Mehtar",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:16.22,lng:75.63,code:"PG042116"},{name:"Palliyan",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.89,lng:77.09,code:"PG049215"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Gharrami",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:28.64,lng:77.12,code:"PG049392"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Han Chinese, Min Nan",country:"China",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:3555e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:23.42,lng:115.05,code:"PG006805"},{name:"Nadar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:6365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.17,lng:77.82,code:"PG041309"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Vellalar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:308e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.78,lng:77.78,code:"PG041493"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Han Chinese, Min Nan",country:"Singapore",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:1785e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020729"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Indian - Hindu",country:"South Africa",lang:"Hindi",rol3:"hin",pct_christian:7.5,pop:1365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:-28.9,lng:26.75,code:"PG042180"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"}]},Russia:{target_upg:120,target_pop:17727020,target_top_langs:["Tatar","Chechen","Bashkort","Avar"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Russian Federation",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:62e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:51.07,lng:119.29,code:"PG048686"},{name:"Ukrainian",country:"Russian Federation",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:112e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:51.59,lng:82.8,code:"PG048814"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Finn",country:"Canada",lang:"Finnish",rol3:"fin",pct_christian:12.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:47.13,lng:-83.66,code:"PG043394"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Saami, Aanaar",country:"Finland",lang:"Finnish",rol3:"fin",pct_christian:12.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:69.11,lng:27.17,code:"PG000110"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Finn",country:"Finland",lang:"Finnish",rol3:"fin",pct_christian:3.5,pop:4975e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:64.5,lng:26.27,code:"PG000109"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Finn",country:"Sweden",lang:"Finnish",rol3:"fin",pct_christian:3.5,pop:223e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:58.52,lng:14.92,code:"PG000553"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Finn",country:"United States",lang:"Finnish",rol3:"fin",pct_christian:3.5,pop:39e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:46.89,lng:-88.69,code:"PG043240"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"}]},Cambodia:{target_upg:19,target_pop:17466400,target_top_langs:["Khmer","Vietnamese","Cham, Western","Chinese, Min Nan"],target_top_religion:"Buddhism",neighbors:[{name:"Thmaun",country:"Cambodia",lang:"Undetermined",rol3:"und",pct_christian:45,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:13.12,lng:106.43,code:"PG022376"},{name:"Stieng",country:"Cambodia",lang:"Stieng, Bulo",rol3:"sti",pct_christian:17.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.11,lng:106.45,code:"PG008194"},{name:"Jarai",country:"Cambodia",lang:"Jarai",rol3:"jra",pct_christian:7.5,pop:21e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:13.64,lng:107.44,code:"PG020437"},{name:"Kachok",country:"Cambodia",lang:"Kachok",rol3:"xkk",pct_christian:7.5,pop:3900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:13.93,lng:107.31,code:"PG020439"},{name:"Tamil",country:"Cambodia",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:11.55,lng:104.91,code:"PG008196"},{name:"Han Chinese",country:"Cambodia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:519e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:11.55,lng:104.87,code:"PG033445"},{name:"Phnong",country:"Cambodia",lang:"Mnong, Central",rol3:"cmo",pct_christian:3.5,pop:47500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.77,lng:106.83,code:"PG020443"},{name:"Brao",country:"Cambodia",lang:"Brao",rol3:"brb",pct_christian:3.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.32,lng:107.24,code:"PG018251"},{name:"Khmer Keh",country:"Cambodia",lang:"Khmer, Northern",rol3:"kxm",pct_christian:3.5,pop:5200,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Folk",lat:14.12,lng:106.34,code:"PG047854"},{name:"Rhade",country:"United States",lang:"Rade",rol3:"rad",pct_christian:62.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.17,lng:-80.8,code:"PG050362"},{name:"Rhade",country:"Vietnam",lang:"Rade",rol3:"rad",pct_christian:45,pop:331e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.96,lng:108.31,code:"PG011211"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Sin",country:"Laos",lang:"Lao",rol3:"lao",pct_christian:12.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:18.06,lng:105.09,code:"PG050561"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Burmese",country:"Malaysia",lang:"Burmese",rol3:"mya",pct_christian:3.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018483"},{name:"Lao",country:"Myanmar",lang:"Lao",rol3:"lao",pct_christian:3.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:16.85,lng:96.15,code:"PG009467"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"}]},Kazakhstan:{target_upg:39,target_pop:16547800,target_top_langs:["Kazakh","Uzbek, Northern","Uyghur","Tatar"],target_top_religion:"Islam",neighbors:[{name:"Latvian",country:"Kazakhstan",lang:"Latvian, Standard",rol3:"lvs",pct_christian:17.5,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:43.29,lng:76.91,code:"PG024285"},{name:"Ukrainian",country:"Kazakhstan",lang:"Ukrainian",rol3:"ukr",pct_christian:12.5,pop:415e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:48.48,lng:71.3,code:"PG024330"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Pole",country:"Kazakhstan",lang:"Polish",rol3:"pol",pct_christian:12.5,pop:62e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:43.29,lng:76.91,code:"PG024292"},{name:"Han Chinese, Mandarin",country:"Kazakhstan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:51.17,lng:71.45,code:"PG049243"},{name:"Karakalpak",country:"Kazakhstan",lang:"Karakalpak",rol3:"kaa",pct_christian:3.5,pop:1900,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:45.62,lng:62.06,code:"PG024276"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Romani, Sinte",country:"Canada",lang:"Romani, Sinte",rol3:"rmo",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.52,lng:-73.68,code:"PG043471"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Estonian",country:"Estonia",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:9e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:58.67,lng:25.55,code:"PG000779"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Estonian",country:"Canada",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043392"},{name:"Greek",country:"Czech Republic",lang:"Greek",rol3:"ell",pct_christian:7.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.82,lng:17.98,code:"PG048862"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"}]},Senegal:{target_upg:30,target_pop:15310200,target_top_langs:["Wolof","Pulaar","Maninkakan, Western","Mandinka"],target_top_religion:"Islam",neighbors:[{name:"Caboverdian Mestico",country:"Senegal",lang:"Kabuverdianu",rol3:"kea",pct_christian:12.5,pop:54e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:14.73,lng:-17.44,code:"PG014223"},{name:"English Creole",country:"Senegal",lang:"Krio",rol3:"kri",pct_christian:3.5,pop:9600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:14.73,lng:-17.44,code:"PG014225"},{name:"Papel",country:"Senegal",lang:"Papel",rol3:"pbo",pct_christian:3.5,pop:9600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.57,lng:-16.27,code:"PG014254"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mandyak",country:"Gambia",lang:"Mandjak",rol3:"mfv",pct_christian:3.5,pop:47e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:13.39,lng:-16.69,code:"PG013238"},{name:"Badyara",country:"Guinea-Bissau",lang:"Badyara",rol3:"pbp",pct_christian:3.5,pop:7300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.59,lng:-13.77,code:"PG013442"}]},"United States":{target_upg:98,target_pop:14806100,target_top_langs:["English","Hindi","Gujarati","Russian"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Mennonite",country:"United States",lang:"Plautdietsch",rol3:"pdt",pct_christian:62.5,pop:15500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.43,lng:-97.5,code:"PG043327"},{name:"Kachin, Rawang",country:"United States",lang:"Rawang",rol3:"raw",pct_christian:62.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.85,lng:-96.97,code:"PG050380"},{name:"Bunong",country:"United States",lang:"Mnong, Central",rol3:"cmo",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.28,lng:-80.21,code:"PG050338"},{name:"Rhade",country:"United States",lang:"Rade",rol3:"rad",pct_christian:62.5,pop:250,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.17,lng:-80.8,code:"PG050362"},{name:"Chin, Zomi",country:"United States",lang:"Zo",rol3:"zom",pct_christian:62.5,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:36.03,lng:-85.61,code:"PG050344"},{name:"Chin, Zotung",country:"United States",lang:"Chin, Zotung",rol3:"czt",pct_christian:62.5,pop:175,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:36.28,lng:-89.53,code:"PG050345"},{name:"Chin, Haka",country:"United States",lang:"Chin, Hakha",rol3:"cnh",pct_christian:62.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:37.35,lng:-90.04,code:"PG050340"},{name:"Naga, Tangkhul",country:"United States",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.85,lng:-96.97,code:"PG050369"},{name:"Niuean",country:"United States",lang:"Niue",rol3:"niu",pct_christian:62.5,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047289"},{name:"Chin, Falam",country:"United States",lang:"Chin, Falam",rol3:"cfm",pct_christian:62.5,pop:30,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.09,lng:-81.04,code:"PG050339"},{name:"Chin, Mara",country:"United States",lang:"Mara",rol3:"mrh",pct_christian:62.5,pop:30,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.09,lng:-81.04,code:"PG050341"},{name:"Chin, Tiddim",country:"United States",lang:"Chin, Tedim",rol3:"ctd",pct_christian:62.5,pop:30,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.09,lng:-81.04,code:"PG050342"},{name:"Kuripako",country:"United States",lang:"Curripaco",rol3:"kpc",pct_christian:45,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG043219"},{name:"Lisu",country:"United States",lang:"Lisu",rol3:"lis",pct_christian:45,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.05,lng:-112.65,code:"PG050353"},{name:"Koho",country:"United States",lang:"Koho",rol3:"kpm",pct_christian:35,pop:3100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.17,lng:-80.8,code:"PG050364"},{name:"French Polynesian",country:"United States",lang:"Tahitian",rol3:"tah",pct_christian:35,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047193"},{name:"Karen S'gaw",country:"United States",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:35,pop:325,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.35,lng:-119.02,code:"PG047263"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Yoruba",country:"United States",lang:"Yoruba",rol3:"yor",pct_christian:25,pop:152e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - African Traditional Religion",lat:38.9,lng:-77.19,code:"PG047644"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Bahamian",country:"United States",lang:"Bahamas English Creole",rol3:"bah",pct_christian:25,pop:33e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.18,lng:-80.23,code:"PG043531"},{name:"Marshallese",country:"United States",lang:"Marshallese",rol3:"mah",pct_christian:25,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047281"},{name:"Jarai",country:"United States",lang:"Jarai",rol3:"jra",pct_christian:25,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:35.17,lng:-80.8,code:"PG050355"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Rwandan",country:"United States",lang:"Kinyarwanda",rol3:"kin",pct_christian:25,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:40.74,lng:-73.72,code:"PG047295"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Motilon, Bari",country:"United States",lang:"Barí",rol3:"mot",pct_christian:25,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG043532"},{name:"Madi",country:"United States",lang:"Ma’di",rol3:"mhi",pct_christian:25,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:29.79,lng:-95.4,code:"PG050386"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"Zapotec, Cajonos",country:"United States",lang:"Zapotec, Cajonos",rol3:"zad",pct_christian:25,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.22,lng:-118.15,code:"PG049292"},{name:"Kachin, Jingpho",country:"United States",lang:"Jingpho",rol3:"kac",pct_christian:25,pop:175,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:31.43,lng:-96.28,code:"PG047264"},{name:"Marquesan",country:"United States",lang:"Marquesan, North",rol3:"mrq",pct_christian:25,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:21.46,lng:-157.97,code:"PG047282"},{name:"Rarotongan",country:"United States",lang:"Cook Islands Maori",rol3:"rar",pct_christian:25,pop:100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047297"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Tzeltal",country:"United States",lang:"Tzeltal",rol3:"tzh",pct_christian:17.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.17,lng:-119.44,code:"PG049313"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Hutterite",country:"United States",lang:"Hutterisch",rol3:"geh",pct_christian:17.5,pop:7e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-104.13,code:"PG043273"},{name:"Montserratian",country:"United States",lang:"Leeward Caribbean English Creole",rol3:"aig",pct_christian:17.5,pop:5100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.18,lng:-80.23,code:"PG047292"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Melanesian",country:"United States",lang:"Tok Pisin",rol3:"tpi",pct_christian:17.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.78,lng:-121,code:"PG046504"},{name:"Mokilese",country:"United States",lang:"Mokilese",rol3:"mkj",pct_christian:17.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047278"},{name:"Kikuyu",country:"United States",lang:"Gikuyu",rol3:"kik",pct_christian:17.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:38.94,lng:-94.44,code:"PG050382"},{name:"Zapotec, Southern Rincon",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.36,lng:-109.45,code:"PG049308"},{name:"Puerto Rican",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:4035e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.35,lng:-95.96,code:"PG043603"},{name:"Filipino, Tagalog",country:"United States",lang:"Tagalog",rol3:"tgl",pct_christian:12.5,pop:252e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.26,lng:-104.56,code:"PG043239"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Latvian",country:"United States",lang:"Latvian, Standard",rol3:"lvs",pct_christian:12.5,pop:111e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:38.9,lng:-77.19,code:"PG043321"},{name:"Garifuna",country:"United States",lang:"Garifuna",rol3:"cab",pct_christian:12.5,pop:71500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:26.18,lng:-80.23,code:"PG047649"},{name:"American Samoan",country:"United States",lang:"Samoan",rol3:"smo",pct_christian:12.5,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:33.98,lng:-118.1,code:"PG043514"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Belizean",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:43500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:33.94,lng:-118.12,code:"PG047184"},{name:"Chol",country:"United States",lang:"Chol",rol3:"ctu",pct_christian:12.5,pop:39e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.17,lng:-119.44,code:"PG049314"},{name:"Tongan",country:"United States",lang:"Tongan",rol3:"ton",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:37.74,lng:-122.29,code:"PG043655"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Nahuatl, Isthmus",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:31.63,lng:-89.16,code:"PG049280"},{name:"Krio",country:"United States",lang:"Krio",rol3:"kri",pct_christian:12.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047260"},{name:"Trukese",country:"United States",lang:"Chuukese",rol3:"chk",pct_christian:12.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:21.46,lng:-157.97,code:"PG046505"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Palauan",country:"United States",lang:"Palauan",rol3:"pau",pct_christian:12.5,pop:4700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047310"},{name:"Fijian",country:"United States",lang:"Fijian",rol3:"fij",pct_christian:12.5,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.73,lng:-120.56,code:"PG043238"},{name:"Ewe",country:"United States",lang:"Éwé",rol3:"ewe",pct_christian:12.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:32.85,lng:-96.97,code:"PG050366"},{name:"Pueblo, Jemez",country:"United States",lang:"Jemez",rol3:"tow",pct_christian:12.5,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.68,lng:-106.79,code:"PG043288"},{name:"Mohawk",country:"United States",lang:"Mohawk",rol3:"moh",pct_christian:12.5,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:44.97,lng:-74.54,code:"PG043551"},{name:"Tolowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:41.9,lng:-124.16,code:"PG050627"},{name:"Sac & Fox Tribe of the Mississippi in Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:41.98,lng:-92.65,code:"PG043616"},{name:"Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.99,lng:-95.39,code:"PG043277"},{name:"Central Africans",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047190"},{name:"Kusaiean",country:"United States",lang:"Kosraean",rol3:"kos",pct_christian:12.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047209"},{name:"Tubatulabal",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:36.07,lng:-118.31,code:"PG043660"},{name:"Nez Perce",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-116.41,code:"PG043560"},{name:"Salinan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Folk Catholicism",lat:35.83,lng:-120.77,code:"PG050637"},{name:"Swazi",country:"United States",lang:"Swati",rol3:"ssw",pct_christian:12.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047227"},{name:"Chuj",country:"United States",lang:"Chuj",rol3:"cac",pct_christian:12.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:34.88,lng:-82.36,code:"PG049269"},{name:"Sac & Fox Nation of Missouri in Kansas and Nebraska",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.01,lng:-95.52,code:"PG050671"},{name:"Kwakwakaʼwakw",country:"United States",lang:"Kwakwala",rol3:"kwk",pct_christian:12.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.1,lng:-123.12,code:"PG047208"},{name:"Puinave",country:"United States",lang:"Puinave",rol3:"pui",pct_christian:12.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG043604"},{name:"Basotho",country:"United States",lang:"Sotho, Southern",rol3:"sot",pct_christian:12.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047274"},{name:"Bahnar",country:"United States",lang:"Bahnar",rol3:"bdq",pct_christian:12.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:35.17,lng:-80.8,code:"PG050336"},{name:"Haida",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:55.19,lng:-132.88,code:"PG043257"},{name:"Tokelauan",country:"United States",lang:"Tokelauan",rol3:"tkl",pct_christian:12.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047304"},{name:"Embu-Mbeere",country:"United States",lang:"Kiembu",rol3:"ebu",pct_christian:12.5,pop:100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.85,lng:-96.97,code:"PG050365"},{name:"Cayuga",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:60,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:42.55,lng:-79,code:"PG043191"},{name:"American, Spanish Speaking",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:2056e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.62,lng:-106.27,code:"PG043518"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Salvadoran",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:1915e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.62,lng:-108.3,code:"PG046515"},{name:"Chinese American",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:175e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG050453"},{name:"Dominican",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:1465e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.36,lng:-86.45,code:"PG046509"},{name:"Guatemalan",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:125e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.99,lng:-105.58,code:"PG046516"},{name:"Honduran",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:1105e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.51,lng:-104,code:"PG046517"},{name:"Haitian",country:"United States",lang:"Haitian Creole",rol3:"hat",pct_christian:7.5,pop:716e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:31.04,lng:-78.18,code:"PG046510"},{name:"Jamaican",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:588e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.14,lng:-77.63,code:"PG043284"},{name:"Detribalized Amerindian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:454e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.9,lng:-111.06,code:"PG043225"},{name:"Ecuadorian",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:432e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.55,lng:-86.97,code:"PG046525"},{name:"Brazilian",country:"United States",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:32e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.44,lng:-97.31,code:"PG046522"},{name:"Cape Verdean",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:309e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:37.42,lng:-74.94,code:"PG047254"},{name:"Nicaraguan",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:259e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:33.99,lng:-111.48,code:"PG046518"},{name:"Guyanese",country:"United States",lang:"Guyanese English Creole",rol3:"gyn",pct_christian:7.5,pop:245e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:40.72,lng:-73.86,code:"PG046526"},{name:"Igbo",country:"United States",lang:"Igbo",rol3:"ibo",pct_christian:7.5,pop:234e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.21,lng:-76.75,code:"PG047202"},{name:"Argentine",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:223e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.49,lng:-103.74,code:"PG046520"},{name:"Ghanaian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:204e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG046500"},{name:"Yucatec",country:"United States",lang:"Maya, Yucatec",rol3:"yua",pct_christian:7.5,pop:201e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:34.58,lng:-118.81,code:"PG047279"},{name:"Trinidadian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:174e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.69,lng:-73.86,code:"PG046512"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Malayali",country:"United States",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:165e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:40.72,lng:-73.97,code:"PG043340"},{name:"Chilean",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:147e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.62,lng:-116.39,code:"PG046523"},{name:"Pennsylvania Dutch",country:"United States",lang:"German, Pennsylvania",rol3:"pdc",pct_christian:7.5,pop:139e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.34,lng:-75.87,code:"PG043593"},{name:"Choctaw",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:121e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.5,lng:-95.33,code:"PG043202"},{name:"Bolivian",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:115e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.67,lng:-99.44,code:"PG046521"},{name:"Liberian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG047273"},{name:"Kenyan",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:96e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:33.32,lng:-92.72,code:"PG050473"},{name:"Ilocano",country:"United States",lang:"Ilocano",rol3:"ilo",pct_christian:7.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:21.46,lng:-157.97,code:"PG043275"},{name:"Nahuatl, Huasteca",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:87e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:33.97,lng:-84.02,code:"PG049279"},{name:"Anglo-Australian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:84e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.02,lng:-98.4,code:"PG043519"},{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Mam",country:"United States",lang:"Mam",rol3:"mam",pct_christian:7.5,pop:78500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:33.98,lng:-118.1,code:"PG047319"},{name:"Tzotzil",country:"United States",lang:"Tzotzil",rol3:"tzo",pct_christian:7.5,pop:76500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:37.59,lng:-122.17,code:"PG049309"},{name:"Swede",country:"United States",lang:"Swedish",rol3:"swe",pct_christian:7.5,pop:63e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:33.94,lng:-118.12,code:"PG043643"},{name:"Creek, Muskogee",country:"United States",lang:"Muskogee",rol3:"mus",pct_christian:7.5,pop:56500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.65,lng:-96.02,code:"PG043554"},{name:"Norwegian",country:"United States",lang:"Norwegian",rol3:"nor",pct_christian:7.5,pop:44500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:44.96,lng:-93.28,code:"PG043575"},{name:"Iu Mien",country:"United States",lang:"Iu Mien",rol3:"ium",pct_christian:7.5,pop:38500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:38.75,lng:-111.78,code:"PG043283"},{name:"Saint Lucian",country:"United States",lang:"Lesser Antillean French Creole",rol3:"acf",pct_christian:7.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:40.72,lng:-73.97,code:"PG047284"},{name:"Cree, Plains",country:"United States",lang:"Cree, Plains",rol3:"crk",pct_christian:7.5,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.71,lng:-102.69,code:"PG043683"},{name:"Blackfoot, Siksika",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:32e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.66,lng:-112.87,code:"PG043538"},{name:"O'odham, Tohono",country:"United States",lang:"Tohono O’odham",rol3:"ood",pct_christian:7.5,pop:30500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.15,lng:-112.07,code:"PG043670"},{name:"Potawatomi",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.34,lng:-95.84,code:"PG043601"},{name:"Chamorro",country:"United States",lang:"Chamorro",rol3:"cha",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:33.94,lng:-118.12,code:"PG047251"},{name:"Hopi, Hopitu-Shinumu",country:"United States",lang:"Hopi",rol3:"hop",pct_christian:7.5,pop:21e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.9,lng:-110.58,code:"PG043269"},{name:"Popti",country:"United States",lang:"Jakalteko",rol3:"jac",pct_christian:7.5,pop:20500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.61,lng:-80.17,code:"PG049284"},{name:"Tlingit",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:57.16,lng:-133.75,code:"PG043653"},{name:"Nahuatl, Northern Puebla",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:36.03,lng:-78.88,code:"PG049281"},{name:"Apache, Western",country:"United States",lang:"Apache, Western",rol3:"apw",pct_christian:7.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:33.88,lng:-110.16,code:"PG043682"},{name:"Nuer",country:"United States",lang:"Nuer",rol3:"nus",pct_christian:7.5,pop:15e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.82,lng:-96.97,code:"PG046705"},{name:"Comanche",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.56,lng:-98.43,code:"PG043209"},{name:"Cheyenne",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:45.53,lng:-106.68,code:"PG043198"},{name:"Azande",country:"United States",lang:"Zande",rol3:"zne",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:33.59,lng:-96.89,code:"PG046709"},{name:"Crow",country:"United States",lang:"Crow",rol3:"cro",pct_christian:7.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:45.4,lng:-107.76,code:"PG043215"},{name:"Afro-Grenadian",country:"United States",lang:"Grenadian English Creole",rol3:"gcl",pct_christian:7.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:41.29,lng:-75.74,code:"PG050350"},{name:"Pueblo, Santa Clara",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Native American religions",lat:35.98,lng:-106.22,code:"PG050653"},{name:"Zuni Pueblo",country:"United States",lang:"Zuni",rol3:"zun",pct_christian:7.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Native American religions",lat:35.09,lng:-108.74,code:"PG043703"},{name:"Shoshoni",country:"United States",lang:"Shoshoni",rol3:"shh",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:41.35,lng:-109.85,code:"PG043624"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Houma, Half-Choctaw",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:9500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:29.78,lng:-90.59,code:"PG043270"},{name:"Arapaho",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:9300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.15,lng:-102.16,code:"PG043524"},{name:"Flathead-Kalispel",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:47.5,lng:-114.28,code:"PG043241"},{name:"Han Chinese, Wu",country:"United States",lang:"Chinese, Wu",rol3:"wuu",pct_christian:7.5,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:40.74,lng:-73.72,code:"PG047187"},{name:"Zapotec, Loxicha",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:8e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Folk Catholicism",lat:32.79,lng:-117.08,code:"PG049324"},{name:"Paiute, Southern",country:"United States",lang:"Ute-Southern Paiute",rol3:"ute",pct_christian:7.5,pop:7600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.9,lng:-110.13,code:"PG043634"},{name:"Paiute, Northern",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:7400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.69,lng:-119.19,code:"PG043570"},{name:"Kiowa",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:7200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.01,lng:-98.78,code:"PG043305"}]},Guinea:{target_upg:30,target_pop:13009200,target_top_langs:["Pular","Maninkakan, Eastern","Susu","Konyanka"],target_top_religion:"Islam",neighbors:[{name:"Kissi",country:"Guinea",lang:"Kissi, Northern",rol3:"kqs",pct_christian:7.5,pop:646e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:8.89,lng:-10.2,code:"PG013412"},{name:"Baga Binari",country:"Guinea",lang:"Baga Pokur",rol3:"bcg",pct_christian:7.5,pop:4900,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.53,lng:-14.62,code:"PG042197"},{name:"Loko",country:"Guinea",lang:"Loko",rol3:"lok",pct_christian:7.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.34,lng:-12.86,code:"PG013423"},{name:"Kpelle",country:"Guinea",lang:"Kpelle, Guinea",rol3:"gkp",pct_christian:3.5,pop:6e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:7.83,lng:-8.89,code:"PG013413"},{name:"Toma",country:"Guinea",lang:"Toma",rol3:"tod",pct_christian:3.5,pop:331e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.8,lng:-9.82,code:"PG013433"},{name:"Dan Yakuba",country:"Liberia",lang:"Dan",rol3:"dnj",pct_christian:12.5,pop:245e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:6.83,lng:-8.77,code:"PG013483"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Dan Yakuba",country:"Cote d’Ivoire",lang:"Dan",rol3:"dnj",pct_christian:3.5,pop:1945e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:7.48,lng:-7.86,code:"PG013066"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mano",country:"Liberia",lang:"Maan",rol3:"mev",pct_christian:3.5,pop:44e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:6.87,lng:-8.98,code:"PG013517"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Badyara",country:"Guinea-Bissau",lang:"Badyara",rol3:"pbp",pct_christian:3.5,pop:7300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.59,lng:-13.77,code:"PG013442"}]},Tunisia:{target_upg:17,target_pop:12220300,target_top_langs:["Arabic, Tunisian","Arabic, Libyan","Arabic, Algerian","Arabic, Algerian Saharan"],target_top_religion:"Islam",neighbors:[{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"}]},Chad:{target_upg:82,target_pop:11754900,target_top_langs:["Arabic, Chadian","Kanembu","Dazaga","Maba (Chad)"],target_top_religion:"Islam",neighbors:[{name:"Goundo",country:"Chad",lang:"Kabalai",rol3:"kvf",pct_christian:45,pop:50,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:9.55,lng:16.2,code:"PG011355"},{name:"Nzakmbay",country:"Chad",lang:"Nzakambay",rol3:"nzy",pct_christian:25,pop:45500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.77,lng:15.86,code:"PG011438"},{name:"Ruto",country:"Chad",lang:"Luto",rol3:"ndy",pct_christian:25,pop:6400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.22,lng:18.44,code:"PG011443"},{name:"Besme",country:"Chad",lang:"Besme",rol3:"bes",pct_christian:25,pop:4e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.59,lng:16.09,code:"PG011321"},{name:"Mesme",country:"Chad",lang:"Mesme",rol3:"zim",pct_christian:17.5,pop:39e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.32,lng:15.53,code:"PG011414"},{name:"Mangbai",country:"Chad",lang:"Mambai",rol3:"mcs",pct_christian:12.5,pop:6400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.63,lng:14.06,code:"PG011400"},{name:"Pana",country:"Chad",lang:"Pana (Central African Republic)",rol3:"pnz",pct_christian:12.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.54,lng:15.7,code:"PG011439"},{name:"Nancere",country:"Chad",lang:"Nancere",rol3:"nnc",pct_christian:7.5,pop:231e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.28,lng:16.12,code:"PG011432"},{name:"Gabere",country:"Chad",lang:"Gabri",rol3:"gab",pct_christian:7.5,pop:84e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.35,lng:16.66,code:"PG042668"},{name:"Kaba-Lai",country:"Chad",lang:"Kabalai",rol3:"kvf",pct_christian:7.5,pop:58e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.41,lng:16.31,code:"PG011370"},{name:"Kaba",country:"Chad",lang:"Kabba",rol3:"ksp",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.85,lng:16.74,code:"PG011366"},{name:"Sara Gambai",country:"Chad",lang:"Ngambay",rol3:"sba",pct_christian:3.5,pop:2095e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.7,lng:15.82,code:"PG011447"},{name:"Musey",country:"Chad",lang:"Musey",rol3:"mse",pct_christian:3.5,pop:535e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.69,lng:15.3,code:"PG011312"},{name:"Mundang",country:"Chad",lang:"Mundang",rol3:"mua",pct_christian:3.5,pop:517e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.67,lng:14.62,code:"PG011430"},{name:"Marba",country:"Chad",lang:"Marba",rol3:"mpg",pct_christian:3.5,pop:397e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.52,lng:15.92,code:"PG042679"},{name:"Masa",country:"Chad",lang:"Masana",rol3:"mcn",pct_christian:3.5,pop:352e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.33,lng:15.61,code:"PG011403"},{name:"Sara Mbai",country:"Chad",lang:"Mbay",rol3:"myb",pct_christian:3.5,pop:267e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.29,lng:17.75,code:"PG011449"},{name:"Bediondo Mbai",country:"Chad",lang:"Bedjond",rol3:"bjv",pct_christian:3.5,pop:192e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.65,lng:17.28,code:"PG011318"},{name:"Karang Laka",country:"Chad",lang:"Laka",rol3:"lap",pct_christian:3.5,pop:188e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.02,lng:16.2,code:"PG011376"},{name:"Gor",country:"Chad",lang:"Kabba",rol3:"ksp",pct_christian:3.5,pop:163e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.8,lng:16.72,code:"PG042670"},{name:"Dai",country:"Chad",lang:"Day",rol3:"dai",pct_christian:3.5,pop:161e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.52,lng:17.55,code:"PG011334"},{name:"Kera",country:"Chad",lang:"Kera",rol3:"ker",pct_christian:3.5,pop:144e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.78,lng:15.18,code:"PG011382"},{name:"Ngama",country:"Chad",lang:"Ngam",rol3:"nmc",pct_christian:3.5,pop:135e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:8.52,lng:18.59,code:"PG011434"},{name:"Kaba Na",country:"Chad",lang:"Kaba Naa, Sara",rol3:"kwv",pct_christian:3.5,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.58,lng:18.93,code:"PG011369"},{name:"Kado",country:"Chad",lang:"Herdé",rol3:"hed",pct_christian:3.5,pop:104e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.36,lng:14.71,code:"PG011371"},{name:"Gulfe",country:"Chad",lang:"Malgbe",rol3:"mxf",pct_christian:3.5,pop:96e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:12.48,lng:14.92,code:"PG011359"},{name:"Lele",country:"Chad",lang:"Lele (Chad)",rol3:"lln",pct_christian:3.5,pop:89e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.15,lng:15.73,code:"PG011395"},{name:"Peve",country:"Chad",lang:"Pévé",rol3:"lme",pct_christian:3.5,pop:78e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.3,lng:14.58,code:"PG011441"},{name:"Sango",country:"Chad",lang:"Sango",rol3:"sag",pct_christian:3.5,pop:58e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.57,lng:16.07,code:"PG011446"},{name:"Gidar",country:"Chad",lang:"Gidar",rol3:"gid",pct_christian:3.5,pop:38e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.85,lng:14.2,code:"PG011351"},{name:"Kimre",country:"Chad",lang:"Kimré",rol3:"kqp",pct_christian:3.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.3,lng:16.88,code:"PG011385"},{name:"Mbum",country:"Chad",lang:"Mbum",rol3:"mdd",pct_christian:3.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.64,lng:15.64,code:"PG011412"},{name:"Kuo",country:"Chad",lang:"Kuo",rol3:"xuo",pct_christian:3.5,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.75,lng:15.75,code:"PG011393"},{name:"Mire",country:"Chad",lang:"Mulgi",rol3:"mvh",pct_christian:3.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.43,lng:16.3,code:"PG011419"},{name:"Kotoko-Kuseri",country:"Chad",lang:"Mser",rol3:"kqx",pct_christian:3.5,pop:3900,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:11.93,lng:15.11,code:"PG011388"},{name:"Gori",country:"Chad",lang:"Laal",rol3:"gdm",pct_christian:3.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:9.98,lng:17.62,code:"PG011353"},{name:"Miltu",country:"Chad",lang:"Miltu",rol3:"mlj",pct_christian:3.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.23,lng:17.41,code:"PG011416"},{name:"Bakole",country:"Cameroon",lang:"French",rol3:"fra",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:4.43,lng:8.97,code:"PG012493"},{name:"Mono",country:"Cameroon",lang:"Fulfulde, Adamawa",rol3:"fub",pct_christian:25,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:8.77,lng:14.12,code:"PG012705"},{name:"PoaPoa",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:25,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.87,lng:164.66,code:"PG018370"},{name:"Kotoko",country:"Cameroon",lang:"Lagwan",rol3:"kot",pct_christian:17.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:11.86,lng:14.9,code:"PG012650"},{name:"Euronesian",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:12.5,pop:58500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-17.56,lng:-149.57,code:"PG018408"},{name:"Euronesian",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-22.27,lng:166.45,code:"PG018406"},{name:"Aeke",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.07,lng:164.88,code:"PG009564"},{name:"French",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:7.5,pop:93500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.33,lng:165.49,code:"PG018389"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Sake",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:.07,lng:11.63,code:"PG013210"},{name:"Burundi",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050494"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Kaba Dunjo",country:"Central African Republic",lang:"Kaba Naa, Sara",rol3:"kwv",pct_christian:7.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:9.03,lng:19.98,code:"PG012874"},{name:"Kande",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.09,lng:11.75,code:"PG013189"},{name:"Chadian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.58,lng:-73.7,code:"PG050504"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"New Caledonian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.22,lng:-122.99,code:"PG047444"},{name:"Gabonese",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.9,lng:-77.19,code:"PG047191"},{name:"Chinese-Tahitian Creole",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:7.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.56,lng:-149.57,code:"PG018407"},{name:"Chadian",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:38.02,lng:-84.5,code:"PG047189"},{name:"Walloon",country:"Belgium",lang:"French",rol3:"fra",pct_christian:3.5,pop:3755e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.32,lng:4.95,code:"PG000076"},{name:"Swiss",country:"Switzerland",lang:"French",rol3:"fra",pct_christian:3.5,pop:2015e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.6,lng:6.93,code:"PG000585"},{name:"Tuburi",country:"Cameroon",lang:"Tupuri",rol3:"tui",pct_christian:3.5,pop:345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:10.27,lng:14.75,code:"PG012796"},{name:"Masa",country:"Cameroon",lang:"Masana",rol3:"mcn",pct_christian:3.5,pop:345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:10.29,lng:15.19,code:"PG012678"},{name:"Musgum",country:"Cameroon",lang:"Musgu",rol3:"mug",pct_christian:3.5,pop:239e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:10.9,lng:14.93,code:"PG012718"},{name:"Dakpa",country:"Central African Republic",lang:"Banda, West Central",rol3:"bbp",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:5.98,lng:20,code:"PG012849"},{name:"Franco-Mauritian",country:"Mauritius",lang:"French",rol3:"fra",pct_christian:3.5,pop:72500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.25,lng:57.51,code:"PG015346"},{name:"Romanian",country:"France",lang:"French",rol3:"fra",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000192"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"French Caribbean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.5,lng:-73.81,code:"PG047395"},{name:"Togolese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.52,lng:-73.68,code:"PG050478"},{name:"Congolese",country:"Spain",lang:"French",rol3:"fra",pct_christian:3.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.41,lng:-3.69,code:"PG042340"},{name:"Abenaki",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.07,lng:-72.82,code:"PG043348"},{name:"Ivorian",country:"United States",lang:"French",rol3:"fra",pct_christian:3.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047266"},{name:"Guinean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.5,lng:-73.81,code:"PG047454"},{name:"Sighu",country:"Gabon",lang:"French",rol3:"fra",pct_christian:3.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.84,lng:12.69,code:"PG013213"},{name:"Rwandan",country:"Netherlands",lang:"French",rol3:"fra",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:51.9,lng:4.47,code:"PG000430"},{name:"Gabonese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050505"},{name:"Maslam",country:"Cameroon",lang:"Maslam",rol3:"msv",pct_christian:3.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.22,lng:14.83,code:"PG012681"}]},Tajikistan:{target_upg:31,target_pop:10692e3,target_top_langs:["Tajik","Uzbek, Northern","Shughni","Language unknown"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Tajikistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:89500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:38.57,lng:68.77,code:"PG049245"},{name:"Ukrainian",country:"Tajikistan",lang:"Ukrainian",rol3:"ukr",pct_christian:7.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:38.57,lng:68.77,code:"PG024536"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"}]},Jordan:{target_upg:21,target_pop:10660500,target_top_langs:["Arabic, Levantine","Arabic, Eastern Egyptian Bedawi","Arabic, North Mesopotamian","Kabardian"],target_top_religion:"Islam",neighbors:[{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},Azerbaijan:{target_upg:26,target_pop:9953800,target_top_langs:["Azerbaijani, North","Talysh","Lezgi","Azerbaijani, South"],target_top_religion:"Islam",neighbors:[{name:"Ukrainian",country:"Kyrgyzstan",lang:"Ukrainian",rol3:"ukr",pct_christian:35,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:42.88,lng:74.63,code:"PG024375"},{name:"Ukrainian",country:"Turkmenistan",lang:"Ukrainian",rol3:"ukr",pct_christian:35,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.94,lng:58.39,code:"PG024648"},{name:"Romanian",country:"Czech Republic",lang:"Romanian",rol3:"ron",pct_christian:25,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.07,lng:14.47,code:"PG050033"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Ukrainian",country:"Kazakhstan",lang:"Ukrainian",rol3:"ukr",pct_christian:12.5,pop:415e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.48,lng:71.3,code:"PG024330"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Ukrainian",country:"United Kingdom",lang:"Ukrainian",rol3:"ukr",pct_christian:7.5,pop:33e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000692"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Ukrainian",country:"Tajikistan",lang:"Ukrainian",rol3:"ukr",pct_christian:7.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.57,lng:68.77,code:"PG024536"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Romanian",country:"Romania",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1637e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:45.84,lng:24.98,code:"PG000899"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Romanian",country:"Italy",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:13e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:44.5,lng:9.8,code:"PG048833"},{name:"Ukrainian",country:"Russian Federation",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:112e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.59,lng:82.8,code:"PG048814"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Ukrainian",country:"Canada",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:253e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.93,lng:-92.67,code:"PG043496"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Ukrainian",country:"Germany",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:145e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.72,lng:11.84,code:"PG000275"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Romanian",country:"Hungary",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.8,lng:20.84,code:"PG000835"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Romanian ",country:"Austria",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.18,lng:16.35,code:"PG049963"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Ukrainian",country:"Latvia",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:48500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:56.93,lng:24.12,code:"PG000850"},{name:"Ukrainian",country:"Uzbekistan",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:47e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.31,lng:69.26,code:"PG024323"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Ukrainian",country:"Poland",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:19.47,code:"PG000887"},{name:"Ukrainian",country:"Argentina",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017373"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Ukrainian",country:"Estonia",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:33500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:59.31,lng:24.93,code:"PG050308"},{name:"Romanian",country:"Ireland",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:53.39,lng:-6.28,code:"PG048049"},{name:"Ukrainian",country:"France",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:23e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000205"},{name:"Moldovan",country:"Canada",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.72,lng:-95.67,code:"PG047364"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Romanian",country:"Venezuela",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.48,lng:-66.88,code:"PG016490"}]},Vietnam:{target_upg:70,target_pop:9637e3,target_top_langs:["Tay","Muong","Khmer","Nung"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Central Mnong",country:"Vietnam",lang:"Mnong, Central",rol3:"cmo",pct_christian:62.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.5,lng:107.57,code:"PG011118"},{name:"Southern Mnong",country:"Vietnam",lang:"Mnong, Southern",rol3:"mnn",pct_christian:62.5,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:11.99,lng:107.56,code:"PG011224"},{name:"Rhade",country:"Vietnam",lang:"Rade",rol3:"rad",pct_christian:45,pop:331e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.96,lng:108.31,code:"PG011211"},{name:"Stieng",country:"Vietnam",lang:"Stieng, Bulo",rol3:"sti",pct_christian:45,pop:85500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:11.87,lng:107.08,code:"PG011226"},{name:"Maa",country:"Vietnam",lang:"Maa",rol3:"cma",pct_christian:45,pop:41500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:11.61,lng:107.49,code:"PG011179"},{name:"Chru",country:"Vietnam",lang:"Chru",rol3:"cje",pct_christian:45,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:11.69,lng:108.54,code:"PG011123"},{name:"Hmong",country:"Vietnam",lang:"Hmong Daw",rol3:"mww",pct_christian:35,pop:133e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.86,lng:103.59,code:"PG011142"},{name:"Koho",country:"Vietnam",lang:"Koho",rol3:"kpm",pct_christian:35,pop:166e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:11.63,lng:108.01,code:"PG011167"},{name:"Chrau",country:"Vietnam",lang:"Chrau",rol3:"crw",pct_christian:35,pop:27e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.91,lng:107.29,code:"PG011122"},{name:"Jarai",country:"Vietnam",lang:"Jarai",rol3:"jra",pct_christian:25,pop:411e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:13.93,lng:108.21,code:"PG011149"},{name:"Jeh",country:"Vietnam",lang:"Jeh",rol3:"jeh",pct_christian:25,pop:51e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.19,lng:107.91,code:"PG011150"},{name:"Eastern Mnong",country:"Vietnam",lang:"Mnong, Eastern",rol3:"mng",pct_christian:25,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.31,lng:108.34,code:"PG011128"},{name:"Trieng",country:"Vietnam",lang:"Trieng",rol3:"stg",pct_christian:25,pop:19e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.48,lng:107.55,code:"PG011239"},{name:"Halang",country:"Vietnam",lang:"Halang",rol3:"hal",pct_christian:25,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.62,lng:107.64,code:"PG011135"},{name:"O-du",country:"Vietnam",lang:"O’du",rol3:"tyh",pct_christian:17.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.48,lng:104.58,code:"PG020927"},{name:"Northern Roglai",country:"Vietnam",lang:"Roglai, Northern",rol3:"rog",pct_christian:12.5,pop:65e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.16,lng:108.85,code:"PG011190"},{name:"Brao",country:"Vietnam",lang:"Brao",rol3:"brb",pct_christian:12.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.17,lng:107.43,code:"PG011112"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Han Chinese, Cantonese",country:"Vietnam",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:784e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.03,lng:105.82,code:"PG046444"},{name:"Bahnar",country:"Vietnam",lang:"Bahnar",rol3:"bdq",pct_christian:7.5,pop:228e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.05,lng:108.45,code:"PG011108"},{name:"San Chay",country:"Vietnam",lang:"Cao Lan",rol3:"mlc",pct_christian:7.5,pop:17e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.86,lng:105.77,code:"PG011217"},{name:"Hre",country:"Vietnam",lang:"Hre",rol3:"hre",pct_christian:7.5,pop:127e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.7,lng:108.66,code:"PG011143"},{name:"Eastern Bru",country:"Vietnam",lang:"Bru, Eastern",rol3:"bru",pct_christian:7.5,pop:74500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:16.94,lng:106.67,code:"PG011126"},{name:"Lahu",country:"Vietnam",lang:"Lahu",rol3:"lhu",pct_christian:7.5,pop:9700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.56,lng:102.66,code:"PG011172"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Iu Mien",country:"Vietnam",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:433e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:22.01,lng:105.54,code:"PG011148"},{name:"Eastern Cham",country:"Vietnam",lang:"Cham, Eastern",rol3:"cjm",pct_christian:3.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:10.94,lng:107.68,code:"PG011127"},{name:"Cua",country:"Vietnam",lang:"Cua",rol3:"cua",pct_christian:3.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.15,lng:108.39,code:"PG011125"},{name:"Khao",country:"Vietnam",lang:"Khao",rol3:"xao",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:21.44,lng:103.48,code:"PG011159"},{name:"Romam",country:"Vietnam",lang:"Romam",rol3:"rmx",pct_christian:3.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.42,lng:107.55,code:"PG011212"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Akha",country:"Thailand",lang:"Akha",rol3:"ahk",pct_christian:17.5,pop:58e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:20.08,lng:99.66,code:"PG010820"},{name:"Sin",country:"Laos",lang:"Lao",rol3:"lao",pct_christian:12.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:18.06,lng:105.09,code:"PG050561"},{name:"Han Chinese, Cantonese",country:"China",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6477e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.94,lng:111.32,code:"PG006808"},{name:"Han Chinese, Cantonese",country:"Hong Kong",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6255e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050587"},{name:"Han Chinese, Cantonese",country:"Malaysia",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:19e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.65,lng:101.56,code:"PG046594"},{name:"Khmu, Ou",country:"Laos",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:817e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:102.58,code:"PG020913"},{name:"Han Chinese, Cantonese",country:"Macao",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:663e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.16,lng:113.56,code:"PG050584"},{name:"Han Chinese, Cantonese",country:"Singapore",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:511e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020725"},{name:"Han Chinese",country:"United Kingdom",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:196e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:51.5,lng:-.17,code:"PG043796"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Han Chinese, Cantonese",country:"Peru",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:117e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-12.05,lng:-77.02,code:"PG017533"},{name:"Han Chinese",country:"Panama",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:8.5,lng:-82.42,code:"PG024831"},{name:"Han Chinese",country:"Trinidad and Tobago",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:44500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.68,lng:-61.38,code:"PG016447"},{name:"Iu Mien",country:"United States",lang:"Iu Mien",rol3:"ium",pct_christian:7.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.75,lng:-111.78,code:"PG043283"},{name:"Han Chinese",country:"Laos",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:17.97,lng:102.64,code:"PG009111"},{name:"Han Chinese, Cantonese",country:"Venezuela",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.48,lng:-66.88,code:"PG016472"},{name:"Han Chinese",country:"Mexico",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:20.65,lng:-101.28,code:"PG024949"},{name:"Han Chinese, Cantonese",country:"Dominican Republic",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:18.48,lng:-69.91,code:"PG016322"},{name:"Han Chinese, Cantonese",country:"Ecuador",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:9600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-.18,lng:-78.49,code:"PG042924"},{name:"Han Chinese, Cantonese",country:"Belgium",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.85,lng:4.38,code:"PG000058"},{name:"Pako Kado",country:"Laos",lang:"Pacoh",rol3:"pac",pct_christian:7.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:16.41,lng:106.8,code:"PG050547"},{name:"Han Chinese, Cantonese",country:"Mauritius",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-20.24,lng:57.49,code:"PG015361"},{name:"Han Chinese",country:"Brunei",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:4.91,lng:114.92,code:"PG033444"},{name:"Han Chinese, Cantonese",country:"Honduras",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:14.08,lng:-87.2,code:"PG024760"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Han Chinese, Cantonese",country:"Guyana",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:6.8,lng:-58.15,code:"PG016362"},{name:"Pako Kanai",country:"Laos",lang:"Pacoh",rol3:"pac",pct_christian:7.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:16.53,lng:106.84,code:"PG050548"},{name:"Khmu",country:"France",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.88,lng:2.37,code:"PG048522"},{name:"Han Chinese, Cantonese",country:"Haiti",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:18.55,lng:-72.32,code:"PG016380"},{name:"Han Chinese, Cantonese",country:"United States",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:103e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.02,lng:-113.16,code:"PG043259"},{name:"Han Chinese, Cantonese",country:"Canada",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:569e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG047426"},{name:"Akha",country:"Myanmar",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:23e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:21.71,lng:99.8,code:"PG009402"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Mien",country:"Thailand",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:46500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:19.13,lng:100.45,code:"PG010890"},{name:"Ta Oi",country:"Laos",lang:"Ta’oih, Upper",rol3:"tth",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:16.08,lng:106.7,code:"PG020964"},{name:"Han Chinese",country:"Reunion",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-20.92,lng:55.51,code:"PG015468"},{name:"Neisu",country:"China",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.17,lng:100.64,code:"PG007334"},{name:"Lao",country:"Myanmar",lang:"Lao",rol3:"lao",pct_christian:3.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:16.85,lng:96.15,code:"PG009467"},{name:"Black Tai",country:"Thailand",lang:"Tai Dam",rol3:"blt",pct_christian:3.5,pop:25e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.92,lng:99.84,code:"PG010830"},{name:"Khmu",country:"United States",lang:"Khmu",rol3:"kjg",pct_christian:3.5,pop:9300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:32.77,lng:-117.08,code:"PG043302"},{name:"Macanese",country:"Macao",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:8900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.16,lng:113.56,code:"PG050585"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"},{name:"Ta-Oy Yin",country:"Laos",lang:"Ta’oih, Upper",rol3:"tth",pct_christian:3.5,pop:8500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:15.72,lng:106.48,code:"PG050569"},{name:"Meng",country:"China",lang:"Hani",rol3:"hni",pct_christian:3.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.89,lng:101.81,code:"PG007280"},{name:"Iu Mien",country:"France",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:43.61,lng:1.41,code:"PG000166"},{name:"Han Chinese, Cantonese",country:"Zimbabwe",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.83,lng:31.03,code:"PG015656"},{name:"Han Chinese",country:"Curacao",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:12.19,lng:-68.97,code:"PG016401"},{name:"Sadang Duan",country:"Laos",lang:"Sedang",rol3:"sed",pct_christian:3.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:14.73,lng:107.51,code:"PG050560"},{name:"Ta-Oy Haang",country:"Laos",lang:"Ta’oih, Upper",rol3:"tth",pct_christian:3.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:15.93,lng:106.55,code:"PG050565"}]},Israel:{target_upg:42,target_pop:9176590,target_top_langs:["Hebrew","Arabic, Levantine","Russian","Yiddish, Eastern"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Syrian Christian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:62.5,pop:4495e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:12.35,lng:76.09,code:"PG041308"},{name:"Pulayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:45,pop:154e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.06,lng:76.53,code:"PG041344"},{name:"Malai Arayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:35,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:9.65,lng:76.66,code:"PG041952"},{name:"Bakole",country:"Cameroon",lang:"French",rol3:"fra",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:4.43,lng:8.97,code:"PG012493"},{name:"Tupari",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:35,pop:175,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-12.09,lng:-63.32,code:"PG017148"},{name:"Paravar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:8.62,lng:77,code:"PG041743"},{name:"Koh",country:"India",lang:"Marathi",rol3:"mar",pct_christian:25,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.29,lng:76.9,code:"PG041285"},{name:"Mozambican",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.77,lng:-9.25,code:"PG000493"},{name:"Amhara",country:"Canada",lang:"Amharic",rol3:"amh",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG047403"},{name:"Romanian",country:"Czech Republic",lang:"Romanian",rol3:"ron",pct_christian:25,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.07,lng:14.47,code:"PG050033"},{name:"Kerala Mudali",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.44,lng:78.7,code:"PG049672"},{name:"PoaPoa",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:25,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.87,lng:164.66,code:"PG018370"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Brazilian",country:"French Guiana",lang:"Portuguese",rol3:"por",pct_christian:17.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:4.92,lng:-52.3,code:"PG016329"},{name:"Machineri",country:"Bolivia",lang:"Portuguese",rol3:"por",pct_christian:17.5,pop:35,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-10.96,lng:-69.48,code:"PG046933"},{name:"Mang",country:"India",lang:"Marathi",rol3:"mar",pct_christian:12.5,pop:304e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:20.38,lng:76.05,code:"PG041315"},{name:"Brazilian",country:"Paraguay",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:461e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-25.3,lng:-57.56,code:"PG046804"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Mannan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:145e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.8,lng:76.55,code:"PG041756"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Pole",country:"Kazakhstan",lang:"Polish",rol3:"pol",pct_christian:12.5,pop:62e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:43.29,lng:76.91,code:"PG024292"},{name:"Euronesian",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:12.5,pop:58500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-17.56,lng:-149.57,code:"PG018408"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Euronesian",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-22.27,lng:166.45,code:"PG018406"},{name:"Sao Tomean",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:8500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.65,lng:-9.1,code:"PG000499"},{name:"Malayali",country:"Maldives",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:4.17,lng:73.51,code:"PG006163"},{name:"Brazilian",country:"Austria",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:48.18,lng:16.35,code:"PG000009"},{name:"Aeke",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.07,lng:164.88,code:"PG009564"},{name:"Kanoe",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:325,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-11.73,lng:-62.68,code:"PG016942"},{name:"Brazilian",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:20624e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-12.63,lng:-48.09,code:"PG016600"},{name:"Cheruman",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:76.25,code:"PG041452"},{name:"Brazilian",country:"United States",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:32e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:34.44,lng:-97.31,code:"PG046522"},{name:"Brazilian",country:"United Kingdom",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:275e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:51.5,lng:-.17,code:"PG048432"},{name:"Malayali",country:"Malaysia",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:206e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.64,code:"PG020224"},{name:"Brazilian",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:182e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.04,lng:-8.79,code:"PG000471"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Malayali",country:"United States",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:165e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:40.72,lng:-73.97,code:"PG043340"},{name:"French",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:7.5,pop:93500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.33,lng:165.49,code:"PG018389"},{name:"Angolan",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:80500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39,lng:-9.17,code:"PG000467"},{name:"Brazilian",country:"Italy",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:46500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:45.54,lng:9.19,code:"PG048554"},{name:"Mang Garodi",country:"India",lang:"Marathi",rol3:"mar",pct_christian:7.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.57,lng:74.08,code:"PG041892"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Hasidim",country:"United Kingdom",lang:"Hebrew",rol3:"heb",pct_christian:7.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:51.5,lng:-.17,code:"PG000648"},{name:"Uraly",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:29500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.85,lng:75.26,code:"PG041815"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Brazilian",country:"Canada",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:43.83,lng:-79.46,code:"PG047367"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Brazilian",country:"Switzerland",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:47.43,lng:8.44,code:"PG048542"},{name:"Malai Vedan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:18500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:9.91,lng:77.99,code:"PG042150"},{name:"Portuguese",country:"Argentina",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-34.65,lng:-58.56,code:"PG017360"},{name:"Brazilian",country:"Belgium",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:50.85,lng:4.38,code:"PG047834"},{name:"Sake",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:.07,lng:11.63,code:"PG013210"},{name:"Burundi",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050494"},{name:"Brazilian",country:"Guyana",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:6.49,lng:-58.12,code:"PG016369"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Kokama",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:9600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-3.43,lng:-64.82,code:"PG016815"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Brazilian",country:"Jamaica",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:6e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.05,lng:-76.95,code:"PG016388"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Pole",country:"Uzbekistan",lang:"Polish",rol3:"pol",pct_christian:7.5,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:41.31,lng:69.26,code:"PG024310"},{name:"Tremembe",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-3.09,lng:-40.02,code:"PG017135"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Kande",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.09,lng:11.75,code:"PG013189"},{name:"Chadian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.58,lng:-73.7,code:"PG050504"},{name:"New Caledonian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.22,lng:-122.99,code:"PG047444"},{name:"Rikbaktsa",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-11.27,lng:-58.27,code:"PG017085"},{name:"Kambeba",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-3.17,lng:-64.85,code:"PG016936"},{name:"Miranha",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-2.86,lng:-64.74,code:"PG017022"},{name:"Gabonese",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.9,lng:-77.19,code:"PG047191"},{name:"Makurap",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:475,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-12.56,lng:-62.57,code:"PG017001"},{name:"Chinese-Tahitian Creole",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:7.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.56,lng:-149.57,code:"PG018407"},{name:"Chadian",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:38.02,lng:-84.5,code:"PG047189"},{name:"Kariri",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-7.27,lng:-39.77,code:"PG016956"},{name:"Romanian",country:"Romania",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1637e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:45.84,lng:24.98,code:"PG000899"},{name:"Variyar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:1417e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:12.13,lng:78.55,code:"PG042083"},{name:"Izhattu Pillaimar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:852e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.6,lng:77.56,code:"PG041254"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Walloon",country:"Belgium",lang:"French",rol3:"fra",pct_christian:3.5,pop:3755e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.32,lng:4.95,code:"PG000076"},{name:"Swiss",country:"Switzerland",lang:"French",rol3:"fra",pct_christian:3.5,pop:2015e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.6,lng:6.93,code:"PG000585"},{name:"Kokna",country:"India",lang:"Marathi",rol3:"mar",pct_christian:3.5,pop:136e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.59,lng:73.8,code:"PG041403"},{name:"Romanian",country:"Italy",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:13e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:44.5,lng:9.8,code:"PG048833"},{name:"Portuguese",country:"France",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:984e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.39,lng:2.44,code:"PG000186"},{name:"Portuguese",country:"United States",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:861e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:39.45,lng:-96.6,code:"PG046462"},{name:"Portuguese",country:"Canada",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:307e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.93,lng:-92.67,code:"PG043365"},{name:"Thandan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:285e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.05,lng:76.86,code:"PG041497"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Portuguese",country:"Venezuela",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.47,lng:-69.1,code:"PG016488"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Romanian",country:"Hungary",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.8,lng:20.84,code:"PG000835"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Romanian ",country:"Austria",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.18,lng:16.35,code:"PG049963"},{name:"Franco-Mauritian",country:"Mauritius",lang:"French",rol3:"fra",pct_christian:3.5,pop:72500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.25,lng:57.51,code:"PG015346"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Hungarian",country:"Austria",lang:"Hungarian",rol3:"hun",pct_christian:3.5,pop:64500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.59,lng:16.37,code:"PG000021"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Kurichian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:52500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:11.72,lng:76.1,code:"PG041910"},{name:"Hungarian",country:"Canada",lang:"Hungarian",rol3:"hun",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:43.83,lng:-79.46,code:"PG043408"},{name:"Sillekyatha",country:"India",lang:"Marathi",rol3:"mar",pct_christian:3.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.11,lng:76.53,code:"PG042138"},{name:"Romanian",country:"Ireland",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:53.39,lng:-6.28,code:"PG048049"},{name:"Bissau-Guineans",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:39,lng:-9.17,code:"PG000482"},{name:"Moldovan",country:"Canada",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.72,lng:-95.67,code:"PG047364"},{name:"Romanian",country:"France",lang:"French",rol3:"fra",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000192"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Portuguese",country:"Macao",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:22.16,lng:113.56,code:"PG050586"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Kummara , Kusuvan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:12.31,lng:75.54,code:"PG048341"},{name:"French Caribbean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.5,lng:-73.81,code:"PG047395"},{name:"Togolese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.52,lng:-73.68,code:"PG050478"},{name:"Congolese",country:"Spain",lang:"French",rol3:"fra",pct_christian:3.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.41,lng:-3.69,code:"PG042340"},{name:"Abenaki",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.07,lng:-72.82,code:"PG043348"},{name:"Ivorian",country:"United States",lang:"French",rol3:"fra",pct_christian:3.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047266"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Guinean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.5,lng:-73.81,code:"PG047454"},{name:"Sighu",country:"Gabon",lang:"French",rol3:"fra",pct_christian:3.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.84,lng:12.69,code:"PG013213"},{name:"Rwandan",country:"Netherlands",lang:"French",rol3:"fra",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:51.9,lng:4.47,code:"PG000430"},{name:"Gabonese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050505"},{name:"Romanian",country:"Venezuela",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.48,lng:-66.88,code:"PG016490"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"},{name:"Chiquitano",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-16.15,lng:-59.48,code:"PG050662"},{name:"Poyanawa",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-7.55,lng:-73.09,code:"PG017081"},{name:"Jabuti",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-12.08,lng:-64.7,code:"PG016889"},{name:"Yuruti",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:40,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:.61,lng:-69.19,code:"PG017210"}]}}},fg={"a-ou":"Guizhou Province",accukattavandlu:"Andhra Pradesh",adi:"Tibet Autonomous Region",adiyan:"Karnātaka",agaria:"Gujarāt",agasa:"Karnātaka",agri:"Gujarāt",aguru:"Andhra Pradesh",ahmadiya:"Uttar Pradesh","ai-cham":"Guizhou Province","ainu-china":"Xinjiang Uyghur Autonomous Region",aiton:"Assam",aiyarakulu:"Andhra Pradesh",akeu:"Yunnan Province",alavan:"Tamil Nādu",aling:"Yunnan Province",allar:"Kerala",alu:"Yunnan Province","alxa-mongols":"Inner Mongolia Autonomous Region",ambalavasi:"Kerala",andamanese:"Andaman and Nicobar Islands","andhra-vaisnawa":"Andhra Pradesh",angarok:"West Bengal",angku:"Yunnan Province",ani:"Yunnan Province",anjana:"Madhya Pradesh","anjana-patel-gujarati":"Gujarāt","ansari-momin-bengali":"West Bengal","ansari-momin-kannada":"Karnātaka","ansari-momin-tamil":"Tamil Nādu","ansari-momin-telugu":"Andhra Pradesh","anthur-nair":"Kerala",anuppan:"Tamil Nādu",anwal:"Uttarākhand",aoka:"Hunan Province",apu:"Yunnan Province","arain-dogri":"Jammu and Kashmīr","arain-kannauji":"Uttar Pradesh","arain-punjabi":"Haryāna",arakala:"Andhra Pradesh",aranadan:"Tamil Nādu",arasu:"Karnātaka",arayavati:"Kerala","are-bondili":"Andhra Pradesh","are-kapu":"Telangāna","are-katika":"Andhra Pradesh",atollu:"Andhra Pradesh",attagara:"Telangāna","attar-saibulu":"Mahārāshtra",ayri:"Karnātaka",ayyanavar:"Kerala","badhai-chhattisgarhi":"Chhattīsgarh",badhik:"Uttar Pradesh",badi:"Uttar Pradesh","badi-marwari":"Rājasthān",bafan:"Gujarāt",bagga:"Karnātaka",bagti:"West Bengal","baha-i":"Odisha",baharupi:"Mahārāshtra",baida:"West Bengal",baig:"Tamil Nādu",baira:"Karnātaka","bairagi-chhattisgarhi":"Chhattīsgarh","bairagi-gujarati":"Gujarāt","bairagi-odia":"Odisha",baisya:"West Bengal",bajandar:"Tripura",bakuda:"Kerala",balahar:"Uttar Pradesh",balasantoshi:"Karnātaka",baloch:"Gujarāt",bamcha:"Gujarāt",banai:"Meghālaya",banchada:"Madhya Pradesh",bandi:"Karnātaka",bandollu:"Andhra Pradesh",bangti:"Odisha","bania-agarwal-telegu":"Andhra Pradesh","bania-dogri":"Jammu and Kashmīr","bania-kannada":"Karnātaka","bania-kashmiri":"Ladākh","bania-konkani":"Goa","bania-malayalam":"Kerala","banik-bania":"Tripura",banjania:"Gujarāt",banka:"Odisha",banpar:"Bihār",baonuo:"Guangxi Zhuang Autonomous Region",baraua:"Madhya Pradesh",barda:"Mahārāshtra",baret:"Rājasthān",bargah:"Chhattīsgarh",bargala:"Uttar Pradesh",bargi:"Rājasthān",bargujar:"Uttar Pradesh","bari-hindi":"Madhya Pradesh","bari-marathi":"Mahārāshtra","bari-odia":"Odisha",barot:"Gujarāt",barthari:"Gujarāt",barua:"Tripura",basudeva:"Madhya Pradesh",batada:"Karnātaka",bauti:"Odisha",bavuri:"Odisha","bayil-kammara":"Karnātaka","bayil-pattar":"Karnātaka","bayita-kammara":"Andhra Pradesh",beidongnuo:"Guizhou Province","beldar-chhattisgarhi":"Chhattīsgarh",bellara:"Karnātaka",berad:"Andhra Pradesh",berar:"Madhya Pradesh",bestha:"Karnātaka",bhakta:"West Bengal",bhalla:"West Bengal","bhand-kashmiri":"Jammu and Kashmīr","bhangi-chhattisgarhi":"Chhattīsgarh",bhanumati:"Madhya Pradesh",bharewa:"Chhattīsgarh","bharia-bhumia-chhattisgarhi":"Chhattīsgarh",bharwad:"Mahārāshtra",bhatrajulu:"Telangāna","bhattra-bhatri":"Chhattīsgarh","bhatu-andamani":"Andaman and Nicobar Islands",bhodala:"Gujarāt","bhoi-marathi":"Mahārāshtra","bhoi-odia":"Odisha",bhojki:"Himāchal Pradesh",bhondari:"Andhra Pradesh",bhopa:"Rājasthān",bhuiyar:"Uttar Pradesh",bhujel:"West Bengal",bhunjia:"Chhattīsgarh",bhurtia:"Madhya Pradesh",bhutta:"Rājasthān",bilaspuri:"Assam",bindla:"Telangāna",bisati:"Uttar Pradesh","bit-china":"Yunnan Province","black-thai":"Yunnan Province","bogar-lhoba":"Tibet Autonomous Region",bogol:"Inner Mongolia Autonomous Region",bolla:"Telangāna",bomba:"Jammu and Kashmīr",bondili:"Tamil Nādu",bondo:"Odisha",borpi:"Gujarāt","bowis-mogeyar":"Kerala","boyu-tibetans":"Gansu Province","brahman-jyoti":"Odisha","brahmin-andamani":"Andaman and Nicobar Islands",brukpa:"Ladākh",budakukkala:"Andhra Pradesh",budhan:"Jammu and Kashmīr",bugan:"Yunnan Province",bunan:"Tibet Autonomous Region",buryat:"Inner Mongolia Autonomous Region","butuo-nosu":"Sichuan Province",buyang:"Yunnan Province",byadh:"West Bengal",cai:"Guizhou Province",caki:"Gujarāt",cakkala:"Kerala",cakketakare:"Andhra Pradesh","cakkyar-nambiyar":"Kerala",camadollu:"Andhra Pradesh",camma:"Bihār",campa:"Ladākh","candhai-maru":"Odisha",cejara:"Rājasthān",cekkala:"Tamil Nādu",chadwa:"Rājasthān",chaikwa:"Chhattīsgarh",chakkiyar:"Kerala","chamar-assamese":"Assam","chamar-muchi-malayalam":"Kerala","chamar-muchi-tamil":"Tamil Nādu",champta:"Gujarāt",changpao:"Guizhou Province",chaptegar:"Karnātaka",chari:"Mahārāshtra",charodi:"Karnātaka",charwaha:"Uttar Pradesh",chatarkheya:"Odisha",chaudangsi:"Uttarākhand",chayakkaran:"Tamil Nādu",cheintz:"Jammu and Kashmīr","chengazhi-nambiar":"Kerala","chenna-dasar":"Karnātaka",cherua:"Odisha",chesu:"Yunnan Province",chheepi:"Rājasthān",chitari:"Mahārāshtra",chobdar:"Rājasthān",chopan:"Jammu and Kashmīr",chunari:"West Bengal",chungar:"Rājasthān",cingatanmar:"Kerala",cippollu:"Telangāna",citrakar:"Odisha",citrakathi:"Mahārāshtra","cona-monba":"Tibet Autonomous Region","coorgi-andamanese":"Andaman and Nicobar Islands",cudigar:"Rājasthān",cunara:"Gujarāt",cundollu:"Andhra Pradesh",dadupanthi:"Rājasthān",dafer:"Gujarāt",daitapati:"Odisha","dalu-india":"Meghālaya",damami:"Rājasthān",damla:"Odisha",dammali:"Andhra Pradesh",dangasiya:"Gujarāt",daoli:"Punjab","darang-deng":"Tibet Autonomous Region","darji-odia":"Odisha","dasa-palanjika":"Tamil Nādu",dasari:"Andhra Pradesh","dasnami-bawa":"Gujarāt",daule:"Himāchal Pradesh",dayare:"Tamil Nādu",depala:"Gujarāt","dhakad-halbi":"Chhattīsgarh",dhaki:"Himāchal Pradesh","dhal-kstriya":"West Bengal",dhamin:"Bihār",dhawad:"Mahārāshtra",dhed:"Madhya Pradesh",dheevara:"Kerala",dhekaro:"Jhārkhand",dhera:"Odisha",dhimal:"West Bengal","dhobi-dogri":"Jammu and Kashmīr","dhobi-tamil":"Tamil Nādu",dhola:"Rājasthān",dhyar:"Jammu and Kashmīr",dianbao:"Yunnan Province",diao:"Guizhou Province",didayi:"Odisha",dokhpa:"Ladākh","dom-chhattisgarhi":"Chhattīsgarh","dom-marathi":"Mahārāshtra",domal:"Jammu and Kashmīr","dombi-dasa":"Karnātaka",dosali:"Himāchal Pradesh",doupo:"Yunnan Province",dudhwala:"Gujarāt","durga-murga":"Karnātaka","eastern-samadu":"Yunnan Province","eastern-xiangxi-miao":"Hunan Province","eneti-dora":"Odisha","enger-yugur":"Gansu Province",erawallan:"Kerala",ersu:"Sichuan Province",ezhavathi:"Kerala","ga-mong":"Guizhou Province",gabit:"Goa",gachha:"Madhya Pradesh",gadhai:"Gujarāt",gadhia:"Uttar Pradesh",gadihar:"Bihār",gagra:"Punjab","galada-kokani":"Karnātaka",galiara:"Gujarāt",galwan:"Jammu and Kashmīr",gandalla:"Andhra Pradesh",gandharv:"Bihār",gandla:"Andhra Pradesh",gangawar:"Tamil Nādu",gangireddula:"Telangāna","ganta-sayebulu":"Andhra Pradesh","ganti-chores":"Karnātaka",ganz:"Jammu and Kashmīr",gao:"Guizhou Province",garadi:"Andhra Pradesh",gardi:"Jammu and Kashmīr",garmatan:"Gujarāt",garodi:"Mahārāshtra",garpagari:"Mahārāshtra",garvi:"Gujarāt",gatti:"Karnātaka",gauli:"Karnātaka",gavara:"Andhra Pradesh",gavli:"Gujarāt",gelao:"Guizhou Province","geman-deng":"Tibet Autonomous Region",ghadi:"Karnātaka",ghadwa:"Chhattīsgarh",ghantarghada:"Odisha",ghantiya:"Gujarāt",ghazi:"West Bengal",ghihara:"Rājasthān",ghogia:"Odisha",ghusuria:"Odisha",godagali:"Andhra Pradesh",godari:"Andhra Pradesh",godda:"Karnātaka",godra:"Odisha",golarana:"Gujarāt","gomantak-maratha":"Goa","gond-kannada":"Karnātaka",gondhali:"Mahārāshtra",gopal:"Mahārāshtra",gorkun:"Jammu and Kashmīr","gosain-chhattisgarhi":"Chhattīsgarh","gosain-gujarati":"Gujarāt","gosain-kangri":"Himāchal Pradesh","gosain-rajasthani":"Rājasthān",gosangi:"Telangāna","great-andamanese":"Andaman and Nicobar Islands",guaigun:"Yunnan Province","guddi-eluguwallu":"Andhra Pradesh",gudikara:"Karnātaka",gudugudupandi:"Tamil Nādu",guna:"Odisha",guraw:"Karnātaka",gurika:"Telangāna",gurru:"Rājasthān",gurukkal:"Tamil Nādu","ha-li":"Hainan Province",habura:"Uttar Pradesh",hadi:"Himāchal Pradesh",hagei:"Guizhou Province","hajjam-assamese":"Assam","hajjam-bengali":"West Bengal","hajjam-gujarati":"Gujarāt","hajjam-haryanvi":"Haryāna","hajjam-hindi":"Madhya Pradesh","hajjam-kannada":"Karnātaka","hajjam-kashmiri":"Jammu and Kashmīr","hajjam-telugu":"Andhra Pradesh",halaypotra:"Gujarāt",halleer:"Karnātaka",haluadas:"Tripura",hardas:"Mahārāshtra",harkantra:"Karnātaka",hasalaru:"Karnātaka",hatgar:"Andhra Pradesh",hatkar:"Mahārāshtra",heishui:"Sichuan Province",helawa:"Karnātaka","henan-mongols":"Qinghai Province",hesi:"Himāchal Pradesh",hijra:"Uttar Pradesh","hindu-santarash":"Bihār",hingora:"Gujarāt",hingorza:"Gujarāt",hiranbaj:"Rājasthān","holeya-dasari":"Karnātaka","hongjin-tai":"Yunnan Province",hu:"Yunnan Province","huishui-miao":"Guizhou Province",ilayatu:"Kerala","indo-french":"Puducherry","indo-vietnamese":"Puducherry",irika:"Odisha",jadam:"Madhya Pradesh",jadupetia:"Jhārkhand","jains-bengali":"West Bengal","jains-hindi":"Madhya Pradesh","jains-maithili":"Bihār","jains-tamil":"Tamil Nādu","jains-telugu":"Telangāna",jakkula:"Andhra Pradesh",jandra:"Andhra Pradesh",janughanta:"Odisha",jarawas:"Andaman and Nicobar Islands","jarkhandi-hajjam":"Jhārkhand","jarkhandi-julaha":"Jhārkhand","jat-muslim":"Gujarāt","jati-pillai":"Tamil Nādu",jatigar:"Karnātaka",jaweri:"Karnātaka",jethi:"Andhra Pradesh",jhadi:"Mahārāshtra","jharkhandi-nai":"Jhārkhand","jiamao-li":"Hainan Province",jiasou:"Yunnan Province",jimdar:"Uttarākhand",jino:"Yunnan Province","jogi-angika":"Bihār","jogi-halbi":"Chhattīsgarh","jogi-odia":"Odisha","jogi-telugu":"Karnātaka","jogi-tulu":"Karnātaka",juneja:"Gujarāt","kachchi-alia":"Odisha","kachchi-kushwaha":"Mahārāshtra","kachera-bagheli":"Madhya Pradesh",kachi:"Telangāna",kadar:"Bihār",kaghzi:"Mahārāshtra","kahar-gujarati":"Gujarāt",kaikali:"Andhra Pradesh",kakkalan:"Kerala",kakmara:"West Bengal","kalal-sadri":"Chhattīsgarh",kalanadies:"Kerala",kalladi:"Kerala","kallattu-kurup":"Kerala",kamalia:"Gujarāt",kambalattan:"Tamil Nādu",kambar:"Tamil Nādu","kambodia-bhagat":"Gujarāt",kamila:"Odisha",kanda:"Tripura",kandera:"Madhya Pradesh",kankali:"Uttar Pradesh","kannada-naicker":"Tamil Nādu","kannada-saineegar":"Tamil Nādu",kapadi:"Gujarāt",kapasiya:"Odisha",kapewar:"Mahārāshtra",kapuria:"West Bengal",karaiyar:"Tamil Nādu",karimpalan:"Kerala",karlar:"Tamil Nādu","karna-sale":"Tamil Nādu",karnam:"Andhra Pradesh",karnibhakthulu:"Andhra Pradesh","kasar-bengali":"West Bengal","kasar-gujarati":"Gujarāt","kasar-hindi":"Madhya Pradesh","kasar-odia":"Odisha",kasbati:"Gujarāt",kasikapadi:"Mahārāshtra",katesar:"Tamil Nādu",kathar:"Mahārāshtra",kathi:"Gujarāt",katipamula:"Telangāna",kattiakaran:"Tamil Nādu",kavara:"Kerala",kavuthiyan:"Kerala",kawoj:"Jammu and Kashmīr",kayalar:"Tamil Nādu",keji:"Tibet Autonomous Region",kepmari:"Tamil Nādu",ker:"Gujarāt",khadim:"Rājasthān",khadura:"Odisha","khairwar-bengali":"West Bengal","khairwar-chhattisgarhi":"Chhattīsgarh",khakar:"Karnātaka",khalifa:"West Bengal",khalpa:"Gujarāt",khamba:"Arunāchal Pradesh",khamyang:"Arunāchal Pradesh",khandwal:"Odisha","khangar-bundeli":"Uttar Pradesh",kharol:"Rājasthān",kharvi:"Mahārāshtra",khaskeli:"Gujarāt",khatbune:"Delhi","khati-odia":"Odisha","khatik-bengali":"West Bengal","khatik-chambeali":"Himāchal Pradesh","khatik-chhattisgarhi":"Chhattīsgarh","khatik-gujarati":"Gujarāt","khatik-marathi":"Mahārāshtra","khatik-punjabi":"Chandīgarh","khatik-telugu":"Telangāna",khmu:"Yunnan Province",khowa:"Arunāchal Pradesh",kidaran:"Kerala",kobari:"Odisha","kocu-wellan":"Kerala",koiren:"Manipur",kokaniz:"Mahārāshtra","kol-chhattisgarhi":"Chhattīsgarh",kolari:"Karnātaka",kolhati:"Mahārāshtra",koliyan:"Tamil Nādu",kollan:"Kerala","komara-panta":"Karnātaka","kommu-dasari":"Andhra Pradesh","konda-kammara":"Andhra Pradesh","kong-ge":"Yunnan Province","kongu-vaisnawa":"Tamil Nādu","kongu-vellala-gounder":"Tamil Nādu",koosa:"Karnātaka",kootan:"Kerala",koraga:"Odisha","koraga-korra":"Karnātaka",kota:"Tamil Nādu",kottari:"Karnātaka",koyava:"Karnātaka",kraal:"Jammu and Kashmīr",krishnavaka:"Tamil Nādu",kriyagar:"Rājasthān",kucband:"Haryāna",kucong:"Yunnan Province",kuda:"Odisha",kudimahan:"Mahārāshtra",kudiya:"Karnātaka",kudubi:"Karnātaka",kudumi:"Tamil Nādu",kuli:"Odisha",kuliya:"Andhra Pradesh",kuluvan:"Tamil Nādu","kumar-kshatriya":"Kerala","kumhar-assamese":"Assam","kummara-kumbara":"Karnātaka","kummara-kummari":"Tamil Nādu","kummara-kusuvan":"Kerala",kunduvadian:"Kerala","kunnuva-vellalar":"Tamil Nādu","kurahina-setti":"Karnātaka",kurakula:"Andhra Pradesh",kurol:"West Bengal",kurukkal:"Kerala",kurunga:"Odisha",kusta:"Odisha","kuthliya-bora":"Uttarākhand",kyrgyz:"Xinjiang Uyghur Autonomous Region",laba:"Guizhou Province",labapo:"Yunnan Province",laccadive:"Lakshadweep",ladar:"Karnātaka",ladia:"Madhya Pradesh",ladsi:"Mahārāshtra",lahangir:"Madhya Pradesh",lajjhar:"Mahārāshtra","lakhera-haryanvi":"Haryāna","lakkamari-kapu":"Telangāna",langa:"Gujarāt",laowu:"Yunnan Province",laskari:"Rājasthān","lati-china":"Yunnan Province",lawu:"Yunnan Province","liang-e":"Yunnan Province",liari:"Odisha",linghua:"Guangxi Zhuang Autonomous Region","liping-baheng":"Guizhou Province",liude:"Yunnan Province",liujia:"Guizhou Province","lodha-marathi":"Mahārāshtra","lohar-dogri":"Jammu and Kashmīr",lois:"Manipur",lonar:"Mahārāshtra",longjia:"Guizhou Province",lu:"Guizhou Province","lupanshui-miao":"Guizhou Province",luzu:"Sichuan Province",machhiyara:"Gujarāt","madiga-dasu":"Andhra Pradesh",maghia:"Odisha",mahisyadas:"Tripura",mahuria:"Odisha",maila:"Karnātaka",majjula:"Andhra Pradesh",majothi:"Gujarāt",makrani:"Gujarāt","mala-masti":"Telangāna","malai-pandaram":"Kerala","malai-vellala":"Tamil Nādu",malaikudi:"Karnātaka",malakar:"Tripura",malaneese:"Himāchal Pradesh",malayalar:"Kerala",maleru:"Karnātaka",maleyan:"Tamil Nādu",malia:"Odisha",malis:"Andhra Pradesh",man:"Assam",mana:"Mahārāshtra",manbhav:"Madhya Pradesh","mandali-muslims":"Gujarāt",mandula:"Andhra Pradesh","mang-china":"Yunnan Province","mangnyar-muslims":"Rājasthān",manhas:"Jammu and Kashmīr",maniyattikkaran:"Tamil Nādu","manjygur-muslims":"Jammu and Kashmīr",mankar:"Madhya Pradesh",manmet:"Yunnan Province","manna-dhora":"Andhra Pradesh",manser:"Karnātaka",manyak:"Sichuan Province","maran-nairs":"Kerala",marasari:"Kerala","maria-muslims":"Assam","markande-kanjia":"Odisha","mashan-miao":"Guizhou Province",masku:"Himāchal Pradesh",matak:"Assam",matangi:"Telangāna",mavilan:"Kerala",meda:"Karnātaka",medari:"Andhra Pradesh","medog-monba":"Tibet Autonomous Region","meifu-li":"Hainan Province",mengwu:"Yunnan Province",mer:"Gujarāt",mhalo:"Goa",miguba:"Tibet Autonomous Region",ming:"Sichuan Province",minyak:"Sichuan Province",mir:"Gujarāt",mirshikar:"West Bengal","mishaba-laluo":"Yunnan Province","mith-gauda":"Goa","mitha-ayyalavar":"Telangāna",mitna:"Mahārāshtra",miyana:"Gujarāt",mo:"Guizhou Province",modaks:"Jhārkhand",mogaveera:"Karnātaka","moger-malayalam":"Kerala","moghal-telugu":"Telangāna","moghol-dogri":"Jammu and Kashmīr","moghol-gujarati":"Gujarāt","moghol-marwari":"Rājasthān",mogia:"Rājasthān",momba:"Arunāchal Pradesh","mon-india":"Ladākh",mondivogula:"Andhra Pradesh",mondiwar:"Mahārāshtra",moothan:"Kerala",mosuo:"Yunnan Province",mozhihei:"Hunan Province","muchi-chamar":"Telangāna",muda:"Yunnan Province",mudugar:"Tamil Nādu",mujavar:"Gujarāt",mujavir:"Uttar Pradesh",mukeri:"Bihār",mukhi:"Assam",mukkari:"Kerala",muli:"Andhra Pradesh",mundala:"Karnātaka",mundapotta:"Odisha",munnewar:"Chhattīsgarh",murhid:"Rājasthān",musari:"Kerala",muskhan:"Madhya Pradesh","muslim-gond":"Madhya Pradesh","muslim-kachera":"Mahārāshtra","muslim-khatri":"Gujarāt","muslim-lakhera":"Gujarāt","muslim-patel":"Gujarāt","musti-chenchu":"Andhra Pradesh",muttatu:"Kerala",mutwa:"Gujarāt",muzi:"Yunnan Province",na:"Arunāchal Pradesh",nadors:"Karnātaka",nagavamsam:"Andhra Pradesh",nagbansi:"Jhārkhand","nagbansi-dogri":"Jammu and Kashmīr",nagda:"Rājasthān",nahal:"Mahārāshtra",naheng:"Yunnan Province","nai-assamese":"Assam","nai-kannada":"Karnātaka","nai-mewari":"Rājasthān","nai-odia":"Odisha",naikpod:"Mahārāshtra",nairy:"Karnātaka",naita:"Madhya Pradesh",najjar:"Jammu and Kashmīr",naju:"Sichuan Province",nakhasa:"Andhra Pradesh",nakkala:"Tamil Nādu",naksia:"Odisha",nalband:"Bihār",nalkadaya:"Kerala","namasudra-assamese":"Assam",nambutiris:"Kerala",namdagur:"Jammu and Kashmīr",namdeo:"Madhya Pradesh","namdeo-maratha":"Tamil Nādu",namuyi:"Sichuan Province",nandiwala:"Mahārāshtra","nanjil-mudali":"Tamil Nādu",nanjingren:"Guizhou Province",naoda:"Madhya Pradesh",naqqas:"Jammu and Kashmīr",nar:"Himāchal Pradesh",narsanna:"Kerala",narsinghpura:"Gujarāt",nasuvan:"Kerala","nat-bagheli":"Madhya Pradesh",natua:"Karnātaka",nawaiyat:"Karnātaka",nayadi:"Kerala","nayak-muslims":"Gujarāt",neeli:"Mahārāshtra",nema:"Madhya Pradesh",neyyala:"Andhra Pradesh","nghari-tibetans":"Tibet Autonomous Region",nicar:"Himāchal Pradesh",nilkanth:"Mahārāshtra",node:"Gujarāt",noliya:"Odisha","northern-awu":"Yunnan Province","northern-dong":"Guizhou Province","northern-muji":"Yunnan Province",numao:"Guizhou Province",nyaria:"Rājasthān",olot:"Heilongjiang Province",onge:"Andaman and Nicobar Islands",ongkor:"Xinjiang Uyghur Autonomous Region",ontaris:"Andhra Pradesh",oriya:"Odisha",otans:"Kerala",padannan:"Kerala",padarthis:"Karnātaka",padhar:"Gujarāt",padigarajulu:"Andhra Pradesh",padiyar:"Karnātaka",pagativeshagallu:"Andhra Pradesh",paharia:"West Bengal",pajabgar:"Rājasthān",pakhimara:"Rājasthān",paky:"Andhra Pradesh","palakad-tandans":"Kerala",palyu:"Guangxi Zhuang Autonomous Region",pambada:"Karnātaka",pambala:"Telangāna",pamidi:"Andhra Pradesh",pamula:"Andhra Pradesh",panar:"Gujarāt",panara:"Chhattīsgarh","pancaratra-srivaisnavas-brahmans":"Andhra Pradesh",pandithar:"Kerala",pando:"Chhattīsgarh",pangans:"Manipur",pangul:"Mahārāshtra","pangwal-buddhists":"Himāchal Pradesh",pangwala:"Himāchal Pradesh","panka-odia":"Odisha",pankhiya:"Uttar Pradesh",pannadi:"Tamil Nādu",panniandi:"Tamil Nādu","panxian-nasu":"Guizhou Province",paradhi:"Gujarāt",parenga:"Odisha","pariki-muggula":"Telangāna",parkavakulam:"Tamil Nādu",parvatarajakulam:"Tamil Nādu",patanwadia:"Gujarāt",patari:"Uttar Pradesh",pathinaickans:"Kerala",pathiyan:"Kerala",patkars:"Telangāna","patni-jamat":"Gujarāt","patni-vankars":"Gujarāt",pattanavan:"Tamil Nādu",pattegar:"Karnātaka",pendar:"Karnātaka",perumkollar:"Tamil Nādu",phularis:"Mahārāshtra","pingdi-yao":"Hunan Province","pinjara-dhunia-bengali":"West Bengal","pinjara-kannada":"Karnātaka","pinjara-marathi":"Mahārāshtra","pinjara-punjabi":"Punjab",pisaroti:"Kerala",pochammalollu:"Mahārāshtra",poduval:"Kerala",pohul:"Jammu and Kashmīr",pomla:"Gujarāt",popei:"Yunnan Province","prabhu-patane":"Mahārāshtra",pubiao:"Yunnan Province",pulisari:"Kerala",puman:"Yunnan Province",puran:"Jhārkhand","purig-pa":"Ladākh",puroik:"Tibet Autonomous Region",pusha:"Guangxi Zhuang Autonomous Region","puspakan-unni":"Kerala",putliwale:"Uttar Pradesh",qanu:"Guizhou Province","qiubei-zhuang":"Yunnan Province",qixingmin:"Guizhou Province",racband:"Punjab",rachavar:"Karnātaka",raddi:"Karnātaka",radhi:"Odisha","rai-bhat-muslims":"Uttar Pradesh",rajannalu:"Telangāna",rajapuri:"Karnātaka",rajdhop:"Bihār","raji-india":"Uttarākhand",rajkumhar:"Rājasthān",rajpurohit:"Rājasthān",rana:"Odisha",raneyar:"Karnātaka",rao:"Guizhou Province",rastogi:"Uttar Pradesh",ratal:"Jammu and Kashmīr",rath:"Rājasthān",rathodia:"Gujarāt",raval:"Karnātaka",rave:"Uttar Pradesh","raya-rawat":"Karnātaka",raysipotra:"Gujarāt",reddi:"Kerala","reddi-dora":"Andhra Pradesh",reddika:"Andhra Pradesh",rehar:"Himāchal Pradesh",royma:"Gujarāt",rujjhar:"Madhya Pradesh","rumai-de-ang":"Yunnan Province",runjalavallu:"Andhra Pradesh",runwalas:"Rājasthān",sabakhia:"Odisha",sabar:"Tripura",sadaru:"Andhra Pradesh","sadhu-chetty":"Andhra Pradesh",sagar:"Gujarāt",sagharias:"Dādra and Nagar Haveli and Damān and Diu",saha:"Tripura",sahi:"Mahārāshtra",sahisia:"Bihār",sain:"Rājasthān",sais:"Madhya Pradesh",sakunapaksollu:"Andhra Pradesh",salivahanam:"Tamil Nādu",saman:"Heilongjiang Province",samanthan:"Kerala",samasi:"Odisha",samayavallu:"Andhra Pradesh",sanchia:"Rājasthān",sanda:"Yunnan Province","sandhai-muslims":"Gujarāt",sanei:"Odisha",sanghar:"Mahārāshtra",sanhai:"Himāchal Pradesh",sanqiao:"Guizhou Province",sansoi:"Himāchal Pradesh",santia:"Rājasthān",sapalyas:"Karnātaka",saradagallu:"Telangāna","saragh-yugur":"Gansu Province",saranias:"Gujarāt",saraogi:"Rājasthān","sarikoli-tajiks":"Xinjiang Uyghur Autonomous Region",sarodi:"Mahārāshtra",savalakkarar:"Tamil Nādu","sayyid-chhattisgarhi":"Chhattīsgarh","sayyid-garhwali":"Uttarākhand","sayyid-gujarati":"Gujarāt","sayyid-kannada":"Karnātaka","sayyid-odia":"Odisha","sayyid-pahari":"Jammu and Kashmīr","sayyid-tamil":"Tamil Nādu",semman:"Tamil Nādu",senaithalaivar:"Tamil Nādu",senapathi:"Andhra Pradesh",sentinelese:"Andaman and Nicobar Islands",seok:"Himāchal Pradesh",serdukpen:"Arunāchal Pradesh",shabdakar:"Tripura",shaksaz:"Jammu and Kashmīr",sheikhzade:"Uttar Pradesh",shenzhou:"Guizhou Province",shershabadia:"Bihār",shikari:"Rājasthān","shina-india":"Jammu and Kashmīr",shixing:"Sichuan Province",shravan:"Gujarāt","sichuan-mongols":"Yunnan Province",siddi:"Gujarāt",sikligar:"Madhya Pradesh",silavantulu:"Andhra Pradesh",sindhollu:"Telangāna",sinduria:"Odisha",singiwala:"Rājasthān",sisgars:"Madhya Pradesh",siviar:"Tamil Nādu",siyalgar:"West Bengal",sofi:"Jammu and Kashmīr",soligaru:"Karnātaka","sompura-salat":"Gujarāt","son-koli":"Chhattīsgarh",sonavar:"Puducherry",sorgars:"Rājasthān",soria:"Madhya Pradesh",suda:"Odisha",sudhan:"Jammu and Kashmīr",sudir:"Karnātaka","sudra-das":"Assam",sukiyar:"Jhārkhand",sunga:"Rājasthān",sunuwar:"West Bengal","suodi-nosu":"Sichuan Province","sutar-mistry":"Mahārāshtra",sutradhar:"West Bengal","swakulasali-koshti":"Andhra Pradesh",swangla:"Himāchal Pradesh","ta-er":"Yunnan Province",tagewale:"Uttarākhand",tagu:"Yunnan Province",tai:"Gujarāt","tai-lu":"Yunnan Province","tai-pong":"Yunnan Province",taiphake:"Assam",tak:"Rājasthān",takari:"Mahārāshtra",tambiran:"Tamil Nādu","tamboli-bengali":"West Bengal","tamboli-telugu":"Andhra Pradesh",targala:"Gujarāt",telengi:"Andaman and Nicobar Islands","teli-assamese":"Assam","thachanad-moopan":"Kerala",thakurai:"Bihār",thammadi:"Karnātaka",thanapati:"Odisha",thanga:"Manipur",tharua:"Odisha",thavi:"Himāchal Pradesh",theba:"Gujarāt","thogataveera-kshatriya":"Andhra Pradesh","tholuva-naicker":"Tamil Nādu",thoraiyar:"Tamil Nādu",tikulhara:"Bihār",tilli:"Bihār",tirgar:"Gujarāt",tirugatigantla:"Andhra Pradesh",tiyattunni:"Kerala",tolakari:"Andhra Pradesh",tondman:"Tamil Nādu","tongren-bonan":"Qinghai Province","tripuri-kumhar":"West Bengal","tripuri-namasudra":"Tripura","tula-vina":"Odisha",tulao:"Yunnan Province","turi-barot":"Gujarāt","turuk-pasi":"Bihār",turun:"Assam",tusu:"Yunnan Province",udupula:"Andhra Pradesh",uppara:"Andhra Pradesh",uppillian:"Tamil Nādu","urikkar-naicker":"Tamil Nādu",urindavan:"Kerala",usta:"Rājasthān",uzbeks:"Xinjiang Uyghur Autonomous Region",vadi:"Gujarāt",vadugan:"Kerala","vahivanca-barot":"Gujarāt","vaikhanasa-brahmans":"Andhra Pradesh",valinjiyar:"Kerala","van-baoriya":"Rājasthān",vayati:"Gujarāt",ved:"Rājasthān",velip:"Mahārāshtra","vellaiyan-kuppam-padaiyaci":"Tamil Nādu","verra-musti":"Telangāna",vetan:"Kerala",vettaikkaran:"Tamil Nādu",vettalaikarans:"Puducherry",vettiyan:"Puducherry",vijabargiya:"Rājasthān",vilkurup:"Kerala",vilyagaras:"Karnātaka",vipravinodulu:"Andhra Pradesh",visavan:"Kerala",vyapari:"Gujarāt",wagheri:"Gujarāt",waidu:"Mahārāshtra","wainadan-cetti":"Kerala","wainadan-kader":"Kerala","wainadan-pulayan":"Kerala","wakhi-china":"Xinjiang Uyghur Autonomous Region",wandharo:"Gujarāt","wayanad-pathiyan":"Kerala",waza:"Jammu and Kashmīr","wenma-zhuang":"Yunnan Province","western-gaisu":"Yunnan Province","western-samadu":"Yunnan Province","western-xibe":"Xinjiang Uyghur Autonomous Region",wopu:"Guizhou Province",wunai:"Hunan Province",wutun:"Qinghai Province",xi:"Guizhou Province",xialusi:"Guizhou Province","xiaoliangshan-nosu":"Yunnan Province",xijima:"Yunnan Province","xinping-lalu":"Yunnan Province","xuzhang-lalu":"Yunnan Province",ya:"Yunnan Province",yakha:"Sikkim",yanghuang:"Guizhou Province",yata:"Andhra Pradesh",yatagiri:"Andhra Pradesh",yatibi:"Manipur",yatla:"Andhra Pradesh",yelmar:"Mahārāshtra",yerong:"Guangxi Zhuang Autonomous Region","yidu-lhoba":"Tibet Autonomous Region","yinuo-nosu":"Sichuan Province",yite:"Andhra Pradesh",yizi:"Guizhou Province",youmai:"Guizhou Province","younuo-bunu":"Guangxi Zhuang Autonomous Region","yunnan-mongol":"Yunnan Province","yunnan-shui":"Yunnan Province",za:"Tibet Autonomous Region",zakhrin:"Arunāchal Pradesh",zamral:"Madhya Pradesh"},ia={RED:"#e11d48",RED_DK:"#9f1239",NAVY:"#002e6e",GOLD:"#f59e0b",WHITE:"#ffffff",GREEN_BINS:["#9bcf9b","#5cb874","#1f9d55","#0f7a3d","#0a5c2e"],RED_RAMP:["#fdba74","#fb923c","#f97316","#ea580c","#c2410c"],CAT:["#002e6e","#1f9d55","#f59e0b","#e11d48","#7c3aed","#0891b2","#65a30d","#be123c","#a16207"]},yr=["2–10%","10–25%","25–50%","50–75%","75–100%"];function $t(a){const n=+a||0;return n<10?0:n<25?1:n<50?2:n<75?3:4}function qe(a){return ia.GREEN_BINS[$t(a)]}function Fi(a){const n=+a||0;return n>=80?ia.RED_RAMP[4]:n>=40?ia.RED_RAMP[3]:n>=15?ia.RED_RAMP[2]:n>=5?ia.RED_RAMP[1]:ia.RED_RAMP[0]}function Ki(a,n=4,e=22){const i=Math.max(1,+a||0),t=Math.min(1,Math.log10(i)/9);return n+(e-n)*t}function br(a){return a==="same-language"?null:a==="related-cluster"?[4,3]:[1,3]}function Pg(a){const n=String(a||"").trim();return n&&n.split(" - ")[0].trim()||"Unknown"}function _e(a){const n=+a||0;return n>=1e9?(n/1e9).toFixed(1)+"B":n>=1e6?(n/1e6).toFixed(1)+"M":n>=1e3?Math.round(n/1e3)+"K":String(Math.round(n))}const Un=a=>String(a||"").trim().toLowerCase(),Cg=a=>a&&typeof a=="object"?a.label??a.value??"":a??"",Ib=a=>a&&typeof a=="object"?a.value??a.label??"":a??"",wb={"People's Republic of China":"China","Lao People’s Democratic Republic":"Laos","Lao People's Democratic Republic":"Laos"},xb=a=>wb[a]||a;function Tb(){const a=ua(null),n=ua({languages:new Set,countries:new Set,religions:new Set,bridges:new Set,reachedMin:null}),e=ua(""),i=ua("pct"),t=ua(null),o=ua(!1),r=ua("map"),l=ua("mobilization"),s=ua(null),g=ua(!1),d=ua(""),_=ua(""),k=ua([]),x=ua([]),D=ua(fg||{}),T=ua((ee==null?void 0:ee.meta)||{});async function $(p){const M=p||{};d.value="",x.value=Nb(ee);const N=Lb(x.value);let U=[];try{U=await Kb(M)}catch(h){d.value="Live unreached API unreachable — "+((h==null?void 0:h.message)||h),k.value=$b(ee,N),_.value=new Date().toISOString(),g.value=!0;return}k.value=Rb(U,N),_.value=new Date().toISOString(),g.value=!0}const w=la(()=>{let p=k.value;const M=n.value;M.countries.size&&(p=p.filter(U=>M.countries.has(U.country))),M.languages.size&&(p=p.filter(U=>U.langs.some(h=>M.languages.has(h))));const N=Un(e.value);if(N&&(p=p.filter(U=>Un(U.label).includes(N)||Un(U.country).includes(N)||U.langs.some(h=>Un(h).includes(N)))),t.value){const U=Un(t.value),h=P(U);p=p.filter(C=>h.has(C.id))}return[...p].sort((U,h)=>h.senderCount-U.senderCount||h.target_pop-U.target_pop||h.count-U.count)}),L=la(()=>a.value&&k.value.find(p=>p.id===a.value)||null),E=la(()=>a.value?x.value.filter(p=>p.targetId===a.value):[]),I=la(()=>{let p=E.value;const M=n.value;M.languages.size&&(p=p.filter(U=>M.languages.has(U.lang))),M.countries.size&&(p=p.filter(U=>M.countries.has(U.country))),M.religions.size&&(p=p.filter(U=>M.religions.has(U.religionFamily))),M.bridges.size&&(p=p.filter(U=>M.bridges.has(U.bridge))),M.reachedMin!=null&&(p=p.filter(U=>U.pct>=M.reachedMin));const N=Un(e.value);return N&&(p=p.filter(U=>Un(U.name).includes(N)||Un(U.lang).includes(N)||Un(U.country).includes(N))),p}),G=la(()=>I.value.filter(p=>isFinite(p.lat)&&isFinite(p.lng)).map(p=>({...p,isPool:!1}))),S=la(()=>{const p=w.value.length;if(a.value){const N=E.value.length,U=I.value.length;return{senders:U,clusters:p,hidden:Math.max(0,N-U)}}return{senders:w.value.reduce((N,U)=>N+U.senderCount,0),clusters:p,hidden:0}}),v=la(()=>{const p=L.value;if(!p)return S.value.clusters+" unreached clusters · "+S.value.senders.toLocaleString()+" reached senders nearby — pick a red to send";const M=I.value,N=t.value||[...n.value.languages][0]||"",U=[...M].sort((y,R)=>R.pct-y.pct||R.pop-y.pop)[0],h=(N?N+" × ":"")+p.country,C=U?" · top "+U.name+" "+Math.round(U.pct)+"%, "+_e(U.pop):"";return h+": "+p.count+" unreached · "+M.length+(N?" nearby "+N+" senders":" nearby senders")+C}),K=la(()=>{const p=[...I.value],M={"same-language":0,"related-cluster":1,"same-country":2};switch(l.value){case"pct":p.sort((N,U)=>U.pct-N.pct||U.pop-N.pop);break;case"pop":p.sort((N,U)=>U.pop-N.pop||U.pct-N.pct);break;case"name":p.sort((N,U)=>N.name.localeCompare(U.name));break;case"bridge":p.sort((N,U)=>(M[N.bridge]??9)-(M[U.bridge]??9)||U.pct-N.pct);break;case"frontier":p.sort((N,U)=>U.pop-N.pop||N.pct-U.pct);break;case"mobilization":default:p.sort((N,U)=>U.pct-N.pct||U.pop-N.pop);break}return p}),O=la(()=>{const p=a.value?I.value:x.value.filter(M=>c().has(M.targetId));return{languageBar:jg(p,M=>M.lang,12),countryBar:jg(p,M=>M.country,12),reachedHist:yr.map((M,N)=>({key:N,label:M,value:p.filter(U=>U.bin===N).length,color:ia.GREEN_BINS[N]})),donut:i.value==="religion"?kg(p,M=>M.religionFamily):kg(p,M=>M.bridge)}}),q=la(()=>{var p,M,N;return{liveTargets:k.value.length,liveUnreached:k.value.reduce((U,h)=>U+h.count,0),loadedAt:_.value,bakedGenerated:((p=T.value)==null?void 0:p.generated)||"",bakedSenders:((M=T.value)==null?void 0:M.total_neighbors)||x.value.length,reachedFilter:((N=T.value)==null?void 0:N.reached_filter)||"",admin1Level:"IN/CN admin1 (point-in-polygon, "+Object.keys(D.value).length+" groups)",apiError:d.value}}),sa=la(()=>{const p=[],M=n.value;a.value&&L.value&&p.push({kind:"focus",value:L.value.country,label:L.value.country});for(const N of M.languages)p.push({kind:"languages",value:N,label:N});for(const N of M.countries)p.push({kind:"countries",value:N,label:N});for(const N of M.religions)p.push({kind:"religions",value:N,label:N});for(const N of M.bridges)p.push({kind:"bridges",value:N,label:N});return M.reachedMin!=null&&p.push({kind:"reachedMin",value:M.reachedMin,label:"reached% ≥ "+M.reachedMin}),t.value&&p.push({kind:"lens",value:t.value,label:"lens: "+t.value}),p});function ea(p){a.value=p}function ga(){a.value=null}function Sa(p,M){const N=n.value[p];N instanceof Set&&(N.has(M)?N.delete(M):N.add(M),n.value={...n.value})}function Ma(p){n.value={...n.value,reachedMin:p==null||p===""?null:+p}}function ma(p){e.value=String(p??"")}function pa(p){i.value=p==="religion"?"religion":"pct"}function Y(p){t.value=p||null}function ta(){o.value=!o.value}function aa(p){r.value=p==="flower"?"flower":"map"}function ba(p){l.value=p||"mobilization"}function na(p){s.value=p||null}function u(p){if(p)return p.kind==="focus"?ga():p.kind==="reachedMin"?Ma(null):p.kind==="lens"?Y(null):Sa(p.kind,p.value)}function A(){n.value={languages:new Set,countries:new Set,religions:new Set,bridges:new Set,reachedMin:null},t.value=null,e.value=""}function j(p){var H,V,oa;const M=Array.isArray(p)?p:K.value,N=["name","country","lang","rol3","pct","pop","bridge","adjacency","religion_bg"],U=Q=>{let m=String(Q??"");return/^[=+\-@]/.test(m)&&(m="'"+m),'"'+m.replace(/"/g,'""')+'"'},h="# BloomField Cockpit — reached neighbors for "+(((H=L.value)==null?void 0:H.country)||"all targets")+" · baked "+(((V=T.value)==null?void 0:V.generated)||"")+" · "+M.length+" rows · "+(_.value||""),C=N.join(","),y=M.map(Q=>N.map(m=>U(Q[m])).join(",")).join(` -`),R=h+` -`+C+` -`+y+` -`;try{const Q=new Blob([R],{type:"text/csv;charset=utf-8;"}),m=URL.createObjectURL(Q),b=document.createElement("a");b.href=m,b.download="send-list-"+(((oa=L.value)==null?void 0:oa.country)||"all").replace(/\W+/g,"-").toLowerCase()+".csv",document.body.appendChild(b),b.click(),b.remove(),setTimeout(()=>URL.revokeObjectURL(m),1e3)}catch{}return R}function c(){return new Set(w.value.map(p=>p.id))}function P(p){const M=new Set;for(const N of x.value)Un(N.lang)===p&&M.add(N.targetId);return M}return{focusedTargetId:a,facets:n,search:e,colorBy:i,languageLens:t,provinceDrill:o,mode:r,sortKey:l,hoveredId:s,hoveredSenderId:s,ready:g,loadError:d,loadedAt:_,meta:T,admin1:D,allClusters:k,allSenders:x,clusters:w,focusedTarget:L,sendersForFocus:E,visibleSenders:I,mapNodes:G,counts:S,headline:v,listRows:K,chartData:O,provenance:q,chips:sa,loadData:$,selectTarget:ea,clearFocus:ga,toggleFacet:Sa,setReachedMin:Ma,setSearch:ma,setColorBy:pa,setLanguageLens:Y,toggleProvince:ta,setMode:aa,setSort:ba,setHover:na,removeChip:u,clearAllFacets:A,exportSelectionCSV:j,quantileBin:$t,reachedColor:qe,redColor:Fi,logRadius:Ki,bridgeDash:br,religionFamily:Pg,fmtPop:_e,COLORS:ia}}function Ft(){const a=Ya("cockpitStore",null);if(!a)throw new Error("[useCockpitStore] no cockpitStore provided — mount inside ");return a}function Nb(a){const n=[],e=(a==null?void 0:a.countries)||{};for(const[i,t]of Object.entries(e))for(const o of t.neighbors||[]){const r=Number(o.lat),l=Number(o.lng);if(!isFinite(r)||!isFinite(l))continue;const s=+o.pct_christian||0;n.push({id:o.code||i+"|"+o.name+"|"+o.country+"|"+(o.rol3||""),targetId:i,name:o.name,country:o.country,lang:o.lang,rol3:o.rol3||"",pct:s,pop:+o.pop||0,bridge:o.bridge||"",adjacency:o.adjacency||"",religion_bg:o.religion_bg||"",religionFamily:Pg(o.religion_bg),lat:r,lng:l,code:o.code||"",bin:$t(s),color:qe(s)})}return n}function Lb(a){const n=new Map;for(const e of a){let i=n.get(e.targetId);i||(i={count:0,pop:0},n.set(e.targetId,i)),i.count++,i.pop+=e.pop}return n}function Rb(a,n){const e=new Map;for(const i of a){const t=Number(i.latitude),o=Number(i.longitude),r=xb(Cg(i.country_code)||"(unknown)"),l=Cg(i.primary_language)||"",s=i.slug||Ib(i.primary_language)+":"+i.name;let g=e.get(r);g||(g={id:r,country:r,label:r,count:0,target_pop:0,_sumLat:0,_sumLng:0,_n:0,langSet:new Set,members:[]},e.set(r,g)),g.count++,l&&g.langSet.add(l),g.members.push({name:i.name,slug:s,lang:l,lat:t,lng:o}),isFinite(t)&&isFinite(o)&&(g._sumLat+=t,g._sumLng+=o,g._n++)}return Fb([...e.values()],n)}function $b(a,n){const e=[];for(const[i,t]of Object.entries((a==null?void 0:a.countries)||{})){const o=n.get(i);e.push({id:i,country:i,label:i,count:+t.target_upg||0,target_pop:+t.target_pop||0,lat:null,lng:null,langs:t.target_top_langs||[],target_top_langs:t.target_top_langs||[],target_top_religion:t.target_top_religion||"",senderCount:o?o.count:0,hasSenders:!!o,color:Fi(+t.target_upg||0)})}return e}function Fb(a,n){const e=[];for(const i of a){i._n?(i.lat=i._sumLat/i._n,i.lng=i._sumLng/i._n):(i.lat=null,i.lng=null);const t=n.get(i.id);e.push({id:i.id,country:i.country,label:i.label,count:i.count,target_pop:i.target_pop,lat:i.lat,lng:i.lng,langs:[...i.langSet],target_top_langs:[...i.langSet].slice(0,4),target_top_religion:"",members:i.members,senderCount:t?t.count:0,hasSenders:!!t,color:Fi(i.count)})}return e.sort((i,t)=>t.count-i.count),e}async function Kb(a){const n=a.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL);if(!n)throw new Error("No API base configured (apiBase / window.MAP_APP_API_URL / VITE_API_BASE_URL) — failing closed, no default host.");const i=n.replace(/\/?$/,"")+"/api/people-groups/list?fields="+"slug,name,latitude,longitude,country_code,primary_language,wagf_block"+"&lang=en",t=await fetch(i,{cache:"no-store"});if(!t.ok)throw new Error("list "+t.status);const o=await t.json();return o.posts||o.data||o.records||o.results||o.items||(Array.isArray(o)?o:[])}function jg(a,n,e){const i=new Map;for(const t of a){const o=n(t)||"—";i.set(o,(i.get(o)||0)+1)}return[...i.entries()].map(([t,o])=>({key:t,label:t,value:o})).sort((t,o)=>o.value-t.value).slice(0,e)}function kg(a,n){const e=new Map;for(const t of a){const o=n(t)||"—";e.set(o,(e.get(o)||0)+1)}return[...e.entries()].sort((t,o)=>o[1]-t[1]).map(([t,o],r)=>({key:t,label:t,value:o,color:ia.CAT[r%ia.CAT.length]}))}const Gg="https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css";async function Bb(a){const n=a.getRootNode();if(!(n instanceof ShadowRoot))return;const e=o=>new Promise(r=>setTimeout(r,o)),i=n.querySelector(`link[href="${Gg}"]`);if(i){if(i.sheet)return;await Promise.race([new Promise(o=>{i.addEventListener("load",o,{once:!0}),i.addEventListener("error",o,{once:!0})}),e(2e3)]);return}const t=document.createElement("link");t.rel="stylesheet",t.href=Gg,await Promise.race([new Promise(o=>{t.addEventListener("load",o,{once:!0}),t.addEventListener("error",o,{once:!0}),n.prepend(t)}),e(2e3)])}const Ob=85.0511,vg=-2,Ub=0,Hb=-60;function Ag(a){return(1-Math.log(Math.tan(Math.PI/4+a*Math.PI/180/2))/Math.PI)/2}function Db(a,n,e,i){if(!a||a<=0||!n||n<=0)return Ub;const t=Math.log2(a/512),o=Ag(i)-Ag(Ob),r=Math.log2(n/(512*o)),l=Math.max(t,r);return Math.max(vg,Math.min(l,(e??18)-1))}function Kt({containerRef:a,accessToken:n,style:e,center:i=[20,10],zoom:t=2,minZoom:o=void 0,maxZoom:r=18,pitch:l=0,bearing:s=0,renderWorldCopies:g=!0,southCutoff:d=Hb,maxBounds:_=void 0}){const k=ua(null),x=ua(!1);let D=null,T=null;async function $(){var O;if(typeof mapboxgl>"u"){console.error("mapboxgl is not available. Add the Mapbox GL JS script to your page.");return}if(!a.value){console.error("containerRef.value is null — call initializeMap() inside onMounted()");return}if(!n){console.error('No Mapbox access token provided. Pass "tk" in profile-config JSON.');return}if(!n.startsWith("pk.")){console.error('Mapbox token looks invalid (expected "pk." prefix). Got:',n.slice(0,10)+"...");return}await Bb(a.value),await new Promise(q=>requestAnimationFrame(q));const L=a.value,E=L.clientWidth,I=L.clientHeight;if(E===0||I===0){console.error(`[useMapInstance] Container has ZERO dimensions (${E}×${I}). Map will be invisible. Check that parent elements have CSS sizing.`);let q=L.parentElement,sa=0;for(;q&&sa<5;)q=q.parentElement,sa++}const G=n;mapboxgl.accessToken=G;const S=()=>typeof window<"u"&&window.innerWidth>=1024,v=(q,sa)=>{if(!S())return vg;const ea=Db(q,sa,r,d);return typeof o=="number"?Math.max(o,ea):ea},K=v(L.clientWidth,L.clientHeight);k.value=new mapboxgl.Map({accessToken:G,container:a.value,style:e,center:i,zoom:t,minZoom:K,maxZoom:r,pitch:l,bearing:s,dragRotate:!1,touchPitch:!1,renderWorldCopies:g,..._?{maxBounds:_}:{},attributionControl:!1}),k.value.touchZoomRotate.disableRotation();{const q=((O=a.value)==null?void 0:O.parentElement)||null,sa=q?Array.from(q.querySelectorAll(".map-scroll-edge")):[];if(sa.length){const ea="rgba(120, 128, 134, 0.28)",ga="36px",Sa=p=>p.classList.contains("map-scroll-edge--left");for(const p of sa)p.style.background=`linear-gradient(${Sa(p)?"to right":"to left"}, ${ea} ${ga}, transparent ${ga})`,p.style.opacity="0",p.style.transition="opacity 0.16s ease",p.style.userSelect="none",p.style.webkitUserSelect="none";const Ma=p=>{p.style.opacity="1"},ma=p=>{p.style.opacity="0"},pa=()=>sa.find(p=>S()?!Sa(p):Sa(p))||null,Y=new Set;let ta=!1,aa=null;const ba=()=>{for(const p of sa)Y.has(p)||ma(p)},na=()=>{const p=pa();p&&(Ma(p),aa&&clearTimeout(aa),aa=setTimeout(ba,250))},u=()=>{S()&&na()},A=p=>{if(!(p.touches&&p.touches.length===1))return;const M=p.target;M&&M.classList&&M.classList.contains("map-scroll-edge")||na()},j=()=>{aa&&clearTimeout(aa),ba()};q.addEventListener("wheel",u,{passive:!0}),q.addEventListener("touchmove",A,{passive:!0}),q.addEventListener("touchend",j,{passive:!0}),q.addEventListener("touchcancel",j,{passive:!0});const c=()=>{ta||na()};typeof window<"u"&&window.addEventListener("scroll",c,{passive:!0});const P=[];for(const p of sa){const M=()=>{Y.add(p),Ma(p)},N=()=>{Y.delete(p),ma(p)},U=()=>{ta=!0,Ma(p)},h=()=>{ta=!1,ma(p)};p.addEventListener("mouseenter",M),p.addEventListener("mouseleave",N),p.addEventListener("touchstart",U,{passive:!0}),p.addEventListener("touchend",h,{passive:!0}),P.push(()=>{p.removeEventListener("mouseenter",M),p.removeEventListener("mouseleave",N),p.removeEventListener("touchstart",U),p.removeEventListener("touchend",h)})}T=()=>{aa&&(clearTimeout(aa),aa=null),q.removeEventListener("wheel",u),q.removeEventListener("touchmove",A),q.removeEventListener("touchend",j),q.removeEventListener("touchcancel",j),typeof window<"u"&&window.removeEventListener("scroll",c);for(const p of P)p();for(const p of sa)ma(p)}}}D=()=>{const q=k.value;if(!q)return;const sa=v(L.clientWidth,L.clientHeight);q.setMinZoom(sa),q.getZoom(){requestAnimationFrame(()=>{var q;(q=k.value)==null||q.resize(),k.value&&k.value.setMinZoom(v(L.clientWidth,L.clientHeight)),x.value=!0})})}function w(){k.value&&(D&&(k.value.off("resize",D),typeof window<"u"&&(window.removeEventListener("resize",D),window.removeEventListener("orientationchange",D)),D=null),T&&(T(),T=null),k.value.remove(),k.value=null,x.value=!1)}return{map:k,isMapReady:x,initializeMap:$,destroy:w}}const zb={key:0,class:"cpt-mc-ctl"},Vb={class:"cpt-mc-seg",role:"group","aria-label":"Green color encoding"},Yb={key:1,class:"cpt-mc-headline"},Wb={key:2,class:"cpt-mc-loading"},Jb={key:0},Zb={key:1},qb=["innerHTML"],_r="cpt-red-src",fr="cpt-green-src",Bt="cpt-arc-src",fe="cpt-red",Sg="cpt-red-lbl",ie="cpt-green",Eg="cpt-green-lbl",Ot="cpt-arc-solid",Ut="cpt-arc-dash",Ht="cpt-arc-dot",Bi="cpt-prov",Xb={__name:"MapCell",setup(a){const n=Ft(),e=Ya("profileConfig"),i=Ya("mapboxToken"),t=la(()=>(e==null?void 0:e.value)||{}),o=la(()=>!(i!=null&&i.value||t.value.tk)),r=ua(null),l=ua(null),s=ua(!1),g=ua({show:!1,pinned:!1,x:0,y:0,html:""}),d=ia.GREEN_BINS[3],{map:_,initializeMap:k,destroy:x}=Kt({containerRef:l,accessToken:(i==null?void 0:i.value)||t.value.tk||"",style:t.value.style??"mapbox://styles/mapbox/light-v11",center:t.value.center??[55,22],zoom:t.value.zoom??1.7,minZoom:t.value.minZoom??1,maxZoom:t.value.maxZoom??12}),D=la(()=>{const u=[...new Set(n.visibleSenders.value.map(j=>j.religionFamily).filter(Boolean))].sort(),A={};return u.forEach((j,c)=>{A[j]=ia.CAT[c%ia.CAT.length]}),A}),T=u=>({type:"FeatureCollection",features:u});function $(u,A,j=48){const c=Math.PI/180,P=180/Math.PI,p=u[1]*c,M=u[0]*c,N=A[1]*c,U=A[0]*c,h=(N-p)/2,C=(U-M)/2,y=Math.sin(h)**2+Math.cos(p)*Math.cos(N)*Math.sin(C)**2,R=2*Math.asin(Math.min(1,Math.sqrt(y)));if(!R)return[u,A];const H=[];for(let V=0;V<=j;V++){const oa=V/j,Q=Math.sin((1-oa)*R)/Math.sin(R),m=Math.sin(oa*R)/Math.sin(R),b=Q*Math.cos(p)*Math.cos(M)+m*Math.cos(N)*Math.cos(U),F=Q*Math.cos(p)*Math.sin(M)+m*Math.cos(N)*Math.sin(U),J=Q*Math.sin(p)+m*Math.sin(N);H.push([Math.atan2(F,b)*P,Math.atan2(J,Math.sqrt(b*b+F*F))*P])}return H}function w(){const u=[];for(const A of n.clusters.value)!isFinite(A.lat)||!isFinite(A.lng)||u.push({type:"Feature",geometry:{type:"Point",coordinates:[A.lng,A.lat]},properties:{id:A.id,count:A.count,hasSenders:!!A.hasSenders,senderCount:A.senderCount||0,color:Fi(A.count),r:Math.min(34,6+Math.sqrt(Math.max(0,A.count))*2.4),label:A.country+" ("+A.count+")",country:A.country,langs:(A.target_top_langs||[]).slice(0,3).join(", ")}});return T(u)}function L(){const u=[],A=n.colorBy.value==="religion";for(const j of n.mapNodes.value){if(!isFinite(j.lng)||!isFinite(j.lat))continue;let c,P,p,M,N;if(j.isPool){const U=j.members||[],h=U.length?U.reduce((y,R)=>y+(R.pct||0),0)/U.length:0,C=U.reduce((y,R)=>y+(R.pop||0),0);c=qe(h),P=Ki(C,7,26),p="",M=_e(C),N=""}else c=A?D.value[j.religionFamily]||ia.GREEN_BINS[2]:j.color||qe(j.pct),P=Ki(j.pop),p=Math.round(j.pct)+"%",M=_e(j.pop),N=j.religionFamily||"";u.push({type:"Feature",geometry:{type:"Point",coordinates:[j.lng,j.lat]},properties:{id:j.id,name:j.name,label:j.name,color:c,r:P,isPool:!!j.isPool,country:j.country||"",lang:j.lang||"",pct:p,pop:M,religion:N,bridge:j.bridge||""}})}return T(u)}function E(){const u=n.focusedTarget.value;if(!u||!isFinite(u.lat)||!isFinite(u.lng))return T([]);const A=[u.lng,u.lat],j=[];for(const c of n.mapNodes.value){if(!isFinite(c.lng)||!isFinite(c.lat))continue;const P=c.isPool?"same-country":c.bridge||"same-country";j.push({type:"Feature",geometry:{type:"LineString",coordinates:$([c.lng,c.lat],A)},properties:{bridge:P}})}return T(j)}function I(u,A,j){const c=u.getSource(A);c?c.setData(j):u.addSource(A,{type:"geojson",data:j})}function G(u){const j=(u.getStyle&&u.getStyle().layers||[]).find(c=>c.type==="symbol");return j?j.id:void 0}function S(u){u.getLayer(Ot)||u.addLayer({id:Ot,type:"line",source:Bt,filter:["==",["get","bridge"],"same-language"],layout:{"line-cap":"round"},paint:{"line-color":ia.NAVY,"line-width":1.4,"line-opacity":.6}}),u.getLayer(Ut)||u.addLayer({id:Ut,type:"line",source:Bt,filter:["==",["get","bridge"],"related-cluster"],layout:{"line-cap":"butt"},paint:{"line-color":ia.NAVY,"line-width":1.4,"line-opacity":.6,"line-dasharray":[4,3]}}),u.getLayer(Ht)||u.addLayer({id:Ht,type:"line",source:Bt,filter:["all",["!=",["get","bridge"],"same-language"],["!=",["get","bridge"],"related-cluster"]],layout:{"line-cap":"round"},paint:{"line-color":ia.NAVY,"line-width":1.6,"line-opacity":.6,"line-dasharray":[1,3]}}),u.getLayer(ie)||u.addLayer({id:ie,type:"circle",source:fr,paint:{"circle-color":["get","color"],"circle-radius":["max",2,["*",["get","r"],.55]],"circle-stroke-width":["case",["get","isPool"],2.5,.8],"circle-stroke-color":["case",["get","isPool"],ia.GOLD,"#ffffff"],"circle-opacity":.92,"circle-opacity-transition":{duration:350}}}),u.getLayer(Eg)||u.addLayer({id:Eg,type:"symbol",source:fr,minzoom:3.4,layout:{"text-field":["get","label"],"text-size":10,"text-offset":[0,1.1],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":"#0b5e33","text-halo-color":"#ffffff","text-halo-width":1.3}}),u.getLayer(fe)||u.addLayer({id:fe,type:"circle",source:_r,paint:{"circle-color":["get","color"],"circle-radius":["get","r"],"circle-opacity":.82,"circle-stroke-width":2,"circle-stroke-color":d,"circle-opacity-transition":{duration:300}}}),u.getLayer(Sg)||u.addLayer({id:Sg,type:"symbol",source:_r,minzoom:2.4,layout:{"text-field":["get","label"],"text-size":11,"text-offset":[0,1.2],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":ia.RED_DK,"text-halo-color":"#ffffff","text-halo-width":1.4}})}function v(u){if(!u.getLayer(fe))return;const A=n.focusedTargetId.value;u.setPaintProperty(fe,"circle-opacity",A?["case",["==",["get","id"],A],.95,.5]:["case",["get","hasSenders"],.82,.14]),u.setPaintProperty(fe,"circle-stroke-color",A?["case",["==",["get","id"],A],ia.GOLD,["case",["get","hasSenders"],d,ia.RED_DK]]:["case",["get","hasSenders"],d,ia.RED_DK]),u.setPaintProperty(fe,"circle-stroke-width",A?["case",["==",["get","id"],A],4,["case",["get","hasSenders"],2.4,1.6]]:["case",["get","hasSenders"],2.4,1.6])}function K(u,A){if(A)if(u.getLayer(Bi))try{u.setLayoutProperty(Bi,"visibility","visible")}catch{}else try{const j=u.getLayer(Ot)?Ot:G(u);u.addLayer({id:Bi,type:"line",source:"composite","source-layer":"admin",filter:["all",["==",["get","admin_level"],1],["==",["get","maritime"],"false"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":ia.NAVY,"line-width":.7,"line-opacity":.45,"line-dasharray":[2,2]}},j)}catch{}else if(u.getLayer(Bi))try{u.setLayoutProperty(Bi,"visibility","none")}catch{}}function O(){var A;const u=_.value;!u||!((A=u.isStyleLoaded)!=null&&A.call(u))||(I(u,Bt,E()),I(u,fr,L()),I(u,_r,w()),S(u),v(u),Y(pa),K(u,n.provinceDrill.value),n.focusedTargetId.value?Ma():ma())}function q(){const u=_.value;if(!u)return;const A=n.focusedTarget.value;if(!A){try{u.stop(),u.easeTo({center:t.value.center??[55,22],zoom:t.value.zoom??1.7,duration:700})}catch{}return}const j=[];isFinite(A.lat)&&isFinite(A.lng)&&j.push([A.lng,A.lat]);for(const N of n.mapNodes.value)isFinite(N.lng)&&isFinite(N.lat)&&j.push([N.lng,N.lat]);if(!j.length)return;let c=j[0][0],P=j[0][0],p=j[0][1],M=j[0][1];for(const N of j)c=Math.min(c,N[0]),P=Math.max(P,N[0]),p=Math.min(p,N[1]),M=Math.max(M,N[1]);try{u.stop(),c===P&&p===M?u.easeTo({center:[c,p],zoom:4.5,duration:800}):u.fitBounds([[c,p],[P,M]],{padding:80,maxZoom:6,duration:800})}catch{}}const sa=[[0,4,3],[.5,4,2.5],[1,4,2],[1.5,4,1.5],[2,4,1],[2.5,4,.5],[3,4,0],[0,.5,4,2.5],[0,1,4,2],[0,1.5,4,1.5],[0,2,4,1],[0,2.5,4,.5]],ea=[[1,3],[0,.75,1,2.25],[0,1.5,1,1.5],[0,2.25,1,.75]];let ga=null,Sa=0;function Ma(){ga||(ga=setInterval(()=>{const u=_.value;if(u){Sa++;try{u.getLayer(Ut)&&u.setPaintProperty(Ut,"line-dasharray",sa[Sa%sa.length]),u.getLayer(Ht)&&u.setPaintProperty(Ht,"line-dasharray",ea[Sa%ea.length])}catch{}}},80))}function ma(){ga&&(clearInterval(ga),ga=null)}let pa=null;function Y(u){pa=u;const A=_.value;!A||!A.getLayer(ie)||(A.setPaintProperty(ie,"circle-stroke-width",u?["case",["==",["get","id"],u],4,["case",["get","isPool"],2.5,1.2]]:["case",["get","isPool"],2.5,1.2]),A.setPaintProperty(ie,"circle-stroke-color",u?["case",["==",["get","id"],u],ia.GOLD,["case",["get","isPool"],ia.GOLD,"#ffffff"]]:["case",["get","isPool"],ia.GOLD,"#ffffff"]))}function ta(u){return String(u??"").replace(/[&<>"']/g,A=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[A])}function aa(u){g.value.show&&!g.value.pinned&&(g.value.x=u.clientX,g.value.y=u.clientY)}function ba(u){return""+ta(u.country)+'
'+ta(u.count)+" unreached groups
"+(u.langs?'
langs '+ta(u.langs)+"
":"")+'
senders '+(u.hasSenders?ta(u.senderCount)+" reached nearby":"frontier — 0 (pray for laborers)")+'
click → SEND view
'}function na(u){return u.isPool?""+ta(u.name)+'
same-country reached pool
pop '+ta(u.pop)+'
spiderfies in the list
':""+ta(u.name)+'
'+ta(u.country)+" · "+ta(u.lang)+'
reached '+ta(u.pct)+' Christian
pop '+ta(u.pop)+"
"+(u.bridge?'
bridge '+ta(u.bridge)+"
":"")+(u.religion?'
religion '+ta(u.religion)+"
":"")+'
click → pin · highlights the list
'}return Rn(async()=>{var c,P,p,M,N,U;await k();const u=_.value;if(!u)return;try{u.setProjection("mercator")}catch{}if(t.value.debugExpose&&typeof window<"u")try{(((p=(P=(c=r.value)==null?void 0:c.getRootNode)==null?void 0:P.call(c))==null?void 0:p.host)||window).__cockpitmap=u}catch{}const A=(h,C)=>{u.on("mouseenter",h,()=>{u.getCanvas().style.cursor="pointer"}),u.on("mouseleave",h,()=>{u.getCanvas().style.cursor="",g.value.pinned||(g.value={...g.value,show:!1})}),u.on("mousemove",h,y=>{var H;const R=(H=y.features)==null?void 0:H[0];R&&(g.value={show:!0,x:y.originalEvent.clientX,y:y.originalEvent.clientY,html:C(R.properties)})})},j=()=>{O(),u.on("click",fe,h=>{var y;const C=(y=h.features)==null?void 0:y[0];C&&(g.value={...g.value,show:!1,pinned:!1},n.selectTarget(C.properties.id))}),A(fe,ba),A(ie,na),u.on("mousemove",ie,h=>{var y;const C=(y=h.features)==null?void 0:y[0];if(C){Y(C.properties.id);try{n.setHover&&n.setHover(C.properties.id)}catch{}}}),u.on("mouseleave",ie,()=>{Y(null);try{n.setHover&&n.setHover(null)}catch{}}),u.on("click",ie,h=>{var R;const C=(R=h.features)==null?void 0:R[0];if(!C)return;const y=h.originalEvent||{};g.value={show:!0,pinned:!0,x:y.clientX||g.value.x,y:y.clientY||g.value.y,html:na(C.properties)};try{n.setHover&&n.setHover(C.properties.id)}catch{}try{u.stop(),u.easeTo({center:C.geometry.coordinates,zoom:Math.max(u.getZoom(),4.5),duration:700})}catch{}}),s.value=!0,n.focusedTargetId.value&&q()};(M=u.isStyleLoaded)!=null&&M.call(u)?j():(N=u.once)==null||N.call(u,"load",j),(U=u.once)==null||U.call(u,"idle",()=>{s.value&&O()})}),cn(()=>[n.ready.value,n.clusters.value,n.mapNodes.value,n.colorBy.value,n.provinceDrill.value],()=>O()),cn(()=>n.focusedTargetId.value,()=>{O(),q()}),cn(()=>n.mode.value,()=>{bi(()=>{var u;try{(u=_.value)==null||u.resize()}catch{}})}),n.hoveredId&&cn(()=>n.hoveredId.value,u=>Y(u)),Ue(()=>{ma(),x()}),On(` - .cpt-mc-root { position:absolute; inset:0; overflow:hidden; background:#eef2f7; isolation:isolate; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - .cpt-mc-map { position:absolute; inset:0; } - .cpt-mc-loading { position:absolute; inset:0; z-index:5; display:flex; align-items:center; justify-content:center; - background:#eef2f7; color:${ia.NAVY}; font:600 12px/1.5 ui-monospace,monospace; text-align:center; padding:18px; } - - /* on-map control cluster (top-left) — color-by + province drill + reset */ - .cpt-mc-ctl { position:absolute; top:8px; left:8px; z-index:30; display:flex; flex-direction:column; gap:6px; align-items:flex-start; } - .cpt-mc-seg { display:inline-flex; background:rgba(255,255,255,.95); border:1px solid #cbd5e1; border-radius:999px; padding:2px; gap:2px; box-shadow:0 2px 8px rgba(0,0,0,.14); } - .cpt-mc-seg button { border:0; background:transparent; color:#475569; cursor:pointer; font:700 10px/1 ui-monospace,monospace; padding:5px 9px; border-radius:999px; } - .cpt-mc-seg button.on { background:${ia.NAVY}; color:#fff; } - .cpt-mc-btn { border:1px solid #cbd5e1; background:rgba(255,255,255,.95); color:${ia.NAVY}; cursor:pointer; - font:700 10px/1 ui-monospace,monospace; padding:6px 10px; border-radius:8px; box-shadow:0 2px 8px rgba(0,0,0,.14); } - .cpt-mc-btn.on { background:${ia.NAVY}; color:#fff; border-color:${ia.NAVY}; } - .cpt-mc-btn.gold { background:${ia.GOLD}; color:#3a2600; border-color:${ia.GOLD}; } - - /* SEND headline (bottom-left) when a target is focused */ - .cpt-mc-headline { position:absolute; left:8px; bottom:8px; right:8px; z-index:28; pointer-events:none; - background:rgba(0,46,110,.92); color:#fff; border-radius:9px; padding:7px 11px; max-width:560px; - font:700 12px/1.35 -apple-system,sans-serif; box-shadow:0 4px 14px rgba(0,0,0,.28); } - - /* hover-pin tooltip */ - .cpt-mc-tip { position:fixed; z-index:60; pointer-events:none; max-width:250px; background:#0e1730; - border:1px solid #34508c; border-radius:9px; padding:9px 11px; box-shadow:0 6px 22px rgba(0,0,0,.5); font-size:11.5px; color:#dbe4f3; } - .cpt-mc-tip strong { font-size:13px; color:#fff; } - .cpt-mc-tsub { color:#fda4af; font:600 10px/1.3 ui-monospace,monospace; margin:2px 0 6px; } - .cpt-mc-trow { display:flex; gap:6px; line-height:1.5; } - .cpt-mc-tk { color:#7e90b6; min-width:62px; } - - @media (max-width:560px){ .cpt-mc-headline{ font-size:11px; } } -`,"cockpit-mapcell"),(u,A)=>(z(),W("div",{ref_key:"mcRoot",ref:r,class:"cpt-mc-root",onMousemove:aa},[f("div",{ref_key:"mapContainer",ref:l,class:"cpt-mc-map"},null,512),s.value?(z(),W("div",zb,[f("div",Vb,[f("button",{class:Ia({on:ha(n).colorBy.value==="pct"}),onClick:A[0]||(A[0]=j=>ha(n).setColorBy("pct"))},"% reached",2),f("button",{class:Ia({on:ha(n).colorBy.value==="religion"}),onClick:A[1]||(A[1]=j=>ha(n).setColorBy("religion"))},"religion",2)]),f("button",{class:Ia(["cpt-mc-btn",{on:ha(n).provinceDrill.value}]),onClick:A[2]||(A[2]=j=>ha(n).toggleProvince()),title:"Overlay IN/CN admin-1 boundaries"},"IN/CN provinces",2),ha(n).focusedTarget.value?(z(),W("button",{key:0,class:"cpt-mc-btn gold",onClick:A[3]||(A[3]=j=>ha(n).clearFocus())},"✕ reset focus")):fa("",!0)])):fa("",!0),s.value&&ha(n).focusedTarget.value?(z(),W("div",Yb,X(ha(n).headline.value),1)):fa("",!0),s.value?fa("",!0):(z(),W("div",Wb,[o.value?(z(),W("span",Jb,"Map needs a Mapbox token (tk in profile-config)…")):(z(),W("span",Zb,"Rendering the harvest field…"))])),g.value.show?(z(),W("div",{key:3,class:"cpt-mc-tip",style:Ka({left:g.value.x+14+"px",top:g.value.y+14+"px"}),innerHTML:g.value.html},null,12,qb)):fa("",!0)],544))}},Qb={class:"cf-bar"},a1={key:0,class:"cf-meta"},n1={class:"cf-stage"},e1={key:0,class:"cf-empty"},i1=["viewBox"],t1={key:0},o1=["cx","cy","fill","opacity","transform"],r1=["d","stroke-dasharray"],l1=["d"],s1=["onClick","onMouseenter"],c1=["cx","cy","r"],g1=["x","y"],u1=["cx","cy","r","fill"],d1=["x","y"],p1={class:"cf-center",style:{"pointer-events":"none"}},m1=["cx","cy","r","fill"],h1=["cx","cy","fill"],y1=["x","y"],b1=["x","y"],_1={key:2,class:"cf-rings"},f1=["innerHTML"],Xe=1e3,P1=212,C1=372,Mg=48,j1=8,k1=16,G1={__name:"FlowerCell",setup(a){const n=Ft(),e=Xe/2,i=Xe/2,t=ua(n.mode.value==="flower"?1:0),o=ua(!1),r=ua(null),l=ua(""),s=ua({show:!1,x:0,y:0,html:""});function g(Y,ta,aa,ba){const na=(ba-90)*Math.PI/180;return[Y+aa*Math.cos(na),ta+aa*Math.sin(na)]}function d(Y){return String(Y&&(Y.rol3||Y.lang)||"").trim().toLowerCase()}function _(Y){return String(Y??"").replace(/[&<>"']/g,ta=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[ta])}const k=la(()=>{const Y=[...new Set(n.visibleSenders.value.map(aa=>aa.religionFamily||"Unknown"))].sort(),ta={};return Y.forEach((aa,ba)=>{ta[aa]=ia.CAT[ba%ia.CAT.length]}),ta}),x=la(()=>{const Y=n.focusedTarget.value;if(!Y)return null;const ta=[...n.visibleSenders.value].sort((Pa,$a)=>$a.pct-Pa.pct||$a.pop-Pa.pop),aa=ta.filter(Pa=>Pa.adjacency==="same-country"),ba=ta.filter(Pa=>Pa.adjacency!=="same-country"),na=o.value?aa:aa.slice(0,j1),u=o.value?ba:ba.slice(0,k1),A=aa.length-na.length+(ba.length-u.length),j=A>0&&!o.value,c=k.value,P=Pa=>n.colorBy.value==="religion"?c[Pa.religionFamily||"Unknown"]||ia.CAT[0]:qe(Pa.pct),p=[],M=[];for(const Pa of na)p.push(Pa.lng),M.push(Pa.lat);for(const Pa of u)p.push(Pa.lng),M.push(Pa.lat);let N=Y.lng,U=Y.lat;(!isFinite(N)||!isFinite(U))&&(N=p.length?p.reduce((Pa,$a)=>Pa+$a,0)/p.length:0,U=M.length?M.reduce((Pa,$a)=>Pa+$a,0)/M.length:0),p.push(N),M.push(U);const h=Math.min(...p),C=Math.max(...p),y=Math.min(...M),R=Math.max(...M),H=Math.max(C-h,.01),V=Math.max(R-y,.01),oa=130;let Q=Math.min((Xe-oa*2)/H,(Xe-oa*2)/V);(!isFinite(Q)||Q<=0)&&(Q=1);const m=(h+C)/2,b=(y+R)/2,F=(Pa,$a)=>[e+(Pa-m)*Q,i-($a-b)*Q],J=[],ca=u.map(Pa=>({kind:"node",s:Pa}));j&&ca.push({kind:"more"});const ra=na.length;na.forEach((Pa,$a)=>{const Ba=ra?($a+.5)/ra*360:0,[dn,Ne]=g(e,i,P1,Ba),[hn,Zi]=F(Pa.lng,Pa.lat);J.push({id:Pa.id,s:Pa,isMore:!1,ring:"inner",ang:Ba,r:Ki(Pa.pop,7,20),color:P(Pa),lang:d(Pa),fx:dn,fy:Ne,gx:hn,gy:Zi})});const B=ca.length,Z=B?180/B:0;ca.forEach((Pa,$a)=>{const Ba=B?($a+.5)/B*360+Z:0,[dn,Ne]=g(e,i,C1,Ba);if(Pa.kind==="more"){const[hn,Zi]=F(N,U);J.push({id:"__more__",isMore:!0,ring:"outer",ang:Ba,r:18,color:ia.NAVY,lang:"",fx:dn,fy:Ne,gx:hn,gy:Zi,hidden:A})}else{const hn=Pa.s,[Zi,Uf]=F(hn.lng,hn.lat);J.push({id:hn.id,s:hn,isMore:!1,ring:"outer",ang:Ba,r:Ki(hn.pop,7,20),color:P(hn),lang:d(hn),fx:dn,fy:Ne,gx:Zi,gy:Uf})}});const[_a,va]=F(N,U),Ra={fx:e,fy:i,gx:_a,gy:va,country:Y.country,count:Y.count,color:Fi(Y.count)},an=new Map;for(const Pa of J){if(Pa.isMore||!Pa.lang)continue;let $a=an.get(Pa.lang);$a||($a=[],an.set(Pa.lang,$a)),$a.push(Pa)}const qa=[];for(const[Pa,$a]of an)if(!($a.length<2))for(let Ba=0;Ba<$a.length-1;Ba++)qa.push({id:"mesh-"+$a[Ba].id+"-"+$a[Ba+1].id,from:$a[Ba].id,to:$a[Ba+1].id,lang:Pa});return{nodes:J,center:Ra,mesh:qa,hidden:A,shown:na.length+u.length,total:ta.length}}),D=la(()=>{const Y={};if(x.value)for(const ta of x.value.nodes)Y[ta.id]=ta;return Y});function T(Y){return!l.value||!Y.isMore&&Y.lang===l.value}function $(Y){return!l.value||Y.lang===l.value}function w(Y){return!Y.isMore&&n.facets.value.languages.has(Y.s.lang)}function L(Y){return Y.gx+(Y.fx-Y.gx)*t.value}function E(Y){return Y.gy+(Y.fy-Y.gy)*t.value}function I(){const Y=x.value.center;return Y.gx+(Y.fx-Y.gx)*t.value}function G(){const Y=x.value.center;return Y.gy+(Y.fy-Y.gy)*t.value}function S(Y){return"M "+I().toFixed(1)+" "+G().toFixed(1)+" L "+L(Y).toFixed(1)+" "+E(Y).toFixed(1)}function v(Y){const ta=D.value[Y.from],aa=D.value[Y.to];if(!ta||!aa)return"";const ba=L(ta),na=E(ta),u=L(aa),A=E(aa),j=(ba+u)/2,c=(na+A)/2,P=j+(e-j)*.45*t.value,p=c+(i-c)*.45*t.value;return"M "+ba.toFixed(1)+" "+na.toFixed(1)+" Q "+P.toFixed(1)+" "+p.toFixed(1)+" "+u.toFixed(1)+" "+A.toFixed(1)}function K(Y){if(Y.isMore)return"4 6";const ta=br(Y.s.bridge);return ta?ta.map(aa=>aa*3).join(" "):"none"}function O(Y){return[L(Y),E(Y)]}function q(Y,ta){if(r.value=Y.id,l.value=Y.isMore?"":Y.lang,!Y.isMore)try{n.setHover&&n.setHover(Y.id)}catch{}if(Y.isMore){s.value={show:!0,x:ta.clientX,y:ta.clientY,html:"+"+Y.hidden+' more senders
click to bloom the full roster
'};return}const aa=Y.s;s.value={show:!0,x:ta.clientX,y:ta.clientY,html:""+_(aa.name)+'
'+_(aa.country)+" · "+_(aa.lang||"—")+'
reached '+Math.round(aa.pct||0)+'% Christian
people '+_e(aa.pop)+'
bridge '+_(aa.bridge||"—")+'
near '+_(aa.adjacency||"—")+"
"}}function sa(Y){s.value.show&&(s.value.x=Y.clientX,s.value.y=Y.clientY)}function ea(){r.value=null,l.value="";try{n.setHover&&n.setHover(null)}catch{}s.value={...s.value,show:!1}}function ga(Y){if(Y.isMore){o.value=!0;return}n.toggleFacet("languages",Y.s.lang)}function Sa(){n.setMode(n.mode.value==="flower"?"map":"flower")}const Ma=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;let ma=0;function pa(Y){if(cancelAnimationFrame(ma),Ma||typeof requestAnimationFrame>"u"){t.value=Y;return}const ta=t.value,aa=performance.now(),ba=720,na=A=>A<.5?2*A*A:1-Math.pow(-2*A+2,2)/2,u=A=>{const j=Math.min(1,(A-aa)/ba);t.value=ta+(Y-ta)*na(j),j<1&&(ma=requestAnimationFrame(u))};ma=requestAnimationFrame(u)}return cn(()=>n.mode.value,Y=>pa(Y==="flower"?1:0)),cn(()=>n.focusedTargetId.value,()=>{o.value=!1}),Ue(()=>cancelAnimationFrame(ma)),On(".cpt-flower{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 50% 44%, #16203a 0%, #0b1020 72%);color:#e5e7eb;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;}.cf-bar{position:absolute;top:10px;left:10px;right:10px;z-index:30;display:flex;gap:8px;align-items:center;flex-wrap:wrap;pointer-events:none;}.cf-bar > *{pointer-events:auto;}.cf-title{background:"+ia.NAVY+";color:#fff;font:700 11px/1 ui-monospace,monospace;letter-spacing:.07em;text-transform:uppercase;padding:8px 12px;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.4);}.cf-meta{font:600 11px/1.4 ui-monospace,monospace;color:#9fb3d9;background:rgba(8,12,24,.7);border:1px solid #1c2742;border-radius:8px;padding:6px 10px;}.cf-meta b{color:#fff;}.cf-bloom{margin-left:auto;background:#13224a;border:1px solid #3f7bd6;color:#fff;cursor:pointer;font:700 11px/1 ui-monospace,monospace;letter-spacing:.04em;padding:8px 13px;border-radius:8px;display:inline-flex;align-items:center;gap:7px;user-select:none;}.cf-bloom:hover{background:#1b2e5e;}.cf-bloom .cf-dot{width:8px;height:8px;border-radius:50%;background:"+ia.GOLD+";}.cf-stage{flex:1 1 0;position:relative;}.cf-svg{position:absolute;inset:0;width:100%;height:100%;display:block;}.cf-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;color:#7e90b6;font:600 12px/1.6 ui-monospace,monospace;padding:24px;}.cf-petal{transition:opacity .15s;}.cf-spoke{fill:none;stroke:"+ia.NAVY+";stroke-width:2;opacity:.45;transition:opacity .15s;}.cf-spoke.lit{opacity:.9;stroke-width:2.6;}.cf-spoke.dim{opacity:.06;}.cf-mesh{fill:none;stroke:"+ia.GOLD+";stroke-width:1.6;opacity:.5;stroke-linecap:round;transition:opacity .15s;}.cf-mesh.lit{opacity:.95;stroke-width:2.6;}.cf-mesh.dim{opacity:.05;}.cf-node{cursor:pointer;transition:opacity .15s;}.cf-node.dim{opacity:.2;}.cf-node circle{stroke:#0b1020;stroke-width:2;}.cf-node.hov circle{stroke:#fff;stroke-width:3;}.cf-node.fac circle{stroke:"+ia.GOLD+";stroke-width:3.5;}.cf-more circle{fill:"+ia.NAVY+";stroke:#3f7bd6;stroke-width:2;stroke-dasharray:4 4;}.cf-more text{fill:#cfe0ff;font:700 13px/1 ui-monospace,monospace;text-anchor:middle;}.cf-label{fill:#cdd9f2;font:600 12px/1 -apple-system,sans-serif;text-anchor:middle;paint-order:stroke;stroke:#0b1020;stroke-width:3px;pointer-events:none;}.cf-center-glow{opacity:.18;}.cf-center circle{stroke:#ffd9bd;stroke-width:3;}.cf-center-name{fill:#fff;font:800 18px/1 -apple-system,sans-serif;text-anchor:middle;paint-order:stroke;stroke:"+ia.RED_DK+";stroke-width:3px;}.cf-center-sub{fill:#ffe1cb;font:600 11px/1 ui-monospace,monospace;text-anchor:middle;}.cf-rings{position:absolute;left:10px;bottom:10px;z-index:25;background:rgba(8,12,24,.8);border:1px solid #1c2742;border-radius:8px;padding:7px 10px;font:600 10px/1.5 ui-monospace,monospace;color:#9fb3d9;}.cf-rings b{color:#dbe4f3;}.cf-tip{position:fixed;z-index:60;pointer-events:none;max-width:240px;background:#0e1730;border:1px solid #34508c;border-radius:9px;padding:9px 11px;box-shadow:0 6px 22px rgba(0,0,0,.55);font-size:11.5px;color:#dbe4f3;}.cf-tip strong{font-size:13px;color:#fff;}.cf-tip-sub{color:"+ia.GOLD+";font:600 10px/1.3 ui-monospace,monospace;margin:2px 0 6px;}.cf-tip-row{display:flex;gap:6px;line-height:1.5;}.cf-tip-k{color:#7e90b6;min-width:54px;}@media (max-width:720px){.cf-meta{display:none;}}","cockpit-flowercell"),(Y,ta)=>(z(),W("div",{class:"cpt-flower",onMousemove:sa},[f("div",Qb,[ta[1]||(ta[1]=f("span",{class:"cf-title"},"Bloom",-1)),x.value?(z(),W("span",a1,[f("b",null,X(x.value.center.country),1),ya(" · "+X(x.value.center.count)+" unreached · ",1),f("b",null,X(x.value.shown),1),ya("/"+X(x.value.total)+" senders ",1)])):fa("",!0),f("button",{class:"cf-bloom",type:"button",onClick:Sa},[ta[0]||(ta[0]=f("span",{class:"cf-dot"},null,-1)),ya(X(ha(n).mode.value==="flower"?"To map":"Bloom")+" ▸ ",1)])]),f("div",n1,[x.value?(z(),W("svg",{key:1,class:"cf-svg",viewBox:"0 0 "+Xe+" "+Xe,preserveAspectRatio:"xMidYMid meet"},[t.value>.05?(z(),W("g",t1,[(z(!0),W(Aa,null,Ua(x.value.nodes,aa=>Ed((z(),W("ellipse",{key:"pt-"+aa.id,class:"cf-petal",cx:O(aa)[0],cy:O(aa)[1],rx:"74",ry:"38",fill:aa.color,opacity:.13*t.value,transform:"rotate("+aa.ang+" "+O(aa)[0]+" "+O(aa)[1]+")"},null,8,o1)),[[Hp,aa.ring==="outer"&&!aa.isMore]])),128))])):fa("",!0),f("g",null,[(z(!0),W(Aa,null,Ua(x.value.nodes,aa=>(z(),W("path",{key:"sp-"+aa.id,class:Ia(["cf-spoke",{lit:l.value&&T(aa),dim:l.value&&!T(aa)}]),d:S(aa),"stroke-dasharray":K(aa)},null,10,r1))),128))]),f("g",null,[(z(!0),W(Aa,null,Ua(x.value.mesh,aa=>(z(),W("path",{key:aa.id,class:Ia(["cf-mesh",{lit:l.value&&$(aa),dim:l.value&&!$(aa)}]),d:v(aa)},null,10,l1))),128))]),f("g",null,[(z(!0),W(Aa,null,Ua(x.value.nodes,aa=>(z(),W("g",{key:"nd-"+aa.id,class:Ia(["cf-node",{dim:l.value&&!T(aa),hov:r.value===aa.id||ha(n).hoveredId.value===aa.id,fac:w(aa),"cf-more":aa.isMore}]),onClick:Xn(ba=>ga(aa),["stop"]),onMouseenter:ba=>q(aa,ba),onMouseleave:ea},[aa.isMore?(z(),W(Aa,{key:0},[f("circle",{cx:L(aa),cy:E(aa),r:aa.r},null,8,c1),f("text",{x:L(aa),y:E(aa)+4},"+"+X(aa.hidden),9,g1)],64)):(z(),W(Aa,{key:1},[f("circle",{cx:L(aa),cy:E(aa),r:aa.r,fill:aa.color},null,8,u1),r.value===aa.id||aa.r>=12?(z(),W("text",{key:0,class:"cf-label",x:L(aa),y:E(aa)+aa.r+14},X(aa.s.name),9,d1)):fa("",!0)],64))],42,s1))),128))]),f("g",p1,[f("circle",{class:"cf-center-glow",cx:I(),cy:G(),r:Mg+26,fill:x.value.center.color},null,8,m1),f("circle",{cx:I(),cy:G(),r:Mg,fill:x.value.center.color},null,8,h1),f("text",{class:"cf-center-name",x:I(),y:G()-1},X(x.value.center.country),9,y1),f("text",{class:"cf-center-sub",x:I(),y:G()+16},X(x.value.center.count)+" unreached",9,b1)])],8,i1)):(z(),W("div",e1,[...ta[2]||(ta[2]=[ya(" Pick a red target on the map —",-1),f("br",null,null,-1),ya("its reached neighbors bloom here as a flower. ",-1)])])),x.value?(z(),W("div",_1,[ta[3]||(ta[3]=f("b",null,"inner",-1)),ta[4]||(ta[4]=ya(" same-country · ",-1)),ta[5]||(ta[5]=f("b",null,"petals",-1)),ta[6]||(ta[6]=ya(" cross-border",-1)),ta[7]||(ta[7]=f("br",null,null,-1)),ta[8]||(ta[8]=ya(" navy = SEND · ",-1)),f("span",{style:Ka({color:ha(ia).GOLD})},"gold",4),ta[9]||(ta[9]=ya(" = same-language mesh ",-1))])):fa("",!0)]),s.value.show?(z(),W("div",{key:0,class:"cf-tip",style:Ka({left:s.value.x+14+"px",top:s.value.y+14+"px"}),innerHTML:s.value.html},null,12,f1)):fa("",!0)],32))}},v1={class:"cpt-list",style:{"container-type":"inline-size"}},A1={class:"cpt-l-head"},S1={class:"cpt-l-title"},E1={key:0,class:"cpt-l-sub"},M1={class:"cpt-l-badge"},I1={key:0,class:"cpt-l-hidden"},w1={key:1,class:"cpt-l-sorts"},x1=["onClick"],T1={key:0,class:"cpt-l-actions"},N1={class:"cpt-l-selall"},L1=["checked"],R1={key:0,class:"cpt-l-selcount"},$1=["disabled"],F1=["disabled"],K1=["data-sid","onMouseenter","onClick"],B1=["checked","onChange"],O1=["title"],U1={class:"cpt-l-body"},H1=["title"],D1={class:"cpt-l-meta"},z1={class:"cpt-l-lang"},V1={key:0,class:"cpt-l-rol3"},Y1=["title"],W1=["title"],J1={class:"cpt-l-right"},Z1={class:"cpt-l-pop"},q1=["onClick"],X1={key:0},Q1={key:0},a3={key:1},n3={key:2,class:"cpt-l-empty"},e3={key:0,class:"sm"},i3={key:1,class:"sm"},t3={key:3,class:"cpt-l-empty"},o3={class:"sm"},r3={__name:"ListCell",setup(a){const n=Ft(),e=la(()=>n.listRows.value),i=la(()=>n.focusedTarget.value),t=la(()=>n.counts.value),o=la(()=>n.sortKey.value),r=la(()=>{const na=i.value;return na&&(na.target_top_langs&&na.target_top_langs.length?na.target_top_langs:na.langs||[])[0]||""}),l=la(()=>{const na=i.value;if(!na)return"Pick a red target to build a send list";const u=e.value.length,A=r.value?" — they speak "+r.value:"";return"Send "+u.toLocaleString()+" reached neighbor"+(u===1?"":"s")+" INTO "+na.country+A}),s=la(()=>i.value&&i.value.senderCount||0),g=la(()=>t.value.hidden||0),d=[{key:"mobilization",label:"Mobilization"},{key:"pct",label:"%Christian"},{key:"pop",label:"Population"},{key:"bridge",label:"Bridge"},{key:"name",label:"Name"},{key:"frontier",label:"Frontier first"}];function _(na){n.setSort(na)}const k=ua(new Set);function x(na){const u=new Set(k.value);u.has(na)?u.delete(na):u.add(na),k.value=u,G.value=""}const D=la(()=>e.value.filter(na=>k.value.has(na.id))),T=la(()=>D.value.length),$=la(()=>e.value.length>0&&e.value.every(na=>k.value.has(na.id)));function w(){k.value=$.value?new Set:new Set(e.value.map(na=>na.id)),G.value=""}function L(){k.value=new Set,G.value=""}const E=la(()=>T.value?D.value:e.value);function I(){E.value.length&&(n.exportSelectionCSV(E.value),G.value="CSV downloaded ("+E.value.length+")",v())}const G=ua("");let S=null;function v(){S&&clearTimeout(S),S=setTimeout(()=>{G.value=""},1900)}function K(na){const u=i.value,A="Send list — "+(u?u.country:"all targets")+(r.value?" ("+r.value+")":"")+" · "+na.length+" senders",j=na.map(c=>c.name+" · "+c.country+" · "+c.lang+(c.rol3?" ("+c.rol3+")":"")+" · "+Math.round(c.pct)+"% Christian · "+_e(c.pop)+" · "+c.bridge);return A+` -`+j.join(` -`)+` -`}function O(na){try{const u=document.createElement("textarea");u.value=na,u.style.position="fixed",u.style.opacity="0",u.style.top="0",document.body.appendChild(u),u.focus(),u.select();const A=document.execCommand&&document.execCommand("copy");return document.body.removeChild(u),!!A}catch{return!1}}async function q(){const na=E.value;if(!na.length)return;const u=K(na);let A=!1;try{navigator.clipboard&&navigator.clipboard.writeText?(await navigator.clipboard.writeText(u),A=!0):A=O(u)}catch{A=O(u)}G.value=A?"Copied ("+na.length+")":"Copy failed — press Ctrl/Cmd-C",v()}function sa(na){typeof n.setHover=="function"&&n.setHover(na)}const ea=la(()=>n.hoveredSenderId&&typeof n.hoveredSenderId=="object"?n.hoveredSenderId.value:null),ga=ua(null);cn(ea,na=>{!na||!ga.value||bi(()=>{const u=ga.value&&ga.value.querySelector('[data-sid="'+Sa(na)+'"]');u&&typeof u.scrollIntoView=="function"&&u.scrollIntoView({block:"nearest"})})});function Sa(na){return String(na).replace(/["\\]/g,"\\$&")}function Ma(na){sa(ea.value===na?null:na)}const ma=ua(null);function pa(na){ma.value=ma.value===na?null:na}function Y(na){return qe(na)}function ta(na){return yr[$t(na)]}function aa(na){const u=br(na);return u===null?"solid":u[0]===4?"dashed":"dotted"}function ba(na){return Math.round(+na||0)+"%"}return On(` -.cpt-list{position:absolute;inset:0;display:flex;flex-direction:column;background:#ffffff; - color:${ia.NAVY};font:400 12px/1.4 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; - overflow:hidden} -.cpt-list *{box-sizing:border-box} - -/* header */ -.cpt-l-head{flex:0 0 auto;padding:8px 10px 6px;border-bottom:1px solid #e6eaf2;background:#fbfcfe} -.cpt-l-title{font-size:12.5px;font-weight:700;color:${ia.NAVY};line-height:1.35} -.cpt-l-sub{margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap; - font-size:10.5px;color:#5b6577} -.cpt-l-badge{display:inline-flex;align-items:center;gap:5px;font-weight:700;font-size:10px; - letter-spacing:.03em;text-transform:uppercase;color:${ia.NAVY}; - background:rgba(0,46,110,.08);border:1px solid rgba(0,46,110,.18); - padding:2px 7px;border-radius:999px} -.cpt-l-badge b{font-size:11px} -.cpt-l-hidden{color:#9aa3b2} - -/* sort row */ -.cpt-l-sorts{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px} -.cpt-l-sort{cursor:pointer;border:1px solid #d6dceb;background:#fff;color:#4a5468; - font:600 10px/1 ui-monospace,monospace;padding:5px 8px;border-radius:7px;white-space:nowrap} -.cpt-l-sort:hover{border-color:${ia.NAVY};color:${ia.NAVY}} -.cpt-l-sort.active{background:${ia.NAVY};border-color:${ia.NAVY};color:#fff} -.cpt-l-sort.frontier.active{background:${ia.GOLD};border-color:${ia.GOLD};color:#3a2a00} - -/* action bar */ -.cpt-l-actions{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap; - padding:6px 10px;border-bottom:1px solid #eef1f7;background:#fff} -.cpt-l-selall{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;color:#5b6577; - cursor:pointer;user-select:none} -.cpt-l-selcount{font-weight:700;color:${ia.NAVY}} -.cpt-l-btn{margin-left:0;cursor:pointer;border:1px solid #cdd5e6;background:#fff; - color:${ia.NAVY};font:600 11px/1 ui-monospace,monospace;padding:7px 10px;border-radius:8px} -.cpt-l-btn:hover{border-color:${ia.NAVY};background:rgba(0,46,110,.06)} -.cpt-l-btn:disabled{opacity:.45;cursor:not-allowed} -.cpt-l-btn.primary{background:${ia.NAVY};border-color:${ia.NAVY};color:#fff} -.cpt-l-btn.primary:hover{background:#013a8a} -.cpt-l-btn.ghost{color:#7b8498;border-color:#e0e5f0} -.cpt-l-spacer{flex:1 1 auto} -.cpt-l-flash{font-size:10px;color:#0f7a3d;min-height:12px;white-space:nowrap} -.cpt-l-flash.warn{color:${ia.RED}} - -/* rows */ -.cpt-l-rows{flex:1 1 auto;overflow:auto;padding:2px 0} -.cpt-l-row{display:grid;grid-template-columns:auto 12px 1fr auto;align-items:center;gap:8px; - padding:6px 10px;border-bottom:1px solid #f1f3f8;cursor:pointer;position:relative} -.cpt-l-row:hover,.cpt-l-row.hovered{background:rgba(245,158,11,.10)} -.cpt-l-row.hovered{box-shadow:inset 3px 0 0 0 ${ia.GOLD}} -.cpt-l-row.picked{background:rgba(0,46,110,.05)} -.cpt-l-chk{width:15px;height:15px;cursor:pointer;accent-color:${ia.NAVY};margin:0} -.cpt-l-swatch{width:12px;height:12px;border-radius:3px;border:1px solid rgba(0,0,0,.18)} -.cpt-l-body{min-width:0} -.cpt-l-name{font-weight:700;font-size:12px;color:${ia.NAVY}; - white-space:nowrap;overflow:hidden;text-overflow:ellipsis} -.cpt-l-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:2px; - font-size:10px;color:#6b7587} -.cpt-l-meta .sep{color:#c4ccda} -.cpt-l-lang{font-family:ui-monospace,monospace} -.cpt-l-rol3{color:#9aa3b2} -.cpt-l-right{display:flex;align-items:center;gap:8px;justify-self:end;white-space:nowrap} -.cpt-l-pct{font-weight:700;font-size:11.5px;font-family:ui-monospace,monospace} -.cpt-l-pop{font-size:10px;color:#6b7587;font-family:ui-monospace,monospace;min-width:34px;text-align:right} - -/* chips */ -.cpt-l-chip{display:inline-flex;align-items:center;gap:4px;font-size:9.5px; - padding:1px 6px;border-radius:999px;border:1px solid #dde3ef;color:#4a5468;background:#f7f9fc; - white-space:nowrap} -.cpt-l-chip.relig{border-color:#e3dcf0;background:#f6f3fc;color:#5b4a86} -.cpt-l-bridgeline{display:inline-block;width:14px;height:0; - border-top:2px solid ${ia.NAVY}} -.cpt-l-info{flex:0 0 auto;width:16px;height:16px;border-radius:50%;cursor:pointer; - border:1px solid #d6dceb;background:#fff;color:#7b8498;font:700 10px/14px ui-monospace,monospace; - text-align:center} -.cpt-l-info:hover,.cpt-l-info.on{border-color:${ia.NAVY};color:${ia.NAVY}} - -/* pinned tooltip */ -.cpt-l-tip{grid-column:1 / -1;margin-top:6px;padding:7px 9px;border-radius:8px; - background:${ia.NAVY};color:#eef3fb;font-size:10px;line-height:1.5} -.cpt-l-tip dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:2px 10px} -.cpt-l-tip dt{color:#9fb6db;font-weight:600} -.cpt-l-tip dd{margin:0;color:#eef3fb;word-break:break-word} - -/* empty / placeholder states */ -.cpt-l-empty{flex:1 1 auto;display:flex;flex-direction:column;align-items:center; - justify-content:center;gap:6px;text-align:center;color:#8a93a5;padding:24px} -.cpt-l-empty .big{font-size:13px;font-weight:700;color:${ia.NAVY}} -.cpt-l-empty .sm{font-size:11px} - -/* container-query polish for narrow frames */ -@container (max-width: 420px){ - .cpt-l-pop{display:none} - .cpt-l-meta .relig{display:none} -} -`,"cockpit-listcell"),(na,u)=>(z(),W("div",v1,[f("div",A1,[f("div",S1,X(l.value),1),i.value?(z(),W("div",E1,[f("span",M1,[f("b",null,X(s.value.toLocaleString()),1),u[3]||(u[3]=ya(" senders available ",-1))]),g.value?(z(),W("span",I1,"· "+X(g.value.toLocaleString())+" hidden by filters",1)):fa("",!0)])):fa("",!0),i.value?(z(),W("div",w1,[(z(),W(Aa,null,Ua(d,A=>f("button",{key:A.key,class:Ia(["cpt-l-sort",{active:o.value===A.key,frontier:A.key==="frontier"}]),type:"button",onClick:j=>_(A.key)},X(A.label),11,x1)),64))])):fa("",!0)]),i.value&&e.value.length?(z(),W("div",T1,[f("label",N1,[f("input",{class:"cpt-l-chk",type:"checkbox",checked:$.value,onChange:w},null,40,L1),u[4]||(u[4]=ya(" Build send list ",-1)),T.value?(z(),W("span",R1,"("+X(T.value)+")",1)):fa("",!0)]),u[5]||(u[5]=f("span",{class:"cpt-l-spacer"},null,-1)),f("span",{class:Ia(["cpt-l-flash",{warn:G.value.indexOf("fail")!==-1}])},X(G.value),3),T.value?(z(),W("button",{key:0,class:"cpt-l-btn ghost",type:"button",onClick:L},"Clear")):fa("",!0),f("button",{class:"cpt-l-btn",type:"button",disabled:!E.value.length,onClick:q},"Copy",8,$1),f("button",{class:"cpt-l-btn primary",type:"button",disabled:!E.value.length,onClick:I}," Export "+X(T.value?"selection":"all")+" · CSV ",9,F1)])):fa("",!0),i.value&&e.value.length?(z(),W("div",{key:1,class:"cpt-l-rows",ref_key:"rowsEl",ref:ga},[(z(!0),W(Aa,null,Ua(e.value,A=>(z(),W("div",{key:A.id,class:Ia(["cpt-l-row",{hovered:ea.value===A.id,picked:k.value.has(A.id)}]),"data-sid":A.id,onMouseenter:j=>sa(A.id),onMouseleave:u[2]||(u[2]=j=>sa(null)),onClick:j=>Ma(A.id)},[f("input",{class:"cpt-l-chk",type:"checkbox",checked:k.value.has(A.id),onClick:u[0]||(u[0]=Xn(()=>{},["stop"])),onChange:j=>x(A.id)},null,40,B1),f("span",{class:"cpt-l-swatch",style:Ka({background:Y(A.pct)}),title:ta(A.pct)},null,12,O1),f("div",U1,[f("div",{class:"cpt-l-name",title:A.name},X(A.name),9,H1),f("div",D1,[f("span",null,X(A.country),1),u[6]||(u[6]=f("span",{class:"sep"},"·",-1)),f("span",z1,[ya(X(A.lang),1),A.rol3?(z(),W("span",V1," ("+X(A.rol3)+")",1)):fa("",!0)]),f("span",{class:"cpt-l-chip",title:"bridge: "+A.bridge},[f("span",{class:"cpt-l-bridgeline",style:Ka({borderTopStyle:aa(A.bridge)})},null,4),ya(" "+X(A.bridge),1)],8,Y1),f("span",{class:"cpt-l-chip relig",title:A.religion_bg},X(A.religionFamily),9,W1)])]),f("div",J1,[f("span",{class:"cpt-l-pct",style:Ka({color:Y(A.pct)})},X(ba(A.pct)),5),f("span",Z1,X(ha(_e)(A.pop)),1),f("button",{class:Ia(["cpt-l-info",{on:ma.value===A.id}]),type:"button",title:"Details",onClick:Xn(j=>pa(A.id),["stop"])},"i",10,q1)]),ma.value===A.id?(z(),W("div",{key:0,class:"cpt-l-tip",onClick:u[1]||(u[1]=Xn(()=>{},["stop"]))},[f("dl",null,[u[7]||(u[7]=f("dt",null,"People group",-1)),f("dd",null,X(A.name),1),u[8]||(u[8]=f("dt",null,"Country",-1)),f("dd",null,X(A.country),1),u[9]||(u[9]=f("dt",null,"Language",-1)),f("dd",null,[ya(X(A.lang),1),A.rol3?(z(),W("span",X1," · "+X(A.rol3),1)):fa("",!0)]),u[10]||(u[10]=f("dt",null,"%Christian",-1)),f("dd",null,X(ba(A.pct))+" · "+X(ta(A.pct)),1),u[11]||(u[11]=f("dt",null,"Population",-1)),f("dd",null,X(ha(_e)(A.pop)),1),u[12]||(u[12]=f("dt",null,"Bridge",-1)),f("dd",null,X(A.bridge),1),u[13]||(u[13]=f("dt",null,"Adjacency",-1)),f("dd",null,X(A.adjacency),1),u[14]||(u[14]=f("dt",null,"Religion",-1)),f("dd",null,X(A.religion_bg||A.religionFamily),1),A.code?(z(),W("dt",Q1,"Code")):fa("",!0),A.code?(z(),W("dd",a3,X(A.code),1)):fa("",!0)])])):fa("",!0)],42,K1))),128))],512)):i.value?(z(),W("div",n3,[u[15]||(u[15]=f("div",{class:"big"},"No senders match the current filters",-1)),g.value?(z(),W("div",e3,X(g.value.toLocaleString())+" senders hidden — clear a facet to see them",1)):(z(),W("div",i3,"This target has no reached neighbors in the baked set yet"))])):(z(),W("div",t3,[u[16]||(u[16]=f("div",{class:"big"},"Pick a red target",-1)),f("div",o3,X(t.value.clusters.toLocaleString())+" unreached clusters · "+X(t.value.senders.toLocaleString())+" reached senders nearby",1),u[17]||(u[17]=f("div",{class:"sm"},"Tap a red bubble on the map to build its send list.",-1))]))]))}},l3={class:"cpt-cs"},s3={class:"cs-controls"},c3={class:"cs-searchwrap"},g3=["value"],u3={key:0,class:"cs-suggest",role:"listbox"},d3=["onMousedown"],p3={class:"cs-tag"},m3={class:"cs-lens"},h3=["value"],y3=["value"],b3={class:"cs-colorby",role:"group","aria-label":"Color reached senders by"},_3={class:"cs-grid"},f3={class:"cs-card"},P3=["viewBox"],C3=["onClick"],j3=["x","y"],k3=["x","y","width","height"],G3=["x","y"],v3={key:1,class:"cs-empty"},A3={class:"cs-card"},S3=["viewBox"],E3=["onClick"],M3=["x","y"],I3=["x","y","width","height"],w3=["x","y"],x3={key:1,class:"cs-empty"},T3={class:"cs-card"},N3=["viewBox"],L3=["x2"],R3=["onClick"],$3=["x","y","width","height","fill"],F3=["x","y"],K3=["x","y"],B3={class:"cs-card"},O3={class:"cs-donutwrap"},U3={key:0,class:"cs-donut",viewBox:"0 0 160 160",preserveAspectRatio:"xMidYMid meet",role:"img","aria-label":"Donut by category"},H3=["d","fill","onClick"],D3={class:"cs-dctr",x:"80",y:"84","text-anchor":"middle"},z3={class:"cs-legend"},V3=["onClick"],Y3={key:0,class:"cs-empty"},Ig=300,Qe=15,Pr=5,Dt=94,W3=150,Cr=230,J3=120,Z3=10,Oi=96,jr=12,q3=80,X3=80,ai=70,ni=42,Q3={__name:"ChartStrip",setup(a){const n=Ft(),e=ua(!1),i=[0,10,25,50,75],t=(G,S)=>{const v=String(G??"");return v.length>S?v.slice(0,S-1)+"…":v},o=la(()=>n.chartData.value),r=la(()=>n.colorBy.value==="religion"?"religions":"bridges"),l=la(()=>{const G=new Map;for(const S of n.allSenders.value){const v=S.lang||"—";G.set(v,(G.get(v)||0)+1)}return[...G.entries()].map(([S,v])=>({lang:S,count:v})).sort((S,v)=>v.count-S.count)}),s=la(()=>{const G=n.search.value.trim().toLowerCase();if(G.length<1)return[];const S=[];for(const v of n.allClusters.value)if(v.country.toLowerCase().includes(G)&&(S.push({type:"target",label:v.country+" · "+v.count+" unreached",value:v.id,targetId:v.id}),S.length>=6))break;for(const v of l.value)if(v.lang.toLowerCase().includes(G)&&(S.push({type:"lang",label:v.lang+" · "+v.count+" senders",value:v.lang}),S.length>=9))break;for(const v of n.allSenders.value)if(v.name.toLowerCase().includes(G)&&(S.push({type:"sender",label:v.name+" → "+v.country,value:v.name,targetId:v.targetId}),S.length>=13))break;return S.slice(0,11)});function g(G,S){const v=n.facets.value[S],K=v&&v.size>0;let O=1;for(const q of G)q.value>O&&(O=q.value);return G.map((q,sa)=>{const ea=Math.max(2,q.value/O*W3),ga=v?v.has(q.key):!1;return{key:q.key,label:q.label,value:q.value,y:sa*(Qe+Pr),h:Qe,x:Dt,w:ea,ty:sa*(Qe+Pr)+Qe-4,vx:Dt+ea+4,active:ga,dim:K&&!ga}})}const d=G=>Math.max(Qe,G.length*(Qe+Pr)),_=la(()=>g(o.value.languageBar,"languages")),k=la(()=>g(o.value.countryBar,"countries")),x=la(()=>{const G=o.value.reachedHist;let S=1;for(const ea of G)ea.value>S&&(S=ea.value);const v=G.length,K=(Cr-jr-8)/v,O=K*.7,q=n.facets.value.reachedMin,sa=Oi-Z3;return G.map((ea,ga)=>{const Sa=ea.value/S*sa,Ma=jr+ga*K+(K-O)/2,ma=i[ga],pa=q!=null&&q===ma;return{key:ga,label:yr[ga],value:ea.value,color:ea.color,x:Ma,w:O,y:Oi-Sa,h:Sa,cx:Ma+O/2,min:ma,active:pa,dim:q!=null&&q!==ma&&ma>0}})});function D(G){G.min<=0||n.facets.value.reachedMin===G.min?n.setReachedMin(null):n.setReachedMin(G.min)}function T(G,S){const v=(q,sa)=>q3+q*Math.cos(sa),K=(q,sa)=>X3+q*Math.sin(sa),O=S-G>Math.PI?1:0;return"M"+v(ai,G)+" "+K(ai,G)+" A"+ai+" "+ai+" 0 "+O+" 1 "+v(ai,S)+" "+K(ai,S)+" L"+v(ni,S)+" "+K(ni,S)+" A"+ni+" "+ni+" 0 "+O+" 0 "+v(ni,G)+" "+K(ni,G)+" Z"}const $=la(()=>{const G=o.value.donut,S=n.facets.value[r.value],v=S&&S.size>0;let K=0;for(const q of G)K+=q.value;K=K||1;let O=-Math.PI/2;return G.map(q=>{let sa=q.value/K*Math.PI*2;sa>=Math.PI*2&&(sa=Math.PI*2-1e-4);const ea=O,ga=O+sa;O=ga;const Sa=S?S.has(q.key):!1;return{key:q.key,label:q.label,value:q.value,color:q.color,path:T(ea,ga),active:Sa,dim:v&&!Sa}})}),w=la(()=>$.value.reduce((G,S)=>G+S.value,0));function L(G){n.setSearch(G.target.value),e.value=!0}function E(G){G.type==="target"?(n.selectTarget(G.targetId),n.setSearch("")):(G.type==="sender"&&G.targetId&&n.selectTarget(G.targetId),n.setSearch(G.value)),e.value=!1}function I(G){n.setLanguageLens(G.target.value||null)}return On(` - .cpt-cs{position:absolute;inset:0;display:flex;flex-direction:column;overflow:auto; - background:#f8fafc;color:${ia.NAVY}; - font:600 11px/1.35 ui-monospace,SFMono-Regular,Menlo,monospace;} - - /* control bar */ - .cs-controls{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center; - gap:8px;padding:8px 10px;background:rgba(248,250,252,.96);border-bottom:1px solid #e2e8f0;} - .cs-searchwrap{position:relative;flex:1 1 180px;min-width:140px;} - .cs-search{width:100%;box-sizing:border-box;padding:6px 9px;border:1px solid #cbd5e1;border-radius:8px; - background:#fff;color:${ia.NAVY};font:600 11px/1.2 ui-monospace,monospace;outline:none;} - .cs-search:focus{border-color:${ia.NAVY};box-shadow:0 0 0 2px rgba(0,46,110,.12);} - .cs-suggest{position:absolute;left:0;right:0;top:calc(100% + 3px);z-index:60;margin:0;padding:4px; - list-style:none;background:#fff;border:1px solid #cbd5e1;border-radius:8px; - box-shadow:0 8px 22px rgba(0,0,0,.16);max-height:230px;overflow:auto;} - .cs-suggest li{display:flex;align-items:center;gap:6px;padding:5px 7px;border-radius:6px;cursor:pointer; - font:600 11px/1.25 ui-monospace,monospace;color:${ia.NAVY};} - .cs-suggest li:hover{background:#eef2f7;} - .cs-tag{flex:0 0 auto;font:700 8px/1 ui-monospace,monospace;letter-spacing:.5px;color:#fff; - padding:2px 4px;border-radius:4px;background:#94a3b8;} - .cs-suggest li.t-target .cs-tag{background:${ia.RED};} - .cs-suggest li.t-lang .cs-tag{background:${ia.GOLD};} - .cs-suggest li.t-sender .cs-tag{background:${ia.NAVY};} - - .cs-lens{display:inline-flex;align-items:center;gap:5px;font:700 10px/1 ui-monospace,monospace;color:#475569;} - .cs-lens select{padding:5px 6px;border:1px solid #cbd5e1;border-radius:7px;background:#fff; - color:${ia.NAVY};font:600 10px/1.1 ui-monospace,monospace;max-width:140px;} - .cs-colorby{display:inline-flex;align-items:center;gap:4px;font:700 10px/1 ui-monospace,monospace;color:#475569;} - .cs-colorby button{border:1px solid #cbd5e1;background:#fff;color:#475569;cursor:pointer; - font:700 10px/1 ui-monospace,monospace;padding:5px 8px;border-radius:7px;} - .cs-colorby button.on{background:${ia.NAVY};color:#fff;border-color:${ia.NAVY};} - - /* charts grid */ - .cs-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 10px 12px;} - @container (max-width:520px){ .cs-grid{grid-template-columns:1fr;} } - .cs-card{display:flex;flex-direction:column;min-width:0;background:#fff;border:1px solid #e2e8f0; - border-radius:10px;padding:7px 8px;} - .cs-card header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;} - .cs-card h4{margin:0;font:700 10px/1.2 ui-monospace,monospace;letter-spacing:.3px; - text-transform:uppercase;color:#475569;} - .cs-clr{border:0;background:transparent;color:${ia.RED};cursor:pointer; - font:700 9px/1 ui-monospace,monospace;padding:2px 4px;} - .cs-clr:hover{text-decoration:underline;} - .cs-svg{width:100%;height:auto;display:block;} - .cs-empty{margin:8px 0;color:#94a3b8;font:600 10px/1 ui-monospace,monospace;text-align:center;} - - /* horizontal bars */ - .cs-barrow{cursor:pointer;} - .cs-bar{fill:${ia.NAVY};transition:opacity .15s;} - .cs-bar--country{fill:#1f5fa8;} - .cs-barrow:hover .cs-bar{fill:${ia.GOLD};} - .cs-barrow.active .cs-bar{fill:${ia.GOLD};} - .cs-barrow.dim{opacity:.4;} - .cs-blabel{fill:#334155;font:600 9px/1 ui-monospace,monospace;} - .cs-bval{fill:#64748b;font:600 8.5px/1 ui-monospace,monospace;dominant-baseline:alphabetic;} - .cs-barrow.active .cs-blabel,.cs-barrow.active .cs-bval{fill:${ia.NAVY};} - - /* histogram */ - .cs-axis{stroke:#cbd5e1;stroke-width:1;} - .cs-histbar{cursor:pointer;transition:opacity .15s;} - .cs-histbar rect{stroke:#fff;stroke-width:.5;} - .cs-histbar:hover rect{stroke:${ia.NAVY};stroke-width:1.5;} - .cs-histbar.active rect{stroke:${ia.GOLD};stroke-width:2;} - .cs-histbar.dim{opacity:.4;} - .cs-hval{fill:#334155;font:700 8px/1 ui-monospace,monospace;} - .cs-hlabel{fill:#64748b;font:600 6.5px/1 ui-monospace,monospace;} - - /* donut */ - .cs-donutwrap{display:flex;align-items:center;gap:8px;} - .cs-donut{flex:0 0 96px;width:96px;height:96px;} - .cs-arc{cursor:pointer;stroke:#fff;stroke-width:1;transition:opacity .15s;} - .cs-arc:hover{stroke:${ia.NAVY};stroke-width:1.5;} - .cs-arc.active{stroke:${ia.GOLD};stroke-width:2.5;} - .cs-arc.dim{opacity:.4;} - .cs-dctr{fill:${ia.NAVY};font:700 16px/1 ui-monospace,monospace;} - .cs-legend{flex:1 1 auto;margin:0;padding:0;list-style:none;max-height:104px;overflow:auto;min-width:0;} - .cs-legend li{display:flex;align-items:center;gap:5px;padding:2px 2px;cursor:pointer;border-radius:4px; - font:600 9.5px/1.3 ui-monospace,monospace;color:#334155;white-space:nowrap;overflow:hidden;} - .cs-legend li:hover{background:#eef2f7;} - .cs-legend li.active{color:${ia.NAVY};font-weight:800;} - .cs-legend li.dim{opacity:.45;} - .cs-legend li i{flex:0 0 auto;width:10px;height:10px;border-radius:3px;border:1px solid rgba(0,0,0,.12);} - .cs-legend li b{margin-left:auto;color:#64748b;} -`,"chartstrip"),(G,S)=>(z(),W("div",l3,[f("div",s3,[f("div",c3,[f("input",{class:"cs-search",type:"search",value:ha(n).search.value,onInput:L,onFocus:S[0]||(S[0]=v=>e.value=!0),onBlur:S[1]||(S[1]=v=>e.value=!1),placeholder:"Search target / language / sender…","aria-label":"Search and brush"},null,40,g3),e.value&&s.value.length?(z(),W("ul",u3,[(z(!0),W(Aa,null,Ua(s.value,(v,K)=>(z(),W("li",{key:K,class:Ia("t-"+v.type),role:"option",onMousedown:Xn(O=>E(v),["prevent"])},[f("span",p3,X(v.type==="target"?"RED":v.type==="lang"?"LANG":"SEND"),1),ya(" "+X(v.label),1)],42,d3))),128))])):fa("",!0)]),f("label",m3,[S[9]||(S[9]=f("span",null,"Lens",-1)),f("select",{value:ha(n).languageLens.value||"",onChange:I,"aria-label":"Language lens"},[S[8]||(S[8]=f("option",{value:""},"— no lens —",-1)),(z(!0),W(Aa,null,Ua(l.value.slice(0,40),v=>(z(),W("option",{key:v.lang,value:v.lang},X(v.lang)+" ("+X(v.count)+") ",9,y3))),128))],40,h3)]),f("div",b3,[S[10]||(S[10]=f("span",null,"Color",-1)),f("button",{class:Ia({on:ha(n).colorBy.value==="pct"}),onClick:S[2]||(S[2]=v=>ha(n).setColorBy("pct"))},"% reached",2),f("button",{class:Ia({on:ha(n).colorBy.value==="religion"}),onClick:S[3]||(S[3]=v=>ha(n).setColorBy("religion"))},"religion",2)])]),f("div",_3,[f("section",f3,[f("header",null,[S[11]||(S[11]=f("h4",null,"Sender language",-1)),ha(n).facets.value.languages.size?(z(),W("button",{key:0,class:"cs-clr",onClick:S[4]||(S[4]=v=>ha(n).facets.value.languages.forEach(K=>ha(n).toggleFacet("languages",K)))},"clear")):fa("",!0)]),_.value.length?(z(),W("svg",{key:0,class:"cs-svg",viewBox:"0 0 "+Ig+" "+d(o.value.languageBar),preserveAspectRatio:"xMinYMin meet",role:"img","aria-label":"Senders by language"},[(z(!0),W(Aa,null,Ua(_.value,v=>(z(),W("g",{key:v.key,class:Ia(["cs-barrow",{active:v.active,dim:v.dim}]),onClick:K=>ha(n).toggleFacet("languages",v.key)},[f("text",{class:"cs-blabel",x:Dt-4,y:v.ty,"text-anchor":"end"},X(t(v.label,13)),9,j3),f("rect",{class:"cs-bar",x:v.x,y:v.y,width:v.w,height:v.h},null,8,k3),f("text",{class:"cs-bval",x:v.vx,y:v.ty},X(v.value),9,G3)],10,C3))),128))],8,P3)):(z(),W("p",v3,"no senders"))]),f("section",A3,[f("header",null,[S[12]||(S[12]=f("h4",null,"Sender country",-1)),ha(n).facets.value.countries.size?(z(),W("button",{key:0,class:"cs-clr",onClick:S[5]||(S[5]=v=>ha(n).facets.value.countries.forEach(K=>ha(n).toggleFacet("countries",K)))},"clear")):fa("",!0)]),k.value.length?(z(),W("svg",{key:0,class:"cs-svg",viewBox:"0 0 "+Ig+" "+d(o.value.countryBar),preserveAspectRatio:"xMinYMin meet",role:"img","aria-label":"Senders by country"},[(z(!0),W(Aa,null,Ua(k.value,v=>(z(),W("g",{key:v.key,class:Ia(["cs-barrow cs-barrow--country",{active:v.active,dim:v.dim}]),onClick:K=>ha(n).toggleFacet("countries",v.key)},[f("text",{class:"cs-blabel",x:Dt-4,y:v.ty,"text-anchor":"end"},X(t(v.label,13)),9,M3),f("rect",{class:"cs-bar cs-bar--country",x:v.x,y:v.y,width:v.w,height:v.h},null,8,I3),f("text",{class:"cs-bval",x:v.vx,y:v.ty},X(v.value),9,w3)],10,E3))),128))],8,S3)):(z(),W("p",x3,"no senders"))]),f("section",T3,[f("header",null,[S[13]||(S[13]=f("h4",null,"% reached (quantile)",-1)),ha(n).facets.value.reachedMin!=null?(z(),W("button",{key:0,class:"cs-clr",onClick:S[6]||(S[6]=v=>ha(n).setReachedMin(null))},"clear")):fa("",!0)]),(z(),W("svg",{class:"cs-svg",viewBox:"0 0 "+Cr+" "+J3,preserveAspectRatio:"xMidYMid meet",role:"img","aria-label":"Reached percent histogram"},[f("line",{class:"cs-axis",x1:jr,y1:Oi,x2:Cr-4,y2:Oi},null,8,L3),(z(!0),W(Aa,null,Ua(x.value,v=>(z(),W("g",{key:v.key,class:Ia(["cs-histbar",{active:v.active,dim:v.dim}]),onClick:K=>D(v)},[f("rect",{x:v.x,y:v.y,width:v.w,height:v.h,fill:v.color},null,8,$3),f("text",{class:"cs-hval",x:v.cx,y:v.y-3,"text-anchor":"middle"},X(v.value),9,F3),f("text",{class:"cs-hlabel",x:v.cx,y:Oi+12,"text-anchor":"middle"},X(v.label),9,K3)],10,R3))),128))],8,N3))]),f("section",B3,[f("header",null,[f("h4",null,X(ha(n).colorBy.value==="religion"?"Religion family":"Bridge type"),1),ha(n).facets.value[r.value].size?(z(),W("button",{key:0,class:"cs-clr",onClick:S[7]||(S[7]=v=>ha(n).facets.value[r.value].forEach(K=>ha(n).toggleFacet(r.value,K)))},"clear")):fa("",!0)]),f("div",O3,[w.value?(z(),W("svg",U3,[(z(!0),W(Aa,null,Ua($.value,v=>(z(),W("path",{key:v.key,class:Ia(["cs-arc",{active:v.active,dim:v.dim}]),d:v.path,fill:v.color,onClick:K=>ha(n).toggleFacet(r.value,v.key)},null,10,H3))),128)),f("text",D3,X(w.value),1)])):fa("",!0),f("ul",z3,[(z(!0),W(Aa,null,Ua($.value,v=>(z(),W("li",{key:v.key,class:Ia({active:v.active,dim:v.dim}),onClick:K=>ha(n).toggleFacet(r.value,v.key)},[f("i",{style:Ka({background:v.color})},null,4),ya(X(t(v.label,16))+" ",1),f("b",null,X(v.value),1)],10,V3))),128))])]),w.value?fa("",!0):(z(),W("p",Y3,"no senders"))])])]))}},a_={class:"cpt-header"},n_={class:"cpt-chips"},e_=["onClick","title"],i_=["value"],t_={class:"cpt-counter"},o_=["title"],r_={class:"cpt-cell map"},l_={class:"cpt-cell flower"},s_={class:"cpt-seg",role:"tablist","aria-label":"Map or flower view"},c_={class:"cpt-lower"},g_={class:"cpt-cell"},u_={class:"cpt-cell"},d_={class:"cpt-legend"},p_={class:"cpt-lg"},m_={class:"cpt-lg"},h_={class:"cpt-ramp"},y_={class:"cpt-lg"},b_={class:"cpt-lg"},__={key:0,class:"cpt-overlay"},f_={key:1,class:"cpt-overlay err"},wg={__name:"bloom-cockpit",setup(a){const n=Ya("profileConfig"),e=Ya("mapboxToken"),i=la(()=>(n==null?void 0:n.value)||{}),t=Tb();vn("cockpitStore",t);const o=ua(null);Rn(()=>{var s,g,d;if(t.loadData({...i.value,tk:(e==null?void 0:e.value)||i.value.tk}),i.value.debugExpose&&typeof window<"u")try{(((d=(g=(s=o.value)==null?void 0:s.getRootNode)==null?void 0:g.call(s))==null?void 0:d.host)||window).__cockpit=t}catch{}});function r(s){t.setSearch(s.target.value)}function l(s){t.setMode(s)}return On(` - .cpt-root { position:absolute; inset:0; display:grid; overflow:hidden; - grid-template-rows: auto minmax(0,1.45fr) minmax(0,1fr) auto; - grid-template-areas: "header" "upper" "lower" "legend"; - background:#eef2f7; color:#1f2937; isolation:isolate; container-type:inline-size; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - - /* ── HEADER ── */ - .cpt-header { grid-area:header; display:flex; flex-wrap:wrap; gap:8px; align-items:center; - padding:8px 12px; background:${ia.NAVY}; color:#fff; border-bottom:1px solid #001b44; } - .cpt-brand { font:800 12px/1 ui-monospace,monospace; letter-spacing:.05em; text-transform:uppercase; - padding:6px 10px; background:rgba(255,255,255,.1); border-radius:7px; } - .cpt-chips { display:flex; flex-wrap:wrap; gap:5px; align-items:center; } - .cpt-chip { display:inline-flex; align-items:center; gap:5px; font:600 11px/1 -apple-system,sans-serif; - padding:4px 8px; border-radius:999px; background:#fff; color:${ia.NAVY}; cursor:pointer; border:0; } - .cpt-chip.focus { background:${ia.GOLD}; color:#3a2600; } - .cpt-chip .x { font-weight:800; opacity:.6; } - .cpt-chip:hover .x { opacity:1; } - .cpt-search { flex:1 1 180px; min-width:120px; max-width:360px; margin-left:auto; - background:#0e1f44; border:1px solid #284a86; color:#dbe4f3; font:600 12px/1 -apple-system,sans-serif; - padding:7px 11px; border-radius:8px; } - .cpt-search::placeholder { color:#7e90b6; } - .cpt-counter { font:700 11px/1.3 ui-monospace,monospace; color:#cdd9f2; text-align:right; white-space:nowrap; } - .cpt-counter b { color:#fff; } - .cpt-prov { font:600 10px/1.3 ui-monospace,monospace; color:#9fb3d9; background:rgba(0,0,0,.25); - border:1px solid #284a86; border-radius:7px; padding:5px 9px; max-width:280px; } - .cpt-prov.err { color:#fecaca; border-color:#9f1239; } - - /* ── UPPER ROW: map + flower ── */ - .cpt-upper { grid-area:upper; display:grid; grid-template-columns: 58fr 42fr; gap:1px; - background:#cbd5e1; position:relative; min-height:0; } - .cpt-cell { position:relative; overflow:hidden; min-height:0; background:#fff; } - .cpt-seg { position:absolute; top:8px; left:50%; transform:translateX(-50%); z-index:40; - display:inline-flex; background:rgba(255,255,255,.95); border:1px solid #cbd5e1; border-radius:999px; - padding:3px; gap:2px; box-shadow:0 2px 10px rgba(0,0,0,.15); } - .cpt-seg button { border:0; background:transparent; color:#475569; cursor:pointer; - font:700 11px/1 ui-monospace,monospace; padding:6px 12px; border-radius:999px; } - .cpt-seg button.on { background:${ia.NAVY}; color:#fff; } - - /* ── LOWER ROW: charts + list ── */ - .cpt-lower { grid-area:lower; display:grid; grid-template-columns: 42fr 58fr; gap:1px; - background:#cbd5e1; min-height:0; } - - /* ── LEGEND RIBBON ── */ - .cpt-legend { grid-area:legend; display:flex; flex-wrap:wrap; gap:6px 16px; align-items:center; - padding:6px 12px; background:#0e1730; color:#cdd9f2; font:600 10px/1.4 ui-monospace,monospace; - border-top:1px solid #1c2742; } - .cpt-lg { display:inline-flex; align-items:center; gap:6px; } - .cpt-sw { width:12px; height:12px; border-radius:50%; flex:0 0 auto; border:1px solid rgba(255,255,255,.3); } - .cpt-line { width:18px; height:0; border-top:2px solid; flex:0 0 auto; } - .cpt-ramp { display:inline-flex; gap:0; } - .cpt-ramp i { width:13px; height:11px; display:inline-block; } - - /* ── loading / error overlay ── */ - .cpt-overlay { position:absolute; inset:0; z-index:80; display:flex; align-items:center; - justify-content:center; background:rgba(238,242,247,.92); color:${ia.NAVY}; - font:600 13px/1.5 ui-monospace,monospace; text-align:center; padding:24px; } - .cpt-overlay.err { color:${ia.RED_DK}; } - - /* ── responsive: stack the two cells per row on narrow frames ── */ - @container (max-width: 720px) { - .cpt-upper { grid-template-columns: 1fr; grid-template-rows: 1fr; } - .cpt-upper .cpt-cell.flower { display:none; } - .cpt-upper.flower-mode .cpt-cell.map { display:none; } - .cpt-upper.flower-mode .cpt-cell.flower { display:block; } - .cpt-lower { grid-template-columns: 1fr; grid-template-rows: 1fr 1fr; } - .cpt-prov { display:none; } - } -`,"cockpit-shell"),(s,g)=>(z(),W("div",{ref_key:"rootEl",ref:o,class:"cpt-root"},[f("div",a_,[g[4]||(g[4]=f("span",{class:"cpt-brand"},"My UPG Neighbor · Overview",-1)),f("div",n_,[(z(!0),W(Aa,null,Ua(ha(t).chips.value,(d,_)=>(z(),W("button",{key:_,class:Ia(["cpt-chip",{focus:d.kind==="focus"}]),onClick:k=>ha(t).removeChip(d),title:"remove "+d.label},[ya(X(d.label)+" ",1),g[2]||(g[2]=f("span",{class:"x"},"×",-1))],10,e_))),128))]),f("input",{class:"cpt-search",type:"search",value:ha(t).search.value,onInput:r,placeholder:"Search target / sender / language…","aria-label":"Search"},null,40,i_),f("span",t_,[f("b",null,X(ha(t).counts.value.senders.toLocaleString()),1),g[3]||(g[3]=ya(" senders → ",-1)),f("b",null,X(ha(t).counts.value.clusters.toLocaleString()),1),ya(" clusters · "+X(ha(t).counts.value.hidden)+" hidden ",1)]),f("span",{class:Ia(["cpt-prov",{err:ha(t).provenance.value.apiError}]),title:ha(t).provenance.value.reachedFilter},[ha(t).provenance.value.apiError?(z(),W(Aa,{key:0},[ya(X(ha(t).provenance.value.apiError),1)],64)):(z(),W(Aa,{key:1},[ya(" LIVE "+X(ha(t).provenance.value.liveUnreached.toLocaleString())+" unreached · baked senders "+X(ha(t).provenance.value.bakedGenerated),1)],64))],10,o_)]),f("div",{class:Ia(["cpt-upper",{"flower-mode":ha(t).mode.value==="flower"}])},[f("div",r_,[Wa(Xb)]),f("div",l_,[Wa(G1)]),f("div",s_,[f("button",{class:Ia({on:ha(t).mode.value==="map"}),onClick:g[0]||(g[0]=d=>l("map"))},"MAP",2),f("button",{class:Ia({on:ha(t).mode.value==="flower"}),onClick:g[1]||(g[1]=d=>l("flower"))},"FLOWER",2)])],2),f("div",c_,[f("div",g_,[Wa(Q3)]),f("div",u_,[Wa(r3)])]),f("div",d_,[f("span",p_,[f("span",{class:"cpt-sw",style:Ka({background:ha(ia).RED})},null,4),g[5]||(g[5]=ya(" unreached target",-1))]),f("span",m_,[g[6]||(g[6]=ya("reached % ",-1)),f("span",h_,[(z(!0),W(Aa,null,Ua(ha(ia).GREEN_BINS,(d,_)=>(z(),W("i",{key:_,style:Ka({background:d})},null,4))),128))])]),f("span",y_,[f("span",{class:"cpt-line",style:Ka({borderColor:ha(ia).NAVY})},null,4),g[7]||(g[7]=ya(" SEND (solid=same-lang · dashed=cluster · dotted=in-country)",-1))]),f("span",b_,[f("span",{class:"cpt-sw",style:Ka({background:ha(ia).GOLD})},null,4),g[8]||(g[8]=ya(" selection · pop = log radius · Luke 10:2",-1))])]),ha(t).ready.value?ha(t).loadError.value&&!ha(t).allClusters.value.length?(z(),W("div",f_,X(ha(t).loadError.value),1)):fa("",!0):(z(),W("div",__,"Loading the harvest field…"))],512))}},P_=Object.freeze(Object.defineProperty({__proto__:null,default:wg},Symbol.toStringTag,{value:"Module"})),C_={class:"fm-top"},j_=["value"],k_=["value"],G_=["aria-checked"],v_={key:1,class:"fm-stats"},A_={class:"fm-stage"},S_={key:0,class:"fm-loading"},E_={key:1,class:"fm-loading"},M_=["viewBox"],I_=["cx","cy","fill","transform"],w_=["x1","y1","x2","y2","stroke-dasharray"],x_=["d"],T_=["onClick","onMouseenter"],N_=["cx","cy","r","fill"],L_=["x","y"],R_=["r"],$_=["y"],F_=["y"],K_=["y"],B_={key:3,class:"fm-legend"},O_={class:"fm-lrow"},U_={class:"fm-lrow"},H_={class:"fm-footer"},D_=["innerHTML"],kr="#FF6600",z_="#002e6e",V_="#0b1020",zt=1e3,xg=205,Gr=360,Tg=46,Ng={__name:"flower-mesh",setup(a){function n(c){const P=+c||0;return P>=80?"#0f7a3d":P>=40?"#1f9d55":P>=15?"#5cb874":"#9bcf9b"}const e=Ya("profileConfig");Ya("dataSource",null);const i=la(()=>(e==null?void 0:e.value)||{}),t=ua(null),o=ua(!1),r=ua(""),l=ua(i.value.target??"India"),s=ua(!0),g=ua(null),d=ua(null),_=ua({show:!1,x:0,y:0,html:""}),k=zt/2,x=zt/2;function D(c,P,p,M){const N=(M-90)*Math.PI/180;return[c+p*Math.cos(N),P+p*Math.sin(N)]}function T(c){const P=Math.max(0,+c||0);return Math.max(7,Math.min(22,6+Math.sqrt(P)/320))}function $(c){return String(c||"").trim().toLowerCase()}const w=la(()=>t.value?Object.keys(t.value.countries):[]),L=la(()=>{var c,P;return((P=(c=t.value)==null?void 0:c.countries)==null?void 0:P[l.value])??null}),E=la(()=>{const c=L.value;return c?(c.neighbors||[]).map((P,p)=>({...P,_i:p})):[]}),I=la(()=>E.value.filter(c=>c.adjacency==="same-country")),G=la(()=>E.value.filter(c=>c.adjacency!=="same-country")),S=la(()=>{const c=[],P=(p,M,N)=>{const U=p.length;p.forEach((h,C)=>{const y=U?(C+.5)/U*360+N:0,[R,H]=D(k,x,M,y);c.push({id:"n"+h._i,node:h,x:R,y:H,ang:y,r:T(h.pop),color:n(h.pct_christian),ring:M===xg?"inner":"outer"})})};return P(I.value,xg,0),P(G.value,Gr,G.value.length?180/G.value.length:0),c}),v=la(()=>S.value.map(c=>({id:"s-"+c.id,x1:k,y1:x,x2:c.x,y2:c.y,strong:c.node.bridge==="same-language",to:c.id}))),K=la(()=>{if(!s.value)return[];const c=S.value,P=[];for(let p=0;pS.value.filter(c=>c.ring==="outer").map(c=>({id:"p-"+c.id,cx:D(k,x,Gr-6,c.ang)[0],cy:D(k,x,Gr-6,c.ang)[1],rot:c.ang,color:c.color}))),q=la(()=>{const c=L.value,P=d.value;return{name:l.value,upg:(P==null?void 0:P.upg)??(c==null?void 0:c.target_upg)??0,pop:(P==null?void 0:P.pop)??(c==null?void 0:c.target_pop)??0,religion:(c==null?void 0:c.target_top_religion)??"",langs:(c==null?void 0:c.target_top_langs)??[]}}),sa=la(()=>({total:E.value.length,inner:I.value.length,outer:G.value.length,countries:new Set(E.value.map(c=>c.country)).size,meshes:K.value.length}));function ea(c){return g.value?c.from===g.value||c.to===g.value:!0}function ga(c){return g.value?c.to===g.value:!0}function Sa(c){return!g.value||c.id===g.value?!0:K.value.some(P=>P.from===g.value&&P.to===c.id||P.to===g.value&&P.from===c.id)}const Ma=c=>(+c||0).toLocaleString();function ma(c){const P=+c||0;return P>=1e9?(P/1e9).toFixed(1)+"B":P>=1e6?(P/1e6).toFixed(1)+"M":P>=1e3?(P/1e3).toFixed(0)+"K":String(P)}function pa(c,P){const p=c.node,M=p.province||p.segment;_.value={show:!0,x:P.clientX,y:P.clientY,html:`${u(p.name)}
${u(p.country)}${M?" · "+u(M):""}
reached ${Math.round(p.pct_christian||0)}% Christian
language ${u(p.lang||"—")}
people ${ma(p.pop)}
bridge ${u(p.bridge||"—")}
near ${u(p.adjacency||"—")}
`}}function Y(c){_.value.show&&(_.value.x=c.clientX,_.value.y=c.clientY)}function ta(){_.value={..._.value,show:!1}}function aa(c){g.value=g.value===c.id?null:c.id}function ba(){g.value=null}function na(c){l.value=c.target.value,g.value=null}function u(c){return String(c??"").replace(/[&<>"']/g,P=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[P])}async function A(){const c=i.value.dataUrl;if(c)try{const P=await fetch(c);if(P.ok)return await P.json()}catch{}return ee}async function j(){const c=i.value.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL);if(c)try{const P=await fetch(c.replace(/\/?$/,"")+"/api/people-groups/statistics");if(P.ok){const p=await P.json();p&&typeof p.total=="number"&&(d.value=null)}}catch{}}return Rn(async()=>{if(t.value=await A(),!t.value){r.value="Could not load reached-neighbors.json",o.value=!0;return}w.value.includes(l.value)||(l.value=w.value[0]||l.value),o.value=!0,j()}),On(` - .fm-root { position:absolute; inset:0; display:flex; flex-direction:column; overflow:hidden; - background:radial-gradient(circle at 50% 42%, #16203a 0%, ${V_} 70%); color:#e5e7eb; - isolation:isolate; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - - /* top bar */ - .fm-top { position:absolute; top:12px; left:12px; right:12px; z-index:30; - display:flex; flex-wrap:wrap; gap:8px; align-items:center; pointer-events:none; } - .fm-top > * { pointer-events:auto; } - .fm-title { background:${z_}; color:#fff; font:700 12px/1 ui-monospace,monospace; - letter-spacing:.05em; text-transform:uppercase; padding:9px 13px; border-radius:9px; - box-shadow:0 2px 10px rgba(0,0,0,.4); } - .fm-select { background:#0e1730; border:1px solid #2b3b63; color:#dbe4f3; - font:600 12px/1 -apple-system,sans-serif; padding:8px 11px; border-radius:9px; cursor:pointer; max-width:240px; } - .fm-toggle { background:#0e1730; border:1px solid #2b3b63; color:#9fb3d9; - font:600 11px/1 ui-monospace,monospace; padding:8px 11px; border-radius:9px; cursor:pointer; - display:inline-flex; align-items:center; gap:7px; user-select:none; } - .fm-toggle.on { color:#fff; border-color:#3f7bd6; background:#13224a; } - .fm-toggle .fm-sw { width:9px; height:9px; border-radius:50%; background:#3f7bd6; opacity:.35; } - .fm-toggle.on .fm-sw { opacity:1; } - .fm-stats { margin-left:auto; font:600 11px/1.5 ui-monospace,monospace; color:#9fb3d9; - background:rgba(8,12,24,.7); border:1px solid #1c2742; border-radius:9px; padding:7px 11px; text-align:right; } - .fm-stats b { color:#fff; } - - /* canvas */ - .fm-stage { flex:1 1 0; position:relative; } - .fm-svg { position:absolute; inset:0; width:100%; height:100%; display:block; } - - .fm-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; - color:#9fb3d9; font:13px/1 ui-monospace,monospace; z-index:5; } - - /* svg node + link styling driven by classes */ - .fm-spoke { stroke:#3a4f86; stroke-width:1.4; fill:none; opacity:.5; transition:opacity .15s; } - .fm-spoke.strong { stroke:#5b7fd0; stroke-width:2; opacity:.7; } - .fm-spoke.dim { opacity:.06; } - .fm-mesh { stroke:#ffae66; stroke-width:1.3; fill:none; opacity:.5; stroke-linecap:round; transition:opacity .15s; } - .fm-mesh.lit { opacity:.92; stroke-width:2; } - .fm-mesh.dim { opacity:.05; } - .fm-petal { opacity:.13; transition:opacity .15s; } - .fm-petal.dim { opacity:.04; } - .fm-node { cursor:pointer; transition:opacity .15s; } - .fm-node.dim { opacity:.18; } - .fm-node circle { stroke:#0b1020; stroke-width:2; } - .fm-node.sel circle { stroke:#ffffff; stroke-width:3; } - .fm-node-label { fill:#cdd9f2; font:600 12px/1 -apple-system,sans-serif; paint-order:stroke; - stroke:#0b1020; stroke-width:3px; text-anchor:middle; pointer-events:none; } - .fm-center-glow { fill:${kr}; opacity:.16; } - .fm-center circle { fill:${kr}; stroke:#ffd9bd; stroke-width:3; } - .fm-center-name { fill:#fff; font:800 19px/1 -apple-system,sans-serif; text-anchor:middle; - paint-order:stroke; stroke:#7a2e00; stroke-width:3px; } - .fm-center-sub { fill:#ffe1cb; font:600 11px/1 ui-monospace,monospace; text-anchor:middle; } - - /* legend */ - .fm-legend { position:absolute; left:12px; bottom:38px; z-index:25; background:rgba(8,12,24,.82); - border:1px solid #1c2742; border-radius:10px; padding:10px 12px; max-width:230px; - box-shadow:0 4px 16px rgba(0,0,0,.45); } - .fm-legend h4 { font:700 9px/1 ui-monospace,monospace; letter-spacing:.12em; text-transform:uppercase; - color:#7e90b6; margin-bottom:8px; } - .fm-lrow { display:flex; align-items:center; gap:8px; padding:3px 0; font-size:11px; color:#c4d0e8; } - .fm-dot { width:12px; height:12px; border-radius:50%; flex:0 0 auto; } - .fm-line { width:18px; height:0; border-top:2px solid; flex:0 0 auto; } - - /* footer provenance (honesty contract) */ - .fm-footer { position:absolute; left:0; right:0; bottom:0; z-index:20; background:rgba(8,12,24,.86); - color:#8fa2c8; font:10px/1.4 ui-monospace,monospace; padding:6px 12px; - display:flex; flex-wrap:wrap; gap:3px 14px; align-items:center; border-top:1px solid #1c2742; } - .fm-footer b { color:#dbe4f3; } - - /* tooltip */ - .fm-tip { position:fixed; z-index:60; pointer-events:none; max-width:240px; - background:#0e1730; border:1px solid #34508c; border-radius:9px; padding:9px 11px; - box-shadow:0 6px 22px rgba(0,0,0,.55); font-size:11.5px; color:#dbe4f3; } - .fm-tip strong { font-size:13px; color:#fff; } - .fm-tip-sub { color:#ffae66; font:600 10px/1.3 ui-monospace,monospace; margin:2px 0 6px; } - .fm-tip-row { display:flex; gap:6px; line-height:1.5; } - .fm-tip-k { color:#7e90b6; min-width:56px; } - - @media (max-width:720px) { - .fm-stats { display:none; } - .fm-legend { max-width:170px; } - } -`,"flower-mesh"),(c,P)=>{var p,M,N,U,h,C;return z(),W("div",{class:"fm-root",onMousemove:Y},[f("div",C_,[P[9]||(P[9]=f("span",{class:"fm-title"},"My UPG Neighbor · Flower-Mesh",-1)),w.value.length?(z(),W("select",{key:0,class:"fm-select",value:l.value,onChange:na,"aria-label":"Select unreached target country"},[(z(!0),W(Aa,null,Ua(w.value,y=>(z(),W("option",{key:y,value:y},X(y),9,k_))),128))],40,j_)):fa("",!0),f("span",{class:Ia(["fm-toggle",{on:s.value}]),role:"switch","aria-checked":s.value,tabindex:"0",onClick:P[0]||(P[0]=y=>s.value=!s.value),onKeydown:[P[1]||(P[1]=Ys(Xn(y=>s.value=!s.value,["prevent"]),["enter"])),P[2]||(P[2]=Ys(Xn(y=>s.value=!s.value,["prevent"]),["space"]))]},[...P[3]||(P[3]=[f("span",{class:"fm-sw"},null,-1),ya(" language mesh ",-1)])],42,G_),L.value?(z(),W("span",v_,[f("b",null,X(sa.value.total),1),P[4]||(P[4]=ya(" reached neighbors · ",-1)),f("b",null,X(sa.value.countries),1),P[5]||(P[5]=ya(" countries",-1)),P[6]||(P[6]=f("br",null,null,-1)),f("b",null,X(Ma(q.value.upg)),1),P[7]||(P[7]=ya(" UPGs in center · ",-1)),f("b",null,X(sa.value.meshes),1),P[8]||(P[8]=ya(" mesh links ",-1))])):fa("",!0)]),f("div",A_,[o.value?r.value?(z(),W("div",E_,X(r.value),1)):(z(),W("svg",{key:2,class:"fm-svg",viewBox:`0 0 ${zt} ${zt}`,preserveAspectRatio:"xMidYMid meet",onClick:ba},[f("g",null,[(z(!0),W(Aa,null,Ua(O.value,y=>(z(),W("ellipse",{key:y.id,class:Ia(["fm-petal",{dim:g.value}]),cx:y.cx,cy:y.cy,rx:"78",ry:"40",fill:y.color,transform:`rotate(${y.rot} ${y.cx} ${y.cy})`},null,10,I_))),128))]),f("g",null,[(z(!0),W(Aa,null,Ua(v.value,y=>(z(),W("line",{key:y.id,class:Ia(["fm-spoke",{strong:y.strong,dim:!ga(y)}]),x1:y.x1,y1:y.y1,x2:y.x2,y2:y.y2,"stroke-dasharray":y.strong?"0":"5 5"},null,10,w_))),128))]),f("g",null,[(z(!0),W(Aa,null,Ua(K.value,y=>(z(),W("path",{key:y.id,class:Ia(["fm-mesh",{lit:ea(y)&&g.value,dim:g.value&&!ea(y)}]),d:y.d},null,10,x_))),128))]),f("g",null,[(z(!0),W(Aa,null,Ua(S.value,y=>(z(),W("g",{key:y.id,class:Ia(["fm-node",{dim:!Sa(y),sel:y.id===g.value}]),onClick:Xn(R=>aa(y),["stop"]),onMouseenter:R=>pa(y,R),onMouseleave:ta},[f("title",null,X(y.node.name)+" — "+X(Math.round(y.node.pct_christian||0))+"% Christian, "+X(y.node.lang),1),f("circle",{cx:y.x,cy:y.y,r:y.r,fill:y.color},null,8,N_),y.r>=9||y.id===g.value?(z(),W("text",{key:0,class:"fm-node-label",x:y.x,y:y.y+y.r+14},X(y.node.name),9,L_)):fa("",!0)],42,T_))),128))]),f("g",{class:"fm-center",onClick:Xn(ba,["stop"]),style:{cursor:"default"}},[f("circle",{class:"fm-center-glow",cx:k,cy:x,r:Tg+26},null,8,R_),f("circle",{cx:k,cy:x,r:Tg}),f("text",{class:"fm-center-name",x:k,y:x-2},X(q.value.name),9,$_),f("text",{class:"fm-center-sub",x:k,y:x+16},X(Ma(q.value.upg))+" UPGs",9,F_),f("text",{class:"fm-center-sub",x:k,y:x+30,style:{opacity:".85"}},X(ma(q.value.pop))+" people",9,K_)])],8,M_)):(z(),W("div",S_,"Growing the flower…")),o.value&&!r.value?(z(),W("div",B_,[P[12]||(P[12]=f("h4",null,"The flower",-1)),f("div",O_,[f("span",{class:"fm-dot",style:Ka({background:kr})},null,4),P[10]||(P[10]=ya(" Unreached target (unreached-2000)",-1))]),f("div",U_,[f("span",{class:"fm-dot",style:Ka({background:n(90)})},null,4),P[11]||(P[11]=ya(" Reached neighbor (deeper = more Christian)",-1))]),P[13]||(P[13]=As('
SEND path → into the unreached
via related language cluster
Same-language collaboration mesh
inner whorl = same country · petals = surrounding countries
',4))])):fa("",!0)]),f("div",H_,[P[14]||(P[14]=f("span",null,[f("b",null,"Flower-Mesh"),ya(" reached neighbor → unreached center")],-1)),P[15]||(P[15]=f("span",null,"center = unreached-2000 (live UPG data)",-1)),f("span",null,"neighbors = baked "+X(((M=(p=t.value)==null?void 0:p.meta)==null?void 0:M.generated)||"2026-06-12")+" (≥"+X(((U=(N=t.value)==null?void 0:N.meta)==null?void 0:U.threshold_pct_christian)||10)+"% Christian, "+X(((C=(h=t.value)==null?void 0:h.meta)==null?void 0:C.adjacency_km)||1500)+" km)",1),P[16]||(P[16]=f("span",null,"province N/A in source — finest grain = country (see RE)",-1)),P[17]||(P[17]=f("span",null,"Luke 10:2 · send laborers into the harvest",-1))]),_.value.show?(z(),W("div",{key:0,class:"fm-tip",style:Ka({left:_.value.x+14+"px",top:_.value.y+14+"px"}),innerHTML:_.value.html},null,12,D_)):fa("",!0)],32)}}},Y_=Object.freeze(Object.defineProperty({__proto__:null,default:Ng},Symbol.toStringTag,{value:"Module"})),W_={key:0,class:"lc-loading"},J_={class:"lc-top"},Z_={key:0,class:"lc-stats"},q_={key:1,class:"lc-legend"},X_={class:"lc-lrow"},Q_={class:"lc-lrow"},a5={key:2,class:"lc-panel"},n5={class:"lc-panel-head"},e5={class:"lc-h-lang"},i5={class:"lc-h-sub"},t5={class:"lc-panel-body"},o5={class:"lc-sec"},r5={key:0,class:"lc-chip"},l5={class:"lc-sec",style:{"margin-top":"10px"}},s5={key:1,class:"lc-muted"},c5={class:"lc-re-name"},g5={class:"lc-re-meta"},u5={key:3,class:"lc-footer"},d5=["innerHTML"],Vt="#e11d48",Ui="#9f1239",Yt="#002e6e",vr="#f59e0b",Ar="lc-clusters-src",Lg="lc-pins-src",Sr="lc-reached-src",Er="lc-links-src",xe="lc-clusters",Rg="lc-cluster-labels",$g="lc-pins",Mr="lc-reached",Fg="lc-links",Kg={__name:"lang-cluster",setup(a){function n(c){const P=+c||0;return P>=80?"#0f7a3d":P>=40?"#1f9d55":P>=15?"#5cb874":"#9bcf9b"}const e=Ya("profileConfig"),i=Ya("mapboxToken"),t=Ya("instanceId",null),o=la(()=>(e==null?void 0:e.value)||{});t!=null&&t.value||t||""+Date.now().toString(36)+Math.random().toString(36).slice(2,8);const r=ua(null),l=ua(null),s=ua(!1),g=ua("Loading people groups…"),d=ua([]),_=ua([]),k=ua(null),x=ua({show:!1,x:0,y:0,html:""}),D={India:[79,22],Pakistan:[69.3,30],Indonesia:[113,-1],Bangladesh:[90.3,23.7],China:[104,35],Japan:[138,37],Iran:[53,32],"Türkiye (Turkey)":[35,39],Egypt:[30,26.5],Nigeria:[8,9.5],Thailand:[101,15],Sudan:[30,15.5],Algeria:[3,28],Iraq:[44,33],"Myanmar (Burma)":[96,21],Afghanistan:[66,34],Yemen:[47.5,15.5],Morocco:[-6,32],Uzbekistan:[64,41.5],"Saudi Arabia":[45,24],Ethiopia:[39.5,9],Niger:[9,17.5],"Korea, North":[127,40],Nepal:[84,28.2],Mali:[-3.5,17],Somalia:[46.5,5.5],Malaysia:[108,3.5],Russia:[90,60],Cambodia:[105,12.7],Kazakhstan:[67,48],Senegal:[-14.5,14.5],"United States":[-98,39],Guinea:[-11,10.5],Tunisia:[9.5,34],Chad:[19,15.5],Tajikistan:[71,38.7],Jordan:[36.5,31],Azerbaijan:[47.5,40.3],Vietnam:[106,16],Israel:[35,31.3],Armenia:[45,40.2],Austria:[14.5,47.5],Bahrain:[50.6,26],Brunei:[114.7,4.5],Bulgaria:[25.5,42.7],"Burkina Faso":[-1.7,12.3],Cameroon:[12.5,6],Canada:[-106,56],"Cape Verde":[-23.6,16],"China, Hong Kong":[114.2,22.3],"China, Macau":[113.5,22.2],Cyprus:[33.2,35.1],"Côte d'Ivoire":[-5.5,7.5],Eritrea:[39,15.3],France:[2.5,47],Georgia:[43.5,42],Ghana:[-1,7.9],Greece:[22,39],"Guinea-Bissau":[-15,12],Italy:[12.5,42.5],Kenya:[38,.2],"Korea, South":[128,36.5],Kuwait:[47.7,29.3],Kyrgyzstan:[74.5,41.3],Lebanon:[35.8,33.9],Liberia:[-9.4,6.5],Moldova:[28.5,47.2],Oman:[56,21],Portugal:[-8,39.5],Qatar:[51.2,25.3],Serbia:[21,44],"Sierra Leone":[-11.8,8.5],Singapore:[103.8,1.35],"South Sudan":[31,7.5],Spain:[-3.7,40.3],Switzerland:[8.2,46.8],Syria:[38,35],Tanzania:[35,-6.3],Togo:[1,8.6],Turkmenistan:[59,39],Uganda:[32.5,1.4],Ukraine:[31,49],"United Arab Emirates":[54,24]};function T(c,P){const p=D[c];if(!p)return null;let M=0;const N=String(P||"");for(let U=0;U>8&255)/255-.5)*4]}const $=c=>String(c||"").trim().toLowerCase(),{map:w,initializeMap:L,destroy:E}=Kt({containerRef:l,accessToken:(i==null?void 0:i.value)||o.value.tk||"",style:o.value.style??"mapbox://styles/mapbox/light-v11",center:o.value.center??[55,22],zoom:o.value.zoom??1.7,minZoom:o.value.minZoom??1,maxZoom:o.value.maxZoom??12}),I=la(()=>{const c=d.value,P=new Set(c.filter(M=>M.scope==="province").map(M=>M.province)),p=new Set(c.map(M=>M.lang));return{clusters:c.length,pgs:c.reduce((M,N)=>M+N.count,0),provinces:P.size,langs:p.size,withReach:c.filter(M=>M.reached.length).length}}),G=la(()=>d.value.find(c=>c.key===k.value)||null);function S(c){return c&&typeof c=="object"?c.label??c.value??"":c??""}function v(c){return c&&typeof c=="object"?c.value??c.label??"":c??""}const K={"People's Republic of China":"China","Lao People’s Democratic Republic":"Laos","Lao People's Democratic Republic":"Laos"};function O(c){return K[c]||c}function q(c,P){const p=new Map;for(const N of c){const U=Number(N.latitude),h=Number(N.longitude),C=S(N.primary_language)||"(unknown language)",y=O(S(N.country_code)||"(unknown)"),R=N.slug||v(N.primary_language)+":"+N.name,H=P[R]||null,V=H?"province":"country",oa=H||y,Q=C+" · "+oa+(H?" ("+y+")":"");let m=p.get(Q);m||(m={key:Q,lang:C,rol3:v(N.primary_language)||"",country:y,province:H,scope:V,scopeName:oa,count:0,_sumLat:0,_sumLng:0,_n:0,members:[],reached:[]},p.set(Q,m)),m.count++,m.members.push({name:N.name,slug:R,lang:C,country:y}),isFinite(U)&&isFinite(h)&&(m._sumLat+=U,m._sumLng+=h,m._n++)}const M=[];for(const N of p.values())N._n&&(N.lat=N._sumLat/N._n,N.lng=N._sumLng/N._n,delete N._sumLat,delete N._sumLng,delete N._n,M.push(N));return M.sort((N,U)=>U.count-N.count),M}function sa(c,P){const p=new Set(P.map(y=>y.rol3).filter(Boolean)),M=new Set(P.map(y=>$(y.lang))),N=new Set,U=[],h=new Map,C=new Map;for(const y of Object.values(c.countries||{}))for(const R of y.neighbors||[]){const H=$(R.lang),V=R.rol3||"";if(!(V&&p.has(V))&&!M.has(H))continue;const Q=R.name+"|"+R.country+"|"+(V||H);if(N.has(Q))continue;N.add(Q);const m=Number(R.lng)&&Number(R.lat)?[Number(R.lng),Number(R.lat)]:T(R.country,Q);if(!m)continue;const b={name:R.name,country:R.country,lang:R.lang,rol3:V,lk:H,pct:R.pct_christian||0,pop:R.pop||0,lng:m[0],lat:m[1]};U.push(b),V&&(h.has(V)||h.set(V,[]),h.get(V).push(b)),C.has(H)||C.set(H,[]),C.get(H).push(b)}for(const y of P){const R=y.rol3?h.get(y.rol3)||[]:[],H=C.get($(y.lang))||[];y.reached=R.length&&H.length?[...new Set([...R,...H])]:R.length?R:H}return U}const ea=c=>({type:"FeatureCollection",features:c});function ga(){return ea(d.value.map(c=>({type:"Feature",geometry:{type:"Point",coordinates:[c.lng,c.lat]},properties:{key:c.key,lang:c.lang,count:c.count,scope:c.scope,hasReach:c.reached.length>0,label:c.lang+" ("+c.count+")"}})))}function Sa(){var P;const c=[];for(const p of d.value)for(const M of p.members){const U=T(p.country,M.slug)||[p.lng,p.lat];c.push({type:"Feature",geometry:{type:"Point",coordinates:[p.lng+(U[0]-(((P=D[p.country])==null?void 0:P[0])??U[0]))*.15,p.lat]},properties:{key:p.key}})}return ea(c)}function Ma(){const c=G.value,P=c&&c.rol3||"",p=c?$(c.lang):null;return ea(_.value.map(M=>({type:"Feature",geometry:{type:"Point",coordinates:[M.lng,M.lat]},properties:{name:M.name,country:M.country,lang:M.lang,pct:M.pct,color:n(M.pct),matched:c?P&&M.rol3===P||!!p&&M.lk===p:!1}})))}function ma(){const c=G.value;return ea(c?c.reached.map(P=>({type:"Feature",geometry:{type:"LineString",coordinates:[[c.lng,c.lat],[P.lng,P.lat]]},properties:{}})):[])}function pa(c,P,p){const M=c.getSource(P);M?M.setData(p):c.addSource(P,{type:"geojson",data:p})}function Y(){var P;const c=w.value;!c||!((P=c.isStyleLoaded)!=null&&P.call(c))||(pa(c,Er,ma()),pa(c,Lg,Sa()),pa(c,Sr,Ma()),pa(c,Ar,ga()),c.getLayer(Fg)||c.addLayer({id:Fg,type:"line",source:Er,paint:{"line-color":vr,"line-width":1.1,"line-opacity":.5,"line-dasharray":[2,2]}}),c.getLayer($g)||c.addLayer({id:$g,type:"circle",source:Lg,minzoom:3.6,paint:{"circle-radius":["interpolate",["linear"],["zoom"],3.6,1.6,8,4],"circle-color":Vt,"circle-opacity":.5}}),c.getLayer(Mr)||c.addLayer({id:Mr,type:"circle",source:Sr,paint:{"circle-radius":["case",["get","matched"],4.5,["interpolate",["linear"],["zoom"],1,2,6,3.5]],"circle-color":["get","color"],"circle-stroke-width":["case",["get","matched"],1.5,.5],"circle-stroke-color":["case",["get","matched"],vr,"#ffffff"],"circle-opacity":["case",["boolean",["feature-state","dim"],!1],.15,["case",["get","matched"],.95,.6]]}}),c.getLayer(xe)||c.addLayer({id:xe,type:"circle",source:Ar,paint:{"circle-radius":["interpolate",["linear"],["get","count"],1,7,25,16,80,26,130,34],"circle-color":Vt,"circle-opacity":["case",["==",["get","key"],["literal",""]],.6,.55],"circle-stroke-width":["case",["get","hasReach"],2.4,1],"circle-stroke-color":["case",["get","hasReach"],n(80),Ui]}}),c.getLayer(Rg)||c.addLayer({id:Rg,type:"symbol",source:Ar,minzoom:2.6,layout:{"text-field":["get","label"],"text-size":11,"text-offset":[0,1.3],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":Ui,"text-halo-color":"#ffffff","text-halo-width":1.4}}),ta())}function ta(){const c=w.value;!c||!c.getLayer(xe)||(c.setPaintProperty(xe,"circle-stroke-color",k.value?["case",["==",["get","key"],k.value],vr,["case",["get","hasReach"],n(80),Ui]]:["case",["get","hasReach"],n(80),Ui]),c.setPaintProperty(xe,"circle-stroke-width",k.value?["case",["==",["get","key"],k.value],4,["case",["get","hasReach"],2.4,1]]:["case",["get","hasReach"],2.4,1]))}function aa(c){k.value=k.value===c?null:c;const P=w.value;P&&(pa(P,Sr,Ma()),pa(P,Er,ma()),ta());const p=G.value;if(p&&P)try{let M=p.lng,N=p.lng,U=p.lat,h=p.lat;for(const C of p.reached)M=Math.min(M,C.lng),N=Math.max(N,C.lng),U=Math.min(U,C.lat),h=Math.max(h,C.lat);P.stop(),M===N&&U===h?P.easeTo({center:[p.lng,p.lat],zoom:4,duration:800}):P.fitBounds([[M,U],[N,h]],{padding:110,maxZoom:5.5,duration:800})}catch{}}function ba(){const c=G.value;if(!c)return;const P={target:c.country,language:c.lang,province:c.province||null,scope:c.scope,clusterKey:c.key};try{const M=r.value&&r.value.getRootNode&&r.value.getRootNode().host||r.value;M&&M.dispatchEvent(new CustomEvent("upgn:drill-flower",{bubbles:!0,composed:!0,detail:P}))}catch{}}function na(c){return String(c??"").replace(/[&<>"']/g,P=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[P])}function u(c){x.value.show&&(x.value.x=c.clientX,x.value.y=c.clientY)}async function A(c){for(const P of c)try{const p=await fetch(P);if(p.ok)return await p.json()}catch{}return null}async function j(){const c=o.value.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL);if(!c)throw new Error("No API base configured (apiBase / window.MAP_APP_API_URL / VITE_API_BASE_URL) — failing closed, no default host.");const p=c.replace(/\/?$/,"")+"/api/people-groups/list?fields="+"slug,name,latitude,longitude,country_code,primary_language,wagf_block,population"+"&lang=en",M=await fetch(p,{cache:"no-store"});if(!M.ok)throw new Error("list "+M.status);const N=await M.json();return N.posts||N.data||N.records||N.results||N.items||(Array.isArray(N)?N:[])}return Rn(async()=>{var C,y,R;await L();const c=w.value;try{c&&c.setProjection("mercator")}catch{}const P=o.value.dataBase||typeof window<"u"&&window.MAP_APP_BASE_URL||"",p=H=>P?P.replace(/\/?$/,"/")+"data/"+H:null,M=await A([o.value.adminUrl,p("admin1-membership.json")].filter(Boolean))||fg||{},N=await A([o.value.dataUrl,p("reached-neighbors.json")].filter(Boolean))||ee||{countries:{}};let U=[];try{U=await j()}catch(H){g.value="Live API unreachable — "+H.message,s.value=!0;return}d.value=q(U,M),_.value=sa(N,d.value),s.value=!0;try{window.__lcStats={reachedPins:_.value.length,matchedClusters:d.value.filter(H=>H.reached&&H.reached.length).length,totalClusters:d.value.length,matchedByRol3:_.value.filter(H=>H.rol3).length}}catch{}const h=()=>{Y(),c.on("click",xe,V=>{var Q;const oa=(Q=V.features)==null?void 0:Q[0];oa&&aa(oa.properties.key)});const H=(V,oa)=>{c.on("mouseenter",V,()=>{c.getCanvas().style.cursor="pointer"}),c.on("mouseleave",V,()=>{c.getCanvas().style.cursor="",x.value={...x.value,show:!1}}),c.on("mousemove",V,Q=>{var b;const m=(b=Q.features)==null?void 0:b[0];m&&(x.value={show:!0,x:Q.originalEvent.clientX,y:Q.originalEvent.clientY,html:oa(m.properties)})})};H(xe,V=>`${na(V.lang)}
${na(V.key)}
unreached ${V.count} groups
reached ${V.hasReach?"matching neighbors ✓":"none found"}
click → bounded set + flower
`),H(Mr,V=>`${na(V.name)}
${na(V.country)} · ${na(V.lang)}
reached ${Math.round(V.pct)}% Christian
`)};(C=c==null?void 0:c.isStyleLoaded)!=null&&C.call(c)?h():(y=c==null?void 0:c.once)==null||y.call(c,"load",h),(R=c==null?void 0:c.once)==null||R.call(c,"idle",()=>{s.value&&Y()})}),Ue(()=>{E()}),On(` - .lc-root { position:absolute; inset:0; display:flex; flex-direction:column; overflow:hidden; - background:#ffffff; color:#1f2937; isolation:isolate; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - .lc-map { position:absolute; inset:0; } - .lc-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; - background:#ffffff; color:${Yt}; font:13px/1 ui-monospace,monospace; z-index:5; } - - .lc-top { position:absolute; top:10px; left:10px; right:10px; z-index:30; display:flex; - flex-wrap:wrap; gap:8px; align-items:center; pointer-events:none; } - .lc-top > * { pointer-events:auto; } - .lc-title { background:${Yt}; color:#fff; font:700 12px/1 ui-monospace,monospace; - letter-spacing:.04em; text-transform:uppercase; padding:8px 12px; border-radius:8px; } - .lc-stats { margin-left:auto; background:rgba(255,255,255,.94); border:1px solid #d1d5db; - border-radius:8px; padding:7px 11px; font:600 11px/1.5 ui-monospace,monospace; color:#374151; text-align:right; } - .lc-stats b { color:${Ui}; } - - .lc-legend { position:absolute; left:10px; bottom:34px; z-index:25; background:rgba(255,255,255,.95); - border:1px solid #d1d5db; border-radius:10px; padding:9px 12px; max-width:240px; box-shadow:0 4px 14px rgba(0,0,0,.12); } - .lc-legend h4 { font:700 9px/1 ui-monospace,monospace; letter-spacing:.1em; text-transform:uppercase; color:#6b7280; margin-bottom:8px; } - .lc-lrow { display:flex; align-items:center; gap:8px; padding:3px 0; font-size:11px; color:#374151; } - .lc-dot { width:12px; height:12px; border-radius:50%; flex:0 0 auto; border:1px solid rgba(0,0,0,.25); } - - .lc-panel { position:absolute; top:52px; right:10px; bottom:34px; z-index:26; width:290px; max-width:48vw; - background:rgba(255,255,255,.98); border:1px solid #d1d5db; border-radius:10px; box-shadow:0 4px 16px rgba(0,0,0,.16); - display:flex; flex-direction:column; overflow:hidden; } - .lc-panel-head { padding:11px 13px; background:${Vt}; color:#fff; } - .lc-panel-head .lc-h-lang { font:800 15px/1.2 -apple-system,sans-serif; } - .lc-panel-head .lc-h-sub { margin-top:3px; font:600 11px/1.3 ui-monospace,monospace; color:#ffe4e6; } - .lc-panel-body { flex:1 1 0; overflow-y:auto; padding:9px 11px; } - .lc-sec { font:700 9px/1 ui-monospace,monospace; letter-spacing:.1em; text-transform:uppercase; color:#6b7280; margin:6px 0 6px; } - .lc-chip { display:inline-block; font:600 10px/1 ui-monospace,monospace; padding:3px 7px; border-radius:999px; - border:1px solid #d1d5db; color:#374151; background:#f9fafb; margin:0 4px 4px 0; } - .lc-re { border:1px solid #e5e7eb; border-radius:8px; padding:6px 8px; margin-bottom:5px; } - .lc-re-name { font:700 12px/1.2 -apple-system,sans-serif; color:#111827; display:flex; align-items:center; gap:6px; } - .lc-re-meta { margin-top:3px; font:11px/1.3 ui-monospace,monospace; color:#4b5563; } - .lc-drill { display:block; width:100%; margin-top:8px; padding:9px; border:0; border-radius:8px; cursor:pointer; - background:${Yt}; color:#fff; font:700 12px/1 -apple-system,sans-serif; } - .lc-drill:hover { background:#013a8a; } - .lc-muted { color:#6b7280; font-size:11px; padding:8px 2px; } - - .lc-footer { position:absolute; left:0; right:0; bottom:0; z-index:20; background:${Yt}; color:#dbe4f3; - font:10px/1.4 ui-monospace,monospace; padding:5px 12px; display:flex; flex-wrap:wrap; gap:3px 14px; align-items:center; } - .lc-footer b { color:#fff; } - - .lc-tip { position:fixed; z-index:60; pointer-events:none; max-width:240px; background:#0e1730; - border:1px solid #34508c; border-radius:9px; padding:9px 11px; box-shadow:0 6px 22px rgba(0,0,0,.5); font-size:11.5px; color:#dbe4f3; } - .lc-tip strong { font-size:13px; color:#fff; } - .lc-tip-sub { color:#fda4af; font:600 10px/1.3 ui-monospace,monospace; margin:2px 0 6px; } - .lc-tip-row { display:flex; gap:6px; line-height:1.5; } - .lc-tip-k { color:#7e90b6; min-width:64px; } - - @media (max-width:720px){ .lc-stats{ display:none; } .lc-panel{ width:210px; } .lc-legend{ max-width:160px; } } -`,"lang-cluster"),(c,P)=>(z(),W("div",{ref_key:"lcRoot",ref:r,class:"lc-root",onMousemove:u},[f("div",{ref_key:"mapContainer",ref:l,class:"lc-map"},null,512),s.value?fa("",!0):(z(),W("div",W_,X(g.value),1)),f("div",J_,[P[5]||(P[5]=f("span",{class:"lc-title"},"My UPG Neighbor · Language Clusters",-1)),s.value?(z(),W("span",Z_,[f("b",null,X(I.value.clusters),1),P[0]||(P[0]=ya(" language clusters · ",-1)),f("b",null,X(I.value.pgs),1),P[1]||(P[1]=ya(" unreached",-1)),P[2]||(P[2]=f("br",null,null,-1)),f("b",null,X(I.value.provinces),1),P[3]||(P[3]=ya(" IN/CN provinces · ",-1)),f("b",null,X(I.value.withReach),1),P[4]||(P[4]=ya(" with reached match ",-1))])):fa("",!0)]),s.value?(z(),W("div",q_,[P[8]||(P[8]=f("h4",null,"Bounded sets",-1)),f("div",X_,[f("span",{class:"lc-dot",style:Ka({background:Vt})},null,4),P[6]||(P[6]=ya(" Unreached language cluster (size = #groups)",-1))]),f("div",Q_,[f("span",{class:"lc-dot",style:Ka({background:n(80)})},null,4),P[7]||(P[7]=ya(" Reached neighbor (matched by language)",-1))]),P[9]||(P[9]=f("div",{class:"lc-lrow",style:{color:"#6b7280","font-size":"10px","margin-top":"4px"}},"green ring = cluster has a reached match · click a cluster to drill",-1))])):fa("",!0),s.value&&G.value?(z(),W("div",a5,[f("div",n5,[f("div",e5,X(G.value.lang),1),f("div",i5,X(G.value.scope==="province"?G.value.province+" · "+G.value.country:G.value.country),1)]),f("div",t5,[f("div",o5,"Bounded set — "+X(G.value.count)+" unreached groups",1),(z(!0),W(Aa,null,Ua(G.value.members.slice(0,18),(p,M)=>(z(),W("span",{key:M,class:"lc-chip"},X(p.name),1))),128)),G.value.members.length>18?(z(),W("span",r5,"+"+X(G.value.members.length-18)+" more",1)):fa("",!0),f("div",l5,"Reached neighbors (same language) — "+X(G.value.reached.length),1),G.value.reached.length?fa("",!0):(z(),W("div",s5,"No reached people-group shares this language in the baked set. A frontier — pray for laborers (Luke 10:2).")),(z(!0),W(Aa,null,Ua(G.value.reached,(p,M)=>(z(),W("div",{key:"r"+M,class:"lc-re"},[f("div",c5,[f("span",{class:"lc-dot",style:Ka({background:n(p.pct)})},null,4),ya(X(p.name),1)]),f("div",g5,X(p.country)+" · "+X(Math.round(p.pct))+"% Christian · "+X(p.lang),1)]))),128)),f("button",{class:"lc-drill",onClick:ba},"Open flower view ▸")])])):fa("",!0),s.value?(z(),W("div",u5,[P[10]||(P[10]=f("span",null,[f("b",null,"Language clusters"),ya(" red unreached · green reached-by-language")],-1)),f("span",null,"unreached = LIVE UPG data ("+X(I.value.pgs)+")",1),P[11]||(P[11]=f("span",null,"IN/CN province = real ADM1 (my-upg-100-list point-in-polygon)",-1)),P[12]||(P[12]=f("span",null,"reached = baked reached-neighbors",-1)),P[13]||(P[13]=f("span",null,"Luke 10:2 · bounded sets → flowers",-1))])):fa("",!0),x.value.show?(z(),W("div",{key:4,class:"lc-tip",style:Ka({left:x.value.x+14+"px",top:x.value.y+14+"px"}),innerHTML:x.value.html},null,12,d5)):fa("",!0)],544))}},p5=Object.freeze(Object.defineProperty({__proto__:null,default:Kg},Symbol.toStringTag,{value:"Module"})),Wt={churches:[{name:"Antioch Fellowship",lat:13.08,lng:80.27,region:"Chennai, India",network:"South Asia Partners"},{name:"Cornerstone Church",lat:-1.29,lng:36.82,region:"Nairobi, Kenya",network:"East Africa Network"},{name:"Living Hope Church",lat:14.6,lng:120.98,region:"Manila, Philippines",network:"Southeast Asia Partners"},{name:"Grace Harbor Church",lat:34.05,lng:-118.24,region:"Los Angeles, USA",network:"North America Sending"},{name:"Redeemer Fellowship",lat:51.51,lng:-.13,region:"London, United Kingdom",network:"Europe Partners"},{name:"New Life Church",lat:-23.55,lng:-46.63,region:"Sao Paulo, Brazil",network:"Latin America Network"},{name:"Emmanuel Church",lat:37.57,lng:126.98,region:"Seoul, South Korea",network:"East Asia Sending"},{name:"Bethel Community",lat:6.52,lng:3.38,region:"Lagos, Nigeria",network:"West Africa Network"}]},m5={class:"sn-map-area"},h5={key:0,class:"sn-loading"},y5={class:"sn-top"},b5=["value"],_5=["value"],f5=["aria-pressed"],P5={class:"sn-legend"},C5={class:"sn-legend-row"},j5={class:"sn-legend-row"},k5={class:"sn-legend-row"},G5={key:1,class:"sn-panel"},v5={class:"sn-panel-head"},A5={class:"sn-target"},S5={class:"sn-sub"},E5={class:"sn-panel-body"},M5=["onClick"],I5={class:"sn-sender-name"},w5={class:"sn-sender-meta"},x5={class:"sn-chip pct"},T5={class:"sn-chip bridge"},N5={class:"sn-chip adj"},L5={class:"sn-chip"},R5={key:0,style:{padding:"14px","font-size":"12px",color:"#6b7280"}},$5={class:"sn-footer"},Jt="#FF6600",te="#002e6e",Bg="#1f9d55",F5="#9bcf9b",Hi="#7c3aed",Og="sn-arrows-src",Ir="sn-senders-src",wr="sn-target-src",Ug="sn-targets-all-src",Hg="sn-arrows",Di="sn-senders",Dg="sn-sender-labels",zg="sn-target",Vg="sn-target-label",Pe="sn-targets-all",Zt="sn-churches-src",ei="sn-churches",qt="sn-church-labels",Yg={__name:"send-map",setup(a){var ta,aa,ba,na,u,A;On(` - .sn-root { position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;background:#ffffff;color:#1f2937;isolation:isolate; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - .sn-map-area { flex:1 1 0;position:relative;overflow:hidden; } - .sn-map-canvas { position:absolute;inset:0; } - .sn-loading { position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#ffffff;color:${te};font-size:13px;z-index:5; } - - /* ── Top bar: title + target selector ── */ - .sn-top { position:absolute;top:10px;left:10px;z-index:30;display:flex;flex-wrap:wrap;gap:8px;align-items:center; } - .sn-title { background:${te};color:#fff;font:700 12px/1 ui-monospace,monospace;letter-spacing:.04em;text-transform:uppercase;padding:8px 12px;border-radius:8px; } - .sn-select { background:#fff;border:1px solid ${te};color:${te};font:600 12px/1 -apple-system,sans-serif;padding:7px 10px;border-radius:8px;cursor:pointer;max-width:240px; } - .sn-toggle { background:${Hi};border:1px solid ${Hi};color:#fff;font:700 11px/1 ui-monospace,monospace;letter-spacing:.03em;padding:8px 11px;border-radius:8px;cursor:pointer; } - .sn-toggle.off { background:#fff;color:${Hi}; } - - /* ── Left: 4-D JOIN legend (the gate the connectors pass through) ── */ - .sn-legend { position:absolute;top:58px;left:10px;z-index:25;background:rgba(255,255,255,0.95);border:1px solid #d1d5db;border-radius:10px;padding:9px 12px;box-shadow:0 4px 14px rgba(0,0,0,0.12);max-width:230px; } - .sn-legend h4 { font:700 9px/1 ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;color:#6b7280;margin-bottom:8px; } - .sn-legend-row { display:flex;align-items:flex-start;gap:7px;padding:3px 0;font-size:11px;color:#374151;line-height:1.3; } - .sn-dot { width:11px;height:11px;border-radius:50%;flex:0 0 auto;border:1px solid rgba(0,0,0,0.35);margin-top:1px; } - .sn-legend .sn-num { font-weight:700;color:${te};flex:0 0 auto; } - - /* ── Right: worked sender table for the selected target ── */ - .sn-panel { position:absolute;top:10px;right:10px;bottom:42px;z-index:25;width:280px;max-width:46vw;background:rgba(255,255,255,0.97);border:1px solid #d1d5db;border-radius:10px;box-shadow:0 4px 14px rgba(0,0,0,0.12);display:flex;flex-direction:column;overflow:hidden; } - .sn-panel-head { padding:10px 12px;border-bottom:1px solid #e5e7eb;background:${te};color:#fff; } - .sn-panel-head .sn-target { font:700 13px/1.2 -apple-system,sans-serif; } - .sn-panel-head .sn-sub { margin-top:4px;font:11px/1.3 ui-monospace,monospace;color:#c7d2fe; } - .sn-panel-body { flex:1 1 0;overflow-y:auto;padding:6px 8px; } - .sn-sender { border:1px solid #e5e7eb;border-radius:8px;padding:7px 9px;margin-bottom:6px;cursor:pointer;transition:border-color .12s,box-shadow .12s; } - .sn-sender:hover { border-color:${Jt};box-shadow:0 2px 8px rgba(255,102,0,0.18); } - .sn-sender-name { font:700 12px/1.2 -apple-system,sans-serif;color:#111827;display:flex;align-items:center;gap:6px; } - .sn-sender-meta { margin-top:4px;display:flex;flex-wrap:wrap;gap:4px; } - .sn-chip { font:600 10px/1 ui-monospace,monospace;padding:3px 6px;border-radius:999px;border:1px solid #d1d5db;color:#374151;background:#f9fafb; } - .sn-chip.pct { color:#0b5e33;background:#e7f6ec;border-color:#b7e0c4; } - .sn-chip.bridge { color:${te};background:#e7edf8;border-color:#c2d2ee; } - .sn-chip.adj { color:#7a3e00;background:#fdeedd;border-color:#f3d4ac; } - - /* ── Footer: provenance (honesty contract, spec §3 + §5) ── */ - .sn-footer { flex:0 0 auto;background:${te};color:#dbe4f3;font:10px/1.4 ui-monospace,monospace;padding:6px 12px;display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center; } - .sn-footer strong { color:#fff; } - - @media(max-width:760px){ - .sn-panel { width:200px; } - .sn-legend { max-width:180px; } - } -`,"send-map");const n=Ya("profileConfig"),e=Ya("mapboxToken"),i=Ya("instanceId",null);i!=null&&i.value||i||""+Date.now().toString(36)+Math.random().toString(36).slice(2,8);const t=ua(null),o=ua(null),r=ua(!1),l=ua(null),s=ua(((ta=n==null?void 0:n.value)==null?void 0:ta.target)??"India"),g=ua(!0),d={India:[79,22],Pakistan:[69.3,30],Indonesia:[113,-1],Bangladesh:[90.3,23.7],China:[104,35],Japan:[138,37],Iran:[53,32],"Türkiye (Turkey)":[35,39],Egypt:[30,26.5],Nigeria:[8,9.5],Thailand:[101,15],Sudan:[30,15.5],Algeria:[3,28],Iraq:[44,33],"Myanmar (Burma)":[96,21],Afghanistan:[66,34],Yemen:[47.5,15.5],Morocco:[-6,32],Uzbekistan:[64,41.5],"Saudi Arabia":[45,24],Ethiopia:[39.5,9],Niger:[9,17.5],"Korea, North":[127,40],Nepal:[84,28.2],Mali:[-3.5,17],Somalia:[46.5,5.5],Malaysia:[108,3.5],Russia:[90,60],Cambodia:[105,12.7],Kazakhstan:[67,48],Senegal:[-14.5,14.5],"United States":[-98,39],Guinea:[-11,10.5],Tunisia:[9.5,34],Chad:[19,15.5],Tajikistan:[71,38.7],Jordan:[36.5,31],Azerbaijan:[47.5,40.3],Vietnam:[106,16],Israel:[35,31.3],Armenia:[45,40.2],Austria:[14.5,47.5],Bahrain:[50.6,26],Brunei:[114.7,4.5],Bulgaria:[25.5,42.7],"Burkina Faso":[-1.7,12.3],Cameroon:[12.5,6],Canada:[-106,56],"Cape Verde":[-23.6,16],"China, Hong Kong":[114.2,22.3],"China, Macau":[113.5,22.2],Cyprus:[33.2,35.1],"Côte d'Ivoire":[-5.5,7.5],Eritrea:[39,15.3],France:[2.5,47],Georgia:[43.5,42],Ghana:[-1,7.9],Greece:[22,39],"Guinea-Bissau":[-15,12],Italy:[12.5,42.5],Kenya:[38,.2],"Korea, South":[128,36.5],Kuwait:[47.7,29.3],Kyrgyzstan:[74.5,41.3],Lebanon:[35.8,33.9],Liberia:[-9.4,6.5],Moldova:[28.5,47.2],Oman:[56,21],Portugal:[-8,39.5],Qatar:[51.2,25.3],Serbia:[21,44],"Sierra Leone":[-11.8,8.5],Singapore:[103.8,1.35],"South Sudan":[31,7.5],Spain:[-3.7,40.3],Syria:[38,35],Tanzania:[35,-6.3],Togo:[1,8.6],Turkmenistan:[59,39],Uganda:[32.5,1.4],Ukraine:[31,49],"United Arab Emirates":[54,24]};function _(j,c){const P=d[j];if(!P)return null;let p=0;const M=String(c||"");for(let h=0;h>8&255)/255-.5)*3.2;return[P[0]+N,P[1]+U]}const{map:k,initializeMap:x,destroy:D}=Kt({containerRef:o,accessToken:e.value,style:((aa=n==null?void 0:n.value)==null?void 0:aa.style)??"mapbox://styles/mapbox/light-v11",center:((ba=n==null?void 0:n.value)==null?void 0:ba.center)??[60,25],zoom:((na=n==null?void 0:n.value)==null?void 0:na.zoom)??2.4,minZoom:((u=n==null?void 0:n.value)==null?void 0:u.minZoom)??1,maxZoom:((A=n==null?void 0:n.value)==null?void 0:A.maxZoom)??12}),T=la(()=>l.value?Object.keys(l.value.countries):[]),$=la(()=>{var j,c;return((c=(j=l.value)==null?void 0:j.countries)==null?void 0:c[s.value])??null}),w=la(()=>{const j=$.value;return j?[...j.neighbors||[]].filter(c=>d[c.country]).sort((c,P)=>(P.pct_christian||0)-(c.pct_christian||0)):[]});function L(j){return j>=50?Bg:F5}function E(){var P;const j=l.value;if(!j)return G([]);const c=[];for(const p of Object.keys(j.countries)){const M=d[p];M&&c.push({type:"Feature",geometry:{type:"Point",coordinates:M},properties:{name:p,kind:"target",upg:((P=j.countries[p])==null?void 0:P.target_upg)||0}})}return G(c)}function I(){if(!$.value)return{arrows:G([]),senders:G([]),target:G([])};const c=d[s.value]||[60,25],P={type:"Feature",geometry:{type:"Point",coordinates:c},properties:{name:s.value,kind:"target"}},p=[],M=[];for(const N of w.value){const U=_(N.country,N.name+N.lang);U&&(p.push({type:"Feature",geometry:{type:"Point",coordinates:U},properties:{name:N.name,country:N.country,pct:N.pct_christian||0,color:L(N.pct_christian||0)}}),M.push({type:"Feature",geometry:{type:"LineString",coordinates:[U,c]},properties:{bridge:N.bridge,adjacency:N.adjacency}}))}return{arrows:G(M),senders:G(p),target:G([P])}}function G(j){return{type:"FeatureCollection",features:j}}function S(){const j=Array.isArray(Wt==null?void 0:Wt.churches)?Wt.churches:[],c=[];for(const P of j){const p=Number(P.lng),M=Number(P.lat);!Number.isFinite(p)||!Number.isFinite(M)||c.push({type:"Feature",geometry:{type:"Point",coordinates:[p,M]},properties:{name:P.name||"Church",region:P.region||"",network:P.network||""}})}return G(c)}function v(j){if(!j||j.getLayer(ei))return;ga(j,Zt,S()),j.addLayer({id:ei,type:"circle",source:Zt,paint:{"circle-color":Hi,"circle-radius":["interpolate",["linear"],["zoom"],1,5,5,8,9,12],"circle-stroke-width":2,"circle-stroke-color":"#ffffff","circle-opacity":.95}}),j.addLayer({id:qt,type:"symbol",source:Zt,layout:{"text-field":"✝","text-size":["interpolate",["linear"],["zoom"],1,8,9,14],"text-allow-overlap":!0,"text-offset":[0,.05]},paint:{"text-color":"#ffffff"}}),j.addLayer({id:qt+"-name",type:"symbol",source:Zt,minzoom:3,layout:{"text-field":["get","name"],"text-size":11,"text-offset":[0,1.3],"text-anchor":"top","text-allow-overlap":!1},paint:{"text-color":"#4c1d95","text-halo-color":"#ffffff","text-halo-width":1.4}});const c=typeof window<"u"?window.mapboxgl:null;j.on("click",ei,P=>{var U;const p=(U=P.features)==null?void 0:U[0];if(!p||!c)return;const M=p.properties||{},N='
✝ '+K(M.name)+"
"+(M.network?'
'+K(M.network)+"
":"")+(M.region?'
'+K(M.region)+"
":"")+"
";new c.Popup({maxWidth:"260px",offset:10}).setLngLat(p.geometry.coordinates).setHTML(N).addTo(j)}),j.on("mouseenter",ei,()=>{j.getCanvas().style.cursor="pointer"}),j.on("mouseleave",ei,()=>{j.getCanvas().style.cursor=""}),O(j)}function K(j){return String(j??"").replace(/[&<>"]/g,c=>({"&":"&","<":"<",">":">",'"':"""})[c])}function O(j){if(!j)return;const c=g.value?"visible":"none";for(const P of[ei,qt,qt+"-name"])j.getLayer(P)&&j.setLayoutProperty(P,"visibility",c)}function q(){g.value=!g.value,O(k.value)}function sa(){var M;const j=k.value;if(!j||!((M=j.isStyleLoaded)!=null&&M.call(j)))return;const{arrows:c,senders:P,target:p}=I();ga(j,Og,c),ga(j,Ir,P),ga(j,wr,p),ga(j,Ug,E()),j.getLayer(Pe)||j.addLayer({id:Pe,type:"circle",source:Ug,paint:{"circle-color":Jt,"circle-radius":["interpolate",["linear"],["zoom"],1,5,5,9,9,13],"circle-stroke-width":1.5,"circle-stroke-color":"#ffffff"}}),j.getLayer(Hg)||j.addLayer({id:Hg,type:"line",source:Og,layout:{"line-cap":"round"},paint:{"line-color":te,"line-width":1.4,"line-opacity":.55,"line-dasharray":[2,2]}}),j.getLayer(Di)||j.addLayer({id:Di,type:"circle",source:Ir,paint:{"circle-color":["get","color"],"circle-radius":["interpolate",["linear"],["zoom"],1,2.5,5,4,9,6],"circle-stroke-width":.8,"circle-stroke-color":"#ffffff","circle-opacity":.92}}),j.getLayer(Dg)||j.addLayer({id:Dg,type:"symbol",source:Ir,minzoom:3.4,layout:{"text-field":["get","name"],"text-size":10,"text-offset":[0,1.1],"text-anchor":"top","text-allow-overlap":!1},paint:{"text-color":"#0b5e33","text-halo-color":"#ffffff","text-halo-width":1.3}}),j.getLayer(zg)||j.addLayer({id:zg,type:"circle",source:wr,paint:{"circle-color":Jt,"circle-radius":["interpolate",["linear"],["zoom"],1,8,5,13,9,18],"circle-stroke-width":2.5,"circle-stroke-color":"#ffffff","circle-opacity":.95}}),j.getLayer(Vg)||j.addLayer({id:Vg,type:"symbol",source:wr,layout:{"text-field":["get","name"],"text-size":13,"text-font":["DIN Offc Pro Bold","Arial Unicode MS Bold"],"text-offset":[0,-1.4],"text-anchor":"bottom","text-allow-overlap":!0},paint:{"text-color":"#8a3800","text-halo-color":"#ffffff","text-halo-width":1.6}}),ea(j)}function ea(j){if(!j||!j.getLayer(Pe))return;const c=s.value;j.setPaintProperty(Pe,"circle-opacity",c?["case",["==",["get","name"],c],0,.28]:.9),j.setPaintProperty(Pe,"circle-stroke-opacity",c?["case",["==",["get","name"],c],0,.5]:.9)}function ga(j,c,P){j.getSource(c)?j.getSource(c).setData(P):j.addSource(c,{type:"geojson",data:P})}function Sa(){const j=k.value;if(!j)return;const c=d[s.value];if(!c)return;let P=c[0],p=c[0],M=c[1],N=c[1];for(const U of w.value){const h=d[U.country];h&&(P=Math.min(P,h[0]),p=Math.max(p,h[0]),M=Math.min(M,h[1]),N=Math.max(N,h[1]))}try{j.stop(),P===p&&M===N?j.easeTo({center:c,zoom:4,duration:900}):j.fitBounds([[P,M],[p,N]],{padding:90,maxZoom:5.5,duration:900})}catch{}}function Ma(j){!j||!d[j]||(s.value=j,sa(),Sa())}function ma(j){Ma(j.target.value)}function pa(j){const c=k.value,P=d[j.country];if(!(!c||!P))try{c.stop(),c.easeTo({center:P,zoom:4.5,duration:800})}catch{}}async function Y(){var c;const j=(c=n==null?void 0:n.value)==null?void 0:c.dataUrl;if(j)try{const P=await fetch(j);if(P.ok)return await P.json()}catch{}return ee}return Rn(async()=>{var P,p,M,N,U,h;await x();const j=k.value;try{j&&j.setProjection("mercator")}catch{}if((P=n==null?void 0:n.value)!=null&&P.debugExpose&&typeof window<"u")try{(((N=(M=(p=t.value)==null?void 0:p.getRootNode)==null?void 0:M.call(p))==null?void 0:N.host)||window).__sendmap=j}catch{}if(l.value=await Y(),!l.value){r.value=!0;return}T.value.includes(s.value)||(s.value=T.value[0]||s.value);const c=()=>{sa(),v(j),j.on("click",Pe,C=>{var R;const y=(R=C.features)==null?void 0:R[0];y&&Ma(y.properties.name)}),j.on("mouseenter",Pe,()=>{j.getCanvas().style.cursor="pointer"}),j.on("mouseleave",Pe,()=>{j.getCanvas().style.cursor=""}),j.on("click",Di,C=>{var R;const y=(R=C.features)==null?void 0:R[0];if(y)try{j.stop(),j.easeTo({center:y.geometry.coordinates,zoom:4.5,duration:800})}catch{}}),j.on("mouseenter",Di,()=>{j.getCanvas().style.cursor="pointer"}),j.on("mouseleave",Di,()=>{j.getCanvas().style.cursor=""}),Sa(),r.value=!0};(U=j==null?void 0:j.isStyleLoaded)!=null&&U.call(j)?c():(h=j==null?void 0:j.once)==null||h.call(j,"load",c)}),Ue(()=>{D()}),(j,c)=>{var P,p,M,N,U,h;return z(),W("div",{ref_key:"snRoot",ref:t,class:"sn-root"},[f("div",m5,[f("div",{ref_key:"mapContainer",ref:o,class:"sn-map-canvas"},null,512),r.value?fa("",!0):(z(),W("div",h5,"Loading SEND map…")),f("div",y5,[c[0]||(c[0]=f("span",{class:"sn-title"},"Church Map · My UPG Neighbor",-1)),T.value.length?(z(),W("select",{key:0,class:"sn-select",value:s.value,onChange:ma,"aria-label":"Select unreached target country"},[(z(!0),W(Aa,null,Ua(T.value,C=>(z(),W("option",{key:C,value:C},X(C),9,_5))),128))],40,b5)):fa("",!0),f("button",{class:Ia(["sn-toggle",{off:!g.value}]),onClick:q,"aria-pressed":g.value,"aria-label":"Toggle partnering churches layer"}," ✝ Churches "+X(g.value?"on":"off"),11,f5)]),f("div",P5,[c[4]||(c[4]=As('

4-D SEND join

1·Adjacency — same-country, else neighbor ≤1500 km
2·Language pair — same language (strong) / cluster (soft)
3·Reached % — sender ≥10% Christian (more = more laborers)
4·Lower pressure — sender from a freer place
',6)),f("div",C5,[f("span",{class:"sn-dot",style:Ka({background:Jt})},null,4),c[1]||(c[1]=f("span",null,[ya("Unreached target — "),f("strong",null,"click one"),ya(" to SEND-focus")],-1))]),f("div",j5,[f("span",{class:"sn-dot",style:Ka({background:Bg})},null,4),c[2]||(c[2]=f("span",null,"Reached sender (SEND →) — who we mobilize",-1))]),f("div",k5,[f("span",{class:"sn-dot",style:Ka({background:Hi})},null,4),c[3]||(c[3]=f("span",null,[f("strong",null,"Partnering church"),ya(" — the network (click for details)")],-1))])]),$.value?(z(),W("div",G5,[f("div",v5,[f("div",A5,X(s.value),1),f("div",S5,X(($.value.target_upg||0).toLocaleString())+" UPGs · "+X(w.value.length)+" reached senders ",1)]),f("div",E5,[(z(!0),W(Aa,null,Ua(w.value,(C,y)=>(z(),W("div",{key:C.name+y,class:"sn-sender",onClick:R=>pa(C)},[f("div",I5,[f("span",{class:"sn-dot",style:Ka({background:L(C.pct_christian||0)})},null,4),ya(" "+X(C.name),1)]),f("div",w5,[f("span",x5,X(Math.round(C.pct_christian||0))+"% Christian",1),f("span",T5,X(C.bridge),1),f("span",N5,X(C.adjacency),1),f("span",L5,X(C.lang),1)])],8,M5))),128)),w.value.length?fa("",!0):(z(),W("div",R5," No qualifying reached senders with a known country centroid for this target. "))])])):fa("",!0),f("div",$5,[c[5]||(c[5]=f("span",null,[f("strong",null,"SEND"),ya(" reached neighbor → unreached target")],-1)),c[6]||(c[6]=f("span",null,"target = LIVE (JP UnreachedPeoplesByCountry)",-1)),f("span",null,"senders = baked "+X(((p=(P=l.value)==null?void 0:P.meta)==null?void 0:p.generated)||"2026-06-12")+" (≥"+X(((N=(M=l.value)==null?void 0:M.meta)==null?void 0:N.threshold_pct_christian)||10)+"% Christian, "+X(((h=(U=l.value)==null?void 0:U.meta)==null?void 0:h.adjacency_km)||1500)+" km)",1),c[7]||(c[7]=f("span",null,"Hab 2:2 · mobilize existing laborers",-1)),c[8]||(c[8]=f("span",null,"chain: UPG-100 → FPG base → My UPG Neighbor",-1))])])],512)}}},K5=Object.freeze(Object.defineProperty({__proto__:null,default:Yg},Symbol.toStringTag,{value:"Module"})),Wg="adoptionStatus",oe={notAdopted:"#e74c3c",hasAdoption:"#22c55e"},B5=oe,xr={notAdopted:"Needs Adoption",hasAdopted:"Has Adoption"},O5=xr;function Jg(a){var i;const n=a.adoptionStatus??((i=a._raw)==null?void 0:i.adopted_by_churches);return n===!0||n===1||typeof n=="number"&&n>0||typeof n=="object"&&(n==null?void 0:n.value)?oe.hasAdoption:oe.notAdopted}function Tr({colorSource:a="properties"}={}){const n=a==="feature-state"?["feature-state","adoptionStatus"]:["get","adoptionStatus"];return["case",["==",n,!0],oe.hasAdoption,["==",n,1],oe.hasAdoption,oe.notAdopted]}const Zg=Tr,U5=Object.freeze(Object.defineProperty({__proto__:null,ADOPTION_COLORS:B5,ADOPTION_LABELS:O5,LABELS:xr,PALETTE:oe,PROPERTY_KEY:Wg,applyColor:Tr,buildColorExpression:Zg,default:{name:"Adoption Progress",propertyKey:Wg,palette:oe,colors:oe,labels:xr,getColor:Jg,applyColor:Tr,buildColorExpression:Zg},getColor:Jg},Symbol.toStringTag,{value:"Module"})),Nr="affinityBlock",ii="#95a5a6",re={A001:"Arab World",A002:"East Asian Peoples",A003:"Eurasian Peoples",A004:"Horn of Africa Peoples",A005:"Jewish",A006:"Malay Peoples",A007:"Persian-Median Peoples",A008:"South Asian Peoples",A009:"North American Peoples",A010:"Pacific Islanders",A011:"Southeast Asian Peoples",A012:"Sub-Saharan Peoples",A013:"Tibetan-Himalayan Peoples",A014:"Turkic Peoples",A015:"Latin-Caribbean Americans",A017:"Deaf"},Xt={A001:"#E74C3C",A002:"#3498DB",A003:"#2ECC71",A004:"#F39C12",A005:"#9B59B6",A006:"#1ABC9C",A007:"#E67E22",A008:"#34495E",A009:"#95A5A6",A010:"#5DADE2",A011:"#16A085",A012:"#C0392B",A013:"#8E44AD",A014:"#D35400",A015:"#27AE60",A017:"#000000"},Ce=Xt,qg=Object.entries(re).reduce((a,[n,e])=>(a[e]=n,a),{}),Lr=Object.entries(re).reduce((a,[n,e])=>(a[e]=Ce[n],a),{}),Xg=re;function Rr(a){return re[a]||"Unknown"}function $r(a){return Ce[a]||ii}function Qg(a){return a?typeof a=="string"&&/^A\d{3}$/.test(a)?Ce[a]||ii:Lr[a]||ii:ii}function au(){return Object.entries(re).map(([a,n])=>({code:a,name:n,color:Ce[a]}))}function nu(a){return{code:a,name:re[a]||"Unknown",color:Ce[a]||ii}}function eu(a){var e;const n=a.affinityBlock||((e=a._raw)==null?void 0:e.ROP1);return $r(n)}function iu(a){var e;const n=a.affinityBlock||((e=a._raw)==null?void 0:e.ROP1);return Rr(n)}function Fr(){const a=["match",["get",Nr]];return Object.entries(Ce).forEach(([n,e])=>{a.push(n,e)}),a.push(ii),a}const tu=Fr,H5=Object.freeze(Object.defineProperty({__proto__:null,AFFINITY_BLOCK_COLORS:Ce,AFFINITY_BLOCK_COLORS_BY_NAME:Lr,AFFINITY_BLOCK_NAMES:re,AFFINITY_BLOCK_NAME_TO_CODE:qg,NAMES:Xg,PALETTE:Xt,PROPERTY_KEY:Nr,affinityBlockCodeLookup:re,affinityBlockCodeToColor:Ce,affinityBlockCodeToName:re,affinityBlockColors:Lr,affinityBlockNameToCode:qg,applyColor:Fr,buildColorExpression:tu,default:{name:"Affinity Block",propertyKey:Nr,palette:Xt,colors:Xt,names:Xg,getColor:eu,applyColor:Fr,buildColorExpression:tu,getName:iu,getAffinityBlockName:Rr,getAffinityBlockColor:Qg,getAffinityBlockColorByCode:$r,getAffinityBlocksArray:au,getAffinityBlockData:nu},getAffinityBlockColor:Qg,getAffinityBlockColorByCode:$r,getAffinityBlockData:nu,getAffinityBlockName:Rr,getAffinityBlocksArray:au,getColor:eu,getName:iu},Symbol.toStringTag,{value:"Module"})),ou="engagementStatus",le={notEngaged:"#e74c3c",hasEngagement:"#22c55e"},D5=le,Kr={notEngaged:"Unengaged",hasEngagement:"Engaged"},z5=Kr;function ru(a){var i;const n=a.engagementStatus??((i=a._raw)==null?void 0:i.people_committed);return n===!0||n===1||typeof n=="number"&&n>0||typeof n=="object"&&(n==null?void 0:n.value)?le.hasEngagement:le.notEngaged}function Br({colorSource:a="properties"}={}){const n=a==="feature-state"?["feature-state","engagementStatus"]:["get","engagementStatus"];return["case",["==",n,!0],le.hasEngagement,["==",n,1],le.hasEngagement,le.notEngaged]}const lu=Br,V5=Object.freeze(Object.defineProperty({__proto__:null,ENGAGEMENT_COLORS:D5,ENGAGEMENT_LABELS:z5,LABELS:Kr,PALETTE:le,PROPERTY_KEY:ou,applyColor:Br,buildColorExpression:lu,default:{name:"Engagement Progress",propertyKey:ou,palette:le,colors:le,labels:Kr,getColor:ru,applyColor:Br,buildColorExpression:lu},getColor:ru},Symbol.toStringTag,{value:"Module"}));function Y5(a){if(!a)return"hsl(0, 60%, 50%)";let n=0;for(let i=0;i{a.push(n,e)}),a.push(Ur),a}const uu=zr,J5=Object.freeze(Object.defineProperty({__proto__:null,GEO_REGION_COLORS:W5,PALETTE:Qt,PROPERTY_KEY:Or,REGION_COLOR_ALIASES:Dr,SLUG_PALETTE:ao,applyColor:zr,buildColorExpression:uu,default:{name:"DOXA Region",propertyKey:Or,palette:Qt,colors:Qt,slugColors:ao,aliases:Dr,fallback:Ur,getColor:gu,applyColor:zr,buildColorExpression:uu,getRegionColor:cu,getRegionColorBySlug:Hr},getColor:gu,getRegionColor:cu,getRegionColorBySlug:Hr},Symbol.toStringTag,{value:"Module"})),Vr="languageFamily",Z5="#000000",se={"Indo-European":"#e74c3c",Dravidian:"#ff9800","Afro-Asiatic":"#27ae60","Sino-Tibetan":"#3498db","Niger-Congo":"#9b59b6",Unclassified:"#95a5a6","Nilo-Saharan":"#e91e63","Khoe-Kwadi":"#00bcd4","Austro-Asiatic":"#00bcd4","Kra-Dai":"#8e44ad",Austronesian:"#ff69b4","Hmong-Mien":"#f44336",Turkic:"#ffc107","Nakh-Daghestanian":"#009688",Mongolic:"#795548",Uralic:"#607d8b",Tungusic:"#4caf50",Japonic:"#ff5722",Cariban:"#673ab7",Tupian:"#03a9f4",Tucanoan:"#8bc34a",Maipurean:"#ffc107",Panoan:"#cddc39",Guajiboan:"#9e9e9e",Chibchan:"#ff7043",Quechuan:"#ab47bc",Jean:"#26a69a",Harákmbut:"#7e57c2",Nambikwara:"#42a5f5",Muran:"#66bb6a",Karajá:"#ffa726",Bororoan:"#ef5350",Arauan:"#5c6bc0",Yanomaman:"#26c6da",Yaguan:"#d4e157",Witotoan:"#78909c",Zamucoan:"#8d6e63",Puinavean:"#aed581",Barbacoan:"#4db6ac","Eyak-Athabaskan":"#7986cb","Trans-New Guinea":"#ba68c8",Andamanese:"#4dd0e1","Sign Language":"#212121",Creole:"#9575cd","Mixed language":"#a1887f","Language isolate":"#90a4ae",Unknown:"#000000"},q5=se;function Hn(a){return se[a]||Z5}const X5=(()=>{const a=e=>String(e||"").toLowerCase().trim(),n={};for(const e of Object.keys(se))n[a(e)]=e;return n})();function Yr(a){if(!a)return"Unknown";const n=String(a).trim();return X5[n.toLowerCase()]||n}function du(a){var n;return Hn(a.languageFamily||((n=a._normalized)==null?void 0:n.languageFamily))}function Wr(){const a=["match",["get",Vr]];return Object.entries(se).forEach(([n,e])=>{a.push(n,e)}),a.push("#95a5a6"),a}const pu=Wr,Q5=Object.freeze(Object.defineProperty({__proto__:null,LANGUAGE_FAMILY_COLORS:q5,PALETTE:se,PROPERTY_KEY:Vr,applyColor:Wr,buildColorExpression:pu,canonicalFamilyName:Yr,default:{name:"Language Family",propertyKey:Vr,palette:se,colors:se,getColor:du,applyColor:Wr,buildColorExpression:pu,getLanguageFamilyColor:Hn,canonicalFamilyName:Yr},defaultFamilyColor:"#95a5a6",getColor:du,getLanguageFamilyColor:Hn,languageFamilyColors:se},Symbol.toStringTag,{value:"Module"})),mu="peoplePraying",no=144,je={noPrayer:"#e74c3c",hasPrayer:"#f39c12",fullPrayer:"#22c55e"},af=je,Jr={noPrayer:"Needs Prayer",hasPrayer:"Has Prayer",fullPrayer:"Has Full Prayer Coverage"},nf=Jr;function eo(a){var i;const n=(a==null?void 0:a.peoplePraying)??((i=a==null?void 0:a._raw)==null?void 0:i.people_praying)??null,e=Number(n)||0;return e>=no?"fullPrayer":e>0?"hasPrayer":"noPrayer"}function Zr(a){return je[eo(a)]}function hu(a){var e;const n=(a==null?void 0:a.peoplePraying)??((e=a==null?void 0:a._raw)==null?void 0:e.people_praying)??null;return n!==null&&n>0}function yu(a){return eo(a)==="fullPrayer"}function bu(a){return Zr(a)}function qr({colorSource:a="properties"}={}){const n=a==="feature-state"?["feature-state","peoplePraying"]:["get","peoplePraying"];return["case",[">=",n,no],je.fullPrayer,[">",n,0],je.hasPrayer,je.noPrayer]}const _u=qr,ef=Object.freeze(Object.defineProperty({__proto__:null,FULL_PRAYER_THRESHOLD:no,LABELS:Jr,PALETTE:je,PRAYER_COLORS:af,PRAYER_LABELS:nf,PROPERTY_KEY:mu,applyColor:qr,buildColorExpression:_u,checkHasFullPrayer:yu,checkHasPrayer:hu,default:{name:"Prayer Progress",propertyKey:mu,palette:je,colors:je,labels:Jr,threshold:no,getColor:bu,applyColor:qr,buildColorExpression:_u,getPrayerLevel:eo,getPrayerColor:Zr,checkHasPrayer:hu,checkHasFullPrayer:yu},getColor:bu,getPrayerColor:Zr,getPrayerLevel:eo},Symbol.toStringTag,{value:"Module"})),fu="religion",Xr="#94a3b8",Qr={C:"Christianity",M:"Islam",H:"Hinduism",B:"Buddhism",E:"Ethnoreligion",J:"Judaism",S:"Sikhism",N:"Unaffiliated",O:"Other",U:"Unknown"},jn={C:"#3b82f6",M:"#ef4444",H:"#f59e0b",B:"#facc15",E:"#84cc16",J:"#a855f7",S:"#ec4899",N:"#71717a",O:"#ff6b2b",U:"#94a3b8"};function Pu(a){if(!a||typeof a!="string")return"U";const n=a.charAt(0).toUpperCase();return Qr[n]?n:"U"}function Cu(a){var e,i,t;const n=(a==null?void 0:a.religion)||((i=(e=a==null?void 0:a._raw)==null?void 0:e.religion)==null?void 0:i.value)||((t=a==null?void 0:a._raw)==null?void 0:t.religion);return jn[Pu(n)]||Xr}function al(){return["match",["slice",["coalesce",["get","religion"],""],0,1],"C",jn.C,"M",jn.M,"H",jn.H,"B",jn.B,"E",jn.E,"J",jn.J,"S",jn.S,"N",jn.N,"O",jn.O,Xr]}const ju=al,tf=Object.freeze(Object.defineProperty({__proto__:null,PALETTE:jn,PROPERTY_KEY:fu,RELIGION_FAMILIES:Qr,applyColor:al,buildColorExpression:ju,default:{name:"Religion",propertyKey:fu,palette:jn,families:Qr,getColor:Cu,applyColor:al,buildColorExpression:ju,fallback:Xr},getColor:Cu,getReligionFamily:Pu},Symbol.toStringTag,{value:"Module"})),ku="resourceType",ke={bible:"#3498db",jesusFilm:"#20c997",radio:"#9b59b6",gospel:"#f39c12",audio:"#1abc9c",stories:"#e74c3c",hasResources:"#27ae60",noResources:"#2c3e50"},of=ke,zi=["bible","jesusFilm","radio","gospel","audio","stories"],nl={bible:"Bible",jesusFilm:"Jesus Film",radio:"Radio",gospel:"Gospel",audio:"Audio",stories:"Stories",hasResources:"Has Resources",noResources:"No Resources"},rf=nl;function Vi(a){return{bible:"Bible",jesusFilm:"Jesus",radio:"Radio",gospel:"Gospel",audio:"Audio",stories:"Stories"}[a]}function Gu(a){var n;for(const e of zi)if((a[e]||((n=a._raw)==null?void 0:n[Vi(e)]))==="Available")return ke.hasResources;return ke.noResources}function vu(a){var n;for(const e of zi)if((a[e]||((n=a._raw)==null?void 0:n[Vi(e)]))==="Available")return!0;return!1}function Au(a){var n;for(const e of zi)if((a[e]||((n=a._raw)==null?void 0:n[Vi(e)]))==="Available")return e;return"noResources"}function el(){return["case",["any",["==",["get","bible"],"Available"],["==",["get","jesusFilm"],"Available"],["==",["get","radio"],"Available"],["==",["get","gospel"],"Available"],["==",["get","audio"],"Available"],["==",["get","stories"],"Available"]],ke.hasResources,ke.noResources]}const Su=el,Eu=Object.assign({"./adoption.js":U5,"./affinity-block.js":H5,"./engagement.js":V5,"./geo-region.js":J5,"./language-family.js":Q5,"./prayer-progress.js":ef,"./religion.js":tf,"./resource.js":Object.freeze(Object.defineProperty({__proto__:null,NAMES:nl,PALETTE:ke,PROPERTY_KEY:ku,RESOURCE_COLORS:of,RESOURCE_NAMES:rf,RESOURCE_PRIORITY:zi,applyColor:el,buildColorExpression:Su,default:{name:"Gospel Resources",propertyKey:ku,palette:ke,colors:ke,names:nl,priority:zi,getColor:Gu,applyColor:el,buildColorExpression:Su,hasAnyResource:vu,getResourceType:Au,getCSVColumn:Vi},getCSVColumn:Vi,getColor:Gu,getResourceType:Au,hasAnyResource:vu},Symbol.toStringTag,{value:"Module"}))}),lf=a=>a.replace(/-([a-z0-9])/g,(n,e)=>e.toUpperCase()),sf=a=>a.replace(/-/g,"_").toUpperCase(),cf={...{STATUS:"status",CUSTOM:"custom"}};for(const a of Object.keys(Eu).sort()){const n=a.split("/").pop().replace(/\.js$/,"");if(n.startsWith("_")||n.startsWith(".")||!Eu[a].default)continue;const i=lf(n);cf[sf(n)]=i}const ln={Chamacoco:"Zamucoan",Ninam:"Yanomaman",Yagua:"Yaguan",Muinane:"Witotoan",Finnish:"Uralic","Hill Mari":"Uralic",Mansi:"Uralic","Meadow Mari":"Uralic","North Saami":"Uralic",Carabayo:"Unclassified",Kujarge:"Unclassified",Shabo:"Unclassified",Ainu:"Turkic",Kazakh:"Turkic","Khorasani Turkish":"Turkic",Kyrgyz:"Turkic","Northern Uzbek":"Turkic","South Azerbaijani":"Turkic",Turkish:"Turkic",Tuvan:"Turkic",Uyghur:"Turkic",Amundava:"Tupian",Araweté:"Tupian","Asurini of Xingú":"Tupian","Avá-Canoeiro":"Tupian",Awetí:"Tupian",Kamayurá:"Tupian",Karo:"Tupian",Morerebi:"Tupian",Tenharim:"Tupian","Uru-Eu-Wau-Wau":"Tupian","Uru-Pa-In":"Tupian",Wayampi:"Tupian","Zo’é":"Tupian",Evenki:"Tungusic",Xibe:"Tungusic",Carapana:"Tucanoan",Cubeo:"Tucanoan",Desano:"Tucanoan",Macuna:"Tucanoan",Piratapuyo:"Tucanoan",Siona:"Tucanoan",Siriano:"Tucanoan",Tucano:"Tucanoan",Tuyuca:"Tucanoan",Waimaha:"Tucanoan",Tay:"Trans-New Guinea",Adi:"Sino-Tibetan",Akha:"Sino-Tibetan","Amdo Tibetan":"Sino-Tibetan",Axi:"Sino-Tibetan",Biyo:"Sino-Tibetan","Boro (India)":"Sino-Tibetan",Brokkat:"Sino-Tibetan",Bugun:"Sino-Tibetan",Byangsi:"Sino-Tibetan","Central Lalo":"Sino-Tibetan","Central Tibetan":"Sino-Tibetan",Chak:"Sino-Tibetan",Chalikha:"Sino-Tibetan",Chaudangsi:"Sino-Tibetan",Chocangacakha:"Sino-Tibetan",Darlong:"Sino-Tibetan",Dhimal:"Sino-Tibetan","Digaro-Mishmi":"Sino-Tibetan",Dzalakha:"Sino-Tibetan","Eastern Nisu":"Sino-Tibetan",Ersu:"Sino-Tibetan",Gahri:"Sino-Tibetan",Gongduk:"Sino-Tibetan",Gyalsumdo:"Sino-Tibetan",Hani:"Sino-Tibetan","Idu-Mishmi":"Sino-Tibetan",Kaike:"Sino-Tibetan",Kanashi:"Sino-Tibetan",Katso:"Sino-Tibetan",Khamba:"Sino-Tibetan",Koireng:"Sino-Tibetan",Kucong:"Sino-Tibetan",Kurtokha:"Sino-Tibetan",Ladakhi:"Sino-Tibetan",Lakha:"Sino-Tibetan","Lang’e":"Sino-Tibetan",Lhokpu:"Sino-Tibetan",Lolopo:"Sino-Tibetan",Lunanakha:"Sino-Tibetan","Mandarin Chinese":"Sino-Tibetan",Meitei:"Sino-Tibetan","Miju-Mishmi":"Sino-Tibetan",Mpi:"Sino-Tibetan",Na:"Sino-Tibetan",Namuyi:"Sino-Tibetan",Narua:"Sino-Tibetan",Naxi:"Sino-Tibetan","Northern Muji":"Sino-Tibetan",Nuosu:"Sino-Tibetan",Nupbikha:"Sino-Tibetan",Nyenkha:"Sino-Tibetan",Olekha:"Sino-Tibetan",Pahari:"Sino-Tibetan",Pattani:"Sino-Tibetan","Phana’":"Sino-Tibetan",Phula:"Sino-Tibetan",Phunoi:"Sino-Tibetan",Puma:"Sino-Tibetan",Puroik:"Sino-Tibetan",Raji:"Sino-Tibetan",Rawat:"Sino-Tibetan",Sani:"Sino-Tibetan",Sherdukpen:"Sino-Tibetan",Sherpa:"Sino-Tibetan",Shuhi:"Sino-Tibetan",Sila:"Sino-Tibetan",Singpho:"Sino-Tibetan",Sunwar:"Sino-Tibetan","Tawang Monpa":"Sino-Tibetan",Tseku:"Sino-Tibetan",Tshangla:"Sino-Tibetan",Usoi:"Sino-Tibetan","Western Minyag":"Sino-Tibetan","Wusa Nasu":"Sino-Tibetan","Xiang Chinese":"Sino-Tibetan",Yakkha:"Sino-Tibetan","Youle Jinuo":"Sino-Tibetan","Yue Chinese":"Sino-Tibetan",Zakhring:"Sino-Tibetan","Afghan Sign Language":"Sign Language","Albanian Sign Language":"Sign Language","Algerian Sign Language":"Sign Language","American Sign Language":"Sign Language","Armenian Sign Language":"Sign Language","British Sign Language":"Sign Language","Bulgarian Sign Language":"Sign Language","Cambodian Sign Language":"Sign language","Cuban Sign Language":"Sign Language","Egyptian Sign Language":"Sign Language","Greek Sign Language":"Sign Language","Guinean Sign Language":"Sign Language","Hong Kong Sign Language":"Sign Language","Icelandic Sign Language":"Sign Language","Iranian Sign Language":"Sign Language","Israeli Sign Language":"Sign Language","Jamaican Sign Language":"Sign Language","Jordanian Sign Language":"Sign Language","Laos Sign Language":"Sign Language","Libyan Sign Language":"Sign Language","Maltese Sign Language":"Sign Language","Mauritian Sign Language":"Sign Language","Moroccan Sign Language":"Sign Language","Mozambican Sign Language":"Sign Language","Myanmar Sign Language":"Sign language","Natural Sign Language":"Sign Language","Pakistan Sign Language":"Sign Language","Papua New Guinean Sign Language":"Sign language","Russian Sign Language":"Sign Language","Saudi Arabian Sign Language":"Sign Language","Sign Language of the Netherlands":"Sign Language","Solomon Islands Sign Language":"Sign Language","Sri Lankan Sign Language":"Sign Language","Swedish Sign Language":"Sign Language","Turkish Sign Language":"Sign Language","Northern Conchucos Ancash Quechua":"Quechuan","Northern Pastaza Quichua":"Quechuan",Hupdë:"Puinavean",Amahuaca:"Panoan",Korubo:"Panoan",Sharanahua:"Panoan","Shipibo-Conibo":"Panoan",Yaminahua:"Panoan",Yawanawa:"Panoan",Afitti:"Nilo-Saharan",Assangori:"Nilo-Saharan","Beli (South Sudan)":"Nilo-Saharan",Berta:"Nilo-Saharan",Burun:"Nilo-Saharan","Dar Daju Daju":"Nilo-Saharan","Dar Fur Daju":"Nilo-Saharan","Dar Sila Daju":"Nilo-Saharan",Dazaga:"Nilo-Saharan","Dendi (Benin)":"Nilo-Saharan",Dilling:"Nilo-Saharan",Fur:"Nilo-Saharan",Gbaya:"Nilo-Saharan",Ghulfan:"Nilo-Saharan",Gwama:"Nilo-Saharan","Humburi Senni Songhay":"Nilo-Saharan",Jopadhola:"Nilo-Saharan",Kadaru:"Nilo-Saharan",Kanga:"Nilo-Saharan",Karanga:"Nilo-Saharan",Karko:"Nilo-Saharan",Kebu:"Nilo-Saharan",Keiga:"Nilo-Saharan",Keliko:"Nilo-Saharan",Kendeje:"Nilo-Saharan",Kibet:"Nilo-Saharan","Komo (Sudan)":"Nilo-Saharan",Korandje:"Nilo-Saharan",Kulfa:"Nilo-Saharan",Kwegu:"Nilo-Saharan",Laarim:"Nilo-Saharan",Logorik:"Nilo-Saharan",Majang:"Nilo-Saharan","Manga Kanuri":"Nilo-Saharan",Mango:"Nilo-Saharan",Mararit:"Nilo-Saharan",Marfa:"Nilo-Saharan",Midob:"Nilo-Saharan","Mo’da":"Nilo-Saharan",Morom:"Nilo-Saharan",Moru:"Nilo-Saharan",Naba:"Nilo-Saharan",Nara:"Nilo-Saharan",Njalgulgule:"Nilo-Saharan",Nuer:"Nilo-Saharan","Nyamusa-Molo":"Nilo-Saharan",Nyangatom:"Nilo-Saharan","Olu’bo":"Nilo-Saharan",Opo:"Nilo-Saharan",Päri:"Nilo-Saharan","Sara Kaba Naa":"Nilo-Saharan",Surbakhal:"Nilo-Saharan",Tadaksahak:"Nilo-Saharan","Tama (Chad)":"Nilo-Saharan",Temein:"Nilo-Saharan",Thuri:"Nilo-Saharan","Tirmaga-Chai Suri":"Nilo-Saharan",Toposa:"Nilo-Saharan",Tumtum:"Nilo-Saharan","Wali (Sudan)":"Nilo-Saharan","Yerwa Kanuri":"Nilo-Saharan",Yulu:"Nilo-Saharan",Zaghawa:"Nilo-Saharan","Adamawa Fulfulde":"Niger-Congo",Akaselem:"Niger-Congo","Amba (Uganda)":"Niger-Congo",Anii:"Niger-Congo",Baangi:"Niger-Congo",Badyara:"Niger-Congo","Bago-Kusuntu":"Niger-Congo",Bai:"Niger-Congo","Bainouk-Gunyaamolo":"Niger-Congo",Bamanankan:"Niger-Congo","Banda-Mbrès":"Niger-Congo",Bandial:"Niger-Congo",Bankagooma:"Niger-Congo","Belanda Viri":"Niger-Congo",Bemba:"Niger-Congo",Bolgo:"Niger-Congo","Bon Gula":"Niger-Congo",Bua:"Niger-Congo",Chichewa:"Niger-Congo","Chung (Cameroon)":"Niger-Congo","Ci Gbe":"Niger-Congo",Degema:"Niger-Congo",Dek:"Niger-Congo",Dhimba:"Niger-Congo",Dogoso:"Niger-Congo","East Limba":"Niger-Congo",Engenni:"Niger-Congo",Epie:"Niger-Congo",Éwé:"Niger-Congo",Fania:"Niger-Congo",Foodo:"Niger-Congo",Fwe:"Niger-Congo",Gciriku:"Niger-Congo",Gwa:"Niger-Congo",Herero:"Niger-Congo",Ibuoro:"Niger-Congo","Jenaama Bozo":"Niger-Congo",Jita:"Niger-Congo",Jula:"Niger-Congo",Kabiyè:"Niger-Congo",Kadung:"Niger-Congo",Kakabe:"Niger-Congo",Kalamsé:"Niger-Congo","Kami (Tanzania)":"Niger-Congo","Kango (Bas-Uélé District)":"Niger-Congo",Kasem:"Niger-Congo","Kelengaxo Bozo":"Niger-Congo",Khe:"Niger-Congo",Khisa:"Niger-Congo",Kim:"Niger-Congo",Kinyarwanda:"Niger-Congo",Kipfokomu:"Niger-Congo",Kitharaka:"Niger-Congo",Kiyombe:"Niger-Congo",Ko:"Niger-Congo",Koalib:"Niger-Congo",Koke:"Niger-Congo",Konongo:"Niger-Congo","Koro Nulu":"Niger-Congo","Koro Zuba":"Niger-Congo",Kuhane:"Niger-Congo",Kunda:"Niger-Congo",Kuranko:"Niger-Congo",Kuria:"Niger-Congo",Kwangali:"Niger-Congo",Lame:"Niger-Congo",Laru:"Niger-Congo",Lopa:"Niger-Congo","Makhuwa-Meetto":"Niger-Congo","Makhuwa-Shirima":"Niger-Congo","Malawi Nyiha":"Niger-Congo",Mandinka:"Niger-Congo",Mankanya:"Niger-Congo",Mansoanka:"Niger-Congo",Mbukushu:"Niger-Congo","Mende (Sierra Leone)":"Niger-Congo",Miyobe:"Niger-Congo",Mushungulu:"Niger-Congo","Mwali Comorian":"Niger-Congo","Mwera (Chimwera)":"Niger-Congo",Ndemli:"Niger-Congo",Ndengereko:"Niger-Congo",Ndumu:"Niger-Congo",Ndunga:"Niger-Congo","Ndzwani Comorian":"Niger-Congo",Ngile:"Niger-Congo","Northwest Gbaya":"Niger-Congo",Notre:"Niger-Congo",Nyamwanga:"Niger-Congo",Nyankore:"Niger-Congo",Nyengo:"Niger-Congo",Okpamheri:"Niger-Congo",Osatu:"Niger-Congo","Pana (Burkina Faso)":"Niger-Congo",Pulaar:"Niger-Congo",Pular:"Niger-Congo",Rufiji:"Niger-Congo","Sankaran Maninka":"Niger-Congo",Sapo:"Niger-Congo","Senara Sénoufo":"Niger-Congo",Shanga:"Niger-Congo",Sininkere:"Niger-Congo","Southern Ngbandi":"Niger-Congo",Swahili:"Niger-Congo","Syenara Sénoufo":"Niger-Congo",Tagbu:"Niger-Congo",Tagoi:"Niger-Congo",Tegali:"Niger-Congo",Tem:"Niger-Congo","Tiéyaxo Bozo":"Niger-Congo",Tiyaa:"Niger-Congo",Tocho:"Niger-Congo","Tonga (Zambia)":"Niger-Congo",Totela:"Niger-Congo","Toura (Côte d’Ivoire)":"Niger-Congo",Tswa:"Niger-Congo",Tumbuka:"Niger-Congo",Ukaan:"Niger-Congo",Uneme:"Niger-Congo",Vai:"Niger-Congo",Vute:"Niger-Congo",Waama:"Niger-Congo",Warnang:"Niger-Congo",Wolof:"Niger-Congo",Yao:"Niger-Congo",Yauma:"Niger-Congo",Yom:"Niger-Congo","Zan Gula":"Niger-Congo",Zande:"Niger-Congo",Zigula:"Niger-Congo",Mamaindê:"Nambikwara",Aghul:"Nakh-Daghestanian",Akhvakh:"Nakh-Daghestanian",Andi:"Nakh-Daghestanian",Avar:"Nakh-Daghestanian",Bagvalal:"Nakh-Daghestanian",Botlikh:"Nakh-Daghestanian",Chamalal:"Nakh-Daghestanian",Chechen:"Nakh-Daghestanian",Dargwa:"Nakh-Daghestanian",Kaitag:"Nakh-Daghestanian",Karata:"Nakh-Daghestanian",Khvarshi:"Nakh-Daghestanian",Tindi:"Nakh-Daghestanian",Pirahã:"Muran",Bonan:"Mongolic","China Buriat":"Mongolic",Daur:"Mongolic","Kalmyk-Oirat":"Mongolic","Peripheral Mongolian":"Mongolic","Russia Buriat":"Mongolic",Tagdal:"Mixed language",Wutunhua:"Mixed language","Ashéninka Perené":"Maipurean",Baniwa:"Maipurean",Cabiyarí:"Maipurean",Curripaco:"Maipurean","Enawené-Nawé":"Maipurean",Kanamarí:"Maipurean",Mehináku:"Maipurean","Pichis Ashéninka":"Maipurean",Waurá:"Maipurean",Bangime:"Language isolate",Burushaski:"Language isolate","Ai-Cham":"Kra-Dai",Aiton:"Kra-Dai","Dai Zhuang":"Kra-Dai",Duoluo:"Kra-Dai","Green Gelao":"Kra-Dai","Guibian Zhuang":"Kra-Dai",Hlai:"Kra-Dai",Jiamao:"Kra-Dai",Kang:"Kra-Dai",Khün:"Kra-Dai",Kuan:"Kra-Dai",Lachi:"Kra-Dai","Laha (Viet Nam)":"Kra-Dai",Lao:"Kra-Dai",Lü:"Kra-Dai","Mak (China)":"Kra-Dai","Northeastern Thai":"Kra-Dai","Northern Dong":"Kra-Dai","Northern Thai":"Kra-Dai",Nyaw:"Kra-Dai",Phake:"Kra-Dai","Phu Thai":"Kra-Dai",Qabiao:"Kra-Dai",Qau:"Kra-Dai","Qiubei Zhuang":"Kra-Dai",Shan:"Kra-Dai","Southern Dong":"Kra-Dai",Sui:"Kra-Dai","T’en":"Kra-Dai","Tai Daeng":"Kra-Dai","Tai Dam":"Kra-Dai","Tai Hongjin":"Kra-Dai","Tai Nüa":"Kra-Dai","Tai Ya":"Kra-Dai","Tai Yo":"Kra-Dai","Ts’ün-Lao":"Kra-Dai","Yang Zhuang":"Kra-Dai",Yerong:"Kra-Dai",Yong:"Kra-Dai",Yoy:"Kra-Dai",Khoekhoe:"Khoe-Kwadi",Karajá:"Karajá","Pará Gavião":"Jean",Suyá:"Jean",Japanese:"Japonic","Oki-No-Erabu":"Japonic","Toku-No-Shima":"Japonic",Yaeyama:"Japonic",Yoron:"Japonic","Adivasi Oriya":"Indo-European",Afrikaans:"Indo-European","Alviri-Vidari":"Indo-European",Angika:"Indo-European",Assamese:"Indo-European",Bagheli:"Indo-European",Bagri:"Indo-European",Bashkardi:"Indo-European",Bateri:"Indo-European",Bengali:"Indo-European",Bhojpuri:"Indo-European",Bhunjia:"Indo-European",Bilaspuri:"Indo-European",Bosnian:"Indo-European","Braj Bhasha":"Indo-European",Brokskat:"Indo-European",Bundeli:"Indo-European",Catalan:"Indo-European",Chambeali:"Indo-European",Chhattisgarhi:"Indo-European",Dameli:"Indo-European",Dari:"Indo-European",Dhundari:"Indo-European",Dogri:"Indo-European",Domari:"Indo-European",Dutch:"Indo-European","Eastern Balochi":"Indo-European","Eastern Panjabi":"Indo-European","Eastern Yiddish":"Indo-European",English:"Indo-European",French:"Indo-European",Gaddi:"Indo-European",Garhwali:"Indo-European",Gawri:"Indo-European",Gowro:"Indo-European",Gujarati:"Indo-European",Gujari:"Indo-European",Halbi:"Indo-European",Haroti:"Indo-European",Haryanvi:"Indo-European",Hindi:"Indo-European","Indus Kohistani":"Indo-European","Iranian Persian":"Indo-European",Ishkashimi:"Indo-European",Kacchi:"Indo-European",Kalkoti:"Indo-European",Kanauji:"Indo-European",Kangri:"Indo-European",Karingani:"Indo-European",Kashmiri:"Indo-European",Kati:"Indo-European",Khunsari:"Indo-European",Konkani:"Indo-European",Kudmali:"Indo-European",Kumaoni:"Indo-European",Kumzari:"Indo-European",Laki:"Indo-European",Lasi:"Indo-European",Luwati:"Indo-European",Magahi:"Indo-European",Maithili:"Indo-European",Maldivian:"Indo-European",Malvi:"Indo-European",Marathi:"Indo-European","Marwari (India)":"Indo-European",Mewari:"Indo-European",Munji:"Indo-European",Nepali:"Indo-European",Nimadi:"Indo-European","Northern Kurdish":"Indo-European",Odia:"Indo-European","Pahari-Potwari":"Indo-European",Palula:"Indo-European",Panchpargania:"Indo-European",Pangwali:"Indo-European",Parachi:"Indo-European",Portuguese:"Indo-European",Russian:"Indo-European",Sadri:"Indo-European",Sanglechi:"Indo-European",Sarikoli:"Indo-European",Savi:"Indo-European",Semnani:"Indo-European",Serbian:"Indo-European",Shabak:"Indo-European",Shahrudi:"Indo-European",Shekhawati:"Indo-European",Shina:"Indo-European",Shughni:"Indo-European",Shumashti:"Indo-European",Sindhi:"Indo-European",Sivandi:"Indo-European",Soi:"Indo-European","Southern Balochi":"Indo-European",Spanish:"Indo-European",Tajik:"Indo-European",Talysh:"Indo-European",Urdu:"Indo-European",Ushojo:"Indo-European",Vaghri:"Indo-European","Vlax Romani":"Indo-European",Wagdi:"Indo-European",Wakhi:"Indo-European",Waneci:"Indo-European","Western Balochi":"Indo-European",Yadgha:"Indo-European","Bu-Nao Bunu":"Hmong-Mien","Central Mashan Miao":"Hmong-Mien","Chuanqiandian Cluster Miao":"Hmong-Mien","Eastern Xiangxi Miao":"Hmong-Mien","Iu Mien":"Hmong-Mien","Luopohe Miao":"Hmong-Mien","Northern Qiandong Miao":"Hmong-Mien","Pa-Hng":"Hmong-Mien","Southwestern Huishui Miao":"Hmong-Mien","Wunai Bunu":"Hmong-Mien","Younuo Bunu":"Hmong-Mien",Amarakaeri:"Harákmbut",Huachipaeri:"Harákmbut",Cuiba:"Guajiboan",Macaguán:"Guajiboan",Tlicho:"Eyak-Athabaskan",Kannada:"Dravidian",Kodava:"Dravidian","Korra Koraga":"Dravidian","Kota (India)":"Dravidian",Kudiya:"Dravidian",Malapandaram:"Dravidian",Malayalam:"Dravidian",Muthuvan:"Dravidian",Ravula:"Dravidian",Sholaga:"Dravidian",Tamil:"Dravidian",Telugu:"Dravidian",Tulu:"Dravidian",Vishavan:"Dravidian","Andaman Hindi Creole":"Creole","Cocos Islands Malay":"Creole","Juba Arabic":"Creole",Nubi:"Creole",Barí:"Chibchan","Barro Negro Tunebo":"Chibchan","Western Tunebo":"Chibchan",Ikpeng:"Cariban","Kuikúro-Kalapálo":"Cariban",Pemon:"Cariban",Trió:"Cariban","Waimiri-Atroarí":"Cariban",Waiwai:"Cariban",Yukpa:"Cariban",Borôro:"Bororoan",Chachi:"Barbacoan","Abai Sungai":"Austronesian",Ambelau:"Austronesian",Asilulu:"Austronesian",Balaesang:"Austronesian","Batak Alas-Kluet":"Austronesian","Batak Dairi":"Austronesian","Batak Karo":"Austronesian",Bonerate:"Austronesian",Bonggi:"Austronesian",Brunei:"Austronesian","Brunei Bisaya":"Austronesian",Buol:"Austronesian","Central Malay":"Austronesian","Central Sama":"Austronesian","Coastal Konjo":"Austronesian",Dampelas:"Austronesian","Dibabawon Manobo":"Austronesian",Dondo:"Austronesian",Gane:"Austronesian","Geser-Gorom":"Austronesian","Highland Konjo":"Austronesian",Hitu:"Austronesian",Iban:"Austronesian",Indonesian:"Austronesian","Kadazan Dusun":"Austronesian",Kiput:"Austronesian",Komodo:"Austronesian",Kompane:"Austronesian",Lahanan:"Austronesian","Lampung Nyo":"Austronesian","Larike-Wakasihu":"Austronesian",Lola:"Austronesian",Luhu:"Austronesian",Malay:"Austronesian",Mariri:"Austronesian",Moronene:"Austronesian",Rukai:"Austronesian","Sabah Bisaya":"Austronesian","Seit-Kaitetu":"Austronesian",Sula:"Austronesian","Tae’":"Austronesian",Tajio:"Austronesian",Tomini:"Austronesian",Tutong:"Austronesian",Ujir:"Austronesian",Aheu:"Austro-Asiatic",Alak:"Austro-Asiatic",Bit:"Austro-Asiatic","Bo (Laos)":"Austro-Asiatic",Bondo:"Austro-Asiatic",Brao:"Austro-Asiatic",Bugan:"Austro-Asiatic",Chong:"Austro-Asiatic",Chut:"Austro-Asiatic",Danau:"Austro-Asiatic",Halang:"Austro-Asiatic","Halang Doan":"Austro-Asiatic",Hu:"Austro-Asiatic",Hung:"Austro-Asiatic",Ir:"Austro-Asiatic",Kensiu:"Austro-Asiatic",Khmu:"Austro-Asiatic",Khua:"Austro-Asiatic",Khuen:"Austro-Asiatic",Koda:"Austro-Asiatic","Kon Keu":"Austro-Asiatic",Kriang:"Austro-Asiatic",Kuay:"Austro-Asiatic",Laven:"Austro-Asiatic",Maleng:"Austro-Asiatic","Man Met":"Austro-Asiatic",Mang:"Austro-Asiatic",Minriq:"Austro-Asiatic",Mlabri:"Austro-Asiatic",Nguôn:"Austro-Asiatic",Nyaheun:"Austro-Asiatic",Nyahkur:"Austro-Asiatic","O’du":"Austro-Asiatic",Ong:"Austro-Asiatic",Oy:"Austro-Asiatic",Pacoh:"Austro-Asiatic","Phong-Kniang":"Austro-Asiatic",Prai:"Austro-Asiatic",Puoc:"Austro-Asiatic",Rengao:"Austro-Asiatic",Rmeet:"Austro-Asiatic","Rumai Palaung":"Austro-Asiatic",Sapuan:"Austro-Asiatic","Shwe Palaung":"Austro-Asiatic","So (Laos)":"Austro-Asiatic",Sou:"Austro-Asiatic","Tai Loi":"Austro-Asiatic",Talieng:"Austro-Asiatic",Tareng:"Austro-Asiatic",Tho:"Austro-Asiatic",U:"Austro-Asiatic","Upper Ta’oih":"Austro-Asiatic",Vietnamese:"Austro-Asiatic","Western Katu":"Austro-Asiatic",Suruahá:"Arauan",Jarawa:"Andamanese",Öñge:"Andamanese",Sentinel:"Andamanese",Afar:"Afro-Asiatic","Alaba-K’abeena":"Afro-Asiatic",Alagwa:"Afro-Asiatic",Ale:"Afro-Asiatic","Algerian Arabic":"Afro-Asiatic",Amharic:"Afro-Asiatic",Arbore:"Afro-Asiatic","Baharna Arabic":"Afro-Asiatic",Barein:"Afro-Asiatic",Bedawiyet:"Afro-Asiatic",Bidiyo:"Afro-Asiatic",Bilen:"Afro-Asiatic",Birgit:"Afro-Asiatic",Boor:"Afro-Asiatic","Borana-Arsi-Guji Oromo":"Afro-Asiatic",Buduma:"Afro-Asiatic","Central Atlas Tamazight":"Afro-Asiatic","Chadian Arabic":"Afro-Asiatic",Chenoua:"Afro-Asiatic",Ciwogai:"Afro-Asiatic",Daasanach:"Afro-Asiatic",Dabarre:"Afro-Asiatic",Dangaléat:"Afro-Asiatic",Deno:"Afro-Asiatic",Diri:"Afro-Asiatic",Duwai:"Afro-Asiatic","Eastern Egyptian Bedawi Arabic":"Afro-Asiatic","Eastern Oromo":"Afro-Asiatic",Garre:"Afro-Asiatic",Geruma:"Afro-Asiatic",Giiwo:"Afro-Asiatic",Gorowa:"Afro-Asiatic","Gulf Arabic":"Afro-Asiatic","Hadrami Arabic":"Afro-Asiatic",Harsusi:"Afro-Asiatic",Hassaniyya:"Afro-Asiatic",Hausa:"Afro-Asiatic",Hebrew:"Afro-Asiatic","Hijazi Arabic":"Afro-Asiatic",Hobyót:"Afro-Asiatic",Hozo:"Afro-Asiatic",Jiiddu:"Afro-Asiatic",Jimi:"Afro-Asiatic",Jina:"Afro-Asiatic","Jonkor Bourmataguil":"Afro-Asiatic","Judeo-Iraqi Arabic":"Afro-Asiatic","Judeo-Moroccan Arabic":"Afro-Asiatic",Kabalai:"Afro-Asiatic",Kajakse:"Afro-Asiatic",Kariya:"Afro-Asiatic","Karo (Ethiopia)":"Afro-Asiatic",Kutto:"Afro-Asiatic","Levantine Arabic":"Afro-Asiatic",Libido:"Afro-Asiatic","Libyan Arabic":"Afro-Asiatic","Lishana Deni":"Afro-Asiatic",Maaka:"Afro-Asiatic",Maay:"Afro-Asiatic",Majera:"Afro-Asiatic",Male:"Afro-Asiatic",Maslam:"Afro-Asiatic",Masmaje:"Afro-Asiatic",Mburku:"Afro-Asiatic",Mehri:"Afro-Asiatic","Mesopotamian Arabic":"Afro-Asiatic",Migaama:"Afro-Asiatic",Mogum:"Afro-Asiatic","Moroccan Arabic":"Afro-Asiatic",Mositacha:"Afro-Asiatic",Mubi:"Afro-Asiatic",Mukulu:"Afro-Asiatic",Nafusi:"Afro-Asiatic","Najdi Arabic":"Afro-Asiatic",Nyam:"Afro-Asiatic","Omani Arabic":"Afro-Asiatic","Pa’a":"Afro-Asiatic",Saba:"Afro-Asiatic",Saho:"Afro-Asiatic","Sanaani Arabic":"Afro-Asiatic",Seze:"Afro-Asiatic",Shehri:"Afro-Asiatic",Shekkacho:"Afro-Asiatic",Sheko:"Afro-Asiatic","Shihhi Arabic":"Afro-Asiatic",Siwi:"Afro-Asiatic",Sokoro:"Afro-Asiatic",Soqotri:"Afro-Asiatic","South Levantine Arabic":"Afro-Asiatic","Standard Arabic":"Afro-Asiatic","Sudanese Arabic":"Afro-Asiatic","Ta’izzi-Adeni Arabic":"Afro-Asiatic","Tahaggart Tamahaq":"Afro-Asiatic",Taznatit:"Afro-Asiatic",Tigré:"Afro-Asiatic",Toram:"Afro-Asiatic",Tsamai:"Afro-Asiatic",Tumzabt:"Afro-Asiatic",Tunni:"Afro-Asiatic",Waata:"Afro-Asiatic","West Central Oromo":"Afro-Asiatic",Xamtanga:"Afro-Asiatic",Zumbun:"Afro-Asiatic"};function gf(a){return(a==null?void 0:a.properties)||a||{}}function io(a){return a&&typeof a=="object"&&"label"in a?a.label||a.value||"":a}function uf(a){if(!a||typeof a!="string")return null;const n=a.split(",").map(i=>i.trim()).filter(Boolean);if(n.length>=2){const i=[...n].reverse().join(" ");if(ln[i])return ln[i];if(n.length>=3){const t=[n[1],n[0]].join(" ");if(ln[t])return ln[t]}}if(ln[a])return ln[a];const e=a.replace(/\s*\(.*?\)\s*$/,"").trim();return e!==a&&ln[e]?ln[e]:null}const df=[[/ sign language$/i,"Sign Language"]];function pf(a){if(!a||typeof a!="string")return"— Unknown —";const n=a.indexOf(",");return n>0?a.slice(0,n).trim():a.trim()}function mf(a){if(!a||typeof a!="string")return null;const n=a.indexOf(",");return n>=0&&a.slice(n+1).trim()||null}function hf(a){var r,l,s,g;const n=a.language_family??a.languageFamily??((r=a._raw)==null?void 0:r.LanguageFamily)??((l=a._raw)==null?void 0:l.language_family),e=io(n),i=Yr(e);if(i&&i!=="Unknown")return i;const t=a.primary_language??a.primaryLanguage??((s=a._raw)==null?void 0:s.PrimaryLanguage)??((g=a._raw)==null?void 0:g.primary_language),o=io(t);if(o){const d=String(o).trim(),_=uf(d);if(_)return _;for(const[k,x]of df)if(k.test(d))return x}return"Unknown"}function yf(a){var t,o;const n=((t=a._raw)==null?void 0:t.primary_language)??((o=a._raw)==null?void 0:o.PrimaryLanguage);if(n){const r=io(n);if(r)return String(r).trim()}const e=a.primary_language??a.primaryLanguage??a.language,i=io(e);return i&&String(i).trim()||"— Unknown —"}function bf(a){var e,i;const n=a.population??((e=a._raw)==null?void 0:e.Population)??((i=a._raw)==null?void 0:i.population)??0;return parseInt(n,10)||0}function _f(a,n){var e,i;return(a==null?void 0:a.id)??n.id??n.peopleGroupId??((e=n._raw)==null?void 0:e.PeopleID3)??((i=n._raw)==null?void 0:i.PeopleID)??null}function ff(a,n){return(a==null?void 0:a.clusterId)??n.clusterId??null}function Pf(a,n){var t,o,r,l;const e=parseFloat(n.latitude??n.lat??((t=n._raw)==null?void 0:t.Latitude)??((o=n._raw)==null?void 0:o.latitude)),i=parseFloat(n.longitude??n.lng??((r=n._raw)==null?void 0:r.Longitude)??((l=n._raw)==null?void 0:l.longitude));return!isFinite(e)||!isFinite(i)?null:[i,e]}function Cf(a,n){return n.peopleGroupCount!==a.peopleGroupCount?n.peopleGroupCount-a.peopleGroupCount:(n.population||0)-(a.population||0)}function to(a,n){return(n.population||0)!==(a.population||0)?(n.population||0)-(a.population||0):n.peopleGroupCount-a.peopleGroupCount}function jf(a,n={}){n.aggregator;const e=pi({});function i(T){return!!e[T]}function t(T){e[T]=!e[T]}function o(T){const $=new Set(Array.isArray(T)?T:[]);for(const w of Object.keys(e))$.has(w)||(e[w]=!1);for(const w of $)e[w]=!0}const r=la(()=>{const T=(a==null?void 0:a.value)||[],$=new Map;for(const w of T){const L=gf(w),E=hf(L),I=yf(L),G=pf(I),S=mf(I),v=bf(L),K=_f(w,L),O=ff(w,L),q=Pf(w,L);let sa=$.get(E);sa||(sa={key:E,peopleGroupCount:0,population:0,pinIds:[],coords:[],clusterId:null,languages:new Map},$.set(E,sa)),sa.peopleGroupCount+=1,sa.population+=v,K!=null&&sa.pinIds.push(K),q&&sa.coords.push(q),O&&!sa.clusterId&&(sa.clusterId=O);let ea=sa.languages.get(G);if(ea||(ea={key:G,peopleGroupCount:0,population:0,pinIds:[],coords:[],clusterId:null,dialects:new Map},sa.languages.set(G,ea)),ea.peopleGroupCount+=1,ea.population+=v,K!=null&&ea.pinIds.push(K),q&&ea.coords.push(q),O&&!ea.clusterId&&(ea.clusterId=O),S){let ga=ea.dialects.get(S);ga?ga.originalLabels.add(I):(ga={key:S,peopleGroupCount:0,population:0,pinIds:[],coords:[],originalLabels:new Set([I])},ea.dialects.set(S,ga)),ga.peopleGroupCount+=1,ga.population+=v,K!=null&&ga.pinIds.push(K),q&&ga.coords.push(q)}}return $}),l=n.showAllKnown!==!1,s=la(()=>{const T=r.value,$=[],w=new Set;for(const L of T.values())$.push({key:L.key,label:L.key,color:Hn(L.key),peopleGroupCount:L.peopleGroupCount,population:L.population,kind:L.clusterId?"cluster":"family",clusterId:L.clusterId||void 0,pinIds:L.pinIds,coords:L.coords}),w.add(L.key);if(l)for(const L of Object.keys(se))w.has(L)||$.push({key:L,label:L,color:Hn(L),peopleGroupCount:0,population:0,kind:"family",pinIds:[],coords:[]});return $.sort(Cf),$});function g(T){const $=r.value.get(T);if(!$)return[];const w=[];for(const L of $.languages.values())w.push({key:`${T}__${L.key}`,label:L.key,color:Hn(T),peopleGroupCount:L.peopleGroupCount,population:L.population,kind:L.clusterId?"cluster":"language",familyKey:T,clusterId:L.clusterId||void 0,pinIds:L.pinIds,coords:L.coords,hasDialects:L.dialects.size>0});return w.sort(to),w}function d(T){const $=T.indexOf("__");if($<0)return[];const w=T.slice(0,$),L=T.slice($+2),E=r.value.get(w);if(!E)return[];const I=E.languages.get(L);if(!I)return[];const G=[];for(const S of I.dialects.values())G.push({key:`${T}__${S.key}`,label:`${L}, ${S.key}`,dialectOnly:S.key,color:Hn(w),peopleGroupCount:S.peopleGroupCount,population:S.population,kind:"dialect",languageKey:L,familyKey:w,pinIds:S.pinIds,coords:S.coords,originalLabels:Array.from(S.originalLabels)});return G.sort(to),G}const _=la(()=>{const T=r.value,$=[];for(const w of T.values())for(const L of w.languages.values())$.push({key:`${w.key}__${L.key}`,label:L.key,color:Hn(w.key),peopleGroupCount:L.peopleGroupCount,population:L.population,kind:L.clusterId?"cluster":"language",familyKey:w.key,clusterId:L.clusterId||void 0,pinIds:L.pinIds,coords:L.coords,hasDialects:L.dialects.size>0});return $.sort(to),$}),k=la(()=>{const T=r.value,$=[];for(const w of T.values())for(const L of w.languages.values())for(const E of L.dialects.values())$.push({key:`${w.key}__${L.key}__${E.key}`,label:`${L.key}, ${E.key}`,dialectOnly:E.key,color:Hn(w.key),peopleGroupCount:E.peopleGroupCount,population:E.population,kind:"dialect",languageKey:L.key,familyKey:w.key,pinIds:E.pinIds,coords:E.coords,originalLabels:Array.from(E.originalLabels)});return $.sort(to),$});function x(T){let $=T;if(typeof T=="string"&&($=s.value.find(L=>L.key===T),!$))return;const w={kind:$.kind,pinIds:$.pinIds||[],coords:$.coords||[]};$.kind==="family"&&(w.familyKey=$.label),$.kind==="language"&&(w.languageKey=$.label,w.familyKey=$.familyKey),$.kind==="dialect"&&(w.dialectKey=$.key,w.dialectOnly=$.dialectOnly||$.label,w.languageKey=$.languageKey,w.familyKey=$.familyKey,w.originalLabels=$.originalLabels||[]),$.kind==="cluster"&&(w.clusterId=$.clusterId),typeof window<"u"&&typeof window.CustomEvent=="function"&&window.dispatchEvent(new CustomEvent("legend:highlight",{detail:w}))}const D=la(()=>{const T=r.value,$=[];for(const w of T.values()){const L=Hn(w.key),E=[];for(const G of w.languages.values()){G.key&&G.key!=="— Unknown —"&&E.push(G.key);for(const S of G.dialects.values())for(const v of S.originalLabels)v&&E.push(v)}const I={id:`fam:${w.key}`,label:w.key,color:L,count:w.peopleGroupCount,pop:w.population,filter:E.length>0?["any",["==",["get","languageFamily"],w.key],["in",["get","language"],["literal",Array.from(new Set(E))]]]:["==",["get","languageFamily"],w.key],children:[]};for(const G of w.languages.values()){const S=G.key,v={id:`lang:${w.key}__${S}`,label:S,color:L,count:G.peopleGroupCount,pop:G.population,filter:["any",["==",["get","language"],S],["==",["slice",["get","language"],0,S.length+1],S+","],["in"," "+S,["get","language"]]],children:[]};for(const K of G.dialects.values()){const O=Array.from(K.originalLabels);v.children.push({id:`dial:${w.key}__${S}__${K.key}`,label:`${S}, ${K.key}`,color:L,count:K.peopleGroupCount,pop:K.population,filter:O.length===1?["==",["get","language"],O[0]]:["in",["get","language"],["literal",O]],originalLabels:O,children:[]})}I.children.push(v)}$.push(I)}return $.sort((w,L)=>L.pop-w.pop||L.count-w.count),$});return{rows:s,languageRows:_,dialectRows:k,langTree:D,toggle:t,isExpanded:i,setExpansionToOnly:o,childRowsFor:g,dialectRowsFor:d,highlight:x}}const kf={key:0,class:"fc-loading"},Gf={class:"fc-modes",role:"tablist","aria-label":"Cluster by"},vf=["aria-selected","onClick"],Af={class:"fc-circle"},Sf={class:"fc-mode-lbl"},Ef={class:"fc-mode-sz"},Mf={key:1,class:"fc-stats"},If={key:2,class:"fc-legend"},wf={class:"fc-lrow"},xf={class:"fc-lrow"},Tf={key:3,class:"fc-footer"},ti="#e11d48",Yi="#9f1239",Wi="#002e6e",Nf="#f59e0b",il="fc-core-src",Mu="fc-green-src",Iu="fc-link-src",Te="fc-core",wu="fc-core-lbl",oo="fc-green",Ji="fc-link",Lf={__name:"FlowerClusters",setup(a){function n(u){const A=+u||0;return A>=80?"#0f7a3d":A>=40?"#1f9d55":A>=15?"#5cb874":"#9bcf9b"}const e=Ya("profileConfig"),i=Ya("mapboxToken"),t=la(()=>(e==null?void 0:e.value)||{}),o=ua(null),r=ua(null),l=ua(!1),s=ua("Clustering the harvest by language…"),g=ua("language"),d=ua(null),_=ua([]),{rows:k,languageRows:x}=jf(_,{showAllKnown:!1});function D(u){return u&&typeof u=="object"?u.label||u.value||"":u||""}const T=la(()=>{const u=new Map;for(const A of _.value){const j=(D(A.primary_language)||"— Unknown —").trim(),c=parseFloat(A.latitude),P=parseFloat(A.longitude);let p=u.get(j);p||(p={key:"full:"+j,label:j,color:ti,peopleGroupCount:0,population:0,coords:[],originalLabels:[j]},u.set(j,p)),p.peopleGroupCount++,p.population+=parseInt(A.population,10)||0,isFinite(c)&&isFinite(P)&&p.coords.push([P,c])}return[...u.values()].sort((A,j)=>j.peopleGroupCount-A.peopleGroupCount)});function $(u){if(!u||typeof u!="string")return"";const A=u.indexOf(",");return(A>0?u.slice(0,A):u).trim()}function w(u){return(u||"").trim()}function L(u){if(!u||typeof u!="string")return"Unknown";const A=u.split(",").map(c=>c.trim()).filter(Boolean);if(A.length>=2){const c=[...A].reverse().join(" ");if(ln[c])return ln[c];if(A.length>=3){const P=[A[1],A[0]].join(" ");if(ln[P])return ln[P]}}if(ln[u])return ln[u];const j=u.replace(/\s*\(.*?\)\s*$/,"").trim();return j!==u&&ln[j]?ln[j]:/ sign language$/i.test(u)?"Sign Language":"Unknown"}const E=la(()=>{const u=[],A=new Set;for(const j of Object.values(ee.countries||{}))for(const c of j.neighbors||[]){const P=Number(c.lat),p=Number(c.lng);if(!isFinite(P)||!isFinite(p))continue;const M=(c.code||c.name)+"|"+c.country;A.has(M)||(A.add(M),u.push({id:M,name:c.name,country:c.country,lang:c.lang,pct:c.pct_christian||0,pop:c.pop||0,lat:P,lng:p,family:L(c.lang),base:$(c.lang),full:w(c.lang)}))}return u});function I(u){let A=0,j=0,c=0;for(const P of u||[])Array.isArray(P)&&(A+=P[0],j+=P[1],c++);return c?[A/c,j/c]:null}const G=la(()=>{const u=g.value,A=u==="family"?k.value:u==="dialect"?T.value:x.value,j=[];for(const c of A){if(!c.peopleGroupCount)continue;const P=I(c.coords);if(!P)continue;let p;u==="family"?p={kind:"family",set:new Set([c.label])}:u==="dialect"?p={kind:"full",set:new Set(c.originalLabels||[c.label])}:p={kind:"base",set:new Set([c.label])},j.push({key:c.key||c.label,label:c.label,level:u,count:c.peopleGroupCount,pop:c.population||0,lng:P[0],lat:P[1],color:c.color||ti,match:p})}return j.sort((c,P)=>P.count-c.count),j}),S=la(()=>{const u=[],A=[],j=E.value;for(const c of G.value){const{kind:P,set:p}=c.match;for(const M of j){const N=P==="family"?M.family:P==="full"?M.full:M.base;p.has(N)&&(u.push({...M,coreKey:c.key,color:n(M.pct)}),A.push({coreKey:c.key,from:[M.lng,M.lat],to:[c.lng,c.lat]}))}}return{greens:u,links:A}}),v=la(()=>({cores:G.value.length,unreached:G.value.reduce((u,A)=>u+A.count,0),petals:S.value.greens.length})),K=la(()=>G.value.find(u=>u.key===d.value)||null),{map:O,initializeMap:q,destroy:sa}=Kt({containerRef:r,accessToken:(i==null?void 0:i.value)||t.value.tk||"",style:t.value.style??"mapbox://styles/mapbox/light-v11",center:t.value.center??[55,22],zoom:t.value.zoom??1.7,minZoom:1,maxZoom:12}),ea=u=>({type:"FeatureCollection",features:u});function ga(){return ea(G.value.map(u=>({type:"Feature",geometry:{type:"Point",coordinates:[u.lng,u.lat]},properties:{key:u.key,label:u.label+" ("+u.count+")",count:u.count,color:u.color}})))}function Sa(){return ea(S.value.greens.map(u=>({type:"Feature",geometry:{type:"Point",coordinates:[u.lng,u.lat]},properties:{name:u.name,country:u.country,lang:u.lang,pct:u.pct,color:u.color,coreKey:u.coreKey}})))}function Ma(){return ea(S.value.links.map(u=>({type:"Feature",geometry:{type:"LineString",coordinates:[u.from,u.to]},properties:{coreKey:u.coreKey}})))}function ma(u,A,j){const c=u.getSource(A);c?c.setData(j):u.addSource(A,{type:"geojson",data:j})}function pa(){var A;const u=O.value;!u||!((A=u.isStyleLoaded)!=null&&A.call(u))||(ma(u,Iu,Ma()),ma(u,Mu,Sa()),ma(u,il,ga()),u.getLayer(Ji)||u.addLayer({id:Ji,type:"line",source:Iu,paint:{"line-color":Wi,"line-width":.6,"line-opacity":.12}}),u.getLayer(oo)||u.addLayer({id:oo,type:"circle",source:Mu,paint:{"circle-radius":["interpolate",["linear"],["zoom"],1,1.4,6,3],"circle-color":["get","color"],"circle-stroke-width":.4,"circle-stroke-color":"#fff","circle-opacity":.82}}),u.getLayer(Te)||u.addLayer({id:Te,type:"circle",source:il,paint:{"circle-radius":["interpolate",["linear"],["get","count"],1,8,25,18,120,30],"circle-color":ti,"circle-opacity":.5,"circle-stroke-width":2,"circle-stroke-color":Yi}}),u.getLayer(wu)||u.addLayer({id:wu,type:"symbol",source:il,minzoom:2.2,layout:{"text-field":["get","label"],"text-size":11,"text-offset":[0,1.4],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":Yi,"text-halo-color":"#fff","text-halo-width":1.4}}),Y())}function Y(){const u=O.value;if(!u||!u.getLayer(Ji))return;const A=d.value;u.setPaintProperty(Ji,"line-opacity",A?["case",["==",["get","coreKey"],A],.7,.04]:.12),u.setPaintProperty(Ji,"line-color",A?["case",["==",["get","coreKey"],A],Nf,Wi]:Wi),u.getLayer(oo)&&u.setPaintProperty(oo,"circle-opacity",A?["case",["==",["get","coreKey"],A],.95,.18]:.82),u.getLayer(Te)&&u.setPaintProperty(Te,"circle-opacity",A?["case",["==",["get","key"],A],.9,.4]:.5)}function ta(u){d.value=d.value===u?null:u,Y();const A=K.value,j=O.value;if(A&&j){const c=S.value.links.filter(U=>U.coreKey===A.key).map(U=>U.from).concat([[A.lng,A.lat]]);let P=A.lng,p=A.lng,M=A.lat,N=A.lat;for(const U of c)P=Math.min(P,U[0]),p=Math.max(p,U[0]),M=Math.min(M,U[1]),N=Math.max(N,U[1]);try{j.stop(),j.fitBounds([[P,M],[p,N]],{padding:90,maxZoom:5.5,duration:700})}catch{}}}function aa(u){g.value!==u&&(g.value=u,d.value=null)}cn([g,()=>_.value.length],()=>{l.value&&pa()});async function ba(){const u=t.value.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL);if(!u)throw new Error("No API base configured (apiBase / window.MAP_APP_API_URL / VITE_API_BASE_URL) — failing closed, no default host.");const j=await fetch(u.replace(/\/?$/,"")+"/api/people-groups/list?fields="+"slug,name,latitude,longitude,country_code,primary_language,wagf_block"+"&lang=en",{cache:"no-store"});if(!j.ok)throw new Error("list "+j.status);const c=await j.json();return(c.posts||c.data||c.records||c.results||(Array.isArray(c)?c:[])).map(p=>({...p,id:p.slug}))}Rn(async()=>{var j,c,P,p,M,N;await q();const u=O.value;try{u&&u.setProjection("mercator")}catch{}try{_.value=await ba()}catch(U){s.value="Live API unreachable — "+U.message,l.value=!0;return}if(l.value=!0,t.value.debugExpose&&typeof window<"u")try{(((P=(c=(j=o.value)==null?void 0:j.getRootNode)==null?void 0:c.call(j))==null?void 0:P.host)||window).__flowers={get mode(){return g.value},setMode:aa,get stats(){return v.value},selectCore:ta}}catch{}const A=()=>{pa(),u.on("click",Te,U=>{var C;const h=(C=U.features)==null?void 0:C[0];h&&ta(h.properties.key)}),u.on("mouseenter",Te,()=>{u.getCanvas().style.cursor="pointer"}),u.on("mouseleave",Te,()=>{u.getCanvas().style.cursor=""})};(p=u==null?void 0:u.isStyleLoaded)!=null&&p.call(u)?A():(M=u==null?void 0:u.once)==null||M.call(u,"load",A),(N=u==null?void 0:u.once)==null||N.call(u,"idle",()=>{l.value&&pa()})}),Ue(()=>{sa()}),On(` - .fc-root { position:absolute; inset:0; overflow:hidden; background:#ffffff; color:#1f2937; isolation:isolate; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - .fc-map { position:absolute; inset:0; } - .fc-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:${Wi}; font:13px/1 ui-monospace,monospace; z-index:5; } - /* the 3 MODE CIRCLES at the top */ - .fc-modes { position:absolute; top:12px; left:50%; transform:translateX(-50%); z-index:30; display:flex; gap:14px; align-items:flex-start; } - .fc-mode { display:flex; flex-direction:column; align-items:center; gap:5px; cursor:pointer; background:none; border:0; } - .fc-circle { width:54px; height:54px; border-radius:50%; background:#fff; border:3px solid #d1d5db; display:flex; - align-items:center; justify-content:center; font:800 11px/1 ui-monospace,monospace; color:#9ca3af; box-shadow:0 2px 10px rgba(0,0,0,.12); transition:all .15s; } - .fc-mode.on .fc-circle { border-color:${ti}; color:${Yi}; transform:scale(1.08); box-shadow:0 4px 16px rgba(225,29,72,.3); } - .fc-mode:hover .fc-circle { border-color:${ti}; } - .fc-mode-lbl { font:700 10px/1 ui-monospace,monospace; letter-spacing:.04em; text-transform:uppercase; color:#6b7280; } - .fc-mode.on .fc-mode-lbl { color:${Yi}; } - .fc-mode-sz { font:600 9px/1 ui-monospace,monospace; color:#9ca3af; } - .fc-stats { position:absolute; top:14px; right:12px; z-index:30; background:rgba(255,255,255,.95); border:1px solid #d1d5db; - border-radius:8px; padding:7px 11px; font:600 11px/1.5 ui-monospace,monospace; color:#374151; text-align:right; } - .fc-stats b { color:${Yi}; } - .fc-legend { position:absolute; left:12px; bottom:30px; z-index:25; background:rgba(255,255,255,.95); border:1px solid #d1d5db; - border-radius:10px; padding:9px 12px; max-width:250px; box-shadow:0 4px 14px rgba(0,0,0,.12); font-size:11px; color:#374151; } - .fc-legend h4 { font:700 9px/1 ui-monospace,monospace; letter-spacing:.1em; text-transform:uppercase; color:#6b7280; margin-bottom:6px; } - .fc-lrow { display:flex; align-items:center; gap:8px; padding:2px 0; } - .fc-dot { width:12px; height:12px; border-radius:50%; border:1px solid rgba(0,0,0,.25); flex:0 0 auto; } - .fc-footer { position:absolute; left:0; right:0; bottom:0; z-index:20; background:${Wi}; color:#dbe4f3; - font:10px/1.4 ui-monospace,monospace; padding:5px 12px; display:flex; flex-wrap:wrap; gap:3px 14px; } - .fc-footer b { color:#fff; } -`,"flower-clusters");const na=[{key:"family",label:"Family",sz:"fewer · bigger"},{key:"language",label:"Language",sz:"more"},{key:"dialect",label:"Dialect",sz:"most"}];return(u,A)=>(z(),W("div",{ref_key:"fcRoot",ref:o,class:"fc-root"},[f("div",{ref_key:"mapContainer",ref:r,class:"fc-map"},null,512),l.value?fa("",!0):(z(),W("div",kf,X(s.value),1)),f("div",Gf,[(z(),W(Aa,null,Ua(na,j=>f("button",{key:j.key,class:Ia(["fc-mode",{on:g.value===j.key}]),role:"tab","aria-selected":g.value===j.key,onClick:c=>aa(j.key)},[f("span",Af,X(j.label.slice(0,3).toUpperCase()),1),f("span",Sf,X(j.label),1),f("span",Ef,X(j.sz),1)],10,vf)),64))]),l.value?(z(),W("div",Mf,[f("b",null,X(v.value.cores),1),A[0]||(A[0]=ya(" flowers · ",-1)),f("b",null,X(v.value.unreached.toLocaleString()),1),A[1]||(A[1]=ya(" unreached",-1)),A[2]||(A[2]=f("br",null,null,-1)),f("b",null,X(v.value.petals.toLocaleString()),1),ya(" reached petals · by "+X(g.value),1)])):fa("",!0),l.value?(z(),W("div",If,[A[5]||(A[5]=f("h4",null,"Flower clusters",-1)),f("div",wf,[f("span",{class:"fc-dot",style:Ka({background:ti})},null,4),A[3]||(A[3]=ya(" Unreached language cluster (core, size = #PGs)",-1))]),f("div",xf,[f("span",{class:"fc-dot",style:Ka({background:n(80)})},null,4),A[4]||(A[4]=ya(" Reached neighbor (granular, real coord)",-1))]),A[6]||(A[6]=f("div",{class:"fc-lrow",style:{color:"#6b7280","font-size":"10px","margin-top":"4px"}},"click a top circle to re-cluster · click a core to bloom its petals",-1))])):fa("",!0),l.value?(z(),W("div",Tf,[...A[7]||(A[7]=[f("span",null,[f("b",null,"Flower-clusters"),ya(" red cores (clustered) → granular green reached petals (same language)")],-1),f("span",null,"taxonomy = research-map semantic tree (family→language→dialect)",-1),f("span",null,"unreached = LIVE UPG data · reached = baked PPLR",-1),f("span",null,"Luke 10:2",-1)])])):fa("",!0)],512))}},Rf={class:"dun-bar"},$f={class:"dun-seg",role:"tablist","aria-label":"Choose a view"},Ff=["aria-selected","onClick"],Kf={class:"dun-hint"},Bf={class:"dun-stage"},Of=Object.freeze(Object.defineProperty({__proto__:null,default:{__name:"upg-neighbors",setup(a){const n=Ya("profileConfig"),e=la(()=>(n==null?void 0:n.value)||{}),i=[{key:"cockpit",label:"Overview",hint:"crossfilter hub"},{key:"send-map",label:"Send Map",hint:"reached → unreached arcs"},{key:"flower-mesh",label:"Flower Mesh",hint:"radial bloom"},{key:"lang-cluster",label:"Lang Cluster",hint:"language bounded-sets"},{key:"flowers",label:"Flowers",hint:"family · language · dialect cores + granular petals"}],t=new Set(i.map(g=>g.key)),o=ua("cockpit"),r=ua(null);function l(g){t.has(g)&&(o.value=g)}Rn(()=>{var d,_,k;const g=e.value.view;if(g&&t.has(g)&&(o.value=g),e.value.debugExpose&&typeof window<"u")try{const x=((k=(_=(d=r.value)==null?void 0:d.getRootNode)==null?void 0:_.call(d))==null?void 0:k.host)||window;x.__neighbors={get view(){return o.value},setView:l}}catch{}}),On(` - .dun-root { position:absolute; inset:0; display:flex; flex-direction:column; overflow:hidden; - background:#0e1730; isolation:isolate; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - .dun-bar { flex:0 0 auto; display:flex; align-items:center; gap:10px; padding:7px 12px; - background:#001b44; border-bottom:1px solid #002e6e; z-index:50; } - .dun-brand { font:800 11px/1 ui-monospace,monospace; letter-spacing:.06em; text-transform:uppercase; - color:#fff; background:rgba(255,255,255,.1); padding:6px 10px; border-radius:7px; white-space:nowrap; } - .dun-seg { display:inline-flex; background:#0e1730; border:1px solid #284a86; border-radius:999px; - padding:3px; gap:2px; flex-wrap:wrap; } - .dun-seg button { border:0; background:transparent; color:#9fb3d9; cursor:pointer; - font:700 11px/1 ui-monospace,monospace; padding:6px 12px; border-radius:999px; } - .dun-seg button.on { background:#002e6e; color:#fff; } - .dun-seg button:hover:not(.on) { color:#dbe4f3; } - .dun-hint { margin-left:auto; font:600 10px/1.3 ui-monospace,monospace; color:#7e90b6; white-space:nowrap; } - .dun-stage { flex:1 1 0; position:relative; min-height:0; background:#fff; } - /* each child view root is position:absolute;inset:0 → fills the stage */ - @media (max-width:640px){ .dun-hint{ display:none; } .dun-brand{ display:none; } } -`,"upg-neighbors");const s=la(()=>{var g;return((g=i.find(d=>d.key===o.value))==null?void 0:g.hint)||""});return(g,d)=>(z(),W("div",{ref_key:"rootEl",ref:r,class:"dun-root"},[f("div",Rf,[d[0]||(d[0]=f("span",{class:"dun-brand"},"My UPG Neighbors",-1)),f("div",$f,[(z(),W(Aa,null,Ua(i,_=>f("button",{key:_.key,role:"tab","aria-selected":o.value===_.key,class:Ia({on:o.value===_.key}),onClick:k=>l(_.key)},X(_.label),11,Ff)),64))]),f("span",Kf,X(s.value),1)]),f("div",Bf,[o.value==="cockpit"?(z(),Me(wg,{key:0})):o.value==="send-map"?(z(),Me(Yg,{key:1})):o.value==="flower-mesh"?(z(),Me(Ng,{key:2})):o.value==="lang-cluster"?(z(),Me(Kg,{key:3})):o.value==="flowers"?(z(),Me(Lf,{key:4})):fa("",!0)])],512))}}},Symbol.toStringTag,{value:"Module"}))})(); diff --git a/internal/generate-tree.mjs b/internal/generate-tree.mjs index 03ce1a3a5..e0d947a3f 100644 --- a/internal/generate-tree.mjs +++ b/internal/generate-tree.mjs @@ -1400,11 +1400,6 @@ function main() { // vendor — DataTable/TabulatorTable inject Tabulator from assetsBase at runtime. 'vendor/tabulator/tabulator.min.js', 'vendor/tabulator/tabulator.min.css', - // legacy sandbox — fetched by the upg-neighbor wrapper's iframe at runtime. - 'legacy/upg-neighbor/index.html', - 'legacy/upg-neighbor/upg-neighbor.iife.js', - 'legacy/upg-neighbor/maplibre-gl.js', - 'legacy/upg-neighbor/maplibre-gl.css', // vendor/vue — the GALLERY SHELL's own Vue (generate-gallery.mjs loadVue()), not a bundle's. // // ★ ADDED 2026-09-22, and it had never been staged. generate-gallery.mjs:542 requests diff --git a/plugin-designs/upg-neighbor/index.html b/plugin-designs/upg-neighbor/index.html index f141d2fa3..c3081f3cb 100644 --- a/plugin-designs/upg-neighbor/index.html +++ b/plugin-designs/upg-neighbor/index.html @@ -5,6 +5,8 @@ upg-neighbor (dev) + + - + + diff --git a/plugin-designs/upg-neighbor/index.js b/plugin-designs/upg-neighbor/index.js index 6d23b6bf0..675e45907 100644 --- a/plugin-designs/upg-neighbor/index.js +++ b/plugin-designs/upg-neighbor/index.js @@ -1,6 +1,35 @@ +/** + * upg-neighbor / index.js — bundle entry (emits upg-neighbor.js), defines . + * + * The standard ProfileLoader shape (see doxa-simple-map/index.js): the glob captures this + * folder's one profile, upg-neighbor.vue; its lenses live in src/. The five preset renders + * are rows of upg-neighbor.instances.json, each opening a different lens via `view`. + * + * Mapbox RTL text plugin: registered ONCE at module init — several SEND targets (Urdu/Arabic) are RTL. + */ import { defineCustomElement } from 'vue' -import UpgNeighbor from './upg-neighbor.vue' +import { createPinia } from 'pinia' +import ProfileLoader from '@map/ProfileLoader.vue' +import { createAppI18n } from '@map/i18n/index.js' -// One tag, three preset instances (see upg-neighbor.instances.json) — the standard cap-2 shape. -const El = defineCustomElement(UpgNeighbor) -if (!customElements.get('upg-neighbor')) customElements.define('upg-neighbor', El) +const profileModules = import.meta.glob('./*.vue') + +if (typeof window !== 'undefined' && window.mapboxgl?.setRTLTextPlugin) { + try { + window.mapboxgl.setRTLTextPlugin( + 'https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.3.0/mapbox-gl-rtl-text.js', + null, true + ) + } catch (_) { /* already set this session */ } +} + +const El = defineCustomElement(ProfileLoader, { + configureApp(app) { + app.use(createPinia()) + const i18n = createAppI18n() + app.use(i18n) + app.provide('appI18n', i18n) + app.provide('profileModules', profileModules) + } +}) +if (typeof customElements !== 'undefined' && !customElements.get('upg-neighbor')) customElements.define('upg-neighbor', El) diff --git a/plugin-designs/upg-neighbor/src/bloom-cockpit.vue b/plugin-designs/upg-neighbor/src/bloom-cockpit.vue new file mode 100644 index 000000000..fa28982d5 --- /dev/null +++ b/plugin-designs/upg-neighbor/src/bloom-cockpit.vue @@ -0,0 +1,195 @@ + + + diff --git a/plugin-designs/upg-neighbor/src/cockpit/ChartStrip.vue b/plugin-designs/upg-neighbor/src/cockpit/ChartStrip.vue new file mode 100644 index 000000000..61e4a277e --- /dev/null +++ b/plugin-designs/upg-neighbor/src/cockpit/ChartStrip.vue @@ -0,0 +1,356 @@ + + + diff --git a/plugin-designs/upg-neighbor/src/cockpit/FlowerCell.vue b/plugin-designs/upg-neighbor/src/cockpit/FlowerCell.vue new file mode 100644 index 000000000..2c14f36e2 --- /dev/null +++ b/plugin-designs/upg-neighbor/src/cockpit/FlowerCell.vue @@ -0,0 +1,408 @@ + + + diff --git a/plugin-designs/upg-neighbor/src/cockpit/FlowerClusters.vue b/plugin-designs/upg-neighbor/src/cockpit/FlowerClusters.vue new file mode 100644 index 000000000..4fc980255 --- /dev/null +++ b/plugin-designs/upg-neighbor/src/cockpit/FlowerClusters.vue @@ -0,0 +1,363 @@ + + + diff --git a/plugin-designs/upg-neighbor/src/cockpit/ListCell.vue b/plugin-designs/upg-neighbor/src/cockpit/ListCell.vue new file mode 100644 index 000000000..f7d2b7838 --- /dev/null +++ b/plugin-designs/upg-neighbor/src/cockpit/ListCell.vue @@ -0,0 +1,400 @@ + + + diff --git a/plugin-designs/upg-neighbor/src/cockpit/MapCell.vue b/plugin-designs/upg-neighbor/src/cockpit/MapCell.vue new file mode 100644 index 000000000..6434bbd66 --- /dev/null +++ b/plugin-designs/upg-neighbor/src/cockpit/MapCell.vue @@ -0,0 +1,481 @@ + + + diff --git a/plugin-designs/upg-neighbor/src/cockpit/useCockpit.js b/plugin-designs/upg-neighbor/src/cockpit/useCockpit.js new file mode 100644 index 000000000..23a964c95 --- /dev/null +++ b/plugin-designs/upg-neighbor/src/cockpit/useCockpit.js @@ -0,0 +1,568 @@ +/** + * useCockpit.js — the SHARED crossfilter store for the "BloomField Cockpit". + * + * ONE reactive store is the single source of truth binding the four cockpit cells + * (MAP + FLOWER + LIST + CHART STRIP). Every cell INJECTs the same instance, so a + * facet click in the chart strip, a red tap on the map, a search in the header and a + * sort in the list all breathe together (cockpit / crossfilter pattern). + * + * 0-DEPENDENCY: imports ONLY from 'vue'. The baked data (senders + admin1) is + * STATIC-imported so it ships INSIDE the bundle (a runtime ./data fetch 404s in the + * real platform gem-frame — the PPLR-1 lesson). The live unreached "reds" are fetched + * from pray.doxa.life in loadData(). + * + * USAGE + * // shell (cockpit.vue): + * import { createCockpitStore } from './cockpit/useCockpit.js' + * const store = createCockpitStore() + * provide('cockpitStore', store) + * onMounted(() => store.loadData(profileConfig?.value)) + * + * // any cell: + * import { useCockpitStore } from './useCockpit.js' + * const store = useCockpitStore() + * // store.clusters.value, store.visibleSenders.value, store.selectTarget(id), … + * + * Every store member that is a ref/computed is consumed with `.value`. Actions are + * plain functions. Deterministic — NO Date.now()/Math.random() inside any computed + * (the one timestamp, loadedAt, is captured in the loadData ACTION). + * + * Full field-by-field contract: ./STORE-API.md + */ + +import { ref, computed, inject } from 'vue' + +// ───────────────────────────────────────────────────────────────────────────── +// LOCKED COLOR CONTRACT (shared by all four cells — import from here, never re-hardcode) +// ───────────────────────────────────────────────────────────────────────────── +export const COLORS = { + RED: '#e11d48', // unreached target (base) + RED_DK: '#9f1239', + NAVY: '#002e6e', // SEND arcs / chrome + GOLD: '#f59e0b', // selection highlight + WHITE: '#ffffff', + // GREEN = 5 QUANTILE bins on pct_christian (2-10 / 10-25 / 25-50 / 50-75 / 75-100) + GREEN_BINS: ['#9bcf9b', '#5cb874', '#1f9d55', '#0f7a3d', '#0a5c2e'], + // RED orange-red ramp — deeper = MORE unreached (target_upg buckets) + RED_RAMP: ['#fdba74', '#fb923c', '#f97316', '#ea580c', '#c2410c'], + // donut categorical (used when a chart must color bridge/religion categories) + CAT: ['#002e6e', '#1f9d55', '#f59e0b', '#e11d48', '#7c3aed', '#0891b2', '#65a30d', '#be123c', '#a16207'] +} + +export const GREEN_BIN_LABELS = ['2–10%', '10–25%', '25–50%', '50–75%', '75–100%'] + +// ───────────────────────────────────────────────────────────────────────────── +// PURE HELPERS (exported so every cell bins/colors/sizes IDENTICALLY) +// ───────────────────────────────────────────────────────────────────────────── + +/** 5-bin quantile index for a %Christian value → 0..4 (matches GREEN_BINS / GREEN_BIN_LABELS). */ +export function quantileBin(pct) { + const p = +pct || 0 + if (p < 10) return 0 + if (p < 25) return 1 + if (p < 50) return 2 + if (p < 75) return 3 + return 4 +} + +/** Green color for a reached sender's %Christian (locked quantile ramp). */ +export function reachedColor(pct) { return COLORS.GREEN_BINS[quantileBin(pct)] } + +/** Orange-red color for a red cluster by its unreached count (deeper = more unreached). */ +export function redColor(count) { + const c = +count || 0 + if (c >= 80) return COLORS.RED_RAMP[4] + if (c >= 40) return COLORS.RED_RAMP[3] + if (c >= 15) return COLORS.RED_RAMP[2] + if (c >= 5) return COLORS.RED_RAMP[1] + return COLORS.RED_RAMP[0] +} + +/** LOG-scaled radius for a population (px). 30 → ~4px, 901M → ~22px. Shared map+flower. */ +export function logRadius(pop, min = 4, max = 22) { + const p = Math.max(1, +pop || 0) + const t = Math.min(1, Math.log10(p) / 9) // log10(1e9) = 9 → full scale at ~1B + return min + (max - min) * t +} + +/** Bridge type → LINE STYLE (color is NEVER used for bridge — line style only). */ +export function bridgeDash(bridge) { + if (bridge === 'same-language') return null // solid + if (bridge === 'related-cluster') return [4, 3] // dashed + return [1, 3] // dotted (same-country / other) +} + +/** Religion background → coarse family (text before " - "). */ +export function religionFamily(s) { + const v = String(s || '').trim() + if (!v) return 'Unknown' + return v.split(' - ')[0].trim() || 'Unknown' +} + +/** Human population formatter (30 / 12K / 2.1M / 1.3B). */ +export function fmtPop(n) { + const v = +n || 0 + if (v >= 1e9) return (v / 1e9).toFixed(1) + 'B' + if (v >= 1e6) return (v / 1e6).toFixed(1) + 'M' + if (v >= 1e3) return Math.round(v / 1e3) + 'K' + return String(Math.round(v)) +} + +const norm = (s) => String(s || '').trim().toLowerCase() +const lbl = (f) => (f && typeof f === 'object') ? (f.label ?? f.value ?? '') : (f ?? '') +const val = (f) => (f && typeof f === 'object') ? (f.value ?? f.label ?? '') : (f ?? '') + +// Live doxa country labels → baked-JSON country strings (so reds line up with senders). +const COUNTRY_DISPLAY = { + "People's Republic of China": 'China', + 'Lao People’s Democratic Republic': 'Laos', + "Lao People's Democratic Republic": 'Laos' +} +const normCountry = (s) => COUNTRY_DISPLAY[s] || s + +// ───────────────────────────────────────────────────────────────────────────── +// STATIC baked data (ships inside the bundle — no runtime ./data fetch) +// ───────────────────────────────────────────────────────────────────────────── +import bakedSenders from '../data/reached-neighbors.json' +import bakedAdmin1 from '../data/admin1-membership.json' + +// ───────────────────────────────────────────────────────────────────────────── +// THE FACTORY +// ───────────────────────────────────────────────────────────────────────────── +export function createCockpitStore() { + // ── primitive state ─────────────────────────────────────────────────────── + const focusedTargetId = ref(null) // cluster id (== target country) | null + const facets = ref({ + languages: new Set(), // sender/target language labels + countries: new Set(), // sender/target country labels + religions: new Set(), // religion family labels + bridges: new Set(), // bridge type values + reachedMin: null // number | null (pct_christian floor) + }) + const search = ref('') + const colorBy = ref('pct') // 'pct' | 'religion' + const languageLens = ref(null) // string | null (a bridge language) + const provinceDrill = ref(false) // IN/CN admin1 choropleth toggle + const mode = ref('map') // 'map' | 'flower' (the morph) + const sortKey = ref('mobilization') // see listRows + // shared HOVER bus for the two-way map ↔ list ↔ flower link (interaction #3): + // a sender id (or '__pool__') that is currently hovered in ANY cell. Each cell + // writes it via setHover(id) and reacts to it for a synchronized pulse/scroll. + const hoveredId = ref(null) // Sender.id | '__pool__' | null + + // ── load lifecycle ──────────────────────────────────────────────────────── + const ready = ref(false) + const loadError = ref('') + const loadedAt = ref('') // ISO string captured in the ACTION + + // raw caches (filled by loadData) + const allClusters = ref([]) // [Cluster] (red, unfiltered) + const allSenders = ref([]) // [Sender] (flat, unfiltered) + const admin1 = ref(bakedAdmin1 || {}) // { pg-slug : "Province" } + const meta = ref(bakedSenders?.meta || {}) + + // ── DATA LOAD (async action) ────────────────────────────────────────────── + async function loadData(profileConfig) { + const cfg = profileConfig || {} + loadError.value = '' + // 1) baked senders → flat list (real lat/lng on every row) + allSenders.value = buildSenders(bakedSenders) + // index senderCount + meta per target country + const counts = senderCountsByCountry(allSenders.value) + // 2) live unreached reds → clusters grouped by country + let reds = [] + try { reds = await fetchReds(cfg) } + catch (e) { + loadError.value = 'Live unreached API unreachable — ' + (e?.message || e) + // still usable: build clusters from the baked target meta so the cockpit renders + allClusters.value = clustersFromBaked(bakedSenders, counts) + loadedAt.value = new Date().toISOString() + ready.value = true + return + } + allClusters.value = buildClusters(reds, counts) + loadedAt.value = new Date().toISOString() + ready.value = true + } + + // ── DERIVED: clusters after facets + search + language lens ──────────────── + const clusters = computed(() => { + let list = allClusters.value + const f = facets.value + if (f.countries.size) list = list.filter(c => f.countries.has(c.country)) + if (f.languages.size) list = list.filter(c => c.langs.some(l => f.languages.has(l))) + const q = norm(search.value) + if (q) list = list.filter(c => norm(c.label).includes(q) || norm(c.country).includes(q) || + c.langs.some(l => norm(l).includes(q))) + if (languageLens.value) { + const lens = norm(languageLens.value) + const reachable = sendersForLens(lens) + list = list.filter(c => reachable.has(c.id)) + } + // default ordering = mobilization readiness (senderCount desc × unreached pop desc) + return [...list].sort((a, b) => + (b.senderCount - a.senderCount) || (b.target_pop - a.target_pop) || (b.count - a.count)) + }) + + const focusedTarget = computed(() => + focusedTargetId.value ? allClusters.value.find(c => c.id === focusedTargetId.value) || null : null) + + // senders for the focused target, BEFORE facets (for the honest "hidden" count) + const sendersForFocus = computed(() => + focusedTargetId.value ? allSenders.value.filter(s => s.targetId === focusedTargetId.value) : []) + + // ── DERIVED: visible senders (focused target, matching facets + search) ──── + const visibleSenders = computed(() => { + let list = sendersForFocus.value + const f = facets.value + if (f.languages.size) list = list.filter(s => f.languages.has(s.lang)) + if (f.countries.size) list = list.filter(s => f.countries.has(s.country)) + if (f.religions.size) list = list.filter(s => f.religions.has(s.religionFamily)) + if (f.bridges.size) list = list.filter(s => f.bridges.has(s.bridge)) + if (f.reachedMin != null) list = list.filter(s => s.pct >= f.reachedMin) + const q = norm(search.value) + if (q) list = list.filter(s => norm(s.name).includes(q) || norm(s.lang).includes(q) || + norm(s.country).includes(q)) + return list + }) + + // ── DERIVED: map nodes — GRANULAR per-PG pins (UPGN-MERGE / Driver) ───────── + // Every reached people-group is its OWN pin at its ACTUAL per-PG lat/lng from + // PPLR (the data carries real Lat/Long for all senders — incl. same-country, + // which are NOT co-located: e.g. India's 150 senders spread across real states). + // No more in-country pool node, no centroids — the "granular actual people-group + // xy coordinates from PPLR for the actual reached people" the Driver asked for. + // (The earlier pool existed only because the OLD data smeared same-country senders + // onto one centroid; the PPLR-2 data fixed that, so granular is now correct.) + const mapNodes = computed(() => + visibleSenders.value + .filter(s => isFinite(s.lat) && isFinite(s.lng)) + .map(s => ({ ...s, isPool: false }))) + + // ── DERIVED: honest counters ─────────────────────────────────────────────── + const counts = computed(() => { + const cl = clusters.value.length + if (focusedTargetId.value) { + const total = sendersForFocus.value.length + const vis = visibleSenders.value.length + return { senders: vis, clusters: cl, hidden: Math.max(0, total - vis) } + } + const senders = clusters.value.reduce((s, c) => s + c.senderCount, 0) + return { senders, clusters: cl, hidden: 0 } + }) + + // ── DERIVED: headline string ─────────────────────────────────────────────── + const headline = computed(() => { + const c = focusedTarget.value + if (!c) { + return counts.value.clusters + ' unreached clusters · ' + + counts.value.senders.toLocaleString() + ' reached senders nearby — pick a red to send' + } + const vis = visibleSenders.value + const lensWord = languageLens.value || [...facets.value.languages][0] || '' + const top = [...vis].sort((a, b) => (b.pct - a.pct) || (b.pop - a.pop))[0] + const pre = (lensWord ? lensWord + ' × ' : '') + c.country + const topStr = top ? ' · top ' + top.name + ' ' + Math.round(top.pct) + '%, ' + fmtPop(top.pop) : '' + return pre + ': ' + c.count + ' unreached · ' + vis.length + + (lensWord ? ' nearby ' + lensWord + ' senders' : ' nearby senders') + topStr + }) + + // ── DERIVED: list rows (sorted senders of the focused target) ────────────── + const listRows = computed(() => { + const rows = [...visibleSenders.value] + const bridgeRank = { 'same-language': 0, 'related-cluster': 1, 'same-country': 2 } + switch (sortKey.value) { + case 'pct': rows.sort((a, b) => b.pct - a.pct || b.pop - a.pop); break + case 'pop': rows.sort((a, b) => b.pop - a.pop || b.pct - a.pct); break + case 'name': rows.sort((a, b) => a.name.localeCompare(b.name)); break + case 'bridge': rows.sort((a, b) => + (bridgeRank[a.bridge] ?? 9) - (bridgeRank[b.bridge] ?? 9) || b.pct - a.pct); break + case 'frontier': // fewest-senders × largest-pop → big reached pops, weakest first + rows.sort((a, b) => b.pop - a.pop || a.pct - b.pct); break + case 'mobilization': // DEFAULT: readiness = strongest × largest + default: rows.sort((a, b) => b.pct - a.pct || b.pop - a.pop); break + } + return rows + }) + + // ── DERIVED: chart data (4 zero-dep SVG charts; computed from visibleSenders) ─ + const chartData = computed(() => { + const base = focusedTargetId.value ? visibleSenders.value + : allSenders.value.filter(s => clusterIds().has(s.targetId)) + return { + languageBar: topBars(base, s => s.lang, 12), + countryBar: topBars(base, s => s.country, 12), + reachedHist: GREEN_BIN_LABELS.map((label, i) => ({ + key: i, label, value: base.filter(s => s.bin === i).length, color: COLORS.GREEN_BINS[i] + })), + donut: colorBy.value === 'religion' + ? donutBy(base, s => s.religionFamily) + : donutBy(base, s => s.bridge) + } + }) + + // ── DERIVED: provenance (for the header pill — honesty contract) ─────────── + const provenance = computed(() => ({ + liveTargets: allClusters.value.length, + liveUnreached: allClusters.value.reduce((s, c) => s + c.count, 0), + loadedAt: loadedAt.value, + bakedGenerated: meta.value?.generated || '', + bakedSenders: meta.value?.total_neighbors || allSenders.value.length, + reachedFilter: meta.value?.reached_filter || '', + admin1Level: 'IN/CN admin1 (point-in-polygon, ' + Object.keys(admin1.value).length + ' groups)', + apiError: loadError.value + })) + + // ── DERIVED: active filter chips (header breadcrumb; each removable) ──────── + const chips = computed(() => { + const out = [] + const f = facets.value + if (focusedTargetId.value && focusedTarget.value) + out.push({ kind: 'focus', value: focusedTarget.value.country, label: focusedTarget.value.country }) + for (const v of f.languages) out.push({ kind: 'languages', value: v, label: v }) + for (const v of f.countries) out.push({ kind: 'countries', value: v, label: v }) + for (const v of f.religions) out.push({ kind: 'religions', value: v, label: v }) + for (const v of f.bridges) out.push({ kind: 'bridges', value: v, label: v }) + if (f.reachedMin != null) out.push({ kind: 'reachedMin', value: f.reachedMin, label: 'reached% ≥ ' + f.reachedMin }) + if (languageLens.value) out.push({ kind: 'lens', value: languageLens.value, label: 'lens: ' + languageLens.value }) + return out + }) + + // ─────────────────────────────────────────────────────────────────────────── + // ACTIONS + // ─────────────────────────────────────────────────────────────────────────── + function selectTarget(id) { focusedTargetId.value = id } + function clearFocus() { focusedTargetId.value = null } + + function toggleFacet(kind, value) { + const set = facets.value[kind] + if (!(set instanceof Set)) return + if (set.has(value)) set.delete(value); else set.add(value) + facets.value = { ...facets.value } // trigger reactivity (Set mutation) + } + function setReachedMin(n) { + facets.value = { ...facets.value, reachedMin: (n == null || n === '' ? null : +n) } + } + function setSearch(s) { search.value = String(s ?? '') } + function setColorBy(v) { colorBy.value = (v === 'religion') ? 'religion' : 'pct' } + function setLanguageLens(l) { languageLens.value = l || null } + function toggleProvince() { provinceDrill.value = !provinceDrill.value } + function setMode(m) { mode.value = (m === 'flower') ? 'flower' : 'map' } + function setSort(key) { sortKey.value = key || 'mobilization' } + /** Shared hover bus — set/clear the currently-hovered sender id (two-way link). */ + function setHover(id) { hoveredId.value = id || null } + + /** Remove a single chip (from the header breadcrumb). */ + function removeChip(chip) { + if (!chip) return + if (chip.kind === 'focus') return clearFocus() + if (chip.kind === 'reachedMin') return setReachedMin(null) + if (chip.kind === 'lens') return setLanguageLens(null) + return toggleFacet(chip.kind, chip.value) + } + function clearAllFacets() { + facets.value = { languages: new Set(), countries: new Set(), religions: new Set(), + bridges: new Set(), reachedMin: null } + languageLens.value = null + search.value = '' + } + + /** + * Export the given rows (defaults to listRows) to a CSV download via a native Blob. + * CSV-injection-safe: any cell beginning with = + - @ is prefixed with a single quote, + * and every field is double-quote escaped. First line = a provenance comment. + */ + function exportSelectionCSV(rows) { + const data = Array.isArray(rows) ? rows : listRows.value + const cols = ['name', 'country', 'lang', 'rol3', 'pct', 'pop', 'bridge', 'adjacency', 'religion_bg'] + const safe = (v) => { + let s = String(v ?? '') + if (/^[=+\-@]/.test(s)) s = "'" + s // neutralize formula injection + return '"' + s.replace(/"/g, '""') + '"' + } + const prov = '# BloomField Cockpit — reached neighbors for ' + + (focusedTarget.value?.country || 'all targets') + + ' · baked ' + (meta.value?.generated || '') + + ' · ' + data.length + ' rows · ' + (loadedAt.value || '') + const header = cols.join(',') + const body = data.map(r => cols.map(c => safe(r[c])).join(',')).join('\n') + const csv = prov + '\n' + header + '\n' + body + '\n' + try { + const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }) + const url = URL.createObjectURL(blob) + const a = document.createElement('a') + a.href = url + a.download = 'send-list-' + (focusedTarget.value?.country || 'all').replace(/\W+/g, '-').toLowerCase() + '.csv' + document.body.appendChild(a); a.click(); a.remove() + setTimeout(() => URL.revokeObjectURL(url), 1000) + } catch (_) { /* download blocked (sandbox) — silent */ } + return csv + } + + // ── internal helpers (closure over caches) ───────────────────────────────── + function clusterIds() { return new Set(clusters.value.map(c => c.id)) } + // map: target country -> Set of cluster ids that have a sender of the lens language + function sendersForLens(lensLk) { + const ids = new Set() + for (const s of allSenders.value) if (norm(s.lang) === lensLk) ids.add(s.targetId) + return ids + } + + // expose + return { + // primitive state + focusedTargetId, facets, search, colorBy, languageLens, provinceDrill, mode, sortKey, + // shared hover bus (exposed under BOTH names the cells consume — same ref) + hoveredId, hoveredSenderId: hoveredId, + // lifecycle + ready, loadError, loadedAt, meta, admin1, + // raw caches (read-only by convention) + allClusters, allSenders, + // derived + clusters, focusedTarget, sendersForFocus, visibleSenders, mapNodes, + counts, headline, listRows, chartData, provenance, chips, + // actions + loadData, selectTarget, clearFocus, toggleFacet, setReachedMin, setSearch, + setColorBy, setLanguageLens, toggleProvince, setMode, setSort, setHover, removeChip, + clearAllFacets, exportSelectionCSV, + // helpers re-exported on the instance for convenience + quantileBin, reachedColor, redColor, logRadius, bridgeDash, religionFamily, fmtPop, COLORS + } +} + +/** Inject the shared store provided by cockpit.vue. */ +export function useCockpitStore() { + const store = inject('cockpitStore', null) + if (!store) throw new Error('[useCockpitStore] no cockpitStore provided — mount inside ') + return store +} + +// ───────────────────────────────────────────────────────────────────────────── +// BUILDERS (pure module functions — no Vue, fully testable) +// ───────────────────────────────────────────────────────────────────────────── + +/** Flatten reached-neighbors.json into [Sender] with targetId + quantile bin + religion family. */ +function buildSenders(json) { + const out = [] + const countries = json?.countries || {} + for (const [targetId, t] of Object.entries(countries)) { + for (const n of (t.neighbors || [])) { + const lat = Number(n.lat), lng = Number(n.lng) + if (!isFinite(lat) || !isFinite(lng)) continue + const pct = +n.pct_christian || 0 + out.push({ + id: n.code || (targetId + '|' + n.name + '|' + n.country + '|' + (n.rol3 || '')), + targetId, + name: n.name, country: n.country, lang: n.lang, rol3: n.rol3 || '', + pct, pop: +n.pop || 0, + bridge: n.bridge || '', adjacency: n.adjacency || '', + religion_bg: n.religion_bg || '', religionFamily: religionFamily(n.religion_bg), + lat, lng, code: n.code || '', + bin: quantileBin(pct), color: reachedColor(pct) + }) + } + } + return out +} + +/** target country -> { count, pop } sender aggregate. */ +function senderCountsByCountry(senders) { + const m = new Map() + for (const s of senders) { + let e = m.get(s.targetId) + if (!e) { e = { count: 0, pop: 0 }; m.set(s.targetId, e) } + e.count++; e.pop += s.pop + } + return m +} + +/** Build red clusters from LIVE doxa people-groups, grouped by country. */ +function buildClusters(reds, senderCounts) { + const m = new Map() + for (const r of reds) { + const lat = Number(r.latitude), lng = Number(r.longitude) + const country = normCountry(lbl(r.country_code) || '(unknown)') + const lang = lbl(r.primary_language) || '' + const slug = r.slug || val(r.primary_language) + ':' + r.name + let c = m.get(country) + if (!c) { + c = { id: country, country, label: country, count: 0, target_pop: 0, + _sumLat: 0, _sumLng: 0, _n: 0, langSet: new Set(), members: [] } + m.set(country, c) + } + c.count++ + if (lang) c.langSet.add(lang) + c.members.push({ name: r.name, slug, lang, lat, lng }) + if (isFinite(lat) && isFinite(lng)) { c._sumLat += lat; c._sumLng += lng; c._n++ } + } + return finalizeClusters([...m.values()], senderCounts) +} + +/** Fallback: build clusters straight from the baked target meta (live API down). */ +function clustersFromBaked(json, senderCounts) { + const out = [] + for (const [country, t] of Object.entries(json?.countries || {})) { + const sc = senderCounts.get(country) + out.push({ + id: country, country, label: country, + count: +t.target_upg || 0, target_pop: +t.target_pop || 0, + lat: null, lng: null, langs: t.target_top_langs || [], + target_top_langs: t.target_top_langs || [], target_top_religion: t.target_top_religion || '', + senderCount: sc ? sc.count : 0, hasSenders: !!sc, color: redColor(+t.target_upg || 0) + }) + } + return out +} + +function finalizeClusters(list, senderCounts) { + const out = [] + for (const c of list) { + if (c._n) { c.lat = c._sumLat / c._n; c.lng = c._sumLng / c._n } + else { c.lat = null; c.lng = null } + const sc = senderCounts.get(c.id) + out.push({ + id: c.id, country: c.country, label: c.label, + count: c.count, target_pop: c.target_pop, lat: c.lat, lng: c.lng, + langs: [...c.langSet], + target_top_langs: [...c.langSet].slice(0, 4), + target_top_religion: '', + members: c.members, + senderCount: sc ? sc.count : 0, + hasSenders: !!sc, + color: redColor(c.count) + }) + } + out.sort((a, b) => b.count - a.count) + return out +} + +/** Fetch the live unreached "reds" from pray.doxa.life. */ +async function fetchReds(cfg) { + const base = cfg.apiBase + || (typeof window !== 'undefined' && (window.MAP_APP_API_URL || window.VITE_API_BASE_URL)) + || 'https://pray.doxa.life' + const fields = 'slug,name,latitude,longitude,country_code,primary_language,wagf_block' + const url = base.replace(/\/?$/, '') + '/api/people-groups/list?fields=' + fields + '&lang=en' + const r = await fetch(url, { cache: 'no-store' }) + if (!r.ok) throw new Error('doxa list ' + r.status) + const j = await r.json() + return j.posts || j.data || j.records || j.results || j.items || (Array.isArray(j) ? j : []) +} + +/** Top-N category bars [{ key, label, value }] sorted desc, by an accessor. */ +function topBars(rows, keyOf, n) { + const m = new Map() + for (const r of rows) { const k = keyOf(r) || '—'; m.set(k, (m.get(k) || 0) + 1) } + return [...m.entries()].map(([label, value]) => ({ key: label, label, value })) + .sort((a, b) => b.value - a.value).slice(0, n) +} + +/** Donut slices [{ key, label, value, color }] by an accessor, categorical palette. */ +function donutBy(rows, keyOf) { + const m = new Map() + for (const r of rows) { const k = keyOf(r) || '—'; m.set(k, (m.get(k) || 0) + 1) } + const sorted = [...m.entries()].sort((a, b) => b[1] - a[1]) + return sorted.map(([label, value], i) => ({ + key: label, label, value, color: COLORS.CAT[i % COLORS.CAT.length] + })) +} diff --git a/plugin-designs/upg-neighbor/src/data/admin1-membership.json b/plugin-designs/upg-neighbor/src/data/admin1-membership.json new file mode 100644 index 000000000..2aedc6dc3 --- /dev/null +++ b/plugin-designs/upg-neighbor/src/data/admin1-membership.json @@ -0,0 +1 @@ +{"a-ou":"Guizhou Province","accukattavandlu":"Andhra Pradesh","adi":"Tibet Autonomous Region","adiyan":"Karnātaka","agaria":"Gujarāt","agasa":"Karnātaka","agri":"Gujarāt","aguru":"Andhra Pradesh","ahmadiya":"Uttar Pradesh","ai-cham":"Guizhou Province","ainu-china":"Xinjiang Uyghur Autonomous Region","aiton":"Assam","aiyarakulu":"Andhra Pradesh","akeu":"Yunnan Province","alavan":"Tamil Nādu","aling":"Yunnan Province","allar":"Kerala","alu":"Yunnan Province","alxa-mongols":"Inner Mongolia Autonomous Region","ambalavasi":"Kerala","andamanese":"Andaman and Nicobar Islands","andhra-vaisnawa":"Andhra Pradesh","angarok":"West Bengal","angku":"Yunnan Province","ani":"Yunnan Province","anjana":"Madhya Pradesh","anjana-patel-gujarati":"Gujarāt","ansari-momin-bengali":"West Bengal","ansari-momin-kannada":"Karnātaka","ansari-momin-tamil":"Tamil Nādu","ansari-momin-telugu":"Andhra Pradesh","anthur-nair":"Kerala","anuppan":"Tamil Nādu","anwal":"Uttarākhand","aoka":"Hunan Province","apu":"Yunnan Province","arain-dogri":"Jammu and Kashmīr","arain-kannauji":"Uttar Pradesh","arain-punjabi":"Haryāna","arakala":"Andhra Pradesh","aranadan":"Tamil Nādu","arasu":"Karnātaka","arayavati":"Kerala","are-bondili":"Andhra Pradesh","are-kapu":"Telangāna","are-katika":"Andhra Pradesh","atollu":"Andhra Pradesh","attagara":"Telangāna","attar-saibulu":"Mahārāshtra","ayri":"Karnātaka","ayyanavar":"Kerala","badhai-chhattisgarhi":"Chhattīsgarh","badhik":"Uttar Pradesh","badi":"Uttar Pradesh","badi-marwari":"Rājasthān","bafan":"Gujarāt","bagga":"Karnātaka","bagti":"West Bengal","baha-i":"Odisha","baharupi":"Mahārāshtra","baida":"West Bengal","baig":"Tamil Nādu","baira":"Karnātaka","bairagi-chhattisgarhi":"Chhattīsgarh","bairagi-gujarati":"Gujarāt","bairagi-odia":"Odisha","baisya":"West Bengal","bajandar":"Tripura","bakuda":"Kerala","balahar":"Uttar Pradesh","balasantoshi":"Karnātaka","baloch":"Gujarāt","bamcha":"Gujarāt","banai":"Meghālaya","banchada":"Madhya Pradesh","bandi":"Karnātaka","bandollu":"Andhra Pradesh","bangti":"Odisha","bania-agarwal-telegu":"Andhra Pradesh","bania-dogri":"Jammu and Kashmīr","bania-kannada":"Karnātaka","bania-kashmiri":"Ladākh","bania-konkani":"Goa","bania-malayalam":"Kerala","banik-bania":"Tripura","banjania":"Gujarāt","banka":"Odisha","banpar":"Bihār","baonuo":"Guangxi Zhuang Autonomous Region","baraua":"Madhya Pradesh","barda":"Mahārāshtra","baret":"Rājasthān","bargah":"Chhattīsgarh","bargala":"Uttar Pradesh","bargi":"Rājasthān","bargujar":"Uttar Pradesh","bari-hindi":"Madhya Pradesh","bari-marathi":"Mahārāshtra","bari-odia":"Odisha","barot":"Gujarāt","barthari":"Gujarāt","barua":"Tripura","basudeva":"Madhya Pradesh","batada":"Karnātaka","bauti":"Odisha","bavuri":"Odisha","bayil-kammara":"Karnātaka","bayil-pattar":"Karnātaka","bayita-kammara":"Andhra Pradesh","beidongnuo":"Guizhou Province","beldar-chhattisgarhi":"Chhattīsgarh","bellara":"Karnātaka","berad":"Andhra Pradesh","berar":"Madhya Pradesh","bestha":"Karnātaka","bhakta":"West Bengal","bhalla":"West Bengal","bhand-kashmiri":"Jammu and Kashmīr","bhangi-chhattisgarhi":"Chhattīsgarh","bhanumati":"Madhya Pradesh","bharewa":"Chhattīsgarh","bharia-bhumia-chhattisgarhi":"Chhattīsgarh","bharwad":"Mahārāshtra","bhatrajulu":"Telangāna","bhattra-bhatri":"Chhattīsgarh","bhatu-andamani":"Andaman and Nicobar Islands","bhodala":"Gujarāt","bhoi-marathi":"Mahārāshtra","bhoi-odia":"Odisha","bhojki":"Himāchal Pradesh","bhondari":"Andhra Pradesh","bhopa":"Rājasthān","bhuiyar":"Uttar Pradesh","bhujel":"West Bengal","bhunjia":"Chhattīsgarh","bhurtia":"Madhya Pradesh","bhutta":"Rājasthān","bilaspuri":"Assam","bindla":"Telangāna","bisati":"Uttar Pradesh","bit-china":"Yunnan Province","black-thai":"Yunnan Province","bogar-lhoba":"Tibet Autonomous Region","bogol":"Inner Mongolia Autonomous Region","bolla":"Telangāna","bomba":"Jammu and Kashmīr","bondili":"Tamil Nādu","bondo":"Odisha","borpi":"Gujarāt","bowis-mogeyar":"Kerala","boyu-tibetans":"Gansu Province","brahman-jyoti":"Odisha","brahmin-andamani":"Andaman and Nicobar Islands","brukpa":"Ladākh","budakukkala":"Andhra Pradesh","budhan":"Jammu and Kashmīr","bugan":"Yunnan Province","bunan":"Tibet Autonomous Region","buryat":"Inner Mongolia Autonomous Region","butuo-nosu":"Sichuan Province","buyang":"Yunnan Province","byadh":"West Bengal","cai":"Guizhou Province","caki":"Gujarāt","cakkala":"Kerala","cakketakare":"Andhra Pradesh","cakkyar-nambiyar":"Kerala","camadollu":"Andhra Pradesh","camma":"Bihār","campa":"Ladākh","candhai-maru":"Odisha","cejara":"Rājasthān","cekkala":"Tamil Nādu","chadwa":"Rājasthān","chaikwa":"Chhattīsgarh","chakkiyar":"Kerala","chamar-assamese":"Assam","chamar-muchi-malayalam":"Kerala","chamar-muchi-tamil":"Tamil Nādu","champta":"Gujarāt","changpao":"Guizhou Province","chaptegar":"Karnātaka","chari":"Mahārāshtra","charodi":"Karnātaka","charwaha":"Uttar Pradesh","chatarkheya":"Odisha","chaudangsi":"Uttarākhand","chayakkaran":"Tamil Nādu","cheintz":"Jammu and Kashmīr","chengazhi-nambiar":"Kerala","chenna-dasar":"Karnātaka","cherua":"Odisha","chesu":"Yunnan Province","chheepi":"Rājasthān","chitari":"Mahārāshtra","chobdar":"Rājasthān","chopan":"Jammu and Kashmīr","chunari":"West Bengal","chungar":"Rājasthān","cingatanmar":"Kerala","cippollu":"Telangāna","citrakar":"Odisha","citrakathi":"Mahārāshtra","cona-monba":"Tibet Autonomous Region","coorgi-andamanese":"Andaman and Nicobar Islands","cudigar":"Rājasthān","cunara":"Gujarāt","cundollu":"Andhra Pradesh","dadupanthi":"Rājasthān","dafer":"Gujarāt","daitapati":"Odisha","dalu-india":"Meghālaya","damami":"Rājasthān","damla":"Odisha","dammali":"Andhra Pradesh","dangasiya":"Gujarāt","daoli":"Punjab","darang-deng":"Tibet Autonomous Region","darji-odia":"Odisha","dasa-palanjika":"Tamil Nādu","dasari":"Andhra Pradesh","dasnami-bawa":"Gujarāt","daule":"Himāchal Pradesh","dayare":"Tamil Nādu","depala":"Gujarāt","dhakad-halbi":"Chhattīsgarh","dhaki":"Himāchal Pradesh","dhal-kstriya":"West Bengal","dhamin":"Bihār","dhawad":"Mahārāshtra","dhed":"Madhya Pradesh","dheevara":"Kerala","dhekaro":"Jhārkhand","dhera":"Odisha","dhimal":"West Bengal","dhobi-dogri":"Jammu and Kashmīr","dhobi-tamil":"Tamil Nādu","dhola":"Rājasthān","dhyar":"Jammu and Kashmīr","dianbao":"Yunnan Province","diao":"Guizhou Province","didayi":"Odisha","dokhpa":"Ladākh","dom-chhattisgarhi":"Chhattīsgarh","dom-marathi":"Mahārāshtra","domal":"Jammu and Kashmīr","dombi-dasa":"Karnātaka","dosali":"Himāchal Pradesh","doupo":"Yunnan Province","dudhwala":"Gujarāt","durga-murga":"Karnātaka","eastern-samadu":"Yunnan Province","eastern-xiangxi-miao":"Hunan Province","eneti-dora":"Odisha","enger-yugur":"Gansu Province","erawallan":"Kerala","ersu":"Sichuan Province","ezhavathi":"Kerala","ga-mong":"Guizhou Province","gabit":"Goa","gachha":"Madhya Pradesh","gadhai":"Gujarāt","gadhia":"Uttar Pradesh","gadihar":"Bihār","gagra":"Punjab","galada-kokani":"Karnātaka","galiara":"Gujarāt","galwan":"Jammu and Kashmīr","gandalla":"Andhra Pradesh","gandharv":"Bihār","gandla":"Andhra Pradesh","gangawar":"Tamil Nādu","gangireddula":"Telangāna","ganta-sayebulu":"Andhra Pradesh","ganti-chores":"Karnātaka","ganz":"Jammu and Kashmīr","gao":"Guizhou Province","garadi":"Andhra Pradesh","gardi":"Jammu and Kashmīr","garmatan":"Gujarāt","garodi":"Mahārāshtra","garpagari":"Mahārāshtra","garvi":"Gujarāt","gatti":"Karnātaka","gauli":"Karnātaka","gavara":"Andhra Pradesh","gavli":"Gujarāt","gelao":"Guizhou Province","geman-deng":"Tibet Autonomous Region","ghadi":"Karnātaka","ghadwa":"Chhattīsgarh","ghantarghada":"Odisha","ghantiya":"Gujarāt","ghazi":"West Bengal","ghihara":"Rājasthān","ghogia":"Odisha","ghusuria":"Odisha","godagali":"Andhra Pradesh","godari":"Andhra Pradesh","godda":"Karnātaka","godra":"Odisha","golarana":"Gujarāt","gomantak-maratha":"Goa","gond-kannada":"Karnātaka","gondhali":"Mahārāshtra","gopal":"Mahārāshtra","gorkun":"Jammu and Kashmīr","gosain-chhattisgarhi":"Chhattīsgarh","gosain-gujarati":"Gujarāt","gosain-kangri":"Himāchal Pradesh","gosain-rajasthani":"Rājasthān","gosangi":"Telangāna","great-andamanese":"Andaman and Nicobar Islands","guaigun":"Yunnan Province","guddi-eluguwallu":"Andhra Pradesh","gudikara":"Karnātaka","gudugudupandi":"Tamil Nādu","guna":"Odisha","guraw":"Karnātaka","gurika":"Telangāna","gurru":"Rājasthān","gurukkal":"Tamil Nādu","ha-li":"Hainan Province","habura":"Uttar Pradesh","hadi":"Himāchal Pradesh","hagei":"Guizhou Province","hajjam-assamese":"Assam","hajjam-bengali":"West Bengal","hajjam-gujarati":"Gujarāt","hajjam-haryanvi":"Haryāna","hajjam-hindi":"Madhya Pradesh","hajjam-kannada":"Karnātaka","hajjam-kashmiri":"Jammu and Kashmīr","hajjam-telugu":"Andhra Pradesh","halaypotra":"Gujarāt","halleer":"Karnātaka","haluadas":"Tripura","hardas":"Mahārāshtra","harkantra":"Karnātaka","hasalaru":"Karnātaka","hatgar":"Andhra Pradesh","hatkar":"Mahārāshtra","heishui":"Sichuan Province","helawa":"Karnātaka","henan-mongols":"Qinghai Province","hesi":"Himāchal Pradesh","hijra":"Uttar Pradesh","hindu-santarash":"Bihār","hingora":"Gujarāt","hingorza":"Gujarāt","hiranbaj":"Rājasthān","holeya-dasari":"Karnātaka","hongjin-tai":"Yunnan Province","hu":"Yunnan Province","huishui-miao":"Guizhou Province","ilayatu":"Kerala","indo-french":"Puducherry","indo-vietnamese":"Puducherry","irika":"Odisha","jadam":"Madhya Pradesh","jadupetia":"Jhārkhand","jains-bengali":"West Bengal","jains-hindi":"Madhya Pradesh","jains-maithili":"Bihār","jains-tamil":"Tamil Nādu","jains-telugu":"Telangāna","jakkula":"Andhra Pradesh","jandra":"Andhra Pradesh","janughanta":"Odisha","jarawas":"Andaman and Nicobar Islands","jarkhandi-hajjam":"Jhārkhand","jarkhandi-julaha":"Jhārkhand","jat-muslim":"Gujarāt","jati-pillai":"Tamil Nādu","jatigar":"Karnātaka","jaweri":"Karnātaka","jethi":"Andhra Pradesh","jhadi":"Mahārāshtra","jharkhandi-nai":"Jhārkhand","jiamao-li":"Hainan Province","jiasou":"Yunnan Province","jimdar":"Uttarākhand","jino":"Yunnan Province","jogi-angika":"Bihār","jogi-halbi":"Chhattīsgarh","jogi-odia":"Odisha","jogi-telugu":"Karnātaka","jogi-tulu":"Karnātaka","juneja":"Gujarāt","kachchi-alia":"Odisha","kachchi-kushwaha":"Mahārāshtra","kachera-bagheli":"Madhya Pradesh","kachi":"Telangāna","kadar":"Bihār","kaghzi":"Mahārāshtra","kahar-gujarati":"Gujarāt","kaikali":"Andhra Pradesh","kakkalan":"Kerala","kakmara":"West Bengal","kalal-sadri":"Chhattīsgarh","kalanadies":"Kerala","kalladi":"Kerala","kallattu-kurup":"Kerala","kamalia":"Gujarāt","kambalattan":"Tamil Nādu","kambar":"Tamil Nādu","kambodia-bhagat":"Gujarāt","kamila":"Odisha","kanda":"Tripura","kandera":"Madhya Pradesh","kankali":"Uttar Pradesh","kannada-naicker":"Tamil Nādu","kannada-saineegar":"Tamil Nādu","kapadi":"Gujarāt","kapasiya":"Odisha","kapewar":"Mahārāshtra","kapuria":"West Bengal","karaiyar":"Tamil Nādu","karimpalan":"Kerala","karlar":"Tamil Nādu","karna-sale":"Tamil Nādu","karnam":"Andhra Pradesh","karnibhakthulu":"Andhra Pradesh","kasar-bengali":"West Bengal","kasar-gujarati":"Gujarāt","kasar-hindi":"Madhya Pradesh","kasar-odia":"Odisha","kasbati":"Gujarāt","kasikapadi":"Mahārāshtra","katesar":"Tamil Nādu","kathar":"Mahārāshtra","kathi":"Gujarāt","katipamula":"Telangāna","kattiakaran":"Tamil Nādu","kavara":"Kerala","kavuthiyan":"Kerala","kawoj":"Jammu and Kashmīr","kayalar":"Tamil Nādu","keji":"Tibet Autonomous Region","kepmari":"Tamil Nādu","ker":"Gujarāt","khadim":"Rājasthān","khadura":"Odisha","khairwar-bengali":"West Bengal","khairwar-chhattisgarhi":"Chhattīsgarh","khakar":"Karnātaka","khalifa":"West Bengal","khalpa":"Gujarāt","khamba":"Arunāchal Pradesh","khamyang":"Arunāchal Pradesh","khandwal":"Odisha","khangar-bundeli":"Uttar Pradesh","kharol":"Rājasthān","kharvi":"Mahārāshtra","khaskeli":"Gujarāt","khatbune":"Delhi","khati-odia":"Odisha","khatik-bengali":"West Bengal","khatik-chambeali":"Himāchal Pradesh","khatik-chhattisgarhi":"Chhattīsgarh","khatik-gujarati":"Gujarāt","khatik-marathi":"Mahārāshtra","khatik-punjabi":"Chandīgarh","khatik-telugu":"Telangāna","khmu":"Yunnan Province","khowa":"Arunāchal Pradesh","kidaran":"Kerala","kobari":"Odisha","kocu-wellan":"Kerala","koiren":"Manipur","kokaniz":"Mahārāshtra","kol-chhattisgarhi":"Chhattīsgarh","kolari":"Karnātaka","kolhati":"Mahārāshtra","koliyan":"Tamil Nādu","kollan":"Kerala","komara-panta":"Karnātaka","kommu-dasari":"Andhra Pradesh","konda-kammara":"Andhra Pradesh","kong-ge":"Yunnan Province","kongu-vaisnawa":"Tamil Nādu","kongu-vellala-gounder":"Tamil Nādu","koosa":"Karnātaka","kootan":"Kerala","koraga":"Odisha","koraga-korra":"Karnātaka","kota":"Tamil Nādu","kottari":"Karnātaka","koyava":"Karnātaka","kraal":"Jammu and Kashmīr","krishnavaka":"Tamil Nādu","kriyagar":"Rājasthān","kucband":"Haryāna","kucong":"Yunnan Province","kuda":"Odisha","kudimahan":"Mahārāshtra","kudiya":"Karnātaka","kudubi":"Karnātaka","kudumi":"Tamil Nādu","kuli":"Odisha","kuliya":"Andhra Pradesh","kuluvan":"Tamil Nādu","kumar-kshatriya":"Kerala","kumhar-assamese":"Assam","kummara-kumbara":"Karnātaka","kummara-kummari":"Tamil Nādu","kummara-kusuvan":"Kerala","kunduvadian":"Kerala","kunnuva-vellalar":"Tamil Nādu","kurahina-setti":"Karnātaka","kurakula":"Andhra Pradesh","kurol":"West Bengal","kurukkal":"Kerala","kurunga":"Odisha","kusta":"Odisha","kuthliya-bora":"Uttarākhand","kyrgyz":"Xinjiang Uyghur Autonomous Region","laba":"Guizhou Province","labapo":"Yunnan Province","laccadive":"Lakshadweep","ladar":"Karnātaka","ladia":"Madhya Pradesh","ladsi":"Mahārāshtra","lahangir":"Madhya Pradesh","lajjhar":"Mahārāshtra","lakhera-haryanvi":"Haryāna","lakkamari-kapu":"Telangāna","langa":"Gujarāt","laowu":"Yunnan Province","laskari":"Rājasthān","lati-china":"Yunnan Province","lawu":"Yunnan Province","liang-e":"Yunnan Province","liari":"Odisha","linghua":"Guangxi Zhuang Autonomous Region","liping-baheng":"Guizhou Province","liude":"Yunnan Province","liujia":"Guizhou Province","lodha-marathi":"Mahārāshtra","lohar-dogri":"Jammu and Kashmīr","lois":"Manipur","lonar":"Mahārāshtra","longjia":"Guizhou Province","lu":"Guizhou Province","lupanshui-miao":"Guizhou Province","luzu":"Sichuan Province","machhiyara":"Gujarāt","madiga-dasu":"Andhra Pradesh","maghia":"Odisha","mahisyadas":"Tripura","mahuria":"Odisha","maila":"Karnātaka","majjula":"Andhra Pradesh","majothi":"Gujarāt","makrani":"Gujarāt","mala-masti":"Telangāna","malai-pandaram":"Kerala","malai-vellala":"Tamil Nādu","malaikudi":"Karnātaka","malakar":"Tripura","malaneese":"Himāchal Pradesh","malayalar":"Kerala","maleru":"Karnātaka","maleyan":"Tamil Nādu","malia":"Odisha","malis":"Andhra Pradesh","man":"Assam","mana":"Mahārāshtra","manbhav":"Madhya Pradesh","mandali-muslims":"Gujarāt","mandula":"Andhra Pradesh","mang-china":"Yunnan Province","mangnyar-muslims":"Rājasthān","manhas":"Jammu and Kashmīr","maniyattikkaran":"Tamil Nādu","manjygur-muslims":"Jammu and Kashmīr","mankar":"Madhya Pradesh","manmet":"Yunnan Province","manna-dhora":"Andhra Pradesh","manser":"Karnātaka","manyak":"Sichuan Province","maran-nairs":"Kerala","marasari":"Kerala","maria-muslims":"Assam","markande-kanjia":"Odisha","mashan-miao":"Guizhou Province","masku":"Himāchal Pradesh","matak":"Assam","matangi":"Telangāna","mavilan":"Kerala","meda":"Karnātaka","medari":"Andhra Pradesh","medog-monba":"Tibet Autonomous Region","meifu-li":"Hainan Province","mengwu":"Yunnan Province","mer":"Gujarāt","mhalo":"Goa","miguba":"Tibet Autonomous Region","ming":"Sichuan Province","minyak":"Sichuan Province","mir":"Gujarāt","mirshikar":"West Bengal","mishaba-laluo":"Yunnan Province","mith-gauda":"Goa","mitha-ayyalavar":"Telangāna","mitna":"Mahārāshtra","miyana":"Gujarāt","mo":"Guizhou Province","modaks":"Jhārkhand","mogaveera":"Karnātaka","moger-malayalam":"Kerala","moghal-telugu":"Telangāna","moghol-dogri":"Jammu and Kashmīr","moghol-gujarati":"Gujarāt","moghol-marwari":"Rājasthān","mogia":"Rājasthān","momba":"Arunāchal Pradesh","mon-india":"Ladākh","mondivogula":"Andhra Pradesh","mondiwar":"Mahārāshtra","moothan":"Kerala","mosuo":"Yunnan Province","mozhihei":"Hunan Province","muchi-chamar":"Telangāna","muda":"Yunnan Province","mudugar":"Tamil Nādu","mujavar":"Gujarāt","mujavir":"Uttar Pradesh","mukeri":"Bihār","mukhi":"Assam","mukkari":"Kerala","muli":"Andhra Pradesh","mundala":"Karnātaka","mundapotta":"Odisha","munnewar":"Chhattīsgarh","murhid":"Rājasthān","musari":"Kerala","muskhan":"Madhya Pradesh","muslim-gond":"Madhya Pradesh","muslim-kachera":"Mahārāshtra","muslim-khatri":"Gujarāt","muslim-lakhera":"Gujarāt","muslim-patel":"Gujarāt","musti-chenchu":"Andhra Pradesh","muttatu":"Kerala","mutwa":"Gujarāt","muzi":"Yunnan Province","na":"Arunāchal Pradesh","nadors":"Karnātaka","nagavamsam":"Andhra Pradesh","nagbansi":"Jhārkhand","nagbansi-dogri":"Jammu and Kashmīr","nagda":"Rājasthān","nahal":"Mahārāshtra","naheng":"Yunnan Province","nai-assamese":"Assam","nai-kannada":"Karnātaka","nai-mewari":"Rājasthān","nai-odia":"Odisha","naikpod":"Mahārāshtra","nairy":"Karnātaka","naita":"Madhya Pradesh","najjar":"Jammu and Kashmīr","naju":"Sichuan Province","nakhasa":"Andhra Pradesh","nakkala":"Tamil Nādu","naksia":"Odisha","nalband":"Bihār","nalkadaya":"Kerala","namasudra-assamese":"Assam","nambutiris":"Kerala","namdagur":"Jammu and Kashmīr","namdeo":"Madhya Pradesh","namdeo-maratha":"Tamil Nādu","namuyi":"Sichuan Province","nandiwala":"Mahārāshtra","nanjil-mudali":"Tamil Nādu","nanjingren":"Guizhou Province","naoda":"Madhya Pradesh","naqqas":"Jammu and Kashmīr","nar":"Himāchal Pradesh","narsanna":"Kerala","narsinghpura":"Gujarāt","nasuvan":"Kerala","nat-bagheli":"Madhya Pradesh","natua":"Karnātaka","nawaiyat":"Karnātaka","nayadi":"Kerala","nayak-muslims":"Gujarāt","neeli":"Mahārāshtra","nema":"Madhya Pradesh","neyyala":"Andhra Pradesh","nghari-tibetans":"Tibet Autonomous Region","nicar":"Himāchal Pradesh","nilkanth":"Mahārāshtra","node":"Gujarāt","noliya":"Odisha","northern-awu":"Yunnan Province","northern-dong":"Guizhou Province","northern-muji":"Yunnan Province","numao":"Guizhou Province","nyaria":"Rājasthān","olot":"Heilongjiang Province","onge":"Andaman and Nicobar Islands","ongkor":"Xinjiang Uyghur Autonomous Region","ontaris":"Andhra Pradesh","oriya":"Odisha","otans":"Kerala","padannan":"Kerala","padarthis":"Karnātaka","padhar":"Gujarāt","padigarajulu":"Andhra Pradesh","padiyar":"Karnātaka","pagativeshagallu":"Andhra Pradesh","paharia":"West Bengal","pajabgar":"Rājasthān","pakhimara":"Rājasthān","paky":"Andhra Pradesh","palakad-tandans":"Kerala","palyu":"Guangxi Zhuang Autonomous Region","pambada":"Karnātaka","pambala":"Telangāna","pamidi":"Andhra Pradesh","pamula":"Andhra Pradesh","panar":"Gujarāt","panara":"Chhattīsgarh","pancaratra-srivaisnavas-brahmans":"Andhra Pradesh","pandithar":"Kerala","pando":"Chhattīsgarh","pangans":"Manipur","pangul":"Mahārāshtra","pangwal-buddhists":"Himāchal Pradesh","pangwala":"Himāchal Pradesh","panka-odia":"Odisha","pankhiya":"Uttar Pradesh","pannadi":"Tamil Nādu","panniandi":"Tamil Nādu","panxian-nasu":"Guizhou Province","paradhi":"Gujarāt","parenga":"Odisha","pariki-muggula":"Telangāna","parkavakulam":"Tamil Nādu","parvatarajakulam":"Tamil Nādu","patanwadia":"Gujarāt","patari":"Uttar Pradesh","pathinaickans":"Kerala","pathiyan":"Kerala","patkars":"Telangāna","patni-jamat":"Gujarāt","patni-vankars":"Gujarāt","pattanavan":"Tamil Nādu","pattegar":"Karnātaka","pendar":"Karnātaka","perumkollar":"Tamil Nādu","phularis":"Mahārāshtra","pingdi-yao":"Hunan Province","pinjara-dhunia-bengali":"West Bengal","pinjara-kannada":"Karnātaka","pinjara-marathi":"Mahārāshtra","pinjara-punjabi":"Punjab","pisaroti":"Kerala","pochammalollu":"Mahārāshtra","poduval":"Kerala","pohul":"Jammu and Kashmīr","pomla":"Gujarāt","popei":"Yunnan Province","prabhu-patane":"Mahārāshtra","pubiao":"Yunnan Province","pulisari":"Kerala","puman":"Yunnan Province","puran":"Jhārkhand","purig-pa":"Ladākh","puroik":"Tibet Autonomous Region","pusha":"Guangxi Zhuang Autonomous Region","puspakan-unni":"Kerala","putliwale":"Uttar Pradesh","qanu":"Guizhou Province","qiubei-zhuang":"Yunnan Province","qixingmin":"Guizhou Province","racband":"Punjab","rachavar":"Karnātaka","raddi":"Karnātaka","radhi":"Odisha","rai-bhat-muslims":"Uttar Pradesh","rajannalu":"Telangāna","rajapuri":"Karnātaka","rajdhop":"Bihār","raji-india":"Uttarākhand","rajkumhar":"Rājasthān","rajpurohit":"Rājasthān","rana":"Odisha","raneyar":"Karnātaka","rao":"Guizhou Province","rastogi":"Uttar Pradesh","ratal":"Jammu and Kashmīr","rath":"Rājasthān","rathodia":"Gujarāt","raval":"Karnātaka","rave":"Uttar Pradesh","raya-rawat":"Karnātaka","raysipotra":"Gujarāt","reddi":"Kerala","reddi-dora":"Andhra Pradesh","reddika":"Andhra Pradesh","rehar":"Himāchal Pradesh","royma":"Gujarāt","rujjhar":"Madhya Pradesh","rumai-de-ang":"Yunnan Province","runjalavallu":"Andhra Pradesh","runwalas":"Rājasthān","sabakhia":"Odisha","sabar":"Tripura","sadaru":"Andhra Pradesh","sadhu-chetty":"Andhra Pradesh","sagar":"Gujarāt","sagharias":"Dādra and Nagar Haveli and Damān and Diu","saha":"Tripura","sahi":"Mahārāshtra","sahisia":"Bihār","sain":"Rājasthān","sais":"Madhya Pradesh","sakunapaksollu":"Andhra Pradesh","salivahanam":"Tamil Nādu","saman":"Heilongjiang Province","samanthan":"Kerala","samasi":"Odisha","samayavallu":"Andhra Pradesh","sanchia":"Rājasthān","sanda":"Yunnan Province","sandhai-muslims":"Gujarāt","sanei":"Odisha","sanghar":"Mahārāshtra","sanhai":"Himāchal Pradesh","sanqiao":"Guizhou Province","sansoi":"Himāchal Pradesh","santia":"Rājasthān","sapalyas":"Karnātaka","saradagallu":"Telangāna","saragh-yugur":"Gansu Province","saranias":"Gujarāt","saraogi":"Rājasthān","sarikoli-tajiks":"Xinjiang Uyghur Autonomous Region","sarodi":"Mahārāshtra","savalakkarar":"Tamil Nādu","sayyid-chhattisgarhi":"Chhattīsgarh","sayyid-garhwali":"Uttarākhand","sayyid-gujarati":"Gujarāt","sayyid-kannada":"Karnātaka","sayyid-odia":"Odisha","sayyid-pahari":"Jammu and Kashmīr","sayyid-tamil":"Tamil Nādu","semman":"Tamil Nādu","senaithalaivar":"Tamil Nādu","senapathi":"Andhra Pradesh","sentinelese":"Andaman and Nicobar Islands","seok":"Himāchal Pradesh","serdukpen":"Arunāchal Pradesh","shabdakar":"Tripura","shaksaz":"Jammu and Kashmīr","sheikhzade":"Uttar Pradesh","shenzhou":"Guizhou Province","shershabadia":"Bihār","shikari":"Rājasthān","shina-india":"Jammu and Kashmīr","shixing":"Sichuan Province","shravan":"Gujarāt","sichuan-mongols":"Yunnan Province","siddi":"Gujarāt","sikligar":"Madhya Pradesh","silavantulu":"Andhra Pradesh","sindhollu":"Telangāna","sinduria":"Odisha","singiwala":"Rājasthān","sisgars":"Madhya Pradesh","siviar":"Tamil Nādu","siyalgar":"West Bengal","sofi":"Jammu and Kashmīr","soligaru":"Karnātaka","sompura-salat":"Gujarāt","son-koli":"Chhattīsgarh","sonavar":"Puducherry","sorgars":"Rājasthān","soria":"Madhya Pradesh","suda":"Odisha","sudhan":"Jammu and Kashmīr","sudir":"Karnātaka","sudra-das":"Assam","sukiyar":"Jhārkhand","sunga":"Rājasthān","sunuwar":"West Bengal","suodi-nosu":"Sichuan Province","sutar-mistry":"Mahārāshtra","sutradhar":"West Bengal","swakulasali-koshti":"Andhra Pradesh","swangla":"Himāchal Pradesh","ta-er":"Yunnan Province","tagewale":"Uttarākhand","tagu":"Yunnan Province","tai":"Gujarāt","tai-lu":"Yunnan Province","tai-pong":"Yunnan Province","taiphake":"Assam","tak":"Rājasthān","takari":"Mahārāshtra","tambiran":"Tamil Nādu","tamboli-bengali":"West Bengal","tamboli-telugu":"Andhra Pradesh","targala":"Gujarāt","telengi":"Andaman and Nicobar Islands","teli-assamese":"Assam","thachanad-moopan":"Kerala","thakurai":"Bihār","thammadi":"Karnātaka","thanapati":"Odisha","thanga":"Manipur","tharua":"Odisha","thavi":"Himāchal Pradesh","theba":"Gujarāt","thogataveera-kshatriya":"Andhra Pradesh","tholuva-naicker":"Tamil Nādu","thoraiyar":"Tamil Nādu","tikulhara":"Bihār","tilli":"Bihār","tirgar":"Gujarāt","tirugatigantla":"Andhra Pradesh","tiyattunni":"Kerala","tolakari":"Andhra Pradesh","tondman":"Tamil Nādu","tongren-bonan":"Qinghai Province","tripuri-kumhar":"West Bengal","tripuri-namasudra":"Tripura","tula-vina":"Odisha","tulao":"Yunnan Province","turi-barot":"Gujarāt","turuk-pasi":"Bihār","turun":"Assam","tusu":"Yunnan Province","udupula":"Andhra Pradesh","uppara":"Andhra Pradesh","uppillian":"Tamil Nādu","urikkar-naicker":"Tamil Nādu","urindavan":"Kerala","usta":"Rājasthān","uzbeks":"Xinjiang Uyghur Autonomous Region","vadi":"Gujarāt","vadugan":"Kerala","vahivanca-barot":"Gujarāt","vaikhanasa-brahmans":"Andhra Pradesh","valinjiyar":"Kerala","van-baoriya":"Rājasthān","vayati":"Gujarāt","ved":"Rājasthān","velip":"Mahārāshtra","vellaiyan-kuppam-padaiyaci":"Tamil Nādu","verra-musti":"Telangāna","vetan":"Kerala","vettaikkaran":"Tamil Nādu","vettalaikarans":"Puducherry","vettiyan":"Puducherry","vijabargiya":"Rājasthān","vilkurup":"Kerala","vilyagaras":"Karnātaka","vipravinodulu":"Andhra Pradesh","visavan":"Kerala","vyapari":"Gujarāt","wagheri":"Gujarāt","waidu":"Mahārāshtra","wainadan-cetti":"Kerala","wainadan-kader":"Kerala","wainadan-pulayan":"Kerala","wakhi-china":"Xinjiang Uyghur Autonomous Region","wandharo":"Gujarāt","wayanad-pathiyan":"Kerala","waza":"Jammu and Kashmīr","wenma-zhuang":"Yunnan Province","western-gaisu":"Yunnan Province","western-samadu":"Yunnan Province","western-xibe":"Xinjiang Uyghur Autonomous Region","wopu":"Guizhou Province","wunai":"Hunan Province","wutun":"Qinghai Province","xi":"Guizhou Province","xialusi":"Guizhou Province","xiaoliangshan-nosu":"Yunnan Province","xijima":"Yunnan Province","xinping-lalu":"Yunnan Province","xuzhang-lalu":"Yunnan Province","ya":"Yunnan Province","yakha":"Sikkim","yanghuang":"Guizhou Province","yata":"Andhra Pradesh","yatagiri":"Andhra Pradesh","yatibi":"Manipur","yatla":"Andhra Pradesh","yelmar":"Mahārāshtra","yerong":"Guangxi Zhuang Autonomous Region","yidu-lhoba":"Tibet Autonomous Region","yinuo-nosu":"Sichuan Province","yite":"Andhra Pradesh","yizi":"Guizhou Province","youmai":"Guizhou Province","younuo-bunu":"Guangxi Zhuang Autonomous Region","yunnan-mongol":"Yunnan Province","yunnan-shui":"Yunnan Province","za":"Tibet Autonomous Region","zakhrin":"Arunāchal Pradesh","zamral":"Madhya Pradesh"} \ No newline at end of file diff --git a/plugin-designs/upg-neighbor/src/data/reached-neighbors.json b/plugin-designs/upg-neighbor/src/data/reached-neighbors.json new file mode 100644 index 000000000..6f5b1b56b --- /dev/null +++ b/plugin-designs/upg-neighbor/src/data/reached-neighbors.json @@ -0,0 +1,36973 @@ +{ + "meta": { + "generated": "2026-06-29", + "source": "PPLR ArcGIS aIMBPeople (live)", + "reached_filter": "EvangelicalLevel>=2% (>=2% evangelical) OR GSEC>=4 — senders only; 'Engaged' excluded (engaged != reached)", + "reached_pool": 5146, + "target_countries": 40, + "total_neighbors": 2603, + "neighbors_with_rol3": 2603, + "neighbors_with_coords": 2603 + }, + "countries": { + "India": { + "target_upg": 2040, + "target_pop": 1394512400, + "target_top_langs": [ + "Hindi", + "Urdu", + "Gujarati", + "Marathi" + ], + "target_top_religion": "Hinduism", + "neighbors": [ + { + "name": "Naga, Sangtam", + "country": "India", + "lang": "Naga, Sangtam", + "rol3": "nsa", + "pct_christian": 75.0, + "pop": 120000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.85, + "lng": 94.62, + "code": "PG041909" + }, + { + "name": "Naga Kacha", + "country": "India", + "lang": "Naga, Zeme", + "rol3": "nzm", + "pct_christian": 75.0, + "pop": 69500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.21, + "lng": 94.04, + "code": "PG049568" + }, + { + "name": "Moyon", + "country": "India", + "lang": "Naga, Moyon", + "rol3": "nmo", + "pct_christian": 75.0, + "pop": 3600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.24, + "lng": 94.09, + "code": "PG049747" + }, + { + "name": "Lisu", + "country": "India", + "lang": "Lisu", + "rol3": "lis", + "pct_christian": 75.0, + "pop": 2600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 27.37, + "lng": 96.37, + "code": "PG049761" + }, + { + "name": "Koirao", + "country": "India", + "lang": "Boro (India)", + "rol3": "brx", + "pct_christian": 75.0, + "pop": 1800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.2, + "lng": 94.05, + "code": "PG049766" + }, + { + "name": "Beldar (Bundelkhandi)", + "country": "India", + "lang": "Bundeli", + "rol3": "bns", + "pct_christian": 75.0, + "pop": 550.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 24.76, + "lng": 81.58, + "code": "PG048210" + }, + { + "name": "Majhi", + "country": "India", + "lang": "Majhi", + "rol3": "mjz", + "pct_christian": 75.0, + "pop": 500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 27.11, + "lng": 88.35, + "code": "PG049075" + }, + { + "name": "Ansari-Momin (Sadri)", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 75.0, + "pop": 225.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 23.63, + "lng": 85.55, + "code": "PG048700" + }, + { + "name": "Syrian Christian", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 62.5, + "pop": 4495000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 12.35, + "lng": 76.09, + "code": "PG041308" + }, + { + "name": "Naga, Ao", + "country": "India", + "lang": "Naga, Ao", + "rol3": "njo", + "pct_christian": 62.5, + "pop": 411000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 26.34, + "lng": 94.36, + "code": "PG041361" + }, + { + "name": "Anglo Indian", + "country": "India", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 398000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 12.95, + "lng": 77.6, + "code": "PG041386" + }, + { + "name": "Naga, Sema", + "country": "India", + "lang": "Naga, Sumi", + "rol3": "nsm", + "pct_christian": 62.5, + "pop": 368000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.93, + "lng": 94.23, + "code": "PG041651" + }, + { + "name": "Naga, Konyak", + "country": "India", + "lang": "Naga, Konyak", + "rol3": "nbe", + "pct_christian": 62.5, + "pop": 361000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.72, + "lng": 95.04, + "code": "PG041687" + }, + { + "name": "Naga, Angami", + "country": "India", + "lang": "Naga, Angami", + "rol3": "njm", + "pct_christian": 62.5, + "pop": 241000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.69, + "lng": 93.9, + "code": "PG041738" + }, + { + "name": "Naga, Lotha", + "country": "India", + "lang": "Naga, Lotha", + "rol3": "njh", + "pct_christian": 62.5, + "pop": 234000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.01, + "lng": 94.06, + "code": "PG041755" + }, + { + "name": "Naga, Tangkhul", + "country": "India", + "lang": "Naga, Tangkhul (India)", + "rol3": "nmf", + "pct_christian": 62.5, + "pop": 214000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.07, + "lng": 94.38, + "code": "PG041697" + }, + { + "name": "Naga, Chakhesang", + "country": "India", + "lang": "Naga, Chokri", + "rol3": "nri", + "pct_christian": 62.5, + "pop": 198000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.56, + "lng": 94.3, + "code": "PG041748" + }, + { + "name": "Kuki", + "country": "India", + "lang": "Chin, Thado", + "rol3": "tcz", + "pct_christian": 62.5, + "pop": 179000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.49, + "lng": 93.86, + "code": "PG041761" + }, + { + "name": "Naga, Kabui", + "country": "India", + "lang": "Naga, Rongmei", + "rol3": "nbu", + "pct_christian": 62.5, + "pop": 121000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.15, + "lng": 93.79, + "code": "PG041943" + }, + { + "name": "Naga, Yimchunger", + "country": "India", + "lang": "Naga, Yimchungru", + "rol3": "yim", + "pct_christian": 62.5, + "pop": 112000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.8, + "lng": 94.83, + "code": "PG041978" + }, + { + "name": "Naga, Mao", + "country": "India", + "lang": "Naga, Mao", + "rol3": "nbi", + "pct_christian": 62.5, + "pop": 106000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.2, + "lng": 94.04, + "code": "PG041779" + }, + { + "name": "Naga, Zeliang", + "country": "India", + "lang": "Naga, Zeme", + "rol3": "nzm", + "pct_christian": 62.5, + "pop": 106000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.62, + "lng": 93.83, + "code": "PG041995" + }, + { + "name": "Naga, Rengma", + "country": "India", + "lang": "Naga, Southern Rengma", + "rol3": "nre", + "pct_christian": 62.5, + "pop": 79000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.26, + "lng": 94.7, + "code": "PG042067" + }, + { + "name": "Vaiphei", + "country": "India", + "lang": "Vaiphei", + "rol3": "vap", + "pct_christian": 62.5, + "pop": 56000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.31, + "lng": 93.43, + "code": "PG042060" + }, + { + "name": "Kahha", + "country": "India", + "lang": "Naga, Phom", + "rol3": "nph", + "pct_christian": 62.5, + "pop": 50500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.48, + "lng": 94.74, + "code": "PG041953" + }, + { + "name": "Mizo, Pawi", + "country": "India", + "lang": "Chin, Paite", + "rol3": "pck", + "pct_christian": 62.5, + "pop": 47500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.84, + "lng": 92.88, + "code": "PG041966" + }, + { + "name": "Nicobarese", + "country": "India", + "lang": "Nicobarese, Car", + "rol3": "caq", + "pct_christian": 62.5, + "pop": 42500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.18, + "lng": 92.77, + "code": "PG041984" + }, + { + "name": "Naga, Maring", + "country": "India", + "lang": "Naga, Maring", + "rol3": "nng", + "pct_christian": 62.5, + "pop": 34500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.24, + "lng": 94.09, + "code": "PG042119" + }, + { + "name": "Chin, Mara", + "country": "India", + "lang": "Mara", + "rol3": "mrh", + "pct_christian": 62.5, + "pop": 34000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.84, + "lng": 92.89, + "code": "PG042043" + }, + { + "name": "Zou", + "country": "India", + "lang": "Zo", + "rol3": "zom", + "pct_christian": 62.5, + "pop": 30000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.16, + "lng": 93.71, + "code": "PG042107" + }, + { + "name": "Naga, Pochury", + "country": "India", + "lang": "Naga, Pochuri", + "rol3": "npo", + "pct_christian": 62.5, + "pop": 24500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.03, + "lng": 94.53, + "code": "PG049624" + }, + { + "name": "Gangte", + "country": "India", + "lang": "Gangte", + "rol3": "gnb", + "pct_christian": 62.5, + "pop": 16000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.28, + "lng": 93.69, + "code": "PG042166" + }, + { + "name": "Lamgang", + "country": "India", + "lang": "Lamkang", + "rol3": "lmk", + "pct_christian": 62.5, + "pop": 8700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.44, + "lng": 94.05, + "code": "PG049002" + }, + { + "name": "Chiru", + "country": "India", + "lang": "Chiru", + "rol3": "cdf", + "pct_christian": 62.5, + "pop": 8300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.35, + "lng": 94.11, + "code": "PG049001" + }, + { + "name": "Cote", + "country": "India", + "lang": "Naga, Chothe", + "rol3": "nct", + "pct_christian": 62.5, + "pop": 4100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.24, + "lng": 94.09, + "code": "PG049749" + }, + { + "name": "Aimol", + "country": "India", + "lang": "Aimol", + "rol3": "aim", + "pct_christian": 62.5, + "pop": 3700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.7, + "lng": 93.92, + "code": "PG048880" + }, + { + "name": "Ucai", + "country": "India", + "lang": "Kok Borok", + "rol3": "trp", + "pct_christian": 62.5, + "pop": 3100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.36, + "lng": 92.17, + "code": "PG049762" + }, + { + "name": "Monsang", + "country": "India", + "lang": "Naga, Monsang", + "rol3": "nmh", + "pct_christian": 62.5, + "pop": 2600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.24, + "lng": 94.09, + "code": "PG049759" + }, + { + "name": "Soria", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 62.5, + "pop": 1300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 23.2, + "lng": 77.09, + "code": "PG048955" + }, + { + "name": "Pnar", + "country": "India", + "lang": "Pnar", + "rol3": "pbv", + "pct_christian": 62.5, + "pop": 1300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.84, + "lng": 92.89, + "code": "PG049638" + }, + { + "name": "Mangli", + "country": "India", + "lang": "Sambalpuri", + "rol3": "spv", + "pct_christian": 62.5, + "pop": 1100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 19.91, + "lng": 83.18, + "code": "PG049616" + }, + { + "name": "Rathodia", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 62.5, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 22.3, + "lng": 73.39, + "code": "PG048948" + }, + { + "name": "Tarao", + "country": "India", + "lang": "Naga, Tarao", + "rol3": "tro", + "pct_christian": 62.5, + "pop": 550.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.24, + "lng": 94.09, + "code": "PG049555" + }, + { + "name": "Bagti", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 62.5, + "pop": 275.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.28, + "lng": 86.43, + "code": "PG049044" + }, + { + "name": "Khasi", + "country": "India", + "lang": "Khasi", + "rol3": "kha", + "pct_christian": 45.0, + "pop": 1675000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.52, + "lng": 91.79, + "code": "PG041380" + }, + { + "name": "Pulayan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 45.0, + "pop": 1540000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 10.06, + "lng": 76.53, + "code": "PG041344" + }, + { + "name": "Garo", + "country": "India", + "lang": "Garo", + "rol3": "grt", + "pct_christian": 45.0, + "pop": 1065000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 25.62, + "lng": 90.74, + "code": "PG041444" + }, + { + "name": "Meghval", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 45.0, + "pop": 377000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 26.87, + "lng": 73.03, + "code": "PG041328" + }, + { + "name": "Santal (Oriya)", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 45.0, + "pop": 176000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 22.8, + "lng": 87.48, + "code": "PG046353" + }, + { + "name": "Hmar", + "country": "India", + "lang": "Hmar", + "rol3": "hmr", + "pct_christian": 45.0, + "pop": 113000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.97, + "lng": 93.56, + "code": "PG041808" + }, + { + "name": "Paite", + "country": "India", + "lang": "Chin, Paite", + "rol3": "pck", + "pct_christian": 45.0, + "pop": 94000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.3, + "lng": 93.43, + "code": "PG041890" + }, + { + "name": "Naga, Khiamngan", + "country": "India", + "lang": "Naga, Khiamniungan", + "rol3": "kix", + "pct_christian": 45.0, + "pop": 56000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.17, + "lng": 94.89, + "code": "PG042023" + }, + { + "name": "Mizo", + "country": "India", + "lang": "Mizo", + "rol3": "lus", + "pct_christian": 35.0, + "pop": 1115000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.31, + "lng": 92.83, + "code": "PG041461" + }, + { + "name": "Thadou", + "country": "India", + "lang": "Chin, Thado", + "rol3": "tcz", + "pct_christian": 35.0, + "pop": 268000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.3, + "lng": 93.43, + "code": "PG041679" + }, + { + "name": "Mal Paharia", + "country": "India", + "lang": "Mal Paharia", + "rol3": "mkb", + "pct_christian": 35.0, + "pop": 231000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 24.56, + "lng": 87.66, + "code": "PG041653" + }, + { + "name": "Bhil Mina", + "country": "India", + "lang": "Vaghri", + "rol3": "vgr", + "pct_christian": 35.0, + "pop": 131000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 24.59, + "lng": 73.72, + "code": "PG048977" + }, + { + "name": "Nissi", + "country": "India", + "lang": "Nyishi", + "rol3": "njz", + "pct_christian": 35.0, + "pop": 113000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 27.27, + "lng": 93.61, + "code": "PG041760" + }, + { + "name": "Chang (Naga)", + "country": "India", + "lang": "Naga, Chang", + "rol3": "nbc", + "pct_christian": 35.0, + "pop": 81500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.17, + "lng": 94.89, + "code": "PG041979" + }, + { + "name": "Malai Arayan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 35.0, + "pop": 48000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 9.65, + "lng": 76.66, + "code": "PG041952" + }, + { + "name": "Anal", + "country": "India", + "lang": "Anal", + "rol3": "anm", + "pct_christian": 35.0, + "pop": 31500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.04, + "lng": 94.14, + "code": "PG042153" + }, + { + "name": "Nagbansi (Dogri)", + "country": "India", + "lang": "Dogri", + "rol3": "dgo", + "pct_christian": 35.0, + "pop": 1700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 33.05, + "lng": 75.08, + "code": "PG048317" + }, + { + "name": "Pagi", + "country": "India", + "lang": "Konkani", + "rol3": "knn", + "pct_christian": 35.0, + "pop": 650.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 14.91, + "lng": 74.23, + "code": "PG049171" + }, + { + "name": "Munda ", + "country": "India", + "lang": "Munda", + "rol3": "unx", + "pct_christian": 25.0, + "pop": 2875000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 23.75, + "lng": 88.2, + "code": "PG041329" + }, + { + "name": "Kharia", + "country": "India", + "lang": "Kharia", + "rol3": "khr", + "pct_christian": 25.0, + "pop": 889000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 22.47, + "lng": 84.55, + "code": "PG041457" + }, + { + "name": "Paravar", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 25.0, + "pop": 162000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 8.62, + "lng": 77.0, + "code": "PG041743" + }, + { + "name": "Koh", + "country": "India", + "lang": "Marathi", + "rol3": "mar", + "pct_christian": 25.0, + "pop": 96500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 20.29, + "lng": 76.9, + "code": "PG041285" + }, + { + "name": "Mehar", + "country": "India", + "lang": "Mewari", + "rol3": "mtr", + "pct_christian": 25.0, + "pop": 84500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 24.37, + "lng": 76.25, + "code": "PG041828" + }, + { + "name": "Madgi", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 25.0, + "pop": 76500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 20.17, + "lng": 79.45, + "code": "PG041802" + }, + { + "name": "Mech", + "country": "India", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 25.0, + "pop": 73500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 27.1, + "lng": 92.43, + "code": "PG041900" + }, + { + "name": "Adi Gallong", + "country": "India", + "lang": "Adi, Galo", + "rol3": "adl", + "pct_christian": 25.0, + "pop": 71000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 28.32, + "lng": 94.51, + "code": "PG041851" + }, + { + "name": "Gounder", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 25.0, + "pop": 60000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 11.68, + "lng": 78.22, + "code": "PG041906" + }, + { + "name": "Hajong", + "country": "India", + "lang": "Hajong", + "rol3": "haj", + "pct_christian": 25.0, + "pop": 47000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 25.53, + "lng": 89.89, + "code": "PG041954" + }, + { + "name": "Kerala Mudali", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 25.0, + "pop": 11000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 9.44, + "lng": 78.7, + "code": "PG049672" + }, + { + "name": "Noatia", + "country": "India", + "lang": "Kok Borok", + "rol3": "trp", + "pct_christian": 25.0, + "pop": 9800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 23.79, + "lng": 91.46, + "code": "PG042172" + }, + { + "name": "Godari", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 25.0, + "pop": 1300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 17.69, + "lng": 83.22, + "code": "PG049205" + }, + { + "name": "Kambodia Bhagat", + "country": "India", + "lang": "Marwari (India)", + "rol3": "rwr", + "pct_christian": 25.0, + "pop": 1300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 23.95, + "lng": 72.49, + "code": "PG049636" + }, + { + "name": "Chamail", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 25.0, + "pop": 1200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 25.48, + "lng": 85.95, + "code": "PG049469" + }, + { + "name": "Ghogia", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 25.0, + "pop": 800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 21.15, + "lng": 84.09, + "code": "PG049008" + }, + { + "name": "Gangai", + "country": "India", + "lang": "Surjapuri", + "rol3": "sjp", + "pct_christian": 25.0, + "pop": 500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 25.69, + "lng": 87.53, + "code": "PG049394" + }, + { + "name": "Arakala", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 25.0, + "pop": 375.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 18.11, + "lng": 83.4, + "code": "PG049160" + }, + { + "name": "Mala", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 17.5, + "pop": 7615000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 16.36, + "lng": 79.51, + "code": "PG041263" + }, + { + "name": "Balmiki (Haryanvi)", + "country": "India", + "lang": "Haryanvi", + "rol3": "bgc", + "pct_christian": 17.5, + "pop": 1890000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 29.19, + "lng": 76.36, + "code": "PG048194" + }, + { + "name": "Balmiki (Awadhi)", + "country": "India", + "lang": "Awadhi", + "rol3": "awa", + "pct_christian": 17.5, + "pop": 1720000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 27.93, + "lng": 78.08, + "code": "PG041289" + }, + { + "name": "Balmiki (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 17.5, + "pop": 1295000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 30.44, + "lng": 75.81, + "code": "PG048195" + }, + { + "name": "Balmiki (Pahari)", + "country": "India", + "lang": "Garhwali", + "rol3": "gbm", + "pct_christian": 17.5, + "pop": 131000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 30.26, + "lng": 78.62, + "code": "PG048196" + }, + { + "name": "Damor", + "country": "India", + "lang": "Wagdi", + "rol3": "wbr", + "pct_christian": 17.5, + "pop": 128000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 23.74, + "lng": 73.85, + "code": "PG041876" + }, + { + "name": "Lepcha", + "country": "India", + "lang": "Lepcha", + "rol3": "lep", + "pct_christian": 17.5, + "pop": 107000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 27.34, + "lng": 88.58, + "code": "PG041791" + }, + { + "name": "Kachari", + "country": "India", + "lang": "Kachari", + "rol3": "xac", + "pct_christian": 17.5, + "pop": 73500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 27.37, + "lng": 95.08, + "code": "PG041505" + }, + { + "name": "Nadia", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 17.5, + "pop": 69500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG041830" + }, + { + "name": "Chuhra", + "country": "India", + "lang": "Dogri", + "rol3": "dgo", + "pct_christian": 17.5, + "pop": 59000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 31.92, + "lng": 77.25, + "code": "PG049402" + }, + { + "name": "Adi Minyong", + "country": "India", + "lang": "Adi", + "rol3": "adi", + "pct_christian": 17.5, + "pop": 50000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 28.05, + "lng": 94.43, + "code": "PG041950" + }, + { + "name": "Nocte", + "country": "India", + "lang": "Naga, Nocte", + "rol3": "njb", + "pct_christian": 17.5, + "pop": 50000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 27.07, + "lng": 95.23, + "code": "PG042002" + }, + { + "name": "Ojha", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 17.5, + "pop": 46000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 21.74, + "lng": 78.25, + "code": "PG041974" + }, + { + "name": "Badhi", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 17.5, + "pop": 16000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 29.95, + "lng": 77.55, + "code": "PG041480" + }, + { + "name": "Goudu", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 17.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 17.71, + "lng": 83.25, + "code": "PG042158" + }, + { + "name": "Sutar (Gujarati)", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 17.5, + "pop": 11000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 21.4, + "lng": 71.23, + "code": "PG048301" + }, + { + "name": "Miji", + "country": "India", + "lang": "Miji", + "rol3": "sjl", + "pct_christian": 17.5, + "pop": 7000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 27.3, + "lng": 92.4, + "code": "PG049709" + }, + { + "name": "Barmi", + "country": "India", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 17.5, + "pop": 600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 12.6, + "lng": 92.83, + "code": "PG048889" + }, + { + "name": "Bari (Oriya)", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 17.5, + "pop": 550.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 20.86, + "lng": 84.8, + "code": "PG048204" + }, + { + "name": "Babar", + "country": "India", + "lang": "Haroti", + "rol3": "hoj", + "pct_christian": 17.5, + "pop": 500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 25.43, + "lng": 75.65, + "code": "PG048961" + }, + { + "name": "Bayil Kammara", + "country": "India", + "lang": "Marwari (India)", + "rol3": "rwr", + "pct_christian": 17.5, + "pop": 375.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 16.34, + "lng": 76.08, + "code": "PG049856" + }, + { + "name": "Candhai Maru", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 17.5, + "pop": 350.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 21.48, + "lng": 83.97, + "code": "PG049648" + }, + { + "name": "Khati (Haryanvi)", + "country": "India", + "lang": "Haryanvi", + "rol3": "bgc", + "pct_christian": 17.5, + "pop": 200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 29.21, + "lng": 76.34, + "code": "PG048299" + }, + { + "name": "Madiga", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 9445000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 16.51, + "lng": 79.06, + "code": "PG041253" + }, + { + "name": "Mang", + "country": "India", + "lang": "Marathi", + "rol3": "mar", + "pct_christian": 12.5, + "pop": 3040000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 20.38, + "lng": 76.05, + "code": "PG041315" + }, + { + "name": "Chakkiliyan", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 1205000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 10.61, + "lng": 77.71, + "code": "PG041373" + }, + { + "name": "Saora", + "country": "India", + "lang": "Sora", + "rol3": "srb", + "pct_christian": 12.5, + "pop": 1190000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 20.64, + "lng": 83.56, + "code": "PG041407" + }, + { + "name": "Nadua Shabar", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 12.5, + "pop": 659000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 19.9, + "lng": 85.17, + "code": "PG049502" + }, + { + "name": "Senva", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 12.5, + "pop": 161000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG041682" + }, + { + "name": "Mannan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 12.5, + "pop": 145000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 10.8, + "lng": 76.55, + "code": "PG041756" + }, + { + "name": "Chakravar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 12.5, + "pop": 45000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 8.62, + "lng": 77.0, + "code": "PG041956" + }, + { + "name": "Bawa Dedh", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 12.5, + "pop": 34500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG042035" + }, + { + "name": "Domar", + "country": "India", + "lang": "Awadhi", + "rol3": "awa", + "pct_christian": 12.5, + "pop": 27000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 25.45, + "lng": 80.38, + "code": "PG049077" + }, + { + "name": "Samban", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 12.5, + "pop": 24500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 8.7, + "lng": 77.49, + "code": "PG041752" + }, + { + "name": "Mehtar", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 12.5, + "pop": 20000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 16.22, + "lng": 75.63, + "code": "PG042116" + }, + { + "name": "Panchama", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 7800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 17.01, + "lng": 81.79, + "code": "PG042086" + }, + { + "name": "Palliyan", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 12.5, + "pop": 4800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 9.89, + "lng": 77.09, + "code": "PG049215" + }, + { + "name": "Puroik", + "country": "India", + "lang": "Adi", + "rol3": "adi", + "pct_christian": 12.5, + "pop": 4300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 27.43, + "lng": 92.97, + "code": "PG049739" + }, + { + "name": "Karen", + "country": "India", + "lang": "Karen, S’gaw", + "rol3": "ksw", + "pct_christian": 12.5, + "pop": 2700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 12.78, + "lng": 92.86, + "code": "PG048894" + }, + { + "name": "Padigarajulu", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 15.58, + "lng": 79.51, + "code": "PG049165" + }, + { + "name": "Kuda", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 12.5, + "pop": 750.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 20.83, + "lng": 85.53, + "code": "PG049016" + }, + { + "name": "Gagra", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 12.5, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 30.84, + "lng": 75.86, + "code": "PG049079" + }, + { + "name": "Tharua", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 12.5, + "pop": 650.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 21.49, + "lng": 86.93, + "code": "PG049031" + }, + { + "name": "Gharrami", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 12.5, + "pop": 500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 28.64, + "lng": 77.12, + "code": "PG049392" + }, + { + "name": "Dusadh", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 7.5, + "pop": 6910000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 25.23, + "lng": 85.31, + "code": "PG041266" + }, + { + "name": "Nadar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 7.5, + "pop": 6365000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 11.17, + "lng": 77.82, + "code": "PG041309" + }, + { + "name": "Oraon", + "country": "India", + "lang": "Kurux", + "rol3": "kru", + "pct_christian": 7.5, + "pop": 5510000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 24.4, + "lng": 86.87, + "code": "PG041304" + }, + { + "name": "Santal (Bengali)", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 3350000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 24.0, + "lng": 88.81, + "code": "PG046352" + }, + { + "name": "Vellalar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 7.5, + "pop": 3080000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 10.78, + "lng": 77.78, + "code": "PG041493" + }, + { + "name": "Kondh", + "country": "India", + "lang": "Kuvi", + "rol3": "kxv", + "pct_christian": 7.5, + "pop": 2190000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 18.49, + "lng": 83.27, + "code": "PG041352" + }, + { + "name": "Pano", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 7.5, + "pop": 1735000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 21.04, + "lng": 85.14, + "code": "PG041345" + }, + { + "name": "Chamar (Awadhi)", + "country": "India", + "lang": "Awadhi", + "rol3": "awa", + "pct_christian": 7.5, + "pop": 1275000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 26.07, + "lng": 80.62, + "code": "PG046031" + }, + { + "name": "Munda (Assamese)", + "country": "India", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 7.5, + "pop": 1235000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 26.97, + "lng": 94.06, + "code": "PG048248" + }, + { + "name": "Santal (Assamese)", + "country": "India", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 7.5, + "pop": 697000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 26.55, + "lng": 92.86, + "code": "PG046151" + }, + { + "name": "Goan", + "country": "India", + "lang": "Konkani", + "rol3": "knn", + "pct_christian": 7.5, + "pop": 661000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 17.38, + "lng": 74.3, + "code": "PG041474" + }, + { + "name": "Gamit", + "country": "India", + "lang": "Gamit", + "rol3": "gbl", + "pct_christian": 7.5, + "pop": 649000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 21.11, + "lng": 73.62, + "code": "PG041462" + }, + { + "name": "Bhangi (Gujarati)", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 7.5, + "pop": 600000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 22.76, + "lng": 72.13, + "code": "PG048218" + }, + { + "name": "Karbi", + "country": "India", + "lang": "Karbi", + "rol3": "mjw", + "pct_christian": 7.5, + "pop": 537000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 25.62, + "lng": 93.03, + "code": "PG041521" + }, + { + "name": "Cheruman", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 467000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 10.61, + "lng": 76.25, + "code": "PG041452" + }, + { + "name": "Garasia", + "country": "India", + "lang": "Garasia, Adiwasi", + "rol3": "gas", + "pct_christian": 7.5, + "pop": 295000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 24.08, + "lng": 73.13, + "code": "PG041610" + }, + { + "name": "Amant", + "country": "India", + "lang": "Maithili", + "rol3": "mai", + "pct_christian": 7.5, + "pop": 244000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 25.04, + "lng": 86.5, + "code": "PG042053" + }, + { + "name": "Lodha, Savar", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 148000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 22.3, + "lng": 87.43, + "code": "PG041753" + }, + { + "name": "Jamatia", + "country": "India", + "lang": "Kok Borok", + "rol3": "trp", + "pct_christian": 7.5, + "pop": 138000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 23.36, + "lng": 91.61, + "code": "PG041812" + }, + { + "name": "Ghanchi", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 7.5, + "pop": 129000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 22.02, + "lng": 73.03, + "code": "PG041585" + }, + { + "name": "Tangsa", + "country": "India", + "lang": "Naga, Tangshang", + "rol3": "nst", + "pct_christian": 7.5, + "pop": 85500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 27.37, + "lng": 96.37, + "code": "PG042146" + }, + { + "name": "Bharathar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 7.5, + "pop": 81000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 8.94, + "lng": 76.82, + "code": "PG049578" + }, + { + "name": "Wancho", + "country": "India", + "lang": "Naga, Wancho", + "rol3": "nnp", + "pct_christian": 7.5, + "pop": 70000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 26.56, + "lng": 95.05, + "code": "PG041877" + }, + { + "name": "Halam", + "country": "India", + "lang": "Kok Borok", + "rol3": "trp", + "pct_christian": 7.5, + "pop": 69500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 23.79, + "lng": 91.46, + "code": "PG041914" + }, + { + "name": "Bangni", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 62500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 27.43, + "lng": 92.97, + "code": "PG041887" + }, + { + "name": "Asur", + "country": "India", + "lang": "Asuri", + "rol3": "asr", + "pct_christian": 7.5, + "pop": 52500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 23.18, + "lng": 84.56, + "code": "PG042115" + } + ] + }, + "Pakistan": { + "target_upg": 782, + "target_pop": 250773000, + "target_top_langs": [ + "Punjabi, Western", + "Pashto, Central", + "Sindhi", + "Saraiki" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Chandala", + "country": "Pakistan", + "lang": "Saraiki", + "rol3": "skr", + "pct_christian": 35.0, + "pop": 752000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 31.73, + "lng": 73.95, + "code": "PG049353" + }, + { + "name": "Goan", + "country": "Pakistan", + "lang": "Konkani, Goan", + "rol3": "gom", + "pct_christian": 25.0, + "pop": 80500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 24.89, + "lng": 67.06, + "code": "PG006349" + }, + { + "name": "Marwari, Northern", + "country": "Pakistan", + "lang": "Marwari (Pakistan)", + "rol3": "mve", + "pct_christian": 7.5, + "pop": 170000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 28.82, + "lng": 71.72, + "code": "PG006386" + }, + { + "name": "Han Chinese", + "country": "Pakistan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 60000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 31.52, + "lng": 74.34, + "code": "PG006354" + }, + { + "name": "Gujarati", + "country": "Pakistan", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 3.5, + "pop": 1460000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 27.88, + "lng": 70.3, + "code": "PG006352" + }, + { + "name": "Bhil, Meghwar", + "country": "Pakistan", + "lang": "Sindhi Bhil", + "rol3": "sbn", + "pct_christian": 3.5, + "pop": 73000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 24.75, + "lng": 68.61, + "code": "PG006381" + }, + { + "name": "British", + "country": "Pakistan", + "lang": "English", + "rol3": "eng", + "pct_christian": 3.5, + "pop": 18500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 31.38, + "lng": 72.73, + "code": "PG006336" + }, + { + "name": "Bagti", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 62.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 23.28, + "lng": 86.43, + "code": "PG049044" + }, + { + "name": "Bhil Mina", + "country": "India", + "lang": "Vaghri", + "rol3": "vgr", + "pct_christian": 35.0, + "pop": 131000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 24.59, + "lng": 73.72, + "code": "PG048977" + }, + { + "name": "Nagbansi (Dogri)", + "country": "India", + "lang": "Dogri", + "rol3": "dgo", + "pct_christian": 35.0, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 33.05, + "lng": 75.08, + "code": "PG048317" + }, + { + "name": "Balmiki (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 17.5, + "pop": 1295000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.44, + "lng": 75.81, + "code": "PG048195" + }, + { + "name": "Chuhra", + "country": "India", + "lang": "Dogri", + "rol3": "dgo", + "pct_christian": 17.5, + "pop": 59000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 31.92, + "lng": 77.25, + "code": "PG049402" + }, + { + "name": "Romani, Vlax", + "country": "Belgium", + "lang": "Romani, Vlax", + "rol3": "rmy", + "pct_christian": 17.5, + "pop": 13000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 50.85, + "lng": 4.38, + "code": "PG000068" + }, + { + "name": "Gagra", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 12.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.84, + "lng": 75.86, + "code": "PG049079" + }, + { + "name": "Santal (Bengali)", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 3350000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 24.0, + "lng": 88.81, + "code": "PG046352" + }, + { + "name": "Lodha, Savar", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 148000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.3, + "lng": 87.43, + "code": "PG041753" + }, + { + "name": "Bangni", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 62500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 27.43, + "lng": 92.97, + "code": "PG041887" + }, + { + "name": "Kela", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 29000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 20.46, + "lng": 85.67, + "code": "PG042031" + }, + { + "name": "Badhi", + "country": "India", + "lang": "Pahari-Potwari", + "rol3": "phr", + "pct_christian": 7.5, + "pop": 27000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 31.86, + "lng": 76.82, + "code": "PG041983" + }, + { + "name": "Baiti", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 27000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 23.24, + "lng": 88.24, + "code": "PG042100" + }, + { + "name": "Iranian", + "country": "Armenia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 40.17, + "lng": 44.49, + "code": "PG050098" + }, + { + "name": "Iranian", + "country": "Greece", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 38.05, + "lng": 23.7, + "code": "PG047071" + }, + { + "name": "Cheintz", + "country": "India", + "lang": "Dogri", + "rol3": "dgo", + "pct_christian": 7.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 34.09, + "lng": 74.81, + "code": "PG049470" + }, + { + "name": "Sorgir", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 7.5, + "pop": 1100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.34, + "lng": 76.39, + "code": "PG049092" + }, + { + "name": "Kankali", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 27.7, + "lng": 81.49, + "code": "PG049096" + }, + { + "name": "Khadim", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 26.49, + "lng": 74.65, + "code": "PG048969" + }, + { + "name": "Watal", + "country": "India", + "lang": "Kashmiri", + "rol3": "kas", + "pct_christian": 7.5, + "pop": 250.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 34.11, + "lng": 74.77, + "code": "PG049375" + }, + { + "name": "Mazabi", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 3625000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 30.25, + "lng": 74.91, + "code": "PG041301" + }, + { + "name": "Bhangi (Bengali)", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 699000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.15, + "lng": 87.53, + "code": "PG048219" + }, + { + "name": "Kora", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 279000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 23.29, + "lng": 86.43, + "code": "PG041592" + }, + { + "name": "Persian", + "country": "Canada", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 201000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 46.93, + "lng": -92.67, + "code": "PG043458" + }, + { + "name": "Iranian", + "country": "Germany", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 175000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 52.51, + "lng": 11.69, + "code": "PG000259" + }, + { + "name": "Od", + "country": "India", + "lang": "Oadki", + "rol3": "odk", + "pct_christian": 3.5, + "pop": 166000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 29.22, + "lng": 75.8, + "code": "PG041691" + }, + { + "name": "Persian", + "country": "Turkiye", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 130000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 41.04, + "lng": 28.87, + "code": "PG024581" + }, + { + "name": "Batwal", + "country": "India", + "lang": "Dogri", + "rol3": "dgo", + "pct_christian": 3.5, + "pop": 108000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 32.75, + "lng": 74.8, + "code": "PG041740" + }, + { + "name": "Chikwa", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 89500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 23.97, + "lng": 84.3, + "code": "PG041852" + }, + { + "name": "Persian", + "country": "United Kingdom", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 86000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 51.5, + "lng": -0.17, + "code": "PG000643" + }, + { + "name": "Bhattra (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 79000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 30.98, + "lng": 75.73, + "code": "PG041615" + }, + { + "name": "Romani, Vlax, Kalderash", + "country": "Argentina", + "lang": "Romani, Vlax", + "rol3": "rmy", + "pct_christian": 3.5, + "pop": 61000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -34.65, + "lng": -58.56, + "code": "PG017346" + }, + { + "name": "Koch", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 51000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 25.68, + "lng": 88.93, + "code": "PG042084" + }, + { + "name": "Kotal", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 42500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.42, + "lng": 87.79, + "code": "PG041946" + }, + { + "name": "Romani, Vlax", + "country": "Colombia", + "lang": "Romani, Vlax", + "rol3": "rmy", + "pct_christian": 3.5, + "pop": 42000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 4.64, + "lng": -74.11, + "code": "PG016290" + }, + { + "name": "Vaghri", + "country": "India", + "lang": "Vaghri", + "rol3": "vgr", + "pct_christian": 3.5, + "pop": 42000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG042168" + }, + { + "name": "Arain (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 30.37, + "lng": 75.93, + "code": "PG048185" + }, + { + "name": "Bengali", + "country": "Nepal", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 31000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.42, + "lng": 84.77, + "code": "PG006178" + }, + { + "name": "Doai", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 21500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.05, + "lng": 88.57, + "code": "PG042134" + }, + { + "name": "Saryara", + "country": "India", + "lang": "Dogri", + "rol3": "dgo", + "pct_christian": 3.5, + "pop": 19500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 33.44, + "lng": 75.87, + "code": "PG042135" + }, + { + "name": "Arab", + "country": "South Africa", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -26.17, + "lng": 28.07, + "code": "PG015486" + }, + { + "name": "Punjabi", + "country": "Singapore", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 15000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 1.36, + "lng": 103.82, + "code": "PG010717" + }, + { + "name": "Arab", + "country": "New Zealand", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -36.89, + "lng": 174.78, + "code": "PG018478" + }, + { + "name": "Paharia", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 9200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.37, + "lng": 86.02, + "code": "PG049049" + }, + { + "name": "Persian", + "country": "Indonesia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 8000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": -6.21, + "lng": 106.83, + "code": "PG050238" + }, + { + "name": "Jogi (Bagri)", + "country": "India", + "lang": "Bagri", + "rol3": "bgq", + "pct_christian": 3.5, + "pop": 6700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.06, + "lng": 74.08, + "code": "PG048278" + }, + { + "name": "Gandhila", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 6600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.34, + "lng": 76.4, + "code": "PG049080" + }, + { + "name": "Behera", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 3800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.3, + "lng": 87.44, + "code": "PG041569" + }, + { + "name": "Persian", + "country": "South Korea", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 3500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 37.55, + "lng": 126.99, + "code": "PG050237" + }, + { + "name": "Dagi", + "country": "India", + "lang": "Pahari-Potwari", + "rol3": "phr", + "pct_christian": 3.5, + "pop": 3100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 32.6, + "lng": 76.92, + "code": "PG049401" + }, + { + "name": "Pinjara (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 3000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 29.48, + "lng": 76.44, + "code": "PG048167" + }, + { + "name": "Ratal", + "country": "India", + "lang": "Dogri", + "rol3": "dgo", + "pct_christian": 3.5, + "pop": 2800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 32.38, + "lng": 75.51, + "code": "PG049072" + }, + { + "name": "Daoli", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 2800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.97, + "lng": 76.55, + "code": "PG049445" + }, + { + "name": "Bhat (Pahari)", + "country": "India", + "lang": "Pahari-Potwari", + "rol3": "phr", + "pct_christian": 3.5, + "pop": 2300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.66, + "lng": 77.43, + "code": "PG048019" + }, + { + "name": "Dayare", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.79, + "lng": 77.53, + "code": "PG049780" + }, + { + "name": "Arain (Dogri)", + "country": "India", + "lang": "Dogri", + "rol3": "dgo", + "pct_christian": 3.5, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 32.11, + "lng": 75.88, + "code": "PG048186" + }, + { + "name": "Ahluwalia", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 1400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 31.39, + "lng": 75.36, + "code": "PG049356" + } + ] + }, + "Indonesia": { + "target_upg": 237, + "target_pop": 200492130, + "target_top_langs": [ + "Javanese", + "Sunda", + "Malay", + "Madura" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Ekagi", + "country": "Indonesia", + "lang": "Ekari", + "rol3": "ekg", + "pct_christian": 75.0, + "pop": 170000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.83, + "lng": 136.16, + "code": "PG022913" + }, + { + "name": "Damal", + "country": "Indonesia", + "lang": "Damal", + "rol3": "uhn", + "pct_christian": 75.0, + "pop": 19500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.95, + "lng": 137.47, + "code": "PG022898" + }, + { + "name": "Waropen", + "country": "Indonesia", + "lang": "Waropen", + "rol3": "wrp", + "pct_christian": 75.0, + "pop": 9800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.32, + "lng": 136.75, + "code": "PG023089" + }, + { + "name": "Kayan River Kenyah", + "country": "Indonesia", + "lang": "Kenyah, Mainstream", + "rol3": "xkl", + "pct_christian": 75.0, + "pop": 9700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 1.79, + "lng": 115.19, + "code": "PG022573" + }, + { + "name": "Wandamen", + "country": "Indonesia", + "lang": "Wamesa", + "rol3": "wad", + "pct_christian": 75.0, + "pop": 7300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.19, + "lng": 133.96, + "code": "PG023082" + }, + { + "name": "Siagha-Yenimu", + "country": "Indonesia", + "lang": "Awyu, Edera", + "rol3": "awy", + "pct_christian": 75.0, + "pop": 4500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -7.15, + "lng": 139.79, + "code": "PG047129" + }, + { + "name": "Sobei", + "country": "Indonesia", + "lang": "Sobei", + "rol3": "sob", + "pct_christian": 75.0, + "pop": 3000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.9, + "lng": 138.76, + "code": "PG023048" + }, + { + "name": "Turu", + "country": "Indonesia", + "lang": "Iau", + "rol3": "tmu", + "pct_christian": 75.0, + "pop": 1700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.23, + "lng": 137.67, + "code": "PG023073" + }, + { + "name": "Serui-Laut", + "country": "Indonesia", + "lang": "Serui-Laut", + "rol3": "seu", + "pct_christian": 75.0, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.88, + "lng": 136.25, + "code": "PG023046" + }, + { + "name": "Kelinyau Kenyah", + "country": "Indonesia", + "lang": "Kenyah, Mainstream", + "rol3": "xkl", + "pct_christian": 75.0, + "pop": 1400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 0.97, + "lng": 116.7, + "code": "PG022574" + }, + { + "name": "Sekar", + "country": "Indonesia", + "lang": "Sekar", + "rol3": "skz", + "pct_christian": 75.0, + "pop": 900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.68, + "lng": 132.45, + "code": "PG023040" + }, + { + "name": "Awera", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 75.0, + "pop": 80.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.72, + "lng": 136.08, + "code": "PG022455" + }, + { + "name": "Mor", + "country": "Indonesia", + "lang": "Iha", + "rol3": "ihp", + "pct_christian": 75.0, + "pop": 80.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.84, + "lng": 132.97, + "code": "PG022996" + }, + { + "name": "Dani, Western", + "country": "Indonesia", + "lang": "Dani, Western", + "rol3": "dnw", + "pct_christian": 62.5, + "pop": 266000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.77, + "lng": 138.31, + "code": "PG022902" + }, + { + "name": "Mamasa", + "country": "Indonesia", + "lang": "Mamasa", + "rol3": "mqj", + "pct_christian": 62.5, + "pop": 151000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.93, + "lng": 119.31, + "code": "PG022838" + }, + { + "name": "Dani, Mid Grand Valley", + "country": "Indonesia", + "lang": "Dani, Mid Grand Valley", + "rol3": "dnt", + "pct_christian": 62.5, + "pop": 77000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.09, + "lng": 138.94, + "code": "PG022900" + }, + { + "name": "Jamden", + "country": "Indonesia", + "lang": "Yamdena", + "rol3": "jmd", + "pct_christian": 62.5, + "pop": 56500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -7.72, + "lng": 131.43, + "code": "PG022665" + }, + { + "name": "Bolongan", + "country": "Indonesia", + "lang": "Bulungan", + "rol3": "blj", + "pct_christian": 62.5, + "pop": 40000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 0.38, + "lng": 123.68, + "code": "PG022556" + }, + { + "name": "Kedang", + "country": "Indonesia", + "lang": "Kedang", + "rol3": "ksx", + "pct_christian": 62.5, + "pop": 33500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -8.25, + "lng": 123.76, + "code": "PG022750" + }, + { + "name": "Moni", + "country": "Indonesia", + "lang": "Moni", + "rol3": "mnz", + "pct_christian": 62.5, + "pop": 30500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.6, + "lng": 136.94, + "code": "PG022995" + }, + { + "name": "Kisar", + "country": "Indonesia", + "lang": "Kisar", + "rol3": "kje", + "pct_christian": 62.5, + "pop": 28500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -7.79, + "lng": 126.33, + "code": "PG022683" + }, + { + "name": "Dani, Lower Grand Valley", + "country": "Indonesia", + "lang": "Dani, Lower Grand Valley", + "rol3": "dni", + "pct_christian": 62.5, + "pop": 28500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.26, + "lng": 138.95, + "code": "PG022899" + }, + { + "name": "Dani, Upper Grand Valley", + "country": "Indonesia", + "lang": "Dani, Upper Grand Valley", + "rol3": "dna", + "pct_christian": 62.5, + "pop": 28500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.95, + "lng": 138.86, + "code": "PG022901" + }, + { + "name": "Meyah", + "country": "Indonesia", + "lang": "Meyah", + "rol3": "mej", + "pct_christian": 62.5, + "pop": 25000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.07, + "lng": 133.54, + "code": "PG022988" + }, + { + "name": "Alune", + "country": "Indonesia", + "lang": "Alune", + "rol3": "alp", + "pct_christian": 62.5, + "pop": 23000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.08, + "lng": 128.41, + "code": "PG022622" + }, + { + "name": "Galumpang", + "country": "Indonesia", + "lang": "Kalumpang", + "rol3": "kli", + "pct_christian": 62.5, + "pop": 23000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.51, + "lng": 119.48, + "code": "PG022810" + }, + { + "name": "Tabaru", + "country": "Indonesia", + "lang": "Tabaru", + "rol3": "tby", + "pct_christian": 62.5, + "pop": 22500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 0.75, + "lng": 127.64, + "code": "PG022716" + }, + { + "name": "Bantik", + "country": "Indonesia", + "lang": "Malay, Manado", + "rol3": "xmm", + "pct_christian": 62.5, + "pop": 20000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 1.5, + "lng": 124.84, + "code": "PG022789" + }, + { + "name": "Sougb", + "country": "Indonesia", + "lang": "Sougb", + "rol3": "mnx", + "pct_christian": 62.5, + "pop": 19500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.52, + "lng": 134.05, + "code": "PG022979" + }, + { + "name": "Nduga", + "country": "Indonesia", + "lang": "Nduga", + "rol3": "ndx", + "pct_christian": 62.5, + "pop": 17000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.03, + "lng": 138.05, + "code": "PG023007" + }, + { + "name": "Ngalum", + "country": "Indonesia", + "lang": "Ngalum", + "rol3": "szb", + "pct_christian": 62.5, + "pop": 16500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.84, + "lng": 140.6, + "code": "PG023008" + }, + { + "name": "Asmat Casuarina", + "country": "Indonesia", + "lang": "Asmat, Casuarina Coast", + "rol3": "asc", + "pct_christian": 62.5, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -6.18, + "lng": 138.46, + "code": "PG022450" + }, + { + "name": "Kupel", + "country": "Indonesia", + "lang": "Ketengban", + "rol3": "xte", + "pct_christian": 62.5, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.36, + "lng": 140.41, + "code": "PG022964" + }, + { + "name": "Tehit", + "country": "Indonesia", + "lang": "Tehit", + "rol3": "kps", + "pct_christian": 62.5, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.36, + "lng": 131.98, + "code": "PG023068" + }, + { + "name": "Kamoro", + "country": "Indonesia", + "lang": "Kamoro", + "rol3": "kgq", + "pct_christian": 62.5, + "pop": 13000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.51, + "lng": 136.26, + "code": "PG022935" + }, + { + "name": "Leboni", + "country": "Indonesia", + "lang": "Rampi", + "rol3": "lje", + "pct_christian": 62.5, + "pop": 12500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.13, + "lng": 120.3, + "code": "PG022827" + }, + { + "name": "Dobel", + "country": "Indonesia", + "lang": "Dobel", + "rol3": "kvo", + "pct_christian": 62.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -6.2, + "lng": 134.63, + "code": "PG022642" + }, + { + "name": "Meninggo", + "country": "Indonesia", + "lang": "Moskona", + "rol3": "mtj", + "pct_christian": 62.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.57, + "lng": 133.18, + "code": "PG022990" + }, + { + "name": "Southeast Marind", + "country": "Indonesia", + "lang": "Marind", + "rol3": "mrz", + "pct_christian": 62.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -8.04, + "lng": 140.21, + "code": "PG023051" + }, + { + "name": "Selaru", + "country": "Indonesia", + "lang": "Selaru", + "rol3": "slu", + "pct_christian": 62.5, + "pop": 11000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -8.2, + "lng": 130.97, + "code": "PG022706" + }, + { + "name": "Amberbaken", + "country": "Indonesia", + "lang": "Mpur", + "rol3": "akc", + "pct_christian": 62.5, + "pop": 10500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -0.73, + "lng": 133.16, + "code": "PG022444" + }, + { + "name": "Kulawi", + "country": "Indonesia", + "lang": "Moma", + "rol3": "myl", + "pct_christian": 62.5, + "pop": 9300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.64, + "lng": 119.96, + "code": "PG022822" + }, + { + "name": "Muyu North", + "country": "Indonesia", + "lang": "Muyu, North", + "rol3": "kti", + "pct_christian": 62.5, + "pop": 9300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -5.44, + "lng": 140.79, + "code": "PG023016" + }, + { + "name": "Iha", + "country": "Indonesia", + "lang": "Iha", + "rol3": "ihp", + "pct_christian": 62.5, + "pop": 9000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.82, + "lng": 132.32, + "code": "PG022922" + }, + { + "name": "Wemale, North", + "country": "Indonesia", + "lang": "Wemale", + "rol3": "weo", + "pct_christian": 62.5, + "pop": 8900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.07, + "lng": 128.83, + "code": "PG022694" + }, + { + "name": "Seko Padang", + "country": "Indonesia", + "lang": "Seko Padang", + "rol3": "skx", + "pct_christian": 62.5, + "pop": 8100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.21, + "lng": 119.85, + "code": "PG022864" + }, + { + "name": "Saparua", + "country": "Indonesia", + "lang": "Malay, Ambonese", + "rol3": "abs", + "pct_christian": 62.5, + "pop": 7800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.55, + "lng": 128.66, + "code": "PG022704" + }, + { + "name": "Ansus", + "country": "Indonesia", + "lang": "Ansus", + "rol3": "and", + "pct_christian": 62.5, + "pop": 7500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.72, + "lng": 135.78, + "code": "PG022446" + }, + { + "name": "Awyu Asue", + "country": "Indonesia", + "lang": "Awyu, Asue", + "rol3": "psa", + "pct_christian": 62.5, + "pop": 7500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -6.09, + "lng": 139.15, + "code": "PG022457" + }, + { + "name": "Ndao", + "country": "Indonesia", + "lang": "Dhao", + "rol3": "nfa", + "pct_christian": 62.5, + "pop": 7100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -10.82, + "lng": 122.66, + "code": "PG022765" + }, + { + "name": "Irahutu", + "country": "Indonesia", + "lang": "Irarutu", + "rol3": "irh", + "pct_christian": 62.5, + "pop": 6600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.05, + "lng": 133.32, + "code": "PG022924" + }, + { + "name": "Taliabo", + "country": "Indonesia", + "lang": "Taliabu", + "rol3": "tlv", + "pct_christian": 62.5, + "pop": 6000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.81, + "lng": 125.36, + "code": "PG022717" + }, + { + "name": "Nimboran", + "country": "Indonesia", + "lang": "Malay, Papuan", + "rol3": "pmy", + "pct_christian": 62.5, + "pop": 5700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.59, + "lng": 140.2, + "code": "PG023010" + }, + { + "name": "Tamagario", + "country": "Indonesia", + "lang": "Tamagario", + "rol3": "tcg", + "pct_christian": 62.5, + "pop": 5700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -6.64, + "lng": 138.92, + "code": "PG023056" + }, + { + "name": "Tepera", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 5700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.46, + "lng": 140.39, + "code": "PG023069" + }, + { + "name": "Hupla", + "country": "Indonesia", + "lang": "Hupla", + "rol3": "hap", + "pct_christian": 62.5, + "pop": 5400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.35, + "lng": 139.17, + "code": "PG022921" + }, + { + "name": "Seluwasan", + "country": "Indonesia", + "lang": "Seluwasan", + "rol3": "sws", + "pct_christian": 62.5, + "pop": 5300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -7.67, + "lng": 131.23, + "code": "PG022707" + }, + { + "name": "Sawuy", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 5100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -10.54, + "lng": 121.85, + "code": "PG023038" + }, + { + "name": "Babar Tenggara", + "country": "Indonesia", + "lang": "Babar, Southeast", + "rol3": "vbb", + "pct_christian": 62.5, + "pop": 5000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -7.96, + "lng": 129.8, + "code": "PG022628" + }, + { + "name": "Eipomek", + "country": "Indonesia", + "lang": "Lik", + "rol3": "eip", + "pct_christian": 62.5, + "pop": 4900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.36, + "lng": 140.03, + "code": "PG022912" + }, + { + "name": "Wambon", + "country": "Indonesia", + "lang": "Wambon", + "rol3": "wms", + "pct_christian": 62.5, + "pop": 4900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -5.47, + "lng": 140.51, + "code": "PG023080" + }, + { + "name": "Liana-Seti", + "country": "Indonesia", + "lang": "Liana-Seti", + "rol3": "ste", + "pct_christian": 62.5, + "pop": 4700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.12, + "lng": 129.89, + "code": "PG022710" + }, + { + "name": "Muyu South", + "country": "Indonesia", + "lang": "Muyu, South", + "rol3": "kts", + "pct_christian": 62.5, + "pop": 4600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -6.01, + "lng": 140.84, + "code": "PG023052" + }, + { + "name": "Kalabra", + "country": "Indonesia", + "lang": "Kalabra", + "rol3": "kzz", + "pct_christian": 62.5, + "pop": 4400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.37, + "lng": 131.65, + "code": "PG022932" + }, + { + "name": "Nipsan", + "country": "Indonesia", + "lang": "Nipsan", + "rol3": "nps", + "pct_christian": 62.5, + "pop": 3700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.23, + "lng": 139.04, + "code": "PG023012" + }, + { + "name": "Seko, Central", + "country": "Indonesia", + "lang": "Seko Tengah", + "rol3": "sko", + "pct_christian": 62.5, + "pop": 3600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.49, + "lng": 119.82, + "code": "PG022865" + }, + { + "name": "Padoe", + "country": "Indonesia", + "lang": "Padoe", + "rol3": "pdo", + "pct_christian": 62.5, + "pop": 3400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.46, + "lng": 121.05, + "code": "PG022868" + }, + { + "name": "Nafri", + "country": "Indonesia", + "lang": "Malay, Papuan", + "rol3": "pmy", + "pct_christian": 62.5, + "pop": 3400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.67, + "lng": 140.74, + "code": "PG023003" + }, + { + "name": "Pom", + "country": "Indonesia", + "lang": "Pom", + "rol3": "pmo", + "pct_christian": 62.5, + "pop": 3300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.65, + "lng": 135.63, + "code": "PG023024" + }, + { + "name": "Kurudu", + "country": "Indonesia", + "lang": "Kurudu", + "rol3": "kjr", + "pct_christian": 62.5, + "pop": 3200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.85, + "lng": 137.01, + "code": "PG022966" + }, + { + "name": "Yaosakor Asmat", + "country": "Indonesia", + "lang": "Asmat, Yaosakor", + "rol3": "asy", + "pct_christian": 62.5, + "pop": 3000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -5.62, + "lng": 138.54, + "code": "PG023099" + }, + { + "name": "Mairasi", + "country": "Indonesia", + "lang": "Mairasi", + "rol3": "zrs", + "pct_christian": 62.5, + "pop": 2800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.47, + "lng": 134.02, + "code": "PG022976" + }, + { + "name": "Marau", + "country": "Indonesia", + "lang": "Marau", + "rol3": "mvr", + "pct_christian": 62.5, + "pop": 2800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.68, + "lng": 135.79, + "code": "PG022982" + }, + { + "name": "Somahai", + "country": "Indonesia", + "lang": "Momuna", + "rol3": "mqf", + "pct_christian": 62.5, + "pop": 2700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -5.0, + "lng": 139.24, + "code": "PG023049" + }, + { + "name": "Uria", + "country": "Indonesia", + "lang": "Orya", + "rol3": "ury", + "pct_christian": 62.5, + "pop": 2700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.84, + "lng": 139.74, + "code": "PG023074" + }, + { + "name": "Inanwatan", + "country": "Indonesia", + "lang": "Suabo", + "rol3": "szp", + "pct_christian": 62.5, + "pop": 2600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.07, + "lng": 132.16, + "code": "PG022923" + }, + { + "name": "Kemberano", + "country": "Indonesia", + "lang": "Kemberano", + "rol3": "bzp", + "pct_christian": 62.5, + "pop": 2500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.37, + "lng": 132.97, + "code": "PG022933" + }, + { + "name": "Saberi", + "country": "Indonesia", + "lang": "Isirawa", + "rol3": "srl", + "pct_christian": 62.5, + "pop": 2500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.82, + "lng": 138.48, + "code": "PG023030" + }, + { + "name": "Iria", + "country": "Indonesia", + "lang": "Kamberau", + "rol3": "irx", + "pct_christian": 62.5, + "pop": 2300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.45, + "lng": 133.58, + "code": "PG022926" + }, + { + "name": "Riantana", + "country": "Indonesia", + "lang": "Riantana", + "rol3": "ran", + "pct_christian": 62.5, + "pop": 2200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -7.68, + "lng": 138.59, + "code": "PG023028" + }, + { + "name": "Ninggrum", + "country": "Indonesia", + "lang": "Ninggerum", + "rol3": "nxr", + "pct_christian": 62.5, + "pop": 2100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -5.3, + "lng": 140.95, + "code": "PG023011" + }, + { + "name": "Woi", + "country": "Indonesia", + "lang": "Woi", + "rol3": "wbw", + "pct_christian": 62.5, + "pop": 2100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.64, + "lng": 135.5, + "code": "PG023092" + }, + { + "name": "Mekwei", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 2000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.51, + "lng": 140.37, + "code": "PG022989" + }, + { + "name": "Seget", + "country": "Indonesia", + "lang": "Moi Lemas", + "rol3": "sbg", + "pct_christian": 62.5, + "pop": 1900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.34, + "lng": 131.17, + "code": "PG023039" + }, + { + "name": "Demta", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 1800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.37, + "lng": 140.16, + "code": "PG022906" + }, + { + "name": "Berik", + "country": "Indonesia", + "lang": "Berik", + "rol3": "bkl", + "pct_christian": 62.5, + "pop": 1700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.35, + "lng": 138.86, + "code": "PG022467" + }, + { + "name": "Bonfia", + "country": "Indonesia", + "lang": "Masiwang", + "rol3": "bnf", + "pct_christian": 62.5, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.39, + "lng": 130.57, + "code": "PG022636" + }, + { + "name": "Davelor", + "country": "Indonesia", + "lang": "Dawera-Daweloor", + "rol3": "ddw", + "pct_christian": 62.5, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -7.75, + "lng": 130.04, + "code": "PG022641" + }, + { + "name": "Dem", + "country": "Indonesia", + "lang": "Dem", + "rol3": "dem", + "pct_christian": 62.5, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.73, + "lng": 137.58, + "code": "PG022904" + }, + { + "name": "Kamberataro", + "country": "Indonesia", + "lang": "Dla", + "rol3": "kbv", + "pct_christian": 62.5, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.54, + "lng": 140.96, + "code": "PG022934" + }, + { + "name": "Kaugat", + "country": "Indonesia", + "lang": "Atohwaim", + "rol3": "aqm", + "pct_christian": 62.5, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -6.28, + "lng": 138.68, + "code": "PG022943" + }, + { + "name": "Moraid", + "country": "Indonesia", + "lang": "Moraid", + "rol3": "msg", + "pct_christian": 62.5, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.05, + "lng": 131.88, + "code": "PG022998" + }, + { + "name": "Ndom", + "country": "Indonesia", + "lang": "Ndom", + "rol3": "nqm", + "pct_christian": 62.5, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -8.09, + "lng": 138.0, + "code": "PG023006" + }, + { + "name": "Sempan", + "country": "Indonesia", + "lang": "Sempan", + "rol3": "xse", + "pct_christian": 62.5, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -5.04, + "lng": 137.68, + "code": "PG023043" + }, + { + "name": "Waris", + "country": "Indonesia", + "lang": "Waris", + "rol3": "wrs", + "pct_christian": 62.5, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.24, + "lng": 140.93, + "code": "PG023087" + }, + { + "name": "Northern Asmat", + "country": "Indonesia", + "lang": "Asmat, North", + "rol3": "nks", + "pct_christian": 62.5, + "pop": 1500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.69, + "lng": 138.52, + "code": "PG023015" + }, + { + "name": "Semimi", + "country": "Indonesia", + "lang": "Semimi", + "rol3": "etz", + "pct_christian": 62.5, + "pop": 1500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.77, + "lng": 134.45, + "code": "PG023042" + }, + { + "name": "Panasuan", + "country": "Indonesia", + "lang": "Panasuan", + "rol3": "psn", + "pct_christian": 62.5, + "pop": 1400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.26, + "lng": 119.65, + "code": "PG022852" + }, + { + "name": "Talondo", + "country": "Indonesia", + "lang": "Talondo’", + "rol3": "tln", + "pct_christian": 62.5, + "pop": 1300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.51, + "lng": 119.34, + "code": "PG022874" + }, + { + "name": "Asienara, Buruwai", + "country": "Indonesia", + "lang": "Buruwai", + "rol3": "asi", + "pct_christian": 62.5, + "pop": 1200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.59, + "lng": 133.34, + "code": "PG022452" + }, + { + "name": "Duvele", + "country": "Indonesia", + "lang": "Duvle", + "rol3": "duv", + "pct_christian": 62.5, + "pop": 1200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.16, + "lng": 137.97, + "code": "PG022911" + }, + { + "name": "Taikat", + "country": "Indonesia", + "lang": "Taikat", + "rol3": "aos", + "pct_christian": 62.5, + "pop": 1200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.86, + "lng": 140.65, + "code": "PG023055" + }, + { + "name": "Masela, West", + "country": "Indonesia", + "lang": "Masela, West", + "rol3": "mss", + "pct_christian": 62.5, + "pop": 1100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -8.19, + "lng": 129.83, + "code": "PG022735" + }, + { + "name": "Kayupulau", + "country": "Indonesia", + "lang": "Malay, Papuan", + "rol3": "pmy", + "pct_christian": 62.5, + "pop": 1100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.54, + "lng": 140.72, + "code": "PG022949" + }, + { + "name": "Papuma", + "country": "Indonesia", + "lang": "Papuma", + "rol3": "ppm", + "pct_christian": 62.5, + "pop": 1100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.74, + "lng": 135.86, + "code": "PG023022" + }, + { + "name": "Wanggom", + "country": "Indonesia", + "lang": "Wanggom", + "rol3": "wng", + "pct_christian": 62.5, + "pop": 1100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -5.55, + "lng": 140.17, + "code": "PG023083" + }, + { + "name": "Dai", + "country": "Indonesia", + "lang": "Dai", + "rol3": "dij", + "pct_christian": 62.5, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -7.55, + "lng": 129.69, + "code": "PG022640" + }, + { + "name": "Kaburi", + "country": "Indonesia", + "lang": "Kaburi", + "rol3": "uka", + "pct_christian": 62.5, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.91, + "lng": 132.48, + "code": "PG022929" + }, + { + "name": "Kampung Baru", + "country": "Indonesia", + "lang": "Kais", + "rol3": "kzm", + "pct_christian": 62.5, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.73, + "lng": 132.29, + "code": "PG022936" + }, + { + "name": "Puragi", + "country": "Indonesia", + "lang": "Puragi", + "rol3": "pru", + "pct_christian": 62.5, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.94, + "lng": 132.24, + "code": "PG023025" + }, + { + "name": "Tanahmerah", + "country": "Indonesia", + "lang": "Tanahmerah", + "rol3": "tcm", + "pct_christian": 62.5, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.56, + "lng": 133.17, + "code": "PG023058" + }, + { + "name": "Masela, East", + "country": "Indonesia", + "lang": "Malay, Ambonese", + "rol3": "abs", + "pct_christian": 62.5, + "pop": 950.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -8.14, + "lng": 129.87, + "code": "PG022644" + }, + { + "name": "Masela, Central", + "country": "Indonesia", + "lang": "Masela, West", + "rol3": "mss", + "pct_christian": 62.5, + "pop": 950.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -8.18, + "lng": 129.84, + "code": "PG022712" + }, + { + "name": "Mawes", + "country": "Indonesia", + "lang": "Mawes", + "rol3": "mgk", + "pct_christian": 62.5, + "pop": 950.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.36, + "lng": 139.67, + "code": "PG022987" + }, + { + "name": "Bonggo", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.31, + "lng": 139.57, + "code": "PG022471" + }, + { + "name": "Kaibubu", + "country": "Indonesia", + "lang": "Malay, Ambonese", + "rol3": "abs", + "pct_christian": 62.5, + "pop": 900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.16, + "lng": 128.22, + "code": "PG022667" + }, + { + "name": "Keder", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.04, + "lng": 139.05, + "code": "PG022950" + }, + { + "name": "Bonefa", + "country": "Indonesia", + "lang": "Nisa", + "rol3": "njs", + "pct_christian": 62.5, + "pop": 800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.34, + "lng": 137.23, + "code": "PG022470" + }, + { + "name": "Konda", + "country": "Indonesia", + "lang": "Konda", + "rol3": "knd", + "pct_christian": 62.5, + "pop": 800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.56, + "lng": 132.01, + "code": "PG022957" + }, + { + "name": "Lepki", + "country": "Indonesia", + "lang": "Lepki", + "rol3": "lpe", + "pct_christian": 62.5, + "pop": 800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.13, + "lng": 140.48, + "code": "PG022973" + }, + { + "name": "Manem", + "country": "Indonesia", + "lang": "Manem", + "rol3": "jet", + "pct_christian": 62.5, + "pop": 800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.97, + "lng": 140.9, + "code": "PG022978" + }, + { + "name": "Yelmek", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -7.44, + "lng": 139.16, + "code": "PG023105" + }, + { + "name": "Kanum", + "country": "Indonesia", + "lang": "Kanum, Ngkâlmpw", + "rol3": "kcd", + "pct_christian": 62.5, + "pop": 750.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -8.51, + "lng": 140.84, + "code": "PG022938" + }, + { + "name": "Tarunggare", + "country": "Indonesia", + "lang": "Tunggare", + "rol3": "trt", + "pct_christian": 62.5, + "pop": 750.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.28, + "lng": 135.6, + "code": "PG023063" + }, + { + "name": "Kwansu", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.57, + "lng": 140.29, + "code": "PG022968" + }, + { + "name": "Papasena", + "country": "Indonesia", + "lang": "Papasena", + "rol3": "pas", + "pct_christian": 62.5, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.8, + "lng": 138.63, + "code": "PG023021" + }, + { + "name": "Samarkena", + "country": "Indonesia", + "lang": "Samarokena", + "rol3": "tmj", + "pct_christian": 62.5, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.83, + "lng": 138.26, + "code": "PG023031" + }, + { + "name": "Tarpia", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.37, + "lng": 140.05, + "code": "PG023062" + }, + { + "name": "Baburiwa", + "country": "Indonesia", + "lang": "Eritai", + "rol3": "ert", + "pct_christian": 62.5, + "pop": 600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.73, + "lng": 138.12, + "code": "PG022459" + }, + { + "name": "Serili", + "country": "Indonesia", + "lang": "Malay, Ambonese", + "rol3": "abs", + "pct_christian": 62.5, + "pop": 600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -8.11, + "lng": 129.91, + "code": "PG022708" + }, + { + "name": "Kaure", + "country": "Indonesia", + "lang": "Malay, Papuan", + "rol3": "pmy", + "pct_christian": 62.5, + "pop": 600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.24, + "lng": 140.11, + "code": "PG022944" + }, + { + "name": "Koneraw", + "country": "Indonesia", + "lang": "Koneraw", + "rol3": "kdw", + "pct_christian": 62.5, + "pop": 600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -8.36, + "lng": 138.07, + "code": "PG022958" + }, + { + "name": "Wakde", + "country": "Indonesia", + "lang": "Mo", + "rol3": "wkd", + "pct_christian": 62.5, + "pop": 600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.99, + "lng": 138.99, + "code": "PG023078" + }, + { + "name": "Sukubatong", + "country": "Indonesia", + "lang": "Kimki", + "rol3": "sbt", + "pct_christian": 62.5, + "pop": 550.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.37, + "lng": 140.91, + "code": "PG023054" + }, + { + "name": "Taori-So", + "country": "Indonesia", + "lang": "Doutai", + "rol3": "tds", + "pct_christian": 62.5, + "pop": 475.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.31, + "lng": 138.14, + "code": "PG023061" + }, + { + "name": "Yotafa", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 475.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.58, + "lng": 140.68, + "code": "PG023109" + }, + { + "name": "Lorang", + "country": "Indonesia", + "lang": "Lorang", + "rol3": "lrn", + "pct_christian": 62.5, + "pop": 450.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -6.3, + "lng": 134.42, + "code": "PG022685" + }, + { + "name": "Kirira", + "country": "Indonesia", + "lang": "Kirikiri", + "rol3": "kiy", + "pct_christian": 62.5, + "pop": 450.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.18, + "lng": 137.18, + "code": "PG022953" + }, + { + "name": "Saweru", + "country": "Indonesia", + "lang": "Saweru", + "rol3": "swr", + "pct_christian": 62.5, + "pop": 450.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -1.91, + "lng": 136.29, + "code": "PG023037" + }, + { + "name": "Yamna", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 450.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.1, + "lng": 139.21, + "code": "PG023098" + }, + { + "name": "Masimasi", + "country": "Indonesia", + "lang": "Malay, Papuan", + "rol3": "pmy", + "pct_christian": 62.5, + "pop": 425.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.0, + "lng": 139.14, + "code": "PG022984" + }, + { + "name": "Sause", + "country": "Indonesia", + "lang": "Sause", + "rol3": "sao", + "pct_christian": 62.5, + "pop": 425.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.24, + "lng": 139.62, + "code": "PG023036" + }, + { + "name": "Biksi", + "country": "Indonesia", + "lang": "Yetfa", + "rol3": "yet", + "pct_christian": 62.5, + "pop": 400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -4.04, + "lng": 140.79, + "code": "PG022469" + }, + { + "name": "Karas", + "country": "Indonesia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 62.5, + "pop": 400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.45, + "lng": 132.68, + "code": "PG022940" + }, + { + "name": "Sasawa", + "country": "Indonesia", + "lang": "Kwerba", + "rol3": "kwe", + "pct_christian": 62.5, + "pop": 400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.18, + "lng": 138.47, + "code": "PG023034" + }, + { + "name": "Yeretuar", + "country": "Indonesia", + "lang": "Yeretuar", + "rol3": "gop", + "pct_christian": 62.5, + "pop": 400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.04, + "lng": 134.68, + "code": "PG023106" + }, + { + "name": "Foau", + "country": "Indonesia", + "lang": "Foau", + "rol3": "flh", + "pct_christian": 62.5, + "pop": 375.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.99, + "lng": 139.29, + "code": "PG022917" + }, + { + "name": "Kosare", + "country": "Indonesia", + "lang": "Kosare", + "rol3": "kiq", + "pct_christian": 62.5, + "pop": 375.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.75, + "lng": 140.22, + "code": "PG022962" + }, + { + "name": "Rasawa", + "country": "Indonesia", + "lang": "Rasawa", + "rol3": "rac", + "pct_christian": 62.5, + "pop": 350.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -2.35, + "lng": 136.41, + "code": "PG023027" + }, + { + "name": "Elseng", + "country": "Indonesia", + "lang": "Elseng", + "rol3": "mrf", + "pct_christian": 62.5, + "pop": 325.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": -3.1, + "lng": 140.39, + "code": "PG023000" + } + ] + }, + "Bangladesh": { + "target_upg": 276, + "target_pop": 172467300, + "target_top_langs": [ + "Bengali", + "Sylheti", + "Rohingya", + "Urdu" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Garo", + "country": "Bangladesh", + "lang": "Garo", + "rol3": "grt", + "pct_christian": 62.5, + "pop": 137000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.79, + "lng": 90.47, + "code": "PG001167" + }, + { + "name": "Pangkhu", + "country": "Bangladesh", + "lang": "Pangkhua", + "rol3": "pkh", + "pct_christian": 62.5, + "pop": 5400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 22.85, + "lng": 92.38, + "code": "PG001197" + }, + { + "name": "Santal", + "country": "Bangladesh", + "lang": "Santhali", + "rol3": "sat", + "pct_christian": 45.0, + "pop": 210000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.62, + "lng": 88.79, + "code": "PG001203" + }, + { + "name": "Migam", + "country": "Bangladesh", + "lang": "Megam", + "rol3": "mef", + "pct_christian": 45.0, + "pop": 8700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.09, + "lng": 91.0, + "code": "PG001190" + }, + { + "name": "Southern Chin", + "country": "Bangladesh", + "lang": "Chin, Asho", + "rol3": "csh", + "pct_christian": 45.0, + "pop": 4600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.96, + "lng": 92.37, + "code": "PG001206" + }, + { + "name": "Riang", + "country": "Bangladesh", + "lang": "Riang", + "rol3": "ria", + "pct_christian": 45.0, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.56, + "lng": 92.27, + "code": "PG001200" + }, + { + "name": "Mahale", + "country": "Bangladesh", + "lang": "Santhali", + "rol3": "sat", + "pct_christian": 35.0, + "pop": 25000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.62, + "lng": 88.78, + "code": "PG001187" + }, + { + "name": "Khumi Chin", + "country": "Bangladesh", + "lang": "Chin, Khumi", + "rol3": "cnk", + "pct_christian": 35.0, + "pop": 2800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.8, + "lng": 92.5, + "code": "PG001180" + }, + { + "name": "Lushai", + "country": "Bangladesh", + "lang": "Mizo", + "rol3": "lus", + "pct_christian": 35.0, + "pop": 2000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 22.67, + "lng": 92.19, + "code": "PG001185" + }, + { + "name": "Koch", + "country": "Bangladesh", + "lang": "Koch", + "rol3": "kdq", + "pct_christian": 25.0, + "pop": 7100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 25.79, + "lng": 89.7, + "code": "PG001181" + }, + { + "name": "Munda", + "country": "Bangladesh", + "lang": "Mundari", + "rol3": "unr", + "pct_christian": 25.0, + "pop": 5800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 25.4, + "lng": 88.78, + "code": "PG001192" + }, + { + "name": "Oraon", + "country": "Bangladesh", + "lang": "Kurux", + "rol3": "kru", + "pct_christian": 7.5, + "pop": 89500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 25.86, + "lng": 88.88, + "code": "PG001195" + }, + { + "name": "Han Chinese", + "country": "Bangladesh", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 3500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 23.75, + "lng": 90.4, + "code": "PG001172" + }, + { + "name": "Marma", + "country": "Bangladesh", + "lang": "Marma", + "rol3": "rmz", + "pct_christian": 3.5, + "pop": 276000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 22.56, + "lng": 92.24, + "code": "PG001189" + }, + { + "name": "Tripuri", + "country": "Bangladesh", + "lang": "Kok Borok", + "rol3": "trp", + "pct_christian": 3.5, + "pop": 142000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 23.74, + "lng": 91.28, + "code": "PG001215" + }, + { + "name": "Manipuri", + "country": "Bangladesh", + "lang": "Meitei", + "rol3": "mni", + "pct_christian": 3.5, + "pop": 44000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 24.73, + "lng": 91.74, + "code": "PG001188" + }, + { + "name": "Mru", + "country": "Bangladesh", + "lang": "Mru", + "rol3": "mro", + "pct_christian": 3.5, + "pop": 35000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 21.71, + "lng": 92.45, + "code": "PG001191" + }, + { + "name": "Bawm", + "country": "Bangladesh", + "lang": "Chin, Bawm", + "rol3": "bgr", + "pct_christian": 3.5, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.95, + "lng": 92.46, + "code": "PG001153" + }, + { + "name": "British", + "country": "Bangladesh", + "lang": "English", + "rol3": "eng", + "pct_christian": 3.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated", + "lat": 23.73, + "lng": 90.42, + "code": "PG001159" + }, + { + "name": "Hajong", + "country": "Bangladesh", + "lang": "Hajong", + "rol3": "haj", + "pct_christian": 3.5, + "pop": 9500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 25.11, + "lng": 90.37, + "code": "PG001170" + }, + { + "name": "Mara", + "country": "Bangladesh", + "lang": "Shendu", + "rol3": "shl", + "pct_christian": 3.5, + "pop": 2000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 22.2, + "lng": 92.54, + "code": "PG001204" + }, + { + "name": "Ansari-Momin (Sadri)", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 75.0, + "pop": 225.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 23.63, + "lng": 85.55, + "code": "PG048700" + }, + { + "name": "Pnar", + "country": "India", + "lang": "Pnar", + "rol3": "pbv", + "pct_christian": 62.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 23.84, + "lng": 92.89, + "code": "PG049638" + }, + { + "name": "Rathodia", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 62.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 22.3, + "lng": 73.39, + "code": "PG048948" + }, + { + "name": "Bagti", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 62.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 23.28, + "lng": 86.43, + "code": "PG049044" + }, + { + "name": "Khasi", + "country": "India", + "lang": "Khasi", + "rol3": "kha", + "pct_christian": 45.0, + "pop": 1675000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 25.52, + "lng": 91.79, + "code": "PG041380" + }, + { + "name": "Santal (Oriya)", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 45.0, + "pop": 176000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.8, + "lng": 87.48, + "code": "PG046353" + }, + { + "name": "Madgi", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 25.0, + "pop": 76500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 20.17, + "lng": 79.45, + "code": "PG041802" + }, + { + "name": "Mech", + "country": "India", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 25.0, + "pop": 73500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 27.1, + "lng": 92.43, + "code": "PG041900" + }, + { + "name": "Godari", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 25.0, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 17.69, + "lng": 83.22, + "code": "PG049205" + }, + { + "name": "Ghogia", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 25.0, + "pop": 800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.15, + "lng": 84.09, + "code": "PG049008" + }, + { + "name": "Burmese", + "country": "Germany", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 25.0, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 50.0, + "lng": 8.01, + "code": "PG033529" + }, + { + "name": "Arakala", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 25.0, + "pop": 375.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 18.11, + "lng": 83.4, + "code": "PG049160" + }, + { + "name": "Mala", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 17.5, + "pop": 7615000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 16.36, + "lng": 79.51, + "code": "PG041263" + }, + { + "name": "Balmiki (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 17.5, + "pop": 1295000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.44, + "lng": 75.81, + "code": "PG048195" + }, + { + "name": "Nadia", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 17.5, + "pop": 69500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG041830" + }, + { + "name": "Ojha", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 17.5, + "pop": 46000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.74, + "lng": 78.25, + "code": "PG041974" + }, + { + "name": "Goudu", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 17.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 17.71, + "lng": 83.25, + "code": "PG042158" + }, + { + "name": "Sutar (Gujarati)", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 17.5, + "pop": 11000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.4, + "lng": 71.23, + "code": "PG048301" + }, + { + "name": "Barmi", + "country": "India", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 17.5, + "pop": 600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 12.6, + "lng": 92.83, + "code": "PG048889" + }, + { + "name": "Bari (Oriya)", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 17.5, + "pop": 550.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 20.86, + "lng": 84.8, + "code": "PG048204" + }, + { + "name": "Candhai Maru", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 17.5, + "pop": 350.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.48, + "lng": 83.97, + "code": "PG049648" + }, + { + "name": "Madiga", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 9445000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 16.51, + "lng": 79.06, + "code": "PG041253" + }, + { + "name": "Chakkiliyan", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 1205000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.61, + "lng": 77.71, + "code": "PG041373" + }, + { + "name": "Nadua Shabar", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 12.5, + "pop": 659000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 19.9, + "lng": 85.17, + "code": "PG049502" + }, + { + "name": "Senva", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 12.5, + "pop": 161000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG041682" + }, + { + "name": "Bawa Dedh", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 12.5, + "pop": 34500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG042035" + }, + { + "name": "Panchama", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 7800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 17.01, + "lng": 81.79, + "code": "PG042086" + }, + { + "name": "Padigarajulu", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 15.58, + "lng": 79.51, + "code": "PG049165" + }, + { + "name": "Kuda", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 12.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 20.83, + "lng": 85.53, + "code": "PG049016" + }, + { + "name": "Gagra", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 12.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.84, + "lng": 75.86, + "code": "PG049079" + }, + { + "name": "Tharua", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 12.5, + "pop": 650.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.49, + "lng": 86.93, + "code": "PG049031" + }, + { + "name": "Dusadh", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 7.5, + "pop": 6910000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 25.23, + "lng": 85.31, + "code": "PG041266" + }, + { + "name": "Santal (Bengali)", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 3350000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 24.0, + "lng": 88.81, + "code": "PG046352" + }, + { + "name": "Pano", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 7.5, + "pop": 1735000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 21.04, + "lng": 85.14, + "code": "PG041345" + }, + { + "name": "Munda (Assamese)", + "country": "India", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 7.5, + "pop": 1235000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 26.97, + "lng": 94.06, + "code": "PG048248" + }, + { + "name": "Santal (Assamese)", + "country": "India", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 7.5, + "pop": 697000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 26.55, + "lng": 92.86, + "code": "PG046151" + }, + { + "name": "Bhangi (Gujarati)", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 7.5, + "pop": 600000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.76, + "lng": 72.13, + "code": "PG048218" + }, + { + "name": "Lodha, Savar", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 148000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.3, + "lng": 87.43, + "code": "PG041753" + }, + { + "name": "Telugu", + "country": "Malaysia", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 7.5, + "pop": 137000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 3.07, + "lng": 101.62, + "code": "PG009356" + }, + { + "name": "Ghanchi", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 7.5, + "pop": 129000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.02, + "lng": 73.03, + "code": "PG041585" + }, + { + "name": "Mishmi", + "country": "India", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 7.5, + "pop": 51500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 27.99, + "lng": 96.59, + "code": "PG042163" + }, + { + "name": "Badaik", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 7.5, + "pop": 47500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.23, + "lng": 84.86, + "code": "PG042092" + }, + { + "name": "Parhaiya", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 7.5, + "pop": 38000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.97, + "lng": 84.3, + "code": "PG041928" + }, + { + "name": "Mala Dasari", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 7.5, + "pop": 30500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 15.53, + "lng": 78.0, + "code": "PG041919" + }, + { + "name": "Kela", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 29000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 20.46, + "lng": 85.67, + "code": "PG042031" + }, + { + "name": "Baiti", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 27000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 23.24, + "lng": 88.24, + "code": "PG042100" + }, + { + "name": "Chhetri", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 7.5, + "pop": 17000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.34, + "lng": 89.24, + "code": "PG041565" + }, + { + "name": "Thoti", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 7.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 19.26, + "lng": 79.01, + "code": "PG042167" + }, + { + "name": "Bhandari", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 7.5, + "pop": 6500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 20.56, + "lng": 73.13, + "code": "PG041414" + }, + { + "name": "Ellamalawar", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 7.5, + "pop": 6300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 18.37, + "lng": 76.49, + "code": "PG042033" + }, + { + "name": "Gandla", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 7.5, + "pop": 2000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 15.61, + "lng": 79.51, + "code": "PG041598" + }, + { + "name": "Sorgir", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 7.5, + "pop": 1100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.34, + "lng": 76.39, + "code": "PG049092" + }, + { + "name": "Telugu", + "country": "Singapore", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 7.5, + "pop": 850.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 1.36, + "lng": 103.82, + "code": "PG010724" + }, + { + "name": "Gudugudupandi", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 7.5, + "pop": 650.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.88, + "lng": 78.56, + "code": "PG049883" + }, + { + "name": "Banai", + "country": "India", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 7.5, + "pop": 650.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 25.61, + "lng": 90.3, + "code": "PG049560" + }, + { + "name": "Patni Vankar", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 7.5, + "pop": 325.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.04, + "lng": 72.6, + "code": "PG049948" + }, + { + "name": "Yadava (Bhojpuri)", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 3.5, + "pop": 8465000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 25.05, + "lng": 84.06, + "code": "PG046313" + }, + { + "name": "Chamar (Bhojpuri)", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 3.5, + "pop": 4550000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 25.65, + "lng": 84.13, + "code": "PG046025" + }, + { + "name": "Mazabi", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 3625000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 30.25, + "lng": 74.91, + "code": "PG041301" + }, + { + "name": "Mahyavanshi", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 3.5, + "pop": 2305000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.73, + "lng": 71.51, + "code": "PG041327" + }, + { + "name": "Gujarati", + "country": "Pakistan", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 3.5, + "pop": 1460000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.88, + "lng": 70.3, + "code": "PG006352" + }, + { + "name": "Ganda", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 1280000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.6, + "lng": 83.11, + "code": "PG041366" + }, + { + "name": "Ho", + "country": "India", + "lang": "Ho", + "rol3": "hoc", + "pct_christian": 3.5, + "pop": 1180000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 22.28, + "lng": 85.76, + "code": "PG041399" + }, + { + "name": "Gond (Oriya)", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 856000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.12, + "lng": 83.68, + "code": "PG048258" + }, + { + "name": "Kondara", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 702000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 20.46, + "lng": 85.67, + "code": "PG041421" + }, + { + "name": "Bhangi (Bengali)", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 699000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.15, + "lng": 87.53, + "code": "PG048219" + }, + { + "name": "Gond (Assamese)", + "country": "India", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 3.5, + "pop": 550000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 26.95, + "lng": 94.05, + "code": "PG048259" + }, + { + "name": "Adi Andhra", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 344000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 17.06, + "lng": 81.75, + "code": "PG049197" + }, + { + "name": "Lohara", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 3.5, + "pop": 324000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 25.14, + "lng": 87.24, + "code": "PG041542" + }, + { + "name": "Kora", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 279000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 23.29, + "lng": 86.43, + "code": "PG041592" + }, + { + "name": "Beda Jangam", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 234000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 15.11, + "lng": 76.53, + "code": "PG041759" + }, + { + "name": "Chakma", + "country": "India", + "lang": "Chakma", + "rol3": "ccp", + "pct_christian": 3.5, + "pop": 205000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Folk", + "lat": 23.41, + "lng": 92.17, + "code": "PG041710" + }, + { + "name": "Mala Sale", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 169000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 19.26, + "lng": 79.01, + "code": "PG041624" + }, + { + "name": "Domban", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 163000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.35, + "lng": 78.88, + "code": "PG042124" + }, + { + "name": "Gurung", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 147000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 26.84, + "lng": 90.63, + "code": "PG041693" + }, + { + "name": "Nepali", + "country": "Bhutan", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 131000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.13, + "lng": 89.79, + "code": "PG042388" + }, + { + "name": "Beldar (Bhojpuri)", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 3.5, + "pop": 115000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 26.35, + "lng": 83.71, + "code": "PG048209" + }, + { + "name": "Kotia", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 104000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 17.9, + "lng": 82.7, + "code": "PG041783" + }, + { + "name": "Rajbhar", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 3.5, + "pop": 89000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.68, + "lng": 80.47, + "code": "PG042085" + }, + { + "name": "Bhattra (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 79000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 30.98, + "lng": 75.73, + "code": "PG041615" + }, + { + "name": "Bania, Brittial", + "country": "India", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 3.5, + "pop": 71500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 26.14, + "lng": 91.55, + "code": "PG041797" + }, + { + "name": "Damai (Nepali)", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 66500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 26.66, + "lng": 89.08, + "code": "PG041874" + }, + { + "name": "Kunbi (Gujarati)", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 3.5, + "pop": 64000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.24, + "lng": 70.76, + "code": "PG046238" + }, + { + "name": "Mukha Dhora", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 56000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 17.9, + "lng": 82.7, + "code": "PG042032" + }, + { + "name": "Koch", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 51000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 25.68, + "lng": 88.93, + "code": "PG042084" + }, + { + "name": "Bagheti", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 48000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 20.46, + "lng": 85.67, + "code": "PG041964" + }, + { + "name": "Kotal", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 42500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.42, + "lng": 87.79, + "code": "PG041946" + }, + { + "name": "Arain (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 30.37, + "lng": 75.93, + "code": "PG048185" + }, + { + "name": "Omanatya", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 34500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 18.81, + "lng": 82.76, + "code": "PG042004" + }, + { + "name": "Mala Jangam", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 34000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 18.36, + "lng": 76.78, + "code": "PG041898" + }, + { + "name": "Burmese", + "country": "Malaysia", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 3.5, + "pop": 32500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 3.07, + "lng": 101.64, + "code": "PG018483" + }, + { + "name": "Binjhia", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 3.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.0, + "lng": 82.34, + "code": "PG042025" + }, + { + "name": "Bariki", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 19.64, + "lng": 84.68, + "code": "PG041881" + }, + { + "name": "Bargunda", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 31500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.38, + "lng": 75.65, + "code": "PG042022" + }, + { + "name": "Sudugadu Siddha", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 31500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 12.99, + "lng": 76.11, + "code": "PG042143" + }, + { + "name": "Bengali", + "country": "Nepal", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 31000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.42, + "lng": 84.77, + "code": "PG006178" + }, + { + "name": "Gond (Sadri) ", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 3.5, + "pop": 30500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.17, + "lng": 85.0, + "code": "PG048262" + }, + { + "name": "Pap", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 23500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 21.21, + "lng": 83.34, + "code": "PG042122" + }, + { + "name": "Doai", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 21500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.05, + "lng": 88.57, + "code": "PG042134" + }, + { + "name": "Byagara", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 19000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 17.88, + "lng": 78.22, + "code": "PG041825" + }, + { + "name": "Konda Kapu", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 18500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 17.19, + "lng": 82.01, + "code": "PG041904" + }, + { + "name": "Sarki", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 18000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 26.96, + "lng": 88.33, + "code": "PG042059" + }, + { + "name": "Punjabi", + "country": "Singapore", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 15000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 1.36, + "lng": 103.82, + "code": "PG010717" + }, + { + "name": "Telugu", + "country": "Sri Lanka", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 12500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 6.91, + "lng": 79.9, + "code": "PG006443" + }, + { + "name": "Pentia", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 12000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 18.81, + "lng": 82.76, + "code": "PG042165" + }, + { + "name": "Panka (Oriya)", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 19.21, + "lng": 82.51, + "code": "PG049026" + }, + { + "name": "Gorait", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 3.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 23.21, + "lng": 85.33, + "code": "PG042169" + }, + { + "name": "Jaggali", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 9700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 19.64, + "lng": 84.68, + "code": "PG042152" + }, + { + "name": "Paharia", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 9200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.37, + "lng": 86.02, + "code": "PG049049" + }, + { + "name": "Madiga Dasu", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 7400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 16.39, + "lng": 80.11, + "code": "PG049163" + }, + { + "name": "Assamese", + "country": "Bhutan", + "lang": "Assamese", + "rol3": "asm", + "pct_christian": 3.5, + "pop": 7300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 26.87, + "lng": 90.38, + "code": "PG001218" + }, + { + "name": "Gandhila", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 6600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.34, + "lng": 76.4, + "code": "PG049080" + }, + { + "name": "Mali", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 6500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 17.9, + "lng": 82.7, + "code": "PG047911" + }, + { + "name": "Dakkala", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 4600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 18.39, + "lng": 83.94, + "code": "PG041849" + }, + { + "name": "Behera", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 3800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.3, + "lng": 87.44, + "code": "PG041569" + }, + { + "name": "Thogataveera Kshatriya", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 3100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 15.4, + "lng": 77.89, + "code": "PG049753" + }, + { + "name": "Kanda", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 3.5, + "pop": 3100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.9, + "lng": 91.74, + "code": "PG049042" + }, + { + "name": "Pinjara (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 3000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 29.48, + "lng": 76.44, + "code": "PG048167" + }, + { + "name": "Daoli", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 2800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.97, + "lng": 76.55, + "code": "PG049445" + }, + { + "name": "Reddi Dora", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 2600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 17.68, + "lng": 83.21, + "code": "PG049166" + }, + { + "name": "Ahluwalia", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 1400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 31.39, + "lng": 75.36, + "code": "PG049356" + }, + { + "name": "Bhagotulu", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 3.5, + "pop": 450.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 16.89, + "lng": 81.4, + "code": "PG049859" + }, + { + "name": "Kusunda", + "country": "Nepal", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 27.17, + "lng": 85.13, + "code": "PG049141" + } + ] + }, + "China": { + "target_upg": 444, + "target_pop": 139759490, + "target_top_langs": [ + "Chinese, Xiang", + "Chinese, Mandarin", + "Uyghur", + "Mongolian, Peripheral" + ], + "target_top_religion": "Ethnic Religions", + "neighbors": [ + { + "name": "Lemo", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 75.0, + "pop": 2300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 25.84, + "lng": 98.78, + "code": "PG007252" + }, + { + "name": "Ayi", + "country": "China", + "lang": "Lisu", + "rol3": "lis", + "pct_christian": 62.5, + "pop": 2400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 27.14, + "lng": 98.85, + "code": "PG006671" + }, + { + "name": "Xiandao", + "country": "China", + "lang": "Achang", + "rol3": "acn", + "pct_christian": 62.5, + "pop": 200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.52, + "lng": 97.88, + "code": "PG022125" + }, + { + "name": "Hkauri", + "country": "China", + "lang": "Tibetan, Central", + "rol3": "bod", + "pct_christian": 62.5, + "pop": 40.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.55, + "lng": 97.6, + "code": "PG022169" + }, + { + "name": "Gha-Mu", + "country": "China", + "lang": "Miao, Small Flowery", + "rol3": "sfm", + "pct_christian": 45.0, + "pop": 171000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.53, + "lng": 105.11, + "code": "PG006745" + }, + { + "name": "Lipo, Eastern", + "country": "China", + "lang": "Lipo", + "rol3": "lpo", + "pct_christian": 45.0, + "pop": 139000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.84, + "lng": 102.3, + "code": "PG007265" + }, + { + "name": "Rawang", + "country": "China", + "lang": "Rawang", + "rol3": "raw", + "pct_christian": 45.0, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 27.73, + "lng": 98.31, + "code": "PG023113" + }, + { + "name": "Lisu", + "country": "China", + "lang": "Lisu", + "rol3": "lis", + "pct_christian": 35.0, + "pop": 837000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.84, + "lng": 99.07, + "code": "PG007267" + }, + { + "name": "A-Hmao", + "country": "China", + "lang": "Miao, Large Flowery", + "rol3": "hmd", + "pct_christian": 35.0, + "pop": 644000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 27.11, + "lng": 103.41, + "code": "PG006652" + }, + { + "name": "Indonesian", + "country": "China", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 35.0, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 19.24, + "lng": 110.15, + "code": "PG007207" + }, + { + "name": "Maru", + "country": "China", + "lang": "Lhao Vo", + "rol3": "mhx", + "pct_christian": 25.0, + "pop": 31000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.33, + "lng": 98.43, + "code": "PG007279" + }, + { + "name": "Jingpo", + "country": "China", + "lang": "Jingpho", + "rol3": "kac", + "pct_christian": 25.0, + "pop": 29500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.41, + "lng": 97.86, + "code": "PG007217" + }, + { + "name": "Laka", + "country": "China", + "lang": "Nasu, Wusa", + "rol3": "yig", + "pct_christian": 25.0, + "pop": 9700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.04, + "lng": 102.28, + "code": "PG007241" + }, + { + "name": "Lagou", + "country": "China", + "lang": "Nasu, Wusa", + "rol3": "yig", + "pct_christian": 25.0, + "pop": 8400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 27.23, + "lng": 104.52, + "code": "PG007237" + }, + { + "name": "Lashi", + "country": "China", + "lang": "Lacid", + "rol3": "lsi", + "pct_christian": 25.0, + "pop": 2600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.06, + "lng": 98.66, + "code": "PG007248" + }, + { + "name": "Nasu, Eastern", + "country": "China", + "lang": "Nasu, Wusa", + "rol3": "yig", + "pct_christian": 17.5, + "pop": 650000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 26.07, + "lng": 102.78, + "code": "PG007326" + }, + { + "name": "Nasu, Wusa", + "country": "China", + "lang": "Nasu, Wusa", + "rol3": "yig", + "pct_christian": 17.5, + "pop": 412000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.27, + "lng": 103.71, + "code": "PG007426" + }, + { + "name": "Naluo", + "country": "China", + "lang": "Nuosu", + "rol3": "iii", + "pct_christian": 17.5, + "pop": 62500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 25.83, + "lng": 102.4, + "code": "PG007323" + }, + { + "name": "Minglang", + "country": "China", + "lang": "Sani", + "rol3": "ysn", + "pct_christian": 17.5, + "pop": 2500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.77, + "lng": 102.27, + "code": "PG007303" + }, + { + "name": "Lawa", + "country": "China", + "lang": "Lawa, Western", + "rol3": "lcp", + "pct_christian": 12.5, + "pop": 67500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 23.84, + "lng": 99.19, + "code": "PG007250" + }, + { + "name": "Nu", + "country": "China", + "lang": "Nusu", + "rol3": "nuf", + "pct_christian": 12.5, + "pop": 37000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 27.08, + "lng": 98.94, + "code": "PG007338" + }, + { + "name": "Guopu", + "country": "China", + "lang": "Nasu, Wusa", + "rol3": "yig", + "pct_christian": 12.5, + "pop": 26500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 27.31, + "lng": 104.13, + "code": "PG006753" + }, + { + "name": "Bela", + "country": "China", + "lang": "Pela", + "rol3": "bxd", + "pct_christian": 12.5, + "pop": 4800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 24.61, + "lng": 98.31, + "code": "PG006684" + }, + { + "name": "Han Chinese, Mandarin", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 901450000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 37.37, + "lng": 110.73, + "code": "PG006802" + }, + { + "name": "Han Chinese, Wu", + "country": "China", + "lang": "Chinese, Wu", + "rol3": "wuu", + "pct_christian": 7.5, + "pop": 92530000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 29.71, + "lng": 119.11, + "code": "PG006806" + }, + { + "name": "Han Chinese, Cantonese", + "country": "China", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 64770000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.94, + "lng": 111.32, + "code": "PG006808" + }, + { + "name": "Han Chinese, Jinyu", + "country": "China", + "lang": "Chinese, Jinyu", + "rol3": "cjy", + "pct_christian": 7.5, + "pop": 60310000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 38.74, + "lng": 111.39, + "code": "PG006801" + }, + { + "name": "Han Chinese, Xiang", + "country": "China", + "lang": "Chinese, Xiang", + "rol3": "hsn", + "pct_christian": 7.5, + "pop": 42300000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 27.97, + "lng": 111.27, + "code": "PG006807" + }, + { + "name": "Han Chinese, Gan", + "country": "China", + "lang": "Chinese, Gan", + "rol3": "gan", + "pct_christian": 7.5, + "pop": 41280000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 28.29, + "lng": 115.02, + "code": "PG006798" + }, + { + "name": "Han Chinese, Min Nan", + "country": "China", + "lang": "Chinese, Min Nan", + "rol3": "nan", + "pct_christian": 7.5, + "pop": 35550000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 23.42, + "lng": 115.05, + "code": "PG006805" + }, + { + "name": "Han Chinese, Min Bei", + "country": "China", + "lang": "Chinese, Min Bei", + "rol3": "mnp", + "pct_christian": 7.5, + "pop": 11300000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 26.93, + "lng": 117.92, + "code": "PG006803" + }, + { + "name": "Han Chinese, Min Dong", + "country": "China", + "lang": "Chinese, Min Dong", + "rol3": "cdo", + "pct_christian": 7.5, + "pop": 10600000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 26.54, + "lng": 119.2, + "code": "PG006804" + }, + { + "name": "Han Chinese, Puxian", + "country": "China", + "lang": "Chinese, Pu-Xian", + "rol3": "cpx", + "pct_christian": 7.5, + "pop": 3100000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 25.37, + "lng": 118.86, + "code": "PG007003" + }, + { + "name": "Lahu", + "country": "China", + "lang": "Lahu", + "rol3": "lhu", + "pct_christian": 7.5, + "pop": 590000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 22.76, + "lng": 99.83, + "code": "PG007238" + }, + { + "name": "Wumeng", + "country": "China", + "lang": "Nasu, Wusa", + "rol3": "yig", + "pct_christian": 7.5, + "pop": 61500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 27.46, + "lng": 103.62, + "code": "PG022123" + }, + { + "name": "Puwa", + "country": "China", + "lang": "Phowa, Hlepho", + "rol3": "yhl", + "pct_christian": 7.5, + "pop": 50000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 23.46, + "lng": 103.33, + "code": "PG022103" + }, + { + "name": "Achang", + "country": "China", + "lang": "Achang", + "rol3": "acn", + "pct_christian": 7.5, + "pop": 38500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 24.64, + "lng": 98.23, + "code": "PG006653" + }, + { + "name": "Drung", + "country": "China", + "lang": "Drung", + "rol3": "duu", + "pct_christian": 7.5, + "pop": 18000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 27.87, + "lng": 98.32, + "code": "PG006724" + }, + { + "name": "Depo", + "country": "China", + "lang": "Nasu, Wusa", + "rol3": "yig", + "pct_christian": 7.5, + "pop": 9900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.39, + "lng": 101.95, + "code": "PG006723" + }, + { + "name": "Tuwo", + "country": "China", + "lang": "Lisu", + "rol3": "lis", + "pct_christian": 7.5, + "pop": 1300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 26.05, + "lng": 98.67, + "code": "PG007417" + }, + { + "name": "Han Chinese, Huizhou", + "country": "China", + "lang": "Chinese, Huizhou", + "rol3": "czh", + "pct_christian": 3.5, + "pop": 5420000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 29.62, + "lng": 118.21, + "code": "PG006800" + }, + { + "name": "Han Chinese, Min Zhong", + "country": "China", + "lang": "Chinese, Min Zhong", + "rol3": "czo", + "pct_christian": 3.5, + "pop": 963000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 26.14, + "lng": 117.51, + "code": "PG006979" + }, + { + "name": "Chuanlan", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 3.5, + "pop": 416000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 26.86, + "lng": 105.07, + "code": "PG006713" + }, + { + "name": "Han Chinese, Waxianghua", + "country": "China", + "lang": "Waxianghua", + "rol3": "wxa", + "pct_christian": 3.5, + "pop": 385000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 28.71, + "lng": 110.24, + "code": "PG007076" + }, + { + "name": "Xibe", + "country": "China", + "lang": "Xibe", + "rol3": "sjo", + "pct_christian": 3.5, + "pop": 151000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.78, + "lng": 123.3, + "code": "PG007432" + }, + { + "name": "Zaiwa", + "country": "China", + "lang": "Zaiwa", + "rol3": "atb", + "pct_christian": 3.5, + "pop": 142000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 24.36, + "lng": 98.39, + "code": "PG007451" + }, + { + "name": "Nosu, Tianba", + "country": "China", + "lang": "Nuosu", + "rol3": "iii", + "pct_christian": 3.5, + "pop": 138000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 28.87, + "lng": 102.87, + "code": "PG022214" + }, + { + "name": "Manchu", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 3.5, + "pop": 132000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 47.66, + "lng": 124.56, + "code": "PG007275" + }, + { + "name": "Naisu", + "country": "China", + "lang": "Yi, Wuding-Luquan", + "rol3": "ywq", + "pct_christian": 3.5, + "pop": 82000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 25.49, + "lng": 101.86, + "code": "PG007322" + }, + { + "name": "Maonan", + "country": "China", + "lang": "Maonan", + "rol3": "mmd", + "pct_christian": 3.5, + "pop": 79000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Daoism", + "lat": 24.99, + "lng": 108.02, + "code": "PG007278" + }, + { + "name": "Michi", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 3.5, + "pop": 49000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 25.78, + "lng": 102.18, + "code": "PG007300" + }, + { + "name": "Muji, Southern", + "country": "China", + "lang": "Muji, Southern", + "rol3": "ymc", + "pct_christian": 3.5, + "pop": 32500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 23.09, + "lng": 103.31, + "code": "PG007319" + }, + { + "name": "Neisu", + "country": "China", + "lang": "Akha", + "rol3": "ahk", + "pct_christian": 3.5, + "pop": 28000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.17, + "lng": 100.64, + "code": "PG007334" + }, + { + "name": "Sansu", + "country": "China", + "lang": "Hlersu", + "rol3": "hle", + "pct_christian": 3.5, + "pop": 18500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 23.55, + "lng": 102.25, + "code": "PG007382" + }, + { + "name": "Laopang", + "country": "China", + "lang": "Laopang", + "rol3": "lbg", + "pct_christian": 3.5, + "pop": 18000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 23.78, + "lng": 99.39, + "code": "PG007247" + }, + { + "name": "Achang, Husa", + "country": "China", + "lang": "Achang", + "rol3": "acn", + "pct_christian": 3.5, + "pop": 8500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Mahayana", + "lat": 24.45, + "lng": 97.87, + "code": "PG006654" + }, + { + "name": "Gouzou", + "country": "China", + "lang": "Nasu, Wusa", + "rol3": "yig", + "pct_christian": 3.5, + "pop": 6400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 26.92, + "lng": 104.5, + "code": "PG006750" + }, + { + "name": "Meng", + "country": "China", + "lang": "Hani", + "rol3": "hni", + "pct_christian": 3.5, + "pop": 5300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.89, + "lng": 101.81, + "code": "PG007280" + }, + { + "name": "Zauzou", + "country": "China", + "lang": "Zauzou", + "rol3": "zal", + "pct_christian": 3.5, + "pop": 3800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 26.37, + "lng": 99.01, + "code": "PG007453" + }, + { + "name": "Naxi, Northern", + "country": "China", + "lang": "Naxi", + "rol3": "nxq", + "pct_christian": 3.5, + "pop": 3500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Tibetan", + "lat": 28.78, + "lng": 98.73, + "code": "PG022209" + }, + { + "name": "Duoluo", + "country": "China", + "lang": "Duoluo", + "rol3": "giw", + "pct_christian": 3.5, + "pop": 2100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 25.71, + "lng": 105.63, + "code": "PG022159" + }, + { + "name": "Fuma", + "country": "China", + "lang": "Hlai", + "rol3": "lic", + "pct_christian": 3.5, + "pop": 1100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 19.33, + "lng": 108.75, + "code": "PG006737" + }, + { + "name": "Thmaun", + "country": "Cambodia", + "lang": "Undetermined", + "rol3": "und", + "pct_christian": 45.0, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 13.12, + "lng": 106.43, + "code": "PG022376" + }, + { + "name": "Hmong", + "country": "Vietnam", + "lang": "Hmong Daw", + "rol3": "mww", + "pct_christian": 35.0, + "pop": 1330000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 21.86, + "lng": 103.59, + "code": "PG011142" + }, + { + "name": "Korean", + "country": "Thailand", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 35.0, + "pop": 20500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 13.76, + "lng": 100.56, + "code": "PG010874" + }, + { + "name": "Rukai", + "country": "Taiwan", + "lang": "Rukai", + "rol3": "dru", + "pct_christian": 35.0, + "pop": 13500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 22.82, + "lng": 120.83, + "code": "PG007516" + }, + { + "name": "Vietnamese", + "country": "Thailand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 25.0, + "pop": 119000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": 13.76, + "lng": 100.56, + "code": "PG010933" + }, + { + "name": "Korean", + "country": "Argentina", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -34.65, + "lng": -58.56, + "code": "PG046918" + }, + { + "name": "Korean", + "country": "Singapore", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 24500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 1.36, + "lng": 103.82, + "code": "PG010710" + }, + { + "name": "Sediq", + "country": "Taiwan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 25.0, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 24.02, + "lng": 121.35, + "code": "PG007536" + }, + { + "name": "Korean", + "country": "Taiwan", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 7000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 22.63, + "lng": 120.33, + "code": "PG007526" + }, + { + "name": "Lanten", + "country": "Laos", + "lang": "Kim Mun", + "rol3": "mji", + "pct_christian": 25.0, + "pop": 6300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 21.92, + "lng": 101.91, + "code": "PG020923" + }, + { + "name": "Korean", + "country": "Northern Mariana Islands", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 1600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 15.91, + "lng": 145.61, + "code": "PG050228" + }, + { + "name": "Korean", + "country": "Australia", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 167000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -33.85, + "lng": 151.03, + "code": "PG021625" + }, + { + "name": "Korean", + "country": "Canada", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 162000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 46.93, + "lng": -92.67, + "code": "PG043424" + }, + { + "name": "Russian", + "country": "Moldova", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 17.5, + "pop": 133000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.13, + "lng": 29.34, + "code": "PG000867" + }, + { + "name": "Adi Minyong", + "country": "India", + "lang": "Adi", + "rol3": "adi", + "pct_christian": 17.5, + "pop": 50000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 28.05, + "lng": 94.43, + "code": "PG041950" + }, + { + "name": "Korean", + "country": "United Kingdom", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 51.5, + "lng": -0.17, + "code": "PG000650" + }, + { + "name": "Korean", + "country": "New Zealand", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 38000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -36.89, + "lng": 174.78, + "code": "PG047592" + }, + { + "name": "Korean", + "country": "Hong Kong", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 8600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 22.38, + "lng": 114.13, + "code": "PG050601" + }, + { + "name": "Korean", + "country": "Paraguay", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 8000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -25.3, + "lng": -57.56, + "code": "PG017246" + }, + { + "name": "Korean", + "country": "Guam", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 4300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 13.44, + "lng": 144.78, + "code": "PG050301" + }, + { + "name": "Korean", + "country": "Dominican Republic", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 18.48, + "lng": -69.91, + "code": "PG022409" + }, + { + "name": "Korean", + "country": "South Korea", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 50250000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 36.38, + "lng": 127.82, + "code": "PG048088" + }, + { + "name": "Korean", + "country": "United States", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 1095000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 38.77, + "lng": -98.89, + "code": "PG043310" + }, + { + "name": "Korean", + "country": "Uzbekistan", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 12.5, + "pop": 254000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.31, + "lng": 69.26, + "code": "PG024684" + }, + { + "name": "Han Chinese", + "country": "New Zealand", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 214000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -36.89, + "lng": 174.78, + "code": "PG018495" + }, + { + "name": "Korean", + "country": "Kazakhstan", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 132000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 43.29, + "lng": 76.91, + "code": "PG024281" + }, + { + "name": "Nikkei, Brazilian", + "country": "Japan", + "lang": "Japanese", + "rol3": "jpn", + "pct_christian": 12.5, + "pop": 104000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Shinbutso-shugo", + "lat": 35.13, + "lng": 136.92, + "code": "PG049262" + }, + { + "name": "Korean", + "country": "Mozambique", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 36000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -25.89, + "lng": 32.57, + "code": "PG015382" + }, + { + "name": "Korean", + "country": "Madagascar", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 18000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -18.91, + "lng": 47.53, + "code": "PG015310" + }, + { + "name": "Blang", + "country": "Myanmar", + "lang": "Blang", + "rol3": "blr", + "pct_christian": 12.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 21.5, + "lng": 100.17, + "code": "PG022041" + }, + { + "name": "Hsifan", + "country": "Myanmar", + "lang": "Tibetan, Central", + "rol3": "bod", + "pct_christian": 12.5, + "pop": 5600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Tibetan", + "lat": 27.24, + "lng": 97.64, + "code": "PG009445" + }, + { + "name": "Puroik", + "country": "India", + "lang": "Adi", + "rol3": "adi", + "pct_christian": 12.5, + "pop": 4300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 27.43, + "lng": 92.97, + "code": "PG049739" + }, + { + "name": "Korean", + "country": "Honduras", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 150.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 14.08, + "lng": -87.2, + "code": "PG024788" + }, + { + "name": "Han Chinese", + "country": "Kiribati", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 125.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 1.37, + "lng": 173.11, + "code": "PG009087" + }, + { + "name": "Han Chinese", + "country": "Tuvalu", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 50.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -8.5, + "lng": 179.19, + "code": "PG018319" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Hong Kong", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 6255000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.38, + "lng": 114.13, + "code": "PG050587" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Taiwan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 4635000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 24.86, + "lng": 121.36, + "code": "PG007518" + }, + { + "name": "Han Chinese, Mandarin", + "country": "United States", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 2345000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 45.74, + "lng": -114.4, + "code": "PG043261" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Malaysia", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 1900000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 3.65, + "lng": 101.56, + "code": "PG046594" + }, + { + "name": "Han Chinese", + "country": "Vietnam", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 1620000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 21.04, + "lng": 106.1, + "code": "PG033473" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Canada", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 1055000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 46.93, + "lng": -92.67, + "code": "PG043404" + }, + { + "name": "Khmu, Ou", + "country": "Laos", + "lang": "Khmu", + "rol3": "kjg", + "pct_christian": 7.5, + "pop": 817000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.8, + "lng": 102.58, + "code": "PG020913" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Vietnam", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 784000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 21.03, + "lng": 105.82, + "code": "PG046444" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Japan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 736000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 35.72, + "lng": 137.14, + "code": "PG048925" + }, + { + "name": "Han Chinese", + "country": "Australia", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 670000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -33.75, + "lng": 144.18, + "code": "PG033443" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Macao", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 663000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.16, + "lng": 113.56, + "code": "PG050584" + }, + { + "name": "Han Chinese", + "country": "Myanmar", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 650000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 16.85, + "lng": 96.15, + "code": "PG022047" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Singapore", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 511000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 1.36, + "lng": 103.82, + "code": "PG020725" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Singapore", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 467000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 1.36, + "lng": 103.82, + "code": "PG020728" + }, + { + "name": "Han Chinese", + "country": "Brazil", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 280000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -23.17, + "lng": -45.54, + "code": "PG016864" + }, + { + "name": "Han Chinese, Mandarin", + "country": "United Arab Emirates", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 202000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 24.67, + "lng": 55.14, + "code": "PG049240" + }, + { + "name": "Han Chinese", + "country": "United Kingdom", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 196000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 51.5, + "lng": -0.17, + "code": "PG043796" + }, + { + "name": "Han Chinese, Mandarin", + "country": "North Korea", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 184000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 39.0, + "lng": 125.92, + "code": "PG007584" + }, + { + "name": "Vietnamese", + "country": "Australia", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 174000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": -33.38, + "lng": 143.4, + "code": "PG008087" + }, + { + "name": "Han Chinese", + "country": "France", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 172000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 48.2, + "lng": 2.3, + "code": "PG023131" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Hong Kong", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 163000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.38, + "lng": 114.13, + "code": "PG050605" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Peru", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 117000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -12.05, + "lng": -77.02, + "code": "PG017533" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Saudi Arabia", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 113000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 24.68, + "lng": 46.74, + "code": "PG049246" + }, + { + "name": "Han Chinese", + "country": "Tanzania", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 106000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -6.83, + "lng": 39.25, + "code": "PG014935" + }, + { + "name": "Han Chinese", + "country": "Italy", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 100000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 44.22, + "lng": 10.5, + "code": "PG000330" + }, + { + "name": "Han Chinese", + "country": "South Korea", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 94500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 36.58, + "lng": 127.64, + "code": "PG007589" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Tajikistan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 89500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 38.57, + "lng": 68.77, + "code": "PG049245" + }, + { + "name": "Han Chinese", + "country": "Madagascar", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 78500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -18.91, + "lng": 47.53, + "code": "PG015301" + }, + { + "name": "Han Chinese", + "country": "Panama", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 68500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 8.5, + "lng": -82.42, + "code": "PG024831" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Egypt", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 65500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 30.05, + "lng": 31.32, + "code": "PG050167" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Russian Federation", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 62000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 51.07, + "lng": 119.29, + "code": "PG048686" + }, + { + "name": "Han Chinese", + "country": "Pakistan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 60000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 31.52, + "lng": 74.34, + "code": "PG006354" + }, + { + "name": "Han Chinese", + "country": "Argentina", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 52500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -34.65, + "lng": -58.56, + "code": "PG042923" + }, + { + "name": "Han Chinese", + "country": "Germany", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 51000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 51.84, + "lng": 11.14, + "code": "PG023132" + }, + { + "name": "Korean", + "country": "Brazil", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 48500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -23.57, + "lng": -46.57, + "code": "PG016974" + }, + { + "name": "Korean", + "country": "Germany", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 50.12, + "lng": 8.67, + "code": "PG000249" + }, + { + "name": "Han Chinese", + "country": "Trinidad and Tobago", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 44500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 10.68, + "lng": -61.38, + "code": "PG016447" + }, + { + "name": "Han Chinese", + "country": "Cuba", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 40500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 23.07, + "lng": -82.32, + "code": "PG016302" + }, + { + "name": "Iu Mien", + "country": "United States", + "lang": "Iu Mien", + "rol3": "ium", + "pct_christian": 7.5, + "pop": 38500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 38.75, + "lng": -111.78, + "code": "PG043283" + }, + { + "name": "Han Chinese", + "country": "Zambia", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 38500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Confucianism", + "lat": -15.4, + "lng": 28.31, + "code": "PG015577" + }, + { + "name": "Han Chinese", + "country": "Laos", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 36500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 17.97, + "lng": 102.64, + "code": "PG009111" + }, + { + "name": "Han Chinese", + "country": "Netherlands", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 30500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 52.33, + "lng": 4.86, + "code": "PG023133" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Venezuela", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 10.48, + "lng": -66.88, + "code": "PG016472" + }, + { + "name": "Russian", + "country": "Australia", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 7.5, + "pop": 28500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.52, + "lng": 142.46, + "code": "PG008063" + }, + { + "name": "Han Chinese", + "country": "Greece", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 28000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 38.01, + "lng": 23.77, + "code": "PG048769" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Venezuela", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 27000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 10.48, + "lng": -66.88, + "code": "PG016471" + }, + { + "name": "Han Chinese", + "country": "Mexico", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 26000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 20.65, + "lng": -101.28, + "code": "PG024949" + }, + { + "name": "Han Chinese", + "country": "Portugal", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 26000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 38.77, + "lng": -9.25, + "code": "PG000483" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Belgium", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 21500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 50.85, + "lng": 4.38, + "code": "PG000057" + }, + { + "name": "Han Chinese", + "country": "Mozambique", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 21000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Confucianism", + "lat": -25.92, + "lng": 32.59, + "code": "PG015380" + }, + { + "name": "Korean", + "country": "Kyrgyzstan", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 19500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 42.88, + "lng": 74.63, + "code": "PG024358" + }, + { + "name": "Korean", + "country": "Iran", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 17500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 35.7, + "lng": 51.38, + "code": "PG024174" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Hungary", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 47.48, + "lng": 19.11, + "code": "PG042235" + } + ] + }, + "Japan": { + "target_upg": 32, + "target_pop": 120582800, + "target_top_langs": [ + "Japanese", + "Okinawan, Central", + "Japanese Sign Language", + "Burmese" + ], + "target_top_religion": "Buddhism", + "neighbors": [ + { + "name": "Nikkei, Brazilian", + "country": "Japan", + "lang": "Japanese", + "rol3": "jpn", + "pct_christian": 12.5, + "pop": 104000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Shinbutso-shugo", + "lat": 35.13, + "lng": 136.92, + "code": "PG049262" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Japan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 736000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 35.72, + "lng": 137.14, + "code": "PG048925" + }, + { + "name": "Miyako-Irabu", + "country": "Japan", + "lang": "Japanese", + "rol3": "jpn", + "pct_christian": 3.5, + "pop": 65500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Shinbutso-shugo", + "lat": 24.77, + "lng": 125.33, + "code": "PG047515" + }, + { + "name": "Anglo Indian", + "country": "India", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 398000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 12.95, + "lng": 77.6, + "code": "PG041386" + }, + { + "name": "Indian - Christian", + "country": "South Africa", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 310000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -29.84, + "lng": 30.93, + "code": "PG048045" + }, + { + "name": "Euronesian", + "country": "Samoa", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -13.85, + "lng": -171.8, + "code": "PG018323" + }, + { + "name": "British", + "country": "Tanzania", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -6.83, + "lng": 39.25, + "code": "PG014914" + }, + { + "name": "British", + "country": "Zimbabwe", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 5800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -17.83, + "lng": 31.03, + "code": "PG015650" + }, + { + "name": "Dominican", + "country": "Dominican Republic", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 45.0, + "pop": 10900000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 18.9, + "lng": -70.49, + "code": "PG016313" + }, + { + "name": "American", + "country": "Singapore", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 9800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 1.36, + "lng": 103.82, + "code": "PG018447" + }, + { + "name": "British", + "country": "Barbados", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 13.12, + "lng": -59.6, + "code": "PG016197" + }, + { + "name": "British", + "country": "Venezuela", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 7200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 10.48, + "lng": -66.88, + "code": "PG016461" + }, + { + "name": "British", + "country": "Botswana", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 7100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -24.65, + "lng": 25.91, + "code": "PG015217" + }, + { + "name": "Pitcairn Islander", + "country": "New Zealand", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 250.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -36.89, + "lng": 174.78, + "code": "PG018502" + }, + { + "name": "American", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 95500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -33.52, + "lng": 142.46, + "code": "PG020268" + }, + { + "name": "Eurasian", + "country": "Myanmar", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 56500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 16.85, + "lng": 96.15, + "code": "PG022046" + }, + { + "name": "Korean", + "country": "Thailand", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 35.0, + "pop": 20500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 13.76, + "lng": 100.56, + "code": "PG010874" + }, + { + "name": "Caribbean Hindi", + "country": "French Guiana", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 13500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 4.91, + "lng": -52.3, + "code": "PG022284" + }, + { + "name": "Southwest Aborigine Creol", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -32.54, + "lng": 115.99, + "code": "PG008068" + }, + { + "name": "Anglo-Australian", + "country": "Singapore", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 3000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 1.36, + "lng": 103.82, + "code": "PG010684" + }, + { + "name": "American", + "country": "Iceland", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 1800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 64.14, + "lng": -21.89, + "code": "PG000293" + }, + { + "name": "American", + "country": "Marshall Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 7.1, + "lng": 171.22, + "code": "PG009376" + }, + { + "name": "Itene", + "country": "Bolivia", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 35.0, + "pop": 70.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -11.89, + "lng": -65.09, + "code": "PG046959" + }, + { + "name": "American", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 194740000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 38.3, + "lng": -93.46, + "code": "PG043515" + }, + { + "name": "Guatemalan", + "country": "Guatemala", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 25.0, + "pop": 10150000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 15.7, + "lng": -90.36, + "code": "PG024712" + }, + { + "name": "El Salvadoran", + "country": "El Salvador", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 25.0, + "pop": 6100000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 13.73, + "lng": -88.87, + "code": "PG024979" + }, + { + "name": "Detribalized Aborigine", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 580000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -33.75, + "lng": 144.18, + "code": "PG007863" + }, + { + "name": "Jamaican", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 330000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047381" + }, + { + "name": "Barbadian", + "country": "Barbados", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 269000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 13.17, + "lng": -59.56, + "code": "PG016195" + }, + { + "name": "American", + "country": "Panama", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 186000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 9.06, + "lng": -79.38, + "code": "PG050309" + }, + { + "name": "Vietnamese", + "country": "Thailand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 25.0, + "pop": 119000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": 13.76, + "lng": 100.56, + "code": "PG010933" + }, + { + "name": "Barbadian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 50500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 40.72, + "lng": -73.97, + "code": "PG046507" + }, + { + "name": "Barbadian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 40500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047394" + }, + { + "name": "Korean", + "country": "Argentina", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -34.65, + "lng": -58.56, + "code": "PG046918" + }, + { + "name": "Guatemalan", + "country": "Canada", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 25.0, + "pop": 28000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047378" + }, + { + "name": "Korean", + "country": "Singapore", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 24500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 1.36, + "lng": 103.82, + "code": "PG010710" + }, + { + "name": "Bay Islands Creole", + "country": "Honduras", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 20000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 16.34, + "lng": -86.39, + "code": "PG024758" + }, + { + "name": "American", + "country": "Virgin Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.96, + "lng": -64.8, + "code": "PG050296" + }, + { + "name": "American", + "country": "New Zealand", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 15000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -36.89, + "lng": 174.78, + "code": "PG018513" + }, + { + "name": "American", + "country": "Guam", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 14000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 13.44, + "lng": 144.78, + "code": "PG050299" + }, + { + "name": "Korean", + "country": "Taiwan", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 7000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 22.63, + "lng": 120.33, + "code": "PG007526" + }, + { + "name": "Mixtec, Southeastern Nochixtlan", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 25.0, + "pop": 5000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.21, + "lng": -97.09, + "code": "PG039145" + }, + { + "name": "American", + "country": "Fiji", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 4600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -18.13, + "lng": 178.44, + "code": "PG018421" + }, + { + "name": "American", + "country": "Greenland", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 3400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 64.18, + "lng": -51.7, + "code": "PG000286" + }, + { + "name": "Itza", + "country": "Guatemala", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 25.0, + "pop": 3200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 17.0, + "lng": -89.88, + "code": "PG024726" + }, + { + "name": "Zapotec, Southeastern Ixtlan", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 25.0, + "pop": 2900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.23, + "lng": -96.49, + "code": "PG039219" + }, + { + "name": "Maori", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.28, + "lng": -122.84, + "code": "PG050518" + }, + { + "name": "Nakota (Assiniboine)", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.32, + "lng": -106.26, + "code": "PG043527" + }, + { + "name": "Winnebago", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 42.22, + "lng": -96.6, + "code": "PG043689" + }, + { + "name": "Wik-Ngathan", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -13.84, + "lng": 141.57, + "code": "PG008118" + }, + { + "name": "Polynesian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.28, + "lng": -122.84, + "code": "PG050519" + }, + { + "name": "Korean", + "country": "Northern Mariana Islands", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 1600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 15.91, + "lng": 145.61, + "code": "PG050228" + }, + { + "name": "Tektiteko", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 25.0, + "pop": 1200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 15.49, + "lng": -92.13, + "code": "PG039080" + }, + { + "name": "Yankuntatjara", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 950.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": -27.14, + "lng": 133.83, + "code": "PG008134" + }, + { + "name": "Bora", + "country": "Peru", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 25.0, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": -3.22, + "lng": -71.98, + "code": "PG017505" + }, + { + "name": "Maori", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 37.75, + "lng": -122.21, + "code": "PG047214" + }, + { + "name": "Mocho", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 25.0, + "pop": 225.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 15.27, + "lng": -92.35, + "code": "PG039159" + }, + { + "name": "Mixtec, Sindihui", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 25.0, + "pop": 80.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.01, + "lng": -97.37, + "code": "PG039143" + }, + { + "name": "African Americans", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 40540000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 39.04, + "lng": -100.02, + "code": "PG048741" + }, + { + "name": "Honduran", + "country": "Honduras", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 9865000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 14.82, + "lng": -86.62, + "code": "PG042459" + }, + { + "name": "Panamanian", + "country": "Panama", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 2945000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 9.12, + "lng": -79.12, + "code": "PG024843" + }, + { + "name": "Korean", + "country": "Australia", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 167000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -33.85, + "lng": 151.03, + "code": "PG021625" + }, + { + "name": "Korean", + "country": "Canada", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 162000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 46.93, + "lng": -92.67, + "code": "PG043424" + }, + { + "name": "Salvadoran", + "country": "Canada", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 70500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047373" + }, + { + "name": "Eurasian", + "country": "Malaysia", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 68500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 3.07, + "lng": 101.64, + "code": "PG020233" + }, + { + "name": "Bermudians", + "country": "Bermuda", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 66000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 32.31, + "lng": -64.77, + "code": "PG016210" + }, + { + "name": "Caymanian", + "country": "Cayman Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 60500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 19.42, + "lng": -80.89, + "code": "PG016216" + }, + { + "name": "Korean", + "country": "United Kingdom", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 51.5, + "lng": -0.17, + "code": "PG000650" + }, + { + "name": "Nigerian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 39500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 37.51, + "lng": -88.1, + "code": "PG047652" + }, + { + "name": "Korean", + "country": "New Zealand", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 38000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -36.89, + "lng": 174.78, + "code": "PG047592" + }, + { + "name": "Kenyan", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 26000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 43.83, + "lng": -79.46, + "code": "PG047469" + }, + { + "name": "American", + "country": "Haiti", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 19000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 18.55, + "lng": -72.32, + "code": "PG016382" + }, + { + "name": "Mam", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 17500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 15.4, + "lng": -92.35, + "code": "PG039078" + }, + { + "name": "Ghanaian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 49.22, + "lng": -122.99, + "code": "PG047407" + }, + { + "name": "Nicaraguan", + "country": "Canada", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 14500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047377" + }, + { + "name": "Honduran", + "country": "Canada", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047379" + }, + { + "name": "Kanjobal", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 18.63, + "lng": -89.7, + "code": "PG039087" + }, + { + "name": "Korean", + "country": "Hong Kong", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 8600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 22.38, + "lng": 114.13, + "code": "PG050601" + }, + { + "name": "Korean", + "country": "Paraguay", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 8000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -25.3, + "lng": -57.56, + "code": "PG017246" + }, + { + "name": "Zoque, Chimalapa", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 6400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 16.88, + "lng": -94.4, + "code": "PG039236" + }, + { + "name": "Panamanian", + "country": "Canada", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 5000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047376" + }, + { + "name": "Zapotec, Southern Rincon", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 4900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.35, + "lng": -96.27, + "code": "PG039223" + }, + { + "name": "Korean", + "country": "Guam", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 4300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 13.44, + "lng": 144.78, + "code": "PG050301" + }, + { + "name": "Passamaquoddy", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 3300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 46.36, + "lng": -67.46, + "code": "PG043437" + }, + { + "name": "Tlingit", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 2300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 60.48, + "lng": -132.29, + "code": "PG043489" + }, + { + "name": "Straits Salish", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 2000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.77, + "lng": -122.64, + "code": "PG043642" + }, + { + "name": "Zapotec, San Baltazar Loxicha", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 16.05, + "lng": -96.76, + "code": "PG039195" + }, + { + "name": "Huave, San Francisco del Mar", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 1200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 16.24, + "lng": -94.49, + "code": "PG039082" + }, + { + "name": "Onondaga", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 43.05, + "lng": -80.11, + "code": "PG043451" + }, + { + "name": "Korean", + "country": "Dominican Republic", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 18.48, + "lng": -69.91, + "code": "PG022409" + }, + { + "name": "Popti", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 15.89, + "lng": -91.99, + "code": "PG039086" + }, + { + "name": "Popoluca, Texistepec", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.78, + "lng": -94.8, + "code": "PG048643" + }, + { + "name": "Zapotec, Southern Rincon", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 32.36, + "lng": -109.45, + "code": "PG049308" + }, + { + "name": "K’ómoks", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 350.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -124.96, + "code": "PG043374" + }, + { + "name": "Rembarunga", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": -12.96, + "lng": 134.58, + "code": "PG008058" + }, + { + "name": "Korean", + "country": "South Korea", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 50250000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 36.38, + "lng": 127.82, + "code": "PG048088" + }, + { + "name": "Chilean", + "country": "Chile", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 17760000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": -32.83, + "lng": -71.15, + "code": "PG017439" + }, + { + "name": "Puerto Rican", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 4035000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.35, + "lng": -95.96, + "code": "PG043603" + }, + { + "name": "Irish, Northern", + "country": "United Kingdom", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1660000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 54.61, + "lng": -6.69, + "code": "PG022219" + }, + { + "name": "Korean", + "country": "United States", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 1095000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 38.77, + "lng": -98.89, + "code": "PG043310" + }, + { + "name": "Afro-Trinidadian", + "country": "Trinidad and Tobago", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 725000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 10.42, + "lng": -61.3, + "code": "PG016442" + }, + { + "name": "Metis", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 704000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 47.13, + "lng": -97.19, + "code": "PG043455" + }, + { + "name": "American", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 402000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.97, + "lng": -107.63, + "code": "PG043500" + }, + { + "name": "English Caribbean", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 394000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 46.73, + "lng": -90.31, + "code": "PG049256" + }, + { + "name": "Han Chinese", + "country": "Singapore", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 358000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 1.36, + "lng": 103.82, + "code": "PG020724" + }, + { + "name": "Chiquitano", + "country": "Bolivia", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 211000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": -15.91, + "lng": -61.84, + "code": "PG017398" + }, + { + "name": "Detribalized Amerindian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 201000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.64, + "lng": -115.72, + "code": "PG043384" + }, + { + "name": "Colombian", + "country": "Venezuela", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 189000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 9.01, + "lng": -66.66, + "code": "PG046909" + }, + { + "name": "Afro-Argentine", + "country": "Argentina", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 153000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": -34.65, + "lng": -58.56, + "code": "PG042890" + }, + { + "name": "Korean", + "country": "Kazakhstan", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 132000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 43.29, + "lng": 76.91, + "code": "PG024281" + }, + { + "name": "Sub-Saharan Africans, English-Speaking", + "country": "Belgium", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 123000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.85, + "lng": 4.38, + "code": "PG047833" + }, + { + "name": "Tojolabal", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 92500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 16.4, + "lng": -91.85, + "code": "PG039160" + }, + { + "name": "Chontal, Tabasco", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 86000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 18.1, + "lng": -92.61, + "code": "PG039061" + }, + { + "name": "Nahuatl, Isthmus", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 78500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 18.12, + "lng": -94.34, + "code": "PG048653" + }, + { + "name": "Fijian", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 71500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -33.75, + "lng": 144.18, + "code": "PG050451" + }, + { + "name": "Cree, Woodland", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 68500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 54.6, + "lng": -106.15, + "code": "PG043378" + }, + { + "name": "Dominican", + "country": "Dominica", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 67000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 15.43, + "lng": -61.35, + "code": "PG016306" + }, + { + "name": "Chilean", + "country": "Canada", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 48000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047386" + }, + { + "name": "Belizean", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 43500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 33.94, + "lng": -118.12, + "code": "PG047184" + }, + { + "name": "Korean", + "country": "Mozambique", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 36000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -25.89, + "lng": 32.57, + "code": "PG015382" + }, + { + "name": "Welsh", + "country": "Argentina", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -43.27, + "lng": -65.44, + "code": "PG017376" + }, + { + "name": "Chilean", + "country": "Sweden", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 31500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 58.15, + "lng": 15.03, + "code": "PG000547" + }, + { + "name": "Mixe, Isthmus", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 30500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.08, + "lng": -95.14, + "code": "PG039098" + }, + { + "name": "Mohawk", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 44.18, + "lng": -77.77, + "code": "PG043441" + }, + { + "name": "Dominican", + "country": "Canada", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 24500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047374" + }, + { + "name": "Barbadian", + "country": "United Kingdom", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 24000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 51.5, + "lng": -0.17, + "code": "PG048436" + }, + { + "name": "Chinantec, Central", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 21500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.81, + "lng": -96.26, + "code": "PG039065" + }, + { + "name": "Korean", + "country": "Madagascar", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 18000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -18.91, + "lng": 47.53, + "code": "PG015310" + }, + { + "name": "Euronesian", + "country": "Fiji", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 16500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -17.95, + "lng": 178.24, + "code": "PG018419" + }, + { + "name": "Spaniard", + "country": "Ireland", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 53.39, + "lng": -6.28, + "code": "PG000303" + }, + { + "name": "Polynesian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 14500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG043599" + }, + { + "name": "American", + "country": "Costa Rica", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 12500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 10.22, + "lng": -85.24, + "code": "PG025025" + }, + { + "name": "Popoluca, Sayula", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 12000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.73, + "lng": -94.95, + "code": "PG048641" + }, + { + "name": "Mixe, Coatlan", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 9100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 16.79, + "lng": -95.6, + "code": "PG039097" + }, + { + "name": "Antiguan", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 8400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 35.93, + "lng": -98.82, + "code": "PG050335" + }, + { + "name": "Nahuatl, Isthmus", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 31.63, + "lng": -89.16, + "code": "PG049280" + }, + { + "name": "Tsimshian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 7700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 54.42, + "lng": -130.3, + "code": "PG043490" + }, + { + "name": "Lillooet", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 7500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 50.68, + "lng": -121.92, + "code": "PG043432" + }, + { + "name": "Zapotec, Guevea de Humboldt", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 7200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 16.73, + "lng": -95.33, + "code": "PG039189" + }, + { + "name": "Latin American", + "country": "Curacao", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 7000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 12.19, + "lng": -68.97, + "code": "PG023181" + }, + { + "name": "Nakota (Assiniboine)", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 6500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 52.17, + "lng": -107.03, + "code": "PG043354" + }, + { + "name": "Kwakwakaʼwakw", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 6500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.72, + "lng": -127.5, + "code": "PG043427" + }, + { + "name": "Zapotec, Lachiguiri", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 5900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 16.61, + "lng": -95.5, + "code": "PG039196" + }, + { + "name": "Sac & Fox Nation of Oklahoma", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 5800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 35.71, + "lng": -96.77, + "code": "PG050670" + }, + { + "name": "Dakota", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 5500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.52, + "lng": -102.88, + "code": "PG043381" + }, + { + "name": "American", + "country": "Micronesia", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 5400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 6.95, + "lng": 158.2, + "code": "PG018394" + }, + { + "name": "Straits Salish", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 3900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.49, + "lng": -123.46, + "code": "PG043479" + }, + { + "name": "Bahamian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 3900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 43.9, + "lng": -79.58, + "code": "PG050486" + }, + { + "name": "Chuj", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 3800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 16.06, + "lng": -91.88, + "code": "PG039062" + }, + { + "name": "Zapotec, Xanaguia", + "country": "Mexico", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 3600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 16.1, + "lng": -96.24, + "code": "PG039207" + } + ] + }, + "Iran": { + "target_upg": 85, + "target_pop": 91827910, + "target_top_langs": [ + "Persian, Iranian", + "Azerbaijani, South", + "Kurdish, Southern", + "Gilaki" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Korean", + "country": "Iran", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 17500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 35.7, + "lng": 51.38, + "code": "PG024174" + }, + { + "name": "Armenian", + "country": "Iran", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 113000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 38.14, + "lng": 46.37, + "code": "PG024130" + }, + { + "name": "Romani, Balkan", + "country": "Italy", + "lang": "Romani, Balkan", + "rol3": "rmn", + "pct_christian": 62.5, + "pop": 2500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 45.54, + "lng": 9.19, + "code": "PG000312" + }, + { + "name": "Romani, Balkan", + "country": "Bulgaria", + "lang": "Romani, Balkan", + "rol3": "rmn", + "pct_christian": 7.5, + "pop": 267000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 42.86, + "lng": 23.79, + "code": "PG000737" + }, + { + "name": "Arab, Syro-Lebanese", + "country": "Australia", + "lang": "Arabic, Gulf", + "rol3": "afb", + "pct_christian": 7.5, + "pop": 192000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -33.38, + "lng": 143.4, + "code": "PG020267" + }, + { + "name": "Assyrian", + "country": "Australia", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 7.5, + "pop": 40000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.85, + "lng": 151.03, + "code": "PG007833" + }, + { + "name": "Iranian", + "country": "Armenia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 40.17, + "lng": 44.49, + "code": "PG050098" + }, + { + "name": "Iranian", + "country": "Greece", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 38.05, + "lng": 23.7, + "code": "PG047071" + }, + { + "name": "Persian", + "country": "Canada", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 201000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 46.93, + "lng": -92.67, + "code": "PG043458" + }, + { + "name": "Iranian", + "country": "Germany", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 175000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 52.51, + "lng": 11.69, + "code": "PG000259" + }, + { + "name": "Persian", + "country": "Turkiye", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 130000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 41.04, + "lng": 28.87, + "code": "PG024581" + }, + { + "name": "Persian", + "country": "United Kingdom", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 86000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 51.5, + "lng": -0.17, + "code": "PG000643" + }, + { + "name": "Assyrian", + "country": "Germany", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 70000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 50.03, + "lng": 8.25, + "code": "PG000214" + }, + { + "name": "Assyrian", + "country": "United States", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 70000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 37.75, + "lng": -122.21, + "code": "PG043528" + }, + { + "name": "Kurd, Northern", + "country": "Russian Federation", + "lang": "Kurdish, Northern", + "rol3": "kmr", + "pct_christian": 3.5, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 44.63, + "lng": 39.24, + "code": "PG024465" + }, + { + "name": "Assyrian", + "country": "Canada", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 43.83, + "lng": -79.46, + "code": "PG043355" + }, + { + "name": "Persian", + "country": "Indonesia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 8000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": -6.21, + "lng": 106.83, + "code": "PG050238" + }, + { + "name": "Persian", + "country": "South Korea", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 3500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 37.55, + "lng": 126.99, + "code": "PG050237" + }, + { + "name": "Romani, Balkan", + "country": "France", + "lang": "Romani, Balkan", + "rol3": "rmn", + "pct_christian": 3.5, + "pop": 650.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 48.84, + "lng": 2.35, + "code": "PG000134" + } + ] + }, + "Türkiye (Turkey)": { + "target_upg": 63, + "target_pop": 86815200, + "target_top_langs": [ + "Turkish", + "Kurdish, Northern", + "Arabic, Levantine", + "Zazaki, Southern" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Persian", + "country": "Turkiye", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 130000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Shia", + "lat": 41.04, + "lng": 28.87, + "code": "PG024581" + }, + { + "name": "Armenian", + "country": "Turkiye", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 45000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 41.05, + "lng": 28.9, + "code": "PG024538" + }, + { + "name": "Han Chinese", + "country": "Turkiye", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 3.5, + "pop": 44500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.04, + "lng": 28.87, + "code": "PG024558" + }, + { + "name": "Romani, Balkan", + "country": "Italy", + "lang": "Romani, Balkan", + "rol3": "rmn", + "pct_christian": 62.5, + "pop": 2500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 45.54, + "lng": 9.19, + "code": "PG000312" + }, + { + "name": "Romani, Balkan", + "country": "Bulgaria", + "lang": "Romani, Balkan", + "rol3": "rmn", + "pct_christian": 7.5, + "pop": 267000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 42.86, + "lng": 23.79, + "code": "PG000737" + }, + { + "name": "Armenian", + "country": "Canada", + "lang": "Armenian, Western", + "rol3": "hyw", + "pct_christian": 7.5, + "pop": 71000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.83, + "lng": -77.31, + "code": "PG043353" + }, + { + "name": "Bangni", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 62500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 27.43, + "lng": 92.97, + "code": "PG041887" + }, + { + "name": "Assyrian", + "country": "Australia", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 7.5, + "pop": 40000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.85, + "lng": 151.03, + "code": "PG007833" + }, + { + "name": "Arab, Lebanese", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024837" + }, + { + "name": "Arab, Palestinian", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024839" + }, + { + "name": "Greek", + "country": "Czech Republic", + "lang": "Greek", + "rol3": "ell", + "pct_christian": 7.5, + "pop": 3600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 49.82, + "lng": 17.98, + "code": "PG048862" + }, + { + "name": "Kankali", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 27.7, + "lng": 81.49, + "code": "PG049096" + }, + { + "name": "Khadim", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 26.49, + "lng": 74.65, + "code": "PG048969" + }, + { + "name": "Bulgarian", + "country": "Germany", + "lang": "Bulgarian", + "rol3": "bul", + "pct_christian": 3.5, + "pop": 411000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.5, + "lng": 13.4, + "code": "PG042446" + }, + { + "name": "Arab, Lebanese", + "country": "Canada", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 234000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.53, + "lng": -73.66, + "code": "PG043431" + }, + { + "name": "Arab, Syrian", + "country": "United States", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 193000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 40.7, + "lng": -73.87, + "code": "PG043644" + }, + { + "name": "Chikwa", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 89500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 23.97, + "lng": 84.3, + "code": "PG041852" + }, + { + "name": "Assyrian", + "country": "Germany", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 70000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 50.03, + "lng": 8.25, + "code": "PG000214" + }, + { + "name": "Assyrian", + "country": "United States", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 70000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 37.75, + "lng": -122.21, + "code": "PG043528" + }, + { + "name": "Kurd, Northern", + "country": "Russian Federation", + "lang": "Kurdish, Northern", + "rol3": "kmr", + "pct_christian": 3.5, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 44.63, + "lng": 39.24, + "code": "PG024465" + }, + { + "name": "Assyrian", + "country": "Canada", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 43.83, + "lng": -79.46, + "code": "PG043355" + }, + { + "name": "Dayare", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.79, + "lng": 77.53, + "code": "PG049780" + }, + { + "name": "Arab, Palestinian", + "country": "El Salvador", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 13.71, + "lng": -89.19, + "code": "PG039263" + }, + { + "name": "Romani, Balkan", + "country": "France", + "lang": "Romani, Balkan", + "rol3": "rmn", + "pct_christian": 3.5, + "pop": 650.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 48.84, + "lng": 2.35, + "code": "PG000134" + } + ] + }, + "Egypt": { + "target_upg": 34, + "target_pop": 82788900, + "target_top_langs": [ + "Arabic, Egyptian", + "Arabic, Sudanese", + "Arabic, Algerian", + "Arabic, Moroccan" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Han Chinese, Mandarin", + "country": "Egypt", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 65500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 30.05, + "lng": 31.32, + "code": "PG050167" + }, + { + "name": "Amhara", + "country": "Canada", + "lang": "Amharic", + "rol3": "amh", + "pct_christian": 25.0, + "pop": 14000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 43.83, + "lng": -79.46, + "code": "PG047403" + }, + { + "name": "Arab, Egyptian", + "country": "Australia", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 12.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -31.94, + "lng": 115.89, + "code": "PG020254" + }, + { + "name": "Arab, Syro-Lebanese", + "country": "Australia", + "lang": "Arabic, Gulf", + "rol3": "afb", + "pct_christian": 7.5, + "pop": 192000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -33.38, + "lng": 143.4, + "code": "PG020267" + }, + { + "name": "Arab, Egyptian", + "country": "Germany", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 25500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 52.5, + "lng": 13.4, + "code": "PG042462" + }, + { + "name": "Arab, Lebanese", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024837" + }, + { + "name": "Arab, Palestinian", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024839" + }, + { + "name": "Arab, Egyptian", + "country": "Belgium", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 5300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 50.85, + "lng": 4.38, + "code": "PG000053" + }, + { + "name": "Indri", + "country": "South Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 7.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.78, + "lng": 25.73, + "code": "PG012040" + }, + { + "name": "Egyptian Copt", + "country": "United States", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 3.5, + "pop": 242000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 35.35, + "lng": -111.99, + "code": "PG047347" + }, + { + "name": "Arab, Lebanese", + "country": "Canada", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 234000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.53, + "lng": -73.66, + "code": "PG043431" + }, + { + "name": "Arab, Syrian", + "country": "United States", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 193000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 40.7, + "lng": -73.87, + "code": "PG043644" + }, + { + "name": "Arab", + "country": "South Africa", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -26.17, + "lng": 28.07, + "code": "PG015486" + }, + { + "name": "Delen", + "country": "Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 3.5, + "pop": 13000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 12.06, + "lng": 29.58, + "code": "PG042814" + }, + { + "name": "Arab", + "country": "New Zealand", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -36.89, + "lng": 174.78, + "code": "PG018478" + }, + { + "name": "Ethiopian, Oromo", + "country": "United States", + "lang": "Oromo, West Central", + "rol3": "gaz", + "pct_christian": 3.5, + "pop": 7200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 38.9, + "lng": -77.19, + "code": "PG047338" + }, + { + "name": "Arab, Palestinian", + "country": "El Salvador", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 13.71, + "lng": -89.19, + "code": "PG039263" + } + ] + }, + "Nigeria": { + "target_upg": 52, + "target_pop": 72422800, + "target_top_langs": [ + "Hausa", + "Fulfulde, Nigerian", + "Kanuri, Yerwa", + "Fulfulde, Adamawa" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Rumaya", + "country": "Nigeria", + "lang": "Mala (Nigeria)", + "rol3": "ruy", + "pct_christian": 62.5, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 10.42, + "lng": 8.67, + "code": "PG014094" + }, + { + "name": "Janji", + "country": "Nigeria", + "lang": "Janji", + "rol3": "jni", + "pct_christian": 62.5, + "pop": 2300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 10.12, + "lng": 8.62, + "code": "PG013870" + }, + { + "name": "Kagoma", + "country": "Nigeria", + "lang": "Gyong", + "rol3": "kdm", + "pct_christian": 45.0, + "pop": 50500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.26, + "lng": 8.19, + "code": "PG013889" + }, + { + "name": "Kaivi", + "country": "Nigeria", + "lang": "Kaivi", + "rol3": "kce", + "pct_christian": 45.0, + "pop": 4400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 10.41, + "lng": 8.67, + "code": "PG013891" + }, + { + "name": "Sura", + "country": "Nigeria", + "lang": "Mwaghavul", + "rol3": "sur", + "pct_christian": 35.0, + "pop": 190000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.55, + "lng": 9.02, + "code": "PG014115" + }, + { + "name": "Dadiya", + "country": "Nigeria", + "lang": "Dadiya", + "rol3": "dbd", + "pct_christian": 35.0, + "pop": 66500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.64, + "lng": 11.44, + "code": "PG013294" + }, + { + "name": "Bajju", + "country": "Nigeria", + "lang": "Jju", + "rol3": "kaj", + "pct_christian": 25.0, + "pop": 685000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.68, + "lng": 8.07, + "code": "PG013892" + }, + { + "name": "Okpe", + "country": "Nigeria", + "lang": "Okpe (Southwestern Edoid)", + "rol3": "oke", + "pct_christian": 25.0, + "pop": 465000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.78, + "lng": 5.57, + "code": "PG014065" + }, + { + "name": "Wukari Jukun", + "country": "Nigeria", + "lang": "Wapan", + "rol3": "juk", + "pct_christian": 25.0, + "pop": 222000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.32, + "lng": 9.7, + "code": "PG014174" + }, + { + "name": "Aten", + "country": "Nigeria", + "lang": "Iten", + "rol3": "etx", + "pct_christian": 25.0, + "pop": 73500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.65, + "lng": 8.57, + "code": "PG013646" + }, + { + "name": "Gure-Kahugu", + "country": "Nigeria", + "lang": "Tugbiri-Niragu", + "rol3": "grh", + "pct_christian": 25.0, + "pop": 50500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 10.31, + "lng": 8.42, + "code": "PG013815" + }, + { + "name": "Kagoro", + "country": "Nigeria", + "lang": "Tyap", + "rol3": "kcg", + "pct_christian": 25.0, + "pop": 38000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.59, + "lng": 8.26, + "code": "PG013890" + }, + { + "name": "Awak", + "country": "Nigeria", + "lang": "Awak", + "rol3": "awo", + "pct_christian": 25.0, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.92, + "lng": 11.4, + "code": "PG013649" + }, + { + "name": "Binawa", + "country": "Nigeria", + "lang": "Bina (Nigeria)", + "rol3": "byj", + "pct_christian": 25.0, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 10.29, + "lng": 8.26, + "code": "PG013689" + }, + { + "name": "Naraguta", + "country": "Nigeria", + "lang": "Iguta", + "rol3": "nar", + "pct_christian": 25.0, + "pop": 13000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.99, + "lng": 8.85, + "code": "PG014012" + }, + { + "name": "Karim-Maudi", + "country": "Nigeria", + "lang": "Karimjo", + "rol3": "cfg", + "pct_christian": 25.0, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.86, + "lng": 10.82, + "code": "PG023179" + }, + { + "name": "Kono", + "country": "Nigeria", + "lang": "Kono (Nigeria)", + "rol3": "klk", + "pct_christian": 25.0, + "pop": 11000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 10.23, + "lng": 8.4, + "code": "PG013929" + }, + { + "name": "Lakka", + "country": "Nigeria", + "lang": "Kabba", + "rol3": "ksp", + "pct_christian": 25.0, + "pop": 10500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 9.15, + "lng": 11.25, + "code": "PG013956" + }, + { + "name": "Burak", + "country": "Nigeria", + "lang": "Burak", + "rol3": "bys", + "pct_christian": 25.0, + "pop": 8800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.74, + "lng": 11.28, + "code": "PG013704" + }, + { + "name": "Kholok", + "country": "Nigeria", + "lang": "Kholok", + "rol3": "ktc", + "pct_christian": 25.0, + "pop": 7100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 9.3, + "lng": 11.13, + "code": "PG014377" + }, + { + "name": "Mingang Doso", + "country": "Nigeria", + "lang": "Mingang Doso", + "rol3": "mko", + "pct_christian": 25.0, + "pop": 6200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.4, + "lng": 11.26, + "code": "PG014411" + }, + { + "name": "Katab", + "country": "Nigeria", + "lang": "Tyap", + "rol3": "kcg", + "pct_christian": 17.5, + "pop": 287000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.82, + "lng": 8.31, + "code": "PG013912" + }, + { + "name": "Begbere", + "country": "Nigeria", + "lang": "Koro Wachi", + "rol3": "bqv", + "pct_christian": 17.5, + "pop": 171000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.69, + "lng": 7.64, + "code": "PG013046" + }, + { + "name": "Ndoro", + "country": "Nigeria", + "lang": "Ndoola", + "rol3": "ndr", + "pct_christian": 17.5, + "pop": 121000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 6.98, + "lng": 10.78, + "code": "PG014016" + }, + { + "name": "Chamba Leko", + "country": "Nigeria", + "lang": "Samba Leko", + "rol3": "ndi", + "pct_christian": 17.5, + "pop": 118000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 7.83, + "lng": 10.69, + "code": "PG013720" + }, + { + "name": "Pero", + "country": "Nigeria", + "lang": "Pero", + "rol3": "pip", + "pct_christian": 17.5, + "pop": 57500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.7, + "lng": 11.17, + "code": "PG014080" + }, + { + "name": "Bandawa-Minda", + "country": "Nigeria", + "lang": "Shoo-Minda-Nye", + "rol3": "bcv", + "pct_christian": 17.5, + "pop": 38000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 8.97, + "lng": 10.99, + "code": "PG013664" + }, + { + "name": "Etulo", + "country": "Nigeria", + "lang": "Etulo", + "rol3": "utr", + "pct_christian": 17.5, + "pop": 25500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 7.29, + "lng": 9.32, + "code": "PG013776" + }, + { + "name": "Ruruma", + "country": "Nigeria", + "lang": "Ruma", + "rol3": "ruz", + "pct_christian": 17.5, + "pop": 16500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 10.23, + "lng": 8.64, + "code": "PG014095" + }, + { + "name": "Gwomu", + "country": "Nigeria", + "lang": "Moo", + "rol3": "gwg", + "pct_christian": 17.5, + "pop": 11000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.48, + "lng": 11.3, + "code": "PG013824" + }, + { + "name": "Bukwun", + "country": "Nigeria", + "lang": "Bukwen", + "rol3": "buz", + "pct_christian": 17.5, + "pop": 1300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 6.94, + "lng": 10.2, + "code": "PG013283" + }, + { + "name": "Berom", + "country": "Nigeria", + "lang": "Berom", + "rol3": "bom", + "pct_christian": 12.5, + "pop": 1485000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.58, + "lng": 8.8, + "code": "PG013683" + }, + { + "name": "Tarok", + "country": "Nigeria", + "lang": "Tarok", + "rol3": "yer", + "pct_christian": 12.5, + "pop": 584000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.13, + "lng": 10.1, + "code": "PG014124" + }, + { + "name": "Hyam", + "country": "Nigeria", + "lang": "Hyam", + "rol3": "jab", + "pct_christian": 12.5, + "pop": 396000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.54, + "lng": 8.09, + "code": "PG013833" + }, + { + "name": "Bachama", + "country": "Nigeria", + "lang": "Bacama", + "rol3": "bcy", + "pct_christian": 12.5, + "pop": 341000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.46, + "lng": 12.08, + "code": "PG013653" + }, + { + "name": "Tangale", + "country": "Nigeria", + "lang": "Tangale", + "rol3": "tan", + "pct_christian": 12.5, + "pop": 326000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.81, + "lng": 11.21, + "code": "PG014122" + }, + { + "name": "Kambari", + "country": "Nigeria", + "lang": "Tsishingini", + "rol3": "tsw", + "pct_christian": 12.5, + "pop": 318000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 10.34, + "lng": 5.35, + "code": "PG013897" + }, + { + "name": "Marghi Central", + "country": "Nigeria", + "lang": "Marghi Central", + "rol3": "mrt", + "pct_christian": 12.5, + "pop": 279000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 10.63, + "lng": 13.35, + "code": "PG013988" + }, + { + "name": "Kyibaku", + "country": "Nigeria", + "lang": "Kibaku", + "rol3": "ckl", + "pct_christian": 12.5, + "pop": 234000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 10.98, + "lng": 12.88, + "code": "PG013953" + }, + { + "name": "Chamba Daka", + "country": "Nigeria", + "lang": "Samba Daka", + "rol3": "ccg", + "pct_christian": 12.5, + "pop": 186000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 8.62, + "lng": 11.73, + "code": "PG013719" + }, + { + "name": "Rukuba", + "country": "Nigeria", + "lang": "Kuce", + "rol3": "ruk", + "pct_christian": 12.5, + "pop": 180000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.18, + "lng": 8.24, + "code": "PG014093" + }, + { + "name": "Kuteb", + "country": "Nigeria", + "lang": "Kutep", + "rol3": "kub", + "pct_christian": 12.5, + "pop": 84500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.24, + "lng": 10.06, + "code": "PG013946" + }, + { + "name": "Bitare", + "country": "Nigeria", + "lang": "Bitare", + "rol3": "brt", + "pct_christian": 12.5, + "pop": 73500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.11, + "lng": 10.74, + "code": "PG013691" + }, + { + "name": "Glavda", + "country": "Nigeria", + "lang": "Glavda", + "rol3": "glw", + "pct_christian": 12.5, + "pop": 57500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 11.15, + "lng": 13.81, + "code": "PG013803" + }, + { + "name": "Kulung", + "country": "Nigeria", + "lang": "Kulung (Nigeria)", + "rol3": "bbu", + "pct_christian": 12.5, + "pop": 56000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.34, + "lng": 11.0, + "code": "PG013941" + }, + { + "name": "Chawai", + "country": "Nigeria", + "lang": "Atsam", + "rol3": "cch", + "pct_christian": 12.5, + "pop": 50000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 10.26, + "lng": 8.29, + "code": "PG013722" + }, + { + "name": "Montol", + "country": "Nigeria", + "lang": "Tehl", + "rol3": "mtl", + "pct_christian": 12.5, + "pop": 46500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.0, + "lng": 9.64, + "code": "PG014003" + }, + { + "name": "Fali", + "country": "Nigeria", + "lang": "Fali Muchella", + "rol3": "fli", + "pct_christian": 12.5, + "pop": 37000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 10.32, + "lng": 13.39, + "code": "PG013781" + }, + { + "name": "Passam", + "country": "Nigeria", + "lang": "Kpasham", + "rol3": "pbn", + "pct_christian": 12.5, + "pop": 34500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.27, + "lng": 11.76, + "code": "PG014079" + }, + { + "name": "Epinmi", + "country": "Nigeria", + "lang": "Ukue", + "rol3": "uku", + "pct_christian": 12.5, + "pop": 29000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.43, + "lng": 5.78, + "code": "PG014146" + }, + { + "name": "Yiwom", + "country": "Nigeria", + "lang": "Ywom", + "rol3": "gek", + "pct_christian": 12.5, + "pop": 29000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 8.91, + "lng": 9.75, + "code": "PG014192" + }, + { + "name": "Magu", + "country": "Nigeria", + "lang": "Mvanip", + "rol3": "mcj", + "pct_christian": 12.5, + "pop": 24000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.95, + "lng": 11.02, + "code": "PG013979" + }, + { + "name": "Lelau", + "country": "Nigeria", + "lang": "Leelau", + "rol3": "ldk", + "pct_christian": 12.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.33, + "lng": 11.1, + "code": "PG013964" + }, + { + "name": "Kam", + "country": "Nigeria", + "lang": "Kam", + "rol3": "kdx", + "pct_christian": 12.5, + "pop": 11000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 8.35, + "lng": 11.06, + "code": "PG013895" + }, + { + "name": "Tapshin", + "country": "Nigeria", + "lang": "Kusur-Myet", + "rol3": "tdl", + "pct_christian": 12.5, + "pop": 10500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.55, + "lng": 9.64, + "code": "PG014123" + }, + { + "name": "Hedi", + "country": "Nigeria", + "lang": "Hdi", + "rol3": "xed", + "pct_christian": 12.5, + "pop": 7800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.94, + "lng": 13.69, + "code": "PG013829" + }, + { + "name": "Lamja", + "country": "Nigeria", + "lang": "Lamja-Dengsa-Tola", + "rol3": "ldh", + "pct_christian": 12.5, + "pop": 7200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 8.87, + "lng": 12.06, + "code": "PG013959" + }, + { + "name": "Kumba", + "country": "Nigeria", + "lang": "Kumba", + "rol3": "ksm", + "pct_christian": 12.5, + "pop": 6900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.05, + "lng": 12.04, + "code": "PG013943" + }, + { + "name": "Pai", + "country": "Nigeria", + "lang": "Pye", + "rol3": "pai", + "pct_christian": 12.5, + "pop": 6700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.55, + "lng": 9.29, + "code": "PG014077" + }, + { + "name": "Cara", + "country": "Nigeria", + "lang": "Cara", + "rol3": "cfd", + "pct_christian": 12.5, + "pop": 6500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.09, + "lng": 8.78, + "code": "PG012312" + }, + { + "name": "Bali", + "country": "Nigeria", + "lang": "Bali (Nigeria)", + "rol3": "bcn", + "pct_christian": 12.5, + "pop": 5300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.29, + "lng": 11.81, + "code": "PG013660" + }, + { + "name": "Aduge", + "country": "Nigeria", + "lang": "Aduge", + "rol3": "adu", + "pct_christian": 12.5, + "pop": 4400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 7.61, + "lng": 6.07, + "code": "PG013624" + }, + { + "name": "Kapya", + "country": "Nigeria", + "lang": "Kapya", + "rol3": "klo", + "pct_christian": 12.5, + "pop": 350.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 7.05, + "lng": 9.93, + "code": "PG014375" + }, + { + "name": "Mangas", + "country": "Nigeria", + "lang": "Mansi (Nigeria)", + "rol3": "zns", + "pct_christian": 12.5, + "pop": 225.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 10.16, + "lng": 9.82, + "code": "PG013986" + }, + { + "name": "Igbo", + "country": "Nigeria", + "lang": "Igbo", + "rol3": "ibo", + "pct_christian": 7.5, + "pop": 34860000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.82, + "lng": 7.31, + "code": "PG013844" + }, + { + "name": "Ibibio", + "country": "Nigeria", + "lang": "Ibibio", + "rol3": "ibb", + "pct_christian": 7.5, + "pop": 6970000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.13, + "lng": 7.76, + "code": "PG013837" + }, + { + "name": "Egba", + "country": "Nigeria", + "lang": "Yoruba", + "rol3": "yor", + "pct_christian": 7.5, + "pop": 6085000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 6.98, + "lng": 3.48, + "code": "PG013759" + }, + { + "name": "Tiv", + "country": "Nigeria", + "lang": "Tiv", + "rol3": "tiv", + "pct_christian": 7.5, + "pop": 5200000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.58, + "lng": 8.92, + "code": "PG014132" + }, + { + "name": "Efik", + "country": "Nigeria", + "lang": "Efik", + "rol3": "efi", + "pct_christian": 7.5, + "pop": 2890000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.26, + "lng": 8.32, + "code": "PG013757" + }, + { + "name": "Egbira", + "country": "Nigeria", + "lang": "Ebira", + "rol3": "igb", + "pct_christian": 7.5, + "pop": 2365000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.0, + "lng": 7.12, + "code": "PG013314" + }, + { + "name": "Urhobo", + "country": "Nigeria", + "lang": "Urhobo", + "rol3": "urh", + "pct_christian": 7.5, + "pop": 1245000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.78, + "lng": 5.78, + "code": "PG014152" + }, + { + "name": "Isekiri", + "country": "Nigeria", + "lang": "Isekiri", + "rol3": "its", + "pct_christian": 7.5, + "pop": 1075000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.23, + "lng": 5.42, + "code": "PG013858" + }, + { + "name": "Ezaa", + "country": "Nigeria", + "lang": "Ezaa", + "rol3": "eza", + "pct_christian": 7.5, + "pop": 829000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.42, + "lng": 7.87, + "code": "PG013780" + }, + { + "name": "Kerang", + "country": "Nigeria", + "lang": "Ngas", + "rol3": "anc", + "pct_christian": 7.5, + "pop": 772000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.27, + "lng": 9.56, + "code": "PG013642" + }, + { + "name": "Isoko", + "country": "Nigeria", + "lang": "Isoko", + "rol3": "iso", + "pct_christian": 7.5, + "pop": 765000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.66, + "lng": 6.09, + "code": "PG013859" + }, + { + "name": "Ewe", + "country": "Nigeria", + "lang": "Éwé", + "rol3": "ewe", + "pct_christian": 7.5, + "pop": 696000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 6.76, + "lng": 3.42, + "code": "PG013779" + }, + { + "name": "Kamwe", + "country": "Nigeria", + "lang": "Kamwe", + "rol3": "hig", + "pct_christian": 7.5, + "pop": 683000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 10.57, + "lng": 13.41, + "code": "PG013901" + }, + { + "name": "Kalabari", + "country": "Nigeria", + "lang": "Kalabari", + "rol3": "ijn", + "pct_christian": 7.5, + "pop": 579000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.57, + "lng": 6.83, + "code": "PG013754" + }, + { + "name": "Yekhee", + "country": "Nigeria", + "lang": "Etsako", + "rol3": "ets", + "pct_christian": 7.5, + "pop": 574000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.2, + "lng": 6.48, + "code": "PG014187" + }, + { + "name": "Okrika", + "country": "Nigeria", + "lang": "Kirike", + "rol3": "okr", + "pct_christian": 7.5, + "pop": 520000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.69, + "lng": 7.08, + "code": "PG014067" + }, + { + "name": "Kana", + "country": "Nigeria", + "lang": "Khana", + "rol3": "ogo", + "pct_christian": 7.5, + "pop": 488000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.7, + "lng": 7.47, + "code": "PG013902" + }, + { + "name": "Ogbia", + "country": "Nigeria", + "lang": "Ogbia", + "rol3": "ogb", + "pct_christian": 7.5, + "pop": 450000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.81, + "lng": 6.38, + "code": "PG014056" + }, + { + "name": "Saya", + "country": "Nigeria", + "lang": "Saya", + "rol3": "say", + "pct_christian": 7.5, + "pop": 410000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.84, + "lng": 9.64, + "code": "PG014099" + }, + { + "name": "Ikwo", + "country": "Nigeria", + "lang": "Ikwo", + "rol3": "iqw", + "pct_christian": 7.5, + "pop": 366000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.99, + "lng": 8.25, + "code": "PG013856" + }, + { + "name": "Ukwuani-Aboh", + "country": "Nigeria", + "lang": "Ukwuani-Aboh-Ndoni", + "rol3": "ukw", + "pct_christian": 7.5, + "pop": 354000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.62, + "lng": 6.57, + "code": "PG014147" + }, + { + "name": "Bokyi", + "country": "Nigeria", + "lang": "Bokyi", + "rol3": "bky", + "pct_christian": 7.5, + "pop": 310000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.26, + "lng": 8.99, + "code": "PG013695" + }, + { + "name": "Yala", + "country": "Nigeria", + "lang": "Yala", + "rol3": "yba", + "pct_christian": 7.5, + "pop": 310000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.36, + "lng": 8.5, + "code": "PG014182" + }, + { + "name": "Mo Egon", + "country": "Nigeria", + "lang": "Eggon", + "rol3": "ego", + "pct_christian": 7.5, + "pop": 305000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.74, + "lng": 8.46, + "code": "PG013760" + }, + { + "name": "Bokkos", + "country": "Nigeria", + "lang": "Ron", + "rol3": "cla", + "pct_christian": 7.5, + "pop": 287000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.29, + "lng": 8.98, + "code": "PG013693" + }, + { + "name": "Yako", + "country": "Nigeria", + "lang": "Lokaa", + "rol3": "yaz", + "pct_christian": 7.5, + "pop": 273000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.9, + "lng": 8.13, + "code": "PG014181" + }, + { + "name": "Southeast Ijaw", + "country": "Nigeria", + "lang": "Ijo, Southeast", + "rol3": "ijs", + "pct_christian": 7.5, + "pop": 232000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.59, + "lng": 6.21, + "code": "PG014113" + }, + { + "name": "Mada", + "country": "Nigeria", + "lang": "Mada (Nigeria)", + "rol3": "mda", + "pct_christian": 7.5, + "pop": 223000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.01, + "lng": 8.31, + "code": "PG014403" + }, + { + "name": "Gokana", + "country": "Nigeria", + "lang": "Gokana", + "rol3": "gkn", + "pct_christian": 7.5, + "pop": 195000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.65, + "lng": 7.29, + "code": "PG013806" + }, + { + "name": "Lela", + "country": "Nigeria", + "lang": "C’Lela", + "rol3": "dri", + "pct_christian": 7.5, + "pop": 195000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 11.46, + "lng": 5.28, + "code": "PG013963" + }, + { + "name": "Adara", + "country": "Nigeria", + "lang": "Adara", + "rol3": "kad", + "pct_christian": 7.5, + "pop": 149000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.83, + "lng": 7.41, + "code": "PG013886" + }, + { + "name": "Obanliku", + "country": "Nigeria", + "lang": "Abanglekuo", + "rol3": "bzy", + "pct_christian": 7.5, + "pop": 141000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.57, + "lng": 9.23, + "code": "PG014050" + }, + { + "name": "Mbula-Bwazza", + "country": "Nigeria", + "lang": "Mbula-Bwazza", + "rol3": "mbu", + "pct_christian": 7.5, + "pop": 140000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.59, + "lng": 12.36, + "code": "PG013994" + }, + { + "name": "Dza", + "country": "Nigeria", + "lang": "Dza", + "rol3": "jen", + "pct_christian": 7.5, + "pop": 133000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.95, + "lng": 10.93, + "code": "PG013311" + }, + { + "name": "Yandang", + "country": "Nigeria", + "lang": "Yendang", + "rol3": "ynq", + "pct_christian": 7.5, + "pop": 127000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 8.95, + "lng": 11.81, + "code": "PG014184" + }, + { + "name": "Nungu", + "country": "Nigeria", + "lang": "Nungu", + "rol3": "rin", + "pct_christian": 7.5, + "pop": 108000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.18, + "lng": 8.5, + "code": "PG014043" + }, + { + "name": "Amo", + "country": "Nigeria", + "lang": "Amo", + "rol3": "amo", + "pct_christian": 7.5, + "pop": 107000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 10.23, + "lng": 8.64, + "code": "PG013640" + }, + { + "name": "Irigwe", + "country": "Nigeria", + "lang": "Rigwe", + "rol3": "iri", + "pct_christian": 7.5, + "pop": 96000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.88, + "lng": 8.83, + "code": "PG013857" + }, + { + "name": "Mama", + "country": "Nigeria", + "lang": "Mama", + "rol3": "mma", + "pct_christian": 7.5, + "pop": 72500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.0, + "lng": 8.62, + "code": "PG013982" + }, + { + "name": "Hwana", + "country": "Nigeria", + "lang": "Hwana", + "rol3": "hwo", + "pct_christian": 7.5, + "pop": 72000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 10.22, + "lng": 12.67, + "code": "PG013832" + }, + { + "name": "Koma", + "country": "Nigeria", + "lang": "Koma", + "rol3": "kmy", + "pct_christian": 7.5, + "pop": 70000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.67, + "lng": 12.43, + "code": "PG013942" + }, + { + "name": "Cham-Mwana", + "country": "Nigeria", + "lang": "Cham", + "rol3": "cfa", + "pct_christian": 7.5, + "pop": 55000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.77, + "lng": 11.69, + "code": "PG013716" + }, + { + "name": "Tigon Mbembe", + "country": "Nigeria", + "lang": "Mbembe, Tigon", + "rol3": "nza", + "pct_christian": 7.5, + "pop": 52000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 7.16, + "lng": 10.68, + "code": "PG014130" + }, + { + "name": "Mboi", + "country": "Nigeria", + "lang": "Mboi", + "rol3": "moi", + "pct_christian": 7.5, + "pop": 42500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.48, + "lng": 12.67, + "code": "PG013992" + }, + { + "name": "Zari", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 41000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 9.87, + "lng": 9.4, + "code": "PG014203" + }, + { + "name": "Etebi", + "country": "Nigeria", + "lang": "Etebi", + "rol3": "etb", + "pct_christian": 7.5, + "pop": 37000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.63, + "lng": 8.07, + "code": "PG013775" + }, + { + "name": "Sukur", + "country": "Nigeria", + "lang": "Sukur", + "rol3": "syk", + "pct_christian": 7.5, + "pop": 33000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.88, + "lng": 13.64, + "code": "PG014114" + }, + { + "name": "Bassa", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 30000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 10.67, + "lng": 5.82, + "code": "PG033345" + }, + { + "name": "Nandu-Tari", + "country": "Nigeria", + "lang": "Ahwai", + "rol3": "nfd", + "pct_christian": 7.5, + "pop": 28000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.26, + "lng": 8.56, + "code": "PG014011" + }, + { + "name": "Sasaru", + "country": "Nigeria", + "lang": "Sasaru", + "rol3": "sxs", + "pct_christian": 7.5, + "pop": 26000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.16, + "lng": 6.17, + "code": "PG014098" + }, + { + "name": "Yamba", + "country": "Nigeria", + "lang": "Yamba", + "rol3": "yam", + "pct_christian": 7.5, + "pop": 24000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.62, + "lng": 11.1, + "code": "PG014183" + }, + { + "name": "Otwa", + "country": "Nigeria", + "lang": "Ghotuo", + "rol3": "aaa", + "pct_christian": 7.5, + "pop": 22000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.18, + "lng": 5.98, + "code": "PG013800" + }, + { + "name": "Ngwaba", + "country": "Nigeria", + "lang": "Ngwaba", + "rol3": "ngw", + "pct_christian": 7.5, + "pop": 22000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 10.17, + "lng": 12.85, + "code": "PG014022" + }, + { + "name": "Akpet", + "country": "Nigeria", + "lang": "Ukpet-Ehom", + "rol3": "akd", + "pct_christian": 7.5, + "pop": 21500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.57, + "lng": 8.17, + "code": "PG013636" + }, + { + "name": "Bumaji", + "country": "Nigeria", + "lang": "Bumaji", + "rol3": "byp", + "pct_christian": 7.5, + "pop": 21500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.48, + "lng": 9.31, + "code": "PG013702" + }, + { + "name": "Lubila", + "country": "Nigeria", + "lang": "Lubila", + "rol3": "kcc", + "pct_christian": 7.5, + "pop": 21500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.41, + "lng": 8.29, + "code": "PG013971" + }, + { + "name": "Lo", + "country": "Nigeria", + "lang": "Loo", + "rol3": "ldo", + "pct_christian": 7.5, + "pop": 18000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.35, + "lng": 11.11, + "code": "PG013967" + }, + { + "name": "Sara Mbai", + "country": "Nigeria", + "lang": "Mbay", + "rol3": "myb", + "pct_christian": 7.5, + "pop": 16500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 11.84, + "lng": 13.14, + "code": "PG014097" + }, + { + "name": "Shal", + "country": "Nigeria", + "lang": "Shall-Zwall", + "rol3": "sha", + "pct_christian": 7.5, + "pop": 16500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.26, + "lng": 8.75, + "code": "PG014103" + }, + { + "name": "Korop", + "country": "Nigeria", + "lang": "Durop", + "rol3": "krp", + "pct_christian": 7.5, + "pop": 16000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.25, + "lng": 8.66, + "code": "PG013931" + }, + { + "name": "Kwa", + "country": "Nigeria", + "lang": "Kwa", + "rol3": "kwb", + "pct_christian": 7.5, + "pop": 15000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.5, + "lng": 11.62, + "code": "PG013949" + }, + { + "name": "Banwinji", + "country": "Nigeria", + "lang": "Bangwinji", + "rol3": "bsj", + "pct_christian": 7.5, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.64, + "lng": 11.33, + "code": "PG013667" + }, + { + "name": "Ito", + "country": "Nigeria", + "lang": "Ito", + "rol3": "itw", + "pct_christian": 7.5, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.06, + "lng": 8.0, + "code": "PG013860" + }, + { + "name": "Ebughu", + "country": "Nigeria", + "lang": "Ebughu", + "rol3": "ebg", + "pct_christian": 7.5, + "pop": 13000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.68, + "lng": 8.25, + "code": "PG013755" + }, + { + "name": "Itu Mbon Uzo", + "country": "Nigeria", + "lang": "Itu Mbon Uzo", + "rol3": "itm", + "pct_christian": 7.5, + "pop": 13000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.5, + "lng": 7.81, + "code": "PG013861" + }, + { + "name": "Idere", + "country": "Nigeria", + "lang": "Idere", + "rol3": "ide", + "pct_christian": 7.5, + "pop": 12500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.22, + "lng": 8.04, + "code": "PG013839" + }, + { + "name": "Kyak", + "country": "Nigeria", + "lang": "Kyak", + "rol3": "bka", + "pct_christian": 7.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.53, + "lng": 11.35, + "code": "PG014393" + }, + { + "name": "Arum-Chessu", + "country": "Nigeria", + "lang": "Arum", + "rol3": "aab", + "pct_christian": 7.5, + "pop": 11000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.97, + "lng": 8.7, + "code": "PG013643" + }, + { + "name": "Ilue", + "country": "Nigeria", + "lang": "Ilue", + "rol3": "ilv", + "pct_christian": 7.5, + "pop": 10500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.78, + "lng": 8.25, + "code": "PG033351" + }, + { + "name": "Mboa", + "country": "Nigeria", + "lang": "Mbonga", + "rol3": "xmb", + "pct_christian": 7.5, + "pop": 9900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 11.15, + "lng": 13.75, + "code": "PG013993" + }, + { + "name": "Turkwam", + "country": "Nigeria", + "lang": "Atoro", + "rol3": "tdv", + "pct_christian": 7.5, + "pop": 8000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.17, + "lng": 8.65, + "code": "PG014136" + }, + { + "name": "Duguza", + "country": "Nigeria", + "lang": "Tunzuii", + "rol3": "dza", + "pct_christian": 7.5, + "pop": 7400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.03, + "lng": 9.12, + "code": "PG013308" + }, + { + "name": "Idon", + "country": "Nigeria", + "lang": "Ajiya", + "rol3": "idc", + "pct_christian": 7.5, + "pop": 7300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.17, + "lng": 7.87, + "code": "PG013841" + }, + { + "name": "Kugama", + "country": "Nigeria", + "lang": "Kugama", + "rol3": "kow", + "pct_christian": 7.5, + "pop": 7100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.14, + "lng": 12.06, + "code": "PG013937" + }, + { + "name": "Lam-nso", + "country": "Nigeria", + "lang": "Lamnso'", + "rol3": "lns", + "pct_christian": 7.5, + "pop": 7100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.61, + "lng": 11.16, + "code": "PG014395" + }, + { + "name": "Bete", + "country": "Nigeria", + "lang": "Jukun Takum", + "rol3": "jbu", + "pct_christian": 7.5, + "pop": 6900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.02, + "lng": 9.75, + "code": "PG013684" + }, + { + "name": "Obulom", + "country": "Nigeria", + "lang": "Obulom", + "rol3": "obu", + "pct_christian": 7.5, + "pop": 6700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.79, + "lng": 7.05, + "code": "PG014052" + }, + { + "name": "Teme", + "country": "Nigeria", + "lang": "Teme", + "rol3": "tdo", + "pct_christian": 7.5, + "pop": 6700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 8.99, + "lng": 11.97, + "code": "PG014126" + }, + { + "name": "Mini", + "country": "Nigeria", + "lang": "Abureni", + "rol3": "mgj", + "pct_christian": 7.5, + "pop": 6500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 4.61, + "lng": 6.45, + "code": "PG013999" + }, + { + "name": "Gyanzi", + "country": "Nigeria", + "lang": "Gyaazi", + "rol3": "gyz", + "pct_christian": 7.5, + "pop": 5900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.35, + "lng": 9.62, + "code": "PG013826" + }, + { + "name": "Bakpinka", + "country": "Nigeria", + "lang": "Iyongiyong", + "rol3": "bbs", + "pct_christian": 7.5, + "pop": 5400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.25, + "lng": 8.27, + "code": "PG013658" + }, + { + "name": "Firan", + "country": "Nigeria", + "lang": "Firan", + "rol3": "fir", + "pct_christian": 7.5, + "pop": 4400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.6, + "lng": 8.72, + "code": "PG013321" + }, + { + "name": "Surubu", + "country": "Nigeria", + "lang": "Vori", + "rol3": "sde", + "pct_christian": 7.5, + "pop": 3800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 10.17, + "lng": 8.32, + "code": "PG014116" + }, + { + "name": "Zeem", + "country": "Nigeria", + "lang": "Zeem", + "rol3": "zem", + "pct_christian": 7.5, + "pop": 3400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.95, + "lng": 9.29, + "code": "PG014204" + }, + { + "name": "Ambo", + "country": "Nigeria", + "lang": "Ambo", + "rol3": "amb", + "pct_christian": 7.5, + "pop": 3400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.08, + "lng": 10.77, + "code": "PG014310" + }, + { + "name": "Tala", + "country": "Nigeria", + "lang": "Tala", + "rol3": "tak", + "pct_christian": 7.5, + "pop": 2200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.23, + "lng": 9.86, + "code": "PG014119" + } + ] + }, + "Thailand": { + "target_upg": 76, + "target_pop": 61274800, + "target_top_langs": [ + "Thai", + "Thai, Northeastern", + "Thai, Northern", + "Thai, Southern" + ], + "target_top_religion": "Buddhism", + "neighbors": [ + { + "name": "Lahu", + "country": "Thailand", + "lang": "Lahu", + "rol3": "lhu", + "pct_christian": 35.0, + "pop": 82000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.46, + "lng": 99.05, + "code": "PG010877" + }, + { + "name": "Korean", + "country": "Thailand", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 35.0, + "pop": 20500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 13.76, + "lng": 100.56, + "code": "PG010874" + }, + { + "name": "Sgaw Karen", + "country": "Thailand", + "lang": "Karen, S’gaw", + "rol3": "ksw", + "pct_christian": 25.0, + "pop": 204000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 17.09, + "lng": 98.79, + "code": "PG010917" + }, + { + "name": "Vietnamese", + "country": "Thailand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 25.0, + "pop": 119000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Mahayana", + "lat": 13.76, + "lng": 100.56, + "code": "PG010933" + }, + { + "name": "Red Karen", + "country": "Thailand", + "lang": "Kayah, Eastern", + "rol3": "eky", + "pct_christian": 25.0, + "pop": 110000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.47, + "lng": 97.98, + "code": "PG010911" + }, + { + "name": "Akha", + "country": "Thailand", + "lang": "Akha", + "rol3": "ahk", + "pct_christian": 17.5, + "pop": 58000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 20.08, + "lng": 99.66, + "code": "PG010820" + }, + { + "name": "Lahu Shi", + "country": "Thailand", + "lang": "Lahu Shi", + "rol3": "lhi", + "pct_christian": 17.5, + "pop": 15500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 18.98, + "lng": 99.39, + "code": "PG010939" + }, + { + "name": "Padaung Karen", + "country": "Thailand", + "lang": "Kayan (Myanmar)", + "rol3": "pdu", + "pct_christian": 17.5, + "pop": 2800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 18.79, + "lng": 98.99, + "code": "PG010902" + }, + { + "name": "Bghai Karen", + "country": "Thailand", + "lang": "Karen, Bwe", + "rol3": "bwe", + "pct_christian": 17.5, + "pop": 2100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.53, + "lng": 97.93, + "code": "PG010827" + }, + { + "name": "Black Karen", + "country": "Thailand", + "lang": "Pa’o", + "rol3": "blk", + "pct_christian": 17.5, + "pop": 850.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.74, + "lng": 98.06, + "code": "PG010829" + }, + { + "name": "Flowery/Southern Lisu", + "country": "Thailand", + "lang": "Lisu", + "rol3": "lis", + "pct_christian": 12.5, + "pop": 42000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 18.96, + "lng": 98.82, + "code": "PG010847" + }, + { + "name": "Western Lawa", + "country": "Thailand", + "lang": "Lawa, Western", + "rol3": "lcp", + "pct_christian": 12.5, + "pop": 8600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 18.36, + "lng": 98.06, + "code": "PG010935" + }, + { + "name": "Karen, Pwo Northern", + "country": "Thailand", + "lang": "Karen, Pwo Northern", + "rol3": "pww", + "pct_christian": 7.5, + "pop": 85000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 18.22, + "lng": 98.03, + "code": "PG010936" + }, + { + "name": "Kensiu", + "country": "Thailand", + "lang": "Kensiu", + "rol3": "kns", + "pct_christian": 7.5, + "pop": 300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.02, + "lng": 101.16, + "code": "PG010869" + }, + { + "name": "Han Chinese", + "country": "Thailand", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 3.5, + "pop": 5785000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 14.64, + "lng": 101.07, + "code": "PG010849" + }, + { + "name": "So", + "country": "Thailand", + "lang": "So (Laos)", + "rol3": "sss", + "pct_christian": 3.5, + "pop": 105000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Folk", + "lat": 17.39, + "lng": 104.05, + "code": "PG010920" + }, + { + "name": "Mien", + "country": "Thailand", + "lang": "Iu Mien", + "rol3": "ium", + "pct_christian": 3.5, + "pop": 46500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 19.13, + "lng": 100.45, + "code": "PG010890" + }, + { + "name": "Tamil", + "country": "Thailand", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 3.5, + "pop": 35000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 13.76, + "lng": 100.56, + "code": "PG010925" + }, + { + "name": "Black Tai", + "country": "Thailand", + "lang": "Tai Dam", + "rol3": "blt", + "pct_christian": 3.5, + "pop": 25000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.92, + "lng": 99.84, + "code": "PG010830" + }, + { + "name": "Western Bru", + "country": "Thailand", + "lang": "Bru, Western", + "rol3": "brv", + "pct_christian": 3.5, + "pop": 17000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 17.21, + "lng": 104.15, + "code": "PG010934" + }, + { + "name": "Yoy", + "country": "Thailand", + "lang": "Yoy", + "rol3": "yoy", + "pct_christian": 3.5, + "pop": 6300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 17.71, + "lng": 104.01, + "code": "PG010940" + }, + { + "name": "Urak Lawoi Aborigine", + "country": "Thailand", + "lang": "Urak Lawoi’", + "rol3": "urk", + "pct_christian": 3.5, + "pop": 2300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 7.44, + "lng": 99.09, + "code": "PG010931" + }, + { + "name": "Tonga", + "country": "Thailand", + "lang": "Ten’edn", + "rol3": "tnz", + "pct_christian": 3.5, + "pop": 200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.03, + "lng": 101.16, + "code": "PG010894" + }, + { + "name": "Khamet", + "country": "Thailand", + "lang": "Rmeet", + "rol3": "lbn", + "pct_christian": 3.5, + "pop": 150.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.92, + "lng": 99.84, + "code": "PG010870" + }, + { + "name": "Lemo", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 75.0, + "pop": 2300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 25.84, + "lng": 98.78, + "code": "PG007252" + }, + { + "name": "Anglo Indian", + "country": "India", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 398000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 12.95, + "lng": 77.6, + "code": "PG041386" + }, + { + "name": "Indian - Christian", + "country": "South Africa", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 310000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -29.84, + "lng": 30.93, + "code": "PG048045" + }, + { + "name": "Euronesian", + "country": "Samoa", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -13.85, + "lng": -171.8, + "code": "PG018323" + }, + { + "name": "British", + "country": "Tanzania", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -6.83, + "lng": 39.25, + "code": "PG014914" + }, + { + "name": "British", + "country": "Zimbabwe", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 5800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -17.83, + "lng": 31.03, + "code": "PG015650" + }, + { + "name": "Bagti", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 62.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 23.28, + "lng": 86.43, + "code": "PG049044" + }, + { + "name": "American", + "country": "Singapore", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 9800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 1.36, + "lng": 103.82, + "code": "PG018447" + }, + { + "name": "British", + "country": "Barbados", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 13.12, + "lng": -59.6, + "code": "PG016197" + }, + { + "name": "British", + "country": "Venezuela", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 7200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 10.48, + "lng": -66.88, + "code": "PG016461" + }, + { + "name": "British", + "country": "Botswana", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 7100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -24.65, + "lng": 25.91, + "code": "PG015217" + }, + { + "name": "Pitcairn Islander", + "country": "New Zealand", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 250.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -36.89, + "lng": 174.78, + "code": "PG018502" + }, + { + "name": "American", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 95500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -33.52, + "lng": 142.46, + "code": "PG020268" + }, + { + "name": "Eurasian", + "country": "Myanmar", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 56500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 16.85, + "lng": 96.15, + "code": "PG022046" + }, + { + "name": "Caribbean Hindi", + "country": "French Guiana", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 13500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 4.91, + "lng": -52.3, + "code": "PG022284" + }, + { + "name": "Southwest Aborigine Creol", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -32.54, + "lng": 115.99, + "code": "PG008068" + }, + { + "name": "Anglo-Australian", + "country": "Singapore", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 3000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 1.36, + "lng": 103.82, + "code": "PG010684" + }, + { + "name": "American", + "country": "Iceland", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 1800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 64.14, + "lng": -21.89, + "code": "PG000293" + }, + { + "name": "American", + "country": "Marshall Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 7.1, + "lng": 171.22, + "code": "PG009376" + }, + { + "name": "American", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 194740000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 38.3, + "lng": -93.46, + "code": "PG043515" + }, + { + "name": "Detribalized Aborigine", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 580000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -33.75, + "lng": 144.18, + "code": "PG007863" + }, + { + "name": "Jamaican", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 330000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047381" + }, + { + "name": "Barbadian", + "country": "Barbados", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 269000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 13.17, + "lng": -59.56, + "code": "PG016195" + }, + { + "name": "American", + "country": "Panama", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 186000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 9.06, + "lng": -79.38, + "code": "PG050309" + }, + { + "name": "Barbadian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 50500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 40.72, + "lng": -73.97, + "code": "PG046507" + }, + { + "name": "Barbadian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 40500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047394" + }, + { + "name": "Bay Islands Creole", + "country": "Honduras", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 20000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 16.34, + "lng": -86.39, + "code": "PG024758" + }, + { + "name": "American", + "country": "Virgin Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.96, + "lng": -64.8, + "code": "PG050296" + }, + { + "name": "American", + "country": "New Zealand", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 15000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -36.89, + "lng": 174.78, + "code": "PG018513" + }, + { + "name": "American", + "country": "Guam", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 14000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 13.44, + "lng": 144.78, + "code": "PG050299" + }, + { + "name": "Sediq", + "country": "Taiwan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 25.0, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 24.02, + "lng": 121.35, + "code": "PG007536" + }, + { + "name": "American", + "country": "Fiji", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 4600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -18.13, + "lng": 178.44, + "code": "PG018421" + }, + { + "name": "American", + "country": "Greenland", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 3400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 64.18, + "lng": -51.7, + "code": "PG000286" + }, + { + "name": "Maori", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.28, + "lng": -122.84, + "code": "PG050518" + }, + { + "name": "Nakota (Assiniboine)", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.32, + "lng": -106.26, + "code": "PG043527" + }, + { + "name": "Winnebago", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 42.22, + "lng": -96.6, + "code": "PG043689" + }, + { + "name": "Wik-Ngathan", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -13.84, + "lng": 141.57, + "code": "PG008118" + }, + { + "name": "Polynesian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.28, + "lng": -122.84, + "code": "PG050519" + }, + { + "name": "Yankuntatjara", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 950.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": -27.14, + "lng": 133.83, + "code": "PG008134" + }, + { + "name": "Maori", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 37.75, + "lng": -122.21, + "code": "PG047214" + }, + { + "name": "Burmese", + "country": "Germany", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 25.0, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 50.0, + "lng": 8.01, + "code": "PG033529" + }, + { + "name": "African Americans", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 40540000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 39.04, + "lng": -100.02, + "code": "PG048741" + }, + { + "name": "Balmiki (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 17.5, + "pop": 1295000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.44, + "lng": 75.81, + "code": "PG048195" + }, + { + "name": "Eurasian", + "country": "Malaysia", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 68500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 3.07, + "lng": 101.64, + "code": "PG020233" + }, + { + "name": "Bermudians", + "country": "Bermuda", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 66000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 32.31, + "lng": -64.77, + "code": "PG016210" + }, + { + "name": "Caymanian", + "country": "Cayman Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 60500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 19.42, + "lng": -80.89, + "code": "PG016216" + }, + { + "name": "Nigerian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 39500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 37.51, + "lng": -88.1, + "code": "PG047652" + }, + { + "name": "Kenyan", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 26000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 43.83, + "lng": -79.46, + "code": "PG047469" + }, + { + "name": "American", + "country": "Haiti", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 19000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 18.55, + "lng": -72.32, + "code": "PG016382" + }, + { + "name": "Ghanaian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 49.22, + "lng": -122.99, + "code": "PG047407" + }, + { + "name": "Passamaquoddy", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 3300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 46.36, + "lng": -67.46, + "code": "PG043437" + }, + { + "name": "Tlingit", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 2300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 60.48, + "lng": -132.29, + "code": "PG043489" + }, + { + "name": "Straits Salish", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 2000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.77, + "lng": -122.64, + "code": "PG043642" + }, + { + "name": "Onondaga", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 43.05, + "lng": -80.11, + "code": "PG043451" + }, + { + "name": "Barmi", + "country": "India", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 17.5, + "pop": 600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 12.6, + "lng": 92.83, + "code": "PG048889" + }, + { + "name": "K’ómoks", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 350.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -124.96, + "code": "PG043374" + }, + { + "name": "Rembarunga", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": -12.96, + "lng": 134.58, + "code": "PG008058" + }, + { + "name": "Irish, Northern", + "country": "United Kingdom", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1660000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 54.61, + "lng": -6.69, + "code": "PG022219" + }, + { + "name": "Afro-Trinidadian", + "country": "Trinidad and Tobago", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 725000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 10.42, + "lng": -61.3, + "code": "PG016442" + }, + { + "name": "Metis", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 704000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 47.13, + "lng": -97.19, + "code": "PG043455" + }, + { + "name": "American", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 402000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.97, + "lng": -107.63, + "code": "PG043500" + }, + { + "name": "English Caribbean", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 394000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 46.73, + "lng": -90.31, + "code": "PG049256" + }, + { + "name": "Han Chinese", + "country": "Singapore", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 358000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 1.36, + "lng": 103.82, + "code": "PG020724" + }, + { + "name": "Han Chinese", + "country": "New Zealand", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 214000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -36.89, + "lng": 174.78, + "code": "PG018495" + }, + { + "name": "Detribalized Amerindian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 201000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.64, + "lng": -115.72, + "code": "PG043384" + }, + { + "name": "Sub-Saharan Africans, English-Speaking", + "country": "Belgium", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 123000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.85, + "lng": 4.38, + "code": "PG047833" + }, + { + "name": "Fijian", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 71500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -33.75, + "lng": 144.18, + "code": "PG050451" + }, + { + "name": "Cree, Woodland", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 68500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 54.6, + "lng": -106.15, + "code": "PG043378" + }, + { + "name": "Dominican", + "country": "Dominica", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 67000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 15.43, + "lng": -61.35, + "code": "PG016306" + }, + { + "name": "Welsh", + "country": "Argentina", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -43.27, + "lng": -65.44, + "code": "PG017376" + }, + { + "name": "Mohawk", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 44.18, + "lng": -77.77, + "code": "PG043441" + }, + { + "name": "Barbadian", + "country": "United Kingdom", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 24000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 51.5, + "lng": -0.17, + "code": "PG048436" + }, + { + "name": "Euronesian", + "country": "Fiji", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 16500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -17.95, + "lng": 178.24, + "code": "PG018419" + }, + { + "name": "Polynesian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 14500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG043599" + }, + { + "name": "Hmong Njua", + "country": "Myanmar", + "lang": "Hmong Njua", + "rol3": "hnj", + "pct_christian": 12.5, + "pop": 14500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Polytheism", + "lat": 23.63, + "lng": 97.65, + "code": "PG022056" + }, + { + "name": "American", + "country": "Costa Rica", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 12500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 10.22, + "lng": -85.24, + "code": "PG025025" + }, + { + "name": "Antiguan", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 8400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 35.93, + "lng": -98.82, + "code": "PG050335" + }, + { + "name": "Tsimshian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 7700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 54.42, + "lng": -130.3, + "code": "PG043490" + }, + { + "name": "Lillooet", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 7500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 50.68, + "lng": -121.92, + "code": "PG043432" + }, + { + "name": "Nakota (Assiniboine)", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 6500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 52.17, + "lng": -107.03, + "code": "PG043354" + }, + { + "name": "Kwakwakaʼwakw", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 6500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.72, + "lng": -127.5, + "code": "PG043427" + }, + { + "name": "Sac & Fox Nation of Oklahoma", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 5800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 35.71, + "lng": -96.77, + "code": "PG050670" + }, + { + "name": "Dakota", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 5500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.52, + "lng": -102.88, + "code": "PG043381" + }, + { + "name": "American", + "country": "Micronesia", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 5400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 6.95, + "lng": 158.2, + "code": "PG018394" + }, + { + "name": "Straits Salish", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 3900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.49, + "lng": -123.46, + "code": "PG043479" + }, + { + "name": "Bahamian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 3900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 43.9, + "lng": -79.58, + "code": "PG050486" + }, + { + "name": "Cree, Southern East", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 3200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.77, + "lng": -75.81, + "code": "PG043411" + }, + { + "name": "Heiltsuk", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 2800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 52.3, + "lng": -128.28, + "code": "PG043406" + }, + { + "name": "Tolowa", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 41.9, + "lng": -124.16, + "code": "PG050627" + }, + { + "name": "Sac & Fox Tribe of the Mississippi in Iowa", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 41.98, + "lng": -92.65, + "code": "PG043616" + }, + { + "name": "Iowa", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 39.99, + "lng": -95.39, + "code": "PG043277" + }, + { + "name": "Central Africans", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 40.74, + "lng": -73.72, + "code": "PG047190" + }, + { + "name": "Jamaican", + "country": "Germany", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.13, + "lng": 11.56, + "code": "PG048546" + }, + { + "name": "American", + "country": "Curacao", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 12.19, + "lng": -68.97, + "code": "PG016406" + }, + { + "name": "Saint Lucian", + "country": "French Guiana", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 4.91, + "lng": -52.3, + "code": "PG022286" + }, + { + "name": "Tubatulabal", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 36.07, + "lng": -118.31, + "code": "PG043660" + }, + { + "name": "Euronesian", + "country": "Cook Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 850.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -21.23, + "lng": -159.78, + "code": "PG018317" + }, + { + "name": "Nez Perce", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 46.28, + "lng": -116.41, + "code": "PG043560" + }, + { + "name": "Salinan", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 35.83, + "lng": -120.77, + "code": "PG050637" + }, + { + "name": "Gagra", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 12.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.84, + "lng": 75.86, + "code": "PG049079" + }, + { + "name": "Kaska", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 58.79, + "lng": -126.96, + "code": "PG043421" + }, + { + "name": "Anuta", + "country": "Solomon Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -11.61, + "lng": 169.85, + "code": "PG010725" + }, + { + "name": "Sac & Fox Nation of Missouri in Kansas and Nebraska", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 450.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 40.01, + "lng": -95.52, + "code": "PG050671" + }, + { + "name": "British", + "country": "Lesotho", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 425.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -29.33, + "lng": 27.51, + "code": "PG015281" + }, + { + "name": "Haida", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 150.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 55.19, + "lng": -132.88, + "code": "PG043257" + }, + { + "name": "Han Chinese", + "country": "Kiribati", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 125.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 1.37, + "lng": 173.11, + "code": "PG009087" + }, + { + "name": "Chinuk Wawa", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 125.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.37, + "lng": -123.2, + "code": "PG043372" + }, + { + "name": "Cayuga", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 60.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 42.55, + "lng": -79.0, + "code": "PG043191" + }, + { + "name": "Han Chinese", + "country": "Tuvalu", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 50.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -8.5, + "lng": 179.19, + "code": "PG018319" + }, + { + "name": "Upper Tanana", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 50.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 62.07, + "lng": -140.22, + "code": "PG043497" + }, + { + "name": "Han Chinese, Mandarin", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 901450000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 37.37, + "lng": 110.73, + "code": "PG006802" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Taiwan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 4635000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 24.86, + "lng": 121.36, + "code": "PG007518" + }, + { + "name": "Santal (Bengali)", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 3350000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 24.0, + "lng": 88.81, + "code": "PG046352" + }, + { + "name": "Han Chinese, Mandarin", + "country": "United States", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 2345000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 45.74, + "lng": -114.4, + "code": "PG043261" + }, + { + "name": "Chinese American", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 1750000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 45.74, + "lng": -114.4, + "code": "PG050453" + }, + { + "name": "Han Chinese", + "country": "Vietnam", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 1620000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 21.04, + "lng": 106.1, + "code": "PG033473" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Canada", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 1055000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 46.93, + "lng": -92.67, + "code": "PG043404" + }, + { + "name": "Khmu, Ou", + "country": "Laos", + "lang": "Khmu", + "rol3": "kjg", + "pct_christian": 7.5, + "pop": 817000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.8, + "lng": 102.58, + "code": "PG020913" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Japan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 736000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 35.72, + "lng": 137.14, + "code": "PG048925" + }, + { + "name": "Han Chinese", + "country": "Australia", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 670000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -33.75, + "lng": 144.18, + "code": "PG033443" + }, + { + "name": "Han Chinese", + "country": "Myanmar", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 650000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 16.85, + "lng": 96.15, + "code": "PG022047" + }, + { + "name": "Jamaican", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 588000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 32.14, + "lng": -77.63, + "code": "PG043284" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Singapore", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 467000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 1.36, + "lng": 103.82, + "code": "PG020728" + }, + { + "name": "Detribalized Amerindian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 454000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 34.9, + "lng": -111.06, + "code": "PG043225" + }, + { + "name": "Cape Verdean", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 309000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 37.42, + "lng": -74.94, + "code": "PG047254" + }, + { + "name": "Han Chinese", + "country": "Brazil", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 280000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -23.17, + "lng": -45.54, + "code": "PG016864" + } + ] + }, + "Sudan": { + "target_upg": 170, + "target_pop": 48623100, + "target_top_langs": [ + "Arabic, Sudanese", + "Bedawiyet", + "Fur", + "Nobiin" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Turum", + "country": "Sudan", + "lang": "Tagoi", + "rol3": "tag", + "pct_christian": 45.0, + "pop": 3200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 11.6, + "lng": 31.08, + "code": "PG042842" + }, + { + "name": "Acheron", + "country": "Sudan", + "lang": "Acheron", + "rol3": "acz", + "pct_christian": 25.0, + "pop": 29000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 10.81, + "lng": 30.25, + "code": "PG011958" + }, + { + "name": "Heiban Nuba", + "country": "Sudan", + "lang": "Heiban", + "rol3": "hbn", + "pct_christian": 25.0, + "pop": 12500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 11.25, + "lng": 30.48, + "code": "PG012038" + }, + { + "name": "Moro", + "country": "Sudan", + "lang": "Moro", + "rol3": "mor", + "pct_christian": 12.5, + "pop": 85000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 10.94, + "lng": 30.18, + "code": "PG012112" + }, + { + "name": "Katcha-Kadugli", + "country": "Sudan", + "lang": "Katcha-Kadugli-Miri", + "rol3": "xtc", + "pct_christian": 7.5, + "pop": 97000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 10.96, + "lng": 29.69, + "code": "PG012053" + }, + { + "name": "Dgik, Ruwa", + "country": "Sudan", + "lang": "Dagik", + "rol3": "dec", + "pct_christian": 7.5, + "pop": 72000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 10.66, + "lng": 30.0, + "code": "PG012102" + }, + { + "name": "Krongo", + "country": "Sudan", + "lang": "Krongo", + "rol3": "kgo", + "pct_christian": 7.5, + "pop": 66000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 10.55, + "lng": 29.96, + "code": "PG012074" + }, + { + "name": "Miri", + "country": "Sudan", + "lang": "Katcha-Kadugli-Miri", + "rol3": "xtc", + "pct_christian": 7.5, + "pop": 3000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 11.0, + "lng": 29.5, + "code": "PG012105" + }, + { + "name": "Tulishi", + "country": "Sudan", + "lang": "Tulishi", + "rol3": "tey", + "pct_christian": 7.5, + "pop": 3000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 11.47, + "lng": 29.11, + "code": "PG012165" + }, + { + "name": "Koalib", + "country": "Sudan", + "lang": "Koalib", + "rol3": "kib", + "pct_christian": 3.5, + "pop": 139000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 11.67, + "lng": 30.4, + "code": "PG012071" + }, + { + "name": "Laro", + "country": "Sudan", + "lang": "Laro", + "rol3": "lro", + "pct_christian": 3.5, + "pop": 40000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 11.35, + "lng": 30.54, + "code": "PG012079" + }, + { + "name": "Shatt", + "country": "Sudan", + "lang": "Shatt", + "rol3": "shj", + "pct_christian": 3.5, + "pop": 37500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 10.82, + "lng": 29.76, + "code": "PG012132" + }, + { + "name": "Komo", + "country": "Sudan", + "lang": "Komo (Sudan)", + "rol3": "xom", + "pct_christian": 3.5, + "pop": 36000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 9.82, + "lng": 34.09, + "code": "PG012072" + }, + { + "name": "Delen", + "country": "Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 3.5, + "pop": 13000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 12.06, + "lng": 29.58, + "code": "PG042814" + }, + { + "name": "Anglo Indian", + "country": "India", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 398000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 12.95, + "lng": 77.6, + "code": "PG041386" + }, + { + "name": "Indian - Christian", + "country": "South Africa", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 310000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -29.84, + "lng": 30.93, + "code": "PG048045" + }, + { + "name": "Euronesian", + "country": "Samoa", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -13.85, + "lng": -171.8, + "code": "PG018323" + }, + { + "name": "British", + "country": "Tanzania", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -6.83, + "lng": 39.25, + "code": "PG014914" + }, + { + "name": "British", + "country": "Zimbabwe", + "lang": "English", + "rol3": "eng", + "pct_christian": 62.5, + "pop": 5800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -17.83, + "lng": 31.03, + "code": "PG015650" + }, + { + "name": "American", + "country": "Singapore", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 9800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 1.36, + "lng": 103.82, + "code": "PG018447" + }, + { + "name": "British", + "country": "Barbados", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 13.12, + "lng": -59.6, + "code": "PG016197" + }, + { + "name": "British", + "country": "Venezuela", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 7200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 10.48, + "lng": -66.88, + "code": "PG016461" + }, + { + "name": "British", + "country": "Botswana", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 7100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -24.65, + "lng": 25.91, + "code": "PG015217" + }, + { + "name": "Pitcairn Islander", + "country": "New Zealand", + "lang": "English", + "rol3": "eng", + "pct_christian": 45.0, + "pop": 250.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -36.89, + "lng": 174.78, + "code": "PG018502" + }, + { + "name": "American", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 95500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -33.52, + "lng": 142.46, + "code": "PG020268" + }, + { + "name": "Eurasian", + "country": "Myanmar", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 56500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 16.85, + "lng": 96.15, + "code": "PG022046" + }, + { + "name": "Caribbean Hindi", + "country": "French Guiana", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 13500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 4.91, + "lng": -52.3, + "code": "PG022284" + }, + { + "name": "Southwest Aborigine Creol", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -32.54, + "lng": 115.99, + "code": "PG008068" + }, + { + "name": "Anglo-Australian", + "country": "Singapore", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 3000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 1.36, + "lng": 103.82, + "code": "PG010684" + }, + { + "name": "American", + "country": "Iceland", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 1800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 64.14, + "lng": -21.89, + "code": "PG000293" + }, + { + "name": "American", + "country": "Marshall Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 7.1, + "lng": 171.22, + "code": "PG009376" + }, + { + "name": "American", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 194740000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 38.3, + "lng": -93.46, + "code": "PG043515" + }, + { + "name": "Detribalized Aborigine", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 580000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -33.75, + "lng": 144.18, + "code": "PG007863" + }, + { + "name": "Jamaican", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 330000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047381" + }, + { + "name": "Barbadian", + "country": "Barbados", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 269000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 13.17, + "lng": -59.56, + "code": "PG016195" + }, + { + "name": "American", + "country": "Panama", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 186000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 9.06, + "lng": -79.38, + "code": "PG050309" + }, + { + "name": "Barbadian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 50500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 40.72, + "lng": -73.97, + "code": "PG046507" + }, + { + "name": "Barbadian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 40500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047394" + }, + { + "name": "Bay Islands Creole", + "country": "Honduras", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 20000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 16.34, + "lng": -86.39, + "code": "PG024758" + }, + { + "name": "American", + "country": "Virgin Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 17.96, + "lng": -64.8, + "code": "PG050296" + }, + { + "name": "American", + "country": "New Zealand", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 15000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -36.89, + "lng": 174.78, + "code": "PG018513" + }, + { + "name": "American", + "country": "Guam", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 14000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 13.44, + "lng": 144.78, + "code": "PG050299" + }, + { + "name": "American", + "country": "Fiji", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 4600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -18.13, + "lng": 178.44, + "code": "PG018421" + }, + { + "name": "Mono", + "country": "Cameroon", + "lang": "Fulfulde, Adamawa", + "rol3": "fub", + "pct_christian": 25.0, + "pop": 3700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 8.77, + "lng": 14.12, + "code": "PG012705" + }, + { + "name": "American", + "country": "Greenland", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 3400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 64.18, + "lng": -51.7, + "code": "PG000286" + }, + { + "name": "Maori", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.28, + "lng": -122.84, + "code": "PG050518" + }, + { + "name": "Nakota (Assiniboine)", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.32, + "lng": -106.26, + "code": "PG043527" + }, + { + "name": "Winnebago", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 42.22, + "lng": -96.6, + "code": "PG043689" + }, + { + "name": "Wik-Ngathan", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -13.84, + "lng": 141.57, + "code": "PG008118" + }, + { + "name": "Polynesian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.28, + "lng": -122.84, + "code": "PG050519" + }, + { + "name": "Yankuntatjara", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 950.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": -27.14, + "lng": 133.83, + "code": "PG008134" + }, + { + "name": "Maori", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 37.75, + "lng": -122.21, + "code": "PG047214" + }, + { + "name": "African Americans", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 40540000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 39.04, + "lng": -100.02, + "code": "PG048741" + }, + { + "name": "Eurasian", + "country": "Malaysia", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 68500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 3.07, + "lng": 101.64, + "code": "PG020233" + }, + { + "name": "Bermudians", + "country": "Bermuda", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 66000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 32.31, + "lng": -64.77, + "code": "PG016210" + }, + { + "name": "Caymanian", + "country": "Cayman Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 60500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 19.42, + "lng": -80.89, + "code": "PG016216" + }, + { + "name": "Nigerian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 39500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 37.51, + "lng": -88.1, + "code": "PG047652" + }, + { + "name": "Kenyan", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 26000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 43.83, + "lng": -79.46, + "code": "PG047469" + }, + { + "name": "American", + "country": "Haiti", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 19000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 18.55, + "lng": -72.32, + "code": "PG016382" + }, + { + "name": "Ghanaian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 49.22, + "lng": -122.99, + "code": "PG047407" + }, + { + "name": "Passamaquoddy", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 3300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 46.36, + "lng": -67.46, + "code": "PG043437" + }, + { + "name": "Tlingit", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 2300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 60.48, + "lng": -132.29, + "code": "PG043489" + }, + { + "name": "Straits Salish", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 2000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.77, + "lng": -122.64, + "code": "PG043642" + }, + { + "name": "Onondaga", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 43.05, + "lng": -80.11, + "code": "PG043451" + }, + { + "name": "K’ómoks", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 350.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -124.96, + "code": "PG043374" + }, + { + "name": "Rembarunga", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": -12.96, + "lng": 134.58, + "code": "PG008058" + }, + { + "name": "Irish, Northern", + "country": "United Kingdom", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1660000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 54.61, + "lng": -6.69, + "code": "PG022219" + }, + { + "name": "Afro-Trinidadian", + "country": "Trinidad and Tobago", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 725000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 10.42, + "lng": -61.3, + "code": "PG016442" + }, + { + "name": "Metis", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 704000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 47.13, + "lng": -97.19, + "code": "PG043455" + }, + { + "name": "Gbaya", + "country": "Cameroon", + "lang": "Gbaya, Northwest", + "rol3": "gya", + "pct_christian": 12.5, + "pop": 442000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 6.26, + "lng": 13.47, + "code": "PG012601" + }, + { + "name": "American", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 402000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.97, + "lng": -107.63, + "code": "PG043500" + }, + { + "name": "English Caribbean", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 394000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 46.73, + "lng": -90.31, + "code": "PG049256" + }, + { + "name": "Han Chinese", + "country": "Singapore", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 358000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 1.36, + "lng": 103.82, + "code": "PG020724" + }, + { + "name": "Detribalized Amerindian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 201000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.64, + "lng": -115.72, + "code": "PG043384" + }, + { + "name": "Sub-Saharan Africans, English-Speaking", + "country": "Belgium", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 123000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.85, + "lng": 4.38, + "code": "PG047833" + }, + { + "name": "Arab, Egyptian", + "country": "Australia", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 12.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -31.94, + "lng": 115.89, + "code": "PG020254" + }, + { + "name": "Fijian", + "country": "Australia", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 71500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -33.75, + "lng": 144.18, + "code": "PG050451" + }, + { + "name": "Cree, Woodland", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 68500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 54.6, + "lng": -106.15, + "code": "PG043378" + }, + { + "name": "Dominican", + "country": "Dominica", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 67000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 15.43, + "lng": -61.35, + "code": "PG016306" + }, + { + "name": "Welsh", + "country": "Argentina", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -43.27, + "lng": -65.44, + "code": "PG017376" + }, + { + "name": "Mohawk", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 44.18, + "lng": -77.77, + "code": "PG043441" + }, + { + "name": "Barbadian", + "country": "United Kingdom", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 24000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 51.5, + "lng": -0.17, + "code": "PG048436" + }, + { + "name": "Euronesian", + "country": "Fiji", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 16500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -17.95, + "lng": 178.24, + "code": "PG018419" + }, + { + "name": "Polynesian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 14500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG043599" + }, + { + "name": "American", + "country": "Costa Rica", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 12500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 10.22, + "lng": -85.24, + "code": "PG025025" + }, + { + "name": "Antiguan", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 8400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 35.93, + "lng": -98.82, + "code": "PG050335" + }, + { + "name": "Tsimshian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 7700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 54.42, + "lng": -130.3, + "code": "PG043490" + }, + { + "name": "Lillooet", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 7500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 50.68, + "lng": -121.92, + "code": "PG043432" + }, + { + "name": "Nakota (Assiniboine)", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 6500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 52.17, + "lng": -107.03, + "code": "PG043354" + }, + { + "name": "Kwakwakaʼwakw", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 6500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.72, + "lng": -127.5, + "code": "PG043427" + }, + { + "name": "Sac & Fox Nation of Oklahoma", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 5800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 35.71, + "lng": -96.77, + "code": "PG050670" + }, + { + "name": "Dakota", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 5500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.52, + "lng": -102.88, + "code": "PG043381" + }, + { + "name": "American", + "country": "Micronesia", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 5400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 6.95, + "lng": 158.2, + "code": "PG018394" + }, + { + "name": "Straits Salish", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 3900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.49, + "lng": -123.46, + "code": "PG043479" + }, + { + "name": "Bahamian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 3900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 43.9, + "lng": -79.58, + "code": "PG050486" + }, + { + "name": "Cree, Southern East", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 3200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 50.77, + "lng": -75.81, + "code": "PG043411" + }, + { + "name": "Heiltsuk", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 2800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 52.3, + "lng": -128.28, + "code": "PG043406" + }, + { + "name": "Tolowa", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 41.9, + "lng": -124.16, + "code": "PG050627" + }, + { + "name": "Sac & Fox Tribe of the Mississippi in Iowa", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 41.98, + "lng": -92.65, + "code": "PG043616" + }, + { + "name": "Iowa", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 39.99, + "lng": -95.39, + "code": "PG043277" + }, + { + "name": "Central Africans", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 40.74, + "lng": -73.72, + "code": "PG047190" + }, + { + "name": "Jamaican", + "country": "Germany", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.13, + "lng": 11.56, + "code": "PG048546" + }, + { + "name": "American", + "country": "Curacao", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 12.19, + "lng": -68.97, + "code": "PG016406" + }, + { + "name": "Saint Lucian", + "country": "French Guiana", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 4.91, + "lng": -52.3, + "code": "PG022286" + }, + { + "name": "Tubatulabal", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 36.07, + "lng": -118.31, + "code": "PG043660" + }, + { + "name": "Euronesian", + "country": "Cook Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 850.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -21.23, + "lng": -159.78, + "code": "PG018317" + }, + { + "name": "Nez Perce", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 46.28, + "lng": -116.41, + "code": "PG043560" + }, + { + "name": "Salinan", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 35.83, + "lng": -120.77, + "code": "PG050637" + }, + { + "name": "Kaska", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 58.79, + "lng": -126.96, + "code": "PG043421" + }, + { + "name": "Anuta", + "country": "Solomon Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -11.61, + "lng": 169.85, + "code": "PG010725" + }, + { + "name": "Sac & Fox Nation of Missouri in Kansas and Nebraska", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 450.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 40.01, + "lng": -95.52, + "code": "PG050671" + }, + { + "name": "British", + "country": "Lesotho", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 425.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -29.33, + "lng": 27.51, + "code": "PG015281" + }, + { + "name": "Haida", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 150.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 55.19, + "lng": -132.88, + "code": "PG043257" + }, + { + "name": "Chinuk Wawa", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 125.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.37, + "lng": -123.2, + "code": "PG043372" + }, + { + "name": "Cayuga", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 60.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 42.55, + "lng": -79.0, + "code": "PG043191" + }, + { + "name": "Upper Tanana", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 50.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 62.07, + "lng": -140.22, + "code": "PG043497" + }, + { + "name": "Chinese American", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 1750000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 45.74, + "lng": -114.4, + "code": "PG050453" + }, + { + "name": "Jamaican", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 588000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 32.14, + "lng": -77.63, + "code": "PG043284" + }, + { + "name": "Detribalized Amerindian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 454000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 34.9, + "lng": -111.06, + "code": "PG043225" + }, + { + "name": "Cape Verdean", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 309000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 37.42, + "lng": -74.94, + "code": "PG047254" + }, + { + "name": "Ghanaian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 204000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 40.72, + "lng": -73.97, + "code": "PG046500" + }, + { + "name": "Arab, Syro-Lebanese", + "country": "Australia", + "lang": "Arabic, Gulf", + "rol3": "afb", + "pct_christian": 7.5, + "pop": 192000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -33.38, + "lng": 143.4, + "code": "PG020267" + }, + { + "name": "Trinidadian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 174000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 40.69, + "lng": -73.86, + "code": "PG046512" + }, + { + "name": "Choctaw", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 121000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 34.5, + "lng": -95.33, + "code": "PG043202" + }, + { + "name": "Liberian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 107000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 40.72, + "lng": -73.97, + "code": "PG047273" + }, + { + "name": "American", + "country": "Dominican Republic", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 96500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 18.48, + "lng": -69.91, + "code": "PG016327" + }, + { + "name": "Kenyan", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 96000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 33.32, + "lng": -92.72, + "code": "PG050473" + }, + { + "name": "Anglo-Australian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 84000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.02, + "lng": -98.4, + "code": "PG043519" + }, + { + "name": "Trinidadian", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 84000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.72, + "lng": -95.67, + "code": "PG047383" + }, + { + "name": "Swahili", + "country": "United States", + "lang": "Swahili", + "rol3": "swh", + "pct_christian": 7.5, + "pop": 81500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 34.52, + "lng": -105.83, + "code": "PG047306" + }, + { + "name": "Channel Islanders", + "country": "Guernsey", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 65000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.48, + "lng": -2.52, + "code": "PG048818" + }, + { + "name": "South African", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 44000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 47.85, + "lng": -102.06, + "code": "PG050480" + }, + { + "name": "Cree, Plains", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 43000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 53.8, + "lng": -109.54, + "code": "PG043505" + }, + { + "name": "Zari", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 9.87, + "lng": 9.4, + "code": "PG014203" + }, + { + "name": "British", + "country": "Zambia", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -15.4, + "lng": 28.31, + "code": "PG015570" + }, + { + "name": "Blackfoot, Siksika", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 48.66, + "lng": -112.87, + "code": "PG043538" + }, + { + "name": "Bassa", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 10.67, + "lng": 5.82, + "code": "PG033345" + }, + { + "name": "American", + "country": "Ecuador", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 28000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -0.18, + "lng": -78.49, + "code": "PG017483" + }, + { + "name": "Arab, Egyptian", + "country": "Germany", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 25500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 52.5, + "lng": 13.4, + "code": "PG042462" + }, + { + "name": "Potawatomi", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 24000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 39.34, + "lng": -95.84, + "code": "PG043601" + }, + { + "name": "Euronesian", + "country": "Solomon Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 23500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -9.43, + "lng": 159.96, + "code": "PG018398" + }, + { + "name": "Halkomelem", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 21000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 49.22, + "lng": -121.97, + "code": "PG043403" + }, + { + "name": "Tlingit", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 18000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 57.16, + "lng": -133.75, + "code": "PG043653" + }, + { + "name": "Filipino", + "country": "New Zealand", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 17000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -36.89, + "lng": 174.78, + "code": "PG047593" + }, + { + "name": "Comanche", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 14500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 34.56, + "lng": -98.43, + "code": "PG043209" + }, + { + "name": "British", + "country": "Cayman Islands", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 14000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 19.33, + "lng": -81.38, + "code": "PG016215" + }, + { + "name": "Cheyenne", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 13500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 45.53, + "lng": -106.68, + "code": "PG043198" + }, + { + "name": "American", + "country": "Papua New Guinea", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 12000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": -9.45, + "lng": 147.18, + "code": "PG022038" + }, + { + "name": "Pueblo, Santa Clara", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 12000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Native American religions", + "lat": 35.98, + "lng": -106.22, + "code": "PG050653" + }, + { + "name": "Shuswap", + "country": "Canada", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 11000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 51.26, + "lng": -120.93, + "code": "PG043468" + } + ] + }, + "Algeria": { + "target_upg": 38, + "target_pop": 47320600, + "target_top_langs": [ + "Arabic, Algerian", + "Kabyle", + "Tachawit", + "Tamazight, Central Atlas" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Han Chinese, Mandarin", + "country": "Algeria", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 3.5, + "pop": 55000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 36.73, + "lng": 3.13, + "code": "PG049244" + }, + { + "name": "Bakole", + "country": "Cameroon", + "lang": "French", + "rol3": "fra", + "pct_christian": 35.0, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 4.43, + "lng": 8.97, + "code": "PG012493" + }, + { + "name": "PoaPoa", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 25.0, + "pop": 50.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -20.87, + "lng": 164.66, + "code": "PG018370" + }, + { + "name": "Romani, Vlax", + "country": "Belgium", + "lang": "Romani, Vlax", + "rol3": "rmy", + "pct_christian": 17.5, + "pop": 13000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 50.85, + "lng": 4.38, + "code": "PG000068" + }, + { + "name": "Arab, Egyptian", + "country": "Australia", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 12.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -31.94, + "lng": 115.89, + "code": "PG020254" + }, + { + "name": "Euronesian", + "country": "French Polynesia", + "lang": "French", + "rol3": "fra", + "pct_christian": 12.5, + "pop": 58500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -17.56, + "lng": -149.57, + "code": "PG018408" + }, + { + "name": "Euronesian", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 12.5, + "pop": 14500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -22.27, + "lng": 166.45, + "code": "PG018406" + }, + { + "name": "Aeke", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 12.5, + "pop": 350.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -21.07, + "lng": 164.88, + "code": "PG009564" + }, + { + "name": "French", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 93500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -21.33, + "lng": 165.49, + "code": "PG018389" + }, + { + "name": "Zari", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 9.87, + "lng": 9.4, + "code": "PG014203" + }, + { + "name": "Bassa", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 10.67, + "lng": 5.82, + "code": "PG033345" + }, + { + "name": "Arab, Egyptian", + "country": "Germany", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 25500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 52.5, + "lng": 13.4, + "code": "PG042462" + }, + { + "name": "Sake", + "country": "Gabon", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 0.07, + "lng": 11.63, + "code": "PG013210" + }, + { + "name": "Burundi", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 45.58, + "lng": -73.7, + "code": "PG050494" + }, + { + "name": "Burundi", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 37.74, + "lng": -92.31, + "code": "PG047181" + }, + { + "name": "Arab, Egyptian", + "country": "Belgium", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 5300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 50.85, + "lng": 4.38, + "code": "PG000053" + }, + { + "name": "Kande", + "country": "Gabon", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -0.09, + "lng": 11.75, + "code": "PG013189" + }, + { + "name": "Chadian", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.58, + "lng": -73.7, + "code": "PG050504" + }, + { + "name": "New Caledonian", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 1100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.22, + "lng": -122.99, + "code": "PG047444" + }, + { + "name": "Gabonese", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 38.9, + "lng": -77.19, + "code": "PG047191" + }, + { + "name": "Chinese-Tahitian Creole", + "country": "French Polynesia", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -17.56, + "lng": -149.57, + "code": "PG018407" + }, + { + "name": "Chadian", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 250.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 38.02, + "lng": -84.5, + "code": "PG047189" + }, + { + "name": "Walloon", + "country": "Belgium", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 3755000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 50.32, + "lng": 4.95, + "code": "PG000076" + }, + { + "name": "Swiss", + "country": "Switzerland", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 2015000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 46.6, + "lng": 6.93, + "code": "PG000585" + }, + { + "name": "Egyptian Copt", + "country": "United States", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 3.5, + "pop": 242000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 35.35, + "lng": -111.99, + "code": "PG047347" + }, + { + "name": "Franco-Mauritian", + "country": "Mauritius", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 72500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -20.25, + "lng": 57.51, + "code": "PG015346" + }, + { + "name": "Romani, Vlax, Kalderash", + "country": "Argentina", + "lang": "Romani, Vlax", + "rol3": "rmy", + "pct_christian": 3.5, + "pop": 61000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -34.65, + "lng": -58.56, + "code": "PG017346" + }, + { + "name": "Romani, Vlax", + "country": "Colombia", + "lang": "Romani, Vlax", + "rol3": "rmy", + "pct_christian": 3.5, + "pop": 42000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 4.64, + "lng": -74.11, + "code": "PG016290" + }, + { + "name": "Arab", + "country": "South Africa", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -26.17, + "lng": 28.07, + "code": "PG015486" + }, + { + "name": "Romanian", + "country": "France", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 13000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 48.84, + "lng": 2.35, + "code": "PG000192" + }, + { + "name": "Arab", + "country": "New Zealand", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -36.89, + "lng": 174.78, + "code": "PG018478" + }, + { + "name": "French Caribbean", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 6300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 45.5, + "lng": -73.81, + "code": "PG047395" + }, + { + "name": "Togolese", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 5600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 45.52, + "lng": -73.68, + "code": "PG050478" + }, + { + "name": "Congolese", + "country": "Spain", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 4800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 40.41, + "lng": -3.69, + "code": "PG042340" + }, + { + "name": "Abenaki", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 3900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 46.07, + "lng": -72.82, + "code": "PG043348" + }, + { + "name": "Ivorian", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 3600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 40.74, + "lng": -73.72, + "code": "PG047266" + }, + { + "name": "Guinean", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.5, + "lng": -73.81, + "code": "PG047454" + }, + { + "name": "Sighu", + "country": "Gabon", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -0.84, + "lng": 12.69, + "code": "PG013213" + }, + { + "name": "Rwandan", + "country": "Netherlands", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 51.9, + "lng": 4.47, + "code": "PG000430" + }, + { + "name": "Gabonese", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 1600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 45.58, + "lng": -73.7, + "code": "PG050505" + } + ] + }, + "Iraq": { + "target_upg": 31, + "target_pop": 46011000, + "target_top_langs": [ + "Arabic, Mesopotamian", + "Arabic, North Mesopotamian", + "Kurdish, Central", + "Kurdish, Northern" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Arab, Egyptian", + "country": "Australia", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 12.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -31.94, + "lng": 115.89, + "code": "PG020254" + }, + { + "name": "Armenian", + "country": "United Kingdom", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 12.5, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000627" + }, + { + "name": "Bangni", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 62500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 27.43, + "lng": 92.97, + "code": "PG041887" + }, + { + "name": "Assyrian", + "country": "Australia", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 7.5, + "pop": 40000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.85, + "lng": 151.03, + "code": "PG007833" + }, + { + "name": "Arab, Egyptian", + "country": "Germany", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 25500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 52.5, + "lng": 13.4, + "code": "PG042462" + }, + { + "name": "Arab, Lebanese", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024837" + }, + { + "name": "Arab, Palestinian", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024839" + }, + { + "name": "Iranian", + "country": "Armenia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 40.17, + "lng": 44.49, + "code": "PG050098" + }, + { + "name": "Arab, Egyptian", + "country": "Belgium", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 5300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 50.85, + "lng": 4.38, + "code": "PG000053" + }, + { + "name": "Iranian", + "country": "Greece", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 38.05, + "lng": 23.7, + "code": "PG047071" + }, + { + "name": "Kankali", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 27.7, + "lng": 81.49, + "code": "PG049096" + }, + { + "name": "Khadim", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 26.49, + "lng": 74.65, + "code": "PG048969" + }, + { + "name": "Egyptian Copt", + "country": "United States", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 3.5, + "pop": 242000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 35.35, + "lng": -111.99, + "code": "PG047347" + }, + { + "name": "Arab, Lebanese", + "country": "Canada", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 234000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.53, + "lng": -73.66, + "code": "PG043431" + }, + { + "name": "Armenian", + "country": "Lebanon", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 220000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 33.87, + "lng": 35.58, + "code": "PG048928" + }, + { + "name": "Persian", + "country": "Canada", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 201000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 46.93, + "lng": -92.67, + "code": "PG043458" + }, + { + "name": "Arab, Syrian", + "country": "United States", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 193000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 40.7, + "lng": -73.87, + "code": "PG043644" + }, + { + "name": "Iranian", + "country": "Germany", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 175000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 52.51, + "lng": 11.69, + "code": "PG000259" + }, + { + "name": "Persian", + "country": "Turkiye", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 130000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 41.04, + "lng": 28.87, + "code": "PG024581" + }, + { + "name": "Armenian", + "country": "Iran", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 113000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 38.14, + "lng": 46.37, + "code": "PG024130" + }, + { + "name": "Chikwa", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 89500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 23.97, + "lng": 84.3, + "code": "PG041852" + }, + { + "name": "Persian", + "country": "United Kingdom", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 86000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 51.5, + "lng": -0.17, + "code": "PG000643" + }, + { + "name": "Assyrian", + "country": "Germany", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 70000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 50.03, + "lng": 8.25, + "code": "PG000214" + }, + { + "name": "Assyrian", + "country": "United States", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 70000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 37.75, + "lng": -122.21, + "code": "PG043528" + }, + { + "name": "Armenian", + "country": "Turkiye", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 41.05, + "lng": 28.9, + "code": "PG024538" + }, + { + "name": "Kurd, Northern", + "country": "Russian Federation", + "lang": "Kurdish, Northern", + "rol3": "kmr", + "pct_christian": 3.5, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 44.63, + "lng": 39.24, + "code": "PG024465" + }, + { + "name": "Arab", + "country": "South Africa", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -26.17, + "lng": 28.07, + "code": "PG015486" + }, + { + "name": "Assyrian", + "country": "Canada", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 43.83, + "lng": -79.46, + "code": "PG043355" + }, + { + "name": "Arab", + "country": "New Zealand", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -36.89, + "lng": 174.78, + "code": "PG018478" + }, + { + "name": "Persian", + "country": "Indonesia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 8000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": -6.21, + "lng": 106.83, + "code": "PG050238" + }, + { + "name": "Persian", + "country": "South Korea", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 3500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 37.55, + "lng": 126.99, + "code": "PG050237" + }, + { + "name": "Dayare", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.79, + "lng": 77.53, + "code": "PG049780" + }, + { + "name": "Arab, Palestinian", + "country": "El Salvador", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 13.71, + "lng": -89.19, + "code": "PG039263" + } + ] + }, + "Myanmar (Burma)": { + "target_upg": 58, + "target_pop": 44445100, + "target_top_langs": [ + "Burmese", + "Shan", + "Rakhine", + "Chinese, Mandarin" + ], + "target_top_religion": "Buddhism", + "neighbors": [ + { + "name": "Kayaw", + "country": "Myanmar", + "lang": "Kayaw", + "rol3": "kvl", + "pct_christian": 75.0, + "pop": 26000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 19.26, + "lng": 96.85, + "code": "PG009414" + }, + { + "name": "Zanniat Chin", + "country": "Myanmar", + "lang": "Chin, Falam", + "rol3": "cfm", + "pct_christian": 75.0, + "pop": 20000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.0, + "lng": 93.84, + "code": "PG009549" + }, + { + "name": "Lushai", + "country": "Myanmar", + "lang": "Mizo", + "rol3": "lus", + "pct_christian": 75.0, + "pop": 19500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.44, + "lng": 93.63, + "code": "PG009473" + }, + { + "name": "Siyin Chin", + "country": "Myanmar", + "lang": "Chin, Siyin", + "rol3": "csy", + "pct_christian": 75.0, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.41, + "lng": 93.63, + "code": "PG009521" + }, + { + "name": "Anal", + "country": "Myanmar", + "lang": "Anal", + "rol3": "anm", + "pct_christian": 75.0, + "pop": 50.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.21, + "lng": 94.31, + "code": "PG022039" + }, + { + "name": "Karen, S'gaw", + "country": "Myanmar", + "lang": "Karen, S’gaw", + "rol3": "ksw", + "pct_christian": 62.5, + "pop": 2010000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 17.51, + "lng": 96.16, + "code": "PG009518" + }, + { + "name": "Tiddim Chin", + "country": "Myanmar", + "lang": "Chin, Tedim", + "rol3": "ctd", + "pct_christian": 62.5, + "pop": 256000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.5, + "lng": 94.06, + "code": "PG009534" + }, + { + "name": "Falam Chin", + "country": "Myanmar", + "lang": "Chin, Falam", + "rol3": "cfm", + "pct_christian": 62.5, + "pop": 147000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.02, + "lng": 93.67, + "code": "PG022048" + }, + { + "name": "Haka Chin", + "country": "Myanmar", + "lang": "Chin, Hakha", + "rol3": "cnh", + "pct_christian": 62.5, + "pop": 133000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 22.45, + "lng": 93.8, + "code": "PG009431" + }, + { + "name": "Rawang", + "country": "Myanmar", + "lang": "Rawang", + "rol3": "raw", + "pct_christian": 62.5, + "pop": 73500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 27.25, + "lng": 97.97, + "code": "PG009509" + }, + { + "name": "Kuki Chin", + "country": "Myanmar", + "lang": "Chin, Thado", + "rol3": "tcz", + "pct_christian": 62.5, + "pop": 41000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.9, + "lng": 94.73, + "code": "PG009461" + }, + { + "name": "K'cho Chin", + "country": "Myanmar", + "lang": "Chin, Müün", + "rol3": "mwq", + "pct_christian": 62.5, + "pop": 30000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 20.29, + "lng": 94.3, + "code": "PG022045" + }, + { + "name": "Ngawn Chin", + "country": "Myanmar", + "lang": "Chin, Ngawn", + "rol3": "cnw", + "pct_christian": 62.5, + "pop": 23000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.09, + "lng": 93.85, + "code": "PG009493" + }, + { + "name": "Bawm", + "country": "Myanmar", + "lang": "Chin, Bawm", + "rol3": "bgr", + "pct_christian": 62.5, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.59, + "lng": 92.9, + "code": "PG009408" + }, + { + "name": "Pyen", + "country": "Myanmar", + "lang": "Pyen", + "rol3": "pyy", + "pct_christian": 62.5, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 22.03, + "lng": 99.65, + "code": "PG009506" + }, + { + "name": "Lahu", + "country": "Myanmar", + "lang": "Lahu", + "rol3": "lhu", + "pct_christian": 45.0, + "pop": 200000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.58, + "lng": 99.59, + "code": "PG009463" + }, + { + "name": "Zome", + "country": "Myanmar", + "lang": "Zo", + "rol3": "zom", + "pct_christian": 45.0, + "pop": 61000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 23.53, + "lng": 94.12, + "code": "PG009551" + }, + { + "name": "Zotung Chin", + "country": "Myanmar", + "lang": "Chin, Zotung", + "rol3": "czt", + "pct_christian": 45.0, + "pop": 54000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 22.55, + "lng": 93.32, + "code": "PG009552" + }, + { + "name": "Chin, Mara", + "country": "Myanmar", + "lang": "Mara", + "rol3": "mrh", + "pct_christian": 45.0, + "pop": 25000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 22.05, + "lng": 93.12, + "code": "PG009481" + }, + { + "name": "Karen, Gheko", + "country": "Myanmar", + "lang": "Karen, Geko", + "rol3": "ghk", + "pct_christian": 45.0, + "pop": 17000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 19.51, + "lng": 96.75, + "code": "PG009428" + }, + { + "name": "Kawyaw", + "country": "Myanmar", + "lang": "Kawyaw", + "rol3": "kxf", + "pct_christian": 45.0, + "pop": 12000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 19.28, + "lng": 97.08, + "code": "PG009479" + }, + { + "name": "Naga, Konyak", + "country": "Myanmar", + "lang": "Naga, Konyak", + "rol3": "nbe", + "pct_christian": 45.0, + "pop": 2200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.56, + "lng": 95.18, + "code": "PG009460" + }, + { + "name": "Kachin", + "country": "Myanmar", + "lang": "Jingpho", + "rol3": "kac", + "pct_christian": 35.0, + "pop": 1065000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.05, + "lng": 97.44, + "code": "PG009448" + }, + { + "name": "Eurasian", + "country": "Myanmar", + "lang": "English", + "rol3": "eng", + "pct_christian": 35.0, + "pop": 56500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 16.85, + "lng": 96.15, + "code": "PG022046" + }, + { + "name": "Lashi", + "country": "Myanmar", + "lang": "Lacid", + "rol3": "lsi", + "pct_christian": 35.0, + "pop": 30000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.83, + "lng": 98.25, + "code": "PG009469" + }, + { + "name": "Rawngtu Chin", + "country": "Myanmar", + "lang": "Chin, Rawngtu", + "rol3": "weu", + "pct_christian": 35.0, + "pop": 5000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Polytheism", + "lat": 21.55, + "lng": 93.73, + "code": "PG009539" + }, + { + "name": "Mro-Khimi", + "country": "Myanmar", + "lang": "Mro-Khimi", + "rol3": "cmr", + "pct_christian": 25.0, + "pop": 75000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 20.7, + "lng": 92.98, + "code": "PG009456" + }, + { + "name": "Karen, Geba", + "country": "Myanmar", + "lang": "Karen, Geba", + "rol3": "kvq", + "pct_christian": 25.0, + "pop": 40000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 19.5, + "lng": 96.62, + "code": "PG009427" + }, + { + "name": "Karen, Bghai", + "country": "Myanmar", + "lang": "Karen, Bwe", + "rol3": "bwe", + "pct_christian": 25.0, + "pop": 21000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.09, + "lng": 96.72, + "code": "PG009510" + }, + { + "name": "Karen, Yinbaw", + "country": "Myanmar", + "lang": "Yinbaw", + "rol3": "kvu", + "pct_christian": 25.0, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 18.96, + "lng": 97.21, + "code": "PG009546" + }, + { + "name": "Anu", + "country": "Myanmar", + "lang": "Chin, Anu-Khongso", + "rol3": "anl", + "pct_christian": 25.0, + "pop": 4400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Polytheism", + "lat": 21.31, + "lng": 92.84, + "code": "PG009405" + }, + { + "name": "Drung", + "country": "Myanmar", + "lang": "Drung", + "rol3": "duu", + "pct_christian": 25.0, + "pop": 400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Polytheism", + "lat": 28.1, + "lng": 97.69, + "code": "PG009535" + }, + { + "name": "Achang", + "country": "Myanmar", + "lang": "Achang", + "rol3": "acn", + "pct_christian": 17.5, + "pop": 40000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Polytheism", + "lat": 24.31, + "lng": 97.54, + "code": "PG009475" + }, + { + "name": "Karen, Zayein", + "country": "Myanmar", + "lang": "Zayein", + "rol3": "kxk", + "pct_christian": 17.5, + "pop": 14500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.8, + "lng": 97.06, + "code": "PG009550" + }, + { + "name": "Chin, Asho", + "country": "Myanmar", + "lang": "Chin, Asho", + "rol3": "csh", + "pct_christian": 12.5, + "pop": 32500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 20.4, + "lng": 94.79, + "code": "PG009406" + }, + { + "name": "Blang", + "country": "Myanmar", + "lang": "Blang", + "rol3": "blr", + "pct_christian": 12.5, + "pop": 16000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 21.5, + "lng": 100.17, + "code": "PG022041" + }, + { + "name": "Hmong Njua", + "country": "Myanmar", + "lang": "Hmong Njua", + "rol3": "hnj", + "pct_christian": 12.5, + "pop": 14500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Polytheism", + "lat": 23.63, + "lng": 97.65, + "code": "PG022056" + }, + { + "name": "Hsifan", + "country": "Myanmar", + "lang": "Tibetan, Central", + "rol3": "bod", + "pct_christian": 12.5, + "pop": 5600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Tibetan", + "lat": 27.24, + "lng": 97.64, + "code": "PG009445" + }, + { + "name": "Karen, Mobwa", + "country": "Myanmar", + "lang": "Karen, Mobwa", + "rol3": "jkm", + "pct_christian": 12.5, + "pop": 4500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 18.98, + "lng": 96.63, + "code": "PG048772" + }, + { + "name": "Tawr Chin", + "country": "Myanmar", + "lang": "Chin, Tawr", + "rol3": "tcp", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 22.5, + "lng": 93.78, + "code": "PG009532" + }, + { + "name": "Han Chinese", + "country": "Myanmar", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 650000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 16.85, + "lng": 96.15, + "code": "PG022047" + }, + { + "name": "Karen, Kayan", + "country": "Myanmar", + "lang": "Kayan (Myanmar)", + "rol3": "pdu", + "pct_christian": 7.5, + "pop": 133000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.56, + "lng": 96.82, + "code": "PG009497" + }, + { + "name": "Tai Mao", + "country": "Myanmar", + "lang": "Tai Long", + "rol3": "thi", + "pct_christian": 7.5, + "pop": 120000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 23.89, + "lng": 97.73, + "code": "PG047888" + }, + { + "name": "Chin, Daai", + "country": "Myanmar", + "lang": "Chin, Daai", + "rol3": "dao", + "pct_christian": 7.5, + "pop": 41000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 21.05, + "lng": 93.67, + "code": "PG009421" + }, + { + "name": "Senthang", + "country": "Myanmar", + "lang": "Chin, Senthang", + "rol3": "sez", + "pct_christian": 7.5, + "pop": 33000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 22.46, + "lng": 93.85, + "code": "PG009516" + }, + { + "name": "Uppu", + "country": "Myanmar", + "lang": "Chin, Uppu", + "rol3": "cnb", + "pct_christian": 7.5, + "pop": 30500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Folk", + "lat": 19.9, + "lng": 94.08, + "code": "PG009419" + }, + { + "name": "Hrangkhol", + "country": "Myanmar", + "lang": "Hrangkhol", + "rol3": "hra", + "pct_christian": 7.5, + "pop": 9000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 23.75, + "lng": 93.78, + "code": "PG009444" + }, + { + "name": "Karen, Paku", + "country": "Myanmar", + "lang": "Karen, Paku", + "rol3": "jkp", + "pct_christian": 7.5, + "pop": 5300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 18.94, + "lng": 96.86, + "code": "PG009499" + }, + { + "name": "Lisu", + "country": "Myanmar", + "lang": "Lisu", + "rol3": "lis", + "pct_christian": 3.5, + "pop": 327000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 24.78, + "lng": 97.17, + "code": "PG009523" + }, + { + "name": "Akha", + "country": "Myanmar", + "lang": "Akha", + "rol3": "ahk", + "pct_christian": 3.5, + "pop": 230000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 21.71, + "lng": 99.8, + "code": "PG009402" + }, + { + "name": "Karen, Pow Western", + "country": "Myanmar", + "lang": "Karen, Pwo Western", + "rol3": "pwo", + "pct_christian": 3.5, + "pop": 210000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 15.46, + "lng": 97.72, + "code": "PG046602" + }, + { + "name": "Khumi Chin", + "country": "Myanmar", + "lang": "Chin, Khumi", + "rol3": "cnk", + "pct_christian": 3.5, + "pop": 60000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 21.17, + "lng": 92.98, + "code": "PG009457" + }, + { + "name": "Naga, Tase", + "country": "Myanmar", + "lang": "Naga, Tangshang", + "rol3": "nst", + "pct_christian": 3.5, + "pop": 60000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.71, + "lng": 96.23, + "code": "PG009528" + }, + { + "name": "Riang", + "country": "Myanmar", + "lang": "Riang Lang", + "rol3": "ril", + "pct_christian": 3.5, + "pop": 57500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 23.22, + "lng": 98.73, + "code": "PG009511" + }, + { + "name": "Zaiwa", + "country": "Myanmar", + "lang": "Zaiwa", + "rol3": "atb", + "pct_christian": 3.5, + "pop": 38500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 24.47, + "lng": 97.99, + "code": "PG009407" + }, + { + "name": "Lao", + "country": "Myanmar", + "lang": "Lao", + "rol3": "lao", + "pct_christian": 3.5, + "pop": 26000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 16.85, + "lng": 96.15, + "code": "PG009467" + }, + { + "name": "Anong", + "country": "Myanmar", + "lang": "Lisu", + "rol3": "lis", + "pct_christian": 3.5, + "pop": 12500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 27.29, + "lng": 98.68, + "code": "PG009495" + }, + { + "name": "Karen, Lahta", + "country": "Myanmar", + "lang": "Lahta", + "rol3": "kvt", + "pct_christian": 3.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 20.32, + "lng": 96.89, + "code": "PG009462" + }, + { + "name": "Karen, Yintale", + "country": "Myanmar", + "lang": "Yintale", + "rol3": "kvy", + "pct_christian": 3.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 18.84, + "lng": 97.26, + "code": "PG009547" + }, + { + "name": "Samtao", + "country": "Myanmar", + "lang": "Samtao", + "rol3": "stu", + "pct_christian": 3.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 21.3, + "lng": 99.63, + "code": "PG022054" + }, + { + "name": "Naga, Yimchungru", + "country": "Myanmar", + "lang": "Naga, Yimchungru", + "rol3": "yim", + "pct_christian": 3.5, + "pop": 5600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 25.38, + "lng": 94.8, + "code": "PG009545" + }, + { + "name": "Tailoi", + "country": "Myanmar", + "lang": "Tai Loi", + "rol3": "tlq", + "pct_christian": 3.5, + "pop": 5100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 21.52, + "lng": 100.94, + "code": "PG009525" + }, + { + "name": "Lemo", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 75.0, + "pop": 2300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 25.84, + "lng": 98.78, + "code": "PG007252" + }, + { + "name": "Syrian Christian", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 62.5, + "pop": 4495000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 12.35, + "lng": 76.09, + "code": "PG041308" + }, + { + "name": "Naga, Tangkhul", + "country": "India", + "lang": "Naga, Tangkhul (India)", + "rol3": "nmf", + "pct_christian": 62.5, + "pop": 214000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 25.07, + "lng": 94.38, + "code": "PG041697" + }, + { + "name": "Soria", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 62.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.2, + "lng": 77.09, + "code": "PG048955" + }, + { + "name": "Rathodia", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 62.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 22.3, + "lng": 73.39, + "code": "PG048948" + }, + { + "name": "Bagti", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 62.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 23.28, + "lng": 86.43, + "code": "PG049044" + }, + { + "name": "Naga, Tangkhul", + "country": "United States", + "lang": "Naga, Tangkhul (India)", + "rol3": "nmf", + "pct_christian": 62.5, + "pop": 100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 32.85, + "lng": -96.97, + "code": "PG050369" + }, + { + "name": "Pulayan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 45.0, + "pop": 1540000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 10.06, + "lng": 76.53, + "code": "PG041344" + }, + { + "name": "Meghval", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 45.0, + "pop": 377000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 26.87, + "lng": 73.03, + "code": "PG041328" + }, + { + "name": "Santal (Oriya)", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 45.0, + "pop": 176000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.8, + "lng": 87.48, + "code": "PG046353" + }, + { + "name": "Naga, Khiamngan", + "country": "India", + "lang": "Naga, Khiamniungan", + "rol3": "kix", + "pct_christian": 45.0, + "pop": 56000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 26.17, + "lng": 94.89, + "code": "PG042023" + }, + { + "name": "Hmong", + "country": "Vietnam", + "lang": "Hmong Daw", + "rol3": "mww", + "pct_christian": 35.0, + "pop": 1330000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 21.86, + "lng": 103.59, + "code": "PG011142" + }, + { + "name": "Malai Arayan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 35.0, + "pop": 48000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 9.65, + "lng": 76.66, + "code": "PG041952" + }, + { + "name": "Paravar", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 25.0, + "pop": 162000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 8.62, + "lng": 77.0, + "code": "PG041743" + }, + { + "name": "Madgi", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 25.0, + "pop": 76500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 20.17, + "lng": 79.45, + "code": "PG041802" + }, + { + "name": "Gounder", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 25.0, + "pop": 60000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 11.68, + "lng": 78.22, + "code": "PG041906" + }, + { + "name": "Maru", + "country": "China", + "lang": "Lhao Vo", + "rol3": "mhx", + "pct_christian": 25.0, + "pop": 31000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 24.33, + "lng": 98.43, + "code": "PG007279" + }, + { + "name": "Kerala Mudali", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 25.0, + "pop": 11000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 9.44, + "lng": 78.7, + "code": "PG049672" + }, + { + "name": "Sediq", + "country": "Taiwan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 25.0, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 24.02, + "lng": 121.35, + "code": "PG007536" + }, + { + "name": "Godari", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 25.0, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 17.69, + "lng": 83.22, + "code": "PG049205" + }, + { + "name": "Chamail", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 25.0, + "pop": 1200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 25.48, + "lng": 85.95, + "code": "PG049469" + }, + { + "name": "Ghogia", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 25.0, + "pop": 800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.15, + "lng": 84.09, + "code": "PG049008" + }, + { + "name": "Burmese", + "country": "Germany", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 25.0, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 50.0, + "lng": 8.01, + "code": "PG033529" + }, + { + "name": "Arakala", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 25.0, + "pop": 375.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 18.11, + "lng": 83.4, + "code": "PG049160" + }, + { + "name": "Mala", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 17.5, + "pop": 7615000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 16.36, + "lng": 79.51, + "code": "PG041263" + }, + { + "name": "Balmiki (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 17.5, + "pop": 1295000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.44, + "lng": 75.81, + "code": "PG048195" + }, + { + "name": "Nadia", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 17.5, + "pop": 69500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG041830" + }, + { + "name": "Ojha", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 17.5, + "pop": 46000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.74, + "lng": 78.25, + "code": "PG041974" + }, + { + "name": "Badhi", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 17.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 29.95, + "lng": 77.55, + "code": "PG041480" + }, + { + "name": "Lahu Shi", + "country": "Thailand", + "lang": "Lahu Shi", + "rol3": "lhi", + "pct_christian": 17.5, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 18.98, + "lng": 99.39, + "code": "PG010939" + }, + { + "name": "Goudu", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 17.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 17.71, + "lng": 83.25, + "code": "PG042158" + }, + { + "name": "Sutar (Gujarati)", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 17.5, + "pop": 11000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.4, + "lng": 71.23, + "code": "PG048301" + }, + { + "name": "Black Karen", + "country": "Thailand", + "lang": "Pa’o", + "rol3": "blk", + "pct_christian": 17.5, + "pop": 850.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.74, + "lng": 98.06, + "code": "PG010829" + }, + { + "name": "Barmi", + "country": "India", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 17.5, + "pop": 600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 12.6, + "lng": 92.83, + "code": "PG048889" + }, + { + "name": "Bari (Oriya)", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 17.5, + "pop": 550.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 20.86, + "lng": 84.8, + "code": "PG048204" + }, + { + "name": "Candhai Maru", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 17.5, + "pop": 350.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.48, + "lng": 83.97, + "code": "PG049648" + }, + { + "name": "Madiga", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 9445000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 16.51, + "lng": 79.06, + "code": "PG041253" + }, + { + "name": "Chakkiliyan", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 1205000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.61, + "lng": 77.71, + "code": "PG041373" + }, + { + "name": "Nadua Shabar", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 12.5, + "pop": 659000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 19.9, + "lng": 85.17, + "code": "PG049502" + }, + { + "name": "Han Chinese", + "country": "New Zealand", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 214000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -36.89, + "lng": 174.78, + "code": "PG018495" + }, + { + "name": "Senva", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 12.5, + "pop": 161000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG041682" + }, + { + "name": "Mannan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 12.5, + "pop": 145000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.8, + "lng": 76.55, + "code": "PG041756" + }, + { + "name": "Chakravar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 12.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 8.62, + "lng": 77.0, + "code": "PG041956" + }, + { + "name": "Bawa Dedh", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 12.5, + "pop": 34500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG042035" + }, + { + "name": "Samban", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 12.5, + "pop": 24500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 8.7, + "lng": 77.49, + "code": "PG041752" + }, + { + "name": "Mehtar", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 12.5, + "pop": 20000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 16.22, + "lng": 75.63, + "code": "PG042116" + }, + { + "name": "Panchama", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 7800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 17.01, + "lng": 81.79, + "code": "PG042086" + }, + { + "name": "Peranakan", + "country": "Malaysia", + "lang": "Malay", + "rol3": "zlm", + "pct_christian": 12.5, + "pop": 5000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 3.4, + "lng": 101.64, + "code": "PG018232" + }, + { + "name": "Palliyan", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 12.5, + "pop": 4800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 9.89, + "lng": 77.09, + "code": "PG049215" + }, + { + "name": "Padigarajulu", + "country": "India", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 15.58, + "lng": 79.51, + "code": "PG049165" + }, + { + "name": "Malayali", + "country": "Maldives", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 12.5, + "pop": 950.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 4.17, + "lng": 73.51, + "code": "PG006163" + }, + { + "name": "Kuda", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 12.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 20.83, + "lng": 85.53, + "code": "PG049016" + }, + { + "name": "Gagra", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 12.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.84, + "lng": 75.86, + "code": "PG049079" + }, + { + "name": "Tharua", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 12.5, + "pop": 650.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.49, + "lng": 86.93, + "code": "PG049031" + }, + { + "name": "Gharrami", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 12.5, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 28.64, + "lng": 77.12, + "code": "PG049392" + }, + { + "name": "Han Chinese", + "country": "Kiribati", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 125.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 1.37, + "lng": 173.11, + "code": "PG009087" + }, + { + "name": "Han Chinese", + "country": "Tuvalu", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 50.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -8.5, + "lng": 179.19, + "code": "PG018319" + }, + { + "name": "Han Chinese, Mandarin", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 901450000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 37.37, + "lng": 110.73, + "code": "PG006802" + }, + { + "name": "Nadar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 7.5, + "pop": 6365000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 11.17, + "lng": 77.82, + "code": "PG041309" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Taiwan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 4635000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 24.86, + "lng": 121.36, + "code": "PG007518" + }, + { + "name": "Santal (Bengali)", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 3350000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 24.0, + "lng": 88.81, + "code": "PG046352" + }, + { + "name": "Vellalar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 7.5, + "pop": 3080000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.78, + "lng": 77.78, + "code": "PG041493" + }, + { + "name": "Han Chinese, Mandarin", + "country": "United States", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 2345000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 45.74, + "lng": -114.4, + "code": "PG043261" + }, + { + "name": "Pano", + "country": "India", + "lang": "Odia", + "rol3": "ory", + "pct_christian": 7.5, + "pop": 1735000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 21.04, + "lng": 85.14, + "code": "PG041345" + }, + { + "name": "Han Chinese", + "country": "Vietnam", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 1620000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 21.04, + "lng": 106.1, + "code": "PG033473" + }, + { + "name": "Indian - Hindu", + "country": "South Africa", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 7.5, + "pop": 1365000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": -28.9, + "lng": 26.75, + "code": "PG042180" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Canada", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 1055000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 46.93, + "lng": -92.67, + "code": "PG043404" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Japan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 736000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 35.72, + "lng": 137.14, + "code": "PG048925" + }, + { + "name": "Han Chinese", + "country": "Australia", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 670000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -33.75, + "lng": 144.18, + "code": "PG033443" + }, + { + "name": "Bhangi (Gujarati)", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 7.5, + "pop": 600000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.76, + "lng": 72.13, + "code": "PG048218" + }, + { + "name": "Cheruman", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 467000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.61, + "lng": 76.25, + "code": "PG041452" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Singapore", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 467000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 1.36, + "lng": 103.82, + "code": "PG020728" + }, + { + "name": "Han Chinese", + "country": "Brazil", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 280000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -23.17, + "lng": -45.54, + "code": "PG016864" + }, + { + "name": "Malayali", + "country": "Malaysia", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 206000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 3.07, + "lng": 101.64, + "code": "PG020224" + }, + { + "name": "Han Chinese, Mandarin", + "country": "United Arab Emirates", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 202000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 24.67, + "lng": 55.14, + "code": "PG049240" + }, + { + "name": "Han Chinese, Mandarin", + "country": "North Korea", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 184000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 39.0, + "lng": 125.92, + "code": "PG007584" + }, + { + "name": "Han Chinese", + "country": "France", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 172000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 48.2, + "lng": 2.3, + "code": "PG023131" + }, + { + "name": "Malayali", + "country": "United States", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 165000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 40.72, + "lng": -73.97, + "code": "PG043340" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Hong Kong", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 163000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.38, + "lng": 114.13, + "code": "PG050605" + }, + { + "name": "Lodha, Savar", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 148000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.3, + "lng": 87.43, + "code": "PG041753" + }, + { + "name": "Telugu", + "country": "Malaysia", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 7.5, + "pop": 137000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 3.07, + "lng": 101.62, + "code": "PG009356" + }, + { + "name": "Ghanchi", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 7.5, + "pop": 129000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.02, + "lng": 73.03, + "code": "PG041585" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Saudi Arabia", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 113000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 24.68, + "lng": 46.74, + "code": "PG049246" + }, + { + "name": "Han Chinese", + "country": "Tanzania", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 106000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -6.83, + "lng": 39.25, + "code": "PG014935" + }, + { + "name": "Han Chinese", + "country": "Italy", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 100000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 44.22, + "lng": 10.5, + "code": "PG000330" + }, + { + "name": "Han Chinese", + "country": "South Korea", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 94500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 36.58, + "lng": 127.64, + "code": "PG007589" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Tajikistan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 89500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 38.57, + "lng": 68.77, + "code": "PG049245" + }, + { + "name": "Bharathar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 7.5, + "pop": 81000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 8.94, + "lng": 76.82, + "code": "PG049578" + } + ] + }, + "Afghanistan": { + "target_upg": 68, + "target_pop": 43626100, + "target_top_langs": [ + "Pashto, Southern", + "Dari", + "Pashto, Northern", + "Hazaragi" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Romani, Balkan", + "country": "Italy", + "lang": "Romani, Balkan", + "rol3": "rmn", + "pct_christian": 62.5, + "pop": 2500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 45.54, + "lng": 9.19, + "code": "PG000312" + }, + { + "name": "Balmiki (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 17.5, + "pop": 1295000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.44, + "lng": 75.81, + "code": "PG048195" + }, + { + "name": "Gagra", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 12.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.84, + "lng": 75.86, + "code": "PG049079" + }, + { + "name": "Romani, Balkan", + "country": "Bulgaria", + "lang": "Romani, Balkan", + "rol3": "rmn", + "pct_christian": 7.5, + "pop": 267000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 42.86, + "lng": 23.79, + "code": "PG000737" + }, + { + "name": "Bangni", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 62500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 27.43, + "lng": 92.97, + "code": "PG041887" + }, + { + "name": "Iranian", + "country": "Armenia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 40.17, + "lng": 44.49, + "code": "PG050098" + }, + { + "name": "Iranian", + "country": "Greece", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 38.05, + "lng": 23.7, + "code": "PG047071" + }, + { + "name": "Sorgir", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 7.5, + "pop": 1100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.34, + "lng": 76.39, + "code": "PG049092" + }, + { + "name": "Kankali", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 27.7, + "lng": 81.49, + "code": "PG049096" + }, + { + "name": "Khadim", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 26.49, + "lng": 74.65, + "code": "PG048969" + }, + { + "name": "Mazabi", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 3625000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 30.25, + "lng": 74.91, + "code": "PG041301" + }, + { + "name": "Persian", + "country": "Canada", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 201000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 46.93, + "lng": -92.67, + "code": "PG043458" + }, + { + "name": "Iranian", + "country": "Germany", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 175000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 52.51, + "lng": 11.69, + "code": "PG000259" + }, + { + "name": "Persian", + "country": "Turkiye", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 130000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 41.04, + "lng": 28.87, + "code": "PG024581" + }, + { + "name": "Chikwa", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 89500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 23.97, + "lng": 84.3, + "code": "PG041852" + }, + { + "name": "Persian", + "country": "United Kingdom", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 86000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 51.5, + "lng": -0.17, + "code": "PG000643" + }, + { + "name": "Bhattra (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 79000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 30.98, + "lng": 75.73, + "code": "PG041615" + }, + { + "name": "Arain (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 30.37, + "lng": 75.93, + "code": "PG048185" + }, + { + "name": "Punjabi", + "country": "Singapore", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 15000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 1.36, + "lng": 103.82, + "code": "PG010717" + }, + { + "name": "Persian", + "country": "Indonesia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 8000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": -6.21, + "lng": 106.83, + "code": "PG050238" + }, + { + "name": "Gandhila", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 6600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.34, + "lng": 76.4, + "code": "PG049080" + }, + { + "name": "Persian", + "country": "South Korea", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 3500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 37.55, + "lng": 126.99, + "code": "PG050237" + }, + { + "name": "Pinjara (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 3000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 29.48, + "lng": 76.44, + "code": "PG048167" + }, + { + "name": "Daoli", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 2800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.97, + "lng": 76.55, + "code": "PG049445" + }, + { + "name": "Dayare", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.79, + "lng": 77.53, + "code": "PG049780" + }, + { + "name": "Ahluwalia", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 1400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 31.39, + "lng": 75.36, + "code": "PG049356" + }, + { + "name": "Romani, Balkan", + "country": "France", + "lang": "Romani, Balkan", + "rol3": "rmn", + "pct_christian": 3.5, + "pop": 650.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 48.84, + "lng": 2.35, + "code": "PG000134" + } + ] + }, + "Yemen": { + "target_upg": 20, + "target_pop": 41244500, + "target_top_langs": [ + "Arabic, Sanaani", + "Arabic, Ta'izzi-Adeni", + "Arabic, Hadrami", + "Somali" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Arab, Egyptian", + "country": "Australia", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 12.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -31.94, + "lng": 115.89, + "code": "PG020254" + }, + { + "name": "Hasidim", + "country": "United Kingdom", + "lang": "Hebrew", + "rol3": "heb", + "pct_christian": 7.5, + "pop": 32500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Judaism", + "lat": 51.5, + "lng": -0.17, + "code": "PG000648" + }, + { + "name": "Arab, Egyptian", + "country": "Germany", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 25500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 52.5, + "lng": 13.4, + "code": "PG042462" + }, + { + "name": "Arab, Lebanese", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024837" + }, + { + "name": "Arab, Palestinian", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024839" + }, + { + "name": "Arab, Egyptian", + "country": "Belgium", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 5300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 50.85, + "lng": 4.38, + "code": "PG000053" + }, + { + "name": "Indri", + "country": "South Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 7.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.78, + "lng": 25.73, + "code": "PG012040" + }, + { + "name": "Egyptian Copt", + "country": "United States", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 3.5, + "pop": 242000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 35.35, + "lng": -111.99, + "code": "PG047347" + }, + { + "name": "Arab, Lebanese", + "country": "Canada", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 234000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.53, + "lng": -73.66, + "code": "PG043431" + }, + { + "name": "Arab, Syrian", + "country": "United States", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 193000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 40.7, + "lng": -73.87, + "code": "PG043644" + }, + { + "name": "Delen", + "country": "Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 3.5, + "pop": 13000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 12.06, + "lng": 29.58, + "code": "PG042814" + }, + { + "name": "Arab, Palestinian", + "country": "El Salvador", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 13.71, + "lng": -89.19, + "code": "PG039263" + } + ] + }, + "Morocco": { + "target_upg": 29, + "target_pop": 38094500, + "target_top_langs": [ + "Arabic, Moroccan", + "Tachelhit", + "Tamazight, Central Atlas", + "Tarifit" + ], + "target_top_religion": "Islam", + "neighbors": [] + }, + "Uzbekistan": { + "target_upg": 34, + "target_pop": 35401700, + "target_top_langs": [ + "Uzbek, Northern", + "Tajik", + "Kazakh", + "Karakalpak" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Korean", + "country": "Uzbekistan", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 12.5, + "pop": 254000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.31, + "lng": 69.26, + "code": "PG024684" + }, + { + "name": "Pole", + "country": "Uzbekistan", + "lang": "Polish", + "rol3": "pol", + "pct_christian": 7.5, + "pop": 3700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 41.31, + "lng": 69.26, + "code": "PG024310" + }, + { + "name": "Han Chinese", + "country": "Uzbekistan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 1500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.33, + "lng": 69.29, + "code": "PG024675" + }, + { + "name": "Ukrainian", + "country": "Uzbekistan", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 47000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 41.31, + "lng": 69.26, + "code": "PG024323" + }, + { + "name": "Vietnamese", + "country": "Thailand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 25.0, + "pop": 119000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": 13.76, + "lng": 100.56, + "code": "PG010933" + }, + { + "name": "Romanian", + "country": "Czech Republic", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 25.0, + "pop": 12500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 50.07, + "lng": 14.47, + "code": "PG050033" + }, + { + "name": "Russian", + "country": "Moldova", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 17.5, + "pop": 133000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.13, + "lng": 29.34, + "code": "PG000867" + }, + { + "name": "Moldovan", + "country": "United States", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 12.5, + "pop": 49000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 40.17, + "lng": -74.79, + "code": "PG047277" + }, + { + "name": "Armenian", + "country": "United Kingdom", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 12.5, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000627" + }, + { + "name": "Estonian", + "country": "Estonia", + "lang": "Estonian, Standard", + "rol3": "ekk", + "pct_christian": 7.5, + "pop": 900000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 58.67, + "lng": 25.55, + "code": "PG000779" + }, + { + "name": "Vietnamese", + "country": "Australia", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 174000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": -33.38, + "lng": 143.4, + "code": "PG008087" + }, + { + "name": "Romanian", + "country": "United States", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 7.5, + "pop": 173000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 36.09, + "lng": -110.56, + "code": "PG043611" + }, + { + "name": "Russian", + "country": "Australia", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 7.5, + "pop": 28500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.52, + "lng": 142.46, + "code": "PG008063" + }, + { + "name": "Estonian", + "country": "Canada", + "lang": "Estonian, Standard", + "rol3": "ekk", + "pct_christian": 7.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 43.83, + "lng": -79.46, + "code": "PG043392" + }, + { + "name": "Iranian", + "country": "Armenia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 40.17, + "lng": 44.49, + "code": "PG050098" + }, + { + "name": "Vietnamese", + "country": "New Zealand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 4900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": -36.89, + "lng": 174.78, + "code": "PG018514" + }, + { + "name": "Iranian", + "country": "Greece", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 38.05, + "lng": 23.7, + "code": "PG047071" + }, + { + "name": "Gelao", + "country": "Vietnam", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 23.08, + "lng": 105.2, + "code": "PG011133" + }, + { + "name": "Romanian", + "country": "Romania", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 16370000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 45.84, + "lng": 24.98, + "code": "PG000899" + }, + { + "name": "Russian", + "country": "Ukraine", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 7080000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.69, + "lng": 34.82, + "code": "PG042915" + }, + { + "name": "Romanian", + "country": "Italy", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 1300000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 44.5, + "lng": 9.8, + "code": "PG048833" + }, + { + "name": "Bulgarian", + "country": "Germany", + "lang": "Bulgarian", + "rol3": "bul", + "pct_christian": 3.5, + "pop": 411000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.5, + "lng": 13.4, + "code": "PG042446" + }, + { + "name": "Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 260000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.48, + "lng": 12.44, + "code": "PG049403" + }, + { + "name": "Armenian", + "country": "Lebanon", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 220000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 33.87, + "lng": 35.58, + "code": "PG048928" + }, + { + "name": "Jew", + "country": "Russian Federation", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 208000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 52.97, + "lng": 74.32, + "code": "PG042910" + }, + { + "name": "Persian", + "country": "Canada", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 201000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 46.93, + "lng": -92.67, + "code": "PG043458" + }, + { + "name": "Iranian", + "country": "Germany", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 175000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 52.51, + "lng": 11.69, + "code": "PG000259" + }, + { + "name": "Russian", + "country": "Lithuania", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 155000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 55.25, + "lng": 24.5, + "code": "PG000853" + }, + { + "name": "Kinh", + "country": "Laos", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 138000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 17.97, + "lng": 102.64, + "code": "PG020963" + }, + { + "name": "Persian", + "country": "Turkiye", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 130000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 41.04, + "lng": 28.87, + "code": "PG024581" + }, + { + "name": "Armenian", + "country": "Iran", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 113000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 38.14, + "lng": 46.37, + "code": "PG024130" + }, + { + "name": "Jew, Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 99500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Judaism", + "lat": 52.5, + "lng": 13.4, + "code": "PG046578" + }, + { + "name": "Romanian", + "country": "Hungary", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 96500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 46.8, + "lng": 20.84, + "code": "PG000835" + }, + { + "name": "Persian", + "country": "United Kingdom", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 86000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 51.5, + "lng": -0.17, + "code": "PG000643" + }, + { + "name": "Vietnamese Migrant Workers", + "country": "Malaysia", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 85000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Confucianism", + "lat": 5.35, + "lng": 100.41, + "code": "PG046599" + }, + { + "name": "Romanian ", + "country": "Austria", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 48.18, + "lng": 16.35, + "code": "PG049963" + }, + { + "name": "Russian", + "country": "United Kingdom", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 64000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000675" + }, + { + "name": "Armenian", + "country": "Turkiye", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 41.05, + "lng": 28.9, + "code": "PG024538" + }, + { + "name": "Kurd, Northern", + "country": "Russian Federation", + "lang": "Kurdish, Northern", + "rol3": "kmr", + "pct_christian": 3.5, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 44.63, + "lng": 39.24, + "code": "PG024465" + }, + { + "name": "Romanian", + "country": "Ireland", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 53.39, + "lng": -6.28, + "code": "PG048049" + }, + { + "name": "Moldovan", + "country": "Canada", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 49.72, + "lng": -95.67, + "code": "PG047364" + }, + { + "name": "Vietnamese", + "country": "Netherlands", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 8800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": 52.47, + "lng": 5.36, + "code": "PG000445" + }, + { + "name": "Persian", + "country": "Indonesia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 8000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": -6.21, + "lng": 106.83, + "code": "PG050238" + }, + { + "name": "Belarusian", + "country": "Argentina", + "lang": "Belarusian", + "rol3": "bel", + "pct_christian": 3.5, + "pop": 4600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -34.65, + "lng": -58.56, + "code": "PG017330" + }, + { + "name": "Persian", + "country": "South Korea", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 3500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 37.55, + "lng": 126.99, + "code": "PG050237" + }, + { + "name": "Karakalpak", + "country": "Kazakhstan", + "lang": "Karakalpak", + "rol3": "kaa", + "pct_christian": 3.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.62, + "lng": 62.06, + "code": "PG024276" + }, + { + "name": "Romanian", + "country": "Venezuela", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 10.48, + "lng": -66.88, + "code": "PG016490" + } + ] + }, + "Saudi Arabia": { + "target_upg": 44, + "target_pop": 31109500, + "target_top_langs": [ + "Arabic, Najdi", + "Arabic, Hijazi", + "Bengali", + "Urdu" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Han Chinese, Mandarin", + "country": "Saudi Arabia", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 113000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 24.68, + "lng": 46.74, + "code": "PG049246" + }, + { + "name": "Bagti", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 62.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 23.28, + "lng": 86.43, + "code": "PG049044" + }, + { + "name": "Arab, Egyptian", + "country": "Australia", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 12.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -31.94, + "lng": 115.89, + "code": "PG020254" + }, + { + "name": "Santal (Bengali)", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 3350000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 24.0, + "lng": 88.81, + "code": "PG046352" + }, + { + "name": "Arab, Syro-Lebanese", + "country": "Australia", + "lang": "Arabic, Gulf", + "rol3": "afb", + "pct_christian": 7.5, + "pop": 192000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -33.38, + "lng": 143.4, + "code": "PG020267" + }, + { + "name": "Lodha, Savar", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 148000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.3, + "lng": 87.43, + "code": "PG041753" + }, + { + "name": "Swahili", + "country": "United States", + "lang": "Swahili", + "rol3": "swh", + "pct_christian": 7.5, + "pop": 81500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 34.52, + "lng": -105.83, + "code": "PG047306" + }, + { + "name": "Bangni", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 62500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 27.43, + "lng": 92.97, + "code": "PG041887" + }, + { + "name": "Kela", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 29000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 20.46, + "lng": 85.67, + "code": "PG042031" + }, + { + "name": "Baiti", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 27000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 23.24, + "lng": 88.24, + "code": "PG042100" + }, + { + "name": "Arab, Egyptian", + "country": "Germany", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 25500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 52.5, + "lng": 13.4, + "code": "PG042462" + }, + { + "name": "Chhetri", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 7.5, + "pop": 17000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.34, + "lng": 89.24, + "code": "PG041565" + }, + { + "name": "Arab, Lebanese", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024837" + }, + { + "name": "Arab, Palestinian", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024839" + }, + { + "name": "Arab, Egyptian", + "country": "Belgium", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 5300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 50.85, + "lng": 4.38, + "code": "PG000053" + }, + { + "name": "Indri", + "country": "South Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 7.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.78, + "lng": 25.73, + "code": "PG012040" + }, + { + "name": "Kankali", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 27.7, + "lng": 81.49, + "code": "PG049096" + }, + { + "name": "Khadim", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 26.49, + "lng": 74.65, + "code": "PG048969" + }, + { + "name": "Chagga", + "country": "Tanzania", + "lang": "Swahili", + "rol3": "swh", + "pct_christian": 3.5, + "pop": 1185000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -3.29, + "lng": 37.08, + "code": "PG014916" + }, + { + "name": "Bhangi (Bengali)", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 699000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.15, + "lng": 87.53, + "code": "PG048219" + }, + { + "name": "Kora", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 279000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 23.29, + "lng": 86.43, + "code": "PG041592" + }, + { + "name": "Egyptian Copt", + "country": "United States", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 3.5, + "pop": 242000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 35.35, + "lng": -111.99, + "code": "PG047347" + }, + { + "name": "Arab, Lebanese", + "country": "Canada", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 234000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.53, + "lng": -73.66, + "code": "PG043431" + }, + { + "name": "Arab, Syrian", + "country": "United States", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 193000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 40.7, + "lng": -73.87, + "code": "PG043644" + }, + { + "name": "Gurung", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 147000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 26.84, + "lng": 90.63, + "code": "PG041693" + }, + { + "name": "Nepali", + "country": "Bhutan", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 131000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.13, + "lng": 89.79, + "code": "PG042388" + }, + { + "name": "Chikwa", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 89500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 23.97, + "lng": 84.3, + "code": "PG041852" + }, + { + "name": "Damai (Nepali)", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 66500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 26.66, + "lng": 89.08, + "code": "PG041874" + }, + { + "name": "Koch", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 51000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 25.68, + "lng": 88.93, + "code": "PG042084" + }, + { + "name": "Kotal", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 42500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.42, + "lng": 87.79, + "code": "PG041946" + }, + { + "name": "Swahili", + "country": "Zambia", + "lang": "Swahili", + "rol3": "swh", + "pct_christian": 3.5, + "pop": 38500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -15.4, + "lng": 28.31, + "code": "PG015634" + }, + { + "name": "Bengali", + "country": "Nepal", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 31000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.42, + "lng": 84.77, + "code": "PG006178" + }, + { + "name": "Doai", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 21500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.05, + "lng": 88.57, + "code": "PG042134" + }, + { + "name": "Sarki", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 18000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 26.96, + "lng": 88.33, + "code": "PG042059" + }, + { + "name": "Delen", + "country": "Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 3.5, + "pop": 13000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 12.06, + "lng": 29.58, + "code": "PG042814" + }, + { + "name": "Paharia", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 9200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.37, + "lng": 86.02, + "code": "PG049049" + }, + { + "name": "Behera", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 3800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.3, + "lng": 87.44, + "code": "PG041569" + }, + { + "name": "Dayare", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.79, + "lng": 77.53, + "code": "PG049780" + }, + { + "name": "Zanzibari", + "country": "South Africa", + "lang": "Swahili", + "rol3": "swh", + "pct_christian": 3.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -29.84, + "lng": 30.93, + "code": "PG015550" + }, + { + "name": "Arab, Palestinian", + "country": "El Salvador", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 13.71, + "lng": -89.19, + "code": "PG039263" + }, + { + "name": "Kusunda", + "country": "Nepal", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 27.17, + "lng": 85.13, + "code": "PG049141" + } + ] + }, + "Ethiopia": { + "target_upg": 33, + "target_pop": 30668900, + "target_top_langs": [ + "Somali", + "Amharic", + "Oromo, West Central", + "Oromo, Borana-Arsi-Guji" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Sidama", + "country": "Ethiopia", + "lang": "Sidamo", + "rol3": "sid", + "pct_christian": 62.5, + "pop": 5240000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.66, + "lng": 38.54, + "code": "PG011635" + }, + { + "name": "Koorete", + "country": "Ethiopia", + "lang": "Koorete", + "rol3": "kqy", + "pct_christian": 62.5, + "pop": 252000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.79, + "lng": 37.83, + "code": "PG011608" + }, + { + "name": "Basketo", + "country": "Ethiopia", + "lang": "Basketo", + "rol3": "bst", + "pct_christian": 62.5, + "pop": 127000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.26, + "lng": 36.56, + "code": "PG011552" + }, + { + "name": "Konso", + "country": "Ethiopia", + "lang": "Konso", + "rol3": "kxc", + "pct_christian": 45.0, + "pop": 407000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 5.35, + "lng": 37.39, + "code": "PG011607" + }, + { + "name": "Naath", + "country": "Ethiopia", + "lang": "Nuer", + "rol3": "nus", + "pct_christian": 45.0, + "pop": 250000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 8.29, + "lng": 34.17, + "code": "PG011572" + }, + { + "name": "Oyda", + "country": "Ethiopia", + "lang": "Oyda", + "rol3": "oyd", + "pct_christian": 45.0, + "pop": 73500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.18, + "lng": 36.81, + "code": "PG011629" + }, + { + "name": "Bussa", + "country": "Ethiopia", + "lang": "Mositacha", + "rol3": "dox", + "pct_christian": 45.0, + "pop": 31000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.75, + "lng": 37.22, + "code": "PG042702" + }, + { + "name": "Wolaitta", + "country": "Ethiopia", + "lang": "Wolaytta", + "rol3": "wal", + "pct_christian": 35.0, + "pop": 3050000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.68, + "lng": 37.63, + "code": "PG011653" + }, + { + "name": "Hadiyya", + "country": "Ethiopia", + "lang": "Hadiyya", + "rol3": "hdy", + "pct_christian": 35.0, + "pop": 2255000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.48, + "lng": 37.77, + "code": "PG011591" + }, + { + "name": "Gedeo", + "country": "Ethiopia", + "lang": "Gedeo", + "rol3": "drs", + "pct_christian": 35.0, + "pop": 1580000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.15, + "lng": 38.28, + "code": "PG011567" + }, + { + "name": "Kambata", + "country": "Ethiopia", + "lang": "Kambaata", + "rol3": "ktb", + "pct_christian": 35.0, + "pop": 1025000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.29, + "lng": 37.83, + "code": "PG011602" + }, + { + "name": "Meen", + "country": "Ethiopia", + "lang": "Me’en", + "rol3": "mym", + "pct_christian": 35.0, + "pop": 242000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 6.86, + "lng": 35.75, + "code": "PG011617" + }, + { + "name": "Melo", + "country": "Ethiopia", + "lang": "Melo", + "rol3": "mfx", + "pct_christian": 35.0, + "pop": 168000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 6.51, + "lng": 36.68, + "code": "PG011618" + }, + { + "name": "Gidole", + "country": "Ethiopia", + "lang": "Dirasha", + "rol3": "gdl", + "pct_christian": 35.0, + "pop": 67000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.63, + "lng": 37.38, + "code": "PG011583" + }, + { + "name": "Tambaro", + "country": "Ethiopia", + "lang": "Kambaata", + "rol3": "ktb", + "pct_christian": 25.0, + "pop": 158000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 7.26, + "lng": 37.48, + "code": "PG011648" + }, + { + "name": "Guji", + "country": "Ethiopia", + "lang": "Oromo, Borana-Arsi-Guji", + "rol3": "gax", + "pct_christian": 17.5, + "pop": 938000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 6.17, + "lng": 39.39, + "code": "PG011557" + }, + { + "name": "Dawro", + "country": "Ethiopia", + "lang": "Dawro", + "rol3": "dwr", + "pct_christian": 17.5, + "pop": 880000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 6.97, + "lng": 37.1, + "code": "PG011568" + }, + { + "name": "Gofa", + "country": "Ethiopia", + "lang": "Gofa", + "rol3": "gof", + "pct_christian": 17.5, + "pop": 590000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.27, + "lng": 37.17, + "code": "PG011587" + }, + { + "name": "Gamo", + "country": "Ethiopia", + "lang": "Gamo", + "rol3": "gmv", + "pct_christian": 12.5, + "pop": 1800000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.26, + "lng": 37.18, + "code": "PG011579" + }, + { + "name": "Chara", + "country": "Ethiopia", + "lang": "Tsaara", + "rol3": "cra", + "pct_christian": 12.5, + "pop": 21500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.35, + "lng": 36.16, + "code": "PG011565" + }, + { + "name": "Dache", + "country": "Ethiopia", + "lang": "Gamo", + "rol3": "gmv", + "pct_christian": 7.5, + "pop": 10500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 5.96, + "lng": 37.53, + "code": "PG042703" + }, + { + "name": "Kachama", + "country": "Ethiopia", + "lang": "Kachama-Ganjule", + "rol3": "kcx", + "pct_christian": 7.5, + "pop": 4100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.88, + "lng": 37.48, + "code": "PG011600" + }, + { + "name": "Borana", + "country": "Ethiopia", + "lang": "Oromo, Borana-Arsi-Guji", + "rol3": "gax", + "pct_christian": 3.5, + "pop": 965000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 4.91, + "lng": 38.51, + "code": "PG011558" + }, + { + "name": "Ari", + "country": "Ethiopia", + "lang": "Aari", + "rol3": "aiw", + "pct_christian": 3.5, + "pop": 472000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 5.88, + "lng": 36.5, + "code": "PG011548" + }, + { + "name": "Mesqan", + "country": "Ethiopia", + "lang": "Mesqan", + "rol3": "mvz", + "pct_christian": 3.5, + "pop": 317000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 8.12, + "lng": 38.39, + "code": "PG050130" + }, + { + "name": "Zayse", + "country": "Ethiopia", + "lang": "Zayse", + "rol3": "zay", + "pct_christian": 3.5, + "pop": 29000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.78, + "lng": 37.38, + "code": "PG011659" + }, + { + "name": "Gorose", + "country": "Ethiopia", + "lang": "Ale", + "rol3": "gwd", + "pct_christian": 3.5, + "pop": 7200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.46, + "lng": 37.44, + "code": "PG042713" + }, + { + "name": "Amhara", + "country": "Canada", + "lang": "Amharic", + "rol3": "amh", + "pct_christian": 25.0, + "pop": 14000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 43.83, + "lng": -79.46, + "code": "PG047403" + }, + { + "name": "Zari", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 9.87, + "lng": 9.4, + "code": "PG014203" + }, + { + "name": "Bassa", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 10.67, + "lng": 5.82, + "code": "PG033345" + }, + { + "name": "Eritreans", + "country": "Kenya", + "lang": "Tigrigna", + "rol3": "tir", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -1.3, + "lng": 36.86, + "code": "PG050216" + }, + { + "name": "Indri", + "country": "South Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 7.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.78, + "lng": 25.73, + "code": "PG012040" + }, + { + "name": "Komo", + "country": "Sudan", + "lang": "Komo (Sudan)", + "rol3": "xom", + "pct_christian": 3.5, + "pop": 36000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.82, + "lng": 34.09, + "code": "PG012072" + }, + { + "name": "Eritreans", + "country": "Uganda", + "lang": "Tigrigna", + "rol3": "tir", + "pct_christian": 3.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 0.34, + "lng": 32.6, + "code": "PG050217" + }, + { + "name": "Arab", + "country": "South Africa", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -26.17, + "lng": 28.07, + "code": "PG015486" + }, + { + "name": "Delen", + "country": "Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 3.5, + "pop": 13000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 12.06, + "lng": 29.58, + "code": "PG042814" + }, + { + "name": "Arab", + "country": "New Zealand", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -36.89, + "lng": 174.78, + "code": "PG018478" + }, + { + "name": "Ethiopian, Oromo", + "country": "United States", + "lang": "Oromo, West Central", + "rol3": "gaz", + "pct_christian": 3.5, + "pop": 7200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 38.9, + "lng": -77.19, + "code": "PG047338" + } + ] + }, + "Niger": { + "target_upg": 30, + "target_pop": 27011000, + "target_top_langs": [ + "Hausa", + "Zarma", + "Fulfulde, Western Niger", + "Tamajaq, Tawallammat" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Gurma", + "country": "Niger", + "lang": "Gourmanchéma", + "rol3": "gux", + "pct_christian": 3.5, + "pop": 88500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 12.86, + "lng": 1.82, + "code": "PG013599" + }, + { + "name": "Yoruba", + "country": "Niger", + "lang": "Yoruba", + "rol3": "yor", + "pct_christian": 3.5, + "pop": 88500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 13.51, + "lng": 2.12, + "code": "PG013615" + }, + { + "name": "Burkina Faso", + "country": "Canada", + "lang": "Moore", + "rol3": "mos", + "pct_christian": 12.5, + "pop": 425.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 43.83, + "lng": -79.46, + "code": "PG047453" + }, + { + "name": "Mossi", + "country": "Burkina Faso", + "lang": "Moore", + "rol3": "mos", + "pct_christian": 7.5, + "pop": 8335000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 12.73, + "lng": -1.3, + "code": "PG012424" + }, + { + "name": "Mossi", + "country": "Ghana", + "lang": "Moore", + "rol3": "mos", + "pct_christian": 7.5, + "pop": 526000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 5.57, + "lng": -0.22, + "code": "PG013360" + }, + { + "name": "Zaore", + "country": "Burkina Faso", + "lang": "Moore", + "rol3": "mos", + "pct_christian": 7.5, + "pop": 68000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 12.36, + "lng": -1.52, + "code": "PG012427" + }, + { + "name": "Zari", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 9.87, + "lng": 9.4, + "code": "PG014203" + }, + { + "name": "Bassa", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 10.67, + "lng": 5.82, + "code": "PG033345" + }, + { + "name": "Bambara", + "country": "Cote d’Ivoire", + "lang": "Bamanankan", + "rol3": "bam", + "pct_christian": 3.5, + "pop": 1485000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 9.88, + "lng": -7.05, + "code": "PG013042" + }, + { + "name": "Mossi", + "country": "United States", + "lang": "Moore", + "rol3": "mos", + "pct_christian": 3.5, + "pop": 1100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 40.74, + "lng": -73.72, + "code": "PG047647" + } + ] + }, + "Korea, North": { + "target_upg": 2, + "target_pop": 26300000, + "target_top_langs": [ + "Korean", + "Language unknown" + ], + "target_top_religion": "Non-Religious", + "neighbors": [ + { + "name": "Han Chinese, Mandarin", + "country": "North Korea", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 184000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 39.0, + "lng": 125.92, + "code": "PG007584" + }, + { + "name": "Korean", + "country": "Thailand", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 35.0, + "pop": 20500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 13.76, + "lng": 100.56, + "code": "PG010874" + }, + { + "name": "Korean", + "country": "Argentina", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -34.65, + "lng": -58.56, + "code": "PG046918" + }, + { + "name": "Korean", + "country": "Singapore", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 24500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 1.36, + "lng": 103.82, + "code": "PG010710" + }, + { + "name": "Korean", + "country": "Taiwan", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 7000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 22.63, + "lng": 120.33, + "code": "PG007526" + }, + { + "name": "Korean", + "country": "Northern Mariana Islands", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 25.0, + "pop": 1600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 15.91, + "lng": 145.61, + "code": "PG050228" + }, + { + "name": "Korean", + "country": "Australia", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 167000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -33.85, + "lng": 151.03, + "code": "PG021625" + }, + { + "name": "Korean", + "country": "Canada", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 162000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 46.93, + "lng": -92.67, + "code": "PG043424" + }, + { + "name": "Russian", + "country": "Moldova", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 17.5, + "pop": 133000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.13, + "lng": 29.34, + "code": "PG000867" + }, + { + "name": "Korean", + "country": "United Kingdom", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 51.5, + "lng": -0.17, + "code": "PG000650" + }, + { + "name": "Korean", + "country": "New Zealand", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 38000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -36.89, + "lng": 174.78, + "code": "PG047592" + }, + { + "name": "Korean", + "country": "Hong Kong", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 8600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 22.38, + "lng": 114.13, + "code": "PG050601" + }, + { + "name": "Korean", + "country": "Paraguay", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 8000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -25.3, + "lng": -57.56, + "code": "PG017246" + }, + { + "name": "Korean", + "country": "Guam", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 4300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 13.44, + "lng": 144.78, + "code": "PG050301" + }, + { + "name": "Korean", + "country": "Dominican Republic", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 17.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 18.48, + "lng": -69.91, + "code": "PG022409" + }, + { + "name": "Korean", + "country": "South Korea", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 50250000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 36.38, + "lng": 127.82, + "code": "PG048088" + }, + { + "name": "Korean", + "country": "United States", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 1095000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 38.77, + "lng": -98.89, + "code": "PG043310" + }, + { + "name": "Korean", + "country": "Uzbekistan", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 12.5, + "pop": 254000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.31, + "lng": 69.26, + "code": "PG024684" + }, + { + "name": "Korean", + "country": "Kazakhstan", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 132000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 43.29, + "lng": 76.91, + "code": "PG024281" + }, + { + "name": "Korean", + "country": "Mozambique", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 36000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -25.89, + "lng": 32.57, + "code": "PG015382" + }, + { + "name": "Korean", + "country": "Madagascar", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 18000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -18.91, + "lng": 47.53, + "code": "PG015310" + }, + { + "name": "Korean", + "country": "Honduras", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 150.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 14.08, + "lng": -87.2, + "code": "PG024788" + }, + { + "name": "Korean", + "country": "Brazil", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 48500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -23.57, + "lng": -46.57, + "code": "PG016974" + }, + { + "name": "Korean", + "country": "Germany", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 50.12, + "lng": 8.67, + "code": "PG000249" + }, + { + "name": "Russian", + "country": "Australia", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 7.5, + "pop": 28500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.52, + "lng": 142.46, + "code": "PG008063" + }, + { + "name": "Korean", + "country": "Kyrgyzstan", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 19500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 42.88, + "lng": 74.63, + "code": "PG024358" + }, + { + "name": "Korean", + "country": "Iran", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 17500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 35.7, + "lng": 51.38, + "code": "PG024174" + }, + { + "name": "Korean", + "country": "Guatemala", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 14.6, + "lng": -90.55, + "code": "PG024719" + }, + { + "name": "Korean", + "country": "Turkmenistan", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 7.5, + "pop": 5200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 37.94, + "lng": 58.39, + "code": "PG024622" + }, + { + "name": "Russian", + "country": "Ukraine", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 7080000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.69, + "lng": 34.82, + "code": "PG042915" + }, + { + "name": "Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 260000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.48, + "lng": 12.44, + "code": "PG049403" + }, + { + "name": "Jew", + "country": "Russian Federation", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 208000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 52.97, + "lng": 74.32, + "code": "PG042910" + }, + { + "name": "Russian", + "country": "Lithuania", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 155000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 55.25, + "lng": 24.5, + "code": "PG000853" + }, + { + "name": "Jew, Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 99500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Judaism", + "lat": 52.5, + "lng": 13.4, + "code": "PG046578" + }, + { + "name": "Russian", + "country": "United Kingdom", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 64000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000675" + }, + { + "name": "Korean", + "country": "France", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 3.5, + "pop": 29000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 48.84, + "lng": 2.35, + "code": "PG000171" + }, + { + "name": "Korean", + "country": "Spain", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 3.5, + "pop": 2900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 40.41, + "lng": -3.69, + "code": "PG042347" + }, + { + "name": "Korean", + "country": "Panama", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 3.5, + "pop": 325.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 9.02, + "lng": -79.5, + "code": "PG024842" + } + ] + }, + "Nepal": { + "target_upg": 214, + "target_pop": 26044700, + "target_top_langs": [ + "Nepali", + "Maithili", + "Tharu, Dangaura", + "Newar" + ], + "target_top_religion": "Hinduism", + "neighbors": [ + { + "name": "Rai, Chamlinge", + "country": "Nepal", + "lang": "Chamling", + "rol3": "rab", + "pct_christian": 25.0, + "pop": 15000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 27.06, + "lng": 86.49, + "code": "PG006185" + }, + { + "name": "Chepang", + "country": "Nepal", + "lang": "Chepang", + "rol3": "cdm", + "pct_christian": 7.5, + "pop": 68500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 27.58, + "lng": 84.79, + "code": "PG006189" + }, + { + "name": "Rai, Sampange", + "country": "Nepal", + "lang": "Sampang", + "rol3": "rav", + "pct_christian": 7.5, + "pop": 14000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 27.57, + "lng": 85.77, + "code": "PG006288" + }, + { + "name": "Munda", + "country": "Nepal", + "lang": "Munda", + "rol3": "unx", + "pct_christian": 7.5, + "pop": 9000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 26.75, + "lng": 87.41, + "code": "PG006260" + }, + { + "name": "Jirel", + "country": "Nepal", + "lang": "Jirel", + "rol3": "jul", + "pct_christian": 7.5, + "pop": 6500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 27.8, + "lng": 85.63, + "code": "PG006224" + }, + { + "name": "Lepcha", + "country": "Nepal", + "lang": "Lepcha", + "rol3": "lep", + "pct_christian": 7.5, + "pop": 4800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Tibetan", + "lat": 26.86, + "lng": 87.66, + "code": "PG006247" + }, + { + "name": "Koi", + "country": "Nepal", + "lang": "Koyee", + "rol3": "kkt", + "pct_christian": 7.5, + "pop": 3400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 27.15, + "lng": 86.8, + "code": "PG006235" + }, + { + "name": "Nawa Sherpa", + "country": "Nepal", + "lang": "Naaba", + "rol3": "nao", + "pct_christian": 7.5, + "pop": 950.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 27.7, + "lng": 87.34, + "code": "PG006265" + }, + { + "name": "Danuwar", + "country": "Nepal", + "lang": "Danuwar", + "rol3": "dhw", + "pct_christian": 3.5, + "pop": 70000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 27.04, + "lng": 86.13, + "code": "PG006196" + }, + { + "name": "Santal", + "country": "Nepal", + "lang": "Santhali", + "rol3": "sat", + "pct_christian": 3.5, + "pop": 55500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 26.77, + "lng": 86.99, + "code": "PG006289" + }, + { + "name": "Bengali", + "country": "Nepal", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 3.5, + "pop": 31000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 27.42, + "lng": 84.77, + "code": "PG006178" + }, + { + "name": "Han Chinese", + "country": "Nepal", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 3.5, + "pop": 23000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 27.71, + "lng": 85.32, + "code": "PG006216" + }, + { + "name": "Yakha", + "country": "Nepal", + "lang": "Yakkha", + "rol3": "ybh", + "pct_christian": 3.5, + "pop": 22000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Other - Kirati", + "lat": 27.08, + "lng": 86.54, + "code": "PG006317" + }, + { + "name": "Brahman (Hindi)", + "country": "Nepal", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 3.5, + "pop": 18000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 27.43, + "lng": 85.17, + "code": "PG045937" + }, + { + "name": "Badhi", + "country": "Nepal", + "lang": "Jumli", + "rol3": "jml", + "pct_christian": 3.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 28.3, + "lng": 82.82, + "code": "PG049104" + }, + { + "name": "Lhomi", + "country": "Nepal", + "lang": "Lhomi", + "rol3": "lhm", + "pct_christian": 3.5, + "pop": 7300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Tibetan", + "lat": 27.75, + "lng": 86.08, + "code": "PG006248" + }, + { + "name": "British", + "country": "Nepal", + "lang": "English", + "rol3": "eng", + "pct_christian": 3.5, + "pop": 3300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 27.71, + "lng": 85.32, + "code": "PG006183" + }, + { + "name": "Raji", + "country": "Nepal", + "lang": "Raji", + "rol3": "rji", + "pct_christian": 3.5, + "pop": 3100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 28.61, + "lng": 81.28, + "code": "PG006282" + }, + { + "name": "Syuba", + "country": "Nepal", + "lang": "Syuba", + "rol3": "syw", + "pct_christian": 3.5, + "pop": 1700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Tibetan", + "lat": 27.45, + "lng": 86.19, + "code": "PG006226" + }, + { + "name": "Kusunda", + "country": "Nepal", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 275.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 27.17, + "lng": 85.13, + "code": "PG049141" + }, + { + "name": "Koirao", + "country": "India", + "lang": "Boro (India)", + "rol3": "brx", + "pct_christian": 75.0, + "pop": 1800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 25.2, + "lng": 94.05, + "code": "PG049766" + }, + { + "name": "Majhi", + "country": "India", + "lang": "Majhi", + "rol3": "mjz", + "pct_christian": 75.0, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.11, + "lng": 88.35, + "code": "PG049075" + }, + { + "name": "Ansari-Momin (Sadri)", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 75.0, + "pop": 225.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 23.63, + "lng": 85.55, + "code": "PG048700" + }, + { + "name": "Hkauri", + "country": "China", + "lang": "Tibetan, Central", + "rol3": "bod", + "pct_christian": 62.5, + "pop": 40.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 24.55, + "lng": 97.6, + "code": "PG022169" + }, + { + "name": "Kharia", + "country": "India", + "lang": "Kharia", + "rol3": "khr", + "pct_christian": 25.0, + "pop": 889000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 22.47, + "lng": 84.55, + "code": "PG041457" + }, + { + "name": "Oraon", + "country": "Bhutan", + "lang": "Kurux", + "rol3": "kru", + "pct_christian": 25.0, + "pop": 4200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 26.88, + "lng": 89.21, + "code": "PG001235" + }, + { + "name": "Balmiki (Awadhi)", + "country": "India", + "lang": "Awadhi", + "rol3": "awa", + "pct_christian": 17.5, + "pop": 1720000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.93, + "lng": 78.08, + "code": "PG041289" + }, + { + "name": "Balmiki (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 17.5, + "pop": 1295000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.44, + "lng": 75.81, + "code": "PG048195" + }, + { + "name": "Domar", + "country": "India", + "lang": "Awadhi", + "rol3": "awa", + "pct_christian": 12.5, + "pop": 27000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 25.45, + "lng": 80.38, + "code": "PG049077" + }, + { + "name": "Hsifan", + "country": "Myanmar", + "lang": "Tibetan, Central", + "rol3": "bod", + "pct_christian": 12.5, + "pop": 5600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Tibetan", + "lat": 27.24, + "lng": 97.64, + "code": "PG009445" + }, + { + "name": "Gagra", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 12.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.84, + "lng": 75.86, + "code": "PG049079" + }, + { + "name": "Dusadh", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 7.5, + "pop": 6910000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 25.23, + "lng": 85.31, + "code": "PG041266" + }, + { + "name": "Oraon", + "country": "India", + "lang": "Kurux", + "rol3": "kru", + "pct_christian": 7.5, + "pop": 5510000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 24.4, + "lng": 86.87, + "code": "PG041304" + }, + { + "name": "Chamar (Awadhi)", + "country": "India", + "lang": "Awadhi", + "rol3": "awa", + "pct_christian": 7.5, + "pop": 1275000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 26.07, + "lng": 80.62, + "code": "PG046031" + }, + { + "name": "Amant", + "country": "India", + "lang": "Maithili", + "rol3": "mai", + "pct_christian": 7.5, + "pop": 244000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 25.04, + "lng": 86.5, + "code": "PG042053" + }, + { + "name": "Oraon", + "country": "Bangladesh", + "lang": "Kurux", + "rol3": "kru", + "pct_christian": 7.5, + "pop": 89500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 25.86, + "lng": 88.88, + "code": "PG001195" + }, + { + "name": "Bangni", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 62500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 27.43, + "lng": 92.97, + "code": "PG041887" + }, + { + "name": "Badaik", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 7.5, + "pop": 47500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.23, + "lng": 84.86, + "code": "PG042092" + }, + { + "name": "Parhaiya", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 7.5, + "pop": 38000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.97, + "lng": 84.3, + "code": "PG041928" + }, + { + "name": "Chhetri", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 7.5, + "pop": 17000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.34, + "lng": 89.24, + "code": "PG041565" + }, + { + "name": "Sorgir", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 7.5, + "pop": 1100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.34, + "lng": 76.39, + "code": "PG049092" + }, + { + "name": "Kankali", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 27.7, + "lng": 81.49, + "code": "PG049096" + }, + { + "name": "Khadim", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 7.5, + "pop": 400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 26.49, + "lng": 74.65, + "code": "PG048969" + }, + { + "name": "Kharwar (Khotta)", + "country": "India", + "lang": "Maithili", + "rol3": "mai", + "pct_christian": 7.5, + "pop": 125.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.85, + "lng": 87.96, + "code": "PG048298" + }, + { + "name": "Yadava (Bhojpuri)", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 3.5, + "pop": 8465000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 25.05, + "lng": 84.06, + "code": "PG046313" + }, + { + "name": "Chamar (Bhojpuri)", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 3.5, + "pop": 4550000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 25.65, + "lng": 84.13, + "code": "PG046025" + }, + { + "name": "Mazabi", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 3625000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 30.25, + "lng": 74.91, + "code": "PG041301" + }, + { + "name": "Boro", + "country": "India", + "lang": "Boro (India)", + "rol3": "brx", + "pct_christian": 3.5, + "pop": 1545000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 26.71, + "lng": 89.29, + "code": "PG041371" + }, + { + "name": "Kisan (Kurukh)", + "country": "India", + "lang": "Kurux", + "rol3": "kru", + "pct_christian": 3.5, + "pop": 544000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.1, + "lng": 84.53, + "code": "PG041504" + }, + { + "name": "Chamar (Maithili)", + "country": "India", + "lang": "Maithili", + "rol3": "mai", + "pct_christian": 3.5, + "pop": 430000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 26.09, + "lng": 85.94, + "code": "PG046040" + }, + { + "name": "Lohara", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 3.5, + "pop": 324000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 25.14, + "lng": 87.24, + "code": "PG041542" + }, + { + "name": "Gurung", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 147000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 26.84, + "lng": 90.63, + "code": "PG041693" + }, + { + "name": "Nepali", + "country": "Bhutan", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 131000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 27.13, + "lng": 89.79, + "code": "PG042388" + }, + { + "name": "Beldar (Bhojpuri)", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 3.5, + "pop": 115000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 26.35, + "lng": 83.71, + "code": "PG048209" + }, + { + "name": "Chikwa", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 89500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 23.97, + "lng": 84.3, + "code": "PG041852" + }, + { + "name": "Rajbhar", + "country": "India", + "lang": "Bhojpuri", + "rol3": "bho", + "pct_christian": 3.5, + "pop": 89000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.68, + "lng": 80.47, + "code": "PG042085" + }, + { + "name": "Bhattra (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 79000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 30.98, + "lng": 75.73, + "code": "PG041615" + }, + { + "name": "Damai (Nepali)", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 66500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 26.66, + "lng": 89.08, + "code": "PG041874" + }, + { + "name": "Arain (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 30.37, + "lng": 75.93, + "code": "PG048185" + }, + { + "name": "Binjhia", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 3.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.0, + "lng": 82.34, + "code": "PG042025" + }, + { + "name": "Gond (Sadri) ", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 3.5, + "pop": 30500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.17, + "lng": 85.0, + "code": "PG048262" + }, + { + "name": "Sarki", + "country": "India", + "lang": "Nepali", + "rol3": "npi", + "pct_christian": 3.5, + "pop": 18000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 26.96, + "lng": 88.33, + "code": "PG042059" + }, + { + "name": "Punjabi", + "country": "Singapore", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 15000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Sikhism", + "lat": 1.36, + "lng": 103.82, + "code": "PG010717" + }, + { + "name": "Gorait", + "country": "India", + "lang": "Sadri", + "rol3": "sck", + "pct_christian": 3.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 23.21, + "lng": 85.33, + "code": "PG042169" + }, + { + "name": "Gandhila", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 6600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.34, + "lng": 76.4, + "code": "PG049080" + }, + { + "name": "Boria", + "country": "India", + "lang": "Awadhi", + "rol3": "awa", + "pct_christian": 3.5, + "pop": 5000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 27.09, + "lng": 82.01, + "code": "PG049076" + }, + { + "name": "Sherpa", + "country": "Bhutan", + "lang": "Sherpa", + "rol3": "xsr", + "pct_christian": 3.5, + "pop": 3700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Tibetan", + "lat": 27.49, + "lng": 89.64, + "code": "PG048796" + }, + { + "name": "Pinjara (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 3000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 29.48, + "lng": 76.44, + "code": "PG048167" + }, + { + "name": "Daoli", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 2800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.97, + "lng": 76.55, + "code": "PG049445" + }, + { + "name": "Dayare", + "country": "India", + "lang": "Urdu", + "rol3": "urd", + "pct_christian": 3.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.79, + "lng": 77.53, + "code": "PG049780" + }, + { + "name": "Ahluwalia", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 3.5, + "pop": 1400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 31.39, + "lng": 75.36, + "code": "PG049356" + }, + { + "name": "Dhamin", + "country": "India", + "lang": "Maithili", + "rol3": "mai", + "pct_christian": 3.5, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 25.82, + "lng": 87.13, + "code": "PG049396" + } + ] + }, + "Mali": { + "target_upg": 44, + "target_pop": 22708100, + "target_top_langs": [ + "Bamanankan", + "Soninke", + "Senoufo, Mamara", + "Fulfulde, Maasina" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Dogon", + "country": "Mali", + "lang": "Dogon, Toro So", + "rol3": "dts", + "pct_christian": 3.5, + "pop": 107000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 14.21, + "lng": -3.27, + "code": "PG013545" + }, + { + "name": "Bobo, Black", + "country": "Mali", + "lang": "Konabéré", + "rol3": "bbo", + "pct_christian": 3.5, + "pop": 48500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 12.6, + "lng": -4.54, + "code": "PG013536" + }, + { + "name": "Burkina Faso", + "country": "Canada", + "lang": "Moore", + "rol3": "mos", + "pct_christian": 12.5, + "pop": 425.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 43.83, + "lng": -79.46, + "code": "PG047453" + }, + { + "name": "Mossi", + "country": "Burkina Faso", + "lang": "Moore", + "rol3": "mos", + "pct_christian": 7.5, + "pop": 8335000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 12.73, + "lng": -1.3, + "code": "PG012424" + }, + { + "name": "Mossi", + "country": "Ghana", + "lang": "Moore", + "rol3": "mos", + "pct_christian": 7.5, + "pop": 526000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 5.57, + "lng": -0.22, + "code": "PG013360" + }, + { + "name": "Zaore", + "country": "Burkina Faso", + "lang": "Moore", + "rol3": "mos", + "pct_christian": 7.5, + "pop": 68000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 12.36, + "lng": -1.52, + "code": "PG012427" + }, + { + "name": "Fulfulde Masina", + "country": "Burkina Faso", + "lang": "Fulfulde, Maasina", + "rol3": "ffm", + "pct_christian": 7.5, + "pop": 12500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 13.38, + "lng": -3.94, + "code": "PG012397" + }, + { + "name": "Bambara", + "country": "Cote d’Ivoire", + "lang": "Bamanankan", + "rol3": "bam", + "pct_christian": 3.5, + "pop": 1485000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 9.88, + "lng": -7.05, + "code": "PG013042" + }, + { + "name": "Mossi", + "country": "United States", + "lang": "Moore", + "rol3": "mos", + "pct_christian": 3.5, + "pop": 1100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 40.74, + "lng": -73.72, + "code": "PG047647" + } + ] + }, + "Somalia": { + "target_upg": 20, + "target_pop": 19407100, + "target_top_langs": [ + "Somali", + "Maay", + "Swahili", + "Garre" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Swahili", + "country": "United States", + "lang": "Swahili", + "rol3": "swh", + "pct_christian": 7.5, + "pop": 81500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 34.52, + "lng": -105.83, + "code": "PG047306" + }, + { + "name": "Chagga", + "country": "Tanzania", + "lang": "Swahili", + "rol3": "swh", + "pct_christian": 3.5, + "pop": 1185000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -3.29, + "lng": 37.08, + "code": "PG014916" + }, + { + "name": "Swahili", + "country": "Zambia", + "lang": "Swahili", + "rol3": "swh", + "pct_christian": 3.5, + "pop": 38500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -15.4, + "lng": 28.31, + "code": "PG015634" + }, + { + "name": "Zanzibari", + "country": "South Africa", + "lang": "Swahili", + "rol3": "swh", + "pct_christian": 3.5, + "pop": 1900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -29.84, + "lng": 30.93, + "code": "PG015550" + } + ] + }, + "Malaysia": { + "target_upg": 80, + "target_pop": 18071880, + "target_top_langs": [ + "Malay", + "Negeri Sembilan Malay", + "Bengali", + "Bajau, West Coast" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Chavacano", + "country": "Malaysia", + "lang": "Chavacano", + "rol3": "cbk", + "pct_christian": 62.5, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 4.47, + "lng": 118.57, + "code": "PG009226" + }, + { + "name": "Bundu Dusun", + "country": "Malaysia", + "lang": "Kadazan Dusun", + "rol3": "dtp", + "pct_christian": 45.0, + "pop": 82000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.2, + "lng": 116.43, + "code": "PG018481" + }, + { + "name": "Tutoh Kenyah", + "country": "Malaysia", + "lang": "Long Wat", + "rol3": "ttw", + "pct_christian": 45.0, + "pop": 1500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 3.86, + "lng": 114.62, + "code": "PG019323" + }, + { + "name": "Beketan", + "country": "Malaysia", + "lang": "Bukitan", + "rol3": "bkn", + "pct_christian": 45.0, + "pop": 450.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 2.31, + "lng": 113.01, + "code": "PG009208" + }, + { + "name": "Central Dusun", + "country": "Malaysia", + "lang": "Kadazan Dusun", + "rol3": "dtp", + "pct_christian": 35.0, + "pop": 263000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 5.99, + "lng": 116.62, + "code": "PG018484" + }, + { + "name": "Tagal Murut", + "country": "Malaysia", + "lang": "Murut, Tahol", + "rol3": "mvv", + "pct_christian": 35.0, + "pop": 71000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 4.64, + "lng": 116.14, + "code": "PG009348" + }, + { + "name": "Southern Murut", + "country": "Malaysia", + "lang": "Lundayeh", + "rol3": "lnd", + "pct_christian": 35.0, + "pop": 32500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 4.42, + "lng": 115.51, + "code": "PG019277" + }, + { + "name": "Tambunan Dusun", + "country": "Malaysia", + "lang": "Kadazan Dusun", + "rol3": "dtp", + "pct_christian": 35.0, + "pop": 24000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.68, + "lng": 116.39, + "code": "PG019283" + }, + { + "name": "Madang", + "country": "Malaysia", + "lang": "Kenyah, Mainstream", + "rol3": "xkl", + "pct_christian": 35.0, + "pop": 23500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 3.5, + "lng": 114.32, + "code": "PG009289" + }, + { + "name": "Upper Kinabatangan", + "country": "Malaysia", + "lang": "Kinabatangan, Upper", + "rol3": "dmg", + "pct_christian": 35.0, + "pop": 12000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.42, + "lng": 116.97, + "code": "PG019329" + }, + { + "name": "Central Murut", + "country": "Malaysia", + "lang": "Murut, Keningau", + "rol3": "kxi", + "pct_christian": 35.0, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 5.35, + "lng": 116.23, + "code": "PG018486" + }, + { + "name": "Kalabit", + "country": "Malaysia", + "lang": "Kelabit", + "rol3": "kzi", + "pct_christian": 35.0, + "pop": 6700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 3.76, + "lng": 115.3, + "code": "PG009259" + }, + { + "name": "Western Kenyah", + "country": "Malaysia", + "lang": "Uma’ Lasan", + "rol3": "xky", + "pct_christian": 35.0, + "pop": 3000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 2.06, + "lng": 114.21, + "code": "PG019333" + }, + { + "name": "Sekapan", + "country": "Malaysia", + "lang": "Sekapan", + "rol3": "skp", + "pct_christian": 35.0, + "pop": 1800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 2.6, + "lng": 113.74, + "code": "PG018249" + }, + { + "name": "Tungara", + "country": "Malaysia", + "lang": "Murut, Bookan", + "rol3": "bnb", + "pct_christian": 35.0, + "pop": 650.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 5.28, + "lng": 116.53, + "code": "PG019322" + }, + { + "name": "Bukar Sadong", + "country": "Malaysia", + "lang": "Bidayuh Serian", + "rol3": "sdo", + "pct_christian": 25.0, + "pop": 72500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 1.07, + "lng": 110.62, + "code": "PG009221" + }, + { + "name": "Sungai Dusun", + "country": "Malaysia", + "lang": "Kadazan, Labuk-Kinabatangan", + "rol3": "dtb", + "pct_christian": 25.0, + "pop": 62000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 5.68, + "lng": 116.42, + "code": "PG019280" + }, + { + "name": "Sugut Kadazan", + "country": "Malaysia", + "lang": "Sugut Dusun", + "rol3": "kzs", + "pct_christian": 25.0, + "pop": 19000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.13, + "lng": 117.18, + "code": "PG019279" + }, + { + "name": "Tobilang", + "country": "Malaysia", + "lang": "Tobilung", + "rol3": "tgb", + "pct_christian": 25.0, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.56, + "lng": 116.64, + "code": "PG009362" + }, + { + "name": "Baram Kayan", + "country": "Malaysia", + "lang": "Kayan, Baram", + "rol3": "kys", + "pct_christian": 25.0, + "pop": 10000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 3.53, + "lng": 114.46, + "code": "PG009203" + }, + { + "name": "Sinabu", + "country": "Malaysia", + "lang": "Kinabatangan, Upper", + "rol3": "dmg", + "pct_christian": 25.0, + "pop": 2000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 5.3, + "lng": 116.96, + "code": "PG019271" + }, + { + "name": "Minokok Dusun", + "country": "Malaysia", + "lang": "Minokok", + "rol3": "mqq", + "pct_christian": 25.0, + "pop": 1700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.46, + "lng": 116.8, + "code": "PG018523" + }, + { + "name": "Eurasian", + "country": "Malaysia", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 68500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 3.07, + "lng": 101.64, + "code": "PG020233" + }, + { + "name": "Kimaragan", + "country": "Malaysia", + "lang": "Kimaragang", + "rol3": "kqr", + "pct_christian": 17.5, + "pop": 36000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.53, + "lng": 117.02, + "code": "PG009265" + }, + { + "name": "Eastern Kadazan", + "country": "Malaysia", + "lang": "Kadazan, Labuk-Kinabatangan", + "rol3": "dtb", + "pct_christian": 17.5, + "pop": 31500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 5.58, + "lng": 117.41, + "code": "PG020232" + }, + { + "name": "Tidung", + "country": "Malaysia", + "lang": "Tidung, Northern", + "rol3": "ntd", + "pct_christian": 17.5, + "pop": 24500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.34, + "lng": 117.7, + "code": "PG019289" + }, + { + "name": "Tudan Dusun", + "country": "Malaysia", + "lang": "Kadazan Dusun", + "rol3": "dtp", + "pct_christian": 17.5, + "pop": 17000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.01, + "lng": 116.16, + "code": "PG019321" + }, + { + "name": "Tambanua", + "country": "Malaysia", + "lang": "Tombonuo", + "rol3": "txa", + "pct_christian": 17.5, + "pop": 16500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 6.39, + "lng": 117.23, + "code": "PG019282" + }, + { + "name": "Tempasuk Dusun", + "country": "Malaysia", + "lang": "Kadazan Dusun", + "rol3": "dtp", + "pct_christian": 17.5, + "pop": 14500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.36, + "lng": 116.55, + "code": "PG009358" + }, + { + "name": "Balau", + "country": "Malaysia", + "lang": "Iban", + "rol3": "iba", + "pct_christian": 17.5, + "pop": 12000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 1.32, + "lng": 110.85, + "code": "PG009199" + }, + { + "name": "Kwijau Dusun", + "country": "Malaysia", + "lang": "Kuijau", + "rol3": "dkr", + "pct_christian": 17.5, + "pop": 12000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.43, + "lng": 116.24, + "code": "PG009274" + }, + { + "name": "Dusun Segama", + "country": "Malaysia", + "lang": "Kinabatangan, Upper", + "rol3": "dmg", + "pct_christian": 17.5, + "pop": 1100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 5.16, + "lng": 118.34, + "code": "PG020229" + }, + { + "name": "Filipino", + "country": "Malaysia", + "lang": "Tagalog", + "rol3": "tgl", + "pct_christian": 12.5, + "pop": 874000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 3.07, + "lng": 101.64, + "code": "PG018269" + }, + { + "name": "Sea Dayak", + "country": "Malaysia", + "lang": "Iban", + "rol3": "iba", + "pct_christian": 12.5, + "pop": 680000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 2.27, + "lng": 112.58, + "code": "PG009325" + }, + { + "name": "Biatah", + "country": "Malaysia", + "lang": "Bidayuh, Biatah", + "rol3": "bth", + "pct_christian": 12.5, + "pop": 91000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 1.41, + "lng": 110.32, + "code": "PG009211" + }, + { + "name": "Rungus Dusun", + "country": "Malaysia", + "lang": "Rungus", + "rol3": "drg", + "pct_christian": 12.5, + "pop": 68000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 6.84, + "lng": 116.91, + "code": "PG009320" + }, + { + "name": "Sarawak Dayak", + "country": "Malaysia", + "lang": "Bidayuh, Bau", + "rol3": "sne", + "pct_christian": 12.5, + "pop": 31500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 1.46, + "lng": 110.08, + "code": "PG009324" + }, + { + "name": "Tutong", + "country": "Malaysia", + "lang": "Bisaya, Brunei", + "rol3": "bsb", + "pct_christian": 12.5, + "pop": 29000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 4.35, + "lng": 114.68, + "code": "PG019324" + }, + { + "name": "Tuaran Dusun", + "country": "Malaysia", + "lang": "Lotud", + "rol3": "dtr", + "pct_christian": 12.5, + "pop": 11000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.11, + "lng": 116.24, + "code": "PG019320" + }, + { + "name": "Lanas Lobu", + "country": "Malaysia", + "lang": "Lobu, Lanas", + "rol3": "ruu", + "pct_christian": 12.5, + "pop": 6100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.44, + "lng": 116.54, + "code": "PG009276" + }, + { + "name": "Millikin", + "country": "Malaysia", + "lang": "Remun", + "rol3": "lkj", + "pct_christian": 12.5, + "pop": 5500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 1.08, + "lng": 110.66, + "code": "PG009300" + }, + { + "name": "Peranakan", + "country": "Malaysia", + "lang": "Malay", + "rol3": "zlm", + "pct_christian": 12.5, + "pop": 5000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 3.4, + "lng": 101.64, + "code": "PG018232" + }, + { + "name": "Keningau Dusun", + "country": "Malaysia", + "lang": "Malay, Sabah", + "rol3": "msi", + "pct_christian": 12.5, + "pop": 4400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.4, + "lng": 116.19, + "code": "PG019337" + }, + { + "name": "Baokan", + "country": "Malaysia", + "lang": "Murut, Bookan", + "rol3": "bnb", + "pct_christian": 12.5, + "pop": 4200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.28, + "lng": 116.54, + "code": "PG009202" + }, + { + "name": "Tampias Lobu", + "country": "Malaysia", + "lang": "Lobu, Tampias", + "rol3": "low", + "pct_christian": 12.5, + "pop": 4000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.74, + "lng": 116.8, + "code": "PG019284" + }, + { + "name": "Southern Kota Marudu", + "country": "Malaysia", + "lang": "Kadazan Dusun", + "rol3": "dtp", + "pct_christian": 12.5, + "pop": 2800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.46, + "lng": 116.83, + "code": "PG019276" + }, + { + "name": "Dusun - Murut", + "country": "Malaysia", + "lang": "Kadazan Dusun", + "rol3": "dtp", + "pct_christian": 12.5, + "pop": 2600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.34, + "lng": 116.17, + "code": "PG020231" + }, + { + "name": "Klias River Kadazan", + "country": "Malaysia", + "lang": "Kadazan, Klias River", + "rol3": "kqt", + "pct_christian": 12.5, + "pop": 2500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.44, + "lng": 115.63, + "code": "PG009270" + }, + { + "name": "Han Chinese, Min Nan", + "country": "Malaysia", + "lang": "Chinese, Min Nan", + "rol3": "nan", + "pct_christian": 7.5, + "pop": 2375000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 3.94, + "lng": 102.06, + "code": "PG046598" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Malaysia", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 1900000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 3.65, + "lng": 101.56, + "code": "PG046594" + }, + { + "name": "Malayali", + "country": "Malaysia", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 206000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 3.07, + "lng": 101.64, + "code": "PG020224" + }, + { + "name": "Telugu", + "country": "Malaysia", + "lang": "Telugu", + "rol3": "tel", + "pct_christian": 7.5, + "pop": 137000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 3.07, + "lng": 101.62, + "code": "PG009356" + }, + { + "name": "Han Chinese, Hainanese", + "country": "Malaysia", + "lang": "Hainanese", + "rol3": "hnm", + "pct_christian": 7.5, + "pop": 79000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 3.07, + "lng": 101.64, + "code": "PG046595" + }, + { + "name": "Idahan Dusun", + "country": "Malaysia", + "lang": "Ida’an", + "rol3": "dbj", + "pct_christian": 7.5, + "pop": 18500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.38, + "lng": 118.38, + "code": "PG009252" + }, + { + "name": "Timogun Murut", + "country": "Malaysia", + "lang": "Murut, Timugon", + "rol3": "tih", + "pct_christian": 7.5, + "pop": 18500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 5.22, + "lng": 115.85, + "code": "PG009361" + }, + { + "name": "Kinabatangan Sungai", + "country": "Malaysia", + "lang": "Kadazan, Labuk-Kinabatangan", + "rol3": "dtb", + "pct_christian": 7.5, + "pop": 18000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 5.54, + "lng": 117.88, + "code": "PG019338" + }, + { + "name": "Lara", + "country": "Malaysia", + "lang": "Bakati’, Rara", + "rol3": "lra", + "pct_christian": 7.5, + "pop": 17500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 1.59, + "lng": 109.77, + "code": "PG009280" + }, + { + "name": "Penan", + "country": "Malaysia", + "lang": "Penan, Eastern", + "rol3": "pez", + "pct_christian": 7.5, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 3.59, + "lng": 114.98, + "code": "PG018231" + }, + { + "name": "Tatana", + "country": "Malaysia", + "lang": "Tatana", + "rol3": "txx", + "pct_christian": 7.5, + "pop": 13000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.47, + "lng": 115.52, + "code": "PG019285" + }, + { + "name": "Kalabuan", + "country": "Malaysia", + "lang": "Kinabatangan, Upper", + "rol3": "dmg", + "pct_christian": 7.5, + "pop": 12500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 5.4, + "lng": 117.02, + "code": "PG009260" + }, + { + "name": "Sembakung Murut", + "country": "Malaysia", + "lang": "Murut, Sembakung", + "rol3": "sbr", + "pct_christian": 7.5, + "pop": 10500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 4.38, + "lng": 116.43, + "code": "PG009334" + }, + { + "name": "Sebuyau", + "country": "Malaysia", + "lang": "Iban", + "rol3": "iba", + "pct_christian": 7.5, + "pop": 10500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 1.45, + "lng": 110.55, + "code": "PG018247" + }, + { + "name": "Bintulu", + "country": "Malaysia", + "lang": "Vaie", + "rol3": "bny", + "pct_christian": 7.5, + "pop": 10000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 3.23, + "lng": 112.98, + "code": "PG009212" + }, + { + "name": "Selekau", + "country": "Malaysia", + "lang": "Kendayan", + "rol3": "knx", + "pct_christian": 7.5, + "pop": 10000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 1.71, + "lng": 109.77, + "code": "PG018250" + }, + { + "name": "Rejang Kayan", + "country": "Malaysia", + "lang": "Kayan, Rejang", + "rol3": "ree", + "pct_christian": 7.5, + "pop": 7400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 2.55, + "lng": 113.9, + "code": "PG018236" + }, + { + "name": "Sonsogon", + "country": "Malaysia", + "lang": "Kimaragang", + "rol3": "kqr", + "pct_christian": 7.5, + "pop": 4800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.5, + "lng": 116.86, + "code": "PG019275" + }, + { + "name": "Sibop Kenyah", + "country": "Malaysia", + "lang": "Sebop", + "rol3": "sib", + "pct_christian": 7.5, + "pop": 4200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 3.35, + "lng": 114.3, + "code": "PG019270" + }, + { + "name": "Kalabakan Murut", + "country": "Malaysia", + "lang": "Murut, Kalabakan", + "rol3": "kve", + "pct_christian": 7.5, + "pop": 3400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 4.53, + "lng": 117.34, + "code": "PG009258" + }, + { + "name": "Serudung Murut", + "country": "Malaysia", + "lang": "Murut, Serudung", + "rol3": "srk", + "pct_christian": 7.5, + "pop": 2000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 4.37, + "lng": 117.31, + "code": "PG009338" + }, + { + "name": "Saban", + "country": "Malaysia", + "lang": "Sa’ban", + "rol3": "snv", + "pct_christian": 7.5, + "pop": 1800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 3.22, + "lng": 115.4, + "code": "PG009321" + }, + { + "name": "Dumpas", + "country": "Malaysia", + "lang": "Dumpas", + "rol3": "dmv", + "pct_christian": 7.5, + "pop": 1700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 5.97, + "lng": 117.35, + "code": "PG009244" + }, + { + "name": "Rejang Punan", + "country": "Malaysia", + "lang": "Punan Bah-Biau", + "rol3": "pna", + "pct_christian": 7.5, + "pop": 1100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 2.09, + "lng": 113.39, + "code": "PG009319" + }, + { + "name": "Tring", + "country": "Malaysia", + "lang": "Tring", + "rol3": "tgq", + "pct_christian": 7.5, + "pop": 900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 3.98, + "lng": 114.64, + "code": "PG019319" + }, + { + "name": "Selungai Murut", + "country": "Malaysia", + "lang": "Murut, Selungai", + "rol3": "slg", + "pct_christian": 7.5, + "pop": 600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 4.52, + "lng": 116.43, + "code": "PG009330" + }, + { + "name": "Tamil", + "country": "Malaysia", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 3.5, + "pop": 2600000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 3.9, + "lng": 104.29, + "code": "PG009351" + }, + { + "name": "Han Chinese, English", + "country": "Malaysia", + "lang": "English", + "rol3": "eng", + "pct_christian": 3.5, + "pop": 2395000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 3.04, + "lng": 102.22, + "code": "PG046932" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Malaysia", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 3.5, + "pop": 1015000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 4.14, + "lng": 101.06, + "code": "PG046597" + }, + { + "name": "Indonesian", + "country": "Malaysia", + "lang": "Indonesian", + "rol3": "ind", + "pct_christian": 3.5, + "pop": 343000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 3.07, + "lng": 101.64, + "code": "PG020239" + }, + { + "name": "Melanau", + "country": "Malaysia", + "lang": "Melanau, Central", + "rol3": "mel", + "pct_christian": 3.5, + "pop": 159000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 2.54, + "lng": 111.89, + "code": "PG018518" + }, + { + "name": "Coastal Kadazan", + "country": "Malaysia", + "lang": "Papar", + "rol3": "dpp", + "pct_christian": 3.5, + "pop": 137000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 5.43, + "lng": 115.5, + "code": "PG020225" + }, + { + "name": "Vietnamese Migrant Workers", + "country": "Malaysia", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 85000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Confucianism", + "lat": 5.35, + "lng": 100.41, + "code": "PG046599" + }, + { + "name": "Kanarese", + "country": "Malaysia", + "lang": "Kannada", + "rol3": "kan", + "pct_christian": 3.5, + "pop": 72000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 1.51, + "lng": 103.76, + "code": "PG019334" + }, + { + "name": "Semai", + "country": "Malaysia", + "lang": "Semai", + "rol3": "sea", + "pct_christian": 3.5, + "pop": 60000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 4.11, + "lng": 101.3, + "code": "PG009331" + }, + { + "name": "Sinhalese", + "country": "Malaysia", + "lang": "Sinhala", + "rol3": "sin", + "pct_christian": 3.5, + "pop": 36000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 3.07, + "lng": 101.64, + "code": "PG018261" + }, + { + "name": "Burmese", + "country": "Malaysia", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 3.5, + "pop": 32500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Theravada", + "lat": 3.07, + "lng": 101.64, + "code": "PG018483" + }, + { + "name": "Temuan", + "country": "Malaysia", + "lang": "Temuan", + "rol3": "tmw", + "pct_christian": 3.5, + "pop": 22500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 3.56, + "lng": 101.72, + "code": "PG009359" + }, + { + "name": "Daro - Matu", + "country": "Malaysia", + "lang": "Melanau, Daro-Matu", + "rol3": "dro", + "pct_christian": 3.5, + "pop": 18500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 2.62, + "lng": 111.54, + "code": "PG020227" + }, + { + "name": "British", + "country": "Malaysia", + "lang": "English", + "rol3": "eng", + "pct_christian": 3.5, + "pop": 17000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated", + "lat": 3.07, + "lng": 101.62, + "code": "PG009217" + }, + { + "name": "Japanese", + "country": "Malaysia", + "lang": "Japanese", + "rol3": "jpn", + "pct_christian": 3.5, + "pop": 17000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Shinbutso-shugo", + "lat": 3.07, + "lng": 101.64, + "code": "PG020241" + }, + { + "name": "Semelai", + "country": "Malaysia", + "lang": "Semelai", + "rol3": "sza", + "pct_christian": 3.5, + "pop": 8000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 3.05, + "lng": 102.62, + "code": "PG009335" + }, + { + "name": "Peluan", + "country": "Malaysia", + "lang": "Murut, Paluan", + "rol3": "plz", + "pct_christian": 3.5, + "pop": 5700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 5.12, + "lng": 116.24, + "code": "PG009313" + }, + { + "name": "Jah Hut", + "country": "Malaysia", + "lang": "Jah Hut", + "rol3": "jah", + "pct_christian": 3.5, + "pop": 5300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 3.59, + "lng": 102.33, + "code": "PG009254" + }, + { + "name": "Semoq Beri", + "country": "Malaysia", + "lang": "Semaq Beri", + "rol3": "szc", + "pct_christian": 3.5, + "pop": 5300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 4.06, + "lng": 102.85, + "code": "PG009333" + }, + { + "name": "Narom", + "country": "Malaysia", + "lang": "Narom", + "rol3": "nrm", + "pct_christian": 3.5, + "pop": 5200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 4.21, + "lng": 113.93, + "code": "PG009306" + }, + { + "name": "Lower Murut", + "country": "Malaysia", + "lang": "Murut, Timugon", + "rol3": "tih", + "pct_christian": 3.5, + "pop": 3400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.18, + "lng": 115.93, + "code": "PG020131" + }, + { + "name": "Pandewan Murut", + "country": "Malaysia", + "lang": "Murut, Paluan", + "rol3": "plz", + "pct_christian": 3.5, + "pop": 2900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.13, + "lng": 116.22, + "code": "PG018226" + }, + { + "name": "Murik Kayan", + "country": "Malaysia", + "lang": "Murik (Malaysia)", + "rol3": "mxr", + "pct_christian": 3.5, + "pop": 2700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 3.6, + "lng": 114.41, + "code": "PG009305" + }, + { + "name": "Bakong Kenyah", + "country": "Malaysia", + "lang": "Kenyah, Mainstream", + "rol3": "xkl", + "pct_christian": 3.5, + "pop": 2100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 1.48, + "lng": 114.55, + "code": "PG009198" + }, + { + "name": "Bateq", + "country": "Malaysia", + "lang": "Batek", + "rol3": "btq", + "pct_christian": 3.5, + "pop": 1800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 4.68, + "lng": 102.47, + "code": "PG009204" + }, + { + "name": "Bajau Bukit", + "country": "Malaysia", + "lang": "Papar", + "rol3": "dpp", + "pct_christian": 3.5, + "pop": 1500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 5.6, + "lng": 115.6, + "code": "PG018466" + }, + { + "name": "Berawan", + "country": "Malaysia", + "lang": "Berawan, West", + "rol3": "zbw", + "pct_christian": 3.5, + "pop": 1400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 4.0, + "lng": 114.71, + "code": "PG009210" + }, + { + "name": "Orang Seletar", + "country": "Malaysia", + "lang": "Orang Seletar", + "rol3": "ors", + "pct_christian": 3.5, + "pop": 1300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 1.6, + "lng": 104.13, + "code": "PG018223" + }, + { + "name": "Kayaman", + "country": "Malaysia", + "lang": "Kajaman", + "rol3": "kag", + "pct_christian": 3.5, + "pop": 1200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 2.7, + "lng": 114.06, + "code": "PG009262" + }, + { + "name": "Siduan", + "country": "Malaysia", + "lang": "Melanau, Sibu", + "rol3": "sdx", + "pct_christian": 3.5, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 2.33, + "lng": 111.76, + "code": "PG009341" + }, + { + "name": "Kanowit", + "country": "Malaysia", + "lang": "Melanau, Kanowit-Tanjong", + "rol3": "kxn", + "pct_christian": 3.5, + "pop": 425.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 2.06, + "lng": 112.25, + "code": "PG009261" + }, + { + "name": "Lanoh", + "country": "Malaysia", + "lang": "Lanoh", + "rol3": "lnh", + "pct_christian": 3.5, + "pop": 350.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 5.1, + "lng": 101.03, + "code": "PG009279" + }, + { + "name": "Ukit", + "country": "Malaysia", + "lang": "Ukit", + "rol3": "umi", + "pct_christian": 3.5, + "pop": 300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 2.71, + "lng": 113.04, + "code": "PG019326" + }, + { + "name": "Tanjong", + "country": "Malaysia", + "lang": "Melanau, Kanowit-Tanjong", + "rol3": "kxn", + "pct_christian": 3.5, + "pop": 250.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 2.06, + "lng": 112.25, + "code": "PG009353" + }, + { + "name": "Sian", + "country": "Malaysia", + "lang": "Sihan (Malaysia)", + "rol3": "spg", + "pct_christian": 3.5, + "pop": 175.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 2.7, + "lng": 113.83, + "code": "PG009339" + }, + { + "name": "Batu Punan", + "country": "Malaysia", + "lang": "Punan Batu", + "rol3": "pnm", + "pct_christian": 3.5, + "pop": 125.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 4.21, + "lng": 114.35, + "code": "PG018470" + }, + { + "name": "Orang Kanaq", + "country": "Malaysia", + "lang": "Malay", + "rol3": "zlm", + "pct_christian": 3.5, + "pop": 80.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 1.88, + "lng": 104.03, + "code": "PG018222" + }, + { + "name": "Lemo", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 75.0, + "pop": 2300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 25.84, + "lng": 98.78, + "code": "PG007252" + }, + { + "name": "Soria", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 62.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 23.2, + "lng": 77.09, + "code": "PG048955" + }, + { + "name": "Rathodia", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 62.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 22.3, + "lng": 73.39, + "code": "PG048948" + }, + { + "name": "Bagti", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 62.5, + "pop": 275.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 23.28, + "lng": 86.43, + "code": "PG049044" + }, + { + "name": "Meghval", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 45.0, + "pop": 377000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 26.87, + "lng": 73.03, + "code": "PG041328" + }, + { + "name": "Gounder", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 25.0, + "pop": 60000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 11.68, + "lng": 78.22, + "code": "PG041906" + }, + { + "name": "Sediq", + "country": "Taiwan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 25.0, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 24.02, + "lng": 121.35, + "code": "PG007536" + }, + { + "name": "Chamail", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 25.0, + "pop": 1200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 25.48, + "lng": 85.95, + "code": "PG049469" + }, + { + "name": "Balmiki (Punjabi)", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 17.5, + "pop": 1295000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.44, + "lng": 75.81, + "code": "PG048195" + }, + { + "name": "Nadia", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 17.5, + "pop": 69500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG041830" + }, + { + "name": "Badhi", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 17.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 29.95, + "lng": 77.55, + "code": "PG041480" + }, + { + "name": "Sutar (Gujarati)", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 17.5, + "pop": 11000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 21.4, + "lng": 71.23, + "code": "PG048301" + }, + { + "name": "Han Chinese", + "country": "New Zealand", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 214000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -36.89, + "lng": 174.78, + "code": "PG018495" + }, + { + "name": "Senva", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 12.5, + "pop": 161000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG041682" + }, + { + "name": "Chakravar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 12.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 8.62, + "lng": 77.0, + "code": "PG041956" + }, + { + "name": "Bawa Dedh", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 12.5, + "pop": 34500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 22.72, + "lng": 72.18, + "code": "PG042035" + }, + { + "name": "Han Chinese, Min Nan", + "country": "Canada", + "lang": "Chinese, Min Nan", + "rol3": "nan", + "pct_christian": 12.5, + "pop": 28500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 45.42, + "lng": -75.69, + "code": "PG047427" + }, + { + "name": "Samban", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 12.5, + "pop": 24500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 8.7, + "lng": 77.49, + "code": "PG041752" + }, + { + "name": "Mehtar", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 12.5, + "pop": 20000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 16.22, + "lng": 75.63, + "code": "PG042116" + }, + { + "name": "Palliyan", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 12.5, + "pop": 4800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 9.89, + "lng": 77.09, + "code": "PG049215" + }, + { + "name": "Gagra", + "country": "India", + "lang": "Punjabi, Eastern", + "rol3": "pan", + "pct_christian": 12.5, + "pop": 700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 30.84, + "lng": 75.86, + "code": "PG049079" + }, + { + "name": "Gharrami", + "country": "India", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 12.5, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 28.64, + "lng": 77.12, + "code": "PG049392" + }, + { + "name": "Han Chinese", + "country": "Kiribati", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 125.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 1.37, + "lng": 173.11, + "code": "PG009087" + }, + { + "name": "Han Chinese", + "country": "Tuvalu", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 12.5, + "pop": 50.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -8.5, + "lng": 179.19, + "code": "PG018319" + }, + { + "name": "Han Chinese, Mandarin", + "country": "China", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 901450000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 37.37, + "lng": 110.73, + "code": "PG006802" + }, + { + "name": "Han Chinese, Min Nan", + "country": "China", + "lang": "Chinese, Min Nan", + "rol3": "nan", + "pct_christian": 7.5, + "pop": 35550000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 23.42, + "lng": 115.05, + "code": "PG006805" + }, + { + "name": "Nadar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 7.5, + "pop": 6365000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 11.17, + "lng": 77.82, + "code": "PG041309" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Taiwan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 4635000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 24.86, + "lng": 121.36, + "code": "PG007518" + }, + { + "name": "Santal (Bengali)", + "country": "India", + "lang": "Bengali", + "rol3": "ben", + "pct_christian": 7.5, + "pop": 3350000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 24.0, + "lng": 88.81, + "code": "PG046352" + }, + { + "name": "Vellalar", + "country": "India", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 7.5, + "pop": 3080000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.78, + "lng": 77.78, + "code": "PG041493" + }, + { + "name": "Han Chinese, Mandarin", + "country": "United States", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 2345000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 45.74, + "lng": -114.4, + "code": "PG043261" + }, + { + "name": "Han Chinese, Min Nan", + "country": "Singapore", + "lang": "Chinese, Min Nan", + "rol3": "nan", + "pct_christian": 7.5, + "pop": 1785000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 1.36, + "lng": 103.82, + "code": "PG020729" + }, + { + "name": "Han Chinese", + "country": "Vietnam", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 1620000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 21.04, + "lng": 106.1, + "code": "PG033473" + }, + { + "name": "Indian - Hindu", + "country": "South Africa", + "lang": "Hindi", + "rol3": "hin", + "pct_christian": 7.5, + "pop": 1365000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": -28.9, + "lng": 26.75, + "code": "PG042180" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Canada", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 1055000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 46.93, + "lng": -92.67, + "code": "PG043404" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Japan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 736000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 35.72, + "lng": 137.14, + "code": "PG048925" + }, + { + "name": "Han Chinese", + "country": "Australia", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 670000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -33.75, + "lng": 144.18, + "code": "PG033443" + }, + { + "name": "Han Chinese", + "country": "Myanmar", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 650000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 16.85, + "lng": 96.15, + "code": "PG022047" + }, + { + "name": "Bhangi (Gujarati)", + "country": "India", + "lang": "Gujarati", + "rol3": "guj", + "pct_christian": 7.5, + "pop": 600000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 22.76, + "lng": 72.13, + "code": "PG048218" + } + ] + }, + "Russia": { + "target_upg": 120, + "target_pop": 17727020, + "target_top_langs": [ + "Tatar", + "Chechen", + "Bashkort", + "Avar" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Han Chinese, Mandarin", + "country": "Russian Federation", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 62000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 51.07, + "lng": 119.29, + "code": "PG048686" + }, + { + "name": "Ukrainian", + "country": "Russian Federation", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 1120000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 51.59, + "lng": 82.8, + "code": "PG048814" + }, + { + "name": "Jew", + "country": "Russian Federation", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 208000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 52.97, + "lng": 74.32, + "code": "PG042910" + }, + { + "name": "Kurd, Northern", + "country": "Russian Federation", + "lang": "Kurdish, Northern", + "rol3": "kmr", + "pct_christian": 3.5, + "pop": 35000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Shia", + "lat": 44.63, + "lng": 39.24, + "code": "PG024465" + }, + { + "name": "Vietnamese", + "country": "Thailand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 25.0, + "pop": 119000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": 13.76, + "lng": 100.56, + "code": "PG010933" + }, + { + "name": "Russian", + "country": "Moldova", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 17.5, + "pop": 133000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.13, + "lng": 29.34, + "code": "PG000867" + }, + { + "name": "Korean", + "country": "Uzbekistan", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 12.5, + "pop": 254000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.31, + "lng": 69.26, + "code": "PG024684" + }, + { + "name": "Finn", + "country": "Canada", + "lang": "Finnish", + "rol3": "fin", + "pct_christian": 12.5, + "pop": 36500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 47.13, + "lng": -83.66, + "code": "PG043394" + }, + { + "name": "Armenian", + "country": "United Kingdom", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 12.5, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000627" + }, + { + "name": "Saami, Aanaar", + "country": "Finland", + "lang": "Finnish", + "rol3": "fin", + "pct_christian": 12.5, + "pop": 750.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 69.11, + "lng": 27.17, + "code": "PG000110" + }, + { + "name": "Vietnamese", + "country": "Australia", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 174000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": -33.38, + "lng": 143.4, + "code": "PG008087" + }, + { + "name": "Russian", + "country": "Australia", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 7.5, + "pop": 28500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.52, + "lng": 142.46, + "code": "PG008063" + }, + { + "name": "Vietnamese", + "country": "New Zealand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 4900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": -36.89, + "lng": 174.78, + "code": "PG018514" + }, + { + "name": "Gelao", + "country": "Vietnam", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 23.08, + "lng": 105.2, + "code": "PG011133" + }, + { + "name": "Russian", + "country": "Ukraine", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 7080000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.69, + "lng": 34.82, + "code": "PG042915" + }, + { + "name": "Finn", + "country": "Finland", + "lang": "Finnish", + "rol3": "fin", + "pct_christian": 3.5, + "pop": 4975000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 64.5, + "lng": 26.27, + "code": "PG000109" + }, + { + "name": "Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 260000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.48, + "lng": 12.44, + "code": "PG049403" + }, + { + "name": "Finn", + "country": "Sweden", + "lang": "Finnish", + "rol3": "fin", + "pct_christian": 3.5, + "pop": 223000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 58.52, + "lng": 14.92, + "code": "PG000553" + }, + { + "name": "Armenian", + "country": "Lebanon", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 220000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 33.87, + "lng": 35.58, + "code": "PG048928" + }, + { + "name": "Russian", + "country": "Lithuania", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 155000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 55.25, + "lng": 24.5, + "code": "PG000853" + }, + { + "name": "Kinh", + "country": "Laos", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 138000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 17.97, + "lng": 102.64, + "code": "PG020963" + }, + { + "name": "Armenian", + "country": "Iran", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 113000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 38.14, + "lng": 46.37, + "code": "PG024130" + }, + { + "name": "Jew, Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 99500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Judaism", + "lat": 52.5, + "lng": 13.4, + "code": "PG046578" + }, + { + "name": "Vietnamese Migrant Workers", + "country": "Malaysia", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 85000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Confucianism", + "lat": 5.35, + "lng": 100.41, + "code": "PG046599" + }, + { + "name": "Russian", + "country": "United Kingdom", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 64000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000675" + }, + { + "name": "Armenian", + "country": "Turkiye", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 41.05, + "lng": 28.9, + "code": "PG024538" + }, + { + "name": "Finn", + "country": "United States", + "lang": "Finnish", + "rol3": "fin", + "pct_christian": 3.5, + "pop": 39000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 46.89, + "lng": -88.69, + "code": "PG043240" + }, + { + "name": "Vietnamese", + "country": "Netherlands", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 8800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": 52.47, + "lng": 5.36, + "code": "PG000445" + }, + { + "name": "Belarusian", + "country": "Argentina", + "lang": "Belarusian", + "rol3": "bel", + "pct_christian": 3.5, + "pop": 4600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -34.65, + "lng": -58.56, + "code": "PG017330" + } + ] + }, + "Cambodia": { + "target_upg": 19, + "target_pop": 17466400, + "target_top_langs": [ + "Khmer", + "Vietnamese", + "Cham, Western", + "Chinese, Min Nan" + ], + "target_top_religion": "Buddhism", + "neighbors": [ + { + "name": "Thmaun", + "country": "Cambodia", + "lang": "Undetermined", + "rol3": "und", + "pct_christian": 45.0, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 13.12, + "lng": 106.43, + "code": "PG022376" + }, + { + "name": "Stieng", + "country": "Cambodia", + "lang": "Stieng, Bulo", + "rol3": "sti", + "pct_christian": 17.5, + "pop": 6500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 12.11, + "lng": 106.45, + "code": "PG008194" + }, + { + "name": "Jarai", + "country": "Cambodia", + "lang": "Jarai", + "rol3": "jra", + "pct_christian": 7.5, + "pop": 21000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 13.64, + "lng": 107.44, + "code": "PG020437" + }, + { + "name": "Kachok", + "country": "Cambodia", + "lang": "Kachok", + "rol3": "xkk", + "pct_christian": 7.5, + "pop": 3900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 13.93, + "lng": 107.31, + "code": "PG020439" + }, + { + "name": "Tamil", + "country": "Cambodia", + "lang": "Tamil", + "rol3": "tam", + "pct_christian": 7.5, + "pop": 1800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 11.55, + "lng": 104.91, + "code": "PG008196" + }, + { + "name": "Han Chinese", + "country": "Cambodia", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 3.5, + "pop": 519000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 11.55, + "lng": 104.87, + "code": "PG033445" + }, + { + "name": "Phnong", + "country": "Cambodia", + "lang": "Mnong, Central", + "rol3": "cmo", + "pct_christian": 3.5, + "pop": 47500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 12.77, + "lng": 106.83, + "code": "PG020443" + }, + { + "name": "Brao", + "country": "Cambodia", + "lang": "Brao", + "rol3": "brb", + "pct_christian": 3.5, + "pop": 9000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 14.32, + "lng": 107.24, + "code": "PG018251" + }, + { + "name": "Khmer Keh", + "country": "Cambodia", + "lang": "Khmer, Northern", + "rol3": "kxm", + "pct_christian": 3.5, + "pop": 5200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Buddhism - Folk", + "lat": 14.12, + "lng": 106.34, + "code": "PG047854" + }, + { + "name": "Rhade", + "country": "United States", + "lang": "Rade", + "rol3": "rad", + "pct_christian": 62.5, + "pop": 250.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 35.17, + "lng": -80.8, + "code": "PG050362" + }, + { + "name": "Rhade", + "country": "Vietnam", + "lang": "Rade", + "rol3": "rad", + "pct_christian": 45.0, + "pop": 331000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 12.96, + "lng": 108.31, + "code": "PG011211" + }, + { + "name": "Vietnamese", + "country": "Thailand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 25.0, + "pop": 119000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": 13.76, + "lng": 100.56, + "code": "PG010933" + }, + { + "name": "Burmese", + "country": "Germany", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 25.0, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 50.0, + "lng": 8.01, + "code": "PG033529" + }, + { + "name": "Barmi", + "country": "India", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 17.5, + "pop": 600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 12.6, + "lng": 92.83, + "code": "PG048889" + }, + { + "name": "Sin", + "country": "Laos", + "lang": "Lao", + "rol3": "lao", + "pct_christian": 12.5, + "pop": 300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 18.06, + "lng": 105.09, + "code": "PG050561" + }, + { + "name": "Vietnamese", + "country": "Australia", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 174000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": -33.38, + "lng": 143.4, + "code": "PG008087" + }, + { + "name": "Vietnamese", + "country": "New Zealand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 4900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": -36.89, + "lng": 174.78, + "code": "PG018514" + }, + { + "name": "Gelao", + "country": "Vietnam", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 23.08, + "lng": 105.2, + "code": "PG011133" + }, + { + "name": "Kinh", + "country": "Laos", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 138000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 17.97, + "lng": 102.64, + "code": "PG020963" + }, + { + "name": "Vietnamese Migrant Workers", + "country": "Malaysia", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 85000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Confucianism", + "lat": 5.35, + "lng": 100.41, + "code": "PG046599" + }, + { + "name": "Burmese", + "country": "Malaysia", + "lang": "Burmese", + "rol3": "mya", + "pct_christian": 3.5, + "pop": 32500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 3.07, + "lng": 101.64, + "code": "PG018483" + }, + { + "name": "Lao", + "country": "Myanmar", + "lang": "Lao", + "rol3": "lao", + "pct_christian": 3.5, + "pop": 26000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 16.85, + "lng": 96.15, + "code": "PG009467" + }, + { + "name": "Vietnamese", + "country": "Netherlands", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 8800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": 52.47, + "lng": 5.36, + "code": "PG000445" + } + ] + }, + "Kazakhstan": { + "target_upg": 39, + "target_pop": 16547800, + "target_top_langs": [ + "Kazakh", + "Uzbek, Northern", + "Uyghur", + "Tatar" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Latvian", + "country": "Kazakhstan", + "lang": "Latvian, Standard", + "rol3": "lvs", + "pct_christian": 17.5, + "pop": 2400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated", + "lat": 43.29, + "lng": 76.91, + "code": "PG024285" + }, + { + "name": "Ukrainian", + "country": "Kazakhstan", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 12.5, + "pop": 415000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 48.48, + "lng": 71.3, + "code": "PG024330" + }, + { + "name": "Korean", + "country": "Kazakhstan", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 132000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 43.29, + "lng": 76.91, + "code": "PG024281" + }, + { + "name": "Pole", + "country": "Kazakhstan", + "lang": "Polish", + "rol3": "pol", + "pct_christian": 12.5, + "pop": 62000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 43.29, + "lng": 76.91, + "code": "PG024292" + }, + { + "name": "Han Chinese, Mandarin", + "country": "Kazakhstan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 3.5, + "pop": 6500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 51.17, + "lng": 71.45, + "code": "PG049243" + }, + { + "name": "Karakalpak", + "country": "Kazakhstan", + "lang": "Karakalpak", + "rol3": "kaa", + "pct_christian": 3.5, + "pop": 1900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 45.62, + "lng": 62.06, + "code": "PG024276" + }, + { + "name": "Russian", + "country": "Moldova", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 17.5, + "pop": 133000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.13, + "lng": 29.34, + "code": "PG000867" + }, + { + "name": "Korean", + "country": "Uzbekistan", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 12.5, + "pop": 254000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.31, + "lng": 69.26, + "code": "PG024684" + }, + { + "name": "Romani, Sinte", + "country": "Canada", + "lang": "Romani, Sinte", + "rol3": "rmo", + "pct_christian": 12.5, + "pop": 3900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 45.52, + "lng": -73.68, + "code": "PG043471" + }, + { + "name": "Armenian", + "country": "United Kingdom", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 12.5, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000627" + }, + { + "name": "Estonian", + "country": "Estonia", + "lang": "Estonian, Standard", + "rol3": "ekk", + "pct_christian": 7.5, + "pop": 900000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 58.67, + "lng": 25.55, + "code": "PG000779" + }, + { + "name": "Russian", + "country": "Australia", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 7.5, + "pop": 28500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.52, + "lng": 142.46, + "code": "PG008063" + }, + { + "name": "Estonian", + "country": "Canada", + "lang": "Estonian, Standard", + "rol3": "ekk", + "pct_christian": 7.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 43.83, + "lng": -79.46, + "code": "PG043392" + }, + { + "name": "Greek", + "country": "Czech Republic", + "lang": "Greek", + "rol3": "ell", + "pct_christian": 7.5, + "pop": 3600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 49.82, + "lng": 17.98, + "code": "PG048862" + }, + { + "name": "Russian", + "country": "Ukraine", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 7080000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.69, + "lng": 34.82, + "code": "PG042915" + }, + { + "name": "Bulgarian", + "country": "Germany", + "lang": "Bulgarian", + "rol3": "bul", + "pct_christian": 3.5, + "pop": 411000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.5, + "lng": 13.4, + "code": "PG042446" + }, + { + "name": "Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 260000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.48, + "lng": 12.44, + "code": "PG049403" + }, + { + "name": "Armenian", + "country": "Lebanon", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 220000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 33.87, + "lng": 35.58, + "code": "PG048928" + }, + { + "name": "Jew", + "country": "Russian Federation", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 208000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 52.97, + "lng": 74.32, + "code": "PG042910" + }, + { + "name": "Russian", + "country": "Lithuania", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 155000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 55.25, + "lng": 24.5, + "code": "PG000853" + }, + { + "name": "Armenian", + "country": "Iran", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 113000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 38.14, + "lng": 46.37, + "code": "PG024130" + }, + { + "name": "Jew, Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 99500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Judaism", + "lat": 52.5, + "lng": 13.4, + "code": "PG046578" + }, + { + "name": "Russian", + "country": "United Kingdom", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 64000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000675" + }, + { + "name": "Armenian", + "country": "Turkiye", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 41.05, + "lng": 28.9, + "code": "PG024538" + }, + { + "name": "Kurd, Northern", + "country": "Russian Federation", + "lang": "Kurdish, Northern", + "rol3": "kmr", + "pct_christian": 3.5, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 44.63, + "lng": 39.24, + "code": "PG024465" + } + ] + }, + "Senegal": { + "target_upg": 30, + "target_pop": 15310200, + "target_top_langs": [ + "Wolof", + "Pulaar", + "Maninkakan, Western", + "Mandinka" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Caboverdian Mestico", + "country": "Senegal", + "lang": "Kabuverdianu", + "rol3": "kea", + "pct_christian": 12.5, + "pop": 54000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 14.73, + "lng": -17.44, + "code": "PG014223" + }, + { + "name": "English Creole", + "country": "Senegal", + "lang": "Krio", + "rol3": "kri", + "pct_christian": 3.5, + "pop": 9600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 14.73, + "lng": -17.44, + "code": "PG014225" + }, + { + "name": "Papel", + "country": "Senegal", + "lang": "Papel", + "rol3": "pbo", + "pct_christian": 3.5, + "pop": 9600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 12.57, + "lng": -16.27, + "code": "PG014254" + }, + { + "name": "Bambara", + "country": "Cote d’Ivoire", + "lang": "Bamanankan", + "rol3": "bam", + "pct_christian": 3.5, + "pop": 1485000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 9.88, + "lng": -7.05, + "code": "PG013042" + }, + { + "name": "Mandyak", + "country": "Gambia", + "lang": "Mandjak", + "rol3": "mfv", + "pct_christian": 3.5, + "pop": 47000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 13.39, + "lng": -16.69, + "code": "PG013238" + }, + { + "name": "Badyara", + "country": "Guinea-Bissau", + "lang": "Badyara", + "rol3": "pbp", + "pct_christian": 3.5, + "pop": 7300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 12.59, + "lng": -13.77, + "code": "PG013442" + } + ] + }, + "United States": { + "target_upg": 98, + "target_pop": 14806100, + "target_top_langs": [ + "English", + "Hindi", + "Gujarati", + "Russian" + ], + "target_top_religion": "Ethnic Religions", + "neighbors": [ + { + "name": "Mennonite", + "country": "United States", + "lang": "Plautdietsch", + "rol3": "pdt", + "pct_christian": 62.5, + "pop": 15500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 35.43, + "lng": -97.5, + "code": "PG043327" + }, + { + "name": "Kachin, Rawang", + "country": "United States", + "lang": "Rawang", + "rol3": "raw", + "pct_christian": 62.5, + "pop": 750.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 32.85, + "lng": -96.97, + "code": "PG050380" + }, + { + "name": "Bunong", + "country": "United States", + "lang": "Mnong, Central", + "rol3": "cmo", + "pct_christian": 62.5, + "pop": 450.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 35.28, + "lng": -80.21, + "code": "PG050338" + }, + { + "name": "Rhade", + "country": "United States", + "lang": "Rade", + "rol3": "rad", + "pct_christian": 62.5, + "pop": 250.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 35.17, + "lng": -80.8, + "code": "PG050362" + }, + { + "name": "Chin, Zomi", + "country": "United States", + "lang": "Zo", + "rol3": "zom", + "pct_christian": 62.5, + "pop": 225.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 36.03, + "lng": -85.61, + "code": "PG050344" + }, + { + "name": "Chin, Zotung", + "country": "United States", + "lang": "Chin, Zotung", + "rol3": "czt", + "pct_christian": 62.5, + "pop": 175.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 36.28, + "lng": -89.53, + "code": "PG050345" + }, + { + "name": "Chin, Haka", + "country": "United States", + "lang": "Chin, Hakha", + "rol3": "cnh", + "pct_christian": 62.5, + "pop": 150.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 37.35, + "lng": -90.04, + "code": "PG050340" + }, + { + "name": "Naga, Tangkhul", + "country": "United States", + "lang": "Naga, Tangkhul (India)", + "rol3": "nmf", + "pct_christian": 62.5, + "pop": 100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 32.85, + "lng": -96.97, + "code": "PG050369" + }, + { + "name": "Niuean", + "country": "United States", + "lang": "Niue", + "rol3": "niu", + "pct_christian": 62.5, + "pop": 80.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG047289" + }, + { + "name": "Chin, Falam", + "country": "United States", + "lang": "Chin, Falam", + "rol3": "cfm", + "pct_christian": 62.5, + "pop": 30.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 34.09, + "lng": -81.04, + "code": "PG050339" + }, + { + "name": "Chin, Mara", + "country": "United States", + "lang": "Mara", + "rol3": "mrh", + "pct_christian": 62.5, + "pop": 30.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 34.09, + "lng": -81.04, + "code": "PG050341" + }, + { + "name": "Chin, Tiddim", + "country": "United States", + "lang": "Chin, Tedim", + "rol3": "ctd", + "pct_christian": 62.5, + "pop": 30.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 34.09, + "lng": -81.04, + "code": "PG050342" + }, + { + "name": "Kuripako", + "country": "United States", + "lang": "Curripaco", + "rol3": "kpc", + "pct_christian": 45.0, + "pop": 225.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 40.74, + "lng": -73.72, + "code": "PG043219" + }, + { + "name": "Lisu", + "country": "United States", + "lang": "Lisu", + "rol3": "lis", + "pct_christian": 45.0, + "pop": 150.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 34.05, + "lng": -112.65, + "code": "PG050353" + }, + { + "name": "Koho", + "country": "United States", + "lang": "Koho", + "rol3": "kpm", + "pct_christian": 35.0, + "pop": 3100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.17, + "lng": -80.8, + "code": "PG050364" + }, + { + "name": "French Polynesian", + "country": "United States", + "lang": "Tahitian", + "rol3": "tah", + "pct_christian": 35.0, + "pop": 1300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG047193" + }, + { + "name": "Karen S'gaw", + "country": "United States", + "lang": "Karen, S’gaw", + "rol3": "ksw", + "pct_christian": 35.0, + "pop": 325.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 35.35, + "lng": -119.02, + "code": "PG047263" + }, + { + "name": "American", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 194740000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 38.3, + "lng": -93.46, + "code": "PG043515" + }, + { + "name": "Yoruba", + "country": "United States", + "lang": "Yoruba", + "rol3": "yor", + "pct_christian": 25.0, + "pop": 152000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - African Traditional Religion", + "lat": 38.9, + "lng": -77.19, + "code": "PG047644" + }, + { + "name": "Barbadian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 50500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 40.72, + "lng": -73.97, + "code": "PG046507" + }, + { + "name": "Bahamian", + "country": "United States", + "lang": "Bahamas English Creole", + "rol3": "bah", + "pct_christian": 25.0, + "pop": 33000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.18, + "lng": -80.23, + "code": "PG043531" + }, + { + "name": "Marshallese", + "country": "United States", + "lang": "Marshallese", + "rol3": "mah", + "pct_christian": 25.0, + "pop": 10500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG047281" + }, + { + "name": "Jarai", + "country": "United States", + "lang": "Jarai", + "rol3": "jra", + "pct_christian": 25.0, + "pop": 4500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 35.17, + "lng": -80.8, + "code": "PG050355" + }, + { + "name": "Nakota (Assiniboine)", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 48.32, + "lng": -106.26, + "code": "PG043527" + }, + { + "name": "Rwandan", + "country": "United States", + "lang": "Kinyarwanda", + "rol3": "kin", + "pct_christian": 25.0, + "pop": 2400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 40.74, + "lng": -73.72, + "code": "PG047295" + }, + { + "name": "Winnebago", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 2100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 42.22, + "lng": -96.6, + "code": "PG043689" + }, + { + "name": "Motilon, Bari", + "country": "United States", + "lang": "Barí", + "rol3": "mot", + "pct_christian": 25.0, + "pop": 1100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 40.74, + "lng": -73.72, + "code": "PG043532" + }, + { + "name": "Madi", + "country": "United States", + "lang": "Ma’di", + "rol3": "mhi", + "pct_christian": 25.0, + "pop": 1100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 29.79, + "lng": -95.4, + "code": "PG050386" + }, + { + "name": "Maori", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 25.0, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 37.75, + "lng": -122.21, + "code": "PG047214" + }, + { + "name": "Zapotec, Cajonos", + "country": "United States", + "lang": "Zapotec, Cajonos", + "rol3": "zad", + "pct_christian": 25.0, + "pop": 400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 34.22, + "lng": -118.15, + "code": "PG049292" + }, + { + "name": "Kachin, Jingpho", + "country": "United States", + "lang": "Jingpho", + "rol3": "kac", + "pct_christian": 25.0, + "pop": 175.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 31.43, + "lng": -96.28, + "code": "PG047264" + }, + { + "name": "Marquesan", + "country": "United States", + "lang": "Marquesan, North", + "rol3": "mrq", + "pct_christian": 25.0, + "pop": 150.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 21.46, + "lng": -157.97, + "code": "PG047282" + }, + { + "name": "Rarotongan", + "country": "United States", + "lang": "Cook Islands Maori", + "rol3": "rar", + "pct_christian": 25.0, + "pop": 100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG047297" + }, + { + "name": "African Americans", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 40540000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 39.04, + "lng": -100.02, + "code": "PG048741" + }, + { + "name": "Tzeltal", + "country": "United States", + "lang": "Tzeltal", + "rol3": "tzh", + "pct_christian": 17.5, + "pop": 85000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.17, + "lng": -119.44, + "code": "PG049313" + }, + { + "name": "Nigerian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 39500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 37.51, + "lng": -88.1, + "code": "PG047652" + }, + { + "name": "Hutterite", + "country": "United States", + "lang": "Hutterisch", + "rol3": "geh", + "pct_christian": 17.5, + "pop": 7000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 46.28, + "lng": -104.13, + "code": "PG043273" + }, + { + "name": "Montserratian", + "country": "United States", + "lang": "Leeward Caribbean English Creole", + "rol3": "aig", + "pct_christian": 17.5, + "pop": 5100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 26.18, + "lng": -80.23, + "code": "PG047292" + }, + { + "name": "Straits Salish", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 17.5, + "pop": 2000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 48.77, + "lng": -122.64, + "code": "PG043642" + }, + { + "name": "Melanesian", + "country": "United States", + "lang": "Tok Pisin", + "rol3": "tpi", + "pct_christian": 17.5, + "pop": 1600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 38.78, + "lng": -121.0, + "code": "PG046504" + }, + { + "name": "Mokilese", + "country": "United States", + "lang": "Mokilese", + "rol3": "mkj", + "pct_christian": 17.5, + "pop": 550.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG047278" + }, + { + "name": "Kikuyu", + "country": "United States", + "lang": "Gikuyu", + "rol3": "kik", + "pct_christian": 17.5, + "pop": 550.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 38.94, + "lng": -94.44, + "code": "PG050382" + }, + { + "name": "Zapotec, Southern Rincon", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 17.5, + "pop": 500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 32.36, + "lng": -109.45, + "code": "PG049308" + }, + { + "name": "Puerto Rican", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 4035000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.35, + "lng": -95.96, + "code": "PG043603" + }, + { + "name": "Filipino, Tagalog", + "country": "United States", + "lang": "Tagalog", + "rol3": "tgl", + "pct_christian": 12.5, + "pop": 2520000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.26, + "lng": -104.56, + "code": "PG043239" + }, + { + "name": "Korean", + "country": "United States", + "lang": "Korean", + "rol3": "kor", + "pct_christian": 12.5, + "pop": 1095000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 38.77, + "lng": -98.89, + "code": "PG043310" + }, + { + "name": "Latvian", + "country": "United States", + "lang": "Latvian, Standard", + "rol3": "lvs", + "pct_christian": 12.5, + "pop": 111000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated", + "lat": 38.9, + "lng": -77.19, + "code": "PG043321" + }, + { + "name": "Garifuna", + "country": "United States", + "lang": "Garifuna", + "rol3": "cab", + "pct_christian": 12.5, + "pop": 71500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 26.18, + "lng": -80.23, + "code": "PG047649" + }, + { + "name": "American Samoan", + "country": "United States", + "lang": "Samoan", + "rol3": "smo", + "pct_christian": 12.5, + "pop": 69500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 33.98, + "lng": -118.1, + "code": "PG043514" + }, + { + "name": "Moldovan", + "country": "United States", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 12.5, + "pop": 49000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 40.17, + "lng": -74.79, + "code": "PG047277" + }, + { + "name": "Belizean", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 43500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 33.94, + "lng": -118.12, + "code": "PG047184" + }, + { + "name": "Chol", + "country": "United States", + "lang": "Chol", + "rol3": "ctu", + "pct_christian": 12.5, + "pop": 39000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.17, + "lng": -119.44, + "code": "PG049314" + }, + { + "name": "Tongan", + "country": "United States", + "lang": "Tongan", + "rol3": "ton", + "pct_christian": 12.5, + "pop": 29000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 37.74, + "lng": -122.29, + "code": "PG043655" + }, + { + "name": "Polynesian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 14500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG043599" + }, + { + "name": "Antiguan", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 8400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 35.93, + "lng": -98.82, + "code": "PG050335" + }, + { + "name": "Nahuatl, Isthmus", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 12.5, + "pop": 7900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 31.63, + "lng": -89.16, + "code": "PG049280" + }, + { + "name": "Krio", + "country": "United States", + "lang": "Krio", + "rol3": "kri", + "pct_christian": 12.5, + "pop": 7800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 40.74, + "lng": -73.72, + "code": "PG047260" + }, + { + "name": "Trukese", + "country": "United States", + "lang": "Chuukese", + "rol3": "chk", + "pct_christian": 12.5, + "pop": 6700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 21.46, + "lng": -157.97, + "code": "PG046505" + }, + { + "name": "Sac & Fox Nation of Oklahoma", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 5800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 35.71, + "lng": -96.77, + "code": "PG050670" + }, + { + "name": "Palauan", + "country": "United States", + "lang": "Palauan", + "rol3": "pau", + "pct_christian": 12.5, + "pop": 4700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG047310" + }, + { + "name": "Fijian", + "country": "United States", + "lang": "Fijian", + "rol3": "fij", + "pct_christian": 12.5, + "pop": 4500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 39.73, + "lng": -120.56, + "code": "PG043238" + }, + { + "name": "Ewe", + "country": "United States", + "lang": "Éwé", + "rol3": "ewe", + "pct_christian": 12.5, + "pop": 3400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 32.85, + "lng": -96.97, + "code": "PG050366" + }, + { + "name": "Pueblo, Jemez", + "country": "United States", + "lang": "Jemez", + "rol3": "tow", + "pct_christian": 12.5, + "pop": 2400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.68, + "lng": -106.79, + "code": "PG043288" + }, + { + "name": "Mohawk", + "country": "United States", + "lang": "Mohawk", + "rol3": "moh", + "pct_christian": 12.5, + "pop": 2200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 44.97, + "lng": -74.54, + "code": "PG043551" + }, + { + "name": "Tolowa", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 41.9, + "lng": -124.16, + "code": "PG050627" + }, + { + "name": "Sac & Fox Tribe of the Mississippi in Iowa", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 41.98, + "lng": -92.65, + "code": "PG043616" + }, + { + "name": "Iowa", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 39.99, + "lng": -95.39, + "code": "PG043277" + }, + { + "name": "Central Africans", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 40.74, + "lng": -73.72, + "code": "PG047190" + }, + { + "name": "Kusaiean", + "country": "United States", + "lang": "Kosraean", + "rol3": "kos", + "pct_christian": 12.5, + "pop": 1300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG047209" + }, + { + "name": "Tubatulabal", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 1000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 36.07, + "lng": -118.31, + "code": "PG043660" + }, + { + "name": "Nez Perce", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 46.28, + "lng": -116.41, + "code": "PG043560" + }, + { + "name": "Salinan", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 35.83, + "lng": -120.77, + "code": "PG050637" + }, + { + "name": "Swazi", + "country": "United States", + "lang": "Swati", + "rol3": "ssw", + "pct_christian": 12.5, + "pop": 550.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 40.74, + "lng": -73.72, + "code": "PG047227" + }, + { + "name": "Chuj", + "country": "United States", + "lang": "Chuj", + "rol3": "cac", + "pct_christian": 12.5, + "pop": 450.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 34.88, + "lng": -82.36, + "code": "PG049269" + }, + { + "name": "Sac & Fox Nation of Missouri in Kansas and Nebraska", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 450.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 40.01, + "lng": -95.52, + "code": "PG050671" + }, + { + "name": "Kwakwakaʼwakw", + "country": "United States", + "lang": "Kwakwala", + "rol3": "kwk", + "pct_christian": 12.5, + "pop": 400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 48.1, + "lng": -123.12, + "code": "PG047208" + }, + { + "name": "Puinave", + "country": "United States", + "lang": "Puinave", + "rol3": "pui", + "pct_christian": 12.5, + "pop": 350.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 40.74, + "lng": -73.72, + "code": "PG043604" + }, + { + "name": "Basotho", + "country": "United States", + "lang": "Sotho, Southern", + "rol3": "sot", + "pct_christian": 12.5, + "pop": 300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 40.74, + "lng": -73.72, + "code": "PG047274" + }, + { + "name": "Bahnar", + "country": "United States", + "lang": "Bahnar", + "rol3": "bdq", + "pct_christian": 12.5, + "pop": 300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 35.17, + "lng": -80.8, + "code": "PG050336" + }, + { + "name": "Haida", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 150.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 55.19, + "lng": -132.88, + "code": "PG043257" + }, + { + "name": "Tokelauan", + "country": "United States", + "lang": "Tokelauan", + "rol3": "tkl", + "pct_christian": 12.5, + "pop": 150.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 21.46, + "lng": -157.97, + "code": "PG047304" + }, + { + "name": "Embu-Mbeere", + "country": "United States", + "lang": "Kiembu", + "rol3": "ebu", + "pct_christian": 12.5, + "pop": 100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 32.85, + "lng": -96.97, + "code": "PG050365" + }, + { + "name": "Cayuga", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 12.5, + "pop": 60.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 42.55, + "lng": -79.0, + "code": "PG043191" + }, + { + "name": "American, Spanish Speaking", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 20560000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.62, + "lng": -106.27, + "code": "PG043518" + }, + { + "name": "Han Chinese, Mandarin", + "country": "United States", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 2345000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 45.74, + "lng": -114.4, + "code": "PG043261" + }, + { + "name": "Salvadoran", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 1915000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.62, + "lng": -108.3, + "code": "PG046515" + }, + { + "name": "Chinese American", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 1750000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 45.74, + "lng": -114.4, + "code": "PG050453" + }, + { + "name": "Dominican", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 1465000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.36, + "lng": -86.45, + "code": "PG046509" + }, + { + "name": "Guatemalan", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 1250000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 34.99, + "lng": -105.58, + "code": "PG046516" + }, + { + "name": "Honduran", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 1105000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 34.51, + "lng": -104.0, + "code": "PG046517" + }, + { + "name": "Haitian", + "country": "United States", + "lang": "Haitian Creole", + "rol3": "hat", + "pct_christian": 7.5, + "pop": 716000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 31.04, + "lng": -78.18, + "code": "PG046510" + }, + { + "name": "Jamaican", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 588000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 32.14, + "lng": -77.63, + "code": "PG043284" + }, + { + "name": "Detribalized Amerindian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 454000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 34.9, + "lng": -111.06, + "code": "PG043225" + }, + { + "name": "Ecuadorian", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 432000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 34.55, + "lng": -86.97, + "code": "PG046525" + }, + { + "name": "Brazilian", + "country": "United States", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 320000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 34.44, + "lng": -97.31, + "code": "PG046522" + }, + { + "name": "Cape Verdean", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 309000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 37.42, + "lng": -74.94, + "code": "PG047254" + }, + { + "name": "Nicaraguan", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 259000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 33.99, + "lng": -111.48, + "code": "PG046518" + }, + { + "name": "Guyanese", + "country": "United States", + "lang": "Guyanese English Creole", + "rol3": "gyn", + "pct_christian": 7.5, + "pop": 245000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 40.72, + "lng": -73.86, + "code": "PG046526" + }, + { + "name": "Igbo", + "country": "United States", + "lang": "Igbo", + "rol3": "ibo", + "pct_christian": 7.5, + "pop": 234000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 39.21, + "lng": -76.75, + "code": "PG047202" + }, + { + "name": "Argentine", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 223000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 32.49, + "lng": -103.74, + "code": "PG046520" + }, + { + "name": "Ghanaian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 204000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 40.72, + "lng": -73.97, + "code": "PG046500" + }, + { + "name": "Yucatec", + "country": "United States", + "lang": "Maya, Yucatec", + "rol3": "yua", + "pct_christian": 7.5, + "pop": 201000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 34.58, + "lng": -118.81, + "code": "PG047279" + }, + { + "name": "Trinidadian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 174000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 40.69, + "lng": -73.86, + "code": "PG046512" + }, + { + "name": "Romanian", + "country": "United States", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 7.5, + "pop": 173000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 36.09, + "lng": -110.56, + "code": "PG043611" + }, + { + "name": "Malayali", + "country": "United States", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 165000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism", + "lat": 40.72, + "lng": -73.97, + "code": "PG043340" + }, + { + "name": "Chilean", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 147000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 34.62, + "lng": -116.39, + "code": "PG046523" + }, + { + "name": "Pennsylvania Dutch", + "country": "United States", + "lang": "German, Pennsylvania", + "rol3": "pdc", + "pct_christian": 7.5, + "pop": 139000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 40.34, + "lng": -75.87, + "code": "PG043593" + }, + { + "name": "Choctaw", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 121000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 34.5, + "lng": -95.33, + "code": "PG043202" + }, + { + "name": "Bolivian", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 115000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 32.67, + "lng": -99.44, + "code": "PG046521" + }, + { + "name": "Liberian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 107000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 40.72, + "lng": -73.97, + "code": "PG047273" + }, + { + "name": "Kenyan", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 96000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 33.32, + "lng": -92.72, + "code": "PG050473" + }, + { + "name": "Ilocano", + "country": "United States", + "lang": "Ilocano", + "rol3": "ilo", + "pct_christian": 7.5, + "pop": 88500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 21.46, + "lng": -157.97, + "code": "PG043275" + }, + { + "name": "Nahuatl, Huasteca", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 87000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 33.97, + "lng": -84.02, + "code": "PG049279" + }, + { + "name": "Anglo-Australian", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 84000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 35.02, + "lng": -98.4, + "code": "PG043519" + }, + { + "name": "Swahili", + "country": "United States", + "lang": "Swahili", + "rol3": "swh", + "pct_christian": 7.5, + "pop": 81500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 34.52, + "lng": -105.83, + "code": "PG047306" + }, + { + "name": "Mam", + "country": "United States", + "lang": "Mam", + "rol3": "mam", + "pct_christian": 7.5, + "pop": 78500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 33.98, + "lng": -118.1, + "code": "PG047319" + }, + { + "name": "Tzotzil", + "country": "United States", + "lang": "Tzotzil", + "rol3": "tzo", + "pct_christian": 7.5, + "pop": 76500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 37.59, + "lng": -122.17, + "code": "PG049309" + }, + { + "name": "Swede", + "country": "United States", + "lang": "Swedish", + "rol3": "swe", + "pct_christian": 7.5, + "pop": 63000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated", + "lat": 33.94, + "lng": -118.12, + "code": "PG043643" + }, + { + "name": "Creek, Muskogee", + "country": "United States", + "lang": "Muskogee", + "rol3": "mus", + "pct_christian": 7.5, + "pop": 56500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 35.65, + "lng": -96.02, + "code": "PG043554" + }, + { + "name": "Norwegian", + "country": "United States", + "lang": "Norwegian", + "rol3": "nor", + "pct_christian": 7.5, + "pop": 44500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated", + "lat": 44.96, + "lng": -93.28, + "code": "PG043575" + }, + { + "name": "Iu Mien", + "country": "United States", + "lang": "Iu Mien", + "rol3": "ium", + "pct_christian": 7.5, + "pop": 38500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 38.75, + "lng": -111.78, + "code": "PG043283" + }, + { + "name": "Saint Lucian", + "country": "United States", + "lang": "Lesser Antillean French Creole", + "rol3": "acf", + "pct_christian": 7.5, + "pop": 34000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 40.72, + "lng": -73.97, + "code": "PG047284" + }, + { + "name": "Cree, Plains", + "country": "United States", + "lang": "Cree, Plains", + "rol3": "crk", + "pct_christian": 7.5, + "pop": 33500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 48.71, + "lng": -102.69, + "code": "PG043683" + }, + { + "name": "Blackfoot, Siksika", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 32000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 48.66, + "lng": -112.87, + "code": "PG043538" + }, + { + "name": "O'odham, Tohono", + "country": "United States", + "lang": "Tohono O’odham", + "rol3": "ood", + "pct_christian": 7.5, + "pop": 30500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 32.15, + "lng": -112.07, + "code": "PG043670" + }, + { + "name": "Potawatomi", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 24000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 39.34, + "lng": -95.84, + "code": "PG043601" + }, + { + "name": "Chamorro", + "country": "United States", + "lang": "Chamorro", + "rol3": "cha", + "pct_christian": 7.5, + "pop": 22000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 33.94, + "lng": -118.12, + "code": "PG047251" + }, + { + "name": "Hopi, Hopitu-Shinumu", + "country": "United States", + "lang": "Hopi", + "rol3": "hop", + "pct_christian": 7.5, + "pop": 21000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 35.9, + "lng": -110.58, + "code": "PG043269" + }, + { + "name": "Popti", + "country": "United States", + "lang": "Jakalteko", + "rol3": "jac", + "pct_christian": 7.5, + "pop": 20500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 26.61, + "lng": -80.17, + "code": "PG049284" + }, + { + "name": "Tlingit", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 18000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 57.16, + "lng": -133.75, + "code": "PG043653" + }, + { + "name": "Nahuatl, Northern Puebla", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 18000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 36.03, + "lng": -78.88, + "code": "PG049281" + }, + { + "name": "Apache, Western", + "country": "United States", + "lang": "Apache, Western", + "rol3": "apw", + "pct_christian": 7.5, + "pop": 17000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 33.88, + "lng": -110.16, + "code": "PG043682" + }, + { + "name": "Nuer", + "country": "United States", + "lang": "Nuer", + "rol3": "nus", + "pct_christian": 7.5, + "pop": 15000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 32.82, + "lng": -96.97, + "code": "PG046705" + }, + { + "name": "Comanche", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 14500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 34.56, + "lng": -98.43, + "code": "PG043209" + }, + { + "name": "Cheyenne", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 13500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 45.53, + "lng": -106.68, + "code": "PG043198" + }, + { + "name": "Azande", + "country": "United States", + "lang": "Zande", + "rol3": "zne", + "pct_christian": 7.5, + "pop": 13000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 33.59, + "lng": -96.89, + "code": "PG046709" + }, + { + "name": "Crow", + "country": "United States", + "lang": "Crow", + "rol3": "cro", + "pct_christian": 7.5, + "pop": 12000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 45.4, + "lng": -107.76, + "code": "PG043215" + }, + { + "name": "Afro-Grenadian", + "country": "United States", + "lang": "Grenadian English Creole", + "rol3": "gcl", + "pct_christian": 7.5, + "pop": 12000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 41.29, + "lng": -75.74, + "code": "PG050350" + }, + { + "name": "Pueblo, Santa Clara", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 12000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Native American religions", + "lat": 35.98, + "lng": -106.22, + "code": "PG050653" + }, + { + "name": "Zuni Pueblo", + "country": "United States", + "lang": "Zuni", + "rol3": "zun", + "pct_christian": 7.5, + "pop": 11500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Native American religions", + "lat": 35.09, + "lng": -108.74, + "code": "PG043703" + }, + { + "name": "Shoshoni", + "country": "United States", + "lang": "Shoshoni", + "rol3": "shh", + "pct_christian": 7.5, + "pop": 10500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 41.35, + "lng": -109.85, + "code": "PG043624" + }, + { + "name": "Burundi", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 10000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 37.74, + "lng": -92.31, + "code": "PG047181" + }, + { + "name": "Houma, Half-Choctaw", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 29.78, + "lng": -90.59, + "code": "PG043270" + }, + { + "name": "Arapaho", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 9300.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 38.15, + "lng": -102.16, + "code": "PG043524" + }, + { + "name": "Flathead-Kalispel", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 8400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 47.5, + "lng": -114.28, + "code": "PG043241" + }, + { + "name": "Han Chinese, Wu", + "country": "United States", + "lang": "Chinese, Wu", + "rol3": "wuu", + "pct_christian": 7.5, + "pop": 8400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 40.74, + "lng": -73.72, + "code": "PG047187" + }, + { + "name": "Zapotec, Loxicha", + "country": "United States", + "lang": "Spanish", + "rol3": "spa", + "pct_christian": 7.5, + "pop": 8000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 32.79, + "lng": -117.08, + "code": "PG049324" + }, + { + "name": "Paiute, Southern", + "country": "United States", + "lang": "Ute-Southern Paiute", + "rol3": "ute", + "pct_christian": 7.5, + "pop": 7600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 38.9, + "lng": -110.13, + "code": "PG043634" + }, + { + "name": "Paiute, Northern", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 7400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 39.69, + "lng": -119.19, + "code": "PG043570" + }, + { + "name": "Kiowa", + "country": "United States", + "lang": "English", + "rol3": "eng", + "pct_christian": 7.5, + "pop": 7200.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 35.01, + "lng": -98.78, + "code": "PG043305" + } + ] + }, + "Guinea": { + "target_upg": 30, + "target_pop": 13009200, + "target_top_langs": [ + "Pular", + "Maninkakan, Eastern", + "Susu", + "Konyanka" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Kissi", + "country": "Guinea", + "lang": "Kissi, Northern", + "rol3": "kqs", + "pct_christian": 7.5, + "pop": 646000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 8.89, + "lng": -10.2, + "code": "PG013412" + }, + { + "name": "Baga Binari", + "country": "Guinea", + "lang": "Baga Pokur", + "rol3": "bcg", + "pct_christian": 7.5, + "pop": 4900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 10.53, + "lng": -14.62, + "code": "PG042197" + }, + { + "name": "Loko", + "country": "Guinea", + "lang": "Loko", + "rol3": "lok", + "pct_christian": 7.5, + "pop": 900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.34, + "lng": -12.86, + "code": "PG013423" + }, + { + "name": "Kpelle", + "country": "Guinea", + "lang": "Kpelle, Guinea", + "rol3": "gkp", + "pct_christian": 3.5, + "pop": 600000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 7.83, + "lng": -8.89, + "code": "PG013413" + }, + { + "name": "Toma", + "country": "Guinea", + "lang": "Toma", + "rol3": "tod", + "pct_christian": 3.5, + "pop": 331000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.8, + "lng": -9.82, + "code": "PG013433" + }, + { + "name": "Dan Yakuba", + "country": "Liberia", + "lang": "Dan", + "rol3": "dnj", + "pct_christian": 12.5, + "pop": 245000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.83, + "lng": -8.77, + "code": "PG013483" + }, + { + "name": "Zari", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 9.87, + "lng": 9.4, + "code": "PG014203" + }, + { + "name": "Bassa", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 10.67, + "lng": 5.82, + "code": "PG033345" + }, + { + "name": "Dan Yakuba", + "country": "Cote d’Ivoire", + "lang": "Dan", + "rol3": "dnj", + "pct_christian": 3.5, + "pop": 1945000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 7.48, + "lng": -7.86, + "code": "PG013066" + }, + { + "name": "Bambara", + "country": "Cote d’Ivoire", + "lang": "Bamanankan", + "rol3": "bam", + "pct_christian": 3.5, + "pop": 1485000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 9.88, + "lng": -7.05, + "code": "PG013042" + }, + { + "name": "Mano", + "country": "Liberia", + "lang": "Maan", + "rol3": "mev", + "pct_christian": 3.5, + "pop": 440000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 6.87, + "lng": -8.98, + "code": "PG013517" + }, + { + "name": "Arab", + "country": "South Africa", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -26.17, + "lng": 28.07, + "code": "PG015486" + }, + { + "name": "Arab", + "country": "New Zealand", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -36.89, + "lng": 174.78, + "code": "PG018478" + }, + { + "name": "Badyara", + "country": "Guinea-Bissau", + "lang": "Badyara", + "rol3": "pbp", + "pct_christian": 3.5, + "pop": 7300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 12.59, + "lng": -13.77, + "code": "PG013442" + } + ] + }, + "Tunisia": { + "target_upg": 17, + "target_pop": 12220300, + "target_top_langs": [ + "Arabic, Tunisian", + "Arabic, Libyan", + "Arabic, Algerian", + "Arabic, Algerian Saharan" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Arab", + "country": "South Africa", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 15500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -26.17, + "lng": 28.07, + "code": "PG015486" + }, + { + "name": "Arab", + "country": "New Zealand", + "lang": "Arabic, Standard", + "rol3": "arb", + "pct_christian": 3.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -36.89, + "lng": 174.78, + "code": "PG018478" + } + ] + }, + "Chad": { + "target_upg": 82, + "target_pop": 11754900, + "target_top_langs": [ + "Arabic, Chadian", + "Kanembu", + "Dazaga", + "Maba (Chad)" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Goundo", + "country": "Chad", + "lang": "Kabalai", + "rol3": "kvf", + "pct_christian": 45.0, + "pop": 50.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 9.55, + "lng": 16.2, + "code": "PG011355" + }, + { + "name": "Nzakmbay", + "country": "Chad", + "lang": "Nzakambay", + "rol3": "nzy", + "pct_christian": 25.0, + "pop": 45500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 7.77, + "lng": 15.86, + "code": "PG011438" + }, + { + "name": "Ruto", + "country": "Chad", + "lang": "Luto", + "rol3": "ndy", + "pct_christian": 25.0, + "pop": 6400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.22, + "lng": 18.44, + "code": "PG011443" + }, + { + "name": "Besme", + "country": "Chad", + "lang": "Besme", + "rol3": "bes", + "pct_christian": 25.0, + "pop": 4000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.59, + "lng": 16.09, + "code": "PG011321" + }, + { + "name": "Mesme", + "country": "Chad", + "lang": "Mesme", + "rol3": "zim", + "pct_christian": 17.5, + "pop": 39000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.32, + "lng": 15.53, + "code": "PG011414" + }, + { + "name": "Mangbai", + "country": "Chad", + "lang": "Mambai", + "rol3": "mcs", + "pct_christian": 12.5, + "pop": 6400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.63, + "lng": 14.06, + "code": "PG011400" + }, + { + "name": "Pana", + "country": "Chad", + "lang": "Pana (Central African Republic)", + "rol3": "pnz", + "pct_christian": 12.5, + "pop": 2600.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 7.54, + "lng": 15.7, + "code": "PG011439" + }, + { + "name": "Nancere", + "country": "Chad", + "lang": "Nancere", + "rol3": "nnc", + "pct_christian": 7.5, + "pop": 231000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.28, + "lng": 16.12, + "code": "PG011432" + }, + { + "name": "Gabere", + "country": "Chad", + "lang": "Gabri", + "rol3": "gab", + "pct_christian": 7.5, + "pop": 84000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.35, + "lng": 16.66, + "code": "PG042668" + }, + { + "name": "Kaba-Lai", + "country": "Chad", + "lang": "Kabalai", + "rol3": "kvf", + "pct_christian": 7.5, + "pop": 58000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.41, + "lng": 16.31, + "code": "PG011370" + }, + { + "name": "Kaba", + "country": "Chad", + "lang": "Kabba", + "rol3": "ksp", + "pct_christian": 7.5, + "pop": 22000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 7.85, + "lng": 16.74, + "code": "PG011366" + }, + { + "name": "Sara Gambai", + "country": "Chad", + "lang": "Ngambay", + "rol3": "sba", + "pct_christian": 3.5, + "pop": 2095000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.7, + "lng": 15.82, + "code": "PG011447" + }, + { + "name": "Musey", + "country": "Chad", + "lang": "Musey", + "rol3": "mse", + "pct_christian": 3.5, + "pop": 535000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.69, + "lng": 15.3, + "code": "PG011312" + }, + { + "name": "Mundang", + "country": "Chad", + "lang": "Mundang", + "rol3": "mua", + "pct_christian": 3.5, + "pop": 517000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.67, + "lng": 14.62, + "code": "PG011430" + }, + { + "name": "Marba", + "country": "Chad", + "lang": "Marba", + "rol3": "mpg", + "pct_christian": 3.5, + "pop": 397000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.52, + "lng": 15.92, + "code": "PG042679" + }, + { + "name": "Masa", + "country": "Chad", + "lang": "Masana", + "rol3": "mcn", + "pct_christian": 3.5, + "pop": 352000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 10.33, + "lng": 15.61, + "code": "PG011403" + }, + { + "name": "Sara Mbai", + "country": "Chad", + "lang": "Mbay", + "rol3": "myb", + "pct_christian": 3.5, + "pop": 267000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.29, + "lng": 17.75, + "code": "PG011449" + }, + { + "name": "Bediondo Mbai", + "country": "Chad", + "lang": "Bedjond", + "rol3": "bjv", + "pct_christian": 3.5, + "pop": 192000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.65, + "lng": 17.28, + "code": "PG011318" + }, + { + "name": "Karang Laka", + "country": "Chad", + "lang": "Laka", + "rol3": "lap", + "pct_christian": 3.5, + "pop": 188000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.02, + "lng": 16.2, + "code": "PG011376" + }, + { + "name": "Gor", + "country": "Chad", + "lang": "Kabba", + "rol3": "ksp", + "pct_christian": 3.5, + "pop": 163000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 7.8, + "lng": 16.72, + "code": "PG042670" + }, + { + "name": "Dai", + "country": "Chad", + "lang": "Day", + "rol3": "dai", + "pct_christian": 3.5, + "pop": 161000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.52, + "lng": 17.55, + "code": "PG011334" + }, + { + "name": "Kera", + "country": "Chad", + "lang": "Kera", + "rol3": "ker", + "pct_christian": 3.5, + "pop": 144000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.78, + "lng": 15.18, + "code": "PG011382" + }, + { + "name": "Ngama", + "country": "Chad", + "lang": "Ngam", + "rol3": "nmc", + "pct_christian": 3.5, + "pop": 135000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 8.52, + "lng": 18.59, + "code": "PG011434" + }, + { + "name": "Kaba Na", + "country": "Chad", + "lang": "Kaba Naa, Sara", + "rol3": "kwv", + "pct_christian": 3.5, + "pop": 113000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.58, + "lng": 18.93, + "code": "PG011369" + }, + { + "name": "Kado", + "country": "Chad", + "lang": "Herdé", + "rol3": "hed", + "pct_christian": 3.5, + "pop": 104000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.36, + "lng": 14.71, + "code": "PG011371" + }, + { + "name": "Gulfe", + "country": "Chad", + "lang": "Malgbe", + "rol3": "mxf", + "pct_christian": 3.5, + "pop": 96000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 12.48, + "lng": 14.92, + "code": "PG011359" + }, + { + "name": "Lele", + "country": "Chad", + "lang": "Lele (Chad)", + "rol3": "lln", + "pct_christian": 3.5, + "pop": 89000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 9.15, + "lng": 15.73, + "code": "PG011395" + }, + { + "name": "Peve", + "country": "Chad", + "lang": "Pévé", + "rol3": "lme", + "pct_christian": 3.5, + "pop": 78000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 9.3, + "lng": 14.58, + "code": "PG011441" + }, + { + "name": "Sango", + "country": "Chad", + "lang": "Sango", + "rol3": "sag", + "pct_christian": 3.5, + "pop": 58000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 8.57, + "lng": 16.07, + "code": "PG011446" + }, + { + "name": "Gidar", + "country": "Chad", + "lang": "Gidar", + "rol3": "gid", + "pct_christian": 3.5, + "pop": 38000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.85, + "lng": 14.2, + "code": "PG011351" + }, + { + "name": "Kimre", + "country": "Chad", + "lang": "Kimré", + "rol3": "kqp", + "pct_christian": 3.5, + "pop": 37000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Neo-Pentecostalism", + "lat": 9.3, + "lng": 16.88, + "code": "PG011385" + }, + { + "name": "Mbum", + "country": "Chad", + "lang": "Mbum", + "rol3": "mdd", + "pct_christian": 3.5, + "pop": 34000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 7.64, + "lng": 15.64, + "code": "PG011412" + }, + { + "name": "Kuo", + "country": "Chad", + "lang": "Kuo", + "rol3": "xuo", + "pct_christian": 3.5, + "pop": 19500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 7.75, + "lng": 15.75, + "code": "PG011393" + }, + { + "name": "Mire", + "country": "Chad", + "lang": "Mulgi", + "rol3": "mvh", + "pct_christian": 3.5, + "pop": 7800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.43, + "lng": 16.3, + "code": "PG011419" + }, + { + "name": "Kotoko-Kuseri", + "country": "Chad", + "lang": "Mser", + "rol3": "kqx", + "pct_christian": 3.5, + "pop": 3900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Folk", + "lat": 11.93, + "lng": 15.11, + "code": "PG011388" + }, + { + "name": "Gori", + "country": "Chad", + "lang": "Laal", + "rol3": "gdm", + "pct_christian": 3.5, + "pop": 1800.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Islam - Sunni", + "lat": 9.98, + "lng": 17.62, + "code": "PG011353" + }, + { + "name": "Miltu", + "country": "Chad", + "lang": "Miltu", + "rol3": "mlj", + "pct_christian": 3.5, + "pop": 900.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 10.23, + "lng": 17.41, + "code": "PG011416" + }, + { + "name": "Bakole", + "country": "Cameroon", + "lang": "French", + "rol3": "fra", + "pct_christian": 35.0, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 4.43, + "lng": 8.97, + "code": "PG012493" + }, + { + "name": "Mono", + "country": "Cameroon", + "lang": "Fulfulde, Adamawa", + "rol3": "fub", + "pct_christian": 25.0, + "pop": 3700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 8.77, + "lng": 14.12, + "code": "PG012705" + }, + { + "name": "PoaPoa", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 25.0, + "pop": 50.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -20.87, + "lng": 164.66, + "code": "PG018370" + }, + { + "name": "Kotoko", + "country": "Cameroon", + "lang": "Lagwan", + "rol3": "kot", + "pct_christian": 17.5, + "pop": 24500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 11.86, + "lng": 14.9, + "code": "PG012650" + }, + { + "name": "Euronesian", + "country": "French Polynesia", + "lang": "French", + "rol3": "fra", + "pct_christian": 12.5, + "pop": 58500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -17.56, + "lng": -149.57, + "code": "PG018408" + }, + { + "name": "Euronesian", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 12.5, + "pop": 14500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -22.27, + "lng": 166.45, + "code": "PG018406" + }, + { + "name": "Aeke", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 12.5, + "pop": 350.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -21.07, + "lng": 164.88, + "code": "PG009564" + }, + { + "name": "French", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 93500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -21.33, + "lng": 165.49, + "code": "PG018389" + }, + { + "name": "Zari", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 41000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 9.87, + "lng": 9.4, + "code": "PG014203" + }, + { + "name": "Bassa", + "country": "Nigeria", + "lang": "Hausa", + "rol3": "hau", + "pct_christian": 7.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Folk", + "lat": 10.67, + "lng": 5.82, + "code": "PG033345" + }, + { + "name": "Sake", + "country": "Gabon", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 0.07, + "lng": 11.63, + "code": "PG013210" + }, + { + "name": "Burundi", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 45.58, + "lng": -73.7, + "code": "PG050494" + }, + { + "name": "Burundi", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 37.74, + "lng": -92.31, + "code": "PG047181" + }, + { + "name": "Kaba Dunjo", + "country": "Central African Republic", + "lang": "Kaba Naa, Sara", + "rol3": "kwv", + "pct_christian": 7.5, + "pop": 6300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 9.03, + "lng": 19.98, + "code": "PG012874" + }, + { + "name": "Kande", + "country": "Gabon", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -0.09, + "lng": 11.75, + "code": "PG013189" + }, + { + "name": "Chadian", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.58, + "lng": -73.7, + "code": "PG050504" + }, + { + "name": "Indri", + "country": "South Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 7.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 8.78, + "lng": 25.73, + "code": "PG012040" + }, + { + "name": "New Caledonian", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 1100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.22, + "lng": -122.99, + "code": "PG047444" + }, + { + "name": "Gabonese", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 38.9, + "lng": -77.19, + "code": "PG047191" + }, + { + "name": "Chinese-Tahitian Creole", + "country": "French Polynesia", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -17.56, + "lng": -149.57, + "code": "PG018407" + }, + { + "name": "Chadian", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 250.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 38.02, + "lng": -84.5, + "code": "PG047189" + }, + { + "name": "Walloon", + "country": "Belgium", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 3755000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 50.32, + "lng": 4.95, + "code": "PG000076" + }, + { + "name": "Swiss", + "country": "Switzerland", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 2015000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 46.6, + "lng": 6.93, + "code": "PG000585" + }, + { + "name": "Tuburi", + "country": "Cameroon", + "lang": "Tupuri", + "rol3": "tui", + "pct_christian": 3.5, + "pop": 345000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.27, + "lng": 14.75, + "code": "PG012796" + }, + { + "name": "Masa", + "country": "Cameroon", + "lang": "Masana", + "rol3": "mcn", + "pct_christian": 3.5, + "pop": 345000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.29, + "lng": 15.19, + "code": "PG012678" + }, + { + "name": "Musgum", + "country": "Cameroon", + "lang": "Musgu", + "rol3": "mug", + "pct_christian": 3.5, + "pop": 239000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 10.9, + "lng": 14.93, + "code": "PG012718" + }, + { + "name": "Dakpa", + "country": "Central African Republic", + "lang": "Banda, West Central", + "rol3": "bbp", + "pct_christian": 3.5, + "pop": 113000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 5.98, + "lng": 20.0, + "code": "PG012849" + }, + { + "name": "Franco-Mauritian", + "country": "Mauritius", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 72500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -20.25, + "lng": 57.51, + "code": "PG015346" + }, + { + "name": "Romanian", + "country": "France", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 13000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 48.84, + "lng": 2.35, + "code": "PG000192" + }, + { + "name": "Delen", + "country": "Sudan", + "lang": "Arabic, Sudanese", + "rol3": "apd", + "pct_christian": 3.5, + "pop": 13000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 12.06, + "lng": 29.58, + "code": "PG042814" + }, + { + "name": "French Caribbean", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 6300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 45.5, + "lng": -73.81, + "code": "PG047395" + }, + { + "name": "Togolese", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 5600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 45.52, + "lng": -73.68, + "code": "PG050478" + }, + { + "name": "Congolese", + "country": "Spain", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 4800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 40.41, + "lng": -3.69, + "code": "PG042340" + }, + { + "name": "Abenaki", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 3900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 46.07, + "lng": -72.82, + "code": "PG043348" + }, + { + "name": "Ivorian", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 3600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 40.74, + "lng": -73.72, + "code": "PG047266" + }, + { + "name": "Guinean", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.5, + "lng": -73.81, + "code": "PG047454" + }, + { + "name": "Sighu", + "country": "Gabon", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -0.84, + "lng": 12.69, + "code": "PG013213" + }, + { + "name": "Rwandan", + "country": "Netherlands", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 51.9, + "lng": 4.47, + "code": "PG000430" + }, + { + "name": "Gabonese", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 1600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 45.58, + "lng": -73.7, + "code": "PG050505" + }, + { + "name": "Maslam", + "country": "Cameroon", + "lang": "Maslam", + "rol3": "msv", + "pct_christian": 3.5, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 12.22, + "lng": 14.83, + "code": "PG012681" + } + ] + }, + "Tajikistan": { + "target_upg": 31, + "target_pop": 10692000, + "target_top_langs": [ + "Tajik", + "Uzbek, Northern", + "Shughni", + "Language unknown" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Han Chinese, Mandarin", + "country": "Tajikistan", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 89500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Unaffiliated - Atheism", + "lat": 38.57, + "lng": 68.77, + "code": "PG049245" + }, + { + "name": "Ukrainian", + "country": "Tajikistan", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 7.5, + "pop": 12500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Orthodox", + "lat": 38.57, + "lng": 68.77, + "code": "PG024536" + }, + { + "name": "Russian", + "country": "Moldova", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 17.5, + "pop": 133000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.13, + "lng": 29.34, + "code": "PG000867" + }, + { + "name": "Korean", + "country": "Uzbekistan", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 12.5, + "pop": 254000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.31, + "lng": 69.26, + "code": "PG024684" + }, + { + "name": "Armenian", + "country": "United Kingdom", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 12.5, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000627" + }, + { + "name": "Russian", + "country": "Australia", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 7.5, + "pop": 28500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.52, + "lng": 142.46, + "code": "PG008063" + }, + { + "name": "Russian", + "country": "Ukraine", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 7080000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.69, + "lng": 34.82, + "code": "PG042915" + }, + { + "name": "Bulgarian", + "country": "Germany", + "lang": "Bulgarian", + "rol3": "bul", + "pct_christian": 3.5, + "pop": 411000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.5, + "lng": 13.4, + "code": "PG042446" + }, + { + "name": "Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 260000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.48, + "lng": 12.44, + "code": "PG049403" + }, + { + "name": "Armenian", + "country": "Lebanon", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 220000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 33.87, + "lng": 35.58, + "code": "PG048928" + }, + { + "name": "Jew", + "country": "Russian Federation", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 208000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 52.97, + "lng": 74.32, + "code": "PG042910" + }, + { + "name": "Russian", + "country": "Lithuania", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 155000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 55.25, + "lng": 24.5, + "code": "PG000853" + }, + { + "name": "Armenian", + "country": "Iran", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 113000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 38.14, + "lng": 46.37, + "code": "PG024130" + }, + { + "name": "Jew, Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 99500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Judaism", + "lat": 52.5, + "lng": 13.4, + "code": "PG046578" + }, + { + "name": "Russian", + "country": "United Kingdom", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 64000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000675" + }, + { + "name": "Armenian", + "country": "Turkiye", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 41.05, + "lng": 28.9, + "code": "PG024538" + }, + { + "name": "Belarusian", + "country": "Argentina", + "lang": "Belarusian", + "rol3": "bel", + "pct_christian": 3.5, + "pop": 4600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -34.65, + "lng": -58.56, + "code": "PG017330" + } + ] + }, + "Jordan": { + "target_upg": 21, + "target_pop": 10660500, + "target_top_langs": [ + "Arabic, Levantine", + "Arabic, Eastern Egyptian Bedawi", + "Arabic, North Mesopotamian", + "Kabardian" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Arab, Egyptian", + "country": "Australia", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 12.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -31.94, + "lng": 115.89, + "code": "PG020254" + }, + { + "name": "Arab, Egyptian", + "country": "Germany", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 25500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 52.5, + "lng": 13.4, + "code": "PG042462" + }, + { + "name": "Arab, Lebanese", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024837" + }, + { + "name": "Arab, Palestinian", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024839" + }, + { + "name": "Arab, Egyptian", + "country": "Belgium", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 5300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 50.85, + "lng": 4.38, + "code": "PG000053" + }, + { + "name": "Egyptian Copt", + "country": "United States", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 3.5, + "pop": 242000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 35.35, + "lng": -111.99, + "code": "PG047347" + }, + { + "name": "Arab, Lebanese", + "country": "Canada", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 234000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.53, + "lng": -73.66, + "code": "PG043431" + }, + { + "name": "Arab, Syrian", + "country": "United States", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 193000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 40.7, + "lng": -73.87, + "code": "PG043644" + }, + { + "name": "Kurd, Northern", + "country": "Russian Federation", + "lang": "Kurdish, Northern", + "rol3": "kmr", + "pct_christian": 3.5, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 44.63, + "lng": 39.24, + "code": "PG024465" + }, + { + "name": "Arab, Palestinian", + "country": "El Salvador", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 13.71, + "lng": -89.19, + "code": "PG039263" + } + ] + }, + "Azerbaijan": { + "target_upg": 26, + "target_pop": 9953800, + "target_top_langs": [ + "Azerbaijani, North", + "Talysh", + "Lezgi", + "Azerbaijani, South" + ], + "target_top_religion": "Islam", + "neighbors": [ + { + "name": "Ukrainian", + "country": "Kyrgyzstan", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 35.0, + "pop": 28000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 42.88, + "lng": 74.63, + "code": "PG024375" + }, + { + "name": "Ukrainian", + "country": "Turkmenistan", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 35.0, + "pop": 8400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 37.94, + "lng": 58.39, + "code": "PG024648" + }, + { + "name": "Romanian", + "country": "Czech Republic", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 25.0, + "pop": 12500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 50.07, + "lng": 14.47, + "code": "PG050033" + }, + { + "name": "Russian", + "country": "Moldova", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 17.5, + "pop": 133000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.13, + "lng": 29.34, + "code": "PG000867" + }, + { + "name": "Ukrainian", + "country": "Kazakhstan", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 12.5, + "pop": 415000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 48.48, + "lng": 71.3, + "code": "PG024330" + }, + { + "name": "Korean", + "country": "Uzbekistan", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 12.5, + "pop": 254000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.31, + "lng": 69.26, + "code": "PG024684" + }, + { + "name": "Moldovan", + "country": "United States", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 12.5, + "pop": 49000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 40.17, + "lng": -74.79, + "code": "PG047277" + }, + { + "name": "Armenian", + "country": "United Kingdom", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 12.5, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000627" + }, + { + "name": "Romanian", + "country": "United States", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 7.5, + "pop": 173000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 36.09, + "lng": -110.56, + "code": "PG043611" + }, + { + "name": "Ukrainian", + "country": "United Kingdom", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 7.5, + "pop": 33000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000692" + }, + { + "name": "Russian", + "country": "Australia", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 7.5, + "pop": 28500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.52, + "lng": 142.46, + "code": "PG008063" + }, + { + "name": "Ukrainian", + "country": "Tajikistan", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 7.5, + "pop": 12500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 38.57, + "lng": 68.77, + "code": "PG024536" + }, + { + "name": "Iranian", + "country": "Armenia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 40.17, + "lng": 44.49, + "code": "PG050098" + }, + { + "name": "Iranian", + "country": "Greece", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 38.05, + "lng": 23.7, + "code": "PG047071" + }, + { + "name": "Romanian", + "country": "Romania", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 16370000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 45.84, + "lng": 24.98, + "code": "PG000899" + }, + { + "name": "Russian", + "country": "Ukraine", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 7080000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.69, + "lng": 34.82, + "code": "PG042915" + }, + { + "name": "Romanian", + "country": "Italy", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 1300000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 44.5, + "lng": 9.8, + "code": "PG048833" + }, + { + "name": "Ukrainian", + "country": "Russian Federation", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 1120000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.59, + "lng": 82.8, + "code": "PG048814" + }, + { + "name": "Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 260000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.48, + "lng": 12.44, + "code": "PG049403" + }, + { + "name": "Ukrainian", + "country": "Canada", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 253000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 46.93, + "lng": -92.67, + "code": "PG043496" + }, + { + "name": "Armenian", + "country": "Lebanon", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 220000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 33.87, + "lng": 35.58, + "code": "PG048928" + }, + { + "name": "Jew", + "country": "Russian Federation", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 208000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 52.97, + "lng": 74.32, + "code": "PG042910" + }, + { + "name": "Persian", + "country": "Canada", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 201000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 46.93, + "lng": -92.67, + "code": "PG043458" + }, + { + "name": "Iranian", + "country": "Germany", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 175000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 52.51, + "lng": 11.69, + "code": "PG000259" + }, + { + "name": "Russian", + "country": "Lithuania", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 155000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 55.25, + "lng": 24.5, + "code": "PG000853" + }, + { + "name": "Ukrainian", + "country": "Germany", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 145000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.72, + "lng": 11.84, + "code": "PG000275" + }, + { + "name": "Persian", + "country": "Turkiye", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 130000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 41.04, + "lng": 28.87, + "code": "PG024581" + }, + { + "name": "Armenian", + "country": "Iran", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 113000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 38.14, + "lng": 46.37, + "code": "PG024130" + }, + { + "name": "Jew, Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 99500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Judaism", + "lat": 52.5, + "lng": 13.4, + "code": "PG046578" + }, + { + "name": "Romanian", + "country": "Hungary", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 96500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 46.8, + "lng": 20.84, + "code": "PG000835" + }, + { + "name": "Persian", + "country": "United Kingdom", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 86000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 51.5, + "lng": -0.17, + "code": "PG000643" + }, + { + "name": "Romanian ", + "country": "Austria", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 48.18, + "lng": 16.35, + "code": "PG049963" + }, + { + "name": "Russian", + "country": "United Kingdom", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 64000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000675" + }, + { + "name": "Ukrainian", + "country": "Latvia", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 48500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 56.93, + "lng": 24.12, + "code": "PG000850" + }, + { + "name": "Ukrainian", + "country": "Uzbekistan", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 47000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 41.31, + "lng": 69.26, + "code": "PG024323" + }, + { + "name": "Armenian", + "country": "Turkiye", + "lang": "Armenian", + "rol3": "hye", + "pct_christian": 3.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 41.05, + "lng": 28.9, + "code": "PG024538" + }, + { + "name": "Ukrainian", + "country": "Poland", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 45000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.5, + "lng": 19.47, + "code": "PG000887" + }, + { + "name": "Ukrainian", + "country": "Argentina", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 36500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -34.65, + "lng": -58.56, + "code": "PG017373" + }, + { + "name": "Kurd, Northern", + "country": "Russian Federation", + "lang": "Kurdish, Northern", + "rol3": "kmr", + "pct_christian": 3.5, + "pop": 35000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 44.63, + "lng": 39.24, + "code": "PG024465" + }, + { + "name": "Ukrainian", + "country": "Estonia", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 33500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 59.31, + "lng": 24.93, + "code": "PG050308" + }, + { + "name": "Romanian", + "country": "Ireland", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 53.39, + "lng": -6.28, + "code": "PG048049" + }, + { + "name": "Ukrainian", + "country": "France", + "lang": "Ukrainian", + "rol3": "ukr", + "pct_christian": 3.5, + "pop": 23000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 48.84, + "lng": 2.35, + "code": "PG000205" + }, + { + "name": "Moldovan", + "country": "Canada", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 49.72, + "lng": -95.67, + "code": "PG047364" + }, + { + "name": "Persian", + "country": "Indonesia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 8000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": -6.21, + "lng": 106.83, + "code": "PG050238" + }, + { + "name": "Belarusian", + "country": "Argentina", + "lang": "Belarusian", + "rol3": "bel", + "pct_christian": 3.5, + "pop": 4600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": -34.65, + "lng": -58.56, + "code": "PG017330" + }, + { + "name": "Persian", + "country": "South Korea", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 3500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 37.55, + "lng": 126.99, + "code": "PG050237" + }, + { + "name": "Romanian", + "country": "Venezuela", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 10.48, + "lng": -66.88, + "code": "PG016490" + } + ] + }, + "Vietnam": { + "target_upg": 70, + "target_pop": 9637000, + "target_top_langs": [ + "Tay", + "Muong", + "Khmer", + "Nung" + ], + "target_top_religion": "Ethnic Religions", + "neighbors": [ + { + "name": "Central Mnong", + "country": "Vietnam", + "lang": "Mnong, Central", + "rol3": "cmo", + "pct_christian": 62.5, + "pop": 36000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 12.5, + "lng": 107.57, + "code": "PG011118" + }, + { + "name": "Southern Mnong", + "country": "Vietnam", + "lang": "Mnong, Southern", + "rol3": "mnn", + "pct_christian": 62.5, + "pop": 33500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 11.99, + "lng": 107.56, + "code": "PG011224" + }, + { + "name": "Rhade", + "country": "Vietnam", + "lang": "Rade", + "rol3": "rad", + "pct_christian": 45.0, + "pop": 331000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 12.96, + "lng": 108.31, + "code": "PG011211" + }, + { + "name": "Stieng", + "country": "Vietnam", + "lang": "Stieng, Bulo", + "rol3": "sti", + "pct_christian": 45.0, + "pop": 85500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 11.87, + "lng": 107.08, + "code": "PG011226" + }, + { + "name": "Maa", + "country": "Vietnam", + "lang": "Maa", + "rol3": "cma", + "pct_christian": 45.0, + "pop": 41500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 11.61, + "lng": 107.49, + "code": "PG011179" + }, + { + "name": "Chru", + "country": "Vietnam", + "lang": "Chru", + "rol3": "cje", + "pct_christian": 45.0, + "pop": 19500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 11.69, + "lng": 108.54, + "code": "PG011123" + }, + { + "name": "Hmong", + "country": "Vietnam", + "lang": "Hmong Daw", + "rol3": "mww", + "pct_christian": 35.0, + "pop": 1330000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 21.86, + "lng": 103.59, + "code": "PG011142" + }, + { + "name": "Koho", + "country": "Vietnam", + "lang": "Koho", + "rol3": "kpm", + "pct_christian": 35.0, + "pop": 166000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 11.63, + "lng": 108.01, + "code": "PG011167" + }, + { + "name": "Chrau", + "country": "Vietnam", + "lang": "Chrau", + "rol3": "crw", + "pct_christian": 35.0, + "pop": 27000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 10.91, + "lng": 107.29, + "code": "PG011122" + }, + { + "name": "Jarai", + "country": "Vietnam", + "lang": "Jarai", + "rol3": "jra", + "pct_christian": 25.0, + "pop": 411000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 13.93, + "lng": 108.21, + "code": "PG011149" + }, + { + "name": "Jeh", + "country": "Vietnam", + "lang": "Jeh", + "rol3": "jeh", + "pct_christian": 25.0, + "pop": 51000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 15.19, + "lng": 107.91, + "code": "PG011150" + }, + { + "name": "Eastern Mnong", + "country": "Vietnam", + "lang": "Mnong, Eastern", + "rol3": "mng", + "pct_christian": 25.0, + "pop": 33500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 12.31, + "lng": 108.34, + "code": "PG011128" + }, + { + "name": "Trieng", + "country": "Vietnam", + "lang": "Trieng", + "rol3": "stg", + "pct_christian": 25.0, + "pop": 19000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 15.48, + "lng": 107.55, + "code": "PG011239" + }, + { + "name": "Halang", + "country": "Vietnam", + "lang": "Halang", + "rol3": "hal", + "pct_christian": 25.0, + "pop": 16500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 14.62, + "lng": 107.64, + "code": "PG011135" + }, + { + "name": "O-du", + "country": "Vietnam", + "lang": "O’du", + "rol3": "tyh", + "pct_christian": 17.5, + "pop": 375.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.48, + "lng": 104.58, + "code": "PG020927" + }, + { + "name": "Northern Roglai", + "country": "Vietnam", + "lang": "Roglai, Northern", + "rol3": "rog", + "pct_christian": 12.5, + "pop": 65000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Christianity - Protestantism", + "lat": 12.16, + "lng": 108.85, + "code": "PG011190" + }, + { + "name": "Brao", + "country": "Vietnam", + "lang": "Brao", + "rol3": "brb", + "pct_christian": 12.5, + "pop": 400.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 14.17, + "lng": 107.43, + "code": "PG011112" + }, + { + "name": "Han Chinese", + "country": "Vietnam", + "lang": "Chinese, Mandarin", + "rol3": "cmn", + "pct_christian": 7.5, + "pop": 1620000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 21.04, + "lng": 106.1, + "code": "PG033473" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Vietnam", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 784000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 21.03, + "lng": 105.82, + "code": "PG046444" + }, + { + "name": "Bahnar", + "country": "Vietnam", + "lang": "Bahnar", + "rol3": "bdq", + "pct_christian": 7.5, + "pop": 228000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 14.05, + "lng": 108.45, + "code": "PG011108" + }, + { + "name": "San Chay", + "country": "Vietnam", + "lang": "Cao Lan", + "rol3": "mlc", + "pct_christian": 7.5, + "pop": 170000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion", + "lat": 21.86, + "lng": 105.77, + "code": "PG011217" + }, + { + "name": "Hre", + "country": "Vietnam", + "lang": "Hre", + "rol3": "hre", + "pct_christian": 7.5, + "pop": 127000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 14.7, + "lng": 108.66, + "code": "PG011143" + }, + { + "name": "Eastern Bru", + "country": "Vietnam", + "lang": "Bru, Eastern", + "rol3": "bru", + "pct_christian": 7.5, + "pop": 74500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 16.94, + "lng": 106.67, + "code": "PG011126" + }, + { + "name": "Lahu", + "country": "Vietnam", + "lang": "Lahu", + "rol3": "lhu", + "pct_christian": 7.5, + "pop": 9700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 22.56, + "lng": 102.66, + "code": "PG011172" + }, + { + "name": "Gelao", + "country": "Vietnam", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 23.08, + "lng": 105.2, + "code": "PG011133" + }, + { + "name": "Iu Mien", + "country": "Vietnam", + "lang": "Iu Mien", + "rol3": "ium", + "pct_christian": 3.5, + "pop": 433000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Polytheism", + "lat": 22.01, + "lng": 105.54, + "code": "PG011148" + }, + { + "name": "Eastern Cham", + "country": "Vietnam", + "lang": "Cham, Eastern", + "rol3": "cjm", + "pct_christian": 3.5, + "pop": 88500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Hinduism - Folk", + "lat": 10.94, + "lng": 107.68, + "code": "PG011127" + }, + { + "name": "Cua", + "country": "Vietnam", + "lang": "Cua", + "rol3": "cua", + "pct_christian": 3.5, + "pop": 34000.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 15.15, + "lng": 108.39, + "code": "PG011125" + }, + { + "name": "Khao", + "country": "Vietnam", + "lang": "Khao", + "rol3": "xao", + "pct_christian": 3.5, + "pop": 18500.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 21.44, + "lng": 103.48, + "code": "PG011159" + }, + { + "name": "Romam", + "country": "Vietnam", + "lang": "Romam", + "rol3": "rmx", + "pct_christian": 3.5, + "pop": 700.0, + "bridge": "same-country", + "adjacency": "same-country", + "religion_bg": "Ethnoreligion - Animism", + "lat": 14.42, + "lng": 107.55, + "code": "PG011212" + }, + { + "name": "Vietnamese", + "country": "Thailand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 25.0, + "pop": 119000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": 13.76, + "lng": 100.56, + "code": "PG010933" + }, + { + "name": "Akha", + "country": "Thailand", + "lang": "Akha", + "rol3": "ahk", + "pct_christian": 17.5, + "pop": 58000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 20.08, + "lng": 99.66, + "code": "PG010820" + }, + { + "name": "Sin", + "country": "Laos", + "lang": "Lao", + "rol3": "lao", + "pct_christian": 12.5, + "pop": 300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 18.06, + "lng": 105.09, + "code": "PG050561" + }, + { + "name": "Han Chinese, Cantonese", + "country": "China", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 64770000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.94, + "lng": 111.32, + "code": "PG006808" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Hong Kong", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 6255000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.38, + "lng": 114.13, + "code": "PG050587" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Malaysia", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 1900000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 3.65, + "lng": 101.56, + "code": "PG046594" + }, + { + "name": "Khmu, Ou", + "country": "Laos", + "lang": "Khmu", + "rol3": "kjg", + "pct_christian": 7.5, + "pop": 817000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.8, + "lng": 102.58, + "code": "PG020913" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Macao", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 663000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.16, + "lng": 113.56, + "code": "PG050584" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Singapore", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 511000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 1.36, + "lng": 103.82, + "code": "PG020725" + }, + { + "name": "Han Chinese", + "country": "United Kingdom", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 196000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 51.5, + "lng": -0.17, + "code": "PG043796" + }, + { + "name": "Vietnamese", + "country": "Australia", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 174000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": -33.38, + "lng": 143.4, + "code": "PG008087" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Peru", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 117000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -12.05, + "lng": -77.02, + "code": "PG017533" + }, + { + "name": "Han Chinese", + "country": "Panama", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 68500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 8.5, + "lng": -82.42, + "code": "PG024831" + }, + { + "name": "Han Chinese", + "country": "Trinidad and Tobago", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 44500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 10.68, + "lng": -61.38, + "code": "PG016447" + }, + { + "name": "Iu Mien", + "country": "United States", + "lang": "Iu Mien", + "rol3": "ium", + "pct_christian": 7.5, + "pop": 38500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 38.75, + "lng": -111.78, + "code": "PG043283" + }, + { + "name": "Han Chinese", + "country": "Laos", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 36500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 17.97, + "lng": 102.64, + "code": "PG009111" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Venezuela", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 30000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 10.48, + "lng": -66.88, + "code": "PG016472" + }, + { + "name": "Han Chinese", + "country": "Mexico", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 26000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 20.65, + "lng": -101.28, + "code": "PG024949" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Dominican Republic", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 12000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 18.48, + "lng": -69.91, + "code": "PG016322" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Ecuador", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 9600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": -0.18, + "lng": -78.49, + "code": "PG042924" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Belgium", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 50.85, + "lng": 4.38, + "code": "PG000058" + }, + { + "name": "Pako Kado", + "country": "Laos", + "lang": "Pacoh", + "rol3": "pac", + "pct_christian": 7.5, + "pop": 9200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 16.41, + "lng": 106.8, + "code": "PG050547" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Mauritius", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 8400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -20.24, + "lng": 57.49, + "code": "PG015361" + }, + { + "name": "Han Chinese", + "country": "Brunei", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 4.91, + "lng": 114.92, + "code": "PG033444" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Honduras", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 7700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 14.08, + "lng": -87.2, + "code": "PG024760" + }, + { + "name": "Vietnamese", + "country": "New Zealand", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 7.5, + "pop": 4900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": -36.89, + "lng": 174.78, + "code": "PG018514" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Guyana", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 3300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 6.8, + "lng": -58.15, + "code": "PG016362" + }, + { + "name": "Pako Kanai", + "country": "Laos", + "lang": "Pacoh", + "rol3": "pac", + "pct_christian": 7.5, + "pop": 2000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 16.53, + "lng": 106.84, + "code": "PG050548" + }, + { + "name": "Khmu", + "country": "France", + "lang": "Khmu", + "rol3": "kjg", + "pct_christian": 7.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 48.88, + "lng": 2.37, + "code": "PG048522" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Haiti", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 7.5, + "pop": 550.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 18.55, + "lng": -72.32, + "code": "PG016380" + }, + { + "name": "Han Chinese, Cantonese", + "country": "United States", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 3.5, + "pop": 1030000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.02, + "lng": -113.16, + "code": "PG043259" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Canada", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 3.5, + "pop": 569000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 46.93, + "lng": -92.67, + "code": "PG047426" + }, + { + "name": "Akha", + "country": "Myanmar", + "lang": "Akha", + "rol3": "ahk", + "pct_christian": 3.5, + "pop": 230000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 21.71, + "lng": 99.8, + "code": "PG009402" + }, + { + "name": "Kinh", + "country": "Laos", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 138000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 17.97, + "lng": 102.64, + "code": "PG020963" + }, + { + "name": "Vietnamese Migrant Workers", + "country": "Malaysia", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 85000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Confucianism", + "lat": 5.35, + "lng": 100.41, + "code": "PG046599" + }, + { + "name": "Mien", + "country": "Thailand", + "lang": "Iu Mien", + "rol3": "ium", + "pct_christian": 3.5, + "pop": 46500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 19.13, + "lng": 100.45, + "code": "PG010890" + }, + { + "name": "Ta Oi", + "country": "Laos", + "lang": "Ta’oih, Upper", + "rol3": "tth", + "pct_christian": 3.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 16.08, + "lng": 106.7, + "code": "PG020964" + }, + { + "name": "Han Chinese", + "country": "Reunion", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 3.5, + "pop": 31500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -20.92, + "lng": 55.51, + "code": "PG015468" + }, + { + "name": "Neisu", + "country": "China", + "lang": "Akha", + "rol3": "ahk", + "pct_christian": 3.5, + "pop": 28000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.17, + "lng": 100.64, + "code": "PG007334" + }, + { + "name": "Lao", + "country": "Myanmar", + "lang": "Lao", + "rol3": "lao", + "pct_christian": 3.5, + "pop": 26000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Theravada", + "lat": 16.85, + "lng": 96.15, + "code": "PG009467" + }, + { + "name": "Black Tai", + "country": "Thailand", + "lang": "Tai Dam", + "rol3": "blt", + "pct_christian": 3.5, + "pop": 25000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 19.92, + "lng": 99.84, + "code": "PG010830" + }, + { + "name": "Khmu", + "country": "United States", + "lang": "Khmu", + "rol3": "kjg", + "pct_christian": 3.5, + "pop": 9300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 32.77, + "lng": -117.08, + "code": "PG043302" + }, + { + "name": "Macanese", + "country": "Macao", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 3.5, + "pop": 8900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 22.16, + "lng": 113.56, + "code": "PG050585" + }, + { + "name": "Vietnamese", + "country": "Netherlands", + "lang": "Vietnamese", + "rol3": "vie", + "pct_christian": 3.5, + "pop": 8800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Buddhism - Mahayana", + "lat": 52.47, + "lng": 5.36, + "code": "PG000445" + }, + { + "name": "Ta-Oy Yin", + "country": "Laos", + "lang": "Ta’oih, Upper", + "rol3": "tth", + "pct_christian": 3.5, + "pop": 8500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 15.72, + "lng": 106.48, + "code": "PG050569" + }, + { + "name": "Meng", + "country": "China", + "lang": "Hani", + "rol3": "hni", + "pct_christian": 3.5, + "pop": 5300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 22.89, + "lng": 101.81, + "code": "PG007280" + }, + { + "name": "Iu Mien", + "country": "France", + "lang": "Iu Mien", + "rol3": "ium", + "pct_christian": 3.5, + "pop": 2300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 43.61, + "lng": 1.41, + "code": "PG000166" + }, + { + "name": "Han Chinese, Cantonese", + "country": "Zimbabwe", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 3.5, + "pop": 1600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -17.83, + "lng": 31.03, + "code": "PG015656" + }, + { + "name": "Han Chinese", + "country": "Curacao", + "lang": "Chinese, Yue", + "rol3": "yue", + "pct_christian": 3.5, + "pop": 1100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": 12.19, + "lng": -68.97, + "code": "PG016401" + }, + { + "name": "Sadang Duan", + "country": "Laos", + "lang": "Sedang", + "rol3": "sed", + "pct_christian": 3.5, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 14.73, + "lng": 107.51, + "code": "PG050560" + }, + { + "name": "Ta-Oy Haang", + "country": "Laos", + "lang": "Ta’oih, Upper", + "rol3": "tth", + "pct_christian": 3.5, + "pop": 300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 15.93, + "lng": 106.55, + "code": "PG050565" + } + ] + }, + "Israel": { + "target_upg": 42, + "target_pop": 9176590, + "target_top_langs": [ + "Hebrew", + "Arabic, Levantine", + "Russian", + "Yiddish, Eastern" + ], + "target_top_religion": "Ethnic Religions", + "neighbors": [ + { + "name": "Syrian Christian", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 62.5, + "pop": 4495000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 12.35, + "lng": 76.09, + "code": "PG041308" + }, + { + "name": "Pulayan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 45.0, + "pop": 1540000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 10.06, + "lng": 76.53, + "code": "PG041344" + }, + { + "name": "Malai Arayan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 35.0, + "pop": 48000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 9.65, + "lng": 76.66, + "code": "PG041952" + }, + { + "name": "Bakole", + "country": "Cameroon", + "lang": "French", + "rol3": "fra", + "pct_christian": 35.0, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 4.43, + "lng": 8.97, + "code": "PG012493" + }, + { + "name": "Tupari", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 35.0, + "pop": 175.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -12.09, + "lng": -63.32, + "code": "PG017148" + }, + { + "name": "Paravar", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 25.0, + "pop": 162000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 8.62, + "lng": 77.0, + "code": "PG041743" + }, + { + "name": "Koh", + "country": "India", + "lang": "Marathi", + "rol3": "mar", + "pct_christian": 25.0, + "pop": 96500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 20.29, + "lng": 76.9, + "code": "PG041285" + }, + { + "name": "Mozambican", + "country": "Portugal", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 25.0, + "pop": 40500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 38.77, + "lng": -9.25, + "code": "PG000493" + }, + { + "name": "Amhara", + "country": "Canada", + "lang": "Amharic", + "rol3": "amh", + "pct_christian": 25.0, + "pop": 14000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 43.83, + "lng": -79.46, + "code": "PG047403" + }, + { + "name": "Romanian", + "country": "Czech Republic", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 25.0, + "pop": 12500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 50.07, + "lng": 14.47, + "code": "PG050033" + }, + { + "name": "Kerala Mudali", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 25.0, + "pop": 11000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 9.44, + "lng": 78.7, + "code": "PG049672" + }, + { + "name": "PoaPoa", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 25.0, + "pop": 50.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -20.87, + "lng": 164.66, + "code": "PG018370" + }, + { + "name": "Russian", + "country": "Moldova", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 17.5, + "pop": 133000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.13, + "lng": 29.34, + "code": "PG000867" + }, + { + "name": "Brazilian", + "country": "French Guiana", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 17.5, + "pop": 16500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 4.92, + "lng": -52.3, + "code": "PG016329" + }, + { + "name": "Machineri", + "country": "Bolivia", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 17.5, + "pop": 35.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -10.96, + "lng": -69.48, + "code": "PG046933" + }, + { + "name": "Mang", + "country": "India", + "lang": "Marathi", + "rol3": "mar", + "pct_christian": 12.5, + "pop": 3040000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 20.38, + "lng": 76.05, + "code": "PG041315" + }, + { + "name": "Brazilian", + "country": "Paraguay", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 12.5, + "pop": 461000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": -25.3, + "lng": -57.56, + "code": "PG046804" + }, + { + "name": "Korean", + "country": "Uzbekistan", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 12.5, + "pop": 254000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Atheism", + "lat": 41.31, + "lng": 69.26, + "code": "PG024684" + }, + { + "name": "Mannan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 12.5, + "pop": 145000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.8, + "lng": 76.55, + "code": "PG041756" + }, + { + "name": "Arab, Egyptian", + "country": "Australia", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 12.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": -31.94, + "lng": 115.89, + "code": "PG020254" + }, + { + "name": "Pole", + "country": "Kazakhstan", + "lang": "Polish", + "rol3": "pol", + "pct_christian": 12.5, + "pop": 62000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 43.29, + "lng": 76.91, + "code": "PG024292" + }, + { + "name": "Euronesian", + "country": "French Polynesia", + "lang": "French", + "rol3": "fra", + "pct_christian": 12.5, + "pop": 58500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -17.56, + "lng": -149.57, + "code": "PG018408" + }, + { + "name": "Moldovan", + "country": "United States", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 12.5, + "pop": 49000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 40.17, + "lng": -74.79, + "code": "PG047277" + }, + { + "name": "Euronesian", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 12.5, + "pop": 14500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -22.27, + "lng": 166.45, + "code": "PG018406" + }, + { + "name": "Sao Tomean", + "country": "Portugal", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 12.5, + "pop": 8500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 38.65, + "lng": -9.1, + "code": "PG000499" + }, + { + "name": "Malayali", + "country": "Maldives", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 12.5, + "pop": 950.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 4.17, + "lng": 73.51, + "code": "PG006163" + }, + { + "name": "Brazilian", + "country": "Austria", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 12.5, + "pop": 850.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 48.18, + "lng": 16.35, + "code": "PG000009" + }, + { + "name": "Aeke", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 12.5, + "pop": 350.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -21.07, + "lng": 164.88, + "code": "PG009564" + }, + { + "name": "Kanoe", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 12.5, + "pop": 325.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -11.73, + "lng": -62.68, + "code": "PG016942" + }, + { + "name": "Brazilian", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 206240000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": -12.63, + "lng": -48.09, + "code": "PG016600" + }, + { + "name": "Cheruman", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 467000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.61, + "lng": 76.25, + "code": "PG041452" + }, + { + "name": "Brazilian", + "country": "United States", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 320000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 34.44, + "lng": -97.31, + "code": "PG046522" + }, + { + "name": "Brazilian", + "country": "United Kingdom", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 275000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 51.5, + "lng": -0.17, + "code": "PG048432" + }, + { + "name": "Malayali", + "country": "Malaysia", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 206000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 3.07, + "lng": 101.64, + "code": "PG020224" + }, + { + "name": "Brazilian", + "country": "Portugal", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 182000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 40.04, + "lng": -8.79, + "code": "PG000471" + }, + { + "name": "Romanian", + "country": "United States", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 7.5, + "pop": 173000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 36.09, + "lng": -110.56, + "code": "PG043611" + }, + { + "name": "Malayali", + "country": "United States", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 165000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 40.72, + "lng": -73.97, + "code": "PG043340" + }, + { + "name": "French", + "country": "New Caledonia", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 93500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -21.33, + "lng": 165.49, + "code": "PG018389" + }, + { + "name": "Angolan", + "country": "Portugal", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 80500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 39.0, + "lng": -9.17, + "code": "PG000467" + }, + { + "name": "Brazilian", + "country": "Italy", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 46500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 45.54, + "lng": 9.19, + "code": "PG048554" + }, + { + "name": "Mang Garodi", + "country": "India", + "lang": "Marathi", + "rol3": "mar", + "pct_christian": 7.5, + "pop": 42000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 18.57, + "lng": 74.08, + "code": "PG041892" + }, + { + "name": "Assyrian", + "country": "Australia", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 7.5, + "pop": 40000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.85, + "lng": 151.03, + "code": "PG007833" + }, + { + "name": "Hasidim", + "country": "United Kingdom", + "lang": "Hebrew", + "rol3": "heb", + "pct_christian": 7.5, + "pop": 32500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Judaism", + "lat": 51.5, + "lng": -0.17, + "code": "PG000648" + }, + { + "name": "Uraly", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 29500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 12.85, + "lng": 75.26, + "code": "PG041815" + }, + { + "name": "Russian", + "country": "Australia", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 7.5, + "pop": 28500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": -33.52, + "lng": 142.46, + "code": "PG008063" + }, + { + "name": "Brazilian", + "country": "Canada", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 28000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 43.83, + "lng": -79.46, + "code": "PG047367" + }, + { + "name": "Arab, Egyptian", + "country": "Germany", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 25500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 52.5, + "lng": 13.4, + "code": "PG042462" + }, + { + "name": "Brazilian", + "country": "Switzerland", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 21500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 47.43, + "lng": 8.44, + "code": "PG048542" + }, + { + "name": "Malai Vedan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 7.5, + "pop": 18500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 9.91, + "lng": 77.99, + "code": "PG042150" + }, + { + "name": "Portuguese", + "country": "Argentina", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 18000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -34.65, + "lng": -58.56, + "code": "PG017360" + }, + { + "name": "Brazilian", + "country": "Belgium", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 17000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 50.85, + "lng": 4.38, + "code": "PG047834" + }, + { + "name": "Sake", + "country": "Gabon", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 0.07, + "lng": 11.63, + "code": "PG013210" + }, + { + "name": "Burundi", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 45.58, + "lng": -73.7, + "code": "PG050494" + }, + { + "name": "Brazilian", + "country": "Guyana", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 10500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 6.49, + "lng": -58.12, + "code": "PG016369" + }, + { + "name": "Burundi", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 37.74, + "lng": -92.31, + "code": "PG047181" + }, + { + "name": "Kokama", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 9600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": -3.43, + "lng": -64.82, + "code": "PG016815" + }, + { + "name": "Arab, Lebanese", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024837" + }, + { + "name": "Arab, Palestinian", + "country": "Panama", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 7.5, + "pop": 9500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 9.34, + "lng": -79.87, + "code": "PG024839" + }, + { + "name": "Iranian", + "country": "Armenia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 7900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 40.17, + "lng": 44.49, + "code": "PG050098" + }, + { + "name": "Brazilian", + "country": "Jamaica", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 6000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Folk Catholicism", + "lat": 18.05, + "lng": -76.95, + "code": "PG016388" + }, + { + "name": "Arab, Egyptian", + "country": "Belgium", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 7.5, + "pop": 5300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 50.85, + "lng": 4.38, + "code": "PG000053" + }, + { + "name": "Pole", + "country": "Uzbekistan", + "lang": "Polish", + "rol3": "pol", + "pct_christian": 7.5, + "pop": 3700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 41.31, + "lng": 69.26, + "code": "PG024310" + }, + { + "name": "Tremembe", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 3000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -3.09, + "lng": -40.02, + "code": "PG017135" + }, + { + "name": "Iranian", + "country": "Greece", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 7.5, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 38.05, + "lng": 23.7, + "code": "PG047071" + }, + { + "name": "Kande", + "country": "Gabon", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -0.09, + "lng": 11.75, + "code": "PG013189" + }, + { + "name": "Chadian", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.58, + "lng": -73.7, + "code": "PG050504" + }, + { + "name": "New Caledonian", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 1100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 49.22, + "lng": -122.99, + "code": "PG047444" + }, + { + "name": "Rikbaktsa", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 950.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -11.27, + "lng": -58.27, + "code": "PG017085" + }, + { + "name": "Kambeba", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 850.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": -3.17, + "lng": -64.85, + "code": "PG016936" + }, + { + "name": "Miranha", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 850.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -2.86, + "lng": -64.74, + "code": "PG017022" + }, + { + "name": "Gabonese", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 38.9, + "lng": -77.19, + "code": "PG047191" + }, + { + "name": "Makurap", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 475.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -12.56, + "lng": -62.57, + "code": "PG017001" + }, + { + "name": "Chinese-Tahitian Creole", + "country": "French Polynesia", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Chinese Folk Religion", + "lat": -17.56, + "lng": -149.57, + "code": "PG018407" + }, + { + "name": "Chadian", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 7.5, + "pop": 250.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 38.02, + "lng": -84.5, + "code": "PG047189" + }, + { + "name": "Kariri", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 7.5, + "pop": 125.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -7.27, + "lng": -39.77, + "code": "PG016956" + }, + { + "name": "Romanian", + "country": "Romania", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 16370000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 45.84, + "lng": 24.98, + "code": "PG000899" + }, + { + "name": "Variyar", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 3.5, + "pop": 14170000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 12.13, + "lng": 78.55, + "code": "PG042083" + }, + { + "name": "Izhattu Pillaimar", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 3.5, + "pop": 8520000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 10.6, + "lng": 77.56, + "code": "PG041254" + }, + { + "name": "Russian", + "country": "Ukraine", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 7080000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 47.69, + "lng": 34.82, + "code": "PG042915" + }, + { + "name": "Walloon", + "country": "Belgium", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 3755000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 50.32, + "lng": 4.95, + "code": "PG000076" + }, + { + "name": "Swiss", + "country": "Switzerland", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 2015000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 46.6, + "lng": 6.93, + "code": "PG000585" + }, + { + "name": "Kokna", + "country": "India", + "lang": "Marathi", + "rol3": "mar", + "pct_christian": 3.5, + "pop": 1360000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 20.59, + "lng": 73.8, + "code": "PG041403" + }, + { + "name": "Romanian", + "country": "Italy", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 1300000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 44.5, + "lng": 9.8, + "code": "PG048833" + }, + { + "name": "Portuguese", + "country": "France", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 3.5, + "pop": 984000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 47.39, + "lng": 2.44, + "code": "PG000186" + }, + { + "name": "Portuguese", + "country": "United States", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 3.5, + "pop": 861000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 39.45, + "lng": -96.6, + "code": "PG046462" + }, + { + "name": "Portuguese", + "country": "Canada", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 3.5, + "pop": 307000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 46.93, + "lng": -92.67, + "code": "PG043365" + }, + { + "name": "Thandan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 3.5, + "pop": 285000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 9.05, + "lng": 76.86, + "code": "PG041497" + }, + { + "name": "Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 260000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 52.48, + "lng": 12.44, + "code": "PG049403" + }, + { + "name": "Portuguese", + "country": "Venezuela", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 3.5, + "pop": 242000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 10.47, + "lng": -69.1, + "code": "PG016488" + }, + { + "name": "Egyptian Copt", + "country": "United States", + "lang": "Arabic, Egyptian", + "rol3": "arz", + "pct_christian": 3.5, + "pop": 242000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 35.35, + "lng": -111.99, + "code": "PG047347" + }, + { + "name": "Arab, Lebanese", + "country": "Canada", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 234000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.53, + "lng": -73.66, + "code": "PG043431" + }, + { + "name": "Jew", + "country": "Russian Federation", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 208000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated - Agnosticism", + "lat": 52.97, + "lng": 74.32, + "code": "PG042910" + }, + { + "name": "Persian", + "country": "Canada", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 201000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 46.93, + "lng": -92.67, + "code": "PG043458" + }, + { + "name": "Arab, Syrian", + "country": "United States", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 193000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 40.7, + "lng": -73.87, + "code": "PG043644" + }, + { + "name": "Iranian", + "country": "Germany", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 175000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 52.51, + "lng": 11.69, + "code": "PG000259" + }, + { + "name": "Russian", + "country": "Lithuania", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 155000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 55.25, + "lng": 24.5, + "code": "PG000853" + }, + { + "name": "Persian", + "country": "Turkiye", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 130000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 41.04, + "lng": 28.87, + "code": "PG024581" + }, + { + "name": "Jew, Russian", + "country": "Germany", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 99500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Judaism", + "lat": 52.5, + "lng": 13.4, + "code": "PG046578" + }, + { + "name": "Romanian", + "country": "Hungary", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 96500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 46.8, + "lng": 20.84, + "code": "PG000835" + }, + { + "name": "Persian", + "country": "United Kingdom", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 86000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 51.5, + "lng": -0.17, + "code": "PG000643" + }, + { + "name": "Romanian ", + "country": "Austria", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 84500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 48.18, + "lng": 16.35, + "code": "PG049963" + }, + { + "name": "Franco-Mauritian", + "country": "Mauritius", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 72500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": -20.25, + "lng": 57.51, + "code": "PG015346" + }, + { + "name": "Assyrian", + "country": "Germany", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 70000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 50.03, + "lng": 8.25, + "code": "PG000214" + }, + { + "name": "Assyrian", + "country": "United States", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 70000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 37.75, + "lng": -122.21, + "code": "PG043528" + }, + { + "name": "Hungarian", + "country": "Austria", + "lang": "Hungarian", + "rol3": "hun", + "pct_christian": 3.5, + "pop": 64500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 47.59, + "lng": 16.37, + "code": "PG000021" + }, + { + "name": "Russian", + "country": "United Kingdom", + "lang": "Russian", + "rol3": "rus", + "pct_christian": 3.5, + "pop": 64000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 51.5, + "lng": -0.17, + "code": "PG000675" + }, + { + "name": "Kurichian", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 3.5, + "pop": 52500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism - Folk", + "lat": 11.72, + "lng": 76.1, + "code": "PG041910" + }, + { + "name": "Hungarian", + "country": "Canada", + "lang": "Hungarian", + "rol3": "hun", + "pct_christian": 3.5, + "pop": 42000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Unaffiliated", + "lat": 43.83, + "lng": -79.46, + "code": "PG043408" + }, + { + "name": "Sillekyatha", + "country": "India", + "lang": "Marathi", + "rol3": "mar", + "pct_christian": 3.5, + "pop": 34500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 15.11, + "lng": 76.53, + "code": "PG042138" + }, + { + "name": "Romanian", + "country": "Ireland", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 32000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 53.39, + "lng": -6.28, + "code": "PG048049" + }, + { + "name": "Bissau-Guineans", + "country": "Portugal", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 3.5, + "pop": 16500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 39.0, + "lng": -9.17, + "code": "PG000482" + }, + { + "name": "Moldovan", + "country": "Canada", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 16000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 49.72, + "lng": -95.67, + "code": "PG047364" + }, + { + "name": "Romanian", + "country": "France", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 13000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 48.84, + "lng": 2.35, + "code": "PG000192" + }, + { + "name": "Assyrian", + "country": "Canada", + "lang": "Assyrian Neo-Aramaic", + "rol3": "aii", + "pct_christian": 3.5, + "pop": 11500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Orthodox", + "lat": 43.83, + "lng": -79.46, + "code": "PG043355" + }, + { + "name": "Portuguese", + "country": "Macao", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 3.5, + "pop": 10000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 22.16, + "lng": 113.56, + "code": "PG050586" + }, + { + "name": "Persian", + "country": "Indonesia", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 8000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": -6.21, + "lng": 106.83, + "code": "PG050238" + }, + { + "name": "Kummara , Kusuvan", + "country": "India", + "lang": "Malayalam", + "rol3": "mal", + "pct_christian": 3.5, + "pop": 7000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Hinduism", + "lat": 12.31, + "lng": 75.54, + "code": "PG048341" + }, + { + "name": "French Caribbean", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 6300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 45.5, + "lng": -73.81, + "code": "PG047395" + }, + { + "name": "Togolese", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 5600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": 45.52, + "lng": -73.68, + "code": "PG050478" + }, + { + "name": "Congolese", + "country": "Spain", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 4800.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 40.41, + "lng": -3.69, + "code": "PG042340" + }, + { + "name": "Abenaki", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 3900.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 46.07, + "lng": -72.82, + "code": "PG043348" + }, + { + "name": "Ivorian", + "country": "United States", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 3600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": 40.74, + "lng": -73.72, + "code": "PG047266" + }, + { + "name": "Persian", + "country": "South Korea", + "lang": "Persian, Iranian", + "rol3": "pes", + "pct_christian": 3.5, + "pop": 3500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Shia", + "lat": 37.55, + "lng": 126.99, + "code": "PG050237" + }, + { + "name": "Guinean", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 2400.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 45.5, + "lng": -73.81, + "code": "PG047454" + }, + { + "name": "Sighu", + "country": "Gabon", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 2100.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Protestantism", + "lat": -0.84, + "lng": 12.69, + "code": "PG013213" + }, + { + "name": "Rwandan", + "country": "Netherlands", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 1700.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 51.9, + "lng": 4.47, + "code": "PG000430" + }, + { + "name": "Gabonese", + "country": "Canada", + "lang": "French", + "rol3": "fra", + "pct_christian": 3.5, + "pop": 1600.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 45.58, + "lng": -73.7, + "code": "PG050505" + }, + { + "name": "Romanian", + "country": "Venezuela", + "lang": "Romanian", + "rol3": "ron", + "pct_christian": 3.5, + "pop": 1500.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Christianity - Roman Catholicism", + "lat": 10.48, + "lng": -66.88, + "code": "PG016490" + }, + { + "name": "Arab, Palestinian", + "country": "El Salvador", + "lang": "Arabic, Levantine", + "rol3": "apc", + "pct_christian": 3.5, + "pop": 1300.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Islam - Sunni", + "lat": 13.71, + "lng": -89.19, + "code": "PG039263" + }, + { + "name": "Chiquitano", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 3.5, + "pop": 1000.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": -16.15, + "lng": -59.48, + "code": "PG050662" + }, + { + "name": "Poyanawa", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 3.5, + "pop": 550.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -7.55, + "lng": -73.09, + "code": "PG017081" + }, + { + "name": "Jabuti", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 3.5, + "pop": 200.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion", + "lat": -12.08, + "lng": -64.7, + "code": "PG016889" + }, + { + "name": "Yuruti", + "country": "Brazil", + "lang": "Portuguese", + "rol3": "por", + "pct_christian": 3.5, + "pop": 40.0, + "bridge": "same-language", + "adjacency": "shared-language", + "religion_bg": "Ethnoreligion - Animism", + "lat": 0.61, + "lng": -69.19, + "code": "PG017210" + } + ] + } + } +} \ No newline at end of file diff --git a/plugin-designs/upg-neighbor/src/flower-mesh.vue b/plugin-designs/upg-neighbor/src/flower-mesh.vue new file mode 100644 index 000000000..bb95f64d9 --- /dev/null +++ b/plugin-designs/upg-neighbor/src/flower-mesh.vue @@ -0,0 +1,515 @@ + + + diff --git a/plugin-designs/upg-neighbor/src/lang-cluster.vue b/plugin-designs/upg-neighbor/src/lang-cluster.vue new file mode 100644 index 000000000..6bc9dbbbf --- /dev/null +++ b/plugin-designs/upg-neighbor/src/lang-cluster.vue @@ -0,0 +1,574 @@ + + + diff --git a/plugin-designs/upg-neighbor/src/send-map.vue b/plugin-designs/upg-neighbor/src/send-map.vue new file mode 100644 index 000000000..3b553b67f --- /dev/null +++ b/plugin-designs/upg-neighbor/src/send-map.vue @@ -0,0 +1,523 @@ + + + diff --git a/plugin-designs/upg-neighbor/upg-neighbor.instances.json b/plugin-designs/upg-neighbor/upg-neighbor.instances.json index 61c58df2c..46582d630 100644 --- a/plugin-designs/upg-neighbor/upg-neighbor.instances.json +++ b/plugin-designs/upg-neighbor/upg-neighbor.instances.json @@ -1,46 +1,41 @@ { - "//": "Five preset renders of the legacy-wrapper profile -- one per legacy map rescued by the experimental roundup (EXPERIMENTAL-MAPS-ROUNDUP.md). props follow the cap-2 instances contract (props, not config -- measured: config was silently dropped from BASE_CONFIG and every instance page rendered the default send-map).", + "//": "Five preset renders of the upg-neighbor profile -- one per lens of the old doxa-upg-neighbor bundle (moved natively from app-profiles on 2026-09-24; EXPERIMENTAL-MAPS-ROUNDUP.md). Each row opens a different lens via props.view; the view-switcher reaches the rest. Ids are unchanged from the retired iframe wrapper so existing embed URLs keep working.", "profile": "upg-neighbor", "instances": [ { "id": "send-map", - "title": "Send Map (legacy)", + "title": "Send Map", "props": { - "legacyElement": "send-map", - "legacyTitle": "Send Map" + "view": "send-map" } }, { "id": "upg-neighbors", - "title": "UPG Neighbors (legacy)", + "title": "UPG Neighbors", "props": { - "legacyElement": "upg-neighbors", - "legacyTitle": "UPG Neighbors" + "view": "cockpit" } }, { "id": "lang-cluster", - "title": "Language Clusters (legacy)", + "title": "Language Clusters", "props": { - "legacyElement": "lang-cluster", - "legacyTitle": "Language Clusters" + "view": "lang-cluster" } }, { "id": "bloom-cockpit", - "title": "Bloom Cockpit (legacy)", + "title": "Bloom Cockpit", "props": { - "legacyElement": "bloom-cockpit", - "legacyTitle": "Bloom Cockpit" + "view": "cockpit" } }, { "id": "flower-mesh", - "title": "Flower Mesh (legacy)", + "title": "Flower Mesh", "props": { - "legacyElement": "flower-mesh", - "legacyTitle": "Flower Mesh" + "view": "flower-mesh" } } ] -} \ No newline at end of file +} diff --git a/plugin-designs/upg-neighbor/upg-neighbor.meta.json b/plugin-designs/upg-neighbor/upg-neighbor.meta.json new file mode 100644 index 000000000..a495506c3 --- /dev/null +++ b/plugin-designs/upg-neighbor/upg-neighbor.meta.json @@ -0,0 +1,5 @@ +{ + "type": "monolithic", + "label": "My UPG Neighbors", + "note": "Monolithic composite (capability 3): ONE root .vue nests five internal lenses — Send Map, the Bloom cockpit, Flower Mesh, Lang Cluster and Flowers — behind a view-switcher. index.js registers exactly ONE tag (upg-neighbor); none of the lenses is independently embeddable. The five rows of upg-neighbor.instances.json are preset opening lenses, not separate elements." +} diff --git a/plugin-designs/upg-neighbor/upg-neighbor.vue b/plugin-designs/upg-neighbor/upg-neighbor.vue index bdaca9fd3..60d248967 100644 --- a/plugin-designs/upg-neighbor/upg-neighbor.vue +++ b/plugin-designs/upg-neighbor/upg-neighbor.vue @@ -1,56 +1,109 @@ diff --git a/public/doxa-maps/assets/legacy/upg-neighbor/index.html b/public/doxa-maps/assets/legacy/upg-neighbor/index.html deleted file mode 100644 index d909579ce..000000000 --- a/public/doxa-maps/assets/legacy/upg-neighbor/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - legacy map host - - - -
- - - diff --git a/public/doxa-maps/assets/legacy/upg-neighbor/maplibre-gl.css b/public/doxa-maps/assets/legacy/upg-neighbor/maplibre-gl.css deleted file mode 100644 index 6b4bfda74..000000000 --- a/public/doxa-maps/assets/legacy/upg-neighbor/maplibre-gl.css +++ /dev/null @@ -1 +0,0 @@ -.maplibregl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgb(0 0 0/0)}.maplibregl-canvas{left:0;position:absolute;top:0}.maplibregl-map:fullscreen{height:100%;width:100%}.maplibregl-ctrl-group button.maplibregl-ctrl-compass{touch-action:none}.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.maplibregl-ctrl-top-left{left:0;top:0}.maplibregl-ctrl-top-right{right:0;top:0}.maplibregl-ctrl-bottom-left{bottom:0;left:0}.maplibregl-ctrl-bottom-right{bottom:0;right:0}.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.maplibregl-ctrl-group{background:#fff;border-radius:4px}.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (forced-colors:active){.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.maplibregl-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (forced-colors:active){.maplibregl-ctrl-icon{background-color:transparent}.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl button:disabled{cursor:not-allowed}.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}@media (hover:hover){.maplibregl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}}.maplibregl-ctrl button:not(:disabled):active{background-color:rgba(0,0,0,.05)}.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-globe .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' stroke='%23333' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='8.5'/%3E%3Cpath d='M17.5 11c0 4.819-3.02 8.5-6.5 8.5S4.5 15.819 4.5 11 7.52 2.5 11 2.5s6.5 3.681 6.5 8.5Z'/%3E%3Cpath d='M13.5 11c0 2.447-.331 4.64-.853 6.206-.262.785-.562 1.384-.872 1.777-.314.399-.58.517-.775.517s-.461-.118-.775-.517c-.31-.393-.61-.992-.872-1.777C8.831 15.64 8.5 13.446 8.5 11s.331-4.64.853-6.206c.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517s.461.118.775.517c.31.393.61.992.872 1.777.522 1.565.853 3.76.853 6.206Z'/%3E%3Cpath d='M11 7.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138q.07-.058.224-.138c.299-.151.763-.302 1.379-.434C7.378 5.666 9.091 5.5 11 5.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138q-.07.058-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428ZM4.486 6.436ZM11 16.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138 1.3 1.3 0 0 1 .224-.138c.299-.151.763-.302 1.379-.434C7.378 14.666 9.091 14.5 11 14.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138a1.3 1.3 0 0 1-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm-6.514-1.064ZM11 12.5c-2.46 0-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.5 1.5 0 0 1-.39-.272.3.3 0 0 1-.047-.064.3.3 0 0 1 .048-.064c.066-.073.189-.167.389-.272.399-.21 1.009-.413 1.805-.59C6.328 9.722 8.54 9.5 11 9.5s4.672.222 6.256.574c.795.177 1.405.38 1.804.59.2.105.323.2.39.272a.3.3 0 0 1 .047.064.3.3 0 0 1-.048.064 1.4 1.4 0 0 1-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002zm0 .018v.002zm17.002.002v-.002zm0-.018v-.002z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-globe-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' stroke='%2333b5e5' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='8.5'/%3E%3Cpath d='M17.5 11c0 4.819-3.02 8.5-6.5 8.5S4.5 15.819 4.5 11 7.52 2.5 11 2.5s6.5 3.681 6.5 8.5Z'/%3E%3Cpath d='M13.5 11c0 2.447-.331 4.64-.853 6.206-.262.785-.562 1.384-.872 1.777-.314.399-.58.517-.775.517s-.461-.118-.775-.517c-.31-.393-.61-.992-.872-1.777C8.831 15.64 8.5 13.446 8.5 11s.331-4.64.853-6.206c.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517s.461.118.775.517c.31.393.61.992.872 1.777.522 1.565.853 3.76.853 6.206Z'/%3E%3Cpath d='M11 7.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138q.07-.058.224-.138c.299-.151.763-.302 1.379-.434C7.378 5.666 9.091 5.5 11 5.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138q-.07.058-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428ZM4.486 6.436ZM11 16.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138 1.3 1.3 0 0 1 .224-.138c.299-.151.763-.302 1.379-.434C7.378 14.666 9.091 14.5 11 14.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138a1.3 1.3 0 0 1-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm-6.514-1.064ZM11 12.5c-2.46 0-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.5 1.5 0 0 1-.39-.272.3.3 0 0 1-.047-.064.3.3 0 0 1 .048-.064c.066-.073.189-.167.389-.272.399-.21 1.009-.413 1.805-.59C6.328 9.722 8.54 9.5 11 9.5s4.672.222 6.256.574c.795.177 1.405.38 1.804.59.2.105.323.2.39.272a.3.3 0 0 1 .047.064.3.3 0 0 1-.048.064 1.4 1.4 0 0 1-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002zm0 .018v.002zm17.002.002v-.002zm0-.018v-.002z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%23333' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%2333b5e5' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23aaa' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:maplibregl-spin 2s linear infinite}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23999' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23666' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}}@keyframes maplibregl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (forced-colors:active){a.maplibregl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E")}}.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}@media screen{.maplibregl-ctrl-attrib.maplibregl-compact{background-color:#fff;border-radius:12px;box-sizing:content-box;color:#000;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.maplibregl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E");border:0;border-radius:12px;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgba(0,0,0,.05)}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{right:0;top:0}.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{left:0;top:0}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (forced-colors:active){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}@media screen and (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.maplibregl-attrib-empty{display:none}.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px;white-space:nowrap}.maplibregl-popup{display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.maplibregl-popup-anchor-left{flex-direction:row}.maplibregl-popup-anchor-right{flex-direction:row-reverse}.maplibregl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.maplibregl-popup-anchor-top .maplibregl-popup-tip{align-self:center;border-bottom-color:#fff;border-top:none}.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.maplibregl-popup-anchor-left .maplibregl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.maplibregl-popup-anchor-right .maplibregl-popup-tip{align-self:center;border-left-color:#fff;border-right:none}[dir=rtl] .maplibregl-popup-anchor-left{flex-direction:row-reverse}[dir=rtl] .maplibregl-popup-anchor-right{flex-direction:row}[dir=rtl] .maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-end}[dir=rtl] .maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-start}[dir=rtl] .maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-end}[dir=rtl] .maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-start}.maplibregl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.maplibregl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.maplibregl-popup-content{background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:15px 10px;pointer-events:auto;position:relative}.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.maplibregl-popup-track-pointer{display:none}.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.maplibregl-marker{left:0;position:absolute;top:0;transition:opacity .2s;will-change:transform}.maplibregl-user-location-dot,.maplibregl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.maplibregl-user-location-dot:before{animation:maplibregl-user-location-dot-pulse 2s infinite;content:"";position:absolute}.maplibregl-user-location-dot:after{border:2px solid #fff;border-radius:50%;box-shadow:0 0 3px rgba(0,0,0,.35);box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}@media (prefers-reduced-motion:reduce){.maplibregl-user-location-dot:before{animation:none}}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.maplibregl-user-location-dot-stale{background-color:#aaa}.maplibregl-user-location-dot-stale:after{display:none}.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.maplibregl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}.maplibregl-cooperative-gesture-screen{align-items:center;background:rgba(0,0,0,.4);color:#fff;display:flex;font-size:1.4em;inset:0;justify-content:center;line-height:1.2;opacity:0;padding:1rem;pointer-events:none;position:absolute;transition:opacity 1s ease 1s;z-index:99999}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity .05s}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(pointer:coarse){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}.maplibregl-pseudo-fullscreen{height:100%!important;left:0!important;position:fixed!important;top:0!important;width:100%!important;z-index:99999} \ No newline at end of file diff --git a/public/doxa-maps/assets/legacy/upg-neighbor/maplibre-gl.js b/public/doxa-maps/assets/legacy/upg-neighbor/maplibre-gl.js deleted file mode 100644 index c5acb688e..000000000 --- a/public/doxa-maps/assets/legacy/upg-neighbor/maplibre-gl.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * MapLibre GL JS - * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v5.24.0/LICENSE.txt - */ -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : -typeof define === 'function' && define.amd ? define(factory) : -(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.maplibregl = factory()); -})(this, (function () { 'use strict'; - -/* eslint-disable */ - -var maplibregl = {}; -var modules = {}; -function define(moduleName, _dependencies, moduleFactory) { - modules[moduleName] = moduleFactory; - - // to get the list of modules see generated dist/maplibre-gl-dev.js file (look for `define(` calls) - if (moduleName !== 'index') { - return; - } - - // we assume that when an index module is initializing then other modules are loaded already - var workerBundleString = 'var sharedModule = {}; (' + modules.shared + ')(sharedModule); (' + modules.worker + ')(sharedModule);' - - var sharedModule = {}; - // the order of arguments of a module factory depends on rollup (it decides who is whose dependency) - // to check the correct order, see dist/maplibre-gl-dev.js file (look for `define(` calls) - // we assume that for our 3 chunks it will generate 3 modules and their order is predefined like the following - modules.shared(sharedModule); - modules.index(maplibregl, sharedModule); - - if (typeof window !== 'undefined') { - maplibregl.setWorkerUrl(window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }))); - } - - return maplibregl; -}; - - - -define("shared",["exports"],(function(t){"use strict";function e(t,e,n,r){return new(n||(n=Promise))((function(i,s){function o(t){try{l(r.next(t));}catch(t){s(t);}}function a(t){try{l(r.throw(t));}catch(t){s(t);}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e);}))).then(o,a);}l((r=r.apply(t,e||[])).next());}))}function n(t,e){this.x=t,this.y=e;}function r(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var i,s;"function"==typeof SuppressedError&&SuppressedError,n.prototype={clone(){return new n(this.x,this.y)},add(t){return this.clone()._add(t)},sub(t){return this.clone()._sub(t)},multByPoint(t){return this.clone()._multByPoint(t)},divByPoint(t){return this.clone()._divByPoint(t)},mult(t){return this.clone()._mult(t)},div(t){return this.clone()._div(t)},rotate(t){return this.clone()._rotate(t)},rotateAround(t,e){return this.clone()._rotateAround(t,e)},matMult(t){return this.clone()._matMult(t)},unit(){return this.clone()._unit()},perp(){return this.clone()._perp()},round(){return this.clone()._round()},mag(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals(t){return this.x===t.x&&this.y===t.y},dist(t){return Math.sqrt(this.distSqr(t))},distSqr(t){const e=t.x-this.x,n=t.y-this.y;return e*e+n*n},angle(){return Math.atan2(this.y,this.x)},angleTo(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith(t){return this.angleWithSep(t.x,t.y)},angleWithSep(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult(t){const e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add(t){return this.x+=t.x,this.y+=t.y,this},_sub(t){return this.x-=t.x,this.y-=t.y,this},_mult(t){return this.x*=t,this.y*=t,this},_div(t){return this.x/=t,this.y/=t,this},_multByPoint(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint(t){return this.x/=t.x,this.y/=t.y,this},_unit(){return this._div(this.mag()),this},_perp(){const t=this.y;return this.y=this.x,this.x=-t,this},_rotate(t){const e=Math.cos(t),n=Math.sin(t),r=n*this.x+e*this.y;return this.x=e*this.x-n*this.y,this.y=r,this},_rotateAround(t,e){const n=Math.cos(t),r=Math.sin(t),i=e.y+r*(this.x-e.x)+n*(this.y-e.y);return this.x=e.x+n*(this.x-e.x)-r*(this.y-e.y),this.y=i,this},_round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},constructor:n},n.convert=function(t){if(t instanceof n)return t;if(Array.isArray(t))return new n(+t[0],+t[1]);if(void 0!==t.x&&void 0!==t.y)return new n(+t.x,+t.y);throw new Error("Expected [x, y] or {x, y} point format")};var o=function(){if(s)return i;function t(t,e,n,r){this.cx=3*t,this.bx=3*(n-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(r-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=e,this.p2x=n,this.p2y=r;}return s=1,i=t,t.prototype={sampleCurveX:function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return ((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(void 0===e&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var n=t,r=0;r<8;r++){var i=this.sampleCurveX(n)-t;if(Math.abs(i)i?o=n:a=n,n=.5*(a-o)+o;return n},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}},i}(),a=r(o);let l,u;function c(){return null!=l||(l="undefined"!=typeof OffscreenCanvas&&new OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof createImageBitmap),l}function h(){if(null==u&&(u=!1,c())){const t=5,e=new OffscreenCanvas(t,t).getContext("2d",{willReadFrequently:!0});if(e){for(let n=0;n4&&void 0!==arguments[4]?arguments[4]:"zyx",s=Math.PI/360;e*=s,r*=s,n*=s;var o=Math.sin(e),a=Math.cos(e),l=Math.sin(n),u=Math.cos(n),c=Math.sin(r),h=Math.cos(r);switch(i){case "xyz":t[0]=o*u*h+a*l*c,t[1]=a*l*h-o*u*c,t[2]=a*u*c+o*l*h,t[3]=a*u*h-o*l*c;break;case "xzy":t[0]=o*u*h-a*l*c,t[1]=a*l*h-o*u*c,t[2]=a*u*c+o*l*h,t[3]=a*u*h+o*l*c;break;case "yxz":t[0]=o*u*h+a*l*c,t[1]=a*l*h-o*u*c,t[2]=a*u*c-o*l*h,t[3]=a*u*h+o*l*c;break;case "yzx":t[0]=o*u*h+a*l*c,t[1]=a*l*h+o*u*c,t[2]=a*u*c-o*l*h,t[3]=a*u*h-o*l*c;break;case "zxy":t[0]=o*u*h-a*l*c,t[1]=a*l*h+o*u*c,t[2]=a*u*c+o*l*h,t[3]=a*u*h-o*l*c;break;case "zyx":t[0]=o*u*h-a*l*c,t[1]=a*l*h+o*u*c,t[2]=a*u*c-o*l*h,t[3]=a*u*h+o*l*c;break;default:throw new Error("Unknown angle order "+i)}return t}function I(){var t=new f(2);return f!=Float32Array&&(t[0]=0,t[1]=0),t}function E(t,e){var n=new f(2);return n[0]=t,n[1]=e,n}m(),_=new f(4),f!=Float32Array&&(_[0]=0,_[1]=0,_[2]=0,_[3]=0),m(),x(1,0,0),x(0,1,0),M(),M(),d(),I();const T=8192;function F(t,e,n){return e*(T/(t.tileSize*Math.pow(2,n-t.tileID.overscaledZ)))}function P(t){return t instanceof Error?t:new Error("string"==typeof t?t:String(t))}function D(t,e){return (t%e+e)%e}function z(t,e,n){return t*(1-n)+e*n}function B(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,n=e*t;return 4*(t<.5?n:3*(t-e)+n-.75)}function C(t,e,n,r){const i=new a(t,e,n,r);return t=>i.solve(t)}const V=C(.25,.1,.25,1);function L(t,e,n){return Math.min(n,Math.max(e,t))}function O(t,e,n){const r=n-e,i=((t-e)%r+r)%r+e;return i===e?n:i}function $(t,...e){for(const n of e)for(const e in n)t[e]=n[e];return t}let R=1;function N(t,e,n){const r={};for(const n in t)r[n]=e.call(this,t[n],n,t);return r}function U(t,e,n){const r={};for(const n in t)e.call(this,t[n],n,t)&&(r[n]=t[n]);return r}function j(t){return Array.isArray(t)?t.map(j):"object"==typeof t&&t?N(t,j):t}const q={};function G(t){q[t]||("undefined"!=typeof console&&console.warn(t),q[t]=!0);}function X(t,e,n){return (n.y-t.y)*(e.x-t.x)>(e.y-t.y)*(n.x-t.x)}function Y(t){return "undefined"!=typeof WorkerGlobalScope&&void 0!==t&&t instanceof WorkerGlobalScope}let Z=null;function H(t){return "undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap}const W="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function K(t,n,r,i,s){return e(this,void 0,void 0,(function*(){if("undefined"==typeof VideoFrame)throw new Error("VideoFrame not supported");const e=new VideoFrame(t,{timestamp:0});try{const o=null==e?void 0:e.format;if(!o||!o.startsWith("BGR")&&!o.startsWith("RGB"))throw new Error(`Unrecognized format ${o}`);const a=o.startsWith("BGR"),l=new Uint8ClampedArray(i*s*4);if(yield e.copyTo(l,function(t,e,n,r,i){const s=4*Math.max(-e,0),o=(Math.max(0,n)-n)*r*4+s,a=4*r,l=Math.max(0,e),u=Math.max(0,n);return {rect:{x:l,y:u,width:Math.min(t.width,e+r)-l,height:Math.min(t.height,n+i)-u},layout:[{offset:o,stride:a}]}}(t,n,r,i,s)),a)for(let t=0;t{t.removeEventListener(e,n,r);}}}function et(t){return t*Math.PI/180}function nt(t){return t/Math.PI*180}const rt={touchstart:!0,touchmove:!0,touchmoveWindow:!0,touchend:!0,touchcancel:!0},it={dblclick:!0,click:!0,mouseover:!0,mouseout:!0,mousedown:!0,mousemove:!0,mousemoveWindow:!0,mouseup:!0,mouseupWindow:!0,contextmenu:!0,wheel:!0},st="AbortError";class ot extends Error{constructor(t=st){super(t instanceof Error?t.message:t),this.name=st,t instanceof Error&&t.stack&&(this.stack=t.stack);}}function at(t){return t instanceof Error&&t.name===st}function lt(t){if(t.aborted)throw new ot(t.reason)}const ut={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};function ct(t){return ut.REGISTERED_PROTOCOLS[t.substring(0,t.indexOf("://"))]}const ht="global-dispatcher";class pt extends Error{constructor(t,e,n,r){super(`AJAXError: ${e} (${t}): ${n}`),this.status=t,this.statusText=e,this.url=n,this.body=r;}}const ft=()=>{var t;return Y(self)?null===(t=self.worker)||void 0===t?void 0:t.referrer:("blob:"===window.location.protocol?window.parent:window).location.href},dt=function(t,n){return e(this,void 0,void 0,(function*(){var r,i;if(t.url.includes("://")&&!/^https?:|^file:/.test(t.url)){const e=ct(t.url);if(e){const r=yield e(t,n);return r.data||"arrayBuffer"!==t.type?r:$(r,{data:new ArrayBuffer(0)})}if(Y(self)&&(null===(r=self.worker)||void 0===r?void 0:r.actor))return self.worker.actor.sendAsync({type:"GR",data:t,targetMapId:ht},n)}if(!(t=>{var e;return t.startsWith("file:")||(null===(e=ft())||void 0===e?void 0:e.startsWith("file:"))&&!/^\w+:/.test(t)})(t.url)){if(fetch&&Request&&AbortController&&Object.hasOwn(Request.prototype,"signal"))return function(t,n){return e(this,void 0,void 0,(function*(){const e=new Request(t.url,{method:t.method||"GET",body:t.body,credentials:t.credentials,headers:t.headers,cache:t.cache,referrer:ft(),referrerPolicy:t.referrerPolicy,signal:n.signal});let r,i;"json"!==t.type||e.headers.has("Accept")||e.headers.set("Accept","application/json");try{r=yield fetch(e);}catch(e){if(at(e))throw e;throw new pt(0,P(e).message,t.url,new Blob)}if(!r.ok){const e=yield r.blob();throw new pt(r.status,r.statusText,t.url,e)}i="arrayBuffer"===t.type||"image"===t.type?r.arrayBuffer():"json"===t.type?r.json():r.text();const s=yield i;return lt(n.signal),{data:s,cacheControl:r.headers.get("Cache-Control"),expires:r.headers.get("Expires"),etag:r.headers.get("ETag")}}))}(t,n);if(Y(self)&&(null===(i=self.worker)||void 0===i?void 0:i.actor))return self.worker.actor.sendAsync({type:"GR",data:t,mustQueue:!0,targetMapId:ht},n)}return function(t,e){return new Promise(((n,r)=>{var i;const s=new XMLHttpRequest;s.open(t.method||"GET",t.url,!0),"arrayBuffer"!==t.type&&"image"!==t.type||(s.responseType="arraybuffer");for(const e in t.headers)s.setRequestHeader(e,t.headers[e]);"json"===t.type&&(s.responseType="text",(null===(i=t.headers)||void 0===i?void 0:i.Accept)||s.setRequestHeader("Accept","application/json")),s.withCredentials="include"===t.credentials,s.onerror=()=>{r(new Error(s.statusText));},s.onload=()=>{if(!e.signal.aborted)if((s.status>=200&&s.status<300||0===s.status)&&null!==s.response){let e=s.response;if("json"===t.type)try{e=JSON.parse(s.response);}catch(t){return void r(t)}n({data:e,cacheControl:s.getResponseHeader("Cache-Control"),expires:s.getResponseHeader("Expires"),etag:s.getResponseHeader("ETag")});}else {const e=new Blob([s.response],{type:s.getResponseHeader("Content-Type")});r(new pt(s.status,s.statusText,t.url,e));}},e.signal.addEventListener("abort",(()=>{s.abort(),r(new ot(e.signal.reason));})),s.send(t.body);}))}(t,n)}))};function yt(t){if(!t||t.indexOf("://")<=0||t.startsWith("data:image/")||t.startsWith("blob:"))return !0;const e=new URL(t),n=window.location;return e.protocol===n.protocol&&e.host===n.host}function mt(t,e,n){var r;(null===(r=n[t])||void 0===r?void 0:r.includes(e))||(n[t]||(n[t]=[]),n[t].push(e));}function gt(t,e,n){if(null==n?void 0:n[t]){const r=n[t].indexOf(e);-1!==r&&n[t].splice(r,1);}}class xt{constructor(t,e={}){$(this,e),this.type=t;}}class vt extends xt{constructor(t,e={}){super("error",$({error:t},e));}}class bt{on(t,e){return this._listeners||(this._listeners={}),mt(t,e,this._listeners),{unsubscribe:()=>{this.off(t,e);}}}off(t,e){return gt(t,e,this._listeners),gt(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners||(this._oneTimeListeners={}),mt(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){var n,r;"string"==typeof t&&(t=new xt(t,e||{}));const i=t.type;if(this.listens(i)){t.target=this;const e=(null===(n=this._listeners)||void 0===n?void 0:n[i])?this._listeners[i].slice():[];for(const n of e)n.call(this,t);const s=(null===(r=this._oneTimeListeners)||void 0===r?void 0:r[i])?this._oneTimeListeners[i].slice():[];for(const e of s)gt(i,e,this._oneTimeListeners),e.call(this,t);const o=this._eventedParent;o&&($(t,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),o.fire(t));}else t instanceof vt&&console.error(t.error);return this}listens(t){var e,n,r,i,s;return (null===(n=null===(e=this._listeners)||void 0===e?void 0:e[t])||void 0===n?void 0:n.length)>0||(null===(i=null===(r=this._oneTimeListeners)||void 0===r?void 0:r[t])||void 0===i?void 0:i.length)>0||(null===(s=this._eventedParent)||void 0===s?void 0:s.listens(t))}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}var wt={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number",length:2},centerAltitude:{type:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},roll:{type:"number",default:0,units:"degrees"},state:{type:"state",default:{}},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},"font-faces":{type:"fontFaces"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},encoding:{type:"enum",values:{mvt:{},mlt:{}},default:"mvt"},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"filter"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},"color-relief":{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_color-relief","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_color-relief":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},filter:{type:"boolean",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"expression_name",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"projectionDefinition",default:"mercator","property-type":"data-constant",transition:!1,expression:{interpolated:!0,parameters:["zoom"]}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_color-relief","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},resampling:{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"numberArray",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-altitude":{type:"numberArray",default:45,minimum:0,maximum:90,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"colorArray",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"colorArray",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-method":{type:"enum",values:{standard:{},basic:{},combined:{},igor:{},multidirectional:{}},default:"standard",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},resampling:{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},"paint_color-relief":{"color-relief-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"color-relief-color":{type:"color",transition:!1,expression:{interpolated:!0,parameters:["elevation"]},"property-type":"color-ramp"},resampling:{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}},interpolation:{type:"array",value:"interpolation_name",minimum:1},interpolation_name:{type:"enum",values:{linear:{syntax:{overloads:[{parameters:[],"output-type":"interpolation"}],parameters:[]}},exponential:{syntax:{overloads:[{parameters:["base"],"output-type":"interpolation"}],parameters:[{name:"base",type:"number literal"}]}},"cubic-bezier":{syntax:{overloads:[{parameters:["x1","y1","x2","y2"],"output-type":"interpolation"}],parameters:[{name:"x1",type:"number literal"},{name:"y1",type:"number literal"},{name:"x2",type:"number literal"},{name:"y2",type:"number literal"}]}}}}};const _t=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function St(t,e){const n={};for(const e in t)"ref"!==e&&(n[e]=t[e]);return _t.forEach((t=>{t in e&&(n[t]=e[t]);})),n}function At(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return !1;for(let n=0;n`:"value"===t.itemType.kind?"array":`array<${e}>`}return t.kind}const te=[Lt,Ot,$t,Rt,Nt,Ut,Xt,jt,Jt(qt),Yt,Ht,Zt,Wt,Kt];function ee(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!ee(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else {if(t.kind===e.kind)return null;if("value"===t.kind)for(const t of te)if(!ee(t,e))return null}return `Expected ${Qt(t)} but found ${Qt(e)} instead.`}function ne(t,e){return e.some((e=>e.kind===t.kind))}function re(t,e){return e.some((e=>"null"===e?null===t:"array"===e?Array.isArray(t):"object"===e?t&&!Array.isArray(t)&&"object"==typeof t:e===typeof t))}function ie(t,e){return "array"===t.kind&&"array"===e.kind?t.itemType.kind===e.itemType.kind&&"number"==typeof t.N:t.kind===e.kind}const se=.96422,oe=.82521,ae=4/29,le=6/29,ue=3*le*le,ce=le*le*le,he=Math.PI/180,pe=180/Math.PI;function fe(t){return (t%=360)<0&&(t+=360),t}function de([t,e,n,r]){let i,s;const o=me((.2225045*(t=ye(t))+.7168786*(e=ye(e))+.0606169*(n=ye(n)))/1);t===e&&e===n?i=s=o:(i=me((.4360747*t+.3850649*e+.1430804*n)/se),s=me((.0139322*t+.0971045*e+.7141733*n)/oe));const a=116*o-16;return [a<0?0:a,500*(i-o),200*(o-s),r]}function ye(t){return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function me(t){return t>ce?Math.pow(t,1/3):t/ue+ae}function ge([t,e,n,r]){let i=(t+16)/116,s=isNaN(e)?i:i+e/500,o=isNaN(n)?i:i-n/200;return i=1*ve(i),s=se*ve(s),o=oe*ve(o),[xe(3.1338561*s-1.6168667*i-.4906146*o),xe(-.9787684*s+1.9161415*i+.033454*o),xe(.0719453*s-.2289914*i+1.4052427*o),r]}function xe(t){return (t=t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055)<0?0:t>1?1:t}function ve(t){return t>le?t*t*t:ue*(t-ae)}const be=Object.hasOwn||function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};function we(t,e){return be(t,e)?t[e]:void 0}function _e(t){return parseInt(t.padEnd(2,t),16)/255}function Se(t,e){return Ae(e?t/100:t,0,1)}function Ae(t,e,n){return Math.min(Math.max(e,t),n)}function Me(t){return !t.some(Number.isNaN)}const ke={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function Ie(t,e,n){return t+n*(e-t)}function Ee(t,e,n){return t.map(((t,r)=>Ie(t,e[r],n)))}class Te{constructor(t,e,n,r=1,i=!0){this.r=t,this.g=e,this.b=n,this.a=r,i||(this.r*=r,this.g*=r,this.b*=r,r||this.overwriteGetter("rgb",[t,e,n,r]));}static parse(t){if(t instanceof Te)return t;if("string"!=typeof t)return;const e=function(t){if("transparent"===(t=t.toLowerCase().trim()))return [0,0,0,0];const e=we(ke,t);if(e){const[t,n,r]=e;return [t/255,n/255,r/255,1]}if(t.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(t)){const e=t.length<6?1:2;let n=1;return [_e(t.slice(n,n+=e)),_e(t.slice(n,n+=e)),_e(t.slice(n,n+=e)),_e(t.slice(n,n+e)||"ff")]}if(t.startsWith("rgb")){const e=t.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(e){const[t,n,r,i,s,o,a,l,u,c,h,p]=e,f=[i||" ",a||" ",c].join("");if(" "===f||" /"===f||",,"===f||",,,"===f){const t=[r,o,u].join(""),e="%%%"===t?100:""===t?255:0;if(e){const t=[Ae(+n/e,0,1),Ae(+s/e,0,1),Ae(+l/e,0,1),h?Se(+h,p):1];if(Me(t))return t}}return}}const n=t.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(n){const[t,e,r,i,s,o,a,l,u]=n,c=[r||" ",s||" ",a].join("");if(" "===c||" /"===c||",,"===c||",,,"===c){const t=[+e,Ae(+i,0,100),Ae(+o,0,100),l?Se(+l,u):1];if(Me(t))return function([t,e,n,r]){function i(r){const i=(r+t/30)%12,s=e*Math.min(n,1-n);return n-s*Math.max(-1,Math.min(i-3,9-i,1))}return t=fe(t),e/=100,n/=100,[i(0),i(8),i(4),r]}(t)}}}(t);return e?new Te(...e,!1):void 0}get rgb(){const{r:t,g:e,b:n,a:r}=this,i=r||1/0;return this.overwriteGetter("rgb",[t/i,e/i,n/i,r])}get hcl(){return this.overwriteGetter("hcl",function(t){const[e,n,r,i]=de(t),s=Math.sqrt(n*n+r*r);return [Math.round(1e4*s)?fe(Math.atan2(r,n)*pe):NaN,s,e,i]}(this.rgb))}get lab(){return this.overwriteGetter("lab",de(this.rgb))}overwriteGetter(t,e){return Object.defineProperty(this,t,{value:e}),e}toString(){const[t,e,n,r]=this.rgb;return `rgba(${[t,e,n].map((t=>Math.round(255*t))).join(",")},${r})`}static interpolate(t,e,n,r="rgb"){switch(r){case "rgb":{const[r,i,s,o]=Ee(t.rgb,e.rgb,n);return new Te(r,i,s,o,!1)}case "hcl":{const[r,i,s,o]=t.hcl,[a,l,u,c]=e.hcl;let h,p;if(isNaN(r)||isNaN(a))isNaN(r)?isNaN(a)?h=NaN:(h=a,1!==s&&0!==s||(p=l)):(h=r,1!==u&&0!==u||(p=i));else {let t=a-r;a>r&&t>180?t-=360:a180&&(t+=360),h=r+n*t;}const[f,d,y,m]=function([t,e,n,r]){return t=isNaN(t)?0:t*he,ge([n,Math.cos(t)*e,Math.sin(t)*e,r])}([h,null!=p?p:Ie(i,l,n),Ie(s,u,n),Ie(o,c,n)]);return new Te(f,d,y,m,!1)}case "lab":{const[r,i,s,o]=ge(Ee(t.lab,e.lab,n));return new Te(r,i,s,o,!1)}}}}Te.black=new Te(0,0,0,1),Te.white=new Te(1,1,1,1),Te.transparent=new Te(0,0,0,0),Te.red=new Te(1,0,0,1);class Fe{constructor(t,e,n){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=n,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"});}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}const Pe=["bottom","center","top"];class De{constructor(t,e,n,r,i,s){this.text=t,this.image=e,this.scale=n,this.fontStack=r,this.textColor=i,this.verticalAlign=s;}}class ze{constructor(t){this.sections=t;}static fromString(t){return new ze([new De(t,null,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof ze?t:ze.fromString(t)}toString(){return 0===this.sections.length?"":this.sections.map((t=>t.text)).join("")}}class Be{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof Be)return t;if("number"==typeof t)return new Be([t,t,t,t]);if(Array.isArray(t)&&!(t.length<1||t.length>4)){for(const e of t)if("number"!=typeof e)return;switch(t.length){case 1:t=[t[0],t[0],t[0],t[0]];break;case 2:t=[t[0],t[1],t[0],t[1]];break;case 3:t=[t[0],t[1],t[2],t[1]];}return new Be(t)}}toString(){return JSON.stringify(this.values)}static interpolate(t,e,n){return new Be(Ee(t.values,e.values,n))}}class Ce{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof Ce)return t;if("number"==typeof t)return new Ce([t]);if(Array.isArray(t)){for(const e of t)if("number"!=typeof e)return;return new Ce(t)}}toString(){return JSON.stringify(this.values)}static interpolate(t,e,n){return new Ce(Ee(t.values,e.values,n))}}class Ve{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof Ve)return t;if("string"==typeof t){const e=Te.parse(t);if(!e)return;return new Ve([e])}if(!Array.isArray(t))return;const e=[];for(const n of t){if("string"!=typeof n)return;const t=Te.parse(n);if(!t)return;e.push(t);}return new Ve(e)}toString(){return JSON.stringify(this.values)}static interpolate(t,e,n,r="rgb"){const i=[];if(t.values.length!=e.values.length)throw new Error(`colorArray: Arrays have mismatched length (${t.values.length} vs. ${e.values.length}), cannot interpolate.`);for(let s=0;s=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof n&&n>=0&&n<=255?void 0===r||"number"==typeof r&&r>=0&&r<=1?null:`Invalid rgba value [${[t,e,n,r].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${("number"==typeof r?[t,e,n,r]:[t,e,n]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function je(t){if(null===t||"string"==typeof t||"boolean"==typeof t||"number"==typeof t||t instanceof Ne||t instanceof Te||t instanceof Fe||t instanceof ze||t instanceof Be||t instanceof Ce||t instanceof Ve||t instanceof $e||t instanceof Re)return !0;if(Array.isArray(t)){for(const e of t)if(!je(e))return !1;return !0}if("object"==typeof t){for(const e in t)if(!je(t[e]))return !1;return !0}return !1}function qe(t){if(null===t)return Lt;if("string"==typeof t)return $t;if("boolean"==typeof t)return Rt;if("number"==typeof t)return Ot;if(t instanceof Te)return Nt;if(t instanceof Ne)return Ut;if(t instanceof Fe)return Gt;if(t instanceof ze)return Xt;if(t instanceof Be)return Yt;if(t instanceof Ce)return Ht;if(t instanceof Ve)return Zt;if(t instanceof $e)return Kt;if(t instanceof Re)return Wt;if(Array.isArray(t)){const e=t.length;let n;for(const e of t){const t=qe(e);if(n){if(n===t)continue;n=qt;break}n=t;}return Jt(n||qt,e)}return jt}function Ge(t){const e=typeof t;return null===t?"":"string"===e||"number"===e||"boolean"===e?String(t):t instanceof Te||t instanceof Ne||t instanceof ze||t instanceof Be||t instanceof Ce||t instanceof Ve||t instanceof $e||t instanceof Re?t.toString():JSON.stringify(t)}class Xe{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!je(t[1]))return e.error("invalid value");const n=t[1];let r=qe(n);const i=e.expectedType;return "array"!==r.kind||0!==r.N||!i||"array"!==i.kind||"number"==typeof i.N&&0!==i.N||(r=i),new Xe(r,n)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}}const Ye={string:$t,number:Ot,boolean:Rt,object:jt};class Ze{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let n,r=1;const i=t[0];if("array"===i){let i,s;if(t.length>2){const n=t[1];if("string"!=typeof n||!(n in Ye)||"object"===n)return e.error('The item type argument of "array" must be one of string, number, boolean',1);i=Ye[n],r++;}else i=qt;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);s=t[2],r++;}n=Jt(i,s);}else {if(!Ye[i])throw new Error(`Types doesn't contain name = ${i}`);n=Ye[i];}const s=[];for(;rt.outputDefined()))}}const He={"to-boolean":Rt,"to-color":Nt,"to-number":Ot,"to-string":$t};class We{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const n=t[0];if(!He[n])throw new Error(`Can't parse ${n} as it is not part of the known types`);if(("to-boolean"===n||"to-string"===n)&&2!==t.length)return e.error("Expected one argument.");const r=He[n],i=[];for(let n=1;n4?`Invalid rgba value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:Ue(e[0],e[1],e[2],e[3]),!n))return new Te(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new Le(n||`Could not parse color from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case "padding":{let e;for(const n of this.args){e=n.evaluate(t);const r=Be.parse(e);if(r)return r}throw new Le(`Could not parse padding from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case "numberArray":{let e;for(const n of this.args){e=n.evaluate(t);const r=Ce.parse(e);if(r)return r}throw new Le(`Could not parse numberArray from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case "colorArray":{let e;for(const n of this.args){e=n.evaluate(t);const r=Ve.parse(e);if(r)return r}throw new Le(`Could not parse colorArray from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case "variableAnchorOffsetCollection":{let e;for(const n of this.args){e=n.evaluate(t);const r=$e.parse(e);if(r)return r}throw new Le(`Could not parse variableAnchorOffsetCollection from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case "number":{let e=null;for(const n of this.args){if(e=n.evaluate(t),null===e)return 0;const r=Number(e);if(!isNaN(r))return r}throw new Le(`Could not convert ${JSON.stringify(e)} to number.`)}case "formatted":return ze.fromString(Ge(this.args[0].evaluate(t)));case "resolvedImage":return Re.fromString(Ge(this.args[0].evaluate(t)));case "projectionDefinition":return this.args[0].evaluate(t);default:return Ge(this.args[0].evaluate(t))}}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}const Ke=["Unknown","Point","LineString","Polygon"];class Je{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache=new Map,this.availableImages=null,this.canonical=null;}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?Ke[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(t){let e=this._parseColorCache.get(t);return e||(e=Te.parse(t),this._parseColorCache.set(t,e)),e}}class Qe{constructor(t,e,n=[],r,i=new Vt,s=[]){this.registry=t,this.path=n,this.key=n.map((t=>`[${t}]`)).join(""),this.scope=i,this.errors=s,this.expectedType=r,this._isConstant=e;}parse(t,e,n,r,i={}){return e?this.concat(e,n,r)._parse(t,i):this._parse(t,i)}_parse(t,e){function n(t,e,n){return "assert"===n?new Ze(e,[t]):"coerce"===n?new We(e,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const r=t[0];if("string"!=typeof r)return this.error(`Expression name must be a string, but found ${typeof r} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const i=this.registry[r];if(i){let r=i.parse(t,this);if(!r)return null;if(this.expectedType){const t=this.expectedType,i=r.type;if("string"!==t.kind&&"number"!==t.kind&&"boolean"!==t.kind&&"object"!==t.kind&&"array"!==t.kind||"value"!==i.kind){if("projectionDefinition"===t.kind&&["string","array"].includes(i.kind)||["color","formatted","resolvedImage"].includes(t.kind)&&["value","string"].includes(i.kind)||["padding","numberArray"].includes(t.kind)&&["value","number","array"].includes(i.kind)||"colorArray"===t.kind&&["value","string","array"].includes(i.kind)||"variableAnchorOffsetCollection"===t.kind&&["value","array"].includes(i.kind))r=n(r,t,e.typeAnnotation||"coerce");else if(this.checkSubtype(t,i))return null}else r=n(r,t,e.typeAnnotation||"assert");}if(!(r instanceof Xe)&&"resolvedImage"!==r.type.kind&&this._isConstant(r)){const t=new Je;try{r=new Xe(r.type,r.evaluate(t));}catch(t){return this.error(t.message),null}}return r}return this.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(void 0===t?"'undefined' value invalid. Use null instead.":"object"==typeof t?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,n){const r="number"==typeof t?this.path.concat(t):this.path,i=n?this.scope.concat(n):this.scope;return new Qe(this.registry,this._isConstant,r,e||null,i,this.errors)}error(t,...e){const n=`${this.key}${e.map((t=>`[${t}]`)).join("")}`;this.errors.push(new Ct(n,t));}checkSubtype(t,e){const n=ee(t,e);return n&&this.error(n),n}}class tn{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const n=[];for(let r=1;r=n.length)throw new Le(`Array index out of bounds: ${e} > ${n.length-1}.`);if(e!==Math.floor(e))throw new Le(`Array index must be an integer, but found ${e} instead.`);return n[e]}eachChild(t){t(this.index),t(this.input);}outputDefined(){return !1}}class rn{constructor(t,e){this.type=Rt,this.needle=t,this.haystack=e;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const n=e.parse(t[1],1,qt),r=e.parse(t[2],2,qt);return n&&r?ne(n.type,[Rt,$t,Ot,Lt,qt])?new rn(n,r):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${Qt(n.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),n=this.haystack.evaluate(t);if(!n)return !1;if(!re(e,["boolean","string","number","null"]))throw new Le(`Expected first argument to be of type boolean, string, number or null, but found ${Qt(qe(e))} instead.`);if(!re(n,["string","array"]))throw new Le(`Expected second argument to be of type array or string, but found ${Qt(qe(n))} instead.`);return n.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack);}outputDefined(){return !0}}class sn{constructor(t,e,n){this.type=Ot,this.needle=t,this.haystack=e,this.fromIndex=n;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 2 or 3 arguments, but found ${t.length-1} instead.`);const n=e.parse(t[1],1,qt),r=e.parse(t[2],2,qt);if(!n||!r)return null;if(!ne(n.type,[Rt,$t,Ot,Lt,qt]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${Qt(n.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,Ot);return i?new sn(n,r,i):null}return new sn(n,r)}evaluate(t){const e=this.needle.evaluate(t),n=this.haystack.evaluate(t);if(!re(e,["boolean","string","number","null"]))throw new Le(`Expected first argument to be of type boolean, string, number or null, but found ${Qt(qe(e))} instead.`);let r;if(this.fromIndex&&(r=this.fromIndex.evaluate(t)),re(n,["string"])){const t=n.indexOf(e,r);return -1===t?-1:[...n.slice(0,t)].length}if(re(n,["array"]))return n.indexOf(e,r);throw new Le(`Expected second argument to be of type array or string, but found ${Qt(qe(n))} instead.`)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);}outputDefined(){return !1}}class on{constructor(t,e,n,r,i,s){this.inputType=t,this.type=e,this.input=n,this.cases=r,this.outputs=i,this.otherwise=s;}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error("Expected an even number of arguments.");let n,r;e.expectedType&&"value"!==e.expectedType.kind&&(r=e.expectedType);const i={},s=[];for(let o=2;oNumber.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof t&&Math.floor(t)!==t)return u.error("Numeric branch labels must be integer values.");if(n){if(u.checkSubtype(n,qe(t)))return null}else n=qe(t);if(void 0!==i[String(t)])return u.error("Branch labels must be unique.");i[String(t)]=s.length;}const c=e.parse(l,o,r);if(!c)return null;r=r||c.type,s.push(c);}const o=e.parse(t[1],1,qt);if(!o)return null;const a=e.parse(t[t.length-1],t.length-1,r);return a?"value"!==o.type.kind&&e.concat(1).checkSubtype(n,o.type)?null:new on(n,r,o,i,s,a):null}evaluate(t){const e=this.input.evaluate(t);return (qe(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}}class an{constructor(t,e,n){this.type=t,this.branches=e,this.otherwise=n;}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error("Expected an odd number of arguments.");let n;e.expectedType&&"value"!==e.expectedType.kind&&(n=e.expectedType);const r=[];for(let i=1;ie.outputDefined()))&&this.otherwise.outputDefined()}}class ln{constructor(t,e,n,r){this.type=t,this.input=e,this.beginIndex=n,this.endIndex=r;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 2 or 3 arguments, but found ${t.length-1} instead.`);const n=e.parse(t[1],1,qt),r=e.parse(t[2],2,Ot);if(!n||!r)return null;if(!ne(n.type,[Jt(qt),$t,qt]))return e.error(`Expected first argument to be of type array or string, but found ${Qt(n.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,Ot);return i?new ln(n.type,n,r,i):null}return new ln(n.type,n,r)}evaluate(t){const e=this.input.evaluate(t),n=this.beginIndex.evaluate(t);let r;if(this.endIndex&&(r=this.endIndex.evaluate(t)),re(e,["string"]))return [...e].slice(n,r).join("");if(re(e,["array"]))return e.slice(n,r);throw new Le(`Expected first argument to be of type array or string, but found ${Qt(qe(e))} instead.`)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);}outputDefined(){return !1}}function un(t,e){const n=t.length-1;let r,i,s=0,o=n,a=0;for(;s<=o;)if(a=Math.floor((s+o)/2),r=t[a],i=t[a+1],r<=e){if(a===n||ee))throw new Le("Input is not a number.");o=a-1;}return 0}class cn{constructor(t,e,n){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of n)this.labels.push(t),this.outputs.push(e);}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");const n=e.parse(t[1],1,Ot);if(!n)return null;const r=[];let i=null;e.expectedType&&"value"!==e.expectedType.kind&&(i=e.expectedType);for(let n=1;n=s)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',a);const u=e.parse(o,l,i);if(!u)return null;i=i||u.type,r.push([s,u]);}return new cn(i,n,r)}evaluate(t){const e=this.labels,n=this.outputs;if(1===e.length)return n[0].evaluate(t);const r=this.input.evaluate(t);if(r<=e[0])return n[0].evaluate(t);const i=e.length;return r>=e[i-1]?n[i-1].evaluate(t):n[un(e,r)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function hn(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var pn,fn,dn=function(){if(fn)return pn;function t(t,e,n,r){this.cx=3*t,this.bx=3*(n-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(r-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=e,this.p2x=n,this.p2y=r;}return fn=1,pn=t,t.prototype={sampleCurveX:function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return ((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(void 0===e&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var n=t,r=0;r<8;r++){var i=this.sampleCurveX(n)-t;if(Math.abs(i)i?o=n:a=n,n=.5*(a-o)+o;return n},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}},pn}(),yn=hn(dn);class mn{constructor(t,e,n,r,i){this.type=t,this.operator=e,this.interpolation=n,this.input=r,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e);}static interpolationFactor(t,e,n,r){let i=0;if("exponential"===t.name)i=gn(e,t.base,n,r);else if("linear"===t.name)i=gn(e,1,n,r);else if("cubic-bezier"===t.name){const s=t.controlPoints;i=new yn(s[0],s[1],s[2],s[3]).solve(gn(e,1,n,r));}return i}static parse(t,e){let[n,r,i,...s]=t;if(!Array.isArray(r)||0===r.length)return e.error("Expected an interpolation type expression.",1);if("linear"===r[0])r={name:"linear"};else if("exponential"===r[0]){const t=r[1];if("number"!=typeof t)return e.error("Exponential interpolation requires a numeric base.",1,1);r={name:"exponential",base:t};}else {if("cubic-bezier"!==r[0])return e.error(`Unknown interpolation type ${String(r[0])}`,1,0);{const t=r.slice(1);if(4!==t.length||t.some((t=>"number"!=typeof t||t<0||t>1)))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);r={name:"cubic-bezier",controlPoints:t};}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");if(i=e.parse(i,2,Ot),!i)return null;const o=[];let a=null;"interpolate-hcl"!==n&&"interpolate-lab"!==n||e.expectedType==Zt?e.expectedType&&"value"!==e.expectedType.kind&&(a=e.expectedType):a=Nt;for(let t=0;t=n)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(r,l,a);if(!u)return null;a=a||u.type,o.push([n,u]);}return ie(a,Ot)||ie(a,Ut)||ie(a,Nt)||ie(a,Yt)||ie(a,Ht)||ie(a,Zt)||ie(a,Kt)||ie(a,Jt(Ot))?new mn(a,n,r,i,o):e.error(`Type ${Qt(a)} is not interpolatable.`)}evaluate(t){const e=this.labels,n=this.outputs;if(1===e.length)return n[0].evaluate(t);const r=this.input.evaluate(t);if(r<=e[0])return n[0].evaluate(t);const i=e.length;if(r>=e[i-1])return n[i-1].evaluate(t);const s=un(e,r),o=mn.interpolationFactor(this.interpolation,r,e[s],e[s+1]),a=n[s].evaluate(t),l=n[s+1].evaluate(t);switch(this.operator){case "interpolate":switch(this.type.kind){case "number":return Ie(a,l,o);case "color":return Te.interpolate(a,l,o);case "padding":return Be.interpolate(a,l,o);case "colorArray":return Ve.interpolate(a,l,o);case "numberArray":return Ce.interpolate(a,l,o);case "variableAnchorOffsetCollection":return $e.interpolate(a,l,o);case "array":return Ee(a,l,o);case "projectionDefinition":return Ne.interpolate(a,l,o)}case "interpolate-hcl":switch(this.type.kind){case "color":return Te.interpolate(a,l,o,"hcl");case "colorArray":return Ve.interpolate(a,l,o,"hcl")}case "interpolate-lab":switch(this.type.kind){case "color":return Te.interpolate(a,l,o,"lab");case "colorArray":return Ve.interpolate(a,l,o,"lab")}}}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function gn(t,e,n,r){const i=r-n,s=t-n;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}const xn={color:Te.interpolate,number:Ie,padding:Be.interpolate,numberArray:Ce.interpolate,colorArray:Ve.interpolate,variableAnchorOffsetCollection:$e.interpolate,array:Ee};class vn{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let n=null;const r=e.expectedType;r&&"value"!==r.kind&&(n=r);const i=[];for(const r of t.slice(1)){const t=e.parse(r,1+i.length,n,void 0,{typeAnnotation:"omit"});if(!t)return null;n=n||t.type,i.push(t);}if(!n)throw new Error("No output type");const s=r&&i.some((t=>ee(r,t.type)));return new vn(s?qt:n,i)}evaluate(t){let e,n=null,r=0;for(const i of this.args)if(r++,n=i.evaluate(t),n&&n instanceof Re&&!n.available&&(e||(e=n.name),n=null,r===this.args.length&&(n=e)),null!==n)break;return n}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}function bn(t,e){return "=="===t||"!="===t?"boolean"===e.kind||"string"===e.kind||"number"===e.kind||"null"===e.kind||"value"===e.kind:"string"===e.kind||"number"===e.kind||"value"===e.kind}function wn(t,e,n,r){return 0===r.compare(e,n)}function _n(t,e,n){const r="=="!==t&&"!="!==t;return class i{constructor(t,e,n){this.type=Rt,this.lhs=t,this.rhs=e,this.collator=n,this.hasUntypedArgument="value"===t.type.kind||"value"===e.type.kind;}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error("Expected two or three arguments.");const n=t[0];let s=e.parse(t[1],1,qt);if(!s)return null;if(!bn(n,s.type))return e.concat(1).error(`"${n}" comparisons are not supported for type '${Qt(s.type)}'.`);let o=e.parse(t[2],2,qt);if(!o)return null;if(!bn(n,o.type))return e.concat(2).error(`"${n}" comparisons are not supported for type '${Qt(o.type)}'.`);if(s.type.kind!==o.type.kind&&"value"!==s.type.kind&&"value"!==o.type.kind)return e.error(`Cannot compare types '${Qt(s.type)}' and '${Qt(o.type)}'.`);r&&("value"===s.type.kind&&"value"!==o.type.kind?s=new Ze(o.type,[s]):"value"!==s.type.kind&&"value"===o.type.kind&&(o=new Ze(s.type,[o])));let a=null;if(4===t.length){if("string"!==s.type.kind&&"string"!==o.type.kind&&"value"!==s.type.kind&&"value"!==o.type.kind)return e.error("Cannot use collator to compare non-string types.");if(a=e.parse(t[3],3,Gt),!a)return null}return new i(s,o,a)}evaluate(i){const s=this.lhs.evaluate(i),o=this.rhs.evaluate(i);if(r&&this.hasUntypedArgument){const e=qe(s),n=qe(o);if(e.kind!==n.kind||"string"!==e.kind&&"number"!==e.kind)throw new Le(`Expected arguments for "${t}" to be (string, string) or (number, number), but found (${e.kind}, ${n.kind}) instead.`)}if(this.collator&&!r&&this.hasUntypedArgument){const t=qe(s),n=qe(o);if("string"!==t.kind||"string"!==n.kind)return e(i,s,o)}return this.collator?n(i,s,o,this.collator.evaluate(i)):e(i,s,o)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);}outputDefined(){return !0}}}const Sn=_n("==",(function(t,e,n){return e===n}),wn),An=_n("!=",(function(t,e,n){return e!==n}),(function(t,e,n,r){return !wn(0,e,n,r)})),Mn=_n("<",(function(t,e,n){return e",(function(t,e,n){return e>n}),(function(t,e,n,r){return r.compare(e,n)>0})),In=_n("<=",(function(t,e,n){return e<=n}),(function(t,e,n,r){return r.compare(e,n)<=0})),En=_n(">=",(function(t,e,n){return e>=n}),(function(t,e,n,r){return r.compare(e,n)>=0}));class Tn{constructor(t,e,n){this.type=Gt,this.locale=n,this.caseSensitive=t,this.diacriticSensitive=e;}static parse(t,e){if(2!==t.length)return e.error("Expected one argument.");const n=t[1];if("object"!=typeof n||Array.isArray(n))return e.error("Collator options argument must be an object.");const r=e.parse(void 0!==n["case-sensitive"]&&n["case-sensitive"],1,Rt);if(!r)return null;const i=e.parse(void 0!==n["diacritic-sensitive"]&&n["diacritic-sensitive"],1,Rt);if(!i)return null;let s=null;return n.locale&&(s=e.parse(n.locale,1,$t),!s)?null:new Tn(r,i,s)}evaluate(t){return new Fe(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);}outputDefined(){return !1}}class Fn{constructor(t,e,n,r,i,s){this.type=$t,this.number=t,this.locale=e,this.currency=n,this.unit=r,this.minFractionDigits=i,this.maxFractionDigits=s;}static parse(t,e){if(3!==t.length)return e.error("Expected two arguments.");const n=e.parse(t[1],1,Ot);if(!n)return null;const r=t[2];if("object"!=typeof r||Array.isArray(r))return e.error("NumberFormat options argument must be an object.");let i=null;if(r.locale&&(i=e.parse(r.locale,1,$t),!i))return null;let s=null;if(r.currency&&(s=e.parse(r.currency,1,$t),!s))return null;let o=null;if(r.unit&&(o=e.parse(r.unit,1,$t),!o))return null;if(s&&o)return e.error("NumberFormat options `currency` and `unit` are mutually exclusive");let a=null;if(r["min-fraction-digits"]&&(a=e.parse(r["min-fraction-digits"],1,Ot),!a))return null;let l=null;return r["max-fraction-digits"]&&(l=e.parse(r["max-fraction-digits"],1,Ot),!l)?null:new Fn(n,i,s,o,a,l)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":this.unit?"unit":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,unit:this.unit?this.unit.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.unit&&t(this.unit),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);}outputDefined(){return !1}}class Pn{constructor(t){this.type=Xt,this.sections=t;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const n=t[1];if(!Array.isArray(n)&&"object"==typeof n)return e.error("First argument must be an image or text section.");const r=[];let i=!1;for(let n=1;n<=t.length-1;++n){const s=t[n];if(i&&"object"==typeof s&&!Array.isArray(s)){i=!1;let t=null;if(s["font-scale"]&&(t=e.parse(s["font-scale"],1,Ot),!t))return null;let n=null;if(s["text-font"]&&(n=e.parse(s["text-font"],1,Jt($t)),!n))return null;let o=null;if(s["text-color"]&&(o=e.parse(s["text-color"],1,Nt),!o))return null;let a=null;if(s["vertical-align"]){if("string"==typeof s["vertical-align"]&&!Pe.includes(s["vertical-align"]))return e.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${s["vertical-align"]}' instead.`);if(a=e.parse(s["vertical-align"],1,$t),!a)return null}const l=r[r.length-1];l.scale=t,l.font=n,l.textColor=o,l.verticalAlign=a;}else {const s=e.parse(t[n],1,qt);if(!s)return null;const o=s.type.kind;if("string"!==o&&"value"!==o&&"null"!==o&&"resolvedImage"!==o)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");i=!0,r.push({content:s,scale:null,font:null,textColor:null,verticalAlign:null});}}return new Pn(r)}evaluate(t){return new ze(this.sections.map((e=>{const n=e.content.evaluate(t);return qe(n)===Wt?new De("",n,null,null,null,e.verticalAlign?e.verticalAlign.evaluate(t):null):new De(Ge(n),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null,e.verticalAlign?e.verticalAlign.evaluate(t):null)})))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor),e.verticalAlign&&t(e.verticalAlign);}outputDefined(){return !1}}class Dn{constructor(t){this.type=Wt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error("Expected two arguments.");const n=e.parse(t[1],1,$t);return n?new Dn(n):e.error("No image name provided.")}evaluate(t){const e=this.input.evaluate(t),n=Re.fromString(e);return n&&t.availableImages&&(n.available=t.availableImages.indexOf(e)>-1),n}eachChild(t){t(this.input);}outputDefined(){return !1}}class zn{constructor(t){this.type=Ot,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const n=e.parse(t[1],1);return n?"array"!==n.type.kind&&"string"!==n.type.kind&&"value"!==n.type.kind?e.error(`Expected argument of type string or array, but found ${Qt(n.type)} instead.`):new zn(n):null}evaluate(t){const e=this.input.evaluate(t);if("string"==typeof e)return [...e].length;if(Array.isArray(e))return e.length;throw new Le(`Expected value to be of type string or array, but found ${Qt(qe(e))} instead.`)}eachChild(t){t(this.input);}outputDefined(){return !1}}const Bn=8192;function Cn(t,e){const n=(180+t[0])/360,r=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(n*i*Bn),Math.round(r*i*Bn)]}function Vn(t,e){const n=Math.pow(2,e.z);return [(i=(t[0]/Bn+e.x)/n,360*i-180),(r=(t[1]/Bn+e.y)/n,360/Math.PI*Math.atan(Math.exp((180-360*r)*Math.PI/180))-90)];var r,i;}function Ln(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1]);}function On(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function $n(t,e,n){const r=t[0]-e[0],i=t[1]-e[1],s=t[0]-n[0],o=t[1]-n[1];return r*o-s*i==0&&r*s<=0&&i*o<=0}function Rn(t,e,n,r){return 0!=(i=[r[0]-n[0],r[1]-n[1]])[0]*(s=[e[0]-t[0],e[1]-t[1]])[1]-i[1]*s[0]&&!(!Xn(t,e,n,r)||!Xn(n,r,t,e));var i,s;}function Nn(t,e,n){for(const r of n)for(let n=0;n(i=t)[1]!=(o=a[e+1])[1]>i[1]&&i[0]<(o[0]-s[0])*(i[1]-s[1])/(o[1]-s[1])+s[0]&&(r=!r);}var i,s,o;return r}function jn(t,e){for(const n of e)if(Un(t,n))return !0;return !1}function qn(t,e){for(const n of t)if(!Un(n,e))return !1;for(let n=0;n0&&a<0||o<0&&a>0}function Yn(t,e,n){const r=[];for(let i=0;in[2]){const e=.5*r;let i=t[0]-n[0]>e?-r:n[0]-t[0]>e?r:0;0===i&&(i=t[0]-n[2]>e?-r:n[2]-t[0]>e?r:0),t[0]+=i;}Ln(e,t);}function Wn(t,e,n,r){const i=Math.pow(2,r.z)*Bn,s=[r.x*Bn,r.y*Bn],o=[];for(const r of t)for(const t of r){const r=[t.x+s[0],t.y+s[1]];Hn(r,e,n,i),o.push(r);}return o}function Kn(t,e,n,r){const i=Math.pow(2,r.z)*Bn,s=[r.x*Bn,r.y*Bn],o=[];for(const n of t){const t=[];for(const r of n){const n=[r.x+s[0],r.y+s[1]];Ln(e,n),t.push(n);}o.push(t);}if(e[2]-e[0]<=i/2){(a=e)[0]=a[1]=1/0,a[2]=a[3]=-1/0;for(const t of o)for(const r of t)Hn(r,e,n,i);}var a;return o}class Jn{constructor(t,e){this.type=Rt,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(je(t[1])){const e=t[1];if("FeatureCollection"===e.type){const t=[];for(const n of e.features){const{type:e,coordinates:r}=n.geometry;"Polygon"===e&&t.push(r),"MultiPolygon"===e&&t.push(...r);}if(t.length)return new Jn(e,{type:"MultiPolygon",coordinates:t})}else if("Feature"===e.type){const t=e.geometry.type;if("Polygon"===t||"MultiPolygon"===t)return new Jn(e,e.geometry)}else if("Polygon"===e.type||"MultiPolygon"===e.type)return new Jn(e,e)}return e.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,e){const n=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){const s=Yn(e.coordinates,r,i),o=Wn(t.geometry(),n,r,i);if(!On(n,r))return !1;for(const t of o)if(!Un(t,s))return !1}if("MultiPolygon"===e.type){const s=Zn(e.coordinates,r,i),o=Wn(t.geometry(),n,r,i);if(!On(n,r))return !1;for(const t of o)if(!jn(t,s))return !1}return !0}(t,this.geometries);if("LineString"===t.geometryType())return function(t,e){const n=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){const s=Yn(e.coordinates,r,i),o=Kn(t.geometry(),n,r,i);if(!On(n,r))return !1;for(const t of o)if(!qn(t,s))return !1}if("MultiPolygon"===e.type){const s=Zn(e.coordinates,r,i),o=Kn(t.geometry(),n,r,i);if(!On(n,r))return !1;for(const t of o)if(!Gn(t,s))return !1}return !0}(t,this.geometries)}return !1}eachChild(){}outputDefined(){return !0}}let Qn=class{constructor(t=[],e=(t,e)=>te?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this._up(this.length++);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return --this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:n}=this,r=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(n(r,s)>=0)break;e[t]=s,t=i;}e[t]=r;}_down(t){const{data:e,compare:n}=this,r=this.length>>1,i=e[t];for(;t=0)break;e[t]=e[r],t=r;}e[t]=i;}};function tr(t,e,n=0,r=t.length-1,i=nr){for(;r>n;){if(r-n>600){const s=r-n+1,o=e-n+1,a=Math.log(s),l=.5*Math.exp(2*a/3),u=.5*Math.sqrt(a*l*(s-l)/s)*(o-s/2<0?-1:1);tr(t,e,Math.max(n,Math.floor(e-o*l/s+u)),Math.min(r,Math.floor(e+(s-o)*l/s+u)),i);}const s=t[e];let o=n,a=r;for(er(t,n,e),i(t[r],s)>0&&er(t,n,r);o0;)a--;}0===i(t[n],s)?er(t,n,a):(a++,er(t,a,r)),a<=e&&(n=a+1),e<=a&&(r=a-1);}}function er(t,e,n){const r=t[e];t[e]=t[n],t[n]=r;}function nr(t,e){return te?1:0}function rr(t,e){if(t.length<=1)return [t];const n=[];let r,i;for(const e of t){const t=sr(e);0!==t&&(e.area=Math.abs(t),void 0===i&&(i=t<0),i===t<0?(r&&n.push(r),r=[e]):r.push(e));}if(r&&n.push(r),e>1)for(let t=0;t1?(l=t[a+1][0],u=t[a+1][1]):p>0&&(l+=c/this.kx*p,u+=h/this.ky*p)),c=this.wrap(e[0]-l)*this.kx,h=(e[1]-u)*this.ky;const f=c*c+h*h;f180;)t-=360;return t}}function cr(t,e){return e[0]-t[0]}function hr(t){return t[1]-t[0]+1}function pr(t,e){return t[1]>=t[0]&&t[1]t[1])return [null,null];const n=hr(t);if(e){if(2===n)return [t,null];const e=Math.floor(n/2);return [[t[0],t[0]+e],[t[0]+e,t[1]]]}if(1===n)return [t,null];const r=Math.floor(n/2)-1;return [[t[0],t[0]+r],[t[0]+r+1,t[1]]]}function dr(t,e){if(!pr(e,t.length))return [1/0,1/0,-1/0,-1/0];const n=[1/0,1/0,-1/0,-1/0];for(let r=e[0];r<=e[1];++r)Ln(n,t[r]);return n}function yr(t){const e=[1/0,1/0,-1/0,-1/0];for(const n of t)for(const t of n)Ln(e,t);return e}function mr(t){return t[0]!==-1/0&&t[1]!==-1/0&&t[2]!==1/0&&t[3]!==1/0}function gr(t,e,n){if(!mr(t)||!mr(e))return NaN;let r=0,i=0;return t[2]e[2]&&(r=t[0]-e[2]),t[1]>e[3]&&(i=t[1]-e[3]),t[3]=r)return r;if(On(i,s)){if(Ar(t,e))return 0}else if(Ar(e,t))return 0;let o=1/0;for(const r of t)for(let t=0,i=r.length,s=i-1;t0;){const i=o.pop();if(i[0]>=s)continue;const l=i[1],u=e?50:100;if(hr(l)<=u){if(!pr(l,t.length))return NaN;if(e){const e=Sr(t,l,n,r);if(isNaN(e)||0===e)return e;s=Math.min(s,e);}else for(let e=l[0];e<=l[1];++e){const i=_r(t[e],n,r);if(s=Math.min(s,i),0===s)return 0}}else {const n=fr(l,e);kr(o,s,r,t,a,n[0]),kr(o,s,r,t,a,n[1]);}}return s}function Tr(t,e,n,r,i,s=1/0){let o=Math.min(s,i.distance(t[0],n[0]));if(0===o)return o;const a=new Qn([[0,[0,t.length-1],[0,n.length-1]]],cr);for(;a.length>0;){const s=a.pop();if(s[0]>=o)continue;const l=s[1],u=s[2],c=e?50:100,h=r?50:100;if(hr(l)<=c&&hr(u)<=h){if(!pr(l,t.length)&&pr(u,n.length))return NaN;let s;if(e&&r)s=br(t,l,n,u,i),o=Math.min(o,s);else if(e&&!r){const e=t.slice(l[0],l[1]+1);for(let t=u[0];t<=u[1];++t)if(s=xr(n[t],e,i),o=Math.min(o,s),0===o)return o}else if(!e&&r){const e=n.slice(u[0],u[1]+1);for(let n=l[0];n<=l[1];++n)if(s=xr(t[n],e,i),o=Math.min(o,s),0===o)return o}else s=wr(t,l,n,u,i),o=Math.min(o,s);}else {const s=fr(l,e),c=fr(u,r);Ir(a,o,i,t,n,s[0],c[0]),Ir(a,o,i,t,n,s[0],c[1]),Ir(a,o,i,t,n,s[1],c[0]),Ir(a,o,i,t,n,s[1],c[1]);}}return o}function Fr(t){return "MultiPolygon"===t.type?t.coordinates.map((t=>({type:"Polygon",coordinates:t}))):"MultiLineString"===t.type?t.coordinates.map((t=>({type:"LineString",coordinates:t}))):"MultiPoint"===t.type?t.coordinates.map((t=>({type:"Point",coordinates:t}))):[t]}class Pr{constructor(t,e){this.type=Ot,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'distance' expression requires exactly one argument, but found ${t.length-1} instead.`);if(je(t[1])){const e=t[1];if("FeatureCollection"===e.type)return new Pr(e,e.features.map((t=>Fr(t.geometry))).flat());if("Feature"===e.type)return new Pr(e,Fr(e.geometry));if("type"in e&&"coordinates"in e)return new Pr(e,Fr(e))}return e.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,e){const n=t.geometry(),r=n.flat().map((e=>Vn([e.x,e.y],t.canonical)));if(0===n.length)return NaN;const i=new ur(r[0][1]);let s=1/0;for(const t of e){switch(t.type){case "Point":s=Math.min(s,Tr(r,!1,[t.coordinates],!1,i,s));break;case "LineString":s=Math.min(s,Tr(r,!1,t.coordinates,!0,i,s));break;case "Polygon":s=Math.min(s,Er(r,!1,t.coordinates,i,s));}if(0===s)return s}return s}(t,this.geometries);if("LineString"===t.geometryType())return function(t,e){const n=t.geometry(),r=n.flat().map((e=>Vn([e.x,e.y],t.canonical)));if(0===n.length)return NaN;const i=new ur(r[0][1]);let s=1/0;for(const t of e){switch(t.type){case "Point":s=Math.min(s,Tr(r,!0,[t.coordinates],!1,i,s));break;case "LineString":s=Math.min(s,Tr(r,!0,t.coordinates,!0,i,s));break;case "Polygon":s=Math.min(s,Er(r,!0,t.coordinates,i,s));}if(0===s)return s}return s}(t,this.geometries);if("Polygon"===t.geometryType())return function(t,e){const n=t.geometry();if(0===n.length||0===n[0].length)return NaN;const r=rr(n,0).map((e=>e.map((e=>e.map((e=>Vn([e.x,e.y],t.canonical))))))),i=new ur(r[0][0][0][1]);let s=1/0;for(const t of e)for(const e of r){switch(t.type){case "Point":s=Math.min(s,Er([t.coordinates],!1,e,i,s));break;case "LineString":s=Math.min(s,Er(t.coordinates,!0,e,i,s));break;case "Polygon":s=Math.min(s,Mr(e,t.coordinates,i,s));}if(0===s)return s}return s}(t,this.geometries)}return NaN}eachChild(){}outputDefined(){return !0}}class Dr{constructor(t){this.type=qt,this.key=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const n=t[1];return null==n?e.error("Global state property must be defined."):"string"!=typeof n?e.error(`Global state property must be string, but found ${typeof t[1]} instead.`):new Dr(n)}evaluate(t){var e;const n=null===(e=t.globals)||void 0===e?void 0:e.globalState;return n&&0!==Object.keys(n).length?we(n,this.key):null}eachChild(){}outputDefined(){return !1}}const zr={"==":Sn,"!=":An,">":kn,"<":Mn,">=":En,"<=":In,array:Ze,at:nn,boolean:Ze,case:an,coalesce:vn,collator:Tn,format:Pn,image:Dn,in:rn,"index-of":sn,interpolate:mn,"interpolate-hcl":mn,"interpolate-lab":mn,length:zn,let:tn,literal:Xe,match:on,number:Ze,"number-format":Fn,object:Ze,slice:ln,step:cn,string:Ze,"to-boolean":We,"to-color":We,"to-number":We,"to-string":We,var:en,within:Jn,distance:Pr,"global-state":Dr};class Br{constructor(t,e,n,r){this.name=t,this.type=e,this._evaluate=n,this.args=r;}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t);}outputDefined(){return !1}static parse(t,e){const n=t[0],r=Br.definitions[n];if(!r)return e.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`,0);const i=Array.isArray(r)?r[0]:r.type,s=Array.isArray(r)?[[r[1],r[2]]]:r.overloads,o=s.filter((([e])=>!Array.isArray(e)||e.length===t.length-1));let a=null;for(const[r,s]of o){a=new Qe(e.registry,$r,e.path,null,e.scope);const o=[];let l=!1;for(let e=1;e{return e=t,Array.isArray(e)?`(${e.map(Qt).join(", ")})`:`(${Qt(e.type)}...)`;var e;})).join(" | "),r=[];for(let n=1;n{n=e?n&&$r(t):n&&t instanceof Xe;})),!!n&&Rr(t)&&Ur(t,["zoom","heatmap-density","elevation","line-progress","accumulated","is-supported-script"])}function Rr(t){if(t instanceof Br){if("get"===t.name&&1===t.args.length)return !1;if("feature-state"===t.name)return !1;if("has"===t.name&&1===t.args.length)return !1;if("properties"===t.name||"geometry-type"===t.name||"id"===t.name)return !1;if(/^filter-/.test(t.name))return !1}if(t instanceof Jn)return !1;if(t instanceof Pr)return !1;let e=!0;return t.eachChild((t=>{e&&!Rr(t)&&(e=!1);})),e}function Nr(t){if(t instanceof Br&&"feature-state"===t.name)return !1;let e=!0;return t.eachChild((t=>{e&&!Nr(t)&&(e=!1);})),e}function Ur(t,e){if(t instanceof Br&&e.indexOf(t.name)>=0)return !1;let n=!0;return t.eachChild((t=>{n&&!Ur(t,e)&&(n=!1);})),n}function jr(t){return {result:"success",value:t}}function qr(t){return {result:"error",value:t}}function Gr(t){return "data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function Xr(t){return !!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Yr(t){return !!t.expression&&t.expression.interpolated}function Zr(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function Hr(t){return "object"==typeof t&&null!==t&&!Array.isArray(t)&&qe(t)===jt}function Wr(t){return t}function Kr(t,e){const n=t.stops&&"object"==typeof t.stops[0][0],r=n||!(n||void 0!==t.property),i=t.type||(Yr(e)?"exponential":"interval"),s=function(t){switch(t.type){case "color":return Te.parse;case "padding":return Be.parse;case "numberArray":return Ce.parse;case "colorArray":return Ve.parse;default:return null}}(e);if(s&&((t=Bt({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],s(t[1])]))),t.default=s(t.default?t.default:e.default)),t.colorSpace&&"rgb"!==(o=t.colorSpace)&&"hcl"!==o&&"lab"!==o)throw new Error(`Unknown color space: "${t.colorSpace}"`);var o;const a=function(t){switch(t){case "exponential":return ei;case "interval":return ti;case "categorical":return Qr;case "identity":return ni;default:throw new Error(`Unknown function type "${t}"`)}}(i);let l,u;if("categorical"===i){l=Object.create(null);for(const e of t.stops)l[e[0]]=e[1];u=typeof t.stops[0][0];}if(n){const n={},r=[];for(let e=0;et[0])),evaluate:({zoom:n},r)=>ei({stops:i,base:t.base},e,n).evaluate(n,r)}}if(r){const n="exponential"===i?{name:"exponential",base:void 0!==t.base?t.base:1}:null;return {kind:"camera",interpolationType:n,interpolationFactor:mn.interpolationFactor.bind(void 0,n),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:n})=>a(t,e,n,l,u)}}return {kind:"source",evaluate(n,r){const i=r&&r.properties?r.properties[t.property]:void 0;return void 0===i?Jr(t.default,e.default):a(t,e,i,l,u)}}}function Jr(t,e,n){return void 0!==t?t:void 0!==e?e:void 0!==n?n:void 0}function Qr(t,e,n,r,i){return Jr(typeof n===i?r[n]:void 0,t.default,e.default)}function ti(t,e,n){if("number"!==Zr(n))return Jr(t.default,e.default);const r=t.stops.length;if(1===r)return t.stops[0][1];if(n<=t.stops[0][0])return t.stops[0][1];if(n>=t.stops[r-1][0])return t.stops[r-1][1];const i=un(t.stops.map((t=>t[0])),n);return t.stops[i][1]}function ei(t,e,n){const r=void 0!==t.base?t.base:1;if("number"!==Zr(n))return Jr(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(n<=t.stops[0][0])return t.stops[0][1];if(n>=t.stops[i-1][0])return t.stops[i-1][1];const s=un(t.stops.map((t=>t[0])),n),o=function(t,e,n,r){const i=r-n,s=t-n;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}(n,r,t.stops[s][0],t.stops[s+1][0]),a=t.stops[s][1],l=t.stops[s+1][1],u=xn[e.type]||Wr;return "function"==typeof a.evaluate?{evaluate(...e){const n=a.evaluate.apply(void 0,e),r=l.evaluate.apply(void 0,e);if(void 0!==n&&void 0!==r)return u(n,r,o,t.colorSpace)}}:u(a,l,o,t.colorSpace)}function ni(t,e,n){switch(e.type){case "color":n=Te.parse(n);break;case "formatted":n=ze.fromString(n.toString());break;case "resolvedImage":n=Re.fromString(n.toString());break;case "padding":n=Be.parse(n);break;case "colorArray":n=Ve.parse(n);break;case "numberArray":n=Ce.parse(n);break;default:Zr(n)===e.type||"enum"===e.type&&e.values[n]||(n=void 0);}return Jr(n,t.default,e.default)}Br.register(zr,{error:[{kind:"error"},[$t],(t,[e])=>{throw new Le(e.evaluate(t))}],typeof:[$t,[qt],(t,[e])=>Qt(qe(e.evaluate(t)))],"to-rgba":[Jt(Ot,4),[Nt],(t,[e])=>{const[n,r,i,s]=e.evaluate(t).rgb;return [255*n,255*r,255*i,s]}],rgb:[Nt,[Ot,Ot,Ot],Cr],rgba:[Nt,[Ot,Ot,Ot,Ot],Cr],has:{type:Rt,overloads:[[[$t],(t,[e])=>Vr(e.evaluate(t),t.properties())],[[$t,jt],(t,[e,n])=>Vr(e.evaluate(t),n.evaluate(t))]]},get:{type:qt,overloads:[[[$t],(t,[e])=>Lr(e.evaluate(t),t.properties())],[[$t,jt],(t,[e,n])=>Lr(e.evaluate(t),n.evaluate(t))]]},"feature-state":[qt,[$t],(t,[e])=>Lr(e.evaluate(t),t.featureState||{})],properties:[jt,[],t=>t.properties()],"geometry-type":[$t,[],t=>t.geometryType()],id:[qt,[],t=>t.id()],zoom:[Ot,[],t=>t.globals.zoom],"heatmap-density":[Ot,[],t=>t.globals.heatmapDensity||0],elevation:[Ot,[],t=>t.globals.elevation||0],"line-progress":[Ot,[],t=>t.globals.lineProgress||0],accumulated:[qt,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],"+":[Ot,Or(Ot),(t,e)=>{let n=0;for(const r of e)n+=r.evaluate(t);return n}],"*":[Ot,Or(Ot),(t,e)=>{let n=1;for(const r of e)n*=r.evaluate(t);return n}],"-":{type:Ot,overloads:[[[Ot,Ot],(t,[e,n])=>e.evaluate(t)-n.evaluate(t)],[[Ot],(t,[e])=>-e.evaluate(t)]]},"/":[Ot,[Ot,Ot],(t,[e,n])=>e.evaluate(t)/n.evaluate(t)],"%":[Ot,[Ot,Ot],(t,[e,n])=>e.evaluate(t)%n.evaluate(t)],ln2:[Ot,[],()=>Math.LN2],pi:[Ot,[],()=>Math.PI],e:[Ot,[],()=>Math.E],"^":[Ot,[Ot,Ot],(t,[e,n])=>Math.pow(e.evaluate(t),n.evaluate(t))],sqrt:[Ot,[Ot],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[Ot,[Ot],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[Ot,[Ot],(t,[e])=>Math.log(e.evaluate(t))],log2:[Ot,[Ot],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[Ot,[Ot],(t,[e])=>Math.sin(e.evaluate(t))],cos:[Ot,[Ot],(t,[e])=>Math.cos(e.evaluate(t))],tan:[Ot,[Ot],(t,[e])=>Math.tan(e.evaluate(t))],asin:[Ot,[Ot],(t,[e])=>Math.asin(e.evaluate(t))],acos:[Ot,[Ot],(t,[e])=>Math.acos(e.evaluate(t))],atan:[Ot,[Ot],(t,[e])=>Math.atan(e.evaluate(t))],min:[Ot,Or(Ot),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[Ot,Or(Ot),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[Ot,[Ot],(t,[e])=>Math.abs(e.evaluate(t))],round:[Ot,[Ot],(t,[e])=>{const n=e.evaluate(t);return n<0?-Math.round(-n):Math.round(n)}],floor:[Ot,[Ot],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[Ot,[Ot],(t,[e])=>Math.ceil(e.evaluate(t))],"filter-==":[Rt,[$t,qt],(t,[e,n])=>t.properties()[e.value]===n.value],"filter-id-==":[Rt,[qt],(t,[e])=>t.id()===e.value],"filter-type-==":[Rt,[$t],(t,[e])=>t.geometryType()===e.value],"filter-<":[Rt,[$t,qt],(t,[e,n])=>{const r=t.properties()[e.value],i=n.value;return typeof r==typeof i&&r{const n=t.id(),r=e.value;return typeof n==typeof r&&n":[Rt,[$t,qt],(t,[e,n])=>{const r=t.properties()[e.value],i=n.value;return typeof r==typeof i&&r>i}],"filter-id->":[Rt,[qt],(t,[e])=>{const n=t.id(),r=e.value;return typeof n==typeof r&&n>r}],"filter-<=":[Rt,[$t,qt],(t,[e,n])=>{const r=t.properties()[e.value],i=n.value;return typeof r==typeof i&&r<=i}],"filter-id-<=":[Rt,[qt],(t,[e])=>{const n=t.id(),r=e.value;return typeof n==typeof r&&n<=r}],"filter->=":[Rt,[$t,qt],(t,[e,n])=>{const r=t.properties()[e.value],i=n.value;return typeof r==typeof i&&r>=i}],"filter-id->=":[Rt,[qt],(t,[e])=>{const n=t.id(),r=e.value;return typeof n==typeof r&&n>=r}],"filter-has":[Rt,[qt],(t,[e])=>e.value in t.properties()],"filter-has-id":[Rt,[],t=>null!==t.id()&&void 0!==t.id()],"filter-type-in":[Rt,[Jt($t)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],"filter-id-in":[Rt,[Jt(qt)],(t,[e])=>e.value.indexOf(t.id())>=0],"filter-in-small":[Rt,[$t,Jt(qt)],(t,[e,n])=>n.value.indexOf(t.properties()[e.value])>=0],"filter-in-large":[Rt,[$t,Jt(qt)],(t,[e,n])=>function(t,e,n,r){for(;n<=r;){const i=n+r>>1;if(e[i]===t)return !0;e[i]>t?r=i-1:n=i+1;}return !1}(t.properties()[e.value],n.value,0,n.value.length-1)],all:{type:Rt,overloads:[[[Rt,Rt],(t,[e,n])=>e.evaluate(t)&&n.evaluate(t)],[Or(Rt),(t,e)=>{for(const n of e)if(!n.evaluate(t))return !1;return !0}]]},any:{type:Rt,overloads:[[[Rt,Rt],(t,[e,n])=>e.evaluate(t)||n.evaluate(t)],[Or(Rt),(t,e)=>{for(const n of e)if(n.evaluate(t))return !0;return !1}]]},"!":[Rt,[Rt],(t,[e])=>!e.evaluate(t)],"is-supported-script":[Rt,[$t],(t,[e])=>{const n=t.globals&&t.globals.isSupportedScript;return !n||n(e.evaluate(t))}],upcase:[$t,[$t],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[$t,[$t],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[$t,Or(qt),(t,e)=>e.map((e=>Ge(e.evaluate(t)))).join("")],split:[Jt($t),[$t,$t],(t,[e,n])=>e.evaluate(t).split(n.evaluate(t))],join:[$t,[Jt($t),$t],(t,[e,n])=>e.evaluate(t).join(n.evaluate(t))],"resolved-locale":[$t,[Gt],(t,[e])=>e.evaluate(t).resolvedLocale()]});class ri{constructor(t,e,n){this.expression=t,this._warningHistory={},this._evaluator=new Je,this._defaultValue=e?function(t){if("color"===t.type&&Hr(t.default))return new Te(0,0,0,0);switch(t.type){case "color":return Te.parse(t.default)||null;case "padding":return Be.parse(t.default)||null;case "numberArray":return Ce.parse(t.default)||null;case "colorArray":return Ve.parse(t.default)||null;case "variableAnchorOffsetCollection":return $e.parse(t.default)||null;case "projectionDefinition":return Ne.parse(t.default)||null;default:return void 0===t.default?null:t.default}}(e):null,this._enumValues=e&&"enum"===e.type?e.values:null,this._globalState=n;}evaluateWithoutErrorHandling(t,e,n,r,i,s){return this._globalState&&(t=pi(t,this._globalState)),this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=n,this._evaluator.canonical=r,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s,this.expression.evaluate(this._evaluator)}evaluate(t,e,n,r,i,s){this._globalState&&(t=pi(t,this._globalState)),this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=n||null,this._evaluator.canonical=r,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||"number"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new Le(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(", ")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,"undefined"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function ii(t){return Array.isArray(t)&&t.length>0&&"string"==typeof t[0]&&t[0]in zr}function si(t,e,n){const r=new Qe(zr,$r,[],e?function(t){const e={color:Nt,string:$t,number:Ot,enum:$t,boolean:Rt,formatted:Xt,padding:Yt,numberArray:Ht,colorArray:Zt,projectionDefinition:Ut,resolvedImage:Wt,variableAnchorOffsetCollection:Kt};return "array"===t.type?Jt(e[t.value]||qt,t.length):e[t.type]}(e):void 0),i=r.parse(t,void 0,void 0,void 0,e&&"string"===e.type?{typeAnnotation:"coerce"}:void 0);return i?jr(new ri(i,e,n)):qr(r.errors)}class oi{constructor(t,e,n){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!Nr(e.expression),this.globalStateRefs=hi(e.expression),this._globalState=n;}evaluateWithoutErrorHandling(t,e,n,r,i,s){return this._globalState&&(t=pi(t,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(t,e,n,r,i,s)}evaluate(t,e,n,r,i,s){return this._globalState&&(t=pi(t,this._globalState)),this._styleExpression.evaluate(t,e,n,r,i,s)}}class ai{constructor(t,e,n,r,i){this.kind=t,this.zoomStops=n,this._styleExpression=e,this.isStateDependent="camera"!==t&&!Nr(e.expression),this.globalStateRefs=hi(e.expression),this.interpolationType=r,this._globalState=i;}evaluateWithoutErrorHandling(t,e,n,r,i,s){return this._globalState&&(t=pi(t,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(t,e,n,r,i,s)}evaluate(t,e,n,r,i,s){return this._globalState&&(t=pi(t,this._globalState)),this._styleExpression.evaluate(t,e,n,r,i,s)}interpolationFactor(t,e,n){return this.interpolationType?mn.interpolationFactor(this.interpolationType,t,e,n):0}}function li(t,e,n){const r=si(t,e,n);if("error"===r.result)return r;const i=r.value.expression,s=Rr(i);if(!s&&!Gr(e))return qr([new Ct("","data expressions not supported")]);const o=Ur(i,["zoom"]);if(!o&&!Xr(e))return qr([new Ct("","zoom expressions not supported")]);const a=ci(i);return a||o?a instanceof Ct?qr([a]):a instanceof mn&&!Yr(e)?qr([new Ct("",'"interpolate" expressions cannot be used with this property')]):jr(a?new ai(s?"camera":"composite",r.value,a.labels,a instanceof mn?a.interpolation:void 0,n):new oi(s?"constant":"source",r.value,n)):qr([new Ct("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class ui{constructor(t,e){this._parameters=t,this._specification=e,Bt(this,Kr(this._parameters,this._specification));}static deserialize(t){return new ui(t._parameters,t._specification)}static serialize(t){return {_parameters:t._parameters,_specification:t._specification}}}function ci(t){let e=null;if(t instanceof tn)e=ci(t.result);else if(t instanceof vn){for(const n of t.args)if(e=ci(n),e)break}else (t instanceof cn||t instanceof mn)&&t.input instanceof Br&&"zoom"===t.input.name&&(e=t);return e instanceof Ct||t.eachChild((t=>{const n=ci(t);n instanceof Ct?e=n:!e&&n?e=new Ct("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&n&&e!==n&&(e=new Ct("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'));})),e}function hi(t,e=new Set){return t instanceof Dr&&e.add(t.key),t.eachChild((t=>{hi(t,e);})),e}function pi(t,e){const{zoom:n,heatmapDensity:r,elevation:i,lineProgress:s,isSupportedScript:o,accumulated:a}=null!=t?t:{};return {zoom:n,heatmapDensity:r,elevation:i,lineProgress:s,isSupportedScript:o,accumulated:a,globalState:e}}function fi(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case "has":return t.length>=2&&"$id"!==t[1]&&"$type"!==t[1];case "in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case "!in":case "!has":case "none":return !1;case "==":case "!=":case ">":case ">=":case "<":case "<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case "any":case "all":for(const e of t.slice(1))if(!fi(e)&&"boolean"!=typeof e)return !1;return !0;default:return !0}}const di={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function yi(t,e){if(null==t)return {filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set};fi(t)||(t=xi(t));const n=si(t,di,e);if("error"===n.result)throw new Error(n.value.map((t=>`${t.key}: ${t.message}`)).join(", "));return {filter:(t,e,r)=>n.value.evaluate(t,e,{},r),needGeometry:gi(t),getGlobalStateRefs:()=>hi(n.value.expression)}}function mi(t,e){return te?1:0}function gi(t){if(!Array.isArray(t))return !1;if("within"===t[0]||"distance"===t[0])return !0;for(let e=1;e"===e||"<="===e||">="===e?vi(t[1],t[2],e):"any"===e?(n=t.slice(1),["any"].concat(n.map(xi))):"all"===e?["all"].concat(t.slice(1).map(xi)):"none"===e?["all"].concat(t.slice(1).map(xi).map(_i)):"in"===e?bi(t[1],t.slice(2)):"!in"===e?_i(bi(t[1],t.slice(2))):"has"===e?wi(t[1]):"!has"!==e||_i(wi(t[1]));var n;}function vi(t,e,n){switch(t){case "$type":return [`filter-type-${n}`,e];case "$id":return [`filter-id-${n}`,e];default:return [`filter-${n}`,t,e]}}function bi(t,e){if(0===e.length)return !1;switch(t){case "$type":return ["filter-type-in",["literal",e]];case "$id":return ["filter-id-in",["literal",e]];default:return e.length>200&&!e.some((t=>typeof t!=typeof e[0]))?["filter-in-large",t,["literal",e.sort(mi)]]:["filter-in-small",t,["literal",e]]}}function wi(t){switch(t){case "$type":return !0;case "$id":return ["filter-has-id"];default:return ["filter-has",t]}}function _i(t){return ["!",t]}function Si(t){const e=typeof t;if("number"===e||"boolean"===e||"string"===e||null==t)return JSON.stringify(t);if(Array.isArray(t)){let e="[";for(const n of t)e+=`${Si(n)},`;return `${e}]`}const n=Object.keys(t).sort();let r="{";for(let e=0;er.maximum?[new zt(e,n,`${n} is greater than the maximum value ${r.maximum}`)]:[]}function Pi(t){const e=t.valueSpec,n=ki(t.value.type);let r,i,s,o={};const a="categorical"!==n&&void 0===t.value.property,l=!a,u="array"===Zr(t.value.stops)&&"array"===Zr(t.value.stops[0])&&"object"===Zr(t.value.stops[0][0]),c=Ei({key:t.key,value:t.value,valueSpec:t.styleSpec.function,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===n)return [new zt(t.key,t.value,'identity function may not have a "stops" property')];let e=[];const r=t.value;return e=e.concat(Ti({key:t.key,value:r,valueSpec:t.valueSpec,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),"array"===Zr(r)&&0===r.length&&e.push(new zt(t.key,r,"array must have at least one stop")),e},default:function(t){return t.validateSpec({key:t.key,value:t.value,valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec})}}});return "identity"===n&&a&&c.push(new zt(t.key,t.value,'missing required property "property"')),"identity"===n||t.value.stops||c.push(new zt(t.key,t.value,'missing required property "stops"')),"exponential"===n&&t.valueSpec.expression&&!Yr(t.valueSpec)&&c.push(new zt(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!Gr(t.valueSpec)?c.push(new zt(t.key,t.value,"property functions not supported")):a&&!Xr(t.valueSpec)&&c.push(new zt(t.key,t.value,"zoom functions not supported"))),"categorical"!==n&&!u||void 0!==t.value.property||c.push(new zt(t.key,t.value,'"property" property is required')),c;function h(t){let n=[];const r=t.value,a=t.key;if("array"!==Zr(r))return [new zt(a,r,`array expected, ${Zr(r)} found`)];if(2!==r.length)return [new zt(a,r,`array length 2 expected, length ${r.length} found`)];if(u){if("object"!==Zr(r[0]))return [new zt(a,r,`object expected, ${Zr(r[0])} found`)];if(void 0===r[0].zoom)return [new zt(a,r,"object stop key must have zoom")];if(void 0===r[0].value)return [new zt(a,r,"object stop key must have value")];if(s&&s>ki(r[0].zoom))return [new zt(a,r[0].zoom,"stop zoom values must appear in ascending order")];ki(r[0].zoom)!==s&&(s=ki(r[0].zoom),i=void 0,o={}),n=n.concat(Ei({key:`${a}[0]`,value:r[0],valueSpec:{zoom:{}},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Fi,value:p}}));}else n=n.concat(p({key:`${a}[0]`,value:r[0],validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec},r));return ii(Ii(r[1]))?n.concat([new zt(`${a}[1]`,r[1],"expressions are not allowed in function stops.")]):n.concat(t.validateSpec({key:`${a}[1]`,value:r[1],valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec}))}function p(t,s){const a=Zr(t.value),l=ki(t.value),u=null!==t.value?t.value:s;if(r){if(a!==r)return [new zt(t.key,u,`${a} stop domain type must match previous stop domain type ${r}`)]}else r=a;if("number"!==a&&"string"!==a&&"boolean"!==a)return [new zt(t.key,u,"stop domain value must be a number, string, or boolean")];if("number"!==a&&"categorical"!==n){let r=`number expected, ${a} found`;return Gr(e)&&void 0===n&&(r+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new zt(t.key,u,r)]}return "categorical"!==n||"number"!==a||isFinite(l)&&Math.floor(l)===l?"categorical"!==n&&"number"===a&&void 0!==i&&lnew zt(`${t.key}${e.key}`,t.value,e.message)));const n=e.value.expression||e.value._styleExpression.expression;if("property"===t.expressionContext&&"text-font"===t.propertyKey&&!n.outputDefined())return [new zt(t.key,t.value,`Invalid data expression for "${t.propertyKey}". Output values must be contained as literals within the expression.`)];if("property"===t.expressionContext&&"layout"===t.propertyType&&!Nr(n))return [new zt(t.key,t.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===t.expressionContext&&!Nr(n))return [new zt(t.key,t.value,'"feature-state" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf("cluster")){if(!Ur(n,["zoom","feature-state"]))return [new zt(t.key,t.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===t.expressionContext&&!Rr(n))return [new zt(t.key,t.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return []}function zi(t){const e=t.key,n=t.value,r=Zr(n);return "string"!==r?[new zt(e,n,`color expected, ${r} found`)]:Te.parse(String(n))?[]:[new zt(e,n,`color expected, "${n}" found`)]}function Bi(t){const e=t.key,n=t.value,r=t.valueSpec,i=[];return Array.isArray(r.values)?-1===r.values.indexOf(ki(n))&&i.push(new zt(e,n,`expected one of [${r.values.join(", ")}], ${JSON.stringify(n)} found`)):-1===Object.keys(r.values).indexOf(ki(n))&&i.push(new zt(e,n,`expected one of [${Object.keys(r.values).join(", ")}], ${JSON.stringify(n)} found`)),i}function Ci(t){return fi(Ii(t.value))?Di(Bt({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Vi(t)}function Vi(t){const e=t.value,n=t.key;if("array"!==Zr(e))return [new zt(n,e,`array expected, ${Zr(e)} found`)];const r=t.styleSpec;let i,s=[];if(e.length<1)return [new zt(n,e,"filter array must have at least 1 element")];switch(s=s.concat(Bi({key:`${n}[0]`,value:e[0],valueSpec:r.filter_operator,style:t.style,styleSpec:t.styleSpec})),ki(e[0])){case "<":case "<=":case ">":case ">=":e.length>=2&&"$type"===ki(e[1])&&s.push(new zt(n,e,`"$type" cannot be use with operator "${e[0]}"`));case "==":case "!=":3!==e.length&&s.push(new zt(n,e,`filter array for operator "${e[0]}" must have 3 elements`));case "in":case "!in":e.length>=2&&(i=Zr(e[1]),"string"!==i&&s.push(new zt(`${n}[1]`,e[1],`string expected, ${i} found`)));for(let o=2;o{t in i&&r.push(new zt(s,i[t],`"${t}" is prohibited for ref layers`));})),o.layers.forEach((e=>{ki(e.id)===u&&(t=e);})),t?t.ref?r.push(new zt(s,i.ref,"ref cannot reference another ref layer")):l=ki(t.type):r.push(new zt(s,i.ref,`ref layer "${u}" not found`));}else if("background"!==l)if(i.source){const t=o.sources&&o.sources[i.source],e=t&&ki(t.type);t?"vector"===e&&"raster"===l?r.push(new zt(s,i.source,`layer "${i.id}" requires a raster source`)):"raster-dem"!==e&&"hillshade"===l||"raster-dem"!==e&&"color-relief"===l?r.push(new zt(s,i.source,`layer "${i.id}" requires a raster-dem source`)):"raster"===e&&"raster"!==l?r.push(new zt(s,i.source,`layer "${i.id}" requires a vector source`)):"vector"!==e||i["source-layer"]?"raster-dem"===e&&"hillshade"!==l&&"color-relief"!==l?r.push(new zt(s,i.source,"raster-dem source can only be used with layer type 'hillshade' or 'color-relief'.")):"line"!==l||!i.paint||!i.paint["line-gradient"]||"geojson"===e&&t.lineMetrics||r.push(new zt(s,i,`layer "${i.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):r.push(new zt(s,i,`layer "${i.id}" must specify a "source-layer"`)):r.push(new zt(s,i.source,`source "${i.source}" not found`));}else r.push(new zt(s,i,'missing required property "source"'));return "raster"===l&&(null===(e=i.paint)||void 0===e?void 0:e.resampling)&&(null===(n=i.paint)||void 0===n?void 0:n["raster-resampling"])&&r.push(new zt(s,i.paint,`layer "${i.id}" redundantly specifies "resampling" and "raster-resampling" paint properties, but only one is allowed. It is advised to use "resampling".`)),r=r.concat(Ei({key:s,value:i,valueSpec:a.layer,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":()=>[],type:()=>t.validateSpec({key:`${s}.type`,value:i.type,valueSpec:a.layer.type,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,object:i,objectKey:"type"}),filter:Ci,layout:t=>Ei({layer:i,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":t=>$i(Bt({layerType:l},t))}}),paint:t=>Ei({layer:i,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":t=>Oi(Bt({layerType:l},t))}})}})),r}function Ni(t){const e=t.value,n=t.key,r=Zr(e);return "string"!==r?[new zt(n,e,`string expected, ${r} found`)]:[]}const Ui={promoteId:function({key:t,value:e}){if("string"===Zr(e))return Ni({key:t,value:e});{const n=[];for(const r in e)n.push(...Ni({key:`${t}.${r}`,value:e[r]}));return n}}};function ji(t){const e=t.value,n=t.key,r=t.styleSpec,i=t.style,s=t.validateSpec;if(!e.type)return [new zt(n,e,'"type" is required')];const o=ki(e.type);let a;switch(o){case "vector":case "raster":return a=Ei({key:n,value:e,valueSpec:r[`source_${o.replace("-","_")}`],style:t.style,styleSpec:r,objectElementValidators:Ui,validateSpec:s}),a;case "raster-dem":return a=function(t){var e;const n=null!==(e=t.sourceName)&&void 0!==e?e:"",r=t.value,i=t.styleSpec,s=i.source_raster_dem,o=t.style;let a=[];const l=Zr(r);if(void 0===r)return a;if("object"!==l)return a.push(new zt("source_raster_dem",r,`object expected, ${l} found`)),a;const u="custom"===ki(r.encoding),c=["redFactor","greenFactor","blueFactor","baseShift"],h=t.value.encoding?`"${t.value.encoding}"`:"Default";for(const e in r)!u&&c.includes(e)?a.push(new zt(e,r[e],`In "${n}": "${e}" is only valid when "encoding" is set to "custom". ${h} encoding found`)):s[e]?a=a.concat(t.validateSpec({key:e,value:r[e],valueSpec:s[e],validateSpec:t.validateSpec,style:o,styleSpec:i})):a.push(new zt(e,r[e],`unknown property "${e}"`));return a}({sourceName:n,value:e,style:t.style,styleSpec:r,validateSpec:s}),a;case "geojson":if(a=Ei({key:n,value:e,valueSpec:r.source_geojson,style:i,styleSpec:r,validateSpec:s,objectElementValidators:Ui}),e.cluster)for(const t in e.clusterProperties){const[r,i]=e.clusterProperties[t],s="string"==typeof r?[r,["accumulated"],["get",t]]:r;a.push(...Di({key:`${n}.${t}.map`,value:i,expressionContext:"cluster-map"})),a.push(...Di({key:`${n}.${t}.reduce`,value:s,expressionContext:"cluster-reduce"}));}return a;case "video":return Ei({key:n,value:e,valueSpec:r.source_video,style:i,validateSpec:s,styleSpec:r});case "image":return Ei({key:n,value:e,valueSpec:r.source_image,style:i,validateSpec:s,styleSpec:r});case "canvas":return [new zt(n,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return Bi({key:`${n}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]}})}}function qi(t){const e=t.value,n=t.styleSpec,r=n.light,i=t.style;let s=[];const o=Zr(e);if(void 0===e)return s;if("object"!==o)return s=s.concat([new zt("light",e,`object expected, ${o} found`)]),s;for(const o in e){const a=o.match(/^(.*)-transition$/);s=s.concat(a&&r[a[1]]&&r[a[1]].transition?t.validateSpec({key:o,value:e[o],valueSpec:n.transition,validateSpec:t.validateSpec,style:i,styleSpec:n}):r[o]?t.validateSpec({key:o,value:e[o],valueSpec:r[o],validateSpec:t.validateSpec,style:i,styleSpec:n}):[new zt(o,e[o],`unknown property "${o}"`)]);}return s}function Gi(t){const e=t.value,n=t.styleSpec,r=n.sky,i=t.style,s=Zr(e);if(void 0===e)return [];if("object"!==s)return [new zt("sky",e,`object expected, ${s} found`)];let o=[];for(const s in e)o=o.concat(r[s]?t.validateSpec({key:s,value:e[s],valueSpec:r[s],style:i,styleSpec:n}):[new zt(s,e[s],`unknown property "${s}"`)]);return o}function Xi(t){const e=t.value,n=t.styleSpec,r=n.terrain,i=t.style;let s=[];const o=Zr(e);if(void 0===e)return s;if("object"!==o)return s=s.concat([new zt("terrain",e,`object expected, ${o} found`)]),s;for(const o in e)s=s.concat(r[o]?t.validateSpec({key:o,value:e[o],valueSpec:r[o],validateSpec:t.validateSpec,style:i,styleSpec:n}):[new zt(o,e[o],`unknown property "${o}"`)]);return s}function Yi(t){let e=[];const n=t.value,r=t.key;if(Array.isArray(n)){const i=[],s=[];for(const o in n)n[o].id&&i.includes(n[o].id)&&e.push(new zt(r,n,`all the sprites' ids must be unique, but ${n[o].id} is duplicated`)),i.push(n[o].id),n[o].url&&s.includes(n[o].url)&&e.push(new zt(r,n,`all the sprites' URLs must be unique, but ${n[o].url} is duplicated`)),s.push(n[o].url),e=e.concat(Ei({key:`${r}[${o}]`,value:n[o],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:t.validateSpec}));return e}return Ni({key:r,value:n})}function Zi(t){return Boolean(t)&&t.constructor===Object}function Hi(t){return Zi(t.value)?[]:[new zt(t.key,t.value,`object expected, ${Zr(t.value)} found`)]}const Wi={"*":()=>[],array:Ti,boolean:function(t){const e=t.value,n=t.key,r=Zr(e);return "boolean"!==r?[new zt(n,e,`boolean expected, ${r} found`)]:[]},number:Fi,color:zi,constants:Mi,enum:Bi,filter:Ci,function:Pi,layer:Ri,object:Ei,source:ji,light:qi,sky:Gi,terrain:Xi,projection:function(t){const e=t.value,n=t.styleSpec,r=n.projection,i=t.style,s=Zr(e);if(void 0===e)return [];if("object"!==s)return [new zt("projection",e,`object expected, ${s} found`)];let o=[];for(const s in e)o=o.concat(r[s]?t.validateSpec({key:s,value:e[s],valueSpec:r[s],style:i,styleSpec:n}):[new zt(s,e[s],`unknown property "${s}"`)]);return o},projectionDefinition:function(t){const e=t.key;let n=t.value;n=n instanceof String?n.valueOf():n;const r=Zr(n);return "array"!==r||function(t){return Array.isArray(t)&&3===t.length&&"string"==typeof t[0]&&"string"==typeof t[1]&&"number"==typeof t[2]}(n)||function(t){return !!["interpolate","step","literal"].includes(t[0])}(n)?["array","string"].includes(r)?[]:[new zt(e,n,`projection expected, invalid type "${r}" found`)]:[new zt(e,n,`projection expected, invalid array ${JSON.stringify(n)} found`)]},string:Ni,formatted:function(t){return 0===Ni(t).length?[]:Di(t)},resolvedImage:function(t){return 0===Ni(t).length?[]:Di(t)},padding:function(t){const e=t.key,n=t.value;if("array"===Zr(n)){if(n.length<1||n.length>4)return [new zt(e,n,`padding requires 1 to 4 values; ${n.length} values found`)];const r={type:"number"};let i=[];for(let s=0;s[]}})),t.constants&&(n=n.concat(Mi({key:"constants",value:t.constants}))),es(n)}function ts(t){return function(e){return t(Object.assign({},e,{validateSpec:Ki}))}}function es(t){return [].concat(t).sort(((t,e)=>t.line-e.line))}function ns(t){return function(...e){return es(t.apply(this,e))}}Qi.source=ns(ts(ji)),Qi.sprite=ns(ts(Yi)),Qi.glyphs=ns(ts(Ji)),Qi.light=ns(ts(qi)),Qi.sky=ns(ts(Gi)),Qi.terrain=ns(ts(Xi)),Qi.state=ns(ts(Hi)),Qi.layer=ns(ts(Ri)),Qi.filter=ns(ts(Ci)),Qi.paintProperty=ns(ts(Oi)),Qi.layoutProperty=ns(ts($i));const rs={type:"enum","property-type":"data-constant",expression:{interpolated:!1,parameters:["global-state"]},values:{visible:{},none:{}},transition:!1,default:"visible"};class is{constructor(t,e){this._globalState=e,this.setValue(t);}evaluate(){var t;return null!==(t=this._literalValue)&&void 0!==t?t:this._compiledValue.evaluate({})}setValue(t){if(null==t||"visible"===t||"none"===t)return this._literalValue="none"===t?"none":"visible",this._compiledValue=void 0,void(this._globalStateRefs=new Set);const e=si(t,rs,this._globalState);if("error"===e.result)throw this._literalValue="visible",this._compiledValue=void 0,new Error(e.value.map((t=>`${t.key}: ${t.message}`)).join(", "));this._literalValue=void 0,this._compiledValue=e.value,this._globalStateRefs=hi(e.value.expression);}getGlobalStateRefs(){return this._globalStateRefs}}const ss=wt,os=Qi,as=os.light,ls=os.sky,us=os.paintProperty,cs=os.layoutProperty;function hs(t,e){let n=!1;if(null==e?void 0:e.length)for(const r of e)t.fire(new vt(new Error(r.message))),n=!0;return n}class ps{constructor(t,e,n){const r=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;const i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(n=i[2]);for(let t=0;t=u[l+0]&&r>=u[l+1])?(o[c]=!0,s.push(i[c])):o[c]=!1;}}}_forEachCell(t,e,n,r,i,s,o,a){const l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(n),h=this._convertToCellCoord(r);for(let p=l;p<=c;p++)for(let l=u;l<=h;l++){const u=this.d*l+p;if((!a||a(this._convertFromCellCoord(p),this._convertFromCellCoord(l),this._convertFromCellCoord(p+1),this._convertFromCellCoord(l+1)))&&i.call(this,t,e,n,r,u,s,o,a))return}}_convertFromCellCoord(t){return (t-this.padding)/this.scale}_convertToCellCoord(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const t=this.cells,e=3+this.cells.length+1+1;let n=0;for(const t of this.cells)n+=t.length;const r=new Int32Array(e+n+this.keys.length+this.bboxes.length);r[0]=this.extent,r[1]=this.n,r[2]=this.padding;let i=e;for(let e=0;en?(this.lastIntegerZoom=n+1,this.lastIntegerZoomTime=e):this.lastFloorZoom{try{return new RegExp(`\\p{sc=${t}}`,"u").source}catch(t){return null}})).filter((t=>t));return new RegExp(e.join("|"),"u")}const Is=ks(["Arab","Dupl","Mong","Ougr","Syrc"]);function Es(t){return !Is.test(String.fromCodePoint(t))}function Ts(t){return !(_s(t)||(e=t,/[\xA7\xA9\xAE\xB1\xBC-\xBE\xD7\xF7\u2016\u2020\u2021\u2030\u2031\u203B\u203C\u2042\u2047-\u2049\u2051\u2100-\u218F\u221E\u2234\u2235\u2300-\u2307\u230C-\u231F\u2324-\u2328\u232B\u237D-\u239A\u23BE-\u23CD\u23CF\u23D1-\u23DB\u23E2-\u2422\u2424-\u24FF\u25A0-\u2619\u2620-\u2767\u2776-\u2793\u2B12-\u2B2F\u2B50-\u2B59\u2BB8-\u2BEB\u3000-\u303F\u30A0-\u30FF\uE000-\uF8FF\uFE30-\uFE6F\uFF00-\uFFEF\uFFFC\uFFFD]|[\uDB80-\uDBFF][\uDC00-\uDFFF]/gim.test(String.fromCodePoint(e))));var e;}const Fs=ks(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function Ps(t){return Fs.test(String.fromCodePoint(t))}function Ds(t,e){return !(!e&&Ps(t)||/[\u0900-\u0DFF\u0F00-\u109F\u1780-\u17FF]/gim.test(String.fromCodePoint(t)))}function zs(t){for(const e of t)if(Ps(e.codePointAt(0)))return !0;return !1}const Bs=new class{constructor(){this.TIMEOUT=5e3,this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null,this.loadScriptResolve=()=>{};}setState(t){this.pluginStatus=t.pluginStatus,this.pluginURL=t.pluginURL;}getState(){return {pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(t){if(Bs.isParsed())throw new Error("RTL text plugin already registered.");this.applyArabicShaping=t.applyArabicShaping,this.processBidirectionalText=t.processBidirectionalText,this.processStyledBidirectionalText=t.processStyledBidirectionalText,this.loadScriptResolve();}isParsed(){return null!=this.applyArabicShaping&&null!=this.processBidirectionalText&&null!=this.processStyledBidirectionalText}getRTLTextPluginStatus(){return this.pluginStatus}syncState(t,n){return e(this,void 0,void 0,(function*(){if(this.isParsed())return this.getState();if("loading"!==t.pluginStatus)return this.setState(t),t;const e=t.pluginURL,r=new Promise((t=>{this.loadScriptResolve=t;}));n(e);const i=new Promise((t=>setTimeout((()=>t()),this.TIMEOUT)));if(yield Promise.race([r,i]),this.isParsed()){const t={pluginStatus:"loaded",pluginURL:e};return this.setState(t),t}throw this.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${e}`)}))}};class Cs{constructor(t,e){this.isSupportedScript=Vs,this.zoom=t,e?(this.now=e.now||0,this.fadeDuration=e.fadeDuration||0,this.zoomHistory=e.zoomHistory||new bs,this.transition=e.transition||{}):(this.now=0,this.fadeDuration=0,this.zoomHistory=new bs,this.transition={});}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,e=t-Math.floor(t),n=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*n}:{fromScale:.5,toScale:1,t:1-(1-n)*e}}}function Vs(t){return function(t,e){for(const n of t)if(!Ds(n.codePointAt(0),e))return !1;return !0}(t,"loaded"===Bs.getRTLTextPluginStatus())}const Ls="-transition";class Os{constructor(t,e,n){this.property=t,this.value=e,this.expression=function(t,e,n){if(Hr(t))return new ui(t,e);if(ii(t)){const r=li(t,e,n);if("error"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(", "));return r.value}{let n=t;return "color"===e.type&&"string"==typeof t?n=Te.parse(t):"padding"!==e.type||"number"!=typeof t&&!Array.isArray(t)?"numberArray"!==e.type||"number"!=typeof t&&!Array.isArray(t)?"colorArray"!==e.type||"string"!=typeof t&&!Array.isArray(t)?"variableAnchorOffsetCollection"===e.type&&Array.isArray(t)?n=$e.parse(t):"projectionDefinition"===e.type&&"string"==typeof t&&(n=Ne.parse(t)):n=Ve.parse(t):n=Ce.parse(t):n=Be.parse(t),{globalStateRefs:new Set,_globalState:null,kind:"constant",evaluate:()=>n}}}(void 0===e?t.specification.default:e,t.specification,n);}isDataDriven(){return "source"===this.expression.kind||"composite"===this.expression.kind}getGlobalStateRefs(){return this.expression.globalStateRefs||new Set}possiblyEvaluate(t,e,n){return this.property.possiblyEvaluate(this,t,e,n)}}class $s{constructor(t,e){this.property=t,this.value=new Os(t,void 0,e);}transitioned(t,e){return new Ns(this.property,this.value,e,$({},t.transition,this.transition),t.now)}untransitioned(){return new Ns(this.property,this.value,null,{},0)}}class Rs{constructor(t,e){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues),this._globalState=e;}hasProperty(t){return t in this._properties.defaultTransitionablePropertyValues}getValue(t){return j(this._values[t].value.value)}setValue(t,e){Object.hasOwn(this._values,t)||(this._values[t]=new $s(this._values[t].property,this._globalState)),this._values[t].value=new Os(this._values[t].property,null===e?void 0:j(e),this._globalState);}getTransition(t){return j(this._values[t].transition)}setTransition(t,e){Object.hasOwn(this._values,t)||(this._values[t]=new $s(this._values[t].property,this._globalState)),this._values[t].transition=j(e)||void 0;}serialize(){const t={};for(const e of Object.keys(this._values)){const n=this.getValue(e);void 0!==n&&(t[e]=n);const r=this.getTransition(e);void 0!==r&&(t[`${e}${Ls}`]=r);}return t}transitioned(t,e){const n=new Us(this._properties);for(const r of Object.keys(this._values))n._values[r]=this._values[r].transitioned(t,e._values[r]);return n}untransitioned(){const t=new Us(this._properties);for(const e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class Ns{constructor(t,e,n,r,i){this.property=t,this.value=e,this.begin=i+r.delay||0,this.end=this.begin+r.duration||0,t.specification.transition&&(r.delay||r.duration)&&(this.prior=n);}possiblyEvaluate(t,e,n){const r=t.now||0,i=this.value.possiblyEvaluate(t,e,n),s=this.prior;if(s){if(r>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(rr.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:n,to:e}}interpolate(t){return t}}class Hs{constructor(t){this.specification=t;}possiblyEvaluate(t,e,n,r){if(void 0!==t.value){if("constant"===t.expression.kind){const i=t.expression.evaluate(e,null,{},n,r);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new Cs(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Cs(Math.floor(e.zoom),e)),t.expression.evaluate(new Cs(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,n,r){return r.zoom>r.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:n,to:e}}interpolate(t){return t}}class Ws{constructor(t){this.specification=t;}possiblyEvaluate(t,e,n,r){return !!t.expression.evaluate(e,null,{},n,r)}interpolate(){return !1}}class Ks{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const e in t){const n=t[e];n.specification.overridable&&this.overridableProperties.push(e);const r=this.defaultPropertyValues[e]=new Os(n,void 0,void 0),i=this.defaultTransitionablePropertyValues[e]=new $s(n,void 0);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=r.possiblyEvaluate({});}}}ds("DataDrivenProperty",Ys),ds("DataConstantProperty",Xs),ds("CrossFadedDataDrivenProperty",Zs),ds("CrossFadedProperty",Hs),ds("ColorRampProperty",Ws);const Js=" is a PAINT property not a LAYOUT property. Use get/setPaintProperty instead?",Qs=" is a LAYOUT property not a PAINT property. Use get/setLayoutProperty instead?";class to extends bt{constructor(t,e,n){if(super(),this.id=t.id,this.type=t.type,this._globalState=n,this._featureFilter={filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set},this._visibilityExpression=function(t,e){return new is(t,e)}(this.visibility,n),"custom"!==t.type&&(this.metadata=t.metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,"background"!==t.type&&(this.source=t.source,this.sourceLayer=t["source-layer"],this.filter=t.filter,this._featureFilter=yi(t.filter,n)),e.layout&&(this._unevaluatedLayout=new js(e.layout,n)),e.paint)){this._transitionablePaint=new Rs(e.paint,n);for(const e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(const e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Gs(e.paint);}}setFilter(t){this.filter=t,this._featureFilter=yi(t,this._globalState);}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){var e;if("visibility"===t)return this.visibility;if(null===(e=this._transitionablePaint)||void 0===e?void 0:e.hasProperty(t))throw new Error(t+Js);if(!this._unevaluatedLayout)throw new Error(`Cannot get layout property "${t}" on layer type "${this.type}" which has no layout properties.`);return this._unevaluatedLayout.getValue(t)}getLayoutAffectingGlobalStateRefs(){const t=new Set;for(const e of this._visibilityExpression.getGlobalStateRefs())t.add(e);if(this._unevaluatedLayout)for(const e in this._unevaluatedLayout._values){const n=this._unevaluatedLayout._values[e];for(const e of n.getGlobalStateRefs())t.add(e);}for(const e of this._featureFilter.getGlobalStateRefs())t.add(e);return t}getPaintAffectingGlobalStateRefs(){var t;const e=new globalThis.Map;if(this._transitionablePaint)for(const n in this._transitionablePaint._values){const r=this._transitionablePaint._values[n].value;for(const i of r.getGlobalStateRefs()){const s=null!==(t=e.get(i))&&void 0!==t?t:[];s.push({name:n,value:r.value}),e.set(i,s);}}return e}getVisibilityAffectingGlobalStateRefs(){return this._visibilityExpression.getGlobalStateRefs()}setLayoutProperty(t,e,n={}){var r;if("visibility"===t)return this.visibility=e,this._visibilityExpression.setValue(e),void this.recalculateVisibility();(null===(r=this._transitionablePaint)||void 0===r?void 0:r.hasProperty(t))?this.fire(new vt(new Error(t+Js))):null!=e&&this._validate(cs,`layers.${this.id}.layout.${t}`,t,e,n)||this._unevaluatedLayout.setValue(t,e);}getPaintProperty(t){var e,n;if(t.endsWith(Ls)){const n=t.slice(0,-11);if("visibility"===n||(null===(e=this._unevaluatedLayout)||void 0===e?void 0:e.hasProperty(n)))throw new Error(t+Qs);return this._transitionablePaint.getTransition(n)}if("visibility"===t||(null===(n=this._unevaluatedLayout)||void 0===n?void 0:n.hasProperty(t)))throw new Error(t+Qs);return this._transitionablePaint.getValue(t)}setPaintProperty(t,e,n={}){var r;if("visibility"===t||(null===(r=this._unevaluatedLayout)||void 0===r?void 0:r.hasProperty(t)))return this.fire(new vt(new Error(t+Qs))),!1;if(null!=e&&this._validate(us,`layers.${this.id}.paint.${t}`,t,e,n))return !1;if(t.endsWith(Ls))return this._transitionablePaint.setTransition(t.slice(0,-11),e||void 0),!1;{const n=this._transitionablePaint._values[t],r="cross-faded-data-driven"===n.property.specification["property-type"],i=n.value.isDataDriven(),s=n.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);const o=this._transitionablePaint._values[t].value;return o.isDataDriven()||i||r||this._handleOverridablePaintPropertyUpdate(t,s,o)}}_handleSpecialPaintPropertyUpdate(t){}_handleOverridablePaintPropertyUpdate(t,e,n){return !1}isHidden(t=this.minzoom,e=!1){return !!(this.minzoom&&t<(e?Math.floor(this.minzoom):this.minzoom))||!!(this.maxzoom&&t>=this.maxzoom)||"none"===this._evaluatedVisibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);}hasTransition(){return this._transitioningPaint.hasTransition()}recalculateVisibility(){this._evaluatedVisibility=this._visibilityExpression.evaluate();}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);}serialize(){var t,e;const n={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:null===(t=this._unevaluatedLayout)||void 0===t?void 0:t.serialize(),paint:null===(e=this._transitionablePaint)||void 0===e?void 0:e.serialize()};return this.visibility&&(n.layout||(n.layout={}),n.layout.visibility=this.visibility),U(n,((t,e)=>!(void 0===t||"layout"===e&&!Object.keys(t).length||"paint"===e&&!Object.keys(t).length)))}_validate(t,e,n,r,i={}){return !1!==(null==i?void 0:i.validate)&&hs(this,t.call(os,{key:e,layerType:this.type,objectKey:n,value:r,styleSpec:wt,style:{glyphs:!0,sprite:!0}}))}is3D(){return !1}isTileClipped(){return !1}hasOffscreenPass(){return !1}resize(){}isStateDependent(){for(const t in this.paint._values){const e=this.paint.get(t);if(e instanceof qs&&Gr(e.property.specification)&&("source"===e.value.kind||"composite"===e.value.kind)&&e.value.isStateDependent)return !0}return !1}}let eo;var no={get paint(){return eo=eo||new Ks({"raster-opacity":new Xs(wt.paint_raster["raster-opacity"]),"raster-hue-rotate":new Xs(wt.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Xs(wt.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Xs(wt.paint_raster["raster-brightness-max"]),"raster-saturation":new Xs(wt.paint_raster["raster-saturation"]),"raster-contrast":new Xs(wt.paint_raster["raster-contrast"]),resampling:new Xs(wt.paint_raster.resampling),"raster-resampling":new Xs(wt.paint_raster["raster-resampling"]),"raster-fade-duration":new Xs(wt.paint_raster["raster-fade-duration"])})}};class ro extends to{constructor(t,e){super(t,no,e);}}const io={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class so{constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;}}class oo{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());}clear(){this.length=0;}resize(t){this.reserve(t),this.length=t;}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}freeBufferAfterUpload(){this.arrayBuffer=new ArrayBuffer(0),this._refreshViews();}}function ao(t,e=1){let n=0,r=0;return {members:t.map((t=>{const i=io[t.type].BYTES_PER_ELEMENT,s=n=lo(n,Math.max(e,i)),o=t.components||1;return r=Math.max(r,i),n+=i*o,{name:t.name,type:t.type,components:o,offset:s}})),size:lo(n,Math.max(r,e)),alignment:e}}function lo(t,e){return Math.ceil(t/e)*e}class uo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e){const n=this.length;return this.resize(n+1),this.emplace(n,t,e)}emplace(t,e,n){const r=2*t;return this.int16[r+0]=e,this.int16[r+1]=n,t}}uo.prototype.bytesPerElement=4,ds("StructArrayLayout2i4",uo);class co extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n){const r=this.length;return this.resize(r+1),this.emplace(r,t,e,n)}emplace(t,e,n,r){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=n,this.int16[i+2]=r,t}}co.prototype.bytesPerElement=6,ds("StructArrayLayout3i6",co);class ho extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,n,r)}emplace(t,e,n,r,i){const s=4*t;return this.int16[s+0]=e,this.int16[s+1]=n,this.int16[s+2]=r,this.int16[s+3]=i,t}}ho.prototype.bytesPerElement=8,ds("StructArrayLayout4i8",ho);class po extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,n,r,i,s)}emplace(t,e,n,r,i,s,o){const a=6*t;return this.int16[a+0]=e,this.int16[a+1]=n,this.int16[a+2]=r,this.int16[a+3]=i,this.int16[a+4]=s,this.int16[a+5]=o,t}}po.prototype.bytesPerElement=12,ds("StructArrayLayout2i4i12",po);class fo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,n,r,i,s)}emplace(t,e,n,r,i,s,o){const a=4*t,l=8*t;return this.int16[a+0]=e,this.int16[a+1]=n,this.uint8[l+4]=r,this.uint8[l+5]=i,this.uint8[l+6]=s,this.uint8[l+7]=o,t}}fo.prototype.bytesPerElement=8,ds("StructArrayLayout2i4ub8",fo);class yo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e){const n=this.length;return this.resize(n+1),this.emplace(n,t,e)}emplace(t,e,n){const r=2*t;return this.float32[r+0]=e,this.float32[r+1]=n,t}}yo.prototype.bytesPerElement=8,ds("StructArrayLayout2f8",yo);class mo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a,l,u){const c=this.length;return this.resize(c+1),this.emplace(c,t,e,n,r,i,s,o,a,l,u)}emplace(t,e,n,r,i,s,o,a,l,u,c){const h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=n,this.uint16[h+2]=r,this.uint16[h+3]=i,this.uint16[h+4]=s,this.uint16[h+5]=o,this.uint16[h+6]=a,this.uint16[h+7]=l,this.uint16[h+8]=u,this.uint16[h+9]=c,t}}mo.prototype.bytesPerElement=20,ds("StructArrayLayout10ui20",mo);class go extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a){const l=this.length;return this.resize(l+1),this.emplace(l,t,e,n,r,i,s,o,a)}emplace(t,e,n,r,i,s,o,a,l){const u=8*t;return this.uint16[u+0]=e,this.uint16[u+1]=n,this.uint16[u+2]=r,this.uint16[u+3]=i,this.uint16[u+4]=s,this.uint16[u+5]=o,this.uint16[u+6]=a,this.uint16[u+7]=l,t}}go.prototype.bytesPerElement=16,ds("StructArrayLayout8ui16",go);class xo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a,l,u,c,h){const p=this.length;return this.resize(p+1),this.emplace(p,t,e,n,r,i,s,o,a,l,u,c,h)}emplace(t,e,n,r,i,s,o,a,l,u,c,h,p){const f=12*t;return this.int16[f+0]=e,this.int16[f+1]=n,this.int16[f+2]=r,this.int16[f+3]=i,this.uint16[f+4]=s,this.uint16[f+5]=o,this.uint16[f+6]=a,this.uint16[f+7]=l,this.int16[f+8]=u,this.int16[f+9]=c,this.int16[f+10]=h,this.int16[f+11]=p,t}}xo.prototype.bytesPerElement=24,ds("StructArrayLayout4i4ui4i24",xo);class vo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,n){const r=this.length;return this.resize(r+1),this.emplace(r,t,e,n)}emplace(t,e,n,r){const i=3*t;return this.float32[i+0]=e,this.float32[i+1]=n,this.float32[i+2]=r,t}}vo.prototype.bytesPerElement=12,ds("StructArrayLayout3f12",vo);class bo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}bo.prototype.bytesPerElement=4,ds("StructArrayLayout1ul4",bo);class wo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a,l){const u=this.length;return this.resize(u+1),this.emplace(u,t,e,n,r,i,s,o,a,l)}emplace(t,e,n,r,i,s,o,a,l,u){const c=10*t,h=5*t;return this.int16[c+0]=e,this.int16[c+1]=n,this.int16[c+2]=r,this.int16[c+3]=i,this.int16[c+4]=s,this.int16[c+5]=o,this.uint32[h+3]=a,this.uint16[c+8]=l,this.uint16[c+9]=u,t}}wo.prototype.bytesPerElement=20,ds("StructArrayLayout6i1ul2ui20",wo);class _o extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,n,r,i,s)}emplace(t,e,n,r,i,s,o){const a=6*t;return this.int16[a+0]=e,this.int16[a+1]=n,this.int16[a+2]=r,this.int16[a+3]=i,this.int16[a+4]=s,this.int16[a+5]=o,t}}_o.prototype.bytesPerElement=12,ds("StructArrayLayout2i2i2i12",_o);class So extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,n,r,i)}emplace(t,e,n,r,i,s){const o=4*t,a=8*t;return this.float32[o+0]=e,this.float32[o+1]=n,this.float32[o+2]=r,this.int16[a+6]=i,this.int16[a+7]=s,t}}So.prototype.bytesPerElement=16,ds("StructArrayLayout2f1f2i16",So);class Ao extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,n,r,i,s)}emplace(t,e,n,r,i,s,o){const a=16*t,l=4*t,u=8*t;return this.uint8[a+0]=e,this.uint8[a+1]=n,this.float32[l+1]=r,this.float32[l+2]=i,this.int16[u+6]=s,this.int16[u+7]=o,t}}Ao.prototype.bytesPerElement=16,ds("StructArrayLayout2ub2f2i16",Ao);class Mo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n){const r=this.length;return this.resize(r+1),this.emplace(r,t,e,n)}emplace(t,e,n,r){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=n,this.uint16[i+2]=r,t}}Mo.prototype.bytesPerElement=6,ds("StructArrayLayout3ui6",Mo);class ko extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m){const g=this.length;return this.resize(g+1),this.emplace(g,t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m)}emplace(t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g){const x=24*t,v=12*t,b=48*t;return this.int16[x+0]=e,this.int16[x+1]=n,this.uint16[x+2]=r,this.uint16[x+3]=i,this.uint32[v+2]=s,this.uint32[v+3]=o,this.uint32[v+4]=a,this.uint16[x+10]=l,this.uint16[x+11]=u,this.uint16[x+12]=c,this.float32[v+7]=h,this.float32[v+8]=p,this.uint8[b+36]=f,this.uint8[b+37]=d,this.uint8[b+38]=y,this.uint32[v+10]=m,this.int16[x+22]=g,t}}ko.prototype.bytesPerElement=48,ds("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",ko);class Io extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,M,k,I){const E=this.length;return this.resize(E+1),this.emplace(E,t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,M,k,I)}emplace(t,e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,M,k,I,E){const T=32*t,F=16*t;return this.int16[T+0]=e,this.int16[T+1]=n,this.int16[T+2]=r,this.int16[T+3]=i,this.int16[T+4]=s,this.int16[T+5]=o,this.int16[T+6]=a,this.int16[T+7]=l,this.uint16[T+8]=u,this.uint16[T+9]=c,this.uint16[T+10]=h,this.uint16[T+11]=p,this.uint16[T+12]=f,this.uint16[T+13]=d,this.uint16[T+14]=y,this.uint16[T+15]=m,this.uint16[T+16]=g,this.uint16[T+17]=x,this.uint16[T+18]=v,this.uint16[T+19]=b,this.uint16[T+20]=w,this.uint16[T+21]=_,this.uint16[T+22]=S,this.uint32[F+12]=A,this.float32[F+13]=M,this.float32[F+14]=k,this.uint16[T+30]=I,this.uint16[T+31]=E,t}}Io.prototype.bytesPerElement=64,ds("StructArrayLayout8i15ui1ul2f2ui64",Io);class Eo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}Eo.prototype.bytesPerElement=4,ds("StructArrayLayout1f4",Eo);class To extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,n){const r=this.length;return this.resize(r+1),this.emplace(r,t,e,n)}emplace(t,e,n,r){const i=3*t;return this.uint16[6*t+0]=e,this.float32[i+1]=n,this.float32[i+2]=r,t}}To.prototype.bytesPerElement=12,ds("StructArrayLayout1ui2f12",To);class Fo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,n){const r=this.length;return this.resize(r+1),this.emplace(r,t,e,n)}emplace(t,e,n,r){const i=4*t;return this.uint32[2*t+0]=e,this.uint16[i+2]=n,this.uint16[i+3]=r,t}}Fo.prototype.bytesPerElement=8,ds("StructArrayLayout1ul2ui8",Fo);class Po extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e){const n=this.length;return this.resize(n+1),this.emplace(n,t,e)}emplace(t,e,n){const r=2*t;return this.uint16[r+0]=e,this.uint16[r+1]=n,t}}Po.prototype.bytesPerElement=4,ds("StructArrayLayout2ui4",Po);class Do extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}Do.prototype.bytesPerElement=2,ds("StructArrayLayout1ui2",Do);class zo extends oo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,n,r){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,n,r)}emplace(t,e,n,r,i){const s=4*t;return this.float32[s+0]=e,this.float32[s+1]=n,this.float32[s+2]=r,this.float32[s+3]=i,t}}zo.prototype.bytesPerElement=16,ds("StructArrayLayout4f16",zo);class Bo extends so{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new n(this.anchorPointX,this.anchorPointY)}}Bo.prototype.size=20;class Co extends wo{get(t){return new Bo(this,t)}}ds("CollisionBoxArray",Co);class Vo extends so{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(t){this._structArray.uint8[this._pos1+37]=t;}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(t){this._structArray.uint8[this._pos1+38]=t;}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(t){this._structArray.uint32[this._pos4+10]=t;}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}Vo.prototype.size=48;class Lo extends ko{get(t){return new Vo(this,t)}}ds("PlacedSymbolArray",Lo);class Oo extends so{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(t){this._structArray.uint32[this._pos4+12]=t;}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}Oo.prototype.size=64;class $o extends Io{get(t){return new Oo(this,t)}}ds("SymbolInstanceArray",$o);class Ro extends Eo{getoffsetX(t){return this.float32[1*t+0]}}ds("GlyphOffsetArray",Ro);class No extends co{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}ds("SymbolLineVertexArray",No);class Uo extends so{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}Uo.prototype.size=12;class jo extends To{get(t){return new Uo(this,t)}}ds("TextAnchorOffsetArray",jo);class qo extends so{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}qo.prototype.size=8;class Go extends Fo{get(t){return new qo(this,t)}}ds("FeatureIndexArray",Go);class Xo extends uo{}class Yo extends uo{}class Zo extends uo{}class Ho extends po{}class Wo extends fo{}class Ko extends yo{}class Jo extends mo{}class Qo extends go{}class ta extends xo{}class ea extends vo{}class na extends bo{}class ra extends _o{}class ia extends Ao{}class sa extends Mo{}class oa extends Po{}const aa=ao([{name:"a_pos",components:2,type:"Int16"}],4),{members:la}=aa;class ua{constructor(t=[]){this._forceNewSegmentOnNextPrepare=!1,this.segments=t;}prepareSegment(t,e,n,r){const i=this.segments[this.segments.length-1];return t>ua.MAX_VERTEX_ARRAY_LENGTH&&G(`Max vertices per segment is ${ua.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}. Consider using the \`fillLargeMeshArrays\` function if you require meshes with more than ${ua.MAX_VERTEX_ARRAY_LENGTH} vertices.`),this._forceNewSegmentOnNextPrepare||!i||i.vertexLength+t>ua.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==r?this.createNewSegment(e,n,r):i}createNewSegment(t,e,n){const r={vertexOffset:t.length,primitiveOffset:e.length,vertexLength:0,primitiveLength:0,vaos:{}};return void 0!==n&&(r.sortKey=n),this._forceNewSegmentOnNextPrepare=!1,this.segments.push(r),r}getOrCreateLatestSegment(t,e,n){return this.prepareSegment(0,t,e,n)}forceNewSegmentOnNextPrepare(){this._forceNewSegmentOnNextPrepare=!0;}get(){return this.segments}destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e].destroy();}static simpleSegment(t,e,n,r){return new ua([{vertexOffset:t,primitiveOffset:e,vertexLength:n,primitiveLength:r,vaos:{},sortKey:0}])}}function ca(t,e){return 256*(t=L(Math.floor(t),0,255))+L(Math.floor(e),0,255)}ua.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,ds("SegmentVector",ua);const ha=ao([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]),pa=ao([{name:"a_dasharray_from",components:4,type:"Uint16"},{name:"a_dasharray_to",components:4,type:"Uint16"}]);var fa,da,ya,ma={exports:{}},ga={exports:{}},xa={exports:{}},va=function(){if(ya)return ma.exports;ya=1;var t=(fa||(fa=1,ga.exports=function(t,e){var n,r,i,s,o,a,l,u;for(r=t.length-(n=3&t.length),i=e,o=3432918353,a=461845907,u=0;u>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(s>>>16)&65535)<<16);switch(l=0,n){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0}),ga.exports),e=(da||(da=1,xa.exports=function(t,e){for(var n,r=t.length,i=e^r,s=0;r>=4;)n=1540483477*(65535&(n=255&t.charCodeAt(s)|(255&t.charCodeAt(++s))<<8|(255&t.charCodeAt(++s))<<16|(255&t.charCodeAt(++s))<<24))+((1540483477*(n>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(n=1540483477*(65535&(n^=n>>>24))+((1540483477*(n>>>16)&65535)<<16)),r-=4,++s;switch(r){case 3:i^=(255&t.charCodeAt(s+2))<<16;case 2:i^=(255&t.charCodeAt(s+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(s)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0}),xa.exports);return ma.exports=t,ma.exports.murmur3=t,ma.exports.murmur2=e,ma.exports}(),ba=r(va);class wa{constructor(){this.ids=[],this.positions=[],this.indexed=!1;}add(t,e,n,r){this.ids.push(_a(t)),this.positions.push(e,n,r);}getPositions(t){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const e=_a(t);let n=0,r=this.ids.length-1;for(;n>1;this.ids[t]>=e?r=t:n=t+1;}const i=[];for(;this.ids[n]===e;)i.push({index:this.positions[3*n],start:this.positions[3*n+1],end:this.positions[3*n+2]}),n++;return i}static serialize(t,e){const n=new Float64Array(t.ids),r=new Uint32Array(t.positions);return Sa(n,r,0,n.length-1),e&&e.push(n.buffer,r.buffer),{ids:n,positions:r}}static deserialize(t){const e=new wa;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function _a(t){const e=+t;return !isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:ba(String(t))}function Sa(t,e,n,r){for(;n>1];let s=n-1,o=r+1;for(;;){do{s++;}while(t[s]i);if(s>=o)break;Aa(t,s,o),Aa(e,3*s,3*o),Aa(e,3*s+1,3*o+1),Aa(e,3*s+2,3*o+2);}o-n`u_${t}`)),this.type=n;}setUniform(t,e,n){t.set(n.constantOr(this.value));}getBinding(t,e,n){return "color"===this.type?new Ea(t,e):new ka(t,e)}}class Da{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tlbr,this.patternTo=t.tlbr;}setConstantDashPositions(t,e){this.dashTo=[0,t.y,t.height,t.width],this.dashFrom=[0,e.y,e.height,e.width];}setUniform(t,e,n,r){let i=null;"u_pattern_to"===r?i=this.patternTo:"u_pattern_from"===r?i=this.patternFrom:"u_dasharray_to"===r?i=this.dashTo:"u_dasharray_from"===r?i=this.dashFrom:"u_pixel_ratio_to"===r?i=this.pixelRatioTo:"u_pixel_ratio_from"===r&&(i=this.pixelRatioFrom),null!==i&&t.set(i);}getBinding(t,e,n){return n.startsWith("u_pattern")||n.startsWith("u_dasharray_")?new Ia(t,e):new ka(t,e)}}class za{constructor(t,e,n,r){this.expression=t,this.type=n,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:"Float32",components:"color"===n?2:1,offset:0}))),this.paintVertexArray=new r;}populatePaintArray(t,e,n){const r=this.paintVertexArray.length,i=this.expression.evaluate(new Cs(0,n),e,{},n.canonical,[],n.formattedSection);this.paintVertexArray.resize(t),this._setPaintValue(r,t,i);}updatePaintArray(t,e,n,r,i){const s=this.expression.evaluate(new Cs(0,i),n,r);this._setPaintValue(t,e,s);}_setPaintValue(t,e,n){if("color"===this.type){const r=Fa(n);for(let n=t;n`u_${t}_t`)),this.type=n,this.useIntegerZoom=r,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:"Float32",components:"color"===n?4:2,offset:0}))),this.paintVertexArray=new s;}populatePaintArray(t,e,n){const r=this.expression.evaluate(new Cs(this.zoom,n),e,{},n.canonical,[],n.formattedSection),i=this.expression.evaluate(new Cs(this.zoom+1,n),e,{},n.canonical,[],n.formattedSection),s=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(s,t,r,i);}updatePaintArray(t,e,n,r,i){const s=this.expression.evaluate(new Cs(this.zoom,i),n,r),o=this.expression.evaluate(new Cs(this.zoom+1,i),n,r);this._setPaintValue(t,e,s,o);}_setPaintValue(t,e,n,r){if("color"===this.type){const i=Fa(n),s=Fa(r);for(let n=t;n`#define HAS_UNIFORM_${t}`)));}return t}getBinderAttributes(){const t=[];for(const e in this.binders){const n=this.binders[e];if(n instanceof za||n instanceof Ba)for(const e of n.paintVertexAttributes)t.push(e.name);else if(n instanceof Ca){const e=n.getVertexAttributes();for(const n of e)t.push(n.name);}}return t}getBinderUniforms(){const t=[];for(const e in this.binders){const n=this.binders[e];if(n instanceof Pa||n instanceof Da||n instanceof Ba)for(const e of n.uniformNames)t.push(e);}return t}getPaintVertexBuffers(){return this._buffers}getUniforms(t,e){const n=[];for(const r in this.binders){const i=this.binders[r];if(i instanceof Pa||i instanceof Da||i instanceof Ba)for(const s of i.uniformNames)if(e[s]){const o=i.getBinding(t,e[s],s);n.push({name:s,property:r,binding:o});}}return n}setUniforms(t,e,n,r){for(const{name:t,property:i,binding:s}of e)this.binders[i].setUniform(s,r,n.get(i),t);}updatePaintBuffers(t){this._buffers=[];for(const e in this.binders){const n=this.binders[e];if(t&&n instanceof Ca){const e=2===t.fromScale?n.zoomInPaintVertexBuffer:n.zoomOutPaintVertexBuffer;e&&this._buffers.push(e);}else (n instanceof za||n instanceof Ba)&&n.paintVertexBuffer&&this._buffers.push(n.paintVertexBuffer);}}upload(t){for(const e in this.binders){const n=this.binders[e];(n instanceof za||n instanceof Ba||n instanceof Ca)&&n.upload(t);}this.updatePaintBuffers();}destroy(){for(const t in this.binders){const e=this.binders[t];(e instanceof za||e instanceof Ba||e instanceof Ca)&&e.destroy();}}}class $a{constructor(t,e,n=()=>!0){this.programConfigurations={};for(const r of t)this.programConfigurations[r.id]=new Oa(r,e,n);this.needsUpload=!1,this._featureMap=new wa,this._bufferOffset=0;}populatePaintArrays(t,e,n,r){for(const n in this.programConfigurations)this.programConfigurations[n].populatePaintArrays(t,e,r);void 0!==e.id&&this._featureMap.add(e.id,n,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;}updatePaintArrays(t,e,n,r){for(const i of n)this.needsUpload=this.programConfigurations[i.id].updatePaintArrays(t,this._featureMap,e,i,r)||this.needsUpload;}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy();}}function Ra(t,e){return {"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-dasharray":["dasharray_to","dasharray_from"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[t]||[t.replace(`${e}-`,"").replace(/-/g,"_")]}function Na(t,e,n){const r={color:{source:yo,composite:zo},number:{source:Eo,composite:yo}},i=function(t){return {"line-pattern":{source:Jo,composite:Jo},"fill-pattern":{source:Jo,composite:Jo},"fill-extrusion-pattern":{source:Jo,composite:Jo},"line-dasharray":{source:Qo,composite:Qo}}[t]}(t);return (null==i?void 0:i[n])||r[e][n]}ds("ConstantBinder",Pa),ds("CrossFadedConstantBinder",Da),ds("SourceExpressionBinder",za),ds("CrossFadedPatternBinder",Va),ds("CrossFadedDasharrayBinder",La),ds("CompositeExpressionBinder",Ba),ds("ProgramConfiguration",Oa,{omit:["_buffers"]}),ds("ProgramConfigurationSet",$a);const Ua=Math.pow(2,14)-1,ja=-Ua-1;function qa(t){const e=T/t.extent,n=t.loadGeometry();for(const t of n)for(const n of t){const t=Math.round(n.x*e),r=Math.round(n.y*e);n.x=L(t,ja,Ua),n.y=L(r,ja,Ua),(tn.x+1||rn.y+1)&&G("Geometry exceeds allowed extent, reduce your vector tile buffer size");}return n}function Ga(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?qa(t):[]}}const Xa=-32768;function Ya(t,e,n,r,i){t.emplaceBack(Xa+8*e+r,Xa+8*n+i);}class Za{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasDependencies=!1,this.layoutVertexArray=new Yo,this.indexArray=new sa,this.segments=new ua,this.programConfigurations=new $a(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,n){const r=this.layers[0],i=[];let s=null,o=!1,a="heatmap"===r.type;if("circle"===r.type){const t=r;s=t.layout.get("circle-sort-key"),o=!s.isConstant(),a||(a="map"===t.paint.get("circle-pitch-alignment"));}const l=a?e.subdivisionGranularity.circle:1;for(const{feature:e,id:r,index:a,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=Ga(e,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),u,n))continue;const c=o?s.evaluate(u,{},n):void 0,h={id:r,properties:e.properties,type:e.type,sourceLayerIndex:l,index:a,geometry:t?u.geometry:qa(e),patterns:{},sortKey:c};i.push(h);}o&&i.sort(((t,e)=>t.sortKey-e.sortKey));for(const r of i){const{geometry:i,index:s,sourceLayerIndex:o}=r,a=t[s].feature;this.addFeature(r,i,s,n,l),e.featureIndex.insert(a,i,s,o,this.index);}}update(t,e,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:n});}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,la),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,n,r,i=1){let s;switch(i){case 1:s=[0,7];break;case 3:s=[0,2,5,7];break;case 5:s=[0,1,3,4,6,7];break;case 7:s=[0,1,2,3,4,5,6,7];break;default:throw new Error(`Invalid circle bucket granularity: ${i}; valid values are 1, 3, 5, 7.`)}const o=s.length;for(const n of e)for(const e of n){const n=e.x,r=e.y;if(n<0||n>=T||r<0||r>=T)continue;const i=this.segments.prepareSegment(o*o,this.layoutVertexArray,this.indexArray,t.sortKey),a=i.vertexLength;for(let t=0;t1){if(Qa(t,e))return !0;for(const r of e)if(el(r,t,n))return !0}for(const r of t)if(el(r,e,n))return !0;return !1}function Qa(t,e){if(0===t.length||0===e.length)return !1;for(let n=0;n1?n:n.sub(e)._mult(i)._add(e))}function rl(t,e){let n,r,i,s=!1;for(const o of t){n=o;for(let t=0,o=n.length-1;te.y!=i.y>e.y&&e.x<(i.x-r.x)*(e.y-r.y)/(i.y-r.y)+r.x&&(s=!s);}return s}function il(t,e){let n=!1;for(let r=0,i=t.length-1;re.y!=o.y>e.y&&e.x<(o.x-s.x)*(e.y-s.y)/(o.y-s.y)+s.x&&(n=!n);}return n}function sl(t,e,n){const r=n[0],i=n[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return !1;const s=X(t,e,n[0]);return s!==X(t,e,n[1])||s!==X(t,e,n[2])||s!==X(t,e,n[3])}function ol(t,e,n){const r=e.paint.get(t).value;return "constant"===r.kind?r.value:n.programConfigurations.get(e.id).getMaxValue(t)}function al(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function ll(t,e,r,i,s){if(!e[0]&&!e[1])return t;const o=n.convert(e)._mult(s);"viewport"===r&&o._rotate(-i);const a=[];for(const e of t)a.push(e.sub(o));return a}function ul(t){const e=[];for(let n=0;nyl(t,e,n,r)))}(l,i,o,a),f=u),dl({queryGeometry:p,size:f,transform:i,unwrappedTileID:o,getElevation:a,pitchAlignment:h,pitchScale:c},r)}}class bl extends Za{}let wl;ds("HeatmapBucket",bl,{omit:["layers"]});var _l={get paint(){return wl=wl||new Ks({"heatmap-radius":new Ys(wt.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Ys(wt.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Xs(wt.paint_heatmap["heatmap-intensity"]),"heatmap-color":new Ws(wt.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Xs(wt.paint_heatmap["heatmap-opacity"])})}};function Sl(t,{width:e,height:n},r,i){if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==e*n*r)throw new RangeError(`mismatched image size. expected: ${i.length} but got: ${e*n*r}`)}else i=new Uint8Array(e*n*r);return t.width=e,t.height=n,t.data=i,t}function Al(t,{width:e,height:n},r){if(e===t.width&&n===t.height)return;const i=Sl({},{width:e,height:n},r);Ml(t,i,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,e),height:Math.min(t.height,n)},r),t.width=e,t.height=n,t.data=i.data;}function Ml(t,e,n,r,i,s){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||n.x>t.width-i.width||n.y>t.height-i.height)throw new RangeError("out of range source coordinates for image copy");if(i.width>e.width||i.height>e.height||r.x>e.width-i.width||r.y>e.height-i.height)throw new RangeError("out of range destination coordinates for image copy");const o=t.data,a=e.data;if(o===a)throw new Error("srcData equals dstData, so image is already copied");for(let l=0;l{e[t.evaluationKey]=o;const a=t.expression.evaluate(e);i.setPixel(r/4/n,s/4,a);};if(t.clips)for(let e=0,i=0;ethis.max&&(this.max=n),n=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(`Out of range source coordinates for DEM data. x: ${t}, y: ${e}, dim: ${this.dim}`);return (e+1)*this.stride+(t+1)}unpack(t,e,n){return t*this.redFactor+e*this.greenFactor+n*this.blueFactor-this.baseShift}pack(t){return Rl(t,this.getUnpackVector())}getPixels(){return new Il({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(t,e,n){if(this.dim!==t.dim)throw new Error("dem dimension mismatch");let r=e*this.dim,i=e*this.dim+this.dim,s=n*this.dim,o=n*this.dim+this.dim;switch(e){case -1:r=i-1;break;case 1:i=r+1;}switch(n){case -1:s=o-1;break;case 1:o=s+1;}const a=-e*this.dim,l=-n*this.dim;for(let e=s;e0)for(let i=e;i=e;i-=r)s=du(i/r|0,t[i],t[i+1],s);return s&&lu(s,s.next)&&(yu(s),s=s.next),s}function Yl(t,e){if(!t)return t;e||(e=t);let n,r=t;do{if(n=!1,r.steiner||!lu(r,r.next)&&0!==au(r.prev,r,r.next))r=r.next;else {if(yu(r),r=e=r.prev,r===r.next)break;n=!0;}}while(n||r!==e);return e}function Zl(t,e,n,r,i,s,o){if(!t)return;!o&&s&&function(t,e,n,r){let i=t;do{0===i.z&&(i.z=nu(i.x,i.y,e,n,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){let e,n=1;do{let r,i=t;t=null;let s=null;for(e=0;i;){e++;let o=i,a=0;for(let t=0;t0||l>0&&o;)0!==a&&(0===l||!o||i.z<=o.z)?(r=i,i=i.nextZ,a--):(r=o,o=o.nextZ,l--),s?s.nextZ=r:t=r,r.prevZ=s,s=r;i=o;}s.nextZ=null,n*=2;}while(e>1)}(i);}(t,r,i,s);let a=t;for(;t.prev!==t.next;){const l=t.prev,u=t.next;if(s?Wl(t,r,i,s):Hl(t))e.push(l.i,t.i,u.i),yu(t),t=u.next,a=u.next;else if((t=u)===a){o?1===o?Zl(t=Kl(Yl(t),e),e,n,r,i,s,2):2===o&&Jl(t,e,n,r,i,s):Zl(Yl(t),e,n,r,i,s,1);break}}}function Hl(t){const e=t.prev,n=t,r=t.next;if(au(e,n,r)>=0)return !1;const i=e.x,s=n.x,o=r.x,a=e.y,l=n.y,u=r.y,c=Math.min(i,s,o),h=Math.min(a,l,u),p=Math.max(i,s,o),f=Math.max(a,l,u);let d=r.next;for(;d!==e;){if(d.x>=c&&d.x<=p&&d.y>=h&&d.y<=f&&su(i,a,s,l,o,u,d.x,d.y)&&au(d.prev,d,d.next)>=0)return !1;d=d.next;}return !0}function Wl(t,e,n,r){const i=t.prev,s=t,o=t.next;if(au(i,s,o)>=0)return !1;const a=i.x,l=s.x,u=o.x,c=i.y,h=s.y,p=o.y,f=Math.min(a,l,u),d=Math.min(c,h,p),y=Math.max(a,l,u),m=Math.max(c,h,p),g=nu(f,d,e,n,r),x=nu(y,m,e,n,r);let v=t.prevZ,b=t.nextZ;for(;v&&v.z>=g&&b&&b.z<=x;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==o&&su(a,c,l,h,u,p,v.x,v.y)&&au(v.prev,v,v.next)>=0)return !1;if(v=v.prevZ,b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==o&&su(a,c,l,h,u,p,b.x,b.y)&&au(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}for(;v&&v.z>=g;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==o&&su(a,c,l,h,u,p,v.x,v.y)&&au(v.prev,v,v.next)>=0)return !1;v=v.prevZ;}for(;b&&b.z<=x;){if(b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==o&&su(a,c,l,h,u,p,b.x,b.y)&&au(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}return !0}function Kl(t,e){let n=t;do{const r=n.prev,i=n.next.next;!lu(r,i)&&uu(r,n,n.next,i)&&pu(r,i)&&pu(i,r)&&(e.push(r.i,n.i,i.i),yu(n),yu(n.next),n=t=i),n=n.next;}while(n!==t);return Yl(n)}function Jl(t,e,n,r,i,s){let o=t;do{let t=o.next.next;for(;t!==o.prev;){if(o.i!==t.i&&ou(o,t)){let a=fu(o,t);return o=Yl(o,o.next),a=Yl(a,a.next),Zl(o,e,n,r,i,s,0),void Zl(a,e,n,r,i,s,0)}t=t.next;}o=o.next;}while(o!==t)}function Ql(t,e){let n=t.x-e.x;return 0===n&&(n=t.y-e.y,0===n)&&(n=(t.next.y-t.y)/(t.next.x-t.x)-(e.next.y-e.y)/(e.next.x-e.x)),n}function tu(t,e){const n=function(t,e){let n=e;const r=t.x,i=t.y;let s,o=-1/0;if(lu(t,n))return n;do{if(lu(t,n.next))return n.next;if(i<=n.y&&i>=n.next.y&&n.next.y!==n.y){const t=n.x+(i-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(t<=r&&t>o&&(o=t,s=n.x=n.x&&n.x>=l&&r!==n.x&&iu(is.x||n.x===s.x&&eu(s,n)))&&(s=n,c=e);}n=n.next;}while(n!==a);return s}(t,e);if(!n)return e;const r=fu(n,t);return Yl(r,r.next),Yl(n,n.next)}function eu(t,e){return au(t.prev,t,e.prev)<0&&au(e.next,t,t.next)<0}function nu(t,e,n,r,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-r)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function ru(t){let e=t,n=t;do{(e.x=(t-o)*(s-a)&&(t-o)*(r-a)>=(n-o)*(e-a)&&(n-o)*(s-a)>=(i-o)*(r-a)}function su(t,e,n,r,i,s,o,a){return !(t===o&&e===a)&&iu(t,e,n,r,i,s,o,a)}function ou(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&uu(n,n.next,t,e))return !0;n=n.next;}while(n!==t);return !1}(t,e)&&(pu(t,e)&&pu(e,t)&&function(t,e){let n=t,r=!1;const i=(t.x+e.x)/2,s=(t.y+e.y)/2;do{n.y>s!=n.next.y>s&&n.next.y!==n.y&&i<(n.next.x-n.x)*(s-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next;}while(n!==t);return r}(t,e)&&(au(t.prev,t,e.prev)||au(t,e.prev,e))||lu(t,e)&&au(t.prev,t,t.next)>0&&au(e.prev,e,e.next)>0)}function au(t,e,n){return (e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function lu(t,e){return t.x===e.x&&t.y===e.y}function uu(t,e,n,r){const i=hu(au(t,e,n)),s=hu(au(t,e,r)),o=hu(au(n,r,t)),a=hu(au(n,r,e));return i!==s&&o!==a||!(0!==i||!cu(t,n,e))||!(0!==s||!cu(t,r,e))||!(0!==o||!cu(n,t,r))||!(0!==a||!cu(n,e,r))}function cu(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function hu(t){return t>0?1:t<0?-1:0}function pu(t,e){return au(t.prev,t,t.next)<0?au(t,e,t.next)>=0&&au(t,t.prev,e)>=0:au(t,e,t.prev)<0||au(t,t.next,e)<0}function fu(t,e){const n=mu(t.i,t.x,t.y),r=mu(e.i,e.x,e.y),i=t.next,s=e.prev;return t.next=e,e.prev=t,n.next=i,i.prev=n,r.next=n,n.prev=r,s.next=r,r.prev=s,r}function du(t,e,n,r){const i=mu(t,e,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function yu(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function mu(t,e,n){return {i:t,x:e,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}class gu{constructor(t,e){if(e>t)throw new Error("Min granularity must not be greater than base granularity.");this._baseZoomGranularity=t,this._minGranularity=e;}getGranularityForZoomLevel(t){return Math.max(Math.floor(this._baseZoomGranularity/(1<32767||e>32767)throw new Error("Vertex coordinates are out of signed 16 bit integer range.");const n=0|Math.round(t),r=0|Math.round(e),i=this._getKey(n,r);if(this._vertexDictionary.has(i))return this._vertexDictionary.get(i);const s=this._vertexBuffer.length/2;return this._vertexDictionary.set(i,s),this._vertexBuffer.push(n,r),s}_subdivideTrianglesScanline(t){if(this._granularity<2)return function(t,e){const n=[];for(let r=0;r0?(n.push(i),n.push(o),n.push(s)):(n.push(i),n.push(s),n.push(o));}return n}(this._vertexBuffer,t);const e=[],n=t.length;for(let r=0;r=1||v<=0)||y&&(ai)){u>=r&&u<=i&&s.push(n[(t+1)%3]);continue}!y&&x>0&&s.push(this._vertexToIndex(o+p*x,a+f*x));const b=o+p*Math.max(x,0),w=o+p*Math.min(v,1);d||this._generateIntraEdgeVertices(s,o,a,l,u,b,w),!y&&v<1&&s.push(this._vertexToIndex(o+p*v,a+f*v)),(y||u>=r&&u<=i)&&s.push(n[(t+1)%3]),!y&&(u<=r||u>=i)&&this._generateInterEdgeVertices(s,o,a,l,u,c,h,w,r,i);}return s}_generateIntraEdgeVertices(t,e,n,r,i,s,o){const a=r-e,l=i-n,u=0===l,c=u?Math.min(e,r):Math.min(s,o),h=u?Math.max(e,r):Math.max(s,o),p=Math.floor(c/this._granularityCellSize)+1,f=Math.ceil(h/this._granularityCellSize)-1;if(u?e=p;r--){const i=r*this._granularityCellSize;t.push(this._vertexToIndex(i,n+l*(i-e)/a));}}_generateInterEdgeVertices(t,e,n,r,i,s,o,a,l,u){const c=i-n,h=s-r,p=o-i,f=(l-i)/p,d=(u-i)/p,y=Math.min(f,d),m=Math.max(f,d),g=r+h*y;let x=Math.floor(Math.min(g,a)/this._granularityCellSize)+1,v=Math.ceil(Math.max(g,a)/this._granularityCellSize)-1,b=a=1||m<=0){const t=n-o,r=s+(e-s)*Math.min((l-o)/t,(u-o)/t);x=Math.floor(Math.min(r,a)/this._granularityCellSize)+1,v=Math.ceil(Math.max(r,a)/this._granularityCellSize)-1,b=a0?u:l;if(b)for(let e=x;e<=v;e++)t.push(this._vertexToIndex(e*this._granularityCellSize,_));else for(let e=v;e>=x;e--)t.push(this._vertexToIndex(e*this._granularityCellSize,_));}_generateOutline(t){const e=[];for(const n of t){const t=Su(n,this._granularity,!0),r=this._pointArrayToIndices(t),i=[];for(let t=1;ti!=(s===vu)?(t.push(e),t.push(n),t.push(this._vertexToIndex(r,s)),t.push(n),t.push(this._vertexToIndex(i,s)),t.push(this._vertexToIndex(r,s))):(t.push(n),t.push(e),t.push(this._vertexToIndex(r,s)),t.push(this._vertexToIndex(i,s)),t.push(n),t.push(this._vertexToIndex(r,s)));}_fillPoles(t,e,n){const r=this._vertexBuffer,i=T,s=t.length;for(let o=2;o80*n){a=t[0],l=t[1];let e=a,r=l;for(let s=n;se&&(e=n),i>r&&(r=i);}u=Math.max(e-a,r-l),u=0!==u?32767/u:0;}return Zl(s,o,n,a,l,u,0),o}(n,r),e=this._convertIndices(n,t);i=this._subdivideTrianglesScanline(e);}catch(t){console.error(t);}let s=[];return e&&(s=this._generateOutline(t)),this._ensureNoPoleVertices(),this._handlePoles(i),{verticesFlattened:this._vertexBuffer,indicesTriangles:i,indicesLineList:s}}_convertIndices(t,e){const n=[];for(const r of e)n.push(this._vertexToIndex(t[2*r],t[2*r+1]));return n}_pointArrayToIndices(t){const e=[];for(const n of t)e.push(this._vertexToIndex(n.x,n.y));return e}}function _u(t,e,n,r=!0){return new wu(n,e).subdividePolygonInternal(t,r)}function Su(t,e,r=!1){if(!t||t.length<1)return [];if(t.length<2)return [];const i=t[0],s=t[t.length-1],o=r&&(i.x!==s.x||i.y!==s.y);if(e<2)return o?[...t,t[0]]:[...t];const a=Math.floor(T/e),l=[];l.push(new n(t[0].x,t[0].y));const u=t.length,c=o?u:u-1;for(let e=0;e0?(Math.floor(x/a)+1)*a:(Math.ceil(x/a)-1)*a,e=y>0?(Math.floor(v/a)+1)*a:(Math.ceil(v/a)-1)*a,r=Math.abs(x-t),i=Math.abs(v-e),s=Math.abs(x-c),o=Math.abs(v-h),u=p?r/m:Number.POSITIVE_INFINITY,b=f?i/g:Number.POSITIVE_INFINITY;if((s<=r||!p)&&(o<=i||!f))break;if(u=0?o-1:s-1,i=(a+1)%s,l=t[2*e[r]],u=t[2*e[i]],c=t[2*e[o]],h=t[2*e[o]+1],p=t[2*e[a]+1];let f=!1;if(lu)f=!1;else {const n=p-h,s=-(t[2*e[a]]-c),o=h((u-c)*n+(t[2*e[i]+1]-h)*s)*o&&(f=!0);}if(f){const t=e[r],i=e[o],l=e[a];t!==i&&t!==l&&i!==l&&n.push(l,i,t),o--,o<0&&(o=s-1);}else {const t=e[i],r=e[o],l=e[a];t!==r&&t!==l&&r!==l&&n.push(l,r,t),a++,a>=s&&(a=0);}if(r===i)break}}function Mu(t,e,n,r,i,s,o,a,l){const u=i.length/2,c=o&&a&&l;if(uua.MAX_VERTEX_ARRAY_LENGTH&&(u=t.createNewSegment(e,n),l=a.count,y=!0,m=!0,g=!0,c=0);const x=ku(o,r,s,a,p,y,u),v=ku(o,r,s,a,f,m,u),b=ku(o,r,s,a,d,g,u);n.emplaceBack(c+x-l,c+v-l,c+b-l),u.primitiveLength++;}}(e,n,r,i,s,t),c&&function(t,e,n,r,i,s){const o=[];for(let t=0;tua.MAX_VERTEX_ARRAY_LENGTH&&(u=t.createNewSegment(e,n),l=a.count,d=!0,y=!0,c=0);const m=ku(o,r,s,a,p,d,u),g=ku(o,r,s,a,f,y,u);n.emplaceBack(c+m-l,c+g-l),u.primitiveLength++;}}(o,n,a,i,l,t),e.forceNewSegmentOnNextPrepare(),null==o||o.forceNewSegmentOnNextPrepare();}function ku(t,e,n,r,i,s,o){if(s){const s=r.count;return n(e[2*i],e[2*i+1]),t[i]=r.count,r.count++,o.vertexLength++,s}return t[i]}class Iu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasDependencies=!1,this.patternFeatures=[],this.layoutVertexArray=new Zo,this.indexArray=new sa,this.indexArray2=new oa,this.programConfigurations=new $a(t.layers,t.zoom),this.segments=new ua,this.segments2=new ua,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,n){this.hasDependencies=ql("fill",this.layers,e);const r=this.layers[0].layout.get("fill-sort-key"),i=!r.isConstant(),s=[];for(const{feature:o,id:a,index:l,sourceLayerIndex:u}of t){const t=this.layers[0]._featureFilter.needGeometry,c=Ga(o,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),c,n))continue;const h=i?r.evaluate(c,{},n,e.availableImages):void 0,p={id:a,properties:o.properties,type:o.type,sourceLayerIndex:u,index:l,geometry:t?c.geometry:qa(o),patterns:{},sortKey:h};s.push(p);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const r of s){const{geometry:i,index:s,sourceLayerIndex:o}=r;if(this.hasDependencies){const t=Gl("fill",this.layers,r,{zoom:this.zoom},e);this.patternFeatures.push(t);}else this.addFeature(r,i,s,n,{},e.subdivisionGranularity);e.featureIndex.insert(t[s].feature,i,s,o,this.index);}}update(t,e,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:n});}addFeatures(t,e,n){for(const r of this.patternFeatures)this.addFeature(r,r.geometry,r.index,e,n,t.subdivisionGranularity);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,jl),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());}addFeature(t,e,n,r,i,s){for(const t of rr(e,500)){const e=_u(t,r,s.fill.getGranularityForZoomLevel(r.z)),n=this.layoutVertexArray;Mu(((t,e)=>{n.emplaceBack(t,e);}),this.segments,this.layoutVertexArray,this.indexArray,e.verticesFlattened,e.indicesTriangles,this.segments2,this.indexArray2,e.indicesLineList);}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,n,{imagePositions:i,canonical:r});}}let Eu,Tu;ds("FillBucket",Iu,{omit:["layers","patternFeatures"]});var Fu={get paint(){return Tu=Tu||new Ks({"fill-antialias":new Xs(wt.paint_fill["fill-antialias"]),"fill-opacity":new Ys(wt.paint_fill["fill-opacity"]),"fill-color":new Ys(wt.paint_fill["fill-color"]),"fill-outline-color":new Ys(wt.paint_fill["fill-outline-color"]),"fill-translate":new Xs(wt.paint_fill["fill-translate"]),"fill-translate-anchor":new Xs(wt.paint_fill["fill-translate-anchor"]),"fill-pattern":new Zs(wt.paint_fill["fill-pattern"])})},get layout(){return Eu=Eu||new Ks({"fill-sort-key":new Ys(wt.layout_fill["fill-sort-key"])})}};class Pu extends to{constructor(t,e){super(t,Fu,e);}recalculate(t,e){super.recalculate(t,e);const n=this.paint._values["fill-outline-color"];"constant"===n.value.kind&&void 0===n.value.value&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"]);}createBucket(t){return new Iu(t)}queryRadius(){return al(this.paint.get("fill-translate"))}queryIntersectsFeature({queryGeometry:t,geometry:e,transform:n,pixelsToTileUnits:r}){return Ka(ll(t,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),-n.bearingInRadians,r),e)}isTileClipped(){return !0}}const Du=ao([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4),zu=ao([{name:"a_centroid",components:2,type:"Int16"}],4),{members:Bu}=Du;class Cu{constructor(t,e,n,r,i){this.properties={},this.extent=n,this.type=0,this.id=void 0,this._pbf=t,this._geometry=-1,this._keys=r,this._values=i,t.readFields(Vu,this,e);}loadGeometry(){const t=this._pbf;t.pos=this._geometry;const e=t.readVarint()+t.pos,r=[];let i,s=1,o=0,a=0,l=0;for(;t.pos>3;}if(o--,1===s||2===s)a+=t.readSVarint(),l+=t.readSVarint(),1===s&&(i&&r.push(i),i=[]),i&&i.push(new n(a,l));else {if(7!==s)throw new Error(`unknown command ${s}`);i&&i.push(i[0].clone());}}return i&&r.push(i),r}bbox(){const t=this._pbf;t.pos=this._geometry;const e=t.readVarint()+t.pos;let n=1,r=0,i=0,s=0,o=1/0,a=-1/0,l=1/0,u=-1/0;for(;t.pos>3;}if(r--,1===n||2===n)i+=t.readSVarint(),s+=t.readSVarint(),ia&&(a=i),su&&(u=s);else if(7!==n)throw new Error(`unknown command ${n}`)}return [o,l,a,u]}toGeoJSON(t,e,n){const r=this.extent*Math.pow(2,n),i=this.extent*t,s=this.extent*e,o=this.loadGeometry();function a(t){return [360*(t.x+i)/r-180,360/Math.PI*Math.atan(Math.exp((1-2*(t.y+s)/r)*Math.PI))-90]}function l(t){return t.map(a)}let u;if(1===this.type){const t=[];for(const e of o)t.push(e[0]);const e=l(t);u=1===t.length?{type:"Point",coordinates:e[0]}:{type:"MultiPoint",coordinates:e};}else if(2===this.type){const t=o.map(l);u=1===t.length?{type:"LineString",coordinates:t[0]}:{type:"MultiLineString",coordinates:t};}else {if(3!==this.type)throw new Error("unknown feature type");{const t=Lu(o),e=[];for(const n of t)e.push(n.map(l));u=1===e.length?{type:"Polygon",coordinates:e[0]}:{type:"MultiPolygon",coordinates:e};}}const c={type:"Feature",geometry:u,properties:this.properties};return null!=this.id&&(c.id=this.id),c}}function Vu(t,e,n){1===t?e.id=n.readVarint():2===t?function(t,e){const n=t.readVarint()+t.pos;for(;t.pos=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];const e=this._pbf.readVarint()+this._pbf.pos;return new Cu(this._pbf,e,this.extent,this._keys,this._values)}}function Ru(t,e,n){15===t?e.version=n.readVarint():1===t?e.name=n.readString():5===t?e.extent=n.readVarint():2===t?e._features.push(n.pos):3===t?e._keys.push(n.readString()):4===t&&e._values.push(function(t){let e=null;const n=t.readVarint()+t.pos;for(;t.pos>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}if(null==e)throw new Error("unknown feature value");return e}(n));}class Nu{constructor(t,e){this.layers=t.readFields(Uu,{},e);}}function Uu(t,e,n){if(3===t){const t=new $u(n,n.readVarint()+n.pos);t.length&&(e[t.name]=t);}}const ju=Math.pow(2,13);function qu(t,e,n,r,i,s,o,a){t.emplaceBack(e,n,2*Math.floor(r*ju)+o,i*ju*2,s*ju*2,Math.round(a));}class Gu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasDependencies=!1,this.layoutVertexArray=new Ho,this.centroidVertexArray=new Xo,this.indexArray=new sa,this.programConfigurations=new $a(t.layers,t.zoom),this.segments=new ua,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,n){this.features=[],this.hasDependencies=ql("fill-extrusion",this.layers,e);for(const{feature:r,id:i,index:s,sourceLayerIndex:o}of t){const t=this.layers[0]._featureFilter.needGeometry,a=Ga(r,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),a,n))continue;const l={id:i,sourceLayerIndex:o,index:s,geometry:t?a.geometry:qa(r),properties:r.properties,type:r.type,patterns:{}};this.hasDependencies?this.features.push(Gl("fill-extrusion",this.layers,l,{zoom:this.zoom},e)):this.addFeature(l,l.geometry,s,n,{},e.subdivisionGranularity),e.featureIndex.insert(r,l.geometry,s,o,this.index,!0);}}addFeatures(t,e,n){for(const r of this.features){const{geometry:i}=r;this.addFeature(r,i,r.index,e,n,t.subdivisionGranularity);}}update(t,e,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:n});}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.centroidVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Bu),this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,zu.members,!0),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy());}addFeature(t,e,n,r,i,s){for(const n of rr(e,500)){const e={x:0,y:0,sampleCount:0},i=this.layoutVertexArray.length;this.processPolygon(e,r,t,n,s);const o=this.layoutVertexArray.length-i,a=Math.floor(e.x/e.sampleCount),l=Math.floor(e.y/e.sampleCount);for(let t=0;t{qu(u,t,e,0,0,1,1,0);}),this.segments,this.layoutVertexArray,this.indexArray,l.verticesFlattened,l.indicesTriangles);}_generateSideFaces(t,e){let n=0;for(let r=1;rua.MAX_VERTEX_ARRAY_LENGTH&&(e.segment=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const o=i.sub(s)._perp()._unit(),a=s.dist(i);n+a>32768&&(n=0),qu(this.layoutVertexArray,i.x,i.y,o.x,o.y,0,0,n),qu(this.layoutVertexArray,i.x,i.y,o.x,o.y,0,1,n),n+=a,qu(this.layoutVertexArray,s.x,s.y,o.x,o.y,0,0,n),qu(this.layoutVertexArray,s.x,s.y,o.x,o.y,0,1,n);const l=e.segment.vertexLength;this.indexArray.emplaceBack(l,l+2,l+1),this.indexArray.emplaceBack(l+1,l+2,l+3),e.segment.vertexLength+=4,e.segment.primitiveLength+=2;}}}function Xu(t,e){for(let n=0;nT)||t.y===e.y&&(t.y<0||t.y>T)}function Zu(t){return t.every((t=>t.x<0))||t.every((t=>t.x>T))||t.every((t=>t.y<0))||t.every((t=>t.y>T))}let Hu;ds("FillExtrusionBucket",Gu,{omit:["layers","features"]});var Wu={get paint(){return Hu=Hu||new Ks({"fill-extrusion-opacity":new Xs(wt["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Ys(wt["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Xs(wt["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Xs(wt["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Zs(wt["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Ys(wt["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Ys(wt["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Xs(wt["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Ku extends to{constructor(t,e){super(t,Wu,e);}createBucket(t){return new Gu(t)}queryRadius(){return al(this.paint.get("fill-extrusion-translate"))}is3D(){return !0}queryIntersectsFeature({queryGeometry:t,feature:e,featureState:r,geometry:i,transform:s,pixelsToTileUnits:o,pixelPosMatrix:a}){const l=ll(t,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),-s.bearingInRadians,o),u=this.paint.get("fill-extrusion-height").evaluate(e,r),c=this.paint.get("fill-extrusion-base").evaluate(e,r),h=function(t,e){const r=[];for(const i of t){const t=[i.x,i.y,0,1];A(t,t,e),r.push(new n(t[0]/t[3],t[1]/t[3]));}return r}(l,a),p=function(t,e,r,i){const s=[],o=[],a=i[8]*e,l=i[9]*e,u=i[10]*e,c=i[11]*e,h=i[8]*r,p=i[9]*r,f=i[10]*r,d=i[11]*r;for(const e of t){const t=[],r=[];for(const s of e){const e=s.x,o=s.y,y=i[0]*e+i[4]*o+i[12],m=i[1]*e+i[5]*o+i[13],g=i[2]*e+i[6]*o+i[14],x=i[3]*e+i[7]*o+i[15],v=g+u,b=x+c,w=y+h,_=m+p,S=g+f,A=x+d,M=new n((y+a)/b,(m+l)/b);M.z=v/b,t.push(M);const k=new n(w/A,_/A);k.z=S/A,r.push(k);}s.push(t),o.push(r);}return [s,o]}(i,c,u,a);return function(t,e,n){let r=1/0;Ka(n,e)&&(r=Qu(n,e[0]));for(let i=0;i>4;if(1!==r)throw new Error(`Got v${r} data when expected v1.`);const i=tc[15&n];if(!i)throw new Error("Unrecognized array type.");const[s]=new Uint16Array(t,2,1),[o]=new Uint32Array(t,4,1);return new ec(o,s,i,t)}constructor(t,e=64,n=Float64Array,r){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+e,2),65535),this.ArrayType=n,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const i=tc.indexOf(this.ArrayType),s=2*t*this.ArrayType.BYTES_PER_ELEMENT,o=t*this.IndexArrayType.BYTES_PER_ELEMENT,a=(8-o%8)%8;if(i<0)throw new Error(`Unexpected typed array class: ${n}.`);r&&r instanceof ArrayBuffer?(this.data=r,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+o+a,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+s+o+a),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+o+a,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+i]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t);}add(t,e){const n=this._pos>>1;return this.ids[n]=n,this.coords[this._pos++]=t,this.coords[this._pos++]=e,n}finish(){const t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return nc(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,e,n,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:i,coords:s,nodeSize:o}=this,a=[0,i.length-1,0],l=[];for(;a.length;){const u=a.pop()||0,c=a.pop()||0,h=a.pop()||0;if(c-h<=o){for(let o=h;o<=c;o++){const a=s[2*o],u=s[2*o+1];a>=t&&a<=n&&u>=e&&u<=r&&l.push(i[o]);}continue}const p=h+c>>1,f=s[2*p],d=s[2*p+1];f>=t&&f<=n&&d>=e&&d<=r&&l.push(i[p]),(0===u?t<=f:e<=d)&&(a.push(h),a.push(p-1),a.push(1-u)),(0===u?n>=f:r>=d)&&(a.push(p+1),a.push(c),a.push(1-u));}return l}within(t,e,n){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:r,coords:i,nodeSize:s}=this,o=[0,r.length-1,0],a=[],l=n*n;for(;o.length;){const u=o.pop()||0,c=o.pop()||0,h=o.pop()||0;if(c-h<=s){for(let n=h;n<=c;n++)oc(i[2*n],i[2*n+1],t,e)<=l&&a.push(r[n]);continue}const p=h+c>>1,f=i[2*p],d=i[2*p+1];oc(f,d,t,e)<=l&&a.push(r[p]),(0===u?t-n<=f:e-n<=d)&&(o.push(h),o.push(p-1),o.push(1-u)),(0===u?t+n>=f:e+n>=d)&&(o.push(p+1),o.push(c),o.push(1-u));}return a}}function nc(t,e,n,r,i,s){if(i-r<=n)return;const o=r+i>>1;rc(t,e,o,r,i,s),nc(t,e,n,r,o-1,1-s),nc(t,e,n,o+1,i,1-s);}function rc(t,e,n,r,i,s){for(;i>r;){if(i-r>600){const o=i-r+1,a=n-r+1,l=Math.log(o),u=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*u*(o-u)/o)*(a-o/2<0?-1:1);rc(t,e,n,Math.max(r,Math.floor(n-a*u/o+c)),Math.min(i,Math.floor(n+(o-a)*u/o+c)),s);}const o=e[2*n+s];let a=r,l=i;for(ic(t,e,r,n),e[2*i+s]>o&&ic(t,e,r,i);ao;)l--;}e[2*r+s]===o?ic(t,e,r,l):(l++,ic(t,e,l,i)),l<=n&&(r=l+1),n<=l&&(i=l-1);}}function ic(t,e,n,r){sc(t,n,r),sc(e,2*n,2*r),sc(e,2*n+1,2*r+1);}function sc(t,e,n){const r=t[e];t[e]=t[n],t[n]=r;}function oc(t,e,n,r){const i=t-n,s=e-r;return i*i+s*s}function ac(t,e,n,r){let i=r;const s=e+(n-e>>1);let o,a=n-e;const l=t[e],u=t[e+1],c=t[n],h=t[n+1];for(let r=e+3;ri)o=r,i=e;else if(e===i){const t=Math.abs(r-s);tr&&(o-e>3&&ac(t,e,o,r),t[o+2]=i,n-o>3&&ac(t,o,n,r));}function lc(t,e,n,r,i,s){let o=i-n,a=s-r;if(0!==o||0!==a){const l=((t-n)*o+(e-r)*a)/(o*o+a*a);l>1?(n=i,r=s):l>0&&(n+=o*l,r+=a*l);}return o=t-n,a=e-r,o*o+a*a}function uc(t,e,n,r){const i={type:e,geom:n},s={id:null==t?null:t,type:i.type,geometry:i.geom,tags:r,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};switch(i.type){case "Point":case "MultiPoint":hc(s,i.geom);break;case "LineString":hc(s,i.geom.points);break;case "Polygon":hc(s,i.geom[0].points);break;case "MultiLineString":for(const t of i.geom)hc(s,t.points);break;case "MultiPolygon":for(const t of i.geom)hc(s,t[0].points);}return s}function cc(t){t.points.length>64&&(t.points=new Float64Array(t.points));}function hc(t,e){for(let n=0;n0&&(o+=r?(i*l-a*s)/2:Math.sqrt(Math.pow(a-i,2)+Math.pow(l-s,2))),i=a,s=l;}const a=e.points.length-3;e.points[2]=1,n>0&&ac(e.points,0,a,n),e.points[a+2]=1,cc(e),e.size=Math.abs(o),e.start=0,e.end=e.size;}function yc(t,e,n,r){for(let i=0;i1?1:n}function xc(t){const e={type:"Feature",geometry:vc(t),properties:t.tags};return null!=t.id&&(e.id=t.id),e}function vc(t){const{type:e,geometry:n}=t;switch(e){case "Point":return {type:e,coordinates:wc(n[0],n[1])};case "MultiPoint":return {type:e,coordinates:bc(n)};case "LineString":return {type:e,coordinates:bc(n.points)};case "MultiLineString":case "Polygon":return {type:e,coordinates:n.map((t=>bc(t.points)))};case "MultiPolygon":return {type:e,coordinates:n.map((t=>t.map((t=>bc(t.points)))))}}}function bc(t){const e=[];for(let n=0;n=(n/=e)&&o=r)return null;const l=[];for(const e of t){const t=i===Ac.X?e.minX:e.minY,s=i===Ac.X?e.maxX:e.maxY;if(t>=n&&s=r))switch(e.type){case "Point":case "MultiPoint":kc(e,l,n,r,i);continue;case "LineString":Ic(e,l,n,r,i,a);continue;case "MultiLineString":Ec(e,l,n,r,i);continue;case "Polygon":Tc(e,l,n,r,i);continue;case "MultiPolygon":Fc(e,l,n,r,i);continue}}return l.length?l:null}function kc(t,e,n,r,i){const s=[];((function(t,e,n,r,i){for(let s=0;s=n&&o<=r&&Bc(e,t[s],t[s+1],t[s+2]);}}))(t.geometry,s,n,r,i),s.length&&e.push(uc(t.id,3===s.length?"Point":"MultiPoint",s,t.tags));}function Ic(t,e,n,r,i,s){const o=[];if(Pc(t.geometry,o,n,r,i,!1,s.lineMetrics),o.length)if(s.lineMetrics)for(const n of o)e.push(uc(t.id,"LineString",n,t.tags));else e.push(o.length>1?uc(t.id,"MultiLineString",o,t.tags):uc(t.id,"LineString",o[0],t.tags));}function Ec(t,e,n,r,i){const s=[];zc(t.geometry,s,n,r,i,!1),s.length&&e.push(1!==s.length?uc(t.id,"MultiLineString",s,t.tags):uc(t.id,"LineString",s[0],t.tags));}function Tc(t,e,n,r,i){const s=[];zc(t.geometry,s,n,r,i,!0),s.length&&e.push(uc(t.id,"Polygon",s,t.tags));}function Fc(t,e,n,r,i){const s=[];for(const e of t.geometry){const t=[];zc(e,t,n,r,i,!0),t.length&&s.push(t);}s.length&&e.push(uc(t.id,"MultiPolygon",s,t.tags));}function Pc(t,e,n,r,i,s,o){let a=Dc(t);const l=i===Ac.X?Cc:Vc;let u,c,h=t.start;for(let p=0;pn&&(c=l(a,f,d,m,g,n),o&&(a.start=h+u*c)):x>r?v=n&&(c=l(a,f,d,m,g,n),b=!0),v>r&&x<=r&&(c=l(a,f,d,m,g,r),b=!0),!s&&b&&(o&&(a.end=h+u*c),e.push(a),a=Dc(t)),o&&(h+=u);}let p=t.points.length-3;const f=t.points[p],d=t.points[p+1],y=i===Ac.X?f:d;y>=n&&y<=r&&Bc(a.points,f,d,t.points[p+2]),p=a.points.length-3,s&&p>=3&&(a.points[p]!==a.points[0]||a.points[p+1]!==a.points[1])&&Bc(a.points,a.points[0],a.points[1],a.points[2]),a.points.length&&(cc(a),e.push(a));}function Dc(t){return {points:[],size:t.size,start:t.start,end:t.end}}function zc(t,e,n,r,i,s){for(const o of t)Pc(o,e,n,r,i,s,!1);}function Bc(t,e,n,r){t.push(e,n,r);}function Cc(t,e,n,r,i,s){const o=(s-e)/(r-e);return Bc(t.points,s,n+(i-n)*o,1),o}function Vc(t,e,n,r,i,s){const o=(s-n)/(i-n);return Bc(t.points,e+(r-e)*o,s,1),o}function Lc(t,e){const n=e.buffer/e.extent;let r=t;const i=Mc(t,1,-1-n,n,Ac.X,-1,2,e),s=Mc(t,1,1-n,2+n,Ac.X,-1,2,e);return i||s?(r=Mc(t,1,-n,1+n,Ac.X,-1,2,e)||[],i&&(r=Oc(i,1).concat(r)),s&&(r=r.concat(Oc(s,-1))),r):r}function Oc(t,e){const n=[];for(const r of t)switch(r.type){case "Point":case "MultiPoint":{const t=$c(r.geometry,e);n.push(uc(r.id,r.type,t,r.tags));continue}case "LineString":{const t=Rc(r.geometry,e);n.push(uc(r.id,r.type,t,r.tags));continue}case "MultiLineString":case "Polygon":{const t=[];for(const n of r.geometry)t.push(Rc(n,e));n.push(uc(r.id,r.type,t,r.tags));continue}case "MultiPolygon":{const t=[];for(const n of r.geometry){const r=[];for(const t of n)r.push(Rc(t,e));t.push(r);}n.push(uc(r.id,r.type,t,r.tags));continue}}return n}function $c(t,e){const n=[];for(let r=0;r0||e.addOrUpdateProperties?.length>0;if(r){const r=t[0];let s=pc({type:"FeatureCollection",features:[{type:"Feature",id:r.id,geometry:e.newGeometry,properties:i?Uc(r.tags,e):r.tags}]},n);return s=Lc(s,n),s}if(i){const n=[];for(const r of t){const t={...r};t.tags=Uc(t.tags,e),n.push(t);}return n}return t}function Uc(t,e){if(e.removeAllProperties)return {};const n={...t||{}};if(e.removeProperties)for(const t of e.removeProperties)delete n[t];if(e.addOrUpdateProperties)for(const{key:t,value:r}of e.addOrUpdateProperties)n[t]=r;return n}!function(t){t[t.X=0]="X",t[t.Y=1]="Y";}(Ac||(Ac={}));const jc={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:t=>t};class qc{constructor(t){this.options=Object.assign(Object.create(jc),t),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[],this.points=[];}load(t){const e=[];for(const n of t){if(!n.geometry)continue;const[t,r]=n.geometry.coordinates,[i,s]=[mc(t),gc(r)];e.push({id:n.id,type:"Point",geometry:[i,s],tags:n.properties});}this.createIndex(e);}initialize(t){const e=[];for(const n of t)"Point"===n.type&&e.push(n);this.createIndex(e);}updateIndex(t,e,n){this.options=Object.assign(Object.create(jc),n.clusterOptions),this.initialize(t);}createIndex(t){const{log:e,minZoom:n,maxZoom:r}=this.options;e&&console.time("total time");const i=`prepare ${t.length} points`;e&&console.time(i),this.points=t;const s=[];for(let e=0;e=n;t--){const n=Date.now();o=this.trees[t]=this.createTree(this.cluster(o,t)),e&&console.log("z%d: %d clusters in %dms",t,o.numItems,Date.now()-n);}e&&console.timeEnd("total time");}getClusters(t,e){return this.getClustersInternal(t,e).map((t=>xc(t)))}getClustersInternal(t,e){let n=((t[0]+180)%360+360)%360-180;const r=Math.max(-90,Math.min(90,t[1]));let i=180===t[2]?180:((t[2]+180)%360+360)%360-180;const s=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)n=-180,i=180;else if(n>i){const t=this.getClustersInternal([n,r,180,s],e),o=this.getClustersInternal([-180,r,i,s],e);return t.concat(o)}const o=this.trees[this.limitZoom(e)],a=o.range(mc(n),gc(s),mc(i),gc(r)),l=o.flatData,u=[];for(const t of a){const e=this.stride*t;u.push(l[e+5]>1?Gc(l,e,this.clusterProps):this.points[l[e+3]]);}return u}getChildren(t){const e=this.getOriginId(t),n=this.getOriginZoom(t),r=new Error("No cluster with the specified id: "+t),i=this.trees[n];if(!i)throw r;const s=i.flatData;if(e*this.stride>=s.length)throw r;const o=this.options.radius/(this.options.extent*Math.pow(2,n-1)),a=i.within(s[e*this.stride],s[e*this.stride+1],o),l=[];for(const e of a){const n=e*this.stride;s[n+4]===t&&l.push(s[n+5]>1?Xc(s,n,this.clusterProps):xc(this.points[s[n+3]]));}if(0===l.length)throw r;return l}getLeaves(t,e,n){const r=[];return this.appendLeaves(r,t,e=e||10,n=n||0,0),r}getTile(t,e,n){const r=this.trees[this.limitZoom(t)];if(!r)return null;const i=Math.pow(2,t),{extent:s,radius:o}=this.options,a=o/s,l=(n-a)/i,u=(n+1+a)/i,c={transformed:!0,features:[],source:null,x:e,y:n,z:t};return this.addTileFeatures(r.range((e-a)/i,l,(e+1+a)/i,u),r.flatData,e,n,i,c),0===e&&this.addTileFeatures(r.range(1-a/i,l,1,u),r.flatData,i,n,i,c),e===i-1&&this.addTileFeatures(r.range(0,l,a/i,u),r.flatData,-1,n,i,c),c}getClusterExpansionZoom(t){return this.getOriginZoom(t)}appendLeaves(t,e,n,r,i){const s=this.getChildren(e);for(const e of s){const s=e.properties;if(s?.cluster?i+s.point_count<=r?i+=s.point_count:i=this.appendLeaves(t,s.cluster_id,n,r,i):i1;let l,u,c;if(a)l=Yc(e,t,this.clusterProps),u=e[t],c=e[t+1];else {const n=this.points[e[t+3]];l=n.tags,[u,c]=n.geometry;}const h={type:1,geometry:[[Math.round(this.options.extent*(u*i-n)),Math.round(this.options.extent*(c*i-r))]],tags:l};let p;p=a||this.options.generateId?e[t+3]:this.points[e[t+3]].id,void 0!==p&&(h.id=p),s.features.push(h);}}limitZoom(t){return Math.max(this.options.minZoom,Math.min(Math.floor(+t),this.options.maxZoom+1))}cluster(t,e){const{radius:n,extent:r,reduce:i,minPoints:s}=this.options,o=n/(r*Math.pow(2,e)),a=t.flatData,l=[],u=this.stride;for(let n=0;ne&&(f+=a[n+5]);}if(f>p&&f>=s){let t,s=r*p,o=c*p,d=-1;const y=(n/u<<5)+(e+1)+this.points.length;for(const r of h){const l=r*u;if(a[l+2]<=e)continue;a[l+2]=e;const c=a[l+5];s+=a[l]*c,o+=a[l+1]*c,a[l+4]=y,i&&(t||(t=this.map(a,n,!0),d=this.clusterProps.length,this.clusterProps.push(t)),i(t,this.map(a,l)));}a[n+4]=y,l.push(s/f,o/f,1/0,y,-1,f),i&&l.push(d);}else {for(let t=0;t1)for(const t of h){const n=t*u;if(!(a[n+2]<=e)){a[n+2]=e;for(let t=0;t>5}getOriginZoom(t){return (t-this.points.length)%32}map(t,e,n){if(t[e+5]>1){const r=this.clusterProps[t[e+6]];return n?Object.assign({},r):r}const r=this.points[t[e+3]].tags,i=this.options.map(r);return n&&i===r?Object.assign({},i):i}}function Gc(t,e,n){return {id:t[e+3],type:"Point",tags:Yc(t,e,n),geometry:[t[e],t[e+1]]}}function Xc(t,e,n){return {type:"Feature",id:t[e+3],properties:Yc(t,e,n),geometry:{type:"Point",coordinates:[_c(t[e]),Sc(t[e+1])]}}}function Yc(t,e,n){const r=t[e+5],i=r>=1e4?`${Math.round(r/1e3)}k`:r>=1e3?Math.round(r/100)/10+"k":r,s=t[e+6],o=-1===s?{}:Object.assign({},n[s]);return Object.assign(o,{cluster:!0,cluster_id:t[e+3],point_count:r,point_count_abbreviated:i})}const Zc="geojsonvt_clip_start",Hc="geojsonvt_clip_end";function Wc(t,e,n,r,i){const s=e===i.maxZoom?0:i.tolerance/((1<0&&e.size<(i?o:r))return void(n.numPoints+=e.points.length/3);const a=[];for(let t=0;to)&&(n.numSimplified++,a.push(e.points[t],e.points[t+1])),n.numPoints++;i&&function(t,e){let n=0;for(let e=0,r=t.length,i=r-2;e0===e)for(let e=0,n=t.length;e1&&(console.log("invalidating tiles"),console.time("invalidating")),this.invalidateTiles(e),n.debug>1&&console.timeEnd("invalidating");const[r,i,s]=[0,0,0],o=Wc(t,r,i,s,n);o.source=t;const a=ih(r,i,s);if(this.tiles[a]=o,this.tileCoords.push({z:r,x:i,y:s,id:a}),n.debug){const t=`z${r}`;this.stats[t]=(this.stats[t]||0)+1,this.total++;}}getClusterExpansionZoom(t){return null}getChildren(t){return null}getLeaves(t,e,n){return null}getTile(t,e,n){const{extent:r,debug:i}=this.options,s=1<1&&console.log("drilling down to z%d-%d-%d",t,e,n);let a,l=t,u=e,c=n;for(;!a&&l>0;)l--,u>>=1,c>>=1,a=this.tiles[ih(l,u,c)];return a?.source?(i>1&&(console.log("found parent tile z%d-%d-%d",l,u,c),console.time("drilling down")),this.splitTile(a.source,l,u,c,t,e,n),i>1&&console.timeEnd("drilling down"),this.tiles[o]?Qc(this.tiles[o],r):null):null}splitTile(t,e,n,r,i,s,o){const a=[t,e,n,r],l=this.options,u=l.debug;for(;a.length;){r=a.pop(),n=a.pop(),e=a.pop(),t=a.pop();const c=1<1&&console.time("creation"),p=this.tiles[h]=Wc(t,e,n,r,l),this.tileCoords.push({z:e,x:n,y:r,id:h}),u)){u>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",e,n,r,p.numFeatures,p.numPoints,p.numSimplified),console.timeEnd("creation"));const t=`z${e}`;this.stats[t]=(this.stats[t]||0)+1,this.total++;}if(p.source=t,null==i){if(e===l.indexMaxZoom||p.numPoints<=l.indexMaxPoints)continue}else {if(e===l.maxZoom||e===i)continue;if(null!=i){const t=i-e;if(n!==s>>t||r!==o>>t)continue}}if(p.source=null,!t.length)continue;u>1&&console.time("clipping");const f=.5*l.buffer/l.extent,d=.5-f,y=.5+f,m=1+f;let g=null,x=null,v=null,b=null;const w=Mc(t,c,n-f,n+y,Ac.X,p.minX,p.maxX,l),_=Mc(t,c,n+d,n+m,Ac.X,p.minX,p.maxX,l);w&&(g=Mc(w,c,r-f,r+y,Ac.Y,p.minY,p.maxY,l),x=Mc(w,c,r+d,r+m,Ac.Y,p.minY,p.maxY,l)),_&&(v=Mc(_,c,r-f,r+y,Ac.Y,p.minY,p.maxY,l),b=Mc(_,c,r+d,r+m,Ac.Y,p.minY,p.maxY,l)),u>1&&console.timeEnd("clipping"),a.push(g||[],e+1,2*n,2*r),a.push(x||[],e+1,2*n,2*r+1),a.push(v||[],e+1,2*n+1,2*r),a.push(b||[],e+1,2*n+1,2*r+1);}}invalidateTiles(t){if(!t.length)return;const e=this.options,{debug:n}=e;let r=1/0,i=-1/0,s=1/0,o=-1/0;for(const e of t)r=Math.min(r,e.minX),i=Math.max(i,e.maxX),s=Math.min(s,e.minY),o=Math.max(o,e.maxY);const a=e.buffer/e.extent,l=new Set;for(const e in this.tiles){const u=this.tiles[e],c=1<=p||o=d)continue;let y=!1;for(const e of t)if(e.maxX>=h&&e.minX=f&&e.minY1&&console.log("invalidate tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",u.z,u.x,u.y,u.numFeatures,u.numPoints,u.numSimplified);const t=`z${u.z}`;this.stats[t]=(this.stats[t]||0)-1,this.total--;}delete this.tiles[e],l.add(e);}}l.size&&(this.tileCoords=this.tileCoords.filter((t=>!l.has(t.id))));}}function ih(t,e,n){return 32*((1<t.id)),this.index=t.index,this.hasDependencies=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={};for(const t of this.layers)this.gradients[t.id]={};this.layoutVertexArray=new Wo,this.layoutVertexArray2=new Ko,this.indexArray=new sa,this.programConfigurations=new $a(t.layers,t.zoom),this.segments=new ua,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,n){this.hasDependencies=ql("line",this.layers,e)||this.hasLineDasharray(this.layers);const r=this.layers[0].layout.get("line-sort-key"),i=!r.isConstant(),s=[];for(const{feature:e,id:o,index:a,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=Ga(e,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),u,n))continue;const c=i?r.evaluate(u,{},n):void 0,h={id:o,properties:e.properties,type:e.type,sourceLayerIndex:l,index:a,geometry:t?u.geometry:qa(e),patterns:{},dashes:{},sortKey:c};s.push(h);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const r of s){const{geometry:i,index:s,sourceLayerIndex:o}=r;this.hasDependencies?(ql("line",this.layers,e)?Gl("line",this.layers,r,{zoom:this.zoom},e):this.hasLineDasharray(this.layers)&&this.addLineDashDependencies(this.layers,r,this.zoom,e),this.patternFeatures.push(r)):this.addFeature(r,i,s,n,{},{},e.subdivisionGranularity),e.featureIndex.insert(t[s].feature,i,s,o,this.index);}}update(t,e,n,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,{imagePositions:n,dashPositions:r});}addFeatures(t,e,n,r){for(const i of this.patternFeatures)this.addFeature(i,i.geometry,i.index,e,n,r,t.subdivisionGranularity);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,uh)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,ah),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}lineFeatureClips(t){if(t.properties&&Object.hasOwn(t.properties,Zc)&&Object.hasOwn(t.properties,Hc))return {start:+t.properties[Zc],end:+t.properties[Hc]}}addFeature(t,e,n,r,i,s,o){const a=this.layers[0].layout,l=a.get("line-join").evaluate(t,{}),u=a.get("line-cap").evaluate(t,{}),c=a.get("line-miter-limit").evaluate(t,{}),h=a.get("line-round-limit").evaluate(t,{});this.lineClips=this.lineFeatureClips(t);for(const n of e)this.addLine(n,t,l,u,c,h,r,o);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,n,{imagePositions:i,dashPositions:s,canonical:r});}addLine(t,e,n,r,i,s,o,a){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,t=Su(t,o?a.line.getGranularityForZoomLevel(o.z):1),this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e=2&&t[u-1].equals(t[u-2]);)u--;let c=0;for(;c0;if(w&&e>c){const t=f.dist(d);if(t>2*h){const e=f.sub(f.sub(d)._mult(h/t)._round());this.updateDistance(d,e),this.addCurrentVertex(e,m,0,0,p),d=e;}}const S=d&&y;let A=S?n:l?"butt":r;if(S&&"round"===A&&(vi&&(A="bevel"),"bevel"===A&&(v>2&&(A="flipbevel"),v100)o=g.mult(-1);else {const t=v*m.add(g).mag()/m.sub(g).mag();o._perp()._mult(t*(_?-1:1));}this.addCurrentVertex(f,o,0,0,p),this.addCurrentVertex(f,o.mult(-1),0,0,p);}else if("bevel"===A||"fakeround"===A){const t=-Math.sqrt(v*v-1),e=_?t:0,n=_?0:t;if(d&&this.addCurrentVertex(f,m,e,n,p),"fakeround"===A){const t=Math.round(180*b/Math.PI/20);for(let e=1;e2*h){const e=f.add(y.sub(f)._mult(h/t)._round());this.updateDistance(f,e),this.addCurrentVertex(e,g,0,0,p),f=e;}}}}addCurrentVertex(t,e,n,r,i,s=!1){const o=e.y*r-e.x,a=-e.y-e.x*r;this.addHalfVertex(t,e.x+e.y*n,e.y-e.x*n,s,!1,n,i),this.addHalfVertex(t,o,a,s,!0,-r,i),this.distance>hh/2&&0===this.totalDistance&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(t,e,n,r,i,s));}addHalfVertex({x:t,y:e},n,r,i,s,o,a){const l=.5*(this.lineClips?this.scaledDistance*(hh-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(s?1:0),Math.round(63*n)+128,Math.round(63*r)+128,1+(0===o?0:o<0?-1:1)|(63&l)<<2,l>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const u=a.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,u,this.e2),a.primitiveLength++),s?this.e2=u:this.e1=u;}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance;}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance();}hasLineDasharray(t){for(const e of t){const t=e.paint.get("line-dasharray");if(t&&!t.isConstant())return !0}return !1}addLineDashDependencies(t,e,n,r){for(const i of t){const t=i.paint.get("line-dasharray");if(!t||"constant"===t.value.kind)continue;const s="round"===i.layout.get("line-cap").evaluate(e,{}),o={dasharray:t.value.evaluate({zoom:n-1},e,{}),round:s},a={dasharray:t.value.evaluate({zoom:n},e,{}),round:s},l={dasharray:t.value.evaluate({zoom:n+1},e,{}),round:s},u=`${o.dasharray.join(",")},${o.round}`,c=`${a.dasharray.join(",")},${a.round}`,h=`${l.dasharray.join(",")},${l.round}`;r.dashDependencies[u]=o,r.dashDependencies[c]=a,r.dashDependencies[h]=l,e.dashes[i.id]={min:u,mid:c,max:h};}}}let fh,dh;ds("LineBucket",ph,{omit:["layers","patternFeatures"]});var yh={get paint(){return dh=dh||new Ks({"line-opacity":new Ys(wt.paint_line["line-opacity"]),"line-color":new Ys(wt.paint_line["line-color"]),"line-translate":new Xs(wt.paint_line["line-translate"]),"line-translate-anchor":new Xs(wt.paint_line["line-translate-anchor"]),"line-width":new Ys(wt.paint_line["line-width"]),"line-gap-width":new Ys(wt.paint_line["line-gap-width"]),"line-offset":new Ys(wt.paint_line["line-offset"]),"line-blur":new Ys(wt.paint_line["line-blur"]),"line-dasharray":new Zs(wt.paint_line["line-dasharray"]),"line-pattern":new Zs(wt.paint_line["line-pattern"]),"line-gradient":new Ws(wt.paint_line["line-gradient"])})},get layout(){return fh=fh||new Ks({"line-cap":new Ys(wt.layout_line["line-cap"]),"line-join":new Ys(wt.layout_line["line-join"]),"line-miter-limit":new Ys(wt.layout_line["line-miter-limit"]),"line-round-limit":new Ys(wt.layout_line["line-round-limit"]),"line-sort-key":new Ys(wt.layout_line["line-sort-key"])})}};class mh extends Ys{possiblyEvaluate(t,e){return e=new Cs(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,n,r){return e=$({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,n,r)}}let gh;class xh extends to{constructor(t,e){super(t,yh,e),this.gradientVersion=0,gh||(gh=new mh(yh.paint.properties["line-width"].specification),gh.useIntegerZoom=!0);}_handleSpecialPaintPropertyUpdate(t){if("line-gradient"===t){const t=this.gradientExpression();this.stepInterpolant=!!function(t){return void 0!==t._styleExpression}(t)&&t._styleExpression.expression instanceof cn,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER;}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values["line-floorwidth"]=gh.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,t);}createBucket(t){return new ph(t)}queryRadius(t){const e=t,n=vh(ol("line-width",this,e),ol("line-gap-width",this,e)),r=ol("line-offset",this,e);return n/2+Math.abs(r)+al(this.paint.get("line-translate"))}queryIntersectsFeature({queryGeometry:t,feature:e,featureState:r,geometry:i,transform:s,pixelsToTileUnits:o}){const a=ll(t,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),-s.bearingInRadians,o),l=o/2*vh(this.paint.get("line-width").evaluate(e,r),this.paint.get("line-gap-width").evaluate(e,r)),u=this.paint.get("line-offset").evaluate(e,r);return u&&(i=function(t,e){const r=[];for(const i of t){const t=ul(i),s=[];for(let r=0;r=3)for(const e of r)if(il(t,e))return !0;if(Ja(t,r,n))return !0}return !1}(a,i,l)}isTileClipped(){return !0}}function vh(t,e){return e>0?e+2*t:t}const bh=ao([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),wh=ao([{name:"a_projected_pos",components:3,type:"Float32"}],4);ao([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const _h=ao([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);ao([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);const Sh=ao([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),Ah=ao([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function Mh(t,e,n){const r=e.layout.get("text-transform").evaluate(n,{});return "uppercase"===r?t=t.toLocaleUpperCase():"lowercase"===r&&(t=t.toLocaleLowerCase()),Bs.applyArabicShaping&&(t=Bs.applyArabicShaping(t)),t}function kh(t,e,n){for(const r of t.sections)r.text=Mh(r.text,e,n);return t}ao([{name:"triangle",components:3,type:"Uint16"}]),ao([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),ao([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),ao([{type:"Float32",name:"offsetX"}]),ao([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),ao([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);var Ih=24;const Eh={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","⋯":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"},Th={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},Fh={40:!0};function Ph(t,e,n,r,i,s){if("fontStack"in e){const r=n[e.fontStack],s=null==r?void 0:r[t];return s?s.metrics.advance*e.scale+i:0}{const t=r[e.imageName];return t?t.displaySize[0]*e.scale*Ih/s+i:0}}function Dh(t,e,n,r){const i=Math.pow(t-e,2);return r?tMath.max(t,this.sections[e].scale)),0)}getMaxImageSize(t){let e=0,n=0;for(let r=0;rn)));}addImageSection(t){const e=t.image?t.image.name:"";if(0===e.length)return void G("Can't add FormattedSection with an empty image.");const n=this.getNextImageSectionCharCode();n?(this.text+=String.fromCharCode(n),this.sections.push({scale:1,verticalAlign:t.verticalAlign||"bottom",imageName:e}),this.sectionIndex.push(this.sections.length-1)):G("Reached maximum number of images 6401");}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}determineLineBreaks(t,e,n,r,i){const s=[],o=this.determineAverageLineWidth(t,e,n,r,i),a=this.hasZeroWidthSpaces();let l=0,u=0;const c=this.text[Symbol.iterator]();let h=c.next();const p=this.text[Symbol.iterator]();p.next();let f=p.next();const d=this.text[Symbol.iterator]();d.next(),d.next();let y=d.next();for(;!h.done;){const e=this.getSection(u),m=h.value.codePointAt(0);if(Ss(m)||(l+=Ph(m,e,n,r,t,i)),!f.done){const t=ws(m),n=f.value.codePointAt(0);(Th[m]||t||"imageName"in e||!y.done&&Fh[n])&&s.push(Bh(u+1,l,o,s,zh(m,n,t&&a),!1));}u++,h=c.next(),f=p.next(),y=d.next();}return Ch(Bh(this.length(),l,o,s,0,!0))}determineAverageLineWidth(t,e,n,r,i){let s=0,o=0;for(const e of this.text){const a=this.getSection(o);s+=Ph(e.codePointAt(0),a,n,r,t,i),o++;}return s/Math.max(1,Math.ceil(s/e))}}const Lh=4294967296,Oh=1/Lh,$h="undefined"==typeof TextDecoder?null:new TextDecoder("utf-8");class Rh{constructor(t=new Uint8Array(16)){this.buf=ArrayBuffer.isView(t)?t:new Uint8Array(t),this.dataView=new DataView(this.buf.buffer),this.pos=0,this.type=0,this.length=this.buf.length;}readFields(t,e,n=this.length){for(;this.pos>3,i=this.pos;this.type=7&n,t(r,e,this),this.pos===i&&this.skip(n);}return e}readMessage(t,e){return this.readFields(t,e,this.readVarint()+this.pos)}readFixed32(){const t=this.dataView.getUint32(this.pos,!0);return this.pos+=4,t}readSFixed32(){const t=this.dataView.getInt32(this.pos,!0);return this.pos+=4,t}readFixed64(){const t=this.dataView.getUint32(this.pos,!0)+this.dataView.getUint32(this.pos+4,!0)*Lh;return this.pos+=8,t}readSFixed64(){const t=this.dataView.getUint32(this.pos,!0)+this.dataView.getInt32(this.pos+4,!0)*Lh;return this.pos+=8,t}readFloat(){const t=this.dataView.getFloat32(this.pos,!0);return this.pos+=4,t}readDouble(){const t=this.dataView.getFloat64(this.pos,!0);return this.pos+=8,t}readVarint(t){const e=this.buf;let n,r;return r=e[this.pos++],n=127&r,r<128?n:(r=e[this.pos++],n|=(127&r)<<7,r<128?n:(r=e[this.pos++],n|=(127&r)<<14,r<128?n:(r=e[this.pos++],n|=(127&r)<<21,r<128?n:(r=e[this.pos],n|=(15&r)<<28,function(t,e,n){const r=n.buf;let i,s;if(s=r[n.pos++],i=(112&s)>>4,s<128)return Nh(t,i,e);if(s=r[n.pos++],i|=(127&s)<<3,s<128)return Nh(t,i,e);if(s=r[n.pos++],i|=(127&s)<<10,s<128)return Nh(t,i,e);if(s=r[n.pos++],i|=(127&s)<<17,s<128)return Nh(t,i,e);if(s=r[n.pos++],i|=(127&s)<<24,s<128)return Nh(t,i,e);if(s=r[n.pos++],i|=(1&s)<<31,s<128)return Nh(t,i,e);throw new Error("Expected varint not more than 10 bytes")}(n,t,this)))))}readVarint64(){return this.readVarint(!0)}readSVarint(){const t=this.readVarint();return t%2==1?(t+1)/-2:t/2}readBoolean(){return Boolean(this.readVarint())}readString(){const t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&$h?$h.decode(this.buf.subarray(e,t)):function(t,e,n){let r="",i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+u>n)break;1===u?e<128&&(l=e):2===u?(s=t[i+1],128==(192&s)&&(l=(31&e)<<6|63&s,l<=127&&(l=null))):3===u?(s=t[i+1],o=t[i+2],128==(192&s)&&128==(192&o)&&(l=(15&e)<<12|(63&s)<<6|63&o,(l<=2047||l>=55296&&l<=57343)&&(l=null))):4===u&&(s=t[i+1],o=t[i+2],a=t[i+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&e)<<18|(63&s)<<12|(63&o)<<6|63&a,(l<=65535||l>=1114112)&&(l=null))),null===l?(l=65533,u=1):l>65535&&(l-=65536,r+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),r+=String.fromCharCode(l),i+=u;}return r}(this.buf,e,t)}readBytes(){const t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e}readPackedVarint(t=[],e){const n=this.readPackedEnd();for(;this.pos127;);else if(2===e)this.pos=this.readVarint()+this.pos;else if(5===e)this.pos+=4;else {if(1!==e)throw new Error(`Unimplemented type: ${e}`);this.pos+=8;}}writeTag(t,e){this.writeVarint(t<<3|e);}realloc(t){let e=this.length||16;for(;e268435455||t<0?function(t,e){let n,r;if(t>=0?(n=t%4294967296|0,r=t/4294967296|0):(n=~(-t%4294967296),r=~(-t/4294967296),4294967295^n?n=n+1|0:(n=0,r=r+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,n){n.buf[n.pos++]=127&t|128,t>>>=7,n.buf[n.pos++]=127&t|128,t>>>=7,n.buf[n.pos++]=127&t|128,t>>>=7,n.buf[n.pos++]=127&t|128,n.buf[n.pos]=127&(t>>>=7);}(n,0,e),function(t,e){const n=(7&t)<<4;e.buf[e.pos++]|=n|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))));}(r,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));}writeSVarint(t){this.writeVarint(t<0?2*-t-1:2*t);}writeBoolean(t){this.writeVarint(+t);}writeString(t){t=String(t),this.realloc(4*t.length),this.pos++;const e=this.pos;this.pos=function(t,e,n){for(let r,i,s=0;s55295&&r<57344){if(!i){r>56319||s+1===e.length?(t[n++]=239,t[n++]=191,t[n++]=189):i=r;continue}if(r<56320){t[n++]=239,t[n++]=191,t[n++]=189,i=r;continue}r=i-55296<<10|r-56320|65536,i=null;}else i&&(t[n++]=239,t[n++]=191,t[n++]=189,i=null);r<128?t[n++]=r:(r<2048?t[n++]=r>>6|192:(r<65536?t[n++]=r>>12|224:(t[n++]=r>>18|240,t[n++]=r>>12&63|128),t[n++]=r>>6&63|128),t[n++]=63&r|128);}return n}(this.buf,t,this.pos);const n=this.pos-e;n>=128&&Uh(e,n,this),this.pos=e-1,this.writeVarint(n),this.pos+=n;}writeFloat(t){this.realloc(4),this.dataView.setFloat32(this.pos,t,!0),this.pos+=4;}writeDouble(t){this.realloc(8),this.dataView.setFloat64(this.pos,t,!0),this.pos+=8;}writeBytes(t){const e=t.length;this.writeVarint(e),this.realloc(e);for(let n=0;n=128&&Uh(n,r,this),this.pos=n-1,this.writeVarint(r),this.pos+=r;}writeMessage(t,e,n){this.writeTag(t,2),this.writeRawMessage(e,n);}writePackedVarint(t,e){e.length&&this.writeMessage(t,jh,e);}writePackedSVarint(t,e){e.length&&this.writeMessage(t,qh,e);}writePackedBoolean(t,e){e.length&&this.writeMessage(t,Yh,e);}writePackedFloat(t,e){e.length&&this.writeMessage(t,Gh,e);}writePackedDouble(t,e){e.length&&this.writeMessage(t,Xh,e);}writePackedFixed32(t,e){e.length&&this.writeMessage(t,Zh,e);}writePackedSFixed32(t,e){e.length&&this.writeMessage(t,Hh,e);}writePackedFixed64(t,e){e.length&&this.writeMessage(t,Wh,e);}writePackedSFixed64(t,e){e.length&&this.writeMessage(t,Kh,e);}writeBytesField(t,e){this.writeTag(t,2),this.writeBytes(e);}writeFixed32Field(t,e){this.writeTag(t,5),this.writeFixed32(e);}writeSFixed32Field(t,e){this.writeTag(t,5),this.writeSFixed32(e);}writeFixed64Field(t,e){this.writeTag(t,1),this.writeFixed64(e);}writeSFixed64Field(t,e){this.writeTag(t,1),this.writeSFixed64(e);}writeVarintField(t,e){this.writeTag(t,0),this.writeVarint(e);}writeSVarintField(t,e){this.writeTag(t,0),this.writeSVarint(e);}writeStringField(t,e){this.writeTag(t,2),this.writeString(e);}writeFloatField(t,e){this.writeTag(t,5),this.writeFloat(e);}writeDoubleField(t,e){this.writeTag(t,1),this.writeDouble(e);}writeBooleanField(t,e){this.writeVarintField(t,+e);}}function Nh(t,e,n){return n?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function Uh(t,e,n){const r=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));n.realloc(r);for(let e=n.pos-1;e>=t;e--)n.buf[e+r]=n.buf[e];}function jh(t,e){for(let n=0;ne.h-t.h));const r=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),n),h:1/0}];let i=0,s=0;for(const e of t)for(let t=r.length-1;t>=0;t--){const n=r[t];if(!(e.w>n.w||e.h>n.h)){if(e.x=n.x,e.y=n.y,s=Math.max(s,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===n.w&&e.h===n.h){const e=r.pop();e&&tm.toCodeUnitIndex(t)));const t=v(m.toString(),x);for(const e of t){const t=[...e].map((()=>0));g.push(new Vh(e,m.sections,t));}}else if(b){g=[],x=x.map((t=>m.toCodeUnitIndex(t)));let t=0;const e=[];for(const n of m.text)e.push(...Array(n.length).fill(m.sectionIndex[t])),t++;const n=b(m.text,e,x);for(const t of n){const e=[];let n="";for(const r of t[0])e.push(t[1][n.length]),n+=r;g.push(new Vh(t[0],m.sections,e));}}else g=function(t,e){const n=[];let r=0;for(const i of e)n.push(t.substring(r,i)),r=i;return ru){const t=Math.ceil(s/u);i*=t/o,o=t;}return {x1:r,y1:i,x2:r+s,y2:i+o}}function yp(t,e,n,r,i,s){const o=t.image;let a;if(o.content){const t=o.content,e=o.pixelRatio||1;a=[t[0]/e,t[1]/e,o.displaySize[0]-t[2]/e,o.displaySize[1]-t[3]/e];}const l=e.left*s,u=e.right*s;let c,h,p,f;"width"===n||"both"===n?(f=i[0]+l-r[3],h=i[0]+u+r[1]):(f=i[0]+(l+u-o.displaySize[0])/2,h=f+o.displaySize[0]);const d=e.top*s,y=e.bottom*s;return "height"===n||"both"===n?(c=i[1]+d-r[0],p=i[1]+y+r[2]):(c=i[1]+(d+y-o.displaySize[1])/2,p=c+o.displaySize[1]),{image:o,top:c,right:h,bottom:p,left:f,collisionPadding:a}}ds("ImagePosition",np),ds("ImageAtlas",rp),t.ax=void 0,(ip=t.ax||(t.ax={}))[ip.none=0]="none",ip[ip.horizontal=1]="horizontal",ip[ip.vertical=2]="vertical",ip[ip.horizontalOnly=3]="horizontalOnly";const mp=128,gp=32640;function xp(t,e){const{expression:n}=e;if("constant"===n.kind)return {kind:"constant",layoutSize:n.evaluate(new Cs(t+1))};if("source"===n.kind)return {kind:"source"};{const{zoomStops:e,interpolationType:r}=n;let i=0;for(;it.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasDependencies=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[];const n=this.layers[0]._unevaluatedLayout._values;this.textSizeData=xp(this.zoom,n["text-size"]),this.iconSizeData=xp(this.zoom,n["icon-size"]);const r=this.layers[0].layout,i=r.get("symbol-sort-key"),s=r.get("symbol-z-order");this.canOverlap="never"!==vp(r,"text-overlap","text-allow-overlap")||"never"!==vp(r,"icon-overlap","icon-allow-overlap")||r.get("text-ignore-placement")||r.get("icon-ignore-placement"),this.sortFeaturesByKey="viewport-y"!==s&&!i.isConstant(),this.sortFeaturesByY=("viewport-y"===s||"auto"===s&&!this.sortFeaturesByKey)&&this.canOverlap,"point"===r.get("symbol-placement")&&(this.writingModes=r.get("text-writing-mode").map((e=>t.ax[e]))),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=e.sourceID;}createArrays(){this.text=new Ap(new $a(this.layers,this.zoom,(t=>t.startsWith("text")))),this.icon=new Ap(new $a(this.layers,this.zoom,(t=>t.startsWith("icon")))),this.glyphOffsetArray=new Ro,this.lineVertexArray=new No,this.symbolInstances=new $o,this.textAnchorOffsets=new jo;}calculateGlyphDependencies(t,e,n,r,i){for(const s of t)if(e[s.codePointAt(0)]=!0,(n||r)&&i){const t=Eh[s];t&&(e[t.codePointAt(0)]=!0);}}populate(e,n,r){var i;const s=this.layers[0],o=s.layout,a=o.get("text-font"),l=o.get("text-field"),u=o.get("icon-image"),c=("constant"!==l.value.kind||l.value.value instanceof ze&&!l.value.value.isEmpty()||l.value.value.toString().length>0)&&("constant"!==a.value.kind||a.value.value.length>0),h="constant"!==u.value.kind||!!u.value.value||Object.keys(u.parameters).length>0,p=o.get("symbol-sort-key");if(this.features=[],!c&&!h)return;const f=n.iconDependencies,d=n.glyphDependencies,y=n.availableImages,m=new Cs(this.zoom);for(const{feature:n,id:l,index:u,sourceLayerIndex:g}of e){const e=s._featureFilter.needGeometry,x=Ga(n,e);if(!s._featureFilter.filter(m,x,r))continue;let v,b;if(e||(x.geometry=qa(n)),c){const t=s.getValueAndResolveTokens("text-field",x,r,y),e=ze.factory(t);this.hasRTLText||(this.hasRTLText=Sp(e)),(!this.hasRTLText||"unavailable"===Bs.getRTLTextPluginStatus()||this.hasRTLText&&Bs.isParsed())&&(v=kh(e,s,x));}if(h){const t=s.getValueAndResolveTokens("icon-image",x,r,y);b=t instanceof Re?t:Re.fromString(t);}if(!v&&!b)continue;const w=this.sortFeaturesByKey?p.evaluate(x,{},r):void 0;if(this.features.push({id:l,text:v,icon:b,index:u,sourceLayerIndex:g,geometry:x.geometry,properties:n.properties,type:Cu.types[n.type],sortKey:w}),b&&(f[b.name]=!0),v){const e=a.evaluate(x,{},r).join(","),n="viewport"!==o.get("text-rotation-alignment")&&"point"!==o.get("symbol-placement");this.allowVerticalPlacement=null===(i=this.writingModes)||void 0===i?void 0:i.includes(t.ax.vertical);for(const t of v.sections)if(t.image)f[t.image.name]=!0;else {const r=As(v.toString()),i=t.fontStack||e;d[i]||(d[i]={}),this.calculateGlyphDependencies(t.text,d[i],n,this.allowVerticalPlacement,r);}}}"line"===o.get("symbol-placement")&&(this.features=function(t){const e={},n={},r=[];let i=0;function s(e){r.push(t[e]),i++;}function o(t,e,i){const s=n[t];return delete n[t],n[e]=s,r[s].geometry[0].pop(),r[s].geometry[0]=r[s].geometry[0].concat(i[0]),s}function a(t,n,i){const s=e[n];return delete e[n],e[t]=s,r[s].geometry[0].shift(),r[s].geometry[0]=i[0].concat(r[s].geometry[0]),s}function l(t,e,n){const r=n?e[0][e[0].length-1]:e[0][0];return `${t}:${r.x}:${r.y}`}for(let u=0;ut.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey));}update(t,e,n){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,{imagePositions:n}),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,{imagePositions:n}));}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();}addToLineVertexArray(t,e){const n=this.lineVertexArray.length;if(void 0!==t.segment){let n=t.dist(e[t.segment+1]),r=t.dist(e[t.segment]);const i={};for(let r=t.segment+1;r=0;n--)i[n]={x:e[n].x,y:e[n].y,tileUnitDistanceFromAnchor:r},n>0&&(r+=e[n-1].dist(e[n]));for(let t=0;t0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){const n=t.placedSymbolArray.get(e),r=n.vertexStartIndex+4*n.numGlyphs;for(let e=n.vertexStartIndex;er[t]-r[e]||i[e]-i[t])),s}addToSortKeyRanges(t,e){const n=this.sortKeyRanges[this.sortKeyRanges.length-1];(null==n?void 0:n.sortKey)===e?n.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const t of this.symbolInstanceIndexes){const e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex);const n=[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex];for(let t=0;t=0&&n.indexOf(e)===t&&this.addIndicesForPlacedSymbol(this.text,e);}e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}}}let Ip,Ep;ds("SymbolBucket",kp,{omit:["layers","collisionBoxArray","features","compareText"]}),kp.MAX_GLYPHS=65535,kp.addDynamicAttributes=_p;var Tp={get paint(){return Ep=Ep||new Ks({"icon-opacity":new Ys(wt.paint_symbol["icon-opacity"]),"icon-color":new Ys(wt.paint_symbol["icon-color"]),"icon-halo-color":new Ys(wt.paint_symbol["icon-halo-color"]),"icon-halo-width":new Ys(wt.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Ys(wt.paint_symbol["icon-halo-blur"]),"icon-translate":new Xs(wt.paint_symbol["icon-translate"]),"icon-translate-anchor":new Xs(wt.paint_symbol["icon-translate-anchor"]),"text-opacity":new Ys(wt.paint_symbol["text-opacity"]),"text-color":new Ys(wt.paint_symbol["text-color"],{runtimeType:Nt,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),"text-halo-color":new Ys(wt.paint_symbol["text-halo-color"]),"text-halo-width":new Ys(wt.paint_symbol["text-halo-width"]),"text-halo-blur":new Ys(wt.paint_symbol["text-halo-blur"]),"text-translate":new Xs(wt.paint_symbol["text-translate"]),"text-translate-anchor":new Xs(wt.paint_symbol["text-translate-anchor"])})},get layout(){return Ip=Ip||new Ks({"symbol-placement":new Xs(wt.layout_symbol["symbol-placement"]),"symbol-spacing":new Xs(wt.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Xs(wt.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Ys(wt.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Xs(wt.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Xs(wt.layout_symbol["icon-allow-overlap"]),"icon-overlap":new Xs(wt.layout_symbol["icon-overlap"]),"icon-ignore-placement":new Xs(wt.layout_symbol["icon-ignore-placement"]),"icon-optional":new Xs(wt.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Xs(wt.layout_symbol["icon-rotation-alignment"]),"icon-size":new Ys(wt.layout_symbol["icon-size"]),"icon-text-fit":new Xs(wt.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Xs(wt.layout_symbol["icon-text-fit-padding"]),"icon-image":new Ys(wt.layout_symbol["icon-image"]),"icon-rotate":new Ys(wt.layout_symbol["icon-rotate"]),"icon-padding":new Ys(wt.layout_symbol["icon-padding"]),"icon-keep-upright":new Xs(wt.layout_symbol["icon-keep-upright"]),"icon-offset":new Ys(wt.layout_symbol["icon-offset"]),"icon-anchor":new Ys(wt.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Xs(wt.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Xs(wt.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Xs(wt.layout_symbol["text-rotation-alignment"]),"text-field":new Ys(wt.layout_symbol["text-field"]),"text-font":new Ys(wt.layout_symbol["text-font"]),"text-size":new Ys(wt.layout_symbol["text-size"]),"text-max-width":new Ys(wt.layout_symbol["text-max-width"]),"text-line-height":new Xs(wt.layout_symbol["text-line-height"]),"text-letter-spacing":new Ys(wt.layout_symbol["text-letter-spacing"]),"text-justify":new Ys(wt.layout_symbol["text-justify"]),"text-radial-offset":new Ys(wt.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Xs(wt.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new Ys(wt.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new Ys(wt.layout_symbol["text-anchor"]),"text-max-angle":new Xs(wt.layout_symbol["text-max-angle"]),"text-writing-mode":new Xs(wt.layout_symbol["text-writing-mode"]),"text-rotate":new Ys(wt.layout_symbol["text-rotate"]),"text-padding":new Xs(wt.layout_symbol["text-padding"]),"text-keep-upright":new Xs(wt.layout_symbol["text-keep-upright"]),"text-transform":new Ys(wt.layout_symbol["text-transform"]),"text-offset":new Ys(wt.layout_symbol["text-offset"]),"text-allow-overlap":new Xs(wt.layout_symbol["text-allow-overlap"]),"text-overlap":new Xs(wt.layout_symbol["text-overlap"]),"text-ignore-placement":new Xs(wt.layout_symbol["text-ignore-placement"]),"text-optional":new Xs(wt.layout_symbol["text-optional"])})}};class Fp{constructor(t){if(void 0===t.property.overrides)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=t.property.overrides?t.property.overrides.runtimeType:Lt,this.defaultValue=t;}evaluate(t){if(t.formattedSection){const e=this.defaultValue.property.overrides;if(null==e?void 0:e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);}outputDefined(){return !1}serialize(){return null}}ds("FormatSectionOverride",Fp,{omit:["defaultValue"]});class Pp extends to{constructor(t,e){super(t,Tp,e);}recalculate(t,e){if(super.recalculate(t,e),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]="map"===this.layout.get("text-rotation-alignment")?"map":"viewport"),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){const t=this.layout.get("text-writing-mode");if(t){const e=[];for(const n of t)e.includes(n)||e.push(n);this.layout._values["text-writing-mode"]=e;}else this.layout._values["text-writing-mode"]=["horizontal"];}this._setPaintOverrides();}getValueAndResolveTokens(t,e,n,r){const i=this.layout.get(t).evaluate(e,{},n,r),s=this._unevaluatedLayout._values[t];return s.isDataDriven()||ii(s.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,((e,n)=>t&&n in t?String(t[n]):""))}(e.properties,i)}createBucket(t){return new kp(t)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const t of Tp.paint.overridableProperties){if(!Pp.hasPaintOverride(this.layout,t))continue;const e=this.paint.get(t),n=new Fp(e),r=new ri(n,e.property.specification);let i=null;i="constant"===e.value.kind||"source"===e.value.kind?new oi("source",r):new ai("composite",r,e.value.zoomStops),this.paint._values[t]=new qs(e.property,i,e.parameters);}}_handleOverridablePaintPropertyUpdate(t,e,n){return !(!this.layout||e.isDataDriven()||n.isDataDriven())&&Pp.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){const n=t.get("text-field"),r=Tp.paint.properties[e];let i=!1;const s=t=>{var e;for(const n of t)if(null===(e=r.overrides)||void 0===e?void 0:e.hasOverride(n))return void(i=!0)};if("constant"===n.value.kind&&n.value.value instanceof ze)s(n.value.value.sections);else if("source"===n.value.kind||"composite"===n.value.kind){const t=e=>{i||(e instanceof Xe&&qe(e.value)===Xt?s(e.value.sections):e instanceof Pn?s(e.sections):e.eachChild(t));},e=n.value;e._styleExpression&&t(e._styleExpression.expression);}return i}}let Dp;var zp={get paint(){return Dp=Dp||new Ks({"background-color":new Xs(wt.paint_background["background-color"]),"background-pattern":new Hs(wt.paint_background["background-pattern"]),"background-opacity":new Xs(wt.paint_background["background-opacity"])})}};class Bp extends to{constructor(t,e){super(t,zp,e);}}class Cp extends to{constructor(t,e){super(t,{},e),this.onAdd=t=>{this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},this.onRemove=t=>{this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);},this.implementation=t;}is3D(){return "3d"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return !1}serialize(){throw new Error("Custom layers cannot be serialized")}}class Vp{constructor(t){this._methodToThrottle=t,this._triggered=!1,this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle();};}trigger(){var t;this._triggered||(this._triggered=!0,null===(t=this._channel)||void 0===t||t.port1.postMessage(!0));}remove(){delete this._channel,this._methodToThrottle=()=>{};}}const Lp={once:!0},Op=6371008.8;class $p{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat object: (${t}, ${e})`);if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new $p(O(this.lng,-180,180),this.lat)}toArray(){return [this.lng,this.lat]}toString(){return `LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const e=Math.PI/180,n=this.lat*e,r=t.lat*e,i=Math.sin(n)*Math.sin(r)+Math.cos(n)*Math.cos(r)*Math.cos((t.lng-this.lng)*e);return Op*Math.acos(Math.min(i,1))}static convert(t){if(t instanceof $p)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new $p(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new $p(Number("lng"in t?t.lng:t.lon),Number(t.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}const Rp=2*Math.PI*Op;function Np(t){return Rp*Math.cos(t*Math.PI/180)}function Up(t){return (180+t)/360}function jp(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function qp(t,e){return t/Np(e)}function Gp(t){return 360*t-180}function Xp(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}function Yp(t,e){return t*Np(Xp(e))}class Zp{constructor(t,e,n=0){this.x=+t,this.y=+e,this.z=+n;}static fromLngLat(t,e=0){const n=$p.convert(t);return new Zp(Up(n.lng),jp(n.lat),qp(e,n.lat))}toLngLat(){return new $p(Gp(this.x),Xp(this.y))}toAltitude(){return Yp(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Rp*(t=Xp(this.y),1/Math.cos(t*Math.PI/180));var t;}}function Hp(t,e,n){var r=2*Math.PI*6378137/256/Math.pow(2,n);return [t*r-2*Math.PI*6378137/2,e*r-2*Math.PI*6378137/2]}class Wp{constructor(t,e,n){if(!function(t,e,n){return !(t<0||t>25||n<0||n>=Math.pow(2,t)||e<0||e>=Math.pow(2,t))}(t,e,n))throw new Error(`x=${e}, y=${n}, z=${t} outside of bounds. 0<=x<${Math.pow(2,t)}, 0<=y<${Math.pow(2,t)} 0<=z<=25 `);this.z=t,this.x=e,this.y=n,this.key=Qp(0,t,t,e,n);}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e,n){const r=(s=this.y,o=this.z,a=Hp(256*(i=this.x),256*(s=Math.pow(2,o)-s-1),o),l=Hp(256*(i+1),256*(s+1),o),a[0]+","+a[1]+","+l[0]+","+l[1]);var i,s,o,a,l;const u=function(t,e,n){let r="";for(let i=t;i>0;i--){const t=1<1?"@2x":"").replace(/{quadkey}/g,u).replace(/{bbox-epsg-3857}/g,r)}isChildOf(t){const e=this.z-t.z;return e>0&&t.x===this.x>>e&&t.y===this.y>>e}getTilePoint(t){const e=Math.pow(2,this.z);return new n((t.x*e-this.x)*T,(t.y*e-this.y)*T)}toString(){return `${this.z}/${this.x}/${this.y}`}}class Kp{constructor(t,e){this.wrap=t,this.canonical=e,this.key=Qp(t,e.z,e.z,e.x,e.y);}}class Jp{constructor(t,e,n,r,i){if(this.terrainRttPosMatrix32f=null,t= z; overscaledZ = ${t}; z = ${n}`);this.overscaledZ=t,this.wrap=e,this.canonical=new Wp(n,+r,+i),this.key=Qp(e,t,n,r,i);}clone(){return new Jp(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const e=this.canonical.z-t;return t>this.canonical.z?new Jp(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Jp(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}isOverscaled(){return this.overscaledZ>this.canonical.z}calculateScaledKey(t,e){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const n=this.canonical.z-t;return t>this.canonical.z?Qp(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):Qp(this.wrap*+e,t,t,this.canonical.x>>n,this.canonical.y>>n)}isChildOf(t){if(t.wrap!==this.wrap)return !1;if(this.overscaledZ-t.overscaledZ<=0)return !1;if(0===t.overscaledZ)return this.overscaledZ>0;const e=this.canonical.z-t.canonical.z;return !(e<0)&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return [new Jp(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const e=this.canonical.z+1,n=2*this.canonical.x,r=2*this.canonical.y;return [new Jp(e,this.wrap,e,n,r),new Jp(e,this.wrap,e,n+1,r),new Jp(e,this.wrap,e,n,r+1),new Jp(e,this.wrap,e,n+1,r+1)]}isLessThan(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=0&&t=0&&e=l)return null;let c=this.canonical.x+r,h=this.wrap;return c<0?(h-=Math.ceil(-c/l),c=(c%l+l)%l):c>=l&&(h+=Math.floor(c/l),c%=l),{tileID:new Jp(this.overscaledZ,h,a,c,u),x:s,y:o}}}function Qp(t,e,n,r,i){(t*=2)<0&&(t=-1*t-1);const s=1<this.maxX||this.minY>this.maxY)&&(this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0),this}shrinkBy(t){return this.expandBy(-t)}map(t){const e=new tf;return e.extend(t(new n(this.minX,this.minY))),e.extend(t(new n(this.maxX,this.minY))),e.extend(t(new n(this.minX,this.maxY))),e.extend(t(new n(this.maxX,this.maxY))),e}static fromPoints(t){const e=new tf;for(const n of t)e.extend(n);return e}contains(t){return t.x>=this.minX&&t.x<=this.maxX&&t.y>=this.minY&&t.y<=this.maxY}empty(){return this.minX>this.maxX}width(){return this.maxX-this.minX}height(){return this.maxY-this.minY}covers(t){return !this.empty()&&!t.empty()&&t.minX>=this.minX&&t.maxX<=this.maxX&&t.minY>=this.minY&&t.maxY<=this.maxY}intersects(t){return !this.empty()&&!t.empty()&&t.minX<=this.maxX&&t.maxX>=this.minX&&t.minY<=this.maxY&&t.maxY>=this.minY}}class ef{constructor(t){this._stringToNumber={},this._numberToString=[];for(let e=0;e=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${t} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[t]}}class nf{constructor(t,e,n,r,i){this.type="Feature",this._vectorTileFeature=t,this._x=n,this._y=r,this._z=e,this.properties=t.properties,this.id=i;}projectPoint(t,e,n,r){return [360*(t.x+e)/r-180,360/Math.PI*Math.atan(Math.exp((1-2*(t.y+n)/r)*Math.PI))-90]}projectLine(t,e,n,r){return t.map((t=>this.projectPoint(t,e,n,r)))}get geometry(){if(this._geometry)return this._geometry;const t=this._vectorTileFeature,e=t.extent*Math.pow(2,this._z),n=t.extent*this._x,r=t.extent*this._y,i=t.loadGeometry();switch(t.type){case 1:{const t=[];for(const e of i)t.push(e[0]);const s=this.projectLine(t,n,r,e);this._geometry=1===t.length?{type:"Point",coordinates:s[0]}:{type:"MultiPoint",coordinates:s};break}case 2:{const t=i.map((t=>this.projectLine(t,n,r,e)));this._geometry=1===t.length?{type:"LineString",coordinates:t[0]}:{type:"MultiLineString",coordinates:t};break}case 3:{const t=Lu(i),s=[];for(const i of t)s.push(i.map((t=>this.projectLine(t,n,r,e))));this._geometry=1===s.length?{type:"Polygon",coordinates:s[0]}:{type:"MultiPolygon",coordinates:s};break}default:throw new Error(`unknown feature type: ${t.type}`)}return this._geometry}set geometry(t){this._geometry=t;}toJSON(){const t={geometry:this.geometry};for(const e in this)"_geometry"!==e&&"_vectorTileFeature"!==e&&"_x"!==e&&"_y"!==e&&"_z"!==e&&(t[e]=this[e]);return t}}class rf{constructor(t,e,n){this._name=t,this.dataBuffer=e,"number"==typeof n?this._size=n:(this.nullabilityBuffer=n,this._size=n.size());}getValue(t){return this.nullabilityBuffer&&!this.nullabilityBuffer.get(t)?null:this.getValueFromBuffer(t)}has(t){return this.nullabilityBuffer?.get(t)||!this.nullabilityBuffer}get name(){return this._name}get size(){return this._size}}class sf extends rf{}class of extends sf{getValueFromBuffer(t){return this.dataBuffer[t]}}class af extends sf{getValueFromBuffer(t){return this.dataBuffer[t]}}class lf extends rf{constructor(t,e,n,r){super(t,e,r),this.delta=n;}}class uf extends lf{constructor(t,e,n,r){super(t,Int32Array.of(e),n,r);}getValueFromBuffer(t){return this.dataBuffer[0]+t*this.delta}}class cf extends rf{constructor(t,e,n,r){super(t,r?Int32Array.of(e):Uint32Array.of(e),n);}getValueFromBuffer(t){return this.dataBuffer[0]}}class hf{constructor(t,e,n,r,i=4096){this._name=t,this._geometryVector=e,this._idVector=n,this._propertyVectors=r,this._extent=i;}get name(){return this._name}get idVector(){return this._idVector}get geometryVector(){return this._geometryVector}get propertyVectors(){return this._propertyVectors}getPropertyVector(t){return this.propertyVectorsMap||(this.propertyVectorsMap=new Map(this._propertyVectors.map((t=>[t.name,t])))),this.propertyVectorsMap.get(t)}get numFeatures(){return this.geometryVector.numGeometries}get extent(){return this._extent}getFeatures(){const t=[],e=this.geometryVector.getGeometries();for(let n=0;n>>32-t;const mf=yf,gf=256;function xf(t,e){return t-t%e}function vf(t){const e=t>>>0;return ((255&e)<<24|(65280&e)<<8|e>>>8&65280|e>>>24&255)>>>0}const bf=function(){if(!Number.isFinite(65536))return 65536;const t=xf(Math.floor(65536),gf);return 0===t?gf:t}(),wf=3*bf/gf+bf|0;function _f(){const t=new Uint8Array(wf);return {dataToBePacked:new Array(33),dataPointers:new Int32Array(33),byteContainer:t,byteContainerI32:new Int32Array(t.buffer,t.byteOffset,t.byteLength>>>2),exceptionSizes:new Int32Array(33)}}function Sf(t,e,n,r,i){switch(i){case 1:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0;n[i++]=e>>>0&1,n[i++]=e>>>1&1,n[i++]=e>>>2&1,n[i++]=e>>>3&1,n[i++]=e>>>4&1,n[i++]=e>>>5&1,n[i++]=e>>>6&1,n[i++]=e>>>7&1,n[i++]=e>>>8&1,n[i++]=e>>>9&1,n[i++]=e>>>10&1,n[i++]=e>>>11&1,n[i++]=e>>>12&1,n[i++]=e>>>13&1,n[i++]=e>>>14&1,n[i++]=e>>>15&1,n[i++]=e>>>16&1,n[i++]=e>>>17&1,n[i++]=e>>>18&1,n[i++]=e>>>19&1,n[i++]=e>>>20&1,n[i++]=e>>>21&1,n[i++]=e>>>22&1,n[i++]=e>>>23&1,n[i++]=e>>>24&1,n[i++]=e>>>25&1,n[i++]=e>>>26&1,n[i++]=e>>>27&1,n[i++]=e>>>28&1,n[i++]=e>>>29&1,n[i++]=e>>>30&1,n[i++]=e>>>31&1;}}(t,e,n,r);break;case 2:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0;n[i++]=e>>>0&3,n[i++]=e>>>2&3,n[i++]=e>>>4&3,n[i++]=e>>>6&3,n[i++]=e>>>8&3,n[i++]=e>>>10&3,n[i++]=e>>>12&3,n[i++]=e>>>14&3,n[i++]=e>>>16&3,n[i++]=e>>>18&3,n[i++]=e>>>20&3,n[i++]=e>>>22&3,n[i++]=e>>>24&3,n[i++]=e>>>26&3,n[i++]=e>>>28&3,n[i++]=e>>>30&3,n[i++]=r>>>0&3,n[i++]=r>>>2&3,n[i++]=r>>>4&3,n[i++]=r>>>6&3,n[i++]=r>>>8&3,n[i++]=r>>>10&3,n[i++]=r>>>12&3,n[i++]=r>>>14&3,n[i++]=r>>>16&3,n[i++]=r>>>18&3,n[i++]=r>>>20&3,n[i++]=r>>>22&3,n[i++]=r>>>24&3,n[i++]=r>>>26&3,n[i++]=r>>>28&3,n[i++]=r>>>30&3;}}(t,e,n,r);break;case 3:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0;n[i++]=e>>>0&7,n[i++]=e>>>3&7,n[i++]=e>>>6&7,n[i++]=e>>>9&7,n[i++]=e>>>12&7,n[i++]=e>>>15&7,n[i++]=e>>>18&7,n[i++]=e>>>21&7,n[i++]=e>>>24&7,n[i++]=e>>>27&7,n[i++]=7&(e>>>30|(1&r)<<2),n[i++]=r>>>1&7,n[i++]=r>>>4&7,n[i++]=r>>>7&7,n[i++]=r>>>10&7,n[i++]=r>>>13&7,n[i++]=r>>>16&7,n[i++]=r>>>19&7,n[i++]=r>>>22&7,n[i++]=r>>>25&7,n[i++]=r>>>28&7,n[i++]=7&(r>>>31|(3&o)<<1),n[i++]=o>>>2&7,n[i++]=o>>>5&7,n[i++]=o>>>8&7,n[i++]=o>>>11&7,n[i++]=o>>>14&7,n[i++]=o>>>17&7,n[i++]=o>>>20&7,n[i++]=o>>>23&7,n[i++]=o>>>26&7,n[i++]=o>>>29&7;}}(t,e,n,r);break;case 4:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0,a=t[s++]>>>0;n[i++]=e>>>0&15,n[i++]=e>>>4&15,n[i++]=e>>>8&15,n[i++]=e>>>12&15,n[i++]=e>>>16&15,n[i++]=e>>>20&15,n[i++]=e>>>24&15,n[i++]=e>>>28&15,n[i++]=r>>>0&15,n[i++]=r>>>4&15,n[i++]=r>>>8&15,n[i++]=r>>>12&15,n[i++]=r>>>16&15,n[i++]=r>>>20&15,n[i++]=r>>>24&15,n[i++]=r>>>28&15,n[i++]=o>>>0&15,n[i++]=o>>>4&15,n[i++]=o>>>8&15,n[i++]=o>>>12&15,n[i++]=o>>>16&15,n[i++]=o>>>20&15,n[i++]=o>>>24&15,n[i++]=o>>>28&15,n[i++]=a>>>0&15,n[i++]=a>>>4&15,n[i++]=a>>>8&15,n[i++]=a>>>12&15,n[i++]=a>>>16&15,n[i++]=a>>>20&15,n[i++]=a>>>24&15,n[i++]=a>>>28&15;}}(t,e,n,r);break;case 5:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0,a=t[s++]>>>0,l=t[s++]>>>0;n[i++]=e>>>0&31,n[i++]=e>>>5&31,n[i++]=e>>>10&31,n[i++]=e>>>15&31,n[i++]=e>>>20&31,n[i++]=e>>>25&31,n[i++]=31&(e>>>30|(7&r)<<2),n[i++]=r>>>3&31,n[i++]=r>>>8&31,n[i++]=r>>>13&31,n[i++]=r>>>18&31,n[i++]=r>>>23&31,n[i++]=31&(r>>>28|(1&o)<<4),n[i++]=o>>>1&31,n[i++]=o>>>6&31,n[i++]=o>>>11&31,n[i++]=o>>>16&31,n[i++]=o>>>21&31,n[i++]=o>>>26&31,n[i++]=31&(o>>>31|(15&a)<<1),n[i++]=a>>>4&31,n[i++]=a>>>9&31,n[i++]=a>>>14&31,n[i++]=a>>>19&31,n[i++]=a>>>24&31,n[i++]=31&(a>>>29|(3&l)<<3),n[i++]=l>>>2&31,n[i++]=l>>>7&31,n[i++]=l>>>12&31,n[i++]=l>>>17&31,n[i++]=l>>>22&31,n[i++]=l>>>27&31;}}(t,e,n,r);break;case 6:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0,a=t[s++]>>>0,l=t[s++]>>>0,u=t[s++]>>>0;n[i++]=e>>>0&63,n[i++]=e>>>6&63,n[i++]=e>>>12&63,n[i++]=e>>>18&63,n[i++]=e>>>24&63,n[i++]=63&(e>>>30|(15&r)<<2),n[i++]=r>>>4&63,n[i++]=r>>>10&63,n[i++]=r>>>16&63,n[i++]=r>>>22&63,n[i++]=63&(r>>>28|(3&o)<<4),n[i++]=o>>>2&63,n[i++]=o>>>8&63,n[i++]=o>>>14&63,n[i++]=o>>>20&63,n[i++]=o>>>26&63,n[i++]=a>>>0&63,n[i++]=a>>>6&63,n[i++]=a>>>12&63,n[i++]=a>>>18&63,n[i++]=a>>>24&63,n[i++]=63&(a>>>30|(15&l)<<2),n[i++]=l>>>4&63,n[i++]=l>>>10&63,n[i++]=l>>>16&63,n[i++]=l>>>22&63,n[i++]=63&(l>>>28|(3&u)<<4),n[i++]=u>>>2&63,n[i++]=u>>>8&63,n[i++]=u>>>14&63,n[i++]=u>>>20&63,n[i++]=u>>>26&63;}}(t,e,n,r);break;case 7:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0,a=t[s++]>>>0,l=t[s++]>>>0,u=t[s++]>>>0,c=t[s++]>>>0;n[i++]=e>>>0&127,n[i++]=e>>>7&127,n[i++]=e>>>14&127,n[i++]=e>>>21&127,n[i++]=127&(e>>>28|(7&r)<<4),n[i++]=r>>>3&127,n[i++]=r>>>10&127,n[i++]=r>>>17&127,n[i++]=r>>>24&127,n[i++]=127&(r>>>31|(63&o)<<1),n[i++]=o>>>6&127,n[i++]=o>>>13&127,n[i++]=o>>>20&127,n[i++]=127&(o>>>27|(3&a)<<5),n[i++]=a>>>2&127,n[i++]=a>>>9&127,n[i++]=a>>>16&127,n[i++]=a>>>23&127,n[i++]=127&(a>>>30|(31&l)<<2),n[i++]=l>>>5&127,n[i++]=l>>>12&127,n[i++]=l>>>19&127,n[i++]=127&(l>>>26|(1&u)<<6),n[i++]=u>>>1&127,n[i++]=u>>>8&127,n[i++]=u>>>15&127,n[i++]=u>>>22&127,n[i++]=127&(u>>>29|(15&c)<<3),n[i++]=c>>>4&127,n[i++]=c>>>11&127,n[i++]=c>>>18&127,n[i++]=c>>>25&127;}}(t,e,n,r);break;case 8:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<8;e++){const e=t[s++]>>>0,r=t[s++]>>>0,o=t[s++]>>>0,a=t[s++]>>>0,l=t[s++]>>>0,u=t[s++]>>>0,c=t[s++]>>>0,h=t[s++]>>>0;n[i++]=e>>>0&255,n[i++]=e>>>8&255,n[i++]=e>>>16&255,n[i++]=e>>>24&255,n[i++]=r>>>0&255,n[i++]=r>>>8&255,n[i++]=r>>>16&255,n[i++]=r>>>24&255,n[i++]=o>>>0&255,n[i++]=o>>>8&255,n[i++]=o>>>16&255,n[i++]=o>>>24&255,n[i++]=a>>>0&255,n[i++]=a>>>8&255,n[i++]=a>>>16&255,n[i++]=a>>>24&255,n[i++]=l>>>0&255,n[i++]=l>>>8&255,n[i++]=l>>>16&255,n[i++]=l>>>24&255,n[i++]=u>>>0&255,n[i++]=u>>>8&255,n[i++]=u>>>16&255,n[i++]=u>>>24&255,n[i++]=c>>>0&255,n[i++]=c>>>8&255,n[i++]=c>>>16&255,n[i++]=c>>>24&255,n[i++]=h>>>0&255,n[i++]=h>>>8&255,n[i++]=h>>>16&255,n[i++]=h>>>24&255;}}(t,e,n,r);break;case 16:!function(t,e,n,r){let i=r,s=e;for(let e=0;e<128;e++){const e=t[s++]>>>0;n[i++]=65535&e,n[i++]=e>>>16&65535;}}(t,e,n,r);break;default:!function(t,e,n,r,i){const s=mf[i]>>>0;let o=e,a=0,l=t[o]>>>0,u=r;for(let e=0;e<8;e++){for(let e=0;e<32;e++)if(a+i<=32)n[u+e]=l>>>a&s,a+=i,32===a&&(a=0,o++,31!==e&&(l=t[o]>>>0));else {const r=32-a,c=l>>>a;o++,l=t[o]>>>0;const h=i-r;n[u+e]=(c|(l&-1>>>32-h>>>0)<>>0);}}(t,e,n,r,i);}return e+(i<<3)|0}function Af(t,e,n,r){if(n+2>e)throw new Error(`FastPFOR decode: byteContainer underflow at block=${r} (need 2 bytes for [bitWidth, exceptionCount], bytePos=${n}, byteSize=${e})`);const i=t[n++],s=t[n++];if(i>32)throw new Error(`FastPFOR decode: invalid bitWidth=${i} at block=${r} (expected 0..32). This likely indicates corrupted or truncated input.`);return {bitWidth:i,exceptionCount:s,bytePosIn:n}}function Mf(t,e,n,r,i,s,o,a,l){const{maxBits:u,exceptionBitWidth:c,bytePosIn:h}=function(t,e,n,r,i,s){if(n+1>e)throw new Error(`FastPFOR decode: exception header underflow at block=${s} (need 1 byte for maxBits, bytePos=${n}, byteSize=${e})`);const o=t[n++];if(o32)throw new Error(`FastPFOR decode: invalid maxBits=${o} at block=${s} (bitWidth=${r}, expected ${r}..32)`);const a=o-r|0;if(a<1||a>32)throw new Error(`FastPFOR decode: invalid exceptionBitWidth=${a} at block=${s} (bitWidth=${r}, maxBits=${o})`);if(n+i>e)throw new Error(`FastPFOR decode: exception positions underflow at block=${s} (need=${i}, have=${e-n})`);return {maxBits:o,exceptionBitWidth:a,bytePosIn:n}}(i,s,o,n,r,l);if(o=h,1===c){const s=1<y)throw new Error(`FastPFOR decode: exception stream overflow for exceptionBitWidth=${c} (ptr=${d}, need ${r}, size=${y}) at block ${l}`);for(let s=0;st.length-1)throw new Error(`FastPFOR decode: invalid whereMeta=${a} at pageStart=${o} (expected > 0 and pageStart+whereMeta < encoded.length=${t.length})`);const l=o+1|0,u=o+a|0,c=t[u]>>>0,h=c+3>>>2,p=u+1,f=p+h;if(f>=t.length)throw new Error(`FastPFOR decode: invalid byteSize=${c} (metaInts=${h}, pageStart=${o}, packedEnd=${u}, byteContainerStart=${p}) causes bitmapPos=${f} out of bounds (encoded.length=${t.length})`);const d=function(t,e,n,r){r.byteContainer.length>>2;if(3&i.byteOffset)for(let n=0;n>>8&255,i[s+2|0]=r>>>16&255,i[s+3|0]=r>>>24&255;}else {let n=r.byteContainerI32;(!n||n.buffer!==i.buffer||n.byteOffset!==i.byteOffset||n.length>>2)),n.set(t.subarray(e,e+s));}const o=3&n;if(o>0){const n=0|t[e+s|0],r=s<<2;for(let t=0;t>>(t<<3)&255;}return i}(t,p,c,s),y=c,m=function(t,e,n){const r=0|t[e++],i=n.dataToBePacked;for(let s=2;s<=32;s=s+1|0){if(!(r>>>s-1&1))continue;if(e>=t.length)throw new Error(`FastPFOR decode: truncated exception stream header (bitWidth=${s}, streamWordIndex=${e}, needWords=1, availableWords=${t.length-e}, encodedWords=${t.length})`);const o=t[e++]>>>0,a=xf(o+31,32),l=o*s+31>>>5;if(e+l>t.length)throw new Error(`FastPFOR decode: truncated exception stream (bitWidth=${s}, size=${o}, streamWordIndex=${e}, needWords=${l}, availableWords=${t.length-e}, encodedWords=${t.length})`);let u=i[s];(!u||u.length>>5)|0,n.exceptionSizes[s]=o;}return e}(t,f,s);return s.dataPointers.fill(0),function(t,e,n,r,i,s,o,a,l,u){let c=0|n,h=0;for(let e=0;e0&&(h=Mf(i,p,r,o,a,l,h,u,e));}if(c!==r)throw new Error(`FastPFOR decode: packed region mismatch (pageStart=${e}, packedStart=${n}, consumedPackedEnd=${c}, expectedPackedEnd=${r}, packedWords=${r-n}, encoded.length=${t.length})`)}(t,o,l,u,e,0|r,i/gf|0,d,y,s),m}function If(t,e,n,r,i){switch(i){case 2:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0;n[i++]=s>>>0&3,n[i++]=s>>>2&3,n[i++]=s>>>4&3,n[i++]=s>>>6&3,n[i++]=s>>>8&3,n[i++]=s>>>10&3,n[i++]=s>>>12&3,n[i++]=s>>>14&3,n[i++]=s>>>16&3,n[i++]=s>>>18&3,n[i++]=s>>>20&3,n[i++]=s>>>22&3,n[i++]=s>>>24&3,n[i++]=s>>>26&3,n[i++]=s>>>28&3,n[i++]=s>>>30&3,n[i++]=o>>>0&3,n[i++]=o>>>2&3,n[i++]=o>>>4&3,n[i++]=o>>>6&3,n[i++]=o>>>8&3,n[i++]=o>>>10&3,n[i++]=o>>>12&3,n[i++]=o>>>14&3,n[i++]=o>>>16&3,n[i++]=o>>>18&3,n[i++]=o>>>20&3,n[i++]=o>>>22&3,n[i++]=o>>>24&3,n[i++]=o>>>26&3,n[i++]=o>>>28&3,n[i]=o>>>30&3;}(t,e,n,r);case 3:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0;n[i++]=s>>>0&7,n[i++]=s>>>3&7,n[i++]=s>>>6&7,n[i++]=s>>>9&7,n[i++]=s>>>12&7,n[i++]=s>>>15&7,n[i++]=s>>>18&7,n[i++]=s>>>21&7,n[i++]=s>>>24&7,n[i++]=s>>>27&7,n[i++]=7&(s>>>30|(1&o)<<2),n[i++]=o>>>1&7,n[i++]=o>>>4&7,n[i++]=o>>>7&7,n[i++]=o>>>10&7,n[i++]=o>>>13&7,n[i++]=o>>>16&7,n[i++]=o>>>19&7,n[i++]=o>>>22&7,n[i++]=o>>>25&7,n[i++]=o>>>28&7,n[i++]=7&(o>>>31|(3&a)<<1),n[i++]=a>>>2&7,n[i++]=a>>>5&7,n[i++]=a>>>8&7,n[i++]=a>>>11&7,n[i++]=a>>>14&7,n[i++]=a>>>17&7,n[i++]=a>>>20&7,n[i++]=a>>>23&7,n[i++]=a>>>26&7,n[i]=a>>>29&7;}(t,e,n,r);case 4:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0;n[i++]=s>>>0&15,n[i++]=s>>>4&15,n[i++]=s>>>8&15,n[i++]=s>>>12&15,n[i++]=s>>>16&15,n[i++]=s>>>20&15,n[i++]=s>>>24&15,n[i++]=s>>>28&15,n[i++]=o>>>0&15,n[i++]=o>>>4&15,n[i++]=o>>>8&15,n[i++]=o>>>12&15,n[i++]=o>>>16&15,n[i++]=o>>>20&15,n[i++]=o>>>24&15,n[i++]=o>>>28&15,n[i++]=a>>>0&15,n[i++]=a>>>4&15,n[i++]=a>>>8&15,n[i++]=a>>>12&15,n[i++]=a>>>16&15,n[i++]=a>>>20&15,n[i++]=a>>>24&15,n[i++]=a>>>28&15,n[i++]=l>>>0&15,n[i++]=l>>>4&15,n[i++]=l>>>8&15,n[i++]=l>>>12&15,n[i++]=l>>>16&15,n[i++]=l>>>20&15,n[i++]=l>>>24&15,n[i]=l>>>28&15;}(t,e,n,r);case 5:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0;n[i++]=s>>>0&31,n[i++]=s>>>5&31,n[i++]=s>>>10&31,n[i++]=s>>>15&31,n[i++]=s>>>20&31,n[i++]=s>>>25&31,n[i++]=31&(s>>>30|(7&o)<<2),n[i++]=o>>>3&31,n[i++]=o>>>8&31,n[i++]=o>>>13&31,n[i++]=o>>>18&31,n[i++]=o>>>23&31,n[i++]=31&(o>>>28|(1&a)<<4),n[i++]=a>>>1&31,n[i++]=a>>>6&31,n[i++]=a>>>11&31,n[i++]=a>>>16&31,n[i++]=a>>>21&31,n[i++]=a>>>26&31,n[i++]=31&(a>>>31|(15&l)<<1),n[i++]=l>>>4&31,n[i++]=l>>>9&31,n[i++]=l>>>14&31,n[i++]=l>>>19&31,n[i++]=l>>>24&31,n[i++]=31&(l>>>29|(3&u)<<3),n[i++]=u>>>2&31,n[i++]=u>>>7&31,n[i++]=u>>>12&31,n[i++]=u>>>17&31,n[i++]=u>>>22&31,n[i]=u>>>27&31;}(t,e,n,r);case 6:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0;n[i++]=s>>>0&63,n[i++]=s>>>6&63,n[i++]=s>>>12&63,n[i++]=s>>>18&63,n[i++]=s>>>24&63,n[i++]=63&(s>>>30|(15&o)<<2),n[i++]=o>>>4&63,n[i++]=o>>>10&63,n[i++]=o>>>16&63,n[i++]=o>>>22&63,n[i++]=63&(o>>>28|(3&a)<<4),n[i++]=a>>>2&63,n[i++]=a>>>8&63,n[i++]=a>>>14&63,n[i++]=a>>>20&63,n[i++]=a>>>26&63,n[i++]=l>>>0&63,n[i++]=l>>>6&63,n[i++]=l>>>12&63,n[i++]=l>>>18&63,n[i++]=l>>>24&63,n[i++]=63&(l>>>30|(15&u)<<2),n[i++]=u>>>4&63,n[i++]=u>>>10&63,n[i++]=u>>>16&63,n[i++]=u>>>22&63,n[i++]=63&(u>>>28|(3&c)<<4),n[i++]=c>>>2&63,n[i++]=c>>>8&63,n[i++]=c>>>14&63,n[i++]=c>>>20&63,n[i]=c>>>26&63;}(t,e,n,r);case 7:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0;n[i++]=s>>>0&127,n[i++]=s>>>7&127,n[i++]=s>>>14&127,n[i++]=s>>>21&127,n[i++]=127&(s>>>28|(7&o)<<4),n[i++]=o>>>3&127,n[i++]=o>>>10&127,n[i++]=o>>>17&127,n[i++]=o>>>24&127,n[i++]=127&(o>>>31|(63&a)<<1),n[i++]=a>>>6&127,n[i++]=a>>>13&127,n[i++]=a>>>20&127,n[i++]=127&(a>>>27|(3&l)<<5),n[i++]=l>>>2&127,n[i++]=l>>>9&127,n[i++]=l>>>16&127,n[i++]=l>>>23&127,n[i++]=127&(l>>>30|(31&u)<<2),n[i++]=u>>>5&127,n[i++]=u>>>12&127,n[i++]=u>>>19&127,n[i++]=127&(u>>>26|(1&c)<<6),n[i++]=c>>>1&127,n[i++]=c>>>8&127,n[i++]=c>>>15&127,n[i++]=c>>>22&127,n[i++]=127&(c>>>29|(15&h)<<3),n[i++]=h>>>4&127,n[i++]=h>>>11&127,n[i++]=h>>>18&127,n[i]=h>>>25&127;}(t,e,n,r);case 8:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0;n[i++]=s>>>0&255,n[i++]=s>>>8&255,n[i++]=s>>>16&255,n[i++]=s>>>24&255,n[i++]=o>>>0&255,n[i++]=o>>>8&255,n[i++]=o>>>16&255,n[i++]=o>>>24&255,n[i++]=a>>>0&255,n[i++]=a>>>8&255,n[i++]=a>>>16&255,n[i++]=a>>>24&255,n[i++]=l>>>0&255,n[i++]=l>>>8&255,n[i++]=l>>>16&255,n[i++]=l>>>24&255,n[i++]=u>>>0&255,n[i++]=u>>>8&255,n[i++]=u>>>16&255,n[i++]=u>>>24&255,n[i++]=c>>>0&255,n[i++]=c>>>8&255,n[i++]=c>>>16&255,n[i++]=c>>>24&255,n[i++]=h>>>0&255,n[i++]=h>>>8&255,n[i++]=h>>>16&255,n[i++]=h>>>24&255,n[i++]=p>>>0&255,n[i++]=p>>>8&255,n[i++]=p>>>16&255,n[i]=p>>>24&255;}(t,e,n,r);case 9:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0,f=t[e+8]>>>0;n[i++]=s>>>0&511,n[i++]=s>>>9&511,n[i++]=s>>>18&511,n[i++]=511&(s>>>27|(15&o)<<5),n[i++]=o>>>4&511,n[i++]=o>>>13&511,n[i++]=o>>>22&511,n[i++]=511&(o>>>31|(255&a)<<1),n[i++]=a>>>8&511,n[i++]=a>>>17&511,n[i++]=511&(a>>>26|(7&l)<<6),n[i++]=l>>>3&511,n[i++]=l>>>12&511,n[i++]=l>>>21&511,n[i++]=511&(l>>>30|(127&u)<<2),n[i++]=u>>>7&511,n[i++]=u>>>16&511,n[i++]=511&(u>>>25|(3&c)<<7),n[i++]=c>>>2&511,n[i++]=c>>>11&511,n[i++]=c>>>20&511,n[i++]=511&(c>>>29|(63&h)<<3),n[i++]=h>>>6&511,n[i++]=h>>>15&511,n[i++]=511&(h>>>24|(1&p)<<8),n[i++]=p>>>1&511,n[i++]=p>>>10&511,n[i++]=p>>>19&511,n[i++]=511&(p>>>28|(31&f)<<4),n[i++]=f>>>5&511,n[i++]=f>>>14&511,n[i]=f>>>23&511;}(t,e,n,r);case 10:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0,f=t[e+8]>>>0,d=t[e+9]>>>0;n[i++]=s>>>0&1023,n[i++]=s>>>10&1023,n[i++]=s>>>20&1023,n[i++]=1023&(s>>>30|(255&o)<<2),n[i++]=o>>>8&1023,n[i++]=o>>>18&1023,n[i++]=1023&(o>>>28|(63&a)<<4),n[i++]=a>>>6&1023,n[i++]=a>>>16&1023,n[i++]=1023&(a>>>26|(15&l)<<6),n[i++]=l>>>4&1023,n[i++]=l>>>14&1023,n[i++]=1023&(l>>>24|(3&u)<<8),n[i++]=u>>>2&1023,n[i++]=u>>>12&1023,n[i++]=u>>>22&1023,n[i++]=c>>>0&1023,n[i++]=c>>>10&1023,n[i++]=c>>>20&1023,n[i++]=1023&(c>>>30|(255&h)<<2),n[i++]=h>>>8&1023,n[i++]=h>>>18&1023,n[i++]=1023&(h>>>28|(63&p)<<4),n[i++]=p>>>6&1023,n[i++]=p>>>16&1023,n[i++]=1023&(p>>>26|(15&f)<<6),n[i++]=f>>>4&1023,n[i++]=f>>>14&1023,n[i++]=1023&(f>>>24|(3&d)<<8),n[i++]=d>>>2&1023,n[i++]=d>>>12&1023,n[i]=d>>>22&1023;}(t,e,n,r);case 11:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0,f=t[e+8]>>>0,d=t[e+9]>>>0,y=t[e+10]>>>0;n[i++]=s>>>0&2047,n[i++]=s>>>11&2047,n[i++]=2047&(s>>>22|(1&o)<<10),n[i++]=o>>>1&2047,n[i++]=o>>>12&2047,n[i++]=2047&(o>>>23|(3&a)<<9),n[i++]=a>>>2&2047,n[i++]=a>>>13&2047,n[i++]=2047&(a>>>24|(7&l)<<8),n[i++]=l>>>3&2047,n[i++]=l>>>14&2047,n[i++]=2047&(l>>>25|(15&u)<<7),n[i++]=u>>>4&2047,n[i++]=u>>>15&2047,n[i++]=2047&(u>>>26|(31&c)<<6),n[i++]=c>>>5&2047,n[i++]=c>>>16&2047,n[i++]=2047&(c>>>27|(63&h)<<5),n[i++]=h>>>6&2047,n[i++]=h>>>17&2047,n[i++]=2047&(h>>>28|(127&p)<<4),n[i++]=p>>>7&2047,n[i++]=p>>>18&2047,n[i++]=2047&(p>>>29|(255&f)<<3),n[i++]=f>>>8&2047,n[i++]=f>>>19&2047,n[i++]=2047&(f>>>30|(511&d)<<2),n[i++]=d>>>9&2047,n[i++]=d>>>20&2047,n[i++]=2047&(d>>>31|(1023&y)<<1),n[i++]=y>>>10&2047,n[i]=y>>>21&2047;}(t,e,n,r);case 12:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0,f=t[e+8]>>>0,d=t[e+9]>>>0,y=t[e+10]>>>0,m=t[e+11]>>>0;n[i++]=s>>>0&4095,n[i++]=s>>>12&4095,n[i++]=4095&(s>>>24|(15&o)<<8),n[i++]=o>>>4&4095,n[i++]=o>>>16&4095,n[i++]=4095&(o>>>28|(255&a)<<4),n[i++]=a>>>8&4095,n[i++]=a>>>20&4095,n[i++]=l>>>0&4095,n[i++]=l>>>12&4095,n[i++]=4095&(l>>>24|(15&u)<<8),n[i++]=u>>>4&4095,n[i++]=u>>>16&4095,n[i++]=4095&(u>>>28|(255&c)<<4),n[i++]=c>>>8&4095,n[i++]=c>>>20&4095,n[i++]=h>>>0&4095,n[i++]=h>>>12&4095,n[i++]=4095&(h>>>24|(15&p)<<8),n[i++]=p>>>4&4095,n[i++]=p>>>16&4095,n[i++]=4095&(p>>>28|(255&f)<<4),n[i++]=f>>>8&4095,n[i++]=f>>>20&4095,n[i++]=d>>>0&4095,n[i++]=d>>>12&4095,n[i++]=4095&(d>>>24|(15&y)<<8),n[i++]=y>>>4&4095,n[i++]=y>>>16&4095,n[i++]=4095&(y>>>28|(255&m)<<4),n[i++]=m>>>8&4095,n[i]=m>>>20&4095;}(t,e,n,r);case 16:return void function(t,e,n,r){let i=r;const s=t[e]>>>0,o=t[e+1]>>>0,a=t[e+2]>>>0,l=t[e+3]>>>0,u=t[e+4]>>>0,c=t[e+5]>>>0,h=t[e+6]>>>0,p=t[e+7]>>>0,f=t[e+8]>>>0,d=t[e+9]>>>0,y=t[e+10]>>>0,m=t[e+11]>>>0,g=t[e+12]>>>0,x=t[e+13]>>>0,v=t[e+14]>>>0,b=t[e+15]>>>0;n[i++]=s>>>0&65535,n[i++]=s>>>16&65535,n[i++]=o>>>0&65535,n[i++]=o>>>16&65535,n[i++]=a>>>0&65535,n[i++]=a>>>16&65535,n[i++]=l>>>0&65535,n[i++]=l>>>16&65535,n[i++]=u>>>0&65535,n[i++]=u>>>16&65535,n[i++]=c>>>0&65535,n[i++]=c>>>16&65535,n[i++]=h>>>0&65535,n[i++]=h>>>16&65535,n[i++]=p>>>0&65535,n[i++]=p>>>16&65535,n[i++]=f>>>0&65535,n[i++]=f>>>16&65535,n[i++]=d>>>0&65535,n[i++]=d>>>16&65535,n[i++]=y>>>0&65535,n[i++]=y>>>16&65535,n[i++]=m>>>0&65535,n[i++]=m>>>16&65535,n[i++]=g>>>0&65535,n[i++]=g>>>16&65535,n[i++]=x>>>0&65535,n[i++]=x>>>16&65535,n[i++]=v>>>0&65535,n[i++]=v>>>16&65535,n[i++]=b>>>0&65535,n[i]=b>>>16&65535;}(t,e,n,r);case 32:for(let i=0;i<32;i=i+1|0)n[r+i|0]=0|t[e+i|0];return}const s=mf[i]>>>0;let o=e,a=0,l=t[o]>>>0;for(let e=0;e<32;e++)if(a+i<=32)n[r+e]=l>>>a&s,a+=i,32===a&&(a=0,o++,31!==e&&(l=t[o]>>>0));else {const u=32-a,c=l>>>a;o++,l=t[o]>>>0,n[r+e]=(c|(l&mf[i-u]>>>0)<=64)throw new Error("Varint too long")}return e.set(i),n}function Pf(t,e){let n,r;return r=t[e.get()],e.increment(),n=127&r,r<128?n:(r=t[e.get()],e.increment(),n|=(127&r)<<7,r<128?n:(r=t[e.get()],e.increment(),n|=(127&r)<<14,r<128?n:(r=t[e.get()],e.increment(),n|=(127&r)<<21,r<128?n:(r=t[e.get()],n|=(15&r)<<28,function(t,e,n){let r,i;if(i=e[n.get()],n.increment(),r=(112&i)>>4,i<128)return 4294967296*r+(t>>>0);if(i=e[n.get()],n.increment(),r|=(127&i)<<3,i<128)return 4294967296*r+(t>>>0);if(i=e[n.get()],n.increment(),r|=(127&i)<<10,i<128)return 4294967296*r+(t>>>0);if(i=e[n.get()],n.increment(),r|=(127&i)<<17,i<128)return 4294967296*r+(t>>>0);if(i=e[n.get()],n.increment(),r|=(127&i)<<24,i<128)return 4294967296*r+(t>>>0);if(i=e[n.get()],n.increment(),r|=(1&i)<<31,i<128)return 4294967296*r+(t>>>0);throw new Error("Expected varint not more than 10 bytes")}(n,t,e)))))}function Df(t){return t>>>1^-(1&t)}function zf(t){return t>>1n^-(1n&t)}function Bf(t){return t%2==1?(t+1)/-2:t/2}function Cf(t,e,n){if(void 0===n){n=0;for(let r=0;r=4)for(;r=4)for(;r=4)for(let r=t[0];n>4];let i=null;switch(r){case Nf.DATA:i={dictionaryType:Object.values(Uf)[15&n]};break;case Nf.OFFSET:i={offsetType:Object.values(jf)[15&n]};break;case Nf.LENGTH:i={lengthType:Object.values(qf)[15&n]};}e.increment();const s=t[e.get()],o=Object.values(ff)[s>>5],a=Object.values(ff)[s>>2&7],l=Object.values(df)[3&s];e.increment();const u=Ef(t,e,2),c=u[0];return {physicalStreamType:r,logicalStreamType:i,logicalLevelTechnique1:o,logicalLevelTechnique2:a,physicalLevelTechnique:l,numValues:c,byteLength:u[1],decompressedCount:c}}(t,e);return n.logicalLevelTechnique1===ff.MORTON?function(t,e,n){const r=Ef(e,n,2);return {physicalStreamType:t.physicalStreamType,logicalStreamType:t.logicalStreamType,logicalLevelTechnique1:t.logicalLevelTechnique1,logicalLevelTechnique2:t.logicalLevelTechnique2,physicalLevelTechnique:t.physicalLevelTechnique,numValues:t.numValues,byteLength:t.byteLength,decompressedCount:t.decompressedCount,numBits:r[0],coordinateShift:r[1]}}(n,t,e):ff.RLE!==n.logicalLevelTechnique1&&ff.RLE!==n.logicalLevelTechnique2||df.NONE===n.physicalLevelTechnique?n:function(t,e,n){const r=Ef(e,n,2);return {physicalStreamType:t.physicalStreamType,logicalStreamType:t.logicalStreamType,logicalLevelTechnique1:t.logicalLevelTechnique1,logicalLevelTechnique2:t.logicalLevelTechnique2,physicalLevelTechnique:t.physicalLevelTechnique,numValues:t.numValues,byteLength:t.byteLength,decompressedCount:r[1],runs:r[0],numRleValues:r[1]}}(n,t,e)}!function(t){t.PRESENT="PRESENT",t.DATA="DATA",t.OFFSET="OFFSET",t.LENGTH="LENGTH";}(Nf||(Nf={})),function(t){t.NONE="NONE",t.SINGLE="SINGLE",t.SHARED="SHARED",t.VERTEX="VERTEX",t.MORTON="MORTON",t.FSST="FSST";}(Uf||(Uf={})),function(t){t.VERTEX="VERTEX",t.INDEX="INDEX",t.STRING="STRING",t.KEY="KEY";}(jf||(jf={})),function(t){t.VAR_BINARY="VAR_BINARY",t.GEOMETRIES="GEOMETRIES",t.PARTS="PARTS",t.RINGS="RINGS",t.TRIANGLES="TRIANGLES",t.SYMBOL="SYMBOL",t.DICTIONARY="DICTIONARY";}(qf||(qf={})),function(t){t[t.FLAT=0]="FLAT",t[t.CONST=1]="CONST",t[t.SEQUENCE=2]="SEQUENCE",t[t.DICTIONARY=3]="DICTIONARY",t[t.FSST_DICTIONARY=4]="FSST_DICTIONARY";}(Gf||(Gf={}));class Wf{constructor(t,e){this.values=t,this._size=e;}get(t){const e=Math.floor(t/8);return 1==(this.values[e]>>t%8&1)}set(t,e){const n=Math.floor(t/8);this.values[n]=this.values[n]|(e?1:0)<>t%8&1}size(){return this._size}getBuffer(){return this.values}}function Kf(t,e,n){if(!e)return t;const r=e.size(),i=new(0,t.constructor)(r);let s=0;for(let o=0;o=4)for(;r>>0;for(let n=1;n>>0;return e}(e.logicalLevelTechnique2===ff.RLE?Cf(t,e.runs,e.numRleValues):t);break;case ff.RLE:i=Cf(t,e.runs,e.numRleValues);break;case ff.MORTON:Rf(t),i=t;break;case ff.COMPONENTWISE_DELTA:i=function(t){if(t.length<2)return new Uint32Array(t);const e=new Uint32Array(t.length);e[0]=Df(t[0])>>>0,e[1]=Df(t[1])>>>0;for(let n=2;n>>0,e[n+1]=e[n-1]+Df(t[n+1])>>>0;return e}(t);break;case ff.NONE:i=t;break;default:throw new Error(`The specified Logical level technique is not supported: ${e.logicalLevelTechnique1}`)}return r?Kf(i,r,0):i}(ed(t,e,n),n,0,i)}function td(t,e,n){return function(t,e){if(e.logicalLevelTechnique1===ff.DELTA&&e.logicalLevelTechnique2===ff.NONE)return function(t){const e=new Int32Array(t.length+1);e[0]=0,e[1]=Df(t[0]);let n=e[1];for(let r=2;r!==e.length;++r)n+=Df(t[r-1]),e[r]=e[r-1]+n;return new Uint32Array(e)}(t);if(e.logicalLevelTechnique1===ff.RLE&&e.logicalLevelTechnique2===ff.NONE)return function(t,e,n){const r=new Uint32Array(n+1);r[0]=0;let i=1,s=r[0];for(let n=0;n>>2,a=function(t,e){if(e<=t.encodedWords.length)return t.encodedWords;const n=new Uint32Array(Math.max(16,2*e));return t.encodedWords=n,n}(i,o);!function(t,e,n,r){if(e<0||n<0||e+n>t.length)throw new RangeError(`decodeBigEndianInt32sInto: out of bounds (offset=${e}, byteLength=${n}, bytes.length=${t.length})`);const i=Math.floor(n/4),s=n%4!=0,o=s?i+1:i;if(r.length0){const n=t.byteOffset+e;if(3&n)for(let n=0;n0){const e=0|t[r];if(r=r+1|0,255&e)throw new Error(`FastPFOR decode: invalid alignedLength=${e} (expected multiple of 256)`);if(i+e>s.length)throw new Error(`FastPFOR decode: output buffer too small (outPos=${i}, alignedLength=${e}, out.length=${s.length})`);r=function(t,e,n,r,i,s){const o=r+xf(i,gf);let a=r,l=n;for(;a!==o;){const n=Math.min(bf,o-a);l=kf(t,e,l,a,n,s),a=a+n|0;}return l}(t,s,r,i,e,o),i=i+e|0;}return function(t,e,n,r,i,s){if(0===s)return e;let o=0,a=e;const l=e+n,u=i;let c=i;const h=i+s;let p=0,f=0;for(;a>>o&255;if(o+=8,a+=o>>>5,o&=31,p|=(127&e)<28)throw new Error(`FastPFOR VByte: unterminated value (expected MSB=1 terminator within 5 bytes; shift=${f}, partial=${p}, decoded=${c-u}/${s}, inPos=${a}, inEnd=${l})`)}if(c!==h)throw new Error(`FastPFOR VByte: truncated stream (decoded=${c-u}, expected=${s}, consumedWords=${a-e}/${n}, vbyteStart=${e}, vbyteEnd=${l})`)}(t,r,t.length-r|0,s,i,e-i|0),s}(a.subarray(0,o),e,i.decoderWorkspace);return r.add(n),l}(t,e,n,r,function(t=16){if(t<0)throw new RangeError(`initialEncodedWordCapacity must be >= 0, got ${t}`);const e=Math.max(16,0|t);return {encodedWords:new Uint32Array(e),decoderWorkspace:_f()}}(n>>>2))}(t,n.numValues,n.byteLength,e);case df.VARINT:return Ef(t,e,n.numValues);case df.NONE:{const r=e.get();e.add(n.byteLength);const i=t.subarray(r,e.get());return new Uint32Array(i)}default:throw new Error(`Specified physicalLevelTechnique ${r} is not supported (yet).`)}}function nd(t,e,n){const r=ed(t,e,n);return 1===r.length?r[0]:function(t){return t[1]}(r)}function rd(t,e,n){return function(t){if(2===t.length){const e=Df(t[1]);return [e,e]}return [Df(t[2]),Df(t[3])]}(ed(t,e,n))}function id(t,e,n){return function(t){if(2===t.length){const e=zf(t[1]);return [e,e]}return [zf(t[2]),zf(t[3])]}(Tf(t,e,n.numValues))}function sd(t,e,n,r){return function(t,e,n){let r;switch(e.logicalLevelTechnique1){case ff.DELTA:r=function(t){const e=new BigUint64Array(t.length);e[0]=BigInt.asUintN(64,zf(t[0]));for(let n=1;n>1,e)-n}}function hd(t,e){let n=0;for(let r=0;r>r;return n}function pd(t,e,r,i,s,o,a){return t===Zf.MORTON?function(t,e,r,i,s,o){const a=new Array(s?i+1:i);for(let s=0;s[t])),r+=t,i+=t;}break;case Xf.LINESTRING:{let n,c;m?(n=f[i]-f[i-1],i++):n=p[r]-p[r-1],r++,y?(c=fd(g,a,n,!1),a+=2*n):(c=pd(t.vertexBufferType,g,d,l,n,!1,u),l+=n),e[o++]=[c],h&&s++;}break;case Xf.POLYGON:{const n=p[r]-p[r-1];r++;const c=new Array(n-1);let m,x=f[i]-f[i-1];if(i++,y){m=fd(g,a,x,!0),a+=2*x;for(let t=0;t0&&e.push(e[0]),h.push(e);}t[e]=h,s&&u++;}break;case Xf.MULTIPOLYGON:{const c=s[u]-s[u-1];u++;const h=[];for(let t=0;t0&&e.push(e[0]),h.push(e);}}t[e]=h;}}return t}[Symbol.iterator](){return null}}function xd(t,e,n,r,i,s){return new vd(t,e,n,r,i,s)}class vd extends gd{constructor(t,e,n,r,i,s){super(n,r,i,s),this._numGeometries=t,this._geometryType=e;}geometryType(t){return this._geometryType}get numGeometries(){return this._numGeometries}containsSingleGeometryType(){return !0}}function bd(t,e,n,r,i){return new wd(t,e,n,r,i)}class wd extends gd{constructor(t,e,n,r,i){super(e,n,r,i),this._geometryTypes=t;}geometryType(t){return this._geometryTypes[t]}get numGeometries(){return this._geometryTypes.length}containsSingleGeometryType(){return !1}}function _d(t,e,n,r,i){const s=Hf(t,n);let o,a,l,u;if(ad(s,r,t,n)===Gf.CONST){const i=nd(t,n,s);let c,h,p,f;for(let r=0;rn?e[s++]:1);return r}function Ad(t,e,n,r){const i=new Uint32Array(e[e.length-1]+1);let s=0;i[0]=s;let o=1,a=0;for(let l=0;l=o);){const n=t[r.increment()];if(n<=127){const o=n+3,a=t[r.increment()],l=Math.min(s+o,e);i.fill(a,s,l),s=l;}else {const o=256-n;for(let n=0;n=12?Td.decode(t.subarray(e,n)):function(t,e,n){let r="",i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+u>n)break;1===u?e<128&&(l=e):2===u?(s=t[i+1],128==(192&s)&&(l=(31&e)<<6|63&s,l<=127&&(l=null))):3===u?(s=t[i+1],o=t[i+2],128==(192&s)&&128==(192&o)&&(l=(15&e)<<12|(63&s)<<6|63&o,(l<=2047||l>=55296&&l<=57343)&&(l=null))):4===u&&(s=t[i+1],o=t[i+2],a=t[i+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&e)<<18|(63&s)<<12|(63&o)<<6|63&a,(l<=65535||l>=1114112)&&(l=null))),null===l?(l=65533,u=1):l>65535&&(l-=65536,r+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),r+=String.fromCharCode(l),i+=u;}return r}(t,e,n)}class Pd extends rf{constructor(t,e,n,r){super(t,n,r),this.offsetBuffer=e;}}class Dd extends Pd{constructor(t,e,n,r){super(t,e,n,r??e.length-1);}getValueFromBuffer(t){return Fd(this.dataBuffer,this.offsetBuffer[t],this.offsetBuffer[t+1])}}class zd extends Pd{constructor(t,e,n,r,i){super(t,n,r,i??e.length),this.indexBuffer=e,this.indexBuffer=e;}getValueFromBuffer(t){const e=this.indexBuffer[t];return Fd(this.dataBuffer,this.offsetBuffer[e],this.offsetBuffer[e+1])}}class Bd extends Pd{constructor(t,e,n,r,i,s,o){super(t,n,r,o),this.indexBuffer=e,this.symbolOffsetBuffer=i,this.symbolTableBuffer=s;}getValueFromBuffer(t){null==this.decodedDictionary&&(null==this.symbolLengthBuffer&&(this.symbolLengthBuffer=this.offsetToLengthBuffer(this.symbolOffsetBuffer)),this.decodedDictionary=function(t,e,n){const r=[],i=new Array(e.length).fill(0);for(let t=1;t=10}function $d(t){return 30===t}function Rd(t){if("scalarType"===t.type){const e=t.scalarType;if("physicalType"===e.type)switch(e.physicalType){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:default:return !1;case 9:return !0}if("logicalType"===e.type)return !1}else if("complexType"===t.type){const e=t.complexType;if("physicalType"===e.type)switch(e.physicalType){case 0:case 1:return !0;default:return !1}}return console.warn("Unexpected column type in hasStreamCount",t),!1}function Nd(t){return "complexType"===t.type&&"physicalType"===t.complexType?.type&&0===t.complexType.physicalType}const Ud=new TextDecoder;function jd(t,e){const n=Ef(t,e,1)[0];if(0===n)return "";const r=e.get(),i=t.subarray(r,r+n);return e.add(n),Ud.decode(i)}function qd(t,e){const n=Ef(t,e,1)[0]>>>0;if(n<10||n>30)throw new Error(`Unsupported field type code ${n}. Supported: 10-29(scalars), 30(STRUCT)`);const r=Ld(n);if(Od(n)&&(r.name=jd(t,e)),$d(n)){const n=Ef(t,e,1)[0]>>>0;r.complexType.children=new Array(n);for(let i=0;i>>0,r=Ld(n);if(!r)throw new Error(`Unsupported column type code ${n}. Supported: 0-3(ID), 4(GEOMETRY), 10-29(scalars), 30(STRUCT)`);if(Od(n)?r.name=jd(t,e):n>=0&&n<=3?r.name="id":4===n&&(r.name="geometry"),$d(n)){const n=Ef(t,e,1)[0]>>>0,i=r.complexType;i.children=new Array(n);for(let r=0;r>>0,s=Ef(t,e,1)[0]>>>0;r.columns=new Array(s);for(let n=0;n=4)for(;n>>0,o=r.get()+e;if(o>t.length)throw new Error(`Block overruns tile: ${o} > ${t.length}`);if(1!=Ef(t,r,1)[0]>>>0){r.set(o);continue}const[a,l]=Xd(t,r),u=a.featureTables[0];let c=null,h=null;const p=[];let f=0;for(const e of u.columns){const i=e.name;if("scalarType"===(s=e).type&&"logicalType"===s.scalarType?.type&&0===s.scalarType.logicalType){let s=null;if(e.nullable){const e=Hf(t,r),n=r.get(),i=Ed(t,e.numValues,e.byteLength,r);r.set(n+e.byteLength),s=new Wf(i,e.numValues);}const o=Hf(t,r);f=s?s.size():o.decompressedCount,c=Yd(t,e,r,i,o,s??f,n);}else if(Nd(e)){const e=Ef(t,r,1)[0];if(0===f){const e=r.get();f=Hf(t,r).decompressedCount,r.set(e);}h=_d(t,e,r,f);}else {const n=Rd(e)?Ef(t,r,1)[0]:1;if(0===n)continue;const i=Cd(t,r,e,n,f);if(i)if(Array.isArray(i))for(const t of i)p.push(t);else p.push(i);}}const d=new hf(u.name,h,c,p,l);i.push(d),r.set(o);}var s;return i}(new Uint8Array(t));this.layers=e.reduce(((t,e)=>Object.assign(Object.assign({},t),{[e.name]:new Hd(e)})),{});}}class Kd{constructor(t,e){this.feature=t,this.type=t.type,this.properties=t.tags?t.tags:{},this.extent=e,"id"in t&&("string"==typeof t.id?this.id=parseInt(t.id,10):"number"!=typeof t.id||isNaN(t.id)||(this.id=t.id));}loadGeometry(){const t=[],e=1===this.feature.type?[this.feature.geometry]:this.feature.geometry;for(const r of e){const e=[];for(const t of r)e.push(new n(t[0],t[1]));t.push(e);}return t}}const Jd="_geojsonTileLayer";function Qd(t,e,n=""){e.writeVarintField(15,t.version||1),e.writeStringField(1,t.name||""),e.writeVarintField(5,t.extent||4096);const r={jsonPrefix:n,keys:[],values:[],keycache:{},valuecache:{}};for(let n=0;n>31}function iy(t,e){const n=t.loadGeometry(),r=t.type;let i=0,s=0;for(const o of n){let n=1;1===r&&(n=o.length),e.writeVarint(ny(1,n));const a=3===r?o.length-1:o.length;for(let t=0;t=0&&e[3]>=0&&a.insert(o,e[0],e[1],e[2],e[3]);}}loadVTLayers(){return this.vtLayers||(this.vtLayers="mlt"!==this.encoding?new Nu(new Rh(this.rawTileData)).layers:new Wd(this.rawTileData).layers,this.sourceLayerCoder=new ef(this.vtLayers?Object.keys(this.vtLayers).sort():[Jd])),this.vtLayers}query(t,e,r,i){this.loadVTLayers();const s=t.params,o=T/t.tileSize/t.scale,a=yi(s.filter,s.globalState),l=t.queryGeometry,u=t.queryPadding*o,c=tf.fromPoints(l),h=this.grid.query(c.minX-u,c.minY-u,c.maxX+u,c.maxY+u),p=tf.fromPoints(t.cameraQueryGeometry).expandBy(u),f=this.grid3D.query(p.minX,p.minY,p.maxX,p.maxY,((e,r,i,s)=>function(t,e,r,i,s){for(const n of t)if(e<=n.x&&r<=n.y&&i>=n.x&&s>=n.y)return !0;const o=[new n(e,r),new n(e,s),new n(i,s),new n(i,r)];if(t.length>2)for(const e of o)if(il(t,e))return !0;for(let e=0;e(c||(c=qa(e)),n.queryIntersectsFeature({queryGeometry:l,feature:e,featureState:r,geometry:c,zoom:this.z,transform:t.transform,pixelsToTileUnits:o,pixelPosMatrix:t.pixelPosMatrix,unwrappedTileID:this.tileID.toUnwrapped(),getElevation:t.getElevation}))));}return d}loadMatchingFeature(t,e,n,r,i,s,o,a,l,u,c){const h=this.bucketLayerIDs[e];if(s&&!h.some((t=>s.has(t))))return;const p=this.sourceLayerCoder.decode(n),f=this.vtLayers[p].feature(r);if(i.needGeometry){const t=Ga(f,!0);if(!i.filter(new Cs(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!i.filter(new Cs(this.tileID.overscaledZ),f))return;const d=this.getId(f,p);for(const e of h){if(s&&!s.has(e))continue;const n=a[e];if(!n)continue;let i={};d&&u&&(i=u.getState(n.sourceLayer||Jd,d));const h=$({},l[e]);h.paint=ay(h.paint,n.paint,f,i,o),h.layout=ay(h.layout,n.layout,f,i,o);const p=!c||c(f,n,i);if(!p)continue;const y=new nf(f,this.z,this.x,this.y,d);y.layer=h;let m=t[e];void 0===m&&(m=t[e]=[]),m.push({featureIndex:r,feature:y,intersectionZ:p});}}lookupSymbolFeatures(t,e,n,r,i,s,o,a){const l={};this.loadVTLayers();const u=yi(i.filterSpec,i.globalState);for(const i of t)this.loadMatchingFeature(l,n,r,i,u,s,o,a,e);return l}hasLayer(t){for(const e of this.bucketLayerIDs)for(const n of e)if(t===n)return !0;return !1}getId(t,e){var n;let r=t.id;return this.promoteId&&(r=t.properties["string"==typeof this.promoteId?this.promoteId:this.promoteId[e]],"boolean"==typeof r&&(r=Number(r)),void 0===r&&(null===(n=t.properties)||void 0===n?void 0:n.cluster)&&this.promoteId&&(r=Number(t.properties.cluster_id))),r}}function ay(t,e,n,r,i){return N(t,((t,s)=>{const o=e instanceof Gs?e.get(s):null;return (null==o?void 0:o.evaluate)?o.evaluate(n,r,i):o}))}function ly(t,e){return e-t}function uy(t,e,r,i,s){const o=[];for(const a of t){let t;for(let l=0;l=i&&c.x>=i||(u.x>=i?u=new n(i,u.y+(i-u.x)/(c.x-u.x)*(c.y-u.y))._round():c.x>=i&&(c=new n(i,u.y+(i-u.x)/(c.x-u.x)*(c.y-u.y))._round()),u.y>=s&&c.y>=s||(u.y>=s?u=new n(u.x+(s-u.y)/(c.y-u.y)*(c.x-u.x),s)._round():c.y>=s&&(c=new n(u.x+(s-u.y)/(c.y-u.y)*(c.x-u.x),s)._round()),t&&u.equals(t[t.length-1])||(t=[u],o.push(t)),t.push(c)))));}}return o}function cy(t,e,n,r,i){switch(e){case 1:return function(t,e,n,r){const i=[];for(const s of t)for(const t of s){const s=0===r?t.x:t.y;s>=e&&s<=n&&i.push([t]);}return i}(t,n,r,i);case 2:return py(t,n,r,i,!1);case 3:return py(t,n,r,i,!0)}return []}function hy(t,e,r,i,s){const o=0===i?fy:dy;let a=[];const l=[];for(let n=0;ne&&a.push(o(u,c,e)):h>r?p=e&&(a.push(o(u,c,e)),f=!0),p>r&&h<=r&&(a.push(o(u,c,r)),f=!0),!s&&f&&(l.push(a),a=[]);}const u=t.length-1,c=0===i?t[u].x:t[u].y;return c>=e&&c<=r&&a.push(t[u]),s&&a.length>0&&!a[0].equals(a[a.length-1])&&a.push(new n(a[0].x,a[0].y)),a.length>0&&l.push(a),l}function py(t,e,n,r,i){const s=[];for(const o of t){const t=hy(o,e,n,r,i);t.length>0&&s.push(...t);}return s}function fy(t,e,r){return new n(r,t.y+(r-t.x)/(e.x-t.x)*(e.y-t.y))}function dy(t,e,r){return new n(t.x+(r-t.y)/(e.y-t.y)*(e.x-t.x),r)}ds("FeatureIndex",oy,{omit:["rawTileData","sourceLayerCoder"]});class yy extends n{constructor(t,e,n,r){super(t,e),this.angle=n,void 0!==r&&(this.segment=r);}clone(){return new yy(this.x,this.y,this.angle,this.segment)}}function my(t,e,n,r,i){if(void 0===e.segment||0===n)return !0;let s=e,o=e.segment+1,a=0;for(;a>-n/2;){if(o--,o<0)return !1;a-=t[o].dist(s),s=t[o];}a+=t[o].dist(t[o+1]),o++;const l=[];let u=0;for(;ar;)u-=l.shift().angleDelta;if(u>i)return !1;o++,a+=e.dist(n);}return !0}function gy(t){let e=0;for(let n=0;nu){const c=(u-l)/s,h=xn.number(r.x,i.x,c),p=xn.number(r.y,i.y,c),f=new yy(h,p,i.angleTo(r),n);return f._round(),!o||my(t,f,a,o,e)?f:void 0}l+=s;}}function wy(t,e,n,r,i,s,o,a,l){const u=xy(r,s,o),c=vy(r,i),h=c*o,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h=0&&g=0&&x=0&&p+u<=c){const n=new yy(g,x,y,e);n._round(),r&&!my(t,n,s,r,i)||f.push(n);}}h+=d;}return a||f.length||o||(f=_y(t,h/2,n,r,i,s,o,!0,l)),f}function Sy(t,e,r,i){const s=[],o=t.image,a=o.pixelRatio,l=o.paddedRect.w-2,u=o.paddedRect.h-2;let c={x1:t.left,y1:t.top,x2:t.right,y2:t.bottom};const h=o.stretchX||[[0,l]],p=o.stretchY||[[0,u]],f=(t,e)=>t+e[1]-e[0],d=h.reduce(f,0),y=p.reduce(f,0),m=l-d,g=u-y;let x=0,v=d,b=0,w=y,_=0,S=m,A=0,M=g;if(o.content&&i){const e=o.content,n=e[2]-e[0],r=e[3]-e[1];(o.textFitWidth||o.textFitHeight)&&(c=dp(t)),x=Ay(h,0,e[0]),b=Ay(p,0,e[1]),v=Ay(h,e[0],e[2]),w=Ay(p,e[1],e[3]),_=e[0]-x,A=e[1]-b,S=n-v,M=r-w;}const k=c.x1,I=c.y1,E=c.x2-k,T=c.y2-I,F=(t,i,s,l)=>{const u=ky(t.stretch-x,v,E,k),c=Iy(t.fixed-_,S,t.stretch,d),h=ky(i.stretch-b,w,T,I),p=Iy(i.fixed-A,M,i.stretch,y),f=ky(s.stretch-x,v,E,k),m=Iy(s.fixed-_,S,s.stretch,d),g=ky(l.stretch-b,w,T,I),F=Iy(l.fixed-A,M,l.stretch,y),P=new n(u,h),D=new n(f,h),z=new n(f,g),B=new n(u,g),C=new n(c/a,p/a),V=new n(m/a,F/a),L=e*Math.PI/180;if(L){const t=Math.sin(L),e=Math.cos(L),n=[e,-t,t,e];P._matMult(n),D._matMult(n),B._matMult(n),z._matMult(n);}const O=t.stretch+t.fixed,$=i.stretch+i.fixed;return {tl:P,tr:D,bl:B,br:z,tex:{x:o.paddedRect.x+1+O,y:o.paddedRect.y+1+$,w:s.stretch+s.fixed-O,h:l.stretch+l.fixed-$},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:C,pixelOffsetBR:V,minFontScaleX:S/a/E,minFontScaleY:M/a/T,isSDF:r}};if(i&&(o.stretchX||o.stretchY)){const t=My(h,m,d),e=My(p,g,y);for(let n=0;n0&&(r=Math.max(10,r),this.circleDiameter=r);}else {const u=(null===(h=o.image)||void 0===h?void 0:h.content)&&(o.image.textFitWidth||o.image.textFitHeight)?dp(o):{x1:o.left,y1:o.top,x2:o.right,y2:o.bottom};u.y1=u.y1*a-l[0],u.y2=u.y2*a+l[2],u.x1=u.x1*a-l[3],u.x2=u.x2*a+l[1];const p=o.collisionPadding;if(p&&(u.x1-=p[0]*a,u.y1-=p[1]*a,u.x2+=p[2]*a,u.y2+=p[3]*a),c){const t=new n(u.x1,u.y1),e=new n(u.x2,u.y1),r=new n(u.x1,u.y2),i=new n(u.x2,u.y2),s=c*Math.PI/180;t._rotate(s),e._rotate(s),r._rotate(s),i._rotate(s),u.x1=Math.min(t.x,e.x,r.x,i.x),u.x2=Math.max(t.x,e.x,r.x,i.x),u.y1=Math.min(t.y,e.y,r.y,i.y),u.y2=Math.max(t.y,e.y,r.y,i.y);}t.emplaceBack(e.x,e.y,u.x1,u.y1,u.x2,u.y2,r,i,s);}this.boxEndIndex=t.length;}}class Ty{constructor(t=[],e=(t,e)=>te?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this._up(this.length++);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return --this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:n}=this,r=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(n(r,s)>=0)break;e[t]=s,t=i;}e[t]=r;}_down(t){const{data:e,compare:n}=this,r=this.length>>1,i=e[t];for(;t=0)break;e[t]=e[r],t=r;}e[t]=i;}}function Fy(t,e=1){const r=tf.fromPoints(t[0]),i=Math.min(r.width(),r.height());let s=i/2;const o=new Ty([],Py),{minX:a,minY:l,maxX:u,maxY:c}=r;if(0===i)return new n(a,l);for(let e=a;ep.d||!p.d)&&(p=n),n.max-p.d<=e||(s=n.h/2,o.push(new Dy(n.p.x-s,n.p.y-s,s,t)),o.push(new Dy(n.p.x+s,n.p.y-s,s,t)),o.push(new Dy(n.p.x-s,n.p.y+s,s,t)),o.push(new Dy(n.p.x+s,n.p.y+s,s,t)));}return h.d>0&&p.d-h.d<=e?h.p:p.p}function Py(t,e){return e.max-t.max}class Dy{constructor(t,e,r,i){this.p=new n(t,e),this.h=r,this.d=function(t,e){let n=!1,r=1/0;for(const i of e)for(let e=0,s=i.length,o=s-1;et.y!=a.y>t.y&&t.x<(a.x-s.x)*(t.y-s.y)/(a.y-s.y)+s.x&&(n=!n),r=Math.min(r,nl(t,s,a));}return (n?1:-1)*Math.sqrt(r)}(this.p,i),this.max=this.d+this.h*Math.SQRT2;}}var zy;t.aM=void 0,(zy=t.aM||(t.aM={}))[zy.center=1]="center",zy[zy.left=2]="left",zy[zy.right=3]="right",zy[zy.top=4]="top",zy[zy.bottom=5]="bottom",zy[zy["top-left"]=6]="top-left",zy[zy["top-right"]=7]="top-right",zy[zy["bottom-left"]=8]="bottom-left",zy[zy["bottom-right"]=9]="bottom-right";const By=Number.POSITIVE_INFINITY;function Cy(t,e){return e[1]!==By?function(t,e,n){let r=0,i=0;switch(e=Math.abs(e),n=Math.abs(n),t){case "top-right":case "top-left":case "top":i=n-7;break;case "bottom-right":case "bottom-left":case "bottom":i=7-n;}switch(t){case "top-right":case "bottom-right":case "right":r=-e;break;case "top-left":case "bottom-left":case "left":r=e;}return [r,i]}(t,e[0],e[1]):function(t,e){let n=0,r=0;e<0&&(e=0);const i=e/Math.SQRT2;switch(t){case "top-right":case "top-left":r=i-7;break;case "bottom-right":case "bottom-left":r=7-i;break;case "bottom":r=7-e;break;case "top":r=e-7;}switch(t){case "top-right":case "bottom-right":n=-i;break;case "top-left":case "bottom-left":n=i;break;case "left":n=e;break;case "right":n=-e;}return [n,r]}(t,e[0])}function Vy(t,e,n){var r;const i=t.layout,s=null===(r=i.get("text-variable-anchor-offset"))||void 0===r?void 0:r.evaluate(e,{},n);if(s){const t=s.values,e=[];for(let n=0;nt*Ih));r.startsWith("top")?i[1]-=7:r.startsWith("bottom")&&(i[1]+=7),e[n+1]=i;}return new $e(e)}const o=i.get("text-variable-anchor");if(o){let r;r=void 0!==t._unevaluatedLayout.getValue("text-radial-offset")?[i.get("text-radial-offset").evaluate(e,{},n)*Ih,By]:i.get("text-offset").evaluate(e,{},n).map((t=>t*Ih));const s=[];for(const t of o)s.push(t,Cy(t,r));return new $e(s)}return null}function Ly(t){switch(t){case "right":case "top-right":case "bottom-right":return "right";case "left":case "top-left":case "bottom-left":return "left"}return "center"}function Oy(e,n,r,i,s,o,a,l,u,c,h,p){let f=o.textMaxSize.evaluate(n,{});void 0===f&&(f=a);const d=e.layers[0].layout,y=d.get("icon-offset").evaluate(n,{},h),m=Ry(r.horizontal),g=a/24,x=e.tilePixelRatio*g,v=e.tilePixelRatio*f/24,b=e.tilePixelRatio*l,w=e.tilePixelRatio*d.get("symbol-spacing"),_=d.get("text-padding")*e.tilePixelRatio,S=function(t,e,n,r=1){const i=t.get("icon-padding").evaluate(e,{},n),s=null==i?void 0:i.values;return [s[0]*r,s[1]*r,s[2]*r,s[3]*r]}(d,n,h,e.tilePixelRatio),A=d.get("text-max-angle")/180*Math.PI,M="viewport"!==d.get("text-rotation-alignment")&&"point"!==d.get("symbol-placement"),k="map"===d.get("icon-rotation-alignment")&&"point"!==d.get("symbol-placement"),I=d.get("symbol-placement"),E=w/2,F=d.get("icon-text-fit");let P;i&&"none"!==F&&(e.allowVerticalPlacement&&r.vertical&&(P=yp(i,r.vertical,F,d.get("icon-text-fit-padding"),y,g)),m&&(i=yp(i,m,F,d.get("icon-text-fit-padding"),y,g)));const D=h?p.line.getGranularityForZoomLevel(h.z):1,z=(l,p)=>{p.x<0||p.x>=T||p.y<0||p.y>=T||function(e,n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,A,M){const k=e.addToLineVertexArray(n,r);let I,E,T,F,P=0,D=0,z=0,B=0,C=-1,V=-1;const L={};let O=ba("");if(e.allowVerticalPlacement&&i.vertical){const t=l.layout.get("text-rotate").evaluate(w,{},A)+90;T=new Ey(u,n,c,h,p,i.vertical,f,d,y,t),a&&(F=new Ey(u,n,c,h,p,a,g,x,y,t));}if(s){const r=l.layout.get("icon-rotate").evaluate(w,{}),i="none"!==l.layout.get("icon-text-fit"),o=Sy(s,r,S,i),f=a?Sy(a,r,S,i):void 0;E=new Ey(u,n,c,h,p,s,g,x,!1,r),P=4*o.length;const d=e.iconSizeData;let y=null;"source"===d.kind?(y=[mp*l.layout.get("icon-size").evaluate(w,{})],y[0]>gp&&G(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):"composite"===d.kind&&(y=[mp*_.compositeIconSizes[0].evaluate(w,{},A),mp*_.compositeIconSizes[1].evaluate(w,{},A)],(y[0]>gp||y[1]>gp)&&G(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),e.addSymbols(e.icon,o,y,b,v,w,t.ax.none,n,k.lineStartIndex,k.lineLength,-1,A),C=e.icon.placedSymbolArray.length-1,f&&(D=4*f.length,e.addSymbols(e.icon,f,y,b,v,w,t.ax.vertical,n,k.lineStartIndex,k.lineLength,-1,A),V=e.icon.placedSymbolArray.length-1);}const $=Object.keys(i.horizontal);for(const r of $){const s=i.horizontal[r];if(!I){O=ba(s.text);const t=l.layout.get("text-rotate").evaluate(w,{},A);I=new Ey(u,n,c,h,p,s,f,d,y,t);}const a=1===s.positionedLines.length;if(z+=$y(e,n,s,o,l,y,w,m,k,i.vertical?t.ax.horizontal:t.ax.horizontalOnly,a?$:[r],L,C,_,A),a)break}i.vertical&&(B+=$y(e,n,i.vertical,o,l,y,w,m,k,t.ax.vertical,["vertical"],L,V,_,A));const R=I?I.boxStartIndex:e.collisionBoxArray.length,N=I?I.boxEndIndex:e.collisionBoxArray.length,U=T?T.boxStartIndex:e.collisionBoxArray.length,j=T?T.boxEndIndex:e.collisionBoxArray.length,q=E?E.boxStartIndex:e.collisionBoxArray.length,X=E?E.boxEndIndex:e.collisionBoxArray.length,Y=F?F.boxStartIndex:e.collisionBoxArray.length,Z=F?F.boxEndIndex:e.collisionBoxArray.length;let H=-1;const W=(t,e)=>(null==t?void 0:t.circleDiameter)?Math.max(t.circleDiameter,e):e;H=W(I,H),H=W(T,H),H=W(E,H),H=W(F,H);const K=H>-1?1:0;K&&(H*=M/Ih),e.glyphOffsetArray.length>=kp.MAX_GLYPHS&&G("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==w.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,w.sortKey);const J=Vy(l,w,A),[Q,tt]=function(e,n){const r=e.length,i=null==n?void 0:n.values;if((null==i?void 0:i.length)>0)for(let n=0;n=0?L.right:-1,L.center>=0?L.center:-1,L.left>=0?L.left:-1,L.vertical||-1,C,V,O,R,N,U,j,q,X,Y,Z,c,z,B,P,D,K,0,f,H,Q,tt);}(e,p,l,r,i,s,P,e.layers[0],e.collisionBoxArray,n.index,n.sourceLayerIndex,e.index,x,[_,_,_,_],M,u,b,S,k,y,n,o,c,h,a);};if("line"===I)for(const t of uy(n.geometry,0,0,T,T)){const n=Su(t,D),s=wy(n,w,A,r.vertical||m,i,24,v,e.overscaling,T);for(const t of s)m&&Ny(e,m.text,E,t)||z(n,t);}else if("line-center"===I){for(const t of n.geometry)if(t.length>1){const e=Su(t,D),n=by(e,A,r.vertical||m,i,24,v);n&&z(e,n);}}else if("Polygon"===n.type)for(const t of rr(n.geometry,0)){const e=Fy(t,16);z(Su(t[0],D,!0),new yy(e.x,e.y,0));}else if("LineString"===n.type)for(const t of n.geometry){const e=Su(t,D);z(e,new yy(e[0].x,e[0].y,0));}else if("Point"===n.type)for(const t of n.geometry)for(const e of t)z([e],new yy(e.x,e.y,0));}function $y(t,e,r,i,s,o,a,l,u,c,h,p,f,d,y){const m=function(t,e,r,i,s,o,a,l){const u=i.layout.get("text-rotate").evaluate(o,{})*Math.PI/180,c=[];for(const t of e.positionedLines)for(const i of t.positionedGlyphs){if(!i.rect)continue;const o=i.rect||{};let h=4,p=!0,f=1,d=0;const y=(s||l)&&i.vertical,m=i.metrics.advance*i.scale/2;if(l&&e.verticalizable&&(d=t.lineOffset/2-(i.imageName?-(Ih-i.metrics.width*i.scale)/2:(i.scale-1)*Ih)),i.imageName){const t=a[i.imageName];p=t.sdf,f=t.pixelRatio,h=1/f;}const g=s?[i.x+m,i.y]:[0,0];let x=s?[0,0]:[i.x+m+r[0],i.y+r[1]-d],v=[0,0];y&&(v=x,x=[0,0]);const b=i.metrics.isDoubleResolution?2:1,w=(i.metrics.left-h)*i.scale-m+x[0],_=(-i.metrics.top-h)*i.scale+x[1],S=w+o.w/b*i.scale/f,A=_+o.h/b*i.scale/f,M=new n(w,_),k=new n(S,_),I=new n(w,A),E=new n(S,A);if(y){const t=new n(-m,m- -17),e=-Math.PI/2,r=12-m,s=new n(22-r,-(i.imageName?r:0)),o=new n(...v);M._rotateAround(e,t)._add(s)._add(o),k._rotateAround(e,t)._add(s)._add(o),I._rotateAround(e,t)._add(s)._add(o),E._rotateAround(e,t)._add(s)._add(o);}if(u){const t=Math.sin(u),e=Math.cos(u),n=[e,-t,t,e];M._matMult(n),k._matMult(n),I._matMult(n),E._matMult(n);}const T=new n(0,0),F=new n(0,0);c.push({tl:M,tr:k,bl:I,br:E,tex:o,writingMode:e.writingMode,glyphOffset:g,sectionIndex:i.sectionIndex,isSDF:p,pixelOffsetTL:T,pixelOffsetBR:F,minFontScaleX:0,minFontScaleY:0});}return c}(0,r,l,s,o,a,i,t.allowVerticalPlacement),g=t.textSizeData;let x=null;"source"===g.kind?(x=[mp*s.layout.get("text-size").evaluate(a,{})],x[0]>gp&&G(`${t.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):"composite"===g.kind&&(x=[mp*d.compositeTextSizes[0].evaluate(a,{},y),mp*d.compositeTextSizes[1].evaluate(a,{},y)],(x[0]>gp||x[1]>gp)&&G(`${t.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),t.addSymbols(t.text,m,x,l,o,a,c,e,u.lineStartIndex,u.lineLength,f,y);for(const e of h)p[e]=t.text.placedSymbolArray.length-1;return 4*m.length}function Ry(t){for(const e in t)return t[e];return null}function Ny(t,e,n,r){const i=t.compareText;if(e in i){const t=i[e];for(let e=t.length-1;e>=0;e--)if(r.dist(t[e])this.process())),this.subscription=tt(this.target,"message",(t=>this.receive(t)),!1),this.globalScope=Y(self)?t:window;}registerMessageHandler(t,e){this.messageHandlers[t]=e;}unregisterMessageHandler(t){delete this.messageHandlers[t];}sendAsync(t,e){return new Promise(((n,r)=>{const i=Math.round(1e18*Math.random()).toString(36).substring(0,10),s=e?tt(e.signal,"abort",(()=>{null==s||s.unsubscribe(),delete this.resolveRejects[i];const e={id:i,type:"",origin:location.origin,targetMapId:t.targetMapId,sourceMapId:this.mapId};this.target.postMessage(e);}),Lp):null;this.resolveRejects[i]={resolve:t=>{null==s||s.unsubscribe(),n(t);},reject:t=>{null==s||s.unsubscribe(),r(t);}};const o=[],a=Object.assign(Object.assign({},t),{id:i,sourceMapId:this.mapId,origin:location.origin,data:xs(t.data,o)});this.target.postMessage(a,{transfer:o});}))}receive(t){const e=t.data,n=e.id,r=["file://","resource://android","null"],i=[e.origin,location.origin],s=e.origin===location.origin,o=i.some((t=>r.includes(t)));if((s||o)&&(!e.targetMapId||this.mapId===e.targetMapId)){if(""===e.type){delete this.tasks[n];const t=this.abortControllers[n];return delete this.abortControllers[n],void(t&&t.abort())}if(Y(self)||e.mustQueue)return this.tasks[n]=e,this.taskQueue.push(n),void this.invoker.trigger();this.processTask(n,e);}}process(){if(0===this.taskQueue.length)return;const t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length>0&&this.invoker.trigger(),e&&this.processTask(t,e);}processTask(t,n){return e(this,void 0,void 0,(function*(){if(""===n.type){const e=this.resolveRejects[t];if(delete this.resolveRejects[t],!e)return;return void(n.error?e.reject(P(vs(n.error))):e.resolve(vs(n.data)))}if(!this.messageHandlers[n.type])return void this.completeTask(t,new Error(`Could not find a registered handler for ${n.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));const e=vs(n.data),r=new AbortController;this.abortControllers[t]=r;try{const i=yield this.messageHandlers[n.type](n.sourceMapId,e,r);this.completeTask(t,null,i);}catch(e){this.completeTask(t,P(e));}}))}completeTask(t,e,n){const r=[];delete this.abortControllers[t];const i={id:t,type:"",sourceMapId:this.mapId,origin:location.origin,error:e?xs(e):null,data:xs(n,r)};this.target.postMessage(i,{transfer:r});}remove(){this.invoker.remove(),this.subscription.unsubscribe();}},t.O=function(){var t=new f(16);return f!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.P=n,t.Q=function(t,e,n){var r,i,s,o,a,l,u,c,h,p,f,d,y=n[0],m=n[1],g=n[2];return e===t?(t[12]=e[0]*y+e[4]*m+e[8]*g+e[12],t[13]=e[1]*y+e[5]*m+e[9]*g+e[13],t[14]=e[2]*y+e[6]*m+e[10]*g+e[14],t[15]=e[3]*y+e[7]*m+e[11]*g+e[15]):(i=e[1],s=e[2],o=e[3],a=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],t[0]=r=e[0],t[1]=i,t[2]=s,t[3]=o,t[4]=a,t[5]=l,t[6]=u,t[7]=c,t[8]=h,t[9]=p,t[10]=f,t[11]=d,t[12]=r*y+a*m+h*g+e[12],t[13]=i*y+l*m+p*g+e[13],t[14]=s*y+u*m+f*g+e[14],t[15]=o*y+c*m+d*g+e[15]),t},t.R=Il,t.S=function(t,e,n){var r=n[0],i=n[1],s=n[2];return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*s,t[9]=e[9]*s,t[10]=e[10]*s,t[11]=e[11]*s,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.T=Ol,t.U=function(t,e,n){var r=e[0],i=e[1],s=e[2],o=e[3],a=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],y=e[12],m=e[13],g=e[14],x=e[15],v=n[0],b=n[1],w=n[2],_=n[3];return t[0]=v*r+b*a+w*h+_*y,t[1]=v*i+b*l+w*p+_*m,t[2]=v*s+b*u+w*f+_*g,t[3]=v*o+b*c+w*d+_*x,t[4]=(v=n[4])*r+(b=n[5])*a+(w=n[6])*h+(_=n[7])*y,t[5]=v*i+b*l+w*p+_*m,t[6]=v*s+b*u+w*f+_*g,t[7]=v*o+b*c+w*d+_*x,t[8]=(v=n[8])*r+(b=n[9])*a+(w=n[10])*h+(_=n[11])*y,t[9]=v*i+b*l+w*p+_*m,t[10]=v*s+b*u+w*f+_*g,t[11]=v*o+b*c+w*d+_*x,t[12]=(v=n[12])*r+(b=n[13])*a+(w=n[14])*h+(_=n[15])*y,t[13]=v*i+b*l+w*p+_*m,t[14]=v*s+b*u+w*f+_*g,t[15]=v*o+b*c+w*d+_*x,t},t.V=function(t,e){const n={};for(const r of e)r in t&&(n[r]=t[r]);return n},t.W=$p,t.X=O,t.Y=jp,t.Z=Up,t._=e,t.a=ot,t.a$=function(t){var e=new f(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.a0=c,t.a1=h,t.a2=K,t.a3=Jp,t.a4=Gp,t.a5=Xp,t.a6=T,t.a7=Zp,t.a8=tf,t.a9=25,t.aA=function(t){var e=t[0],n=t[1];return Math.sqrt(e*e+n*n)},t.aB=function(t){return t[0]=0,t[1]=0,t},t.aC=function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t},t.aD=_p,t.aE=A,t.aF=function(t,e,r,i){const s=e.y-t.y,o=e.x-t.x,a=i.y-r.y,l=i.x-r.x,u=a*o-l*s;if(0===u)return null;const c=(l*(t.y-r.y)-a*(t.x-r.x))/u;return new n(t.x+c*o,t.y+c*s)},t.aG=uy,t.aH=Ha,t.aI=function(t){let e=1/0,n=1/0,r=-1/0,i=-1/0;for(const s of t)e=Math.min(e,s.x),n=Math.min(n,s.y),r=Math.max(r,s.x),i=Math.max(i,s.y);return [e,n,r,i]},t.aJ=Ih,t.aK=F,t.aL=function(t,e,n,r,i=!1){if(!n[0]&&!n[1])return [0,0];const s=i?"map"===r?-t.bearingInRadians:0:"viewport"===r?t.bearingInRadians:0;if(s){const t=Math.sin(s),e=Math.cos(s);n=[n[0]*e-n[1]*t,n[0]*t+n[1]*e];}return [i?n[0]:F(e,n[0],t.zoom),i?n[1]:F(e,n[1],t.zoom)]},t.aN=vp,t.aO=Ly,t.aP=op,t.aQ=t=>"symbol"===t.type,t.aR=ec,t.aS=ao,t.aT=xu,t.aU=Xo,t.aV=ua,t.aW=sa,t.aX=nt,t.aY=Yp,t.aZ=b,t.a_=v,t.aa=Wp,t.ab=t=>{const e=window.document.createElement("video");return e.muted=!0,new Promise((n=>{e.onloadstart=()=>{n(e);};for(const n of t){const t=window.document.createElement("source");yt(n)||(e.crossOrigin="Anonymous"),t.src=n,e.appendChild(t);}}))},t.ac=zt,t.ad=function(){return R++},t.ae=Co,t.af=kp,t.ag=Jd,t.ah=yi,t.ai=Ga,t.aj=nf,t.ak=function(t){const e={};if(t.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((t,n,r,i)=>{const s=r||i;return e[n]=!s||s.toLowerCase(),""})),e["max-age"]){const t=parseInt(e["max-age"],10);isNaN(t)?delete e["max-age"]:e["max-age"]=t;}return e},t.al=L,t.am=85.051129,t.an=et,t.ao=function(t){return Math.pow(2,t)},t.ap=y,t.aq=qp,t.ar=function(t){return Math.log(t)/Math.LN2},t.as=function(t){var e=t[0],n=t[1];return e*e+n*n},t.at=function(t){if(!t.length)return new Set;const e=Math.max(...t.map((t=>t.canonical.z)));let n=1/0,r=-1/0,i=1/0,s=-1/0;const o=[];for(const a of t){const{x:t,y:l,z:u}=a.canonical,c=Math.pow(2,e-u),h=t*c,p=l*c;o.push({id:a,x:h,y:p}),hr&&(r=h),ps&&(s=p);}const a=new Set;for(const t of o)t.x!==n&&t.x!==r&&t.y!==i&&t.y!==s||a.add(t.id);return a},t.au=function(t,e){const n=Math.abs(2*t.wrap)-+(t.wrap<0),r=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||r-n||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x},t.av=class{constructor(t,e){this.max=t,this.onRemove=e,this.reset();}reset(){for(const t in this.data)for(const e of this.data[t])e.timeout&&clearTimeout(e.timeout),this.onRemove(e.value);return this.data={},this.order=[],this}add(t,e,n){const r=t.wrapped().key;void 0===this.data[r]&&(this.data[r]=[]);const i={value:e,timeout:void 0};if(void 0!==n&&(i.timeout=setTimeout((()=>{this.remove(t,i);}),n)),this.data[r].push(i),this.order.push(r),this.order.length>this.max){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value}getByKey(t){const e=this.data[t];return e?e[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,e){if(!this.has(t))return this;const n=t.wrapped().key,r=void 0===e?0:this.data[n].indexOf(e),i=this.data[n][r];return this.data[n].splice(r,1),i.timeout&&clearTimeout(i.timeout),0===this.data[n].length&&delete this.data[n],this.onRemove(i.value),this.order.splice(this.order.indexOf(n),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}filter(t){const e=[];for(const n in this.data)for(const r of this.data[n])t(r.value)||e.push(r);for(const t of e)this.remove(t.value.tileID,t);}},t.aw=function(t,e){let n=0,r=0;if("constant"===t.kind)r=t.layoutSize;else if("source"!==t.kind){const{interpolationType:i,minZoom:s,maxZoom:o}=t,a=i?L(mn.interpolationFactor(i,e,s,o),0,1):0;"camera"===t.kind?r=xn.number(t.minSize,t.maxSize,a):n=a;}return {uSizeT:n,uSize:r}},t.ay=function(t,{uSize:e,uSizeT:n},{lowerSize:r,upperSize:i}){return "source"===t.kind?r/mp:"composite"===t.kind?xn.number(r/mp,i/mp,n):e},t.az=I,t.b=H,t.b$=Ea,t.b0=function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t},t.b1=function(t,e){var n=e[0],r=e[1],i=e[2],s=n*n+r*r+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t},t.b2=w,t.b3=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},t.b4=function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t[3]=e[3]*n[3],t},t.b5=g,t.b6=function(t,e,n){const r=e[0]*n[0]+e[1]*n[1]+e[2]*n[2];return 0===r?null:(-(t[0]*n[0]+t[1]*n[1]+t[2]*n[2])-n[3])/r},t.b7=S,t.b8=function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t},t.b9=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]},t.bA=k,t.bB=function(t,e,n){var r=n[0],i=n[1],s=n[2],o=n[3],a=e[0],l=e[1],u=e[2],c=i*u-s*l,h=s*a-r*u,p=r*l-i*a;return t[0]=a+o*(c+=c)+i*(p+=p)-s*(h+=h),t[1]=l+o*h+s*c-r*p,t[2]=u+o*p+r*h-i*c,t},t.bC=function(t,e,n){const r=(i=[t[0],t[1],t[2],e[0],e[1],e[2],n[0],n[1],n[2]])[0]*((c=i[8])*(o=i[4])-(a=i[5])*(u=i[7]))+i[1]*(-c*(s=i[3])+a*(l=i[6]))+i[2]*(u*s-o*l);var i,s,o,a,l,u,c;if(0===r)return null;const h=w([],[e[0],e[1],e[2]],[n[0],n[1],n[2]]),p=w([],[n[0],n[1],n[2]],[t[0],t[1],t[2]]),f=w([],[t[0],t[1],t[2]],[e[0],e[1],e[2]]),d=b([],h,-t[3]);return v(d,d,b([],p,-e[3])),v(d,d,b([],f,-n[3])),b(d,d,1/r),d},t.bD=Op,t.bE=function(){return new Float64Array(4)},t.bF=function(t,e,n,r){var i=[],s=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],s[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),s[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),s[2]=i[2],t[0]=s[0]+n[0],t[1]=s[1]+n[1],t[2]=s[2]+n[2],t},t.bG=function(t,e,n,r){var i=[],s=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],s[0]=i[0],s[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),s[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),t[0]=s[0]+n[0],t[1]=s[1]+n[1],t[2]=s[2]+n[2],t},t.bH=function(t,e,n,r){var i=[],s=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],s[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),s[1]=i[1],s[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),t[0]=s[0]+n[0],t[1]=s[1]+n[1],t[2]=s[2]+n[2],t},t.bI=function(t,e,n){var r=Math.sin(n),i=Math.cos(n),s=e[0],o=e[1],a=e[2],l=e[3],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*i-u*r,t[1]=o*i-c*r,t[2]=a*i-h*r,t[3]=l*i-p*r,t[8]=s*r+u*i,t[9]=o*r+c*i,t[10]=a*r+h*i,t[11]=l*r+p*i,t},t.bJ=function(t,e){const n=D(t,360),r=D(e,360),i=r-n,s=r>n?i-360:i+360;return Math.abs(i)0?o:-o},t.bM=function(t,e){const n=D(t,2*Math.PI),r=D(e,2*Math.PI);return Math.min(Math.abs(n-r),Math.abs(n-r+2*Math.PI),Math.abs(n-r-2*Math.PI))},t.bN=function(){const t={},e=wt.$version;for(const n in wt.$root){const r=wt.$root[n];if(r.required){let i=null;i="version"===n?e:"array"===r.type?[]:{},null!=i&&(t[n]=i);}}return t},t.bO=ft,t.bP=bs,t.bQ=function t(e,n){if(Array.isArray(e)){if(!Array.isArray(n)||e.length!==n.length)return !1;for(let r=0;r"raster"===t.type,t.bV=j,t.bW=function(t,e){if(!t)return [{command:"setStyle",args:[e]}];let n=[];try{if(!At(t.version,e.version))return [{command:"setStyle",args:[e]}];At(t.center,e.center)||n.push({command:"setCenter",args:[e.center]}),At(t.state,e.state)||n.push({command:"setGlobalState",args:[e.state]}),At(t.centerAltitude,e.centerAltitude)||n.push({command:"setCenterAltitude",args:[e.centerAltitude]}),At(t.zoom,e.zoom)||n.push({command:"setZoom",args:[e.zoom]}),At(t.bearing,e.bearing)||n.push({command:"setBearing",args:[e.bearing]}),At(t.pitch,e.pitch)||n.push({command:"setPitch",args:[e.pitch]}),At(t.roll,e.roll)||n.push({command:"setRoll",args:[e.roll]}),At(t.sprite,e.sprite)||n.push({command:"setSprite",args:[e.sprite]}),At(t.glyphs,e.glyphs)||n.push({command:"setGlyphs",args:[e.glyphs]}),At(t.transition,e.transition)||n.push({command:"setTransition",args:[e.transition]}),At(t.light,e.light)||n.push({command:"setLight",args:[e.light]}),At(t.terrain,e.terrain)||n.push({command:"setTerrain",args:[e.terrain]}),At(t.sky,e.sky)||n.push({command:"setSky",args:[e.sky]}),At(t.projection,e.projection)||n.push({command:"setProjection",args:[e.projection]});const r={},i=[];!function(t,e,n,r){let i;for(i in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,i)&&(Object.prototype.hasOwnProperty.call(e,i)||It(i,n,r));for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(Object.prototype.hasOwnProperty.call(t,i)?At(t[i],e[i])||("geojson"===t[i].type&&"geojson"===e[i].type&&Tt(t,e,i)?Mt(n,{command:"setGeoJSONSourceData",args:[i,e[i].data]}):Et(i,e,n,r)):kt(i,e,n));}(t.sources,e.sources,i,r);const s=[];t.layers&&t.layers.forEach((t=>{"source"in t&&r[t.source]?n.push({command:"removeLayer",args:[t.id]}):s.push(t);})),n=n.concat(i),function(t,e,n){e=e||[];const r=(t=t||[]).map(Pt),i=e.map(Pt),s=t.reduce(Dt,{}),o=e.reduce(Dt,{}),a=r.slice(),l=Object.create(null);let u,c,h,p,f;for(let t=0,e=0;tp?(i=Math.acos(s),o=Math.sin(i),a=Math.sin((1-r)*i)/o,l=Math.sin(r*i)/o):(a=1-r,l=r),t[0]=a*u+l*d,t[1]=a*c+l*y,t[2]=a*h+l*m,t[3]=a*f+l*g,t},t.bm=function(t){const e=new Float64Array(9);var n,r,i,s,o,a,l,u,c,h,p,f,d,y,m,g,x,v;h=(i=(r=t)[0])*(l=i+i),p=(s=r[1])*l,d=(o=r[2])*l,y=o*(u=s+s),g=(a=r[3])*l,x=a*u,v=a*(c=o+o),(n=e)[0]=1-(f=s*u)-(m=o*c),n[3]=p-v,n[6]=d+x,n[1]=p+v,n[4]=1-h-m,n[7]=y-g,n[2]=d-x,n[5]=y+g,n[8]=1-h-f;const b=nt(-Math.asin(L(e[2],-1,1)));let w,_;return Math.hypot(e[5],e[8])<.001?(w=0,_=-nt(Math.atan2(e[3],e[4]))):(w=nt(0===e[5]&&0===e[8]?0:Math.atan2(e[5],e[8])),_=nt(0===e[1]&&0===e[0]?0:Math.atan2(e[1],e[0]))),{roll:w,pitch:b+90,bearing:_}},t.bn=function(t,e){return t.roll==e.roll&&t.pitch==e.pitch&&t.bearing==e.bearing},t.bo=Te,t.bp=ka,t.bq=vu,t.br=bu,t.bs=gu,t.bt=z,t.bu=B,t.bv=Ne,t.bw=function(t,e,n,r,i){return z(r,i,L((t-e)/(n-e),0,1))},t.bx=function(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t},t.by=D,t.bz=function(){return new Float64Array(3)},t.c=ut,t.c$=si,t.c0=class extends Ma{constructor(t,e){super(t,e),this.current=Ta;}set(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(let e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}}},t.c1=Ia,t.c2=class extends Ma{constructor(t,e){super(t,e),this.current=[0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));}},t.c3=class extends Ma{constructor(t,e){super(t,e),this.current=[0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));}},t.c4=d,t.c5=function(t,e){var n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},t.c6=function(t,e,n){var r=e[0],i=e[1],s=e[2];return t[0]=r*n[0]+i*n[3]+s*n[6],t[1]=r*n[1]+i*n[4]+s*n[7],t[2]=r*n[2]+i*n[5]+s*n[8],t},t.c7=function(t,e,n,r,i,s,o){var a=1/(e-n),l=1/(r-i),u=1/(s-o);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+n)*a,t[13]=(i+r)*l,t[14]=(o+s)*u,t[15]=1,t},t.c8=class extends Ma{constructor(t,e){super(t,e),this.current=new Array;}set(t){if(t!=this.current){this.current=t;const e=new Float32Array(4*t.length);for(let n=0;n25||r<0||r>=1||n<0||n>=1)},t.cE=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.cF=class extends co{},t.cG=pt,t.cH=function(t,e){ut.REGISTERED_PROTOCOLS[t]=e;},t.cI=function(t){delete ut.REGISTERED_PROTOCOLS[t];},t.cJ=function(t,e){const n={};for(let r=0;rt*Ih));}let x=u?"center":s.get("text-justify").evaluate(o,{},e.canonical);const b="point"===s.get("symbol-placement")?s.get("text-max-width").evaluate(o,{},e.canonical)*Ih:1/0,w=()=>{e.bucket.allowVerticalPlacement&&As(n)&&(m.vertical=sp(g,e.glyphMap,e.glyphPositions,e.imagePositions,p,b,l,h,"left",a,v,t.ax.vertical,!0,d,f));};if(!u&&y){const n=new Set;if("auto"===x)for(let t=0;tQd(t,e,n)),t.layers[r]);}(t,n,e),n.finish()},t.cT=function(t,e,n,r,i,s){let o=cy(t,e,n,i,0);return o=cy(o,e,r,s,1),o},t.cU=class{constructor(t){this.maxEntries=t,this.map=new Map;}get(t){const e=this.map.get(t);return void 0!==e&&(this.map.delete(t),this.map.set(t,e)),e}set(t,e){if(this.map.has(t))this.map.delete(t);else if(this.map.size>=this.maxEntries){const t=this.map.keys().next().value;this.map.delete(t);}this.map.set(t,e);}clear(){this.map.clear();}},t.cV=Nu,t.cW=Rh,t.cX=Wd,t.cY=function(t,n,r,i,s){return e(this,void 0,void 0,(function*(){if(h())try{return yield K(t,n,r,i,s)}catch(t){}return function(t,e,n,r,i){const s=t.width,o=t.height;J&&Q||(J=new OffscreenCanvas(s,o),Q=J.getContext("2d",{willReadFrequently:!0})),J.width=s,J.height=o,Q.drawImage(t,0,0,s,o);const a=Q.getImageData(e,n,r,i);return Q.clearRect(0,0,s,o),a.data}(t,n,r,i,s)}))},t.cZ=$l,t.c_=class{constructor(t,e){this.layers={[Jd]:this},this.name=Jd,this.version=e?e.version:1,this.extent=e?e.extent:4096,this.length=t.length,this.features=t;}feature(t){return new Kd(this.features[t],this.extent)}},t.ca=class extends So{},t.cb=Ah,t.cc=class extends Mo{},t.cd=Fl,t.ce=function(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},t.cf=Tl,t.cg=function(t,e,n){var r=e[0],i=e[1],s=e[2],o=n[3]*r+n[7]*i+n[11]*s+n[15];return t[0]=(n[0]*r+n[4]*i+n[8]*s+n[12])/(o=o||1),t[1]=(n[1]*r+n[5]*i+n[9]*s+n[13])/o,t[2]=(n[2]*r+n[6]*i+n[10]*s+n[14])/o,t},t.ch=class extends ho{},t.ci=class extends Do{},t.cj=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]},t.ck=function(t,e){var n=t[0],r=t[1],i=t[2],s=t[3],o=t[4],a=t[5],l=t[6],u=t[7],c=t[8],h=t[9],f=t[10],d=t[11],y=t[12],m=t[13],g=t[14],x=t[15],v=e[0],b=e[1],w=e[2],_=e[3],S=e[4],A=e[5],M=e[6],k=e[7],I=e[8],E=e[9],T=e[10],F=e[11],P=e[12],D=e[13],z=e[14],B=e[15];return Math.abs(n-v)<=p*Math.max(1,Math.abs(n),Math.abs(v))&&Math.abs(r-b)<=p*Math.max(1,Math.abs(r),Math.abs(b))&&Math.abs(i-w)<=p*Math.max(1,Math.abs(i),Math.abs(w))&&Math.abs(s-_)<=p*Math.max(1,Math.abs(s),Math.abs(_))&&Math.abs(o-S)<=p*Math.max(1,Math.abs(o),Math.abs(S))&&Math.abs(a-A)<=p*Math.max(1,Math.abs(a),Math.abs(A))&&Math.abs(l-M)<=p*Math.max(1,Math.abs(l),Math.abs(M))&&Math.abs(u-k)<=p*Math.max(1,Math.abs(u),Math.abs(k))&&Math.abs(c-I)<=p*Math.max(1,Math.abs(c),Math.abs(I))&&Math.abs(h-E)<=p*Math.max(1,Math.abs(h),Math.abs(E))&&Math.abs(f-T)<=p*Math.max(1,Math.abs(f),Math.abs(T))&&Math.abs(d-F)<=p*Math.max(1,Math.abs(d),Math.abs(F))&&Math.abs(y-P)<=p*Math.max(1,Math.abs(y),Math.abs(P))&&Math.abs(m-D)<=p*Math.max(1,Math.abs(m),Math.abs(D))&&Math.abs(g-z)<=p*Math.max(1,Math.abs(g),Math.abs(z))&&Math.abs(x-B)<=p*Math.max(1,Math.abs(x),Math.abs(B))},t.cl=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.cm=t=>"circle"===t.type,t.cn=t=>"heatmap"===t.type,t.co=t=>"line"===t.type,t.cp=t=>"fill"===t.type,t.cq=t=>"fill-extrusion"===t.type,t.cr=t=>"hillshade"===t.type,t.cs=t=>"color-relief"===t.type,t.ct=t=>"background"===t.type,t.cu=t=>"custom"===t.type,t.cv=C,t.cw=function(t,e,n){if(e<=0)return t;const r=1/e;return void 0===n||Math.abs(n)<1e-10?Math.round(t*r)/r:(n>0?Math.ceil(t*r-1e-9):Math.floor(t*r+1e-10))/r},t.cx=function(t,e,n){const r=E(e.x-n.x,e.y-n.y),i=E(t.x-n.x,t.y-n.y);var s,o;return nt(Math.atan2(r[0]*i[1]-r[1]*i[0],(s=r)[0]*(o=i)[0]+s[1]*o[1]))},t.cy=V,t.cz=function(t,e){var n;if(!it[e])return !1;const r=null==t?void 0:t.target,i=(null===(n=null==r?void 0:r.ownerDocument)||void 0===n?void 0:n.defaultView)||window;return t instanceof i.MouseEvent||t instanceof i.WheelEvent},t.d=P,t.d0=class{constructor(t,e){const n=(e=this.options=Object.assign({},sh,e)).debug;if(n&&console.time("preprocess data"),e.maxZoom<0||e.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(e.promoteId&&e.generateId)throw new Error("promoteId and generateId cannot be used together.");let r=pc(t,e);n&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",e.indexMaxZoom,e.indexMaxPoints),console.time("generate tiles")),r=Lc(r,e),e.updateable&&(this.source=r),this.initializeIndex(r,e);}initializeIndex(t,e){this.tileIndex=e.cluster?new qc(e.clusterOptions):new rh(e),t.length&&this.tileIndex.initialize(t);}getTile(t,e,n){return e=+e,n=+n,(t=+t)<0||t>24?null:this.tileIndex.getTile(t,e,n)}updateData(t,e){const n=this.options;if(!n.updateable)throw new Error("to update tile geojson `updateable` option must be set to true");let{affected:r,source:i}=function(t,e,n){const r=function(t,e){return t?{removeAll:t.removeAll,remove:new Set(t.remove||[]),add:new Map(t.add?.map((t=>[e.promoteId?t.properties[e.promoteId]:t.id,t]))),update:new Map(t.update?.map((t=>[t.id,t])))}:{remove:new Set,add:new Map,update:new Map}}(e,n);let i=[];if(r.removeAll&&(i=t,t=[]),r.remove.size||r.add.size){const e=[];for(const n of t)(r.remove.has(n.id)||r.add.has(n.id))&&e.push(n);if(e.length){i.push(...e);const n=new Set(e.map((t=>t.id)));t=t.filter((t=>!n.has(t.id)));}if(r.add.size){let e=pc({type:"FeatureCollection",features:Array.from(r.add.values())},n);e=Lc(e,n),i.push(...e),t.push(...e);}}if(r.update.size){const e=new Map,s=[];for(const n of t)r.update.has(n.id)?e.set(n.id,[...e.get(n.id)||[],n]):s.push(n);for(const[t,o]of r.update){const r=e.get(t);if(!r||0===r.length)continue;const a=Nc(r,o,n);i.push(...r,...a),s.push(...a);}t=s;}return {affected:i,source:t}}(this.source,t,n);e&&({affected:r,source:i}=this.filterUpdate(i,r,e)),r.length&&(this.source=i,this.tileIndex.updateIndex(i,r,n));}filterUpdate(t,e,n){const r=new Set;for(const i of t)null!=i.id&&(n(xc(i))||(e.push(i),r.add(i.id)));return {affected:e,source:t=t.filter((t=>!r.has(t.id)))}}getData(){if(!this.options.updateable)throw new Error("to retrieve data the `updateable` option must be set to true");return {type:"FeatureCollection",features:this.source.map((t=>xc(t)))}}updateClusterOptions(t,e){const n=this.options.cluster;this.options.cluster=t,this.options.clusterOptions=e,n!=t?this.initializeIndex(this.source,this.options):this.tileIndex.updateIndex(this.source,[],this.options);}getClusterExpansionZoom(t){return this.tileIndex.getClusterExpansionZoom(t)}getClusterChildren(t){return this.tileIndex.getChildren(t)}getClusterLeaves(t,e,n){return this.tileIndex.getLeaves(t,e,n)}},t.d1=Bs,t.e=$,t.f=yt,t.g=ct,t.h=t=>e(void 0,void 0,void 0,(function*(){if(0===t.byteLength)return createImageBitmap(new ImageData(1,1));const e=new Blob([new Uint8Array(t)],{type:"image/png"});try{return createImageBitmap(e)}catch(t){throw new Error(`Could not load image because of ${P(t).message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}})),t.i=Y,t.j=t=>new Promise(((e,n)=>{const r=new Image;r.onload=()=>{e(r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame((()=>r.src=W));},r.onerror=()=>n(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const i=new Blob([new Uint8Array(t)],{type:"image/png"});r.src=t.byteLength?URL.createObjectURL(i):W;})),t.k=(t,e)=>dt($(t,{type:"json"}),e),t.l=vt,t.m=dt,t.n=xt,t.o=(t,e)=>dt($(t,{type:"arrayBuffer"}),e),t.p=ep,t.q=function(t){return new Rh(t).readFields(Jh,[])},t.r=function(t){return /[\u02EA\u02EB\u1100-\u11FF\u2E80-\u2FDF\u3000-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFE10-\uFE1F\uFE30-\uFE4F\uFF00-\uFFEF]|\uD81B[\uDFE0-\uDFFF]|[\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFFF]|\uD82C[\uDC00-\uDEFB]|\uD83C[\uDE00-\uDEFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79]/gim.test(String.fromCodePoint(t))},t.s=tt,t.t=kl,t.u=Ks,t.v=ss,t.w=G,t.x=wt,t.y=Rs,t.z=as;})); - -define("worker",["./shared"],(function(e){"use strict";class t{constructor(e,t){this.keyCache={},e&&this.replace(e,t);}replace(e,t){this._layerConfigs={},this._layers={},this.update(e,[],t);}update(t,i,s){for(const i of t){this._layerConfigs[i.id]=i;const t=this._layers[i.id]=e.bT(i,s);t._featureFilter=e.ah(t.filter,s),this.keyCache[i.id]&&delete this.keyCache[i.id];}for(const e of i)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const r=e.cJ(Object.values(this._layerConfigs),this.keyCache);for(const t of r){const i=t.map((e=>this._layers[e.id])),s=i[0];if(s.isHidden())continue;const r=s.source||"";let o=this.familiesBySource[r];o||(o=this.familiesBySource[r]={});const n=s.sourceLayer||e.ag;let a=o[n];a||(a=o[n]=[]),a.push(i);}}}class i{constructor(t){const i={},s=[];for(const e in t){const r=t[e],o=i[e]={};for(const e in r){const t=r[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const i={x:0,y:0,w:t.bitmap.width+2,h:t.bitmap.height+2};s.push(i),o[e]={rect:i,metrics:t.metrics};}}const{w:r,h:o}=e.p(s),n=new e.t({width:r||1,height:o||1});for(const s in t){const r=t[s];for(const t in r){const o=r[+t];if(!o||0===o.bitmap.width||0===o.bitmap.height)continue;const a=i[s][t].rect;e.t.copy(o.bitmap,n,{x:0,y:0},{x:a.x+1,y:a.y+1},o.bitmap);}}this.image=n,this.positions=i;}}e.cK("GlyphAtlas",i);class s{constructor(t){this.tileID=new e.a3(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.inFlightDependencies=[];}parse(t,s,o,n,a){return e._(this,void 0,void 0,(function*(){this.status="parsing",this.data=t,this.collisionBoxArray=new e.ae;const l=new e.cL(Object.keys(t.layers).sort()),c=new e.cM(this.tileID,this.promoteId);c.bucketLayerIDs=[];const h={},d={featureIndex:c,iconDependencies:{},patternDependencies:{},glyphDependencies:{},dashDependencies:{},availableImages:o,subdivisionGranularity:a},u=s.familiesBySource[this.source];for(const i in u){const s=t.layers[i];if(!s)continue;1===s.version&&e.w(`Vector tile source "${this.source}" layer "${i}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const n=l.encode(i),a=[];for(let e=0;ee.id))));}}const g=e.bY(d.glyphDependencies,(e=>Object.keys(e).map(Number)));for(const e of this.inFlightDependencies)null==e||e.abort();this.inFlightDependencies=[];let p=Promise.resolve({});if(Object.keys(g).length){const e=new AbortController;this.inFlightDependencies.push(e),p=n.sendAsync({type:"GG",data:{stacks:g,source:this.source,tileID:this.tileID,type:"glyphs"}},e);}const f=Object.keys(d.iconDependencies);let y=Promise.resolve({});if(f.length){const e=new AbortController;this.inFlightDependencies.push(e),y=n.sendAsync({type:"GI",data:{icons:f,source:this.source,tileID:this.tileID,type:"icons"}},e);}const v=Object.keys(d.patternDependencies);let m=Promise.resolve({});if(v.length){const e=new AbortController;this.inFlightDependencies.push(e),m=n.sendAsync({type:"GI",data:{icons:v,source:this.source,tileID:this.tileID,type:"patterns"}},e);}const _=d.dashDependencies;let S=Promise.resolve({});if(Object.keys(_).length){const e=new AbortController;this.inFlightDependencies.push(e),S=n.sendAsync({type:"GDA",data:{dashes:_}},e);}const[w,b,I,T]=yield Promise.all([p,y,m,S]),k=new i(w),x=new e.cN(b,I);for(const t in h){const i=h[t];i instanceof e.af?(r(i.layers,this.zoom,o),e.cO({bucket:i,glyphMap:w,glyphPositions:k.positions,imageMap:b,imagePositions:x.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical,subdivisionGranularity:d.subdivisionGranularity})):i.hasDependencies&&(i instanceof e.cP||i instanceof e.cQ||i instanceof e.cR)&&(r(i.layers,this.zoom,o),i.addFeatures(d,this.tileID.canonical,x.patternPositions,T));}return this.status="done",{buckets:Object.values(h).filter((e=>!e.isEmpty())),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:k.image,imageAtlas:x,dashPositions:T,glyphMap:this.returnDependencies?w:null,iconMap:this.returnDependencies?b:null,glyphPositions:this.returnDependencies?k.positions:null}}))}}function r(t,i,s){const r=new e.J(i);for(const e of t)e.recalculate(r,s);}class o{constructor(){this.loading={},this.loaded={},this.parsing={};}startLoading(e,t){this.loading[e]=t;}finishLoading(e){delete this.loading[e];}abort(e){const t=this.loading[e];(null==t?void 0:t.abort)&&(t.abort.abort(),delete this.loading[e]);}setParsing(e,t){this.parsing[e]=t;}consumeParsing(e){const t=this.parsing[e];if(t)return delete this.parsing[e],t}clearParsing(e){delete this.parsing[e];}markLoaded(e,t){this.loaded[e]=t;}getLoaded(e){const t=this.loaded[e];if(t)return t}removeLoaded(e){delete this.loaded[e];}clearLoaded(){this.loaded={};}}class n{constructor(e){this.start=`${e}#start`,this.end=`${e}#end`,this.measure=e,performance.mark(this.start);}finish(){performance.mark(this.end);let e=performance.getEntriesByName(this.measure);return 0===e.length&&(performance.measure(this.measure,this.start,this.end),e=performance.getEntriesByName(this.measure),performance.clearMarks(this.start),performance.clearMarks(this.end),performance.clearMeasures(this.measure)),e}}class a{constructor(e,t,i,s,r){this.type=e,this.properties=i||{},this.extent=r,this.pointsArray=t,this.id=s;}loadGeometry(){return this.pointsArray.map((t=>t.map((t=>new e.P(t.x,t.y)))))}}class l{constructor(e,t,i){this.version=2,this._myFeatures=e,this.name=t,this.length=e.length,this.extent=i;}feature(e){return this._myFeatures[e]}}class c{constructor(){this.layers={};}addLayer(e){this.layers[e.name]=e;}}function h(t){let i=e.cS(t);return 0===i.byteOffset&&i.byteLength===i.buffer.byteLength||(i=new Uint8Array(i)),{vectorTile:t,rawData:i.buffer}}function d(t,i,s){const{extent:r}=t,o=Math.pow(2,s.z-i.z),n=(s.x-i.x*o)*r,c=(s.y-i.y*o)*r,h=[];for(let i=0;i0&&u.addLayer(r);}const p=h(u);return this.overzoomedTileResultCache.set(a,p),p}reloadTile(t){return e._(this,void 0,void 0,(function*(){const e=t.uid,i=this.tileState.getLoaded(e);if(!i)throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");if(i.showCollisionBoxes=t.showCollisionBoxes,"parsing"===i.status){const s=this.tileState.consumeParsing(e);return yield this._parseWorkerTile(i,t,s)}if("done"===i.status&&i.vectorTile)return yield this._parseWorkerTile(i,t)}))}abortTile(t){return e._(this,void 0,void 0,(function*(){this.tileState.abort(t.uid);}))}removeTile(t){return e._(this,void 0,void 0,(function*(){this.tileState.removeLoaded(t.uid);}))}}class g{constructor(){this.loaded={};}loadTile(t){return e._(this,void 0,void 0,(function*(){const{uid:i,encoding:s,rawImageData:r,redFactor:o,greenFactor:n,blueFactor:a,baseShift:l}=t,c=r.width+2,h=r.height+2,d=e.b(r)?new e.R({width:c,height:h},yield e.cY(r,-1,-1,c,h)):r,u=new e.cZ(i,d,s,o,n,a,l);return this.loaded||(this.loaded={}),this.loaded[i]=u,u}))}removeTile(e){const t=this.loaded,i=e.uid;(null==t?void 0:t[i])&&delete t[i];}}class p{constructor(e,t,i,s=f){this.actor=e,this.layerIndex=t,this.availableImages=i,this.tileState=new o,this._createGeoJSONIndex=s;}loadVectorTile(t){if(!this._geoJSONIndex)throw new Error("Unable to parse the data into a cluster or geojson");const{z:i,x:s,y:r}=t.tileID.canonical,o=this._geoJSONIndex.getTile(i,s,r);return o?h(new e.c_(o.features,{version:2,extent:e.a6})):null}loadTile(t){return e._(this,void 0,void 0,(function*(){const{uid:e}=t,i=new s(t);i.abort=new AbortController;try{const s=this.loadVectorTile(t);if(!s)return null;const{vectorTile:r,rawData:o}=s;i.vectorTile=r,this.tileState.markLoaded(e,i);const n={rawData:o};this.tileState.setParsing(e,n);try{return yield this._parseWorkerTile(i,t,n)}finally{this.tileState.clearParsing(e);}}catch(t){throw i.status="done",this.tileState.markLoaded(e,i),t}}))}_reloadLoadedTile(t){return e._(this,void 0,void 0,(function*(){const e=t.uid,i=this.tileState.getLoaded(e);if(!i)throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");if(i.showCollisionBoxes=t.showCollisionBoxes,"parsing"===i.status){const s=this.tileState.consumeParsing(e);return yield this._parseWorkerTile(i,t,s)}if("done"===i.status&&i.vectorTile)return yield this._parseWorkerTile(i,t)}))}_parseWorkerTile(t,i,s){return e._(this,void 0,void 0,(function*(){let r=yield t.parse(t.vectorTile,this.layerIndex,this.availableImages,this.actor,i.subdivisionGranularity);if(s){const{rawData:t}=s;r=e.e({rawTileData:t.slice(0),encoding:"mvt"},r);}return r}))}abortTile(t){return e._(this,void 0,void 0,(function*(){this.tileState.abort(t.uid);}))}removeTile(t){return e._(this,void 0,void 0,(function*(){this.tileState.removeLoaded(t.uid);}))}loadData(t){return e._(this,void 0,void 0,(function*(){var i;null===(i=this._pendingRequest)||void 0===i||i.abort();const s=this._startRequestTiming(t);this._pendingRequest=new AbortController;try{yield this.loadAndProcessGeoJSON(t,this._pendingRequest),delete this._pendingRequest,this.tileState.clearLoaded();const e={};return t.request&&(e.data=t.data),this._finishRequestTiming(s,t,e),e}catch(t){if(delete this._pendingRequest,!e.$(t))throw t;return {abandoned:!0}}}))}_startRequestTiming(e){var t;if(null===(t=e.request)||void 0===t?void 0:t.collectResourceTiming)return new n(e.request.url)}_finishRequestTiming(e,t,i){const s=null==e?void 0:e.finish();s&&(i.resourceTiming={[t.source]:JSON.parse(JSON.stringify(s))});}reloadTile(e){return this.tileState.getLoaded(e.uid)?this._reloadLoadedTile(e):this.loadTile(e)}loadAndProcessGeoJSON(t,i){return e._(this,void 0,void 0,(function*(){var s;if(t.request&&(t.data=(yield e.k(t.request,i)).data),t.data)return t.data=this._filterGeoJSON(t.data,t.filter),void(this._geoJSONIndex=this._createGeoJSONIndex(t.data,t));if(t.dataDiff)return null!==(s=this._geoJSONIndex)&&void 0!==s||(this._geoJSONIndex=this._createGeoJSONIndex({type:"FeatureCollection",features:[]},t)),void this._geoJSONIndex.updateData(t.dataDiff,this._getFilterPredicate(t.filter));if(t.updateCluster&&this._geoJSONIndex.updateClusterOptions(t.geojsonVtOptions.cluster,y(t)),null==this._geoJSONIndex)throw new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`)}))}_filterGeoJSON(e,t){if("FeatureCollection"!==e.type)return e;const i=this._getFilterPredicate(t);return i?{type:"FeatureCollection",features:e.features.filter((e=>i(e)))}:e}_getFilterPredicate(t){if("boolean"!=typeof t&&!(null==t?void 0:t.length))return;const i=e.c$(t,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if("error"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(", "));return e=>i.value.evaluate({zoom:0},e)}removeSource(t){return e._(this,void 0,void 0,(function*(){var e;null===(e=this._pendingRequest)||void 0===e||e.abort();}))}getClusterExpansionZoom(e){return this._geoJSONIndex.getClusterExpansionZoom(e.clusterId)}getClusterChildren(e){return this._geoJSONIndex.getClusterChildren(e.clusterId)}getClusterLeaves(e){return this._geoJSONIndex.getClusterLeaves(e.clusterId,e.limit,e.offset)}}function f(t,i){const s=e.e(i.geojsonVtOptions||{},{updateable:!0,clusterOptions:y(i)});return new e.d0(t,s)}function y({geojsonVtOptions:t,clusterProperties:i}){if(!i||!t.clusterOptions)return t.clusterOptions;const s={},r={},o={accumulated:null,zoom:0},n={properties:null},a=Object.keys(i);for(const t of a){const[o,n]=i[t],a=e.c$(n),l=e.c$("string"==typeof o?[o,["accumulated"],["get",t]]:o);s[t]=a.value,r[t]=l.value;}return t.clusterOptions.map=e=>{n.properties=e;const t={};for(const e of a)t[e]=s[e].evaluate(o,n);return t},t.clusterOptions.reduce=(e,t)=>{n.properties=t;for(const t of a)o.accumulated=e[t],e[t]=r[t].evaluate(o,n);},t.clusterOptions}class v{constructor(t){this.self=t,this.actor=new e.N(t),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.globalStates=new Map,this.self.registerWorkerSource=(e,t)=>{if(this.externalWorkerSourceTypes[e])throw new Error(`Worker source with name "${e}" already registered.`);this.externalWorkerSourceTypes[e]=t;},this.self.addProtocol=e.cH,this.self.removeProtocol=e.cI,this.self.registerRTLTextPlugin=t=>{e.d1.setMethods(t);},this.self.makeRequest=e.m,this.actor.registerMessageHandler("LDT",((e,t)=>this._getDEMWorkerSource(e,t.source).loadTile(t))),this.actor.registerMessageHandler("RDT",((t,i)=>e._(this,void 0,void 0,(function*(){this._getDEMWorkerSource(t,i.source).removeTile(i);})))),this.actor.registerMessageHandler("GCEZ",((t,i)=>e._(this,void 0,void 0,(function*(){return this._getWorkerSource(t,i.type,i.source).getClusterExpansionZoom(i)})))),this.actor.registerMessageHandler("GCC",((t,i)=>e._(this,void 0,void 0,(function*(){return this._getWorkerSource(t,i.type,i.source).getClusterChildren(i)})))),this.actor.registerMessageHandler("GCL",((t,i)=>e._(this,void 0,void 0,(function*(){return this._getWorkerSource(t,i.type,i.source).getClusterLeaves(i)})))),this.actor.registerMessageHandler("LD",((e,t)=>this._getWorkerSource(e,t.type,t.source).loadData(t))),this.actor.registerMessageHandler("LT",((e,t)=>this._getWorkerSource(e,t.type,t.source).loadTile(t))),this.actor.registerMessageHandler("RT",((e,t)=>this._getWorkerSource(e,t.type,t.source).reloadTile(t))),this.actor.registerMessageHandler("AT",((e,t)=>this._getWorkerSource(e,t.type,t.source).abortTile(t))),this.actor.registerMessageHandler("RMT",((e,t)=>this._getWorkerSource(e,t.type,t.source).removeTile(t))),this.actor.registerMessageHandler("RS",((t,i)=>e._(this,void 0,void 0,(function*(){var e,s;if(!(null===(s=null===(e=this.workerSources[t])||void 0===e?void 0:e[i.type])||void 0===s?void 0:s[i.source]))return;const r=this.workerSources[t][i.type][i.source];delete this.workerSources[t][i.type][i.source],void 0!==r.removeSource&&r.removeSource(i);})))),this.actor.registerMessageHandler("RM",(t=>e._(this,void 0,void 0,(function*(){delete this.layerIndexes[t],delete this.availableImages[t],delete this.workerSources[t],delete this.demWorkerSources[t],this.globalStates.delete(t);})))),this.actor.registerMessageHandler("SR",((t,i)=>e._(this,void 0,void 0,(function*(){this.referrer=i;})))),this.actor.registerMessageHandler("SRPS",((e,t)=>this._syncRTLPluginState(e,t))),this.actor.registerMessageHandler("IS",((t,i)=>e._(this,void 0,void 0,(function*(){this.self.importScripts(i);})))),this.actor.registerMessageHandler("SI",((e,t)=>this._setImages(e,t))),this.actor.registerMessageHandler("UL",((t,i)=>e._(this,void 0,void 0,(function*(){this._getLayerIndex(t).update(i.layers,i.removedIds,this._getGlobalState(t));})))),this.actor.registerMessageHandler("UGS",((t,i)=>e._(this,void 0,void 0,(function*(){const e=this._getGlobalState(t);for(const t in i)e[t]=i[t];})))),this.actor.registerMessageHandler("SL",((t,i)=>e._(this,void 0,void 0,(function*(){this._getLayerIndex(t).replace(i,this._getGlobalState(t));}))));}_getGlobalState(e){let t=this.globalStates.get(e);return t||(t={},this.globalStates.set(e,t)),t}_setImages(t,i){return e._(this,void 0,void 0,(function*(){this.availableImages[t]=i;for(const e in this.workerSources[t]){const s=this.workerSources[t][e];for(const e in s)s[e].availableImages=i;}}))}_syncRTLPluginState(t,i){return e._(this,void 0,void 0,(function*(){return yield e.d1.syncState(i,this.self.importScripts)}))}_getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}_getLayerIndex(e){let i=this.layerIndexes[e];return i||(i=this.layerIndexes[e]=new t),i}_getWorkerSource(e,t,i){var s,r;if((s=this.workerSources)[e]||(s[e]={}),(r=this.workerSources[e])[t]||(r[t]={}),!this.workerSources[e][t][i]){const s={sendAsync:(t,i)=>(t.targetMapId=e,this.actor.sendAsync(t,i))};switch(t){case "vector":this.workerSources[e][t][i]=new u(s,this._getLayerIndex(e),this._getAvailableImages(e));break;case "geojson":this.workerSources[e][t][i]=new p(s,this._getLayerIndex(e),this._getAvailableImages(e));break;default:this.workerSources[e][t][i]=new this.externalWorkerSourceTypes[t](s,this._getLayerIndex(e),this._getAvailableImages(e));}}return this.workerSources[e][t][i]}_getDEMWorkerSource(e,t){var i,s;return (i=this.demWorkerSources)[e]||(i[e]={}),(s=this.demWorkerSources[e])[t]||(s[t]=new g),this.demWorkerSources[e][t]}}return e.i(self)&&(self.worker=new v(self)),v})); - -define("index",["exports","./shared"],(function(e,t){"use strict";var i="5.24.0";function o(){var e=new t.A(4);return t.A!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}let a,r,s;const n={frame(e,i,o,a){const r=a||window,s=r.requestAnimationFrame((e=>{n(),i(e);})),{unsubscribe:n}=t.s(e.signal,"abort",(()=>{n(),r.cancelAnimationFrame(s),o(new t.a(e.signal.reason));}),!1);},frameAsync(e,t){return new Promise(((i,o)=>{this.frame(e,i,o,t);}))},getImageData(e,t=0){return this.getImageCanvasContext(e).getImageData(-t,-t,e.width+2*t,e.height+2*t)},getImageCanvasContext(e){const t=window.document.createElement("canvas"),i=t.getContext("2d",{willReadFrequently:!0});if(!i)throw new Error("failed to create canvas 2d context");return t.width=e.width,t.height=e.height,i.drawImage(e,0,0,e.width,e.height),i},resolveURL:e=>(a||(a=document.createElement("a")),a.href=e,a.href),hardwareConcurrency:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return void 0!==s?s:!!matchMedia&&(null!=r||(r=matchMedia("(prefers-reduced-motion: reduce)")),r.matches)},set prefersReducedMotion(e){s=e;}},l=new class{constructor(){this._frozenAt=null;}getCurrentTime(){return null!==this._frozenAt?this._frozenAt:performance.now()}setNow(e){this._frozenAt=e;}restoreNow(){this._frozenAt=null;}isFrozen(){return null!==this._frozenAt}};function c(){return l.getCurrentTime()}var h,u;class d{static create(e,t,i){const o=window.document.createElement(e);return void 0!==t&&(o.className=t),i&&i.appendChild(o),o}static createNS(e,t){return window.document.createElementNS(e,t)}static disableDrag(){d.docStyle&&d.selectProp&&(d.userSelect=d.docStyle[d.selectProp],d.docStyle[d.selectProp]="none");}static enableDrag(){d.docStyle&&d.selectProp&&(d.docStyle[d.selectProp]=d.userSelect);}static suppressClickInternal(e){e.preventDefault(),e.stopPropagation(),window.removeEventListener("click",d.suppressClickInternal,!0);}static suppressClick(){window.addEventListener("click",d.suppressClickInternal,!0),window.setTimeout((()=>{window.removeEventListener("click",d.suppressClickInternal,!0);}),0);}static getScale(e){const t=e.getBoundingClientRect();return {x:t.width/e.offsetWidth||1,y:t.height/e.offsetHeight||1,boundingClientRect:t}}static getPoint(e,i,o){const a=i.boundingClientRect;return new t.P((o.clientX-a.left)/i.x-e.clientLeft,(o.clientY-a.top)/i.y-e.clientTop)}static mousePos(e,t){const i=d.getScale(e);return d.getPoint(e,i,t)}static touchPos(e,t){const i=[],o=d.getScale(e);for(const a of t)i.push(d.getPoint(e,o,a));return i}static sanitize(e){const t=(new DOMParser).parseFromString(e,"text/html").body||document.createElement("body"),i=t.querySelectorAll("script");for(const e of i)e.remove();return d.clean(t),t.innerHTML}static isPossiblyDangerous(e,t){const i=t.replace(/\s+/g,"").toLowerCase();return !(!["src","href","xlink:href"].includes(e)||!i.includes("javascript:")&&!i.includes("data:"))||!!e.startsWith("on")||void 0}static clean(e){const t=e.children;for(const e of t)d.removeAttributes(e),d.clean(e);}static removeAttributes(e){for(const{name:t,value:i}of e.attributes)d.isPossiblyDangerous(t,i)&&e.removeAttribute(t);}}d.docStyle="undefined"!=typeof window&&(null===(h=window.document)||void 0===h?void 0:h.documentElement.style),d.selectProp=!d.docStyle||"userSelect"in d.docStyle?"userSelect":"webkitUserSelect",function(e){let i,o,a,r;e.resetRequestQueue=()=>{i=[],o=0,a=0,r={};},e.addThrottleControl=e=>{const t=a++;return r[t]=e,t},e.removeThrottleControl=e=>{delete r[e],n();},e.getImage=(e,o,a=!0)=>new Promise(((r,s)=>{e.headers||(e.headers={}),e.headers.accept="image/webp,*/*",t.e(e,{type:"image"}),i.push({abortController:o,requestParameters:e,supportImageRefresh:a,state:"queued",onError:e=>{s(e);},onSuccess:e=>{r(e);}}),n();}));const s=e=>t._(this,void 0,void 0,(function*(){e.state="running";const{requestParameters:i,supportImageRefresh:a,onError:r,onSuccess:s,abortController:c}=e,h=!1===a&&!t.i(self)&&!t.g(i.url)&&(!i.headers||Object.keys(i.headers).reduce(((e,t)=>e&&"accept"===t),!0));o++;const u=h?l(i,c):t.m(i,c);try{const i=yield u;delete e.abortController,e.state="completed",i.data instanceof HTMLImageElement||t.b(i.data)?s(i):i.data&&s({data:yield(d=i.data,"function"==typeof createImageBitmap?t.h(d):t.j(d)),cacheControl:i.cacheControl,expires:i.expires});}catch(i){delete e.abortController,r(t.d(i));}finally{o--,n();}var d;})),n=()=>{const e=(()=>{for(const e of Object.keys(r))if(r[e]())return !0;return !1})()?t.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:t.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let t=o;t0;t++){const e=i.shift();e.abortController.signal.aborted?t--:s(e);}},l=(e,i)=>new Promise(((o,a)=>{const r=new Image,s=e.url,n=e.credentials;n&&"include"===n?r.crossOrigin="use-credentials":(n&&"same-origin"===n||!t.f(s))&&(r.crossOrigin="anonymous"),i.signal.addEventListener("abort",(()=>{r.src="",a(new t.a(i.signal.reason));})),r.fetchPriority="high",r.onload=()=>{r.onerror=r.onload=null,o({data:r});},r.onerror=()=>{r.onerror=r.onload=null,i.signal.aborted||a(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));},r.src=s;}));}(u||(u={})),u.resetRequestQueue();class _{constructor(e){this._transformRequestFn=null!=e?e:null;}transformRequest(e,t){return this._transformRequestFn&&this._transformRequestFn(e,t)||{url:e}}setTransformRequest(e){this._transformRequestFn=e;}}function p(e){const t=[];if("string"==typeof e)t.push({id:"default",url:e});else if(e&&e.length>0){const i=[];for(const{id:o,url:a}of e){const e=`${o}${a}`;i.includes(e)||(i.push(e),t.push({id:o,url:a}));}}return t}function m(e,t,i){try{const o=new URL(e);return o.pathname+=`${t}${i}`,o.toString()}catch(t){throw new Error(`Invalid sprite URL "${e}", must be absolute. Modify style specification directly or use TransformStyleFunction to correct the issue dynamically`)}}function f(e){const{userImage:t}=e;return !(!(null==t?void 0:t.render)||!t.render()||(e.data.replace(new Uint8Array(t.data.buffer)),0))}class g extends t.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0;}destroy(){this.atlasTexture&&(this.atlasTexture.destroy(),this.atlasTexture=null);for(const e of Object.keys(this.images))this.removeImage(e);this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0;}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,promiseResolve:t}of this.requestors)t(this._getImagesForIds(e));this.requestors=[];}}getImage(e){const i=this.images[e];if(i&&!i.data&&i.spriteData){const e=i.spriteData;i.data=new t.R({width:e.width,height:e.height},e.context.getImageData(e.x,e.y,e.width,e.height).data),i.spriteData=null;}return i}addImage(e,t){if(this.images[e])throw new Error(`Image id ${e} already exist, use updateImage instead`);this._validate(e,t)&&(this.images[e]=t);}_validate(e,i){let o=!0;const a=i.data||i.spriteData;return this._validateStretch(i.stretchX,null==a?void 0:a.width)||(this.fire(new t.l(new Error(`Image "${e}" has invalid "stretchX" value`))),o=!1),this._validateStretch(i.stretchY,null==a?void 0:a.height)||(this.fire(new t.l(new Error(`Image "${e}" has invalid "stretchY" value`))),o=!1),this._validateContent(i.content,i)||(this.fire(new t.l(new Error(`Image "${e}" has invalid "content" value`))),o=!1),o}_validateStretch(e,t){if(!e)return !0;let i=0;for(const o of e){if(o[0]=e[1]))}updateImage(e,t,i=!0){const o=this.getImage(e);if(i&&(o.data.width!==t.data.width||o.data.height!==t.data.height))throw new Error(`size mismatch between old image (${o.data.width}x${o.data.height}) and new image (${t.data.width}x${t.data.height}).`);t.version=o.version+1,this.images[e]=t,this.updatedImages[e]=!0;}removeImage(e){var t;const i=this.images[e];delete this.images[e],delete this.patterns[e],(null===(t=i.userImage)||void 0===t?void 0:t.onRemove)&&i.userImage.onRemove();}listImages(){return Object.keys(this.images)}getImages(e){return new Promise(((t,i)=>{let o=!0;if(!this.isLoaded())for(const t of e)this.images[t]||(o=!1);this.isLoaded()||o?t(this._getImagesForIds(e)):this.requestors.push({ids:e,promiseResolve:t});}))}_getImagesForIds(e){var i;const o={};for(const a of e){let e=this.getImage(a);e||(this.fire(new t.n("styleimagemissing",{id:a})),e=this.getImage(a)),e?o[a]={data:e.data.clone(),pixelRatio:e.pixelRatio,sdf:e.sdf,version:e.version,stretchX:e.stretchX,stretchY:e.stretchY,content:e.content,textFitWidth:e.textFitWidth,textFitHeight:e.textFitHeight,hasRenderCallback:Boolean(null===(i=e.userImage)||void 0===i?void 0:i.render)}:t.w(`Image "${a}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`);}return o}getPixelSize(){const{width:e,height:t}=this.atlasImage;return {width:e,height:t}}getPattern(e){const i=this.patterns[e],o=this.getImage(e);if(!o)return null;if(i&&i.position.version===o.version)return i.position;if(i)i.position.version=o.version;else {const i={w:o.data.width+2,h:o.data.height+2,x:0,y:0},a=new t.I(i,o);this.patterns[e]={bin:i,position:a};}return this._updatePatternAtlas(),this.patterns[e].position}bind(e){const i=e.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new t.T(e,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE);}_updatePatternAtlas(){const e=[];for(const t in this.patterns)e.push(this.patterns[t].bin);const{w:i,h:o}=t.p(e),a=this.atlasImage;a.resize({width:i||1,height:o||1});for(const e in this.patterns){const{bin:i}=this.patterns[e],o=i.x+1,r=i.y+1,s=this.getImage(e).data,n=s.width,l=s.height;t.R.copy(s,a,{x:0,y:0},{x:o,y:r},{width:n,height:l}),t.R.copy(s,a,{x:0,y:l-1},{x:o,y:r-1},{width:n,height:1}),t.R.copy(s,a,{x:0,y:0},{x:o,y:r+l},{width:n,height:1}),t.R.copy(s,a,{x:n-1,y:0},{x:o-1,y:r},{width:1,height:l}),t.R.copy(s,a,{x:0,y:0},{x:o+n,y:r},{width:1,height:l});}this.dirty=!0;}beginFrame(){this.callbackDispatchedThisFrame={};}dispatchRenderCallbacks(e){for(const i of e){if(this.callbackDispatchedThisFrame[i])continue;this.callbackDispatchedThisFrame[i]=!0;const e=this.getImage(i);e||t.w(`Image with ID: "${i}" was not found`),f(e)&&this.updateImage(i,e);}}cloneImages(){const e={};for(const t in this.images){const i=this.images[t];e[t]=Object.assign(Object.assign({},i),{data:i.data?i.data.clone():null});}return e}}const v=1e20,x=new Float64Array(256);for(let e=0;e<256;e++){const t=.5-Math.pow(e/255,1/2.2);x[e]=t*Math.abs(t);}function b(e,t,i,o,a,r,s,n,l){for(let c=t;c-1);l++,r[l]=n,s[l]=c,s[l+1]=v;}for(let n=0,l=0;n/[-\w]+/.test(e)?e:`'${CSS.escape(e)}'`)).join(",");return new T.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:i,fontWeight:this._fontWeight(t[0]),fontStyle:this._fontStyle(t[0]),lang:this.lang})}_fontStyle(e){return /italic/i.test(e)?"italic":/oblique/i.test(e)?"oblique":"normal"}_fontWeight(e){const t={thin:100,hairline:100,"extra light":200,"ultra light":200,light:300,normal:400,regular:400,medium:500,semibold:600,demibold:600,bold:700,"extra bold":800,"ultra bold":800,black:900,heavy:900,"extra black":950,"ultra black":950};let i;for(const[o,a]of Object.entries(t))new RegExp(`\\b${o}\\b`,"i").test(e)&&(i=`${a}`);return i}destroy(){for(const e in this.entries){const t=this.entries[e];t.tinySDF=null,t.ideographTinySDF=null,t.glyphs={},t.requests={},t.ranges={};}this.entries={};}}T.loadGlyphRange=function(e,i,o,a){return t._(this,void 0,void 0,(function*(){const r=256*i,s=r+255,n=yield a.transformRequest(o.replace("{fontstack}",e).replace("{range}",`${r}-${s}`),"Glyphs"),l=yield t.o(n,new AbortController);if(!(null==l?void 0:l.data))throw new Error(`Could not load glyph range. range: ${i}, ${r}-${s}`);const c={};for(const e of t.q(l.data))c[e.id]=e;return c}))},T.TinySDF=class{constructor({fontSize:e=24,buffer:t=3,radius:i=8,cutoff:o=.25,fontFamily:a="sans-serif",fontWeight:r="normal",fontStyle:s="normal",lang:n=null}={}){this.buffer=t,this.radius=i,this.cutoff=o,this.lang=n;const l=this.size=e+4*t,c=this._createCanvas(l),h=this.ctx=c.getContext("2d",{willReadFrequently:!0});h.font=`${s} ${r} ${e}px ${a}`,h.textBaseline="alphabetic",h.textAlign="left",h.fillStyle="black",this.gridOuter=new Float64Array(l*l),this.gridInner=new Float64Array(l*l),this.f=new Float64Array(l),this.z=new Float64Array(l+1),this.v=new Uint16Array(l);}_createCanvas(e){if("undefined"!=typeof OffscreenCanvas)return new OffscreenCanvas(e,e);const t=document.createElement("canvas");return t.width=t.height=e,t}draw(e){const{width:t,actualBoundingBoxAscent:i,actualBoundingBoxDescent:o,actualBoundingBoxLeft:a,actualBoundingBoxRight:r}=this.ctx.measureText(e),s=Math.ceil(i),n=Math.floor(a),l=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(r)-n)),c=Math.max(0,Math.min(this.size-this.buffer,s+Math.ceil(o))),h=l+2*this.buffer,u=c+2*this.buffer,d=Math.max(h*u,0),_=new Uint8ClampedArray(d),p={data:_,width:h,height:u,glyphWidth:l,glyphHeight:c,glyphTop:s,glyphLeft:n,glyphAdvance:t};if(0===l||0===c)return p;const{ctx:m,buffer:f,gridInner:g,gridOuter:y}=this;this.lang&&(m.lang=this.lang),m.clearRect(f,f,l,c),m.fillText(e,f-n,f+s);const w=m.getImageData(f,f,l,c);y.fill(v,0,d),g.fill(0,0,d);let T=3;for(let e=0;e1&&(s=e[++r]);const l=Math.abs(n-s.left),c=Math.abs(n-s.right),h=Math.min(l,c);let u;const d=t/i*(o+1);if(s.isDash){const e=o-Math.abs(d);u=Math.sqrt(h*h+e*e);}else u=o-Math.sqrt(h*h+d*d);this.data[a+n]=Math.max(0,Math.min(255,u+128));}}}addRegularDash(e){for(let t=e.length-1;t>=0;--t){const i=e[t],o=e[t+1];i.zeroLength?e.splice(t,1):o&&o.isDash===i.isDash&&(o.left=i.left,e.splice(t,1));}const t=e[0],i=e[e.length-1];t.isDash===i.isDash&&(t.left=i.left-this.width,i.right=t.right+this.width);const o=this.width*this.nextRow;let a=0,r=e[a];for(let t=0;t1&&(r=e[++a]);const i=Math.abs(t-r.left),s=Math.abs(t-r.right),n=Math.min(i,s);this.data[o+t]=Math.max(0,Math.min(255,(r.isDash?n:-n)+128));}}addDash(e,i){const o=i?7:0,a=2*o+1;if(this.nextRow+a>this.height)return t.w("LineAtlas out of space"),null;let r=0;for(const t of e)r+=t;if(0!==r){const t=this.width/r,a=this.getDashRanges(e,this.width,t);i?this.addRoundDash(a,t,o):this.addRegularDash(a);}const s={y:this.nextRow+o,height:2*o,width:r};return this.nextRow+=a,this.dirty=!0,s}bind(e){const t=e.gl;this.texture?(t.bindTexture(t.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,t.texSubImage2D(t.TEXTURE_2D,0,0,0,this.width,this.height,t.ALPHA,t.UNSIGNED_BYTE,this.data))):(this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,t.ALPHA,this.width,this.height,0,t.ALPHA,t.UNSIGNED_BYTE,this.data));}}const z="maplibre_preloaded_worker_pool";class R{constructor(){this.active={};}acquire(e){if(!this.workers)for(this.workers=[];this.workers.lengtht.m(i,o)))),L}function O(e,i){const o=t.O();return t.Q(o,o,[1,1,0]),t.S(o,o,[.5*e.width,.5*e.height,1]),e.calculatePosMatrix?t.U(o,o,e.calculatePosMatrix(i.toUnwrapped())):o}function j(e,t,i,o,a,r,s){var n;const l=function(e,t,i){if(e)for(const o of e){const e=t[o];if((null==e?void 0:e.source)===i&&"fill-extrusion"===e.type)return !0}else for(const e in t){const o=t[e];if(o.source===i&&"fill-extrusion"===o.type)return !0}return !1}(null!==(n=null==a?void 0:a.layers)&&void 0!==n?n:null,t,e.id),c=r.maxPitchScaleFactor(),h=e.tilesIn(o,c,l);h.sort(N);const u=[];for(const o of h)u.push({wrappedTileID:o.tileID.wrapped().key,queryResults:o.tile.queryRenderedFeatures(t,i,e.getState(),o.queryGeometry,o.cameraQueryGeometry,o.scale,a,r,c,O(r,o.tileID),s?(e,t)=>s(o.tileID,e,t):void 0)});return function(e,t){for(const i in e)for(const o of e[i])Z(o,t);return e}(function(e){const t={},i={};for(const{queryResults:o,wrappedTileID:a}of e){i[a]||(i[a]={});const e=i[a];for(const i in o){const a=o[i];e[i]||(e[i]={});const r=e[i];t[i]||(t[i]=[]);for(const e of a)r[e.featureIndex]||(r[e.featureIndex]=!0,t[i].push(e));}}return t}(u),e)}function N(e,t){const i=e.tileID,o=t.tileID;return i.overscaledZ-o.overscaledZ||i.canonical.y-o.canonical.y||i.wrap-o.wrap||i.canonical.x-o.canonical.x}function Z(e,t){const i=e.feature,o=t.getFeatureState(i.layer["source-layer"],i.id);i.source=i.layer.source,i.layer["source-layer"]&&(i.sourceLayer=i.layer["source-layer"]),i.state=o;}function U(e,i,o,a){return t._(this,void 0,void 0,(function*(){let r=e;if(e.url?r=(yield t.k(yield i.transformRequest(e.url,"Source"),o)).data:yield n.frameAsync(o,a),!r)return null;const s=t.V(t.e(r,e),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return "vector_layers"in r&&r.vector_layers&&(s.vectorLayerIds=r.vector_layers.map((e=>e.id))),s}))}class G{constructor(e,t){e&&(t?this.setSouthWest(e).setNorthEast(t):Array.isArray(e)&&(4===e.length?this.setSouthWest([e[0],e[1]]).setNorthEast([e[2],e[3]]):this.setSouthWest(e[0]).setNorthEast(e[1])));}setNorthEast(e){return this._ne=e instanceof t.W?new t.W(e.lng,e.lat):t.W.convert(e),this}setSouthWest(e){return this._sw=e instanceof t.W?new t.W(e.lng,e.lat):t.W.convert(e),this}extend(e){const i=this._sw,o=this._ne;let a,r;if(e instanceof t.W)a=e,r=e;else {if(!(e instanceof G))return Array.isArray(e)?4===e.length||e.every(Array.isArray)?this.extend(G.convert(e)):this.extend(t.W.convert(e)):e&&("lng"in e||"lon"in e)&&"lat"in e?this.extend(t.W.convert(e)):this;if(a=e._sw,r=e._ne,!a||!r)return this}return i||o?(i.lng=Math.min(a.lng,i.lng),i.lat=Math.min(a.lat,i.lat),o.lng=Math.max(r.lng,o.lng),o.lat=Math.max(r.lat,o.lat)):(this._sw=new t.W(a.lng,a.lat),this._ne=new t.W(r.lng,r.lat)),this}getCenter(){return new t.W((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new t.W(this.getWest(),this.getNorth())}getSouthEast(){return new t.W(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return [this._sw.toArray(),this._ne.toArray()]}toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return !(this._sw&&this._ne)}contains(e){const{lng:i,lat:o}=t.W.convert(e);let a=this._sw.lng<=i&&i<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=i&&i>=this._ne.lng),this._sw.lat<=o&&o<=this._ne.lat&&a}intersects(e){if(!((e=G.convert(e)).getNorth()>=this.getSouth()&&e.getSouth()<=this.getNorth()))return !1;const i=Math.abs(this.getEast()-this.getWest()),o=Math.abs(e.getEast()-e.getWest());if(i>=360||o>=360)return !0;const a=t.X(this.getWest(),-180,180),r=t.X(this.getEast(),-180,180),s=t.X(e.getWest(),-180,180),n=t.X(e.getEast(),-180,180),l=a>r,c=s>n;return !(!l||!c)||(l?n>=a||s<=r:c?r>=s||a<=n:s<=r&&n>=a)}static convert(e){return e instanceof G?e:e?new G(e):e}static fromLngLat(e,i=0){const o=360*i/40075017,a=o/Math.cos(Math.PI/180*e.lat);return new G(new t.W(e.lng-a,e.lat-o),new t.W(e.lng+a,e.lat+o))}adjustAntiMeridian(){const e=new t.W(this._sw.lng,this._sw.lat),i=new t.W(this._ne.lng,this._ne.lat);return new G(e,e.lng>i.lng?new t.W(i.lng+360,i.lat):i)}}class V{constructor(e,t,i){this.bounds=G.convert(this.validateBounds(e)),this.minzoom=t||0,this.maxzoom=i||24;}validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]:[-180,-90,180,90]}contains(e){const i=Math.pow(2,e.z),o=Math.floor(t.Z(this.bounds.getWest())*i),a=Math.floor(t.Y(this.bounds.getNorth())*i),r=Math.ceil(t.Z(this.bounds.getEast())*i),s=Math.ceil(t.Y(this.bounds.getSouth())*i);return e.x>=o&&e.x=a&&e.y{this._options.tiles=e;})),this}setUrl(e){return this.setSourceProperty((()=>{this.url=e,this._options.url=e;})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null);}serialize(){return t.e({},this._options)}loadTile(e){return t._(this,void 0,void 0,(function*(){const t=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),i={request:yield this.map._requestManager.transformRequest(t,"Tile"),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity,encoding:this.encoding,overzoomParameters:yield this._getOverzoomParameters(e),etag:e.etag};i.request.collectResourceTiming=this._collectResourceTiming;let o="RT";if(e.actor&&"expired"!==e.state){if("loading"===e.state)return new Promise(((t,i)=>{e.reloadPromise={resolve:t,reject:i};}))}else e.actor=this.dispatcher.getActor(),o="LT";e.abortController=new AbortController;try{const t=yield e.actor.sendAsync({type:o,data:i},e.abortController);if(delete e.abortController,e.aborted)return;this._afterTileLoadWorkerResponse(e,t);const a={};return (null==t?void 0:t.etagUnmodified)&&(a.unmodified=!0),a}catch(t){if(delete e.abortController,e.aborted)return;if(t&&404!==t.status)throw t;this._afterTileLoadWorkerResponse(e,null);}}))}_getOverzoomParameters(e){return t._(this,void 0,void 0,(function*(){if(e.tileID.canonical.z<=this.maxzoom)return;if(void 0===this.map._zoomLevelsToOverscale)return;const t=e.tileID.scaledTo(this.maxzoom).canonical,i=t.url(this.tiles,this.map.getPixelRatio(),this.scheme);return {maxZoomTileID:t,overzoomRequest:yield this.map._requestManager.transformRequest(i,"Tile")}}))}_afterTileLoadWorkerResponse(e,t){if((null==t?void 0:t.resourceTiming)&&(e.resourceTiming=t.resourceTiming),t&&this.map._refreshExpiredTiles&&e.setExpiryData(t),e.etag=null==t?void 0:t.etag,e.loadVectorData(t,this.map.painter),e.reloadPromise){const t=e.reloadPromise;e.reloadPromise=null,this.loadTile(e).then(t.resolve).catch(t.reject);}}abortTile(e){return t._(this,void 0,void 0,(function*(){e.abortController&&(e.abortController.abort(),delete e.abortController),e.actor&&(yield e.actor.sendAsync({type:"AT",data:{uid:e.uid,type:this.type,source:this.id}}));}))}unloadTile(e){return t._(this,void 0,void 0,(function*(){e.unloadVectorData(),e.actor&&(yield e.actor.sendAsync({type:"RMT",data:{uid:e.uid,type:this.type,source:this.id}}));}))}hasTransition(){return !1}}class q extends t.E{constructor(e,i,o,a){super(),this.id=e,this.dispatcher=o,this.setEventedParent(a),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=t.e({type:"raster"},i),t.e(this,t.V(i,["url","scheme","tileSize"]));}load(){return t._(this,arguments,void 0,(function*(e=!1){this._loaded=!1,this.fire(new t.n("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{const i=yield U(this._options,this.map._requestManager,this._tileJSONRequest,this.map._ownerWindow);this._tileJSONRequest=null,this._loaded=!0,i&&(t.e(this,i),i.bounds&&(this.tileBounds=new V(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.n("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new t.n("data",{dataType:"source",sourceDataType:"content",sourceDataChanged:e})));}catch(e){this._tileJSONRequest=null,this._loaded=!0,t.$(e)||this.fire(new t.l(t.d(e)));}}))}loaded(){return this._loaded}onAdd(e){this.map=e,this.load();}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null);}setSourceProperty(e){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),e(),this.load(!0);}setTiles(e){return this.setSourceProperty((()=>{this._options.tiles=e;})),this}setUrl(e){return this.setSourceProperty((()=>{this.url=e,this._options.url=e;})),this}serialize(){return t.e({},this._options)}hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(e){return t._(this,void 0,void 0,(function*(){const i=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);e.abortController=new AbortController;try{const o=yield u.getImage(yield this.map._requestManager.transformRequest(i,"Tile"),e.abortController,this.map._refreshExpiredTiles);if(delete e.abortController,e.aborted)return void(e.state="unloaded");if(null==o?void 0:o.data){this.map._refreshExpiredTiles&&(o.cacheControl||o.expires)&&e.setExpiryData({cacheControl:o.cacheControl,expires:o.expires});const i=this.map.painter.context,a=i.gl,r=o.data;e.texture=this.map.painter.getTileTexture(r.width),e.texture?e.texture.update(r,{useMipmap:!0}):(e.texture=new t.T(i,r,a.RGBA,{useMipmap:!0}),e.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST)),e.state="loaded";}}catch(t){if(delete e.abortController,e.aborted)e.state="unloaded";else if(t)throw e.state="errored",t}}))}abortTile(e){return t._(this,void 0,void 0,(function*(){e.abortController&&(e.abortController.abort(),delete e.abortController);}))}unloadTile(e){return t._(this,void 0,void 0,(function*(){e.texture&&this.map.painter.saveTileTexture(e.texture);}))}hasTransition(){return !1}}class $ extends q{constructor(e,i,o,a){super(e,i,o,a),this.type="raster-dem",this.maxzoom=22,this._options=t.e({type:"raster-dem"},i),this.encoding=i.encoding||"mapbox",this.redFactor=i.redFactor,this.greenFactor=i.greenFactor,this.blueFactor=i.blueFactor,this.baseShift=i.baseShift;}loadTile(e){return t._(this,void 0,void 0,(function*(){const i=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),o=yield this.map._requestManager.transformRequest(i,"Tile");e.neighboringTiles=this._getNeighboringTiles(e.tileID),e.abortController=new AbortController;try{const i=yield u.getImage(o,e.abortController,this.map._refreshExpiredTiles);if(delete e.abortController,e.aborted)return void(e.state="unloaded");if(null==i?void 0:i.data){const o=i.data;this.map._refreshExpiredTiles&&(i.cacheControl||i.expires)&&e.setExpiryData({cacheControl:i.cacheControl,expires:i.expires});const a=t.b(o)&&t.a0()?o:yield this.readImageNow(o),r={type:this.type,uid:e.uid,source:this.id,rawImageData:a,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(e.actor&&"expired"!==e.state&&"reloading"!==e.state)return;e.actor&&"expired"!==e.state||(e.actor=this.dispatcher.getActor()),e.dem=yield e.actor.sendAsync({type:"LDT",data:r}),e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0,e.state="loaded";}}catch(t){if(delete e.abortController,e.aborted)e.state="unloaded";else if(t)throw e.state="errored",t}}))}readImageNow(e){return t._(this,void 0,void 0,(function*(){if("undefined"!=typeof VideoFrame&&t.a1()){const i=e.width+2,o=e.height+2;try{return new t.R({width:i,height:o},yield t.a2(e,-1,-1,i,o))}catch(e){}}return n.getImageData(e,1)}))}_getNeighboringTiles(e){const i=e.canonical,o=Math.pow(2,i.z),a=(i.x-1+o)%o,r=0===i.x?e.wrap-1:e.wrap,s=(i.x+1+o)%o,n=i.x+1===o?e.wrap+1:e.wrap,l={};return l[new t.a3(e.overscaledZ,r,i.z,a,i.y).key]={backfilled:!1},l[new t.a3(e.overscaledZ,n,i.z,s,i.y).key]={backfilled:!1},i.y>0&&(l[new t.a3(e.overscaledZ,r,i.z,a,i.y-1).key]={backfilled:!1},l[new t.a3(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.a3(e.overscaledZ,n,i.z,s,i.y-1).key]={backfilled:!1}),i.y+1e.key===i));t>-1&&e.addOrUpdateProperties.splice(t,1);}return (e.removeAllProperties||t.removeAllProperties)&&(i.removeAllProperties=!0),(e.removeProperties||t.removeProperties)&&(i.removeProperties=[...e.removeProperties||[],...t.removeProperties||[]]),(e.addOrUpdateProperties||t.addOrUpdateProperties)&&(i.addOrUpdateProperties=[...e.addOrUpdateProperties||[],...t.addOrUpdateProperties||[]]),(e.newGeometry||t.newGeometry)&&(i.newGeometry=t.newGeometry||e.newGeometry),i}function K(e){var t,i;if(!e)return {};const o={};return o.removeAll=e.removeAll,o.remove=new Set(e.remove||[]),o.add=new Map(null===(t=e.add)||void 0===t?void 0:t.map((e=>[e.id,e]))),o.update=new Map(null===(i=e.update)||void 0===i?void 0:i.map((e=>[e.id,e]))),o}function Y(e){return e&&0!==e.length?"number"==typeof e[0]?[e]:e.flatMap((e=>Y(e))):[]}function Q(e){return "GeometryCollection"===e.type?e.geometries.flatMap((e=>Q(e))):Y(e.coordinates)}function J(e){const t=new G;let i;switch(e.type){case "FeatureCollection":i=e.features.flatMap((e=>Q(e.geometry)));break;case "Feature":i=Q(e.geometry);break;default:i=Q(e);}if(0===i.length)return t;for(const e of i){const[i,o]=e;t.extend([i,o]);}return t}class ee extends t.E{constructor(e,i,o,a){super(),this.id=e,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._isUpdatingWorker=!1,this._pendingWorkerUpdate={data:i.data},this.actor=o.getActor(),this.setEventedParent(a),this._data="string"==typeof i.data?{url:i.data}:{geojson:i.data},this._options=t.e({},i),this._collectResourceTiming=i.collectResourceTiming,void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId,void 0!==i.clusterMaxZoom&&this.maxzoom<=i.clusterMaxZoom&&t.w(`The maxzoom value "${this.maxzoom}" is expected to be greater than the clusterMaxZoom value "${i.clusterMaxZoom}".`),this.workerOptions=t.e({source:this.id,geojsonVtOptions:{buffer:this._pixelsToTileUnits(void 0!==i.buffer?i.buffer:128),tolerance:this._pixelsToTileUnits(void 0!==i.tolerance?i.tolerance:.375),extent:t.a6,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1,promoteId:"string"==typeof i.promoteId?i.promoteId:void 0,cluster:i.cluster||!1,clusterOptions:{maxZoom:this._getClusterMaxZoom(i.clusterMaxZoom),minPoints:Math.max(2,i.clusterMinPoints||2),extent:t.a6,radius:this._pixelsToTileUnits(i.clusterRadius||50),log:!1,generateId:i.generateId||!1}},clusterProperties:i.clusterProperties,filter:i.filter},i.workerOptions);}_hasPendingWorkerUpdate(){return void 0!==this._pendingWorkerUpdate.data||void 0!==this._pendingWorkerUpdate.diff||this._pendingWorkerUpdate.updateCluster}_pixelsToTileUnits(e){return e*(t.a6/this.tileSize)}_getClusterMaxZoom(e){const i=e?Math.round(e):this.maxzoom-1;return Number.isInteger(e)||void 0===e||t.w(`Integer expected for option 'clusterMaxZoom': provided value "${e}" rounded to "${i}"`),i}load(){return t._(this,void 0,void 0,(function*(){yield this._updateWorkerData();}))}onAdd(e){this.map=e,this.load();}setData(e,t){this._data="string"==typeof e?{url:e}:{geojson:e},this._pendingWorkerUpdate={data:e};const i=this._updateWorkerData();return t?i:this}updateData(e,t){this._pendingWorkerUpdate.diff=function(e,t){if(!e)return t||{};if(!t)return e||{};const i=K(e),o=K(t);!function(e,t){t.removeAll&&(e.add.clear(),e.update.clear(),e.remove.clear(),t.remove.clear());for(const i of t.remove)e.add.delete(i),e.update.delete(i);for(const[i,o]of t.update){const a=e.update.get(i);a&&(t.update.set(i,X(a,o)),e.update.delete(i));}}(i,o);const a={};if((i.removeAll||o.removeAll)&&(a.removeAll=!0),a.remove=new Set([...i.remove,...o.remove]),a.add=new Map([...i.add,...o.add]),a.update=new Map([...i.update,...o.update]),a.remove.size&&a.add.size)for(const e of a.add.keys())a.remove.delete(e);return function(e){const t={};return e.removeAll&&(t.removeAll=e.removeAll),e.remove&&(t.remove=Array.from(e.remove)),e.add&&(t.add=Array.from(e.add.values())),e.update&&(t.update=Array.from(e.update.values())),t}(a)}(this._pendingWorkerUpdate.diff,e);const i=this._updateWorkerData();return t?i:this}getData(){return t._(this,void 0,void 0,(function*(){return this._data.url&&(yield this.once("data")),this._data.geojson?this._data.geojson:{type:"FeatureCollection",features:Array.from(this._data.updateable.values())}}))}getBounds(){return t._(this,void 0,void 0,(function*(){return J(yield this.getData())}))}setClusterOptions(e){return this.workerOptions.geojsonVtOptions.cluster=e.cluster,void 0!==e.clusterRadius&&(this.workerOptions.geojsonVtOptions.clusterOptions.radius=this._pixelsToTileUnits(e.clusterRadius)),void 0!==e.clusterMaxZoom&&(this.workerOptions.geojsonVtOptions.clusterOptions.maxZoom=this._getClusterMaxZoom(e.clusterMaxZoom)),this._pendingWorkerUpdate.updateCluster=!0,this._updateWorkerData(),this}getClusterExpansionZoom(e){return this.actor.sendAsync({type:"GCEZ",data:{type:this.type,clusterId:e,source:this.id}})}getClusterChildren(e){return this.actor.sendAsync({type:"GCC",data:{type:this.type,clusterId:e,source:this.id}})}getClusterLeaves(e,t,i){return this.actor.sendAsync({type:"GCL",data:{type:this.type,source:this.id,clusterId:e,limit:t,offset:i}})}_updateWorkerData(){return t._(this,void 0,void 0,(function*(){if(this._isUpdatingWorker)return;if(!this._hasPendingWorkerUpdate())return void t.w(`No pending worker updates for GeoJSONSource ${this.id}.`);const{data:e,diff:i,updateCluster:o}=this._pendingWorkerUpdate,a=this._getLoadGeoJSONParameters(e,i,o);void 0!==e?this._pendingWorkerUpdate.data=void 0:i?this._pendingWorkerUpdate.diff=void 0:o&&(this._pendingWorkerUpdate.updateCluster=void 0),yield this._dispatchWorkerUpdate(a);}))}_getLoadGeoJSONParameters(e,i,o){return t._(this,void 0,void 0,(function*(){const a=t.e({type:this.type},this.workerOptions);return "string"==typeof e?(a.request=yield this.map._requestManager.transformRequest(n.resolveURL(e),"Source"),a.request.collectResourceTiming=this._collectResourceTiming,a):void 0!==e?(a.data=e,a):i?(a.dataDiff=i,a):o?(a.updateCluster=!0,a):void 0}))}_dispatchWorkerUpdate(e){return t._(this,void 0,void 0,(function*(){this._isUpdatingWorker=!0,this.fire(new t.n("dataloading",{dataType:"source"}));try{const i=yield e,o=yield this.actor.sendAsync({type:"LD",data:i});if(this._isUpdatingWorker=!1,this._removed||o.abandoned)return void this.fire(new t.n("dataabort",{dataType:"source"}));o.data&&(this._data={geojson:o.data});const a=this._applyDiffToSource(i.dataDiff),r=this._getShouldReloadTileOptions(a),s={dataType:"source"};this._applyResourceTiming(s,o),this.fire(new t.n("data",Object.assign(Object.assign({},s),{sourceDataType:"metadata"}))),this.fire(new t.n("data",Object.assign(Object.assign({},s),{sourceDataType:"content",shouldReloadTileOptions:r})));}catch(e){if(this._isUpdatingWorker=!1,this._removed)return void this.fire(new t.n("dataabort",{dataType:"source"}));this.fire(new t.l(t.d(e)));}finally{this._hasPendingWorkerUpdate()&&this._updateWorkerData();}}))}_applyResourceTiming(e,i){var o;if(!this._collectResourceTiming)return;const a=null===(o=i.resourceTiming)||void 0===o?void 0:o[this.id];if(!a)return;const r=a.slice(0);(null==r?void 0:r.length)&&t.e(e,{resourceTiming:r});}_applyDiffToSource(e){if(!e)return;const t="string"==typeof this.promoteId?this.promoteId:void 0;if(!this._data.url&&!this._data.updateable){const e=function(e,t){const i=new Map;if(null==e)return i;if(null==e.type)return i;if("Feature"===e.type){const o=H(e,t);if(null==o)return;return i.set(o,e),i}if("FeatureCollection"===e.type){const o=new Set;for(const a of e.features){const e=H(a,t);if(null==e)return;if(o.has(e))return;o.add(e),i.set(e,a);}return i}}(this._data.geojson,t);if(!e)throw new Error(`GeoJSONSource "${this.id}": GeoJSON data is not compatible with updateData`);this._data={updateable:e};}if(!this._data.updateable)return;const i=function(e,t,i){var o,a;const r=[];if(t.removeAll)e.clear();else if(t.remove)for(const i of t.remove){const t=e.get(i);t&&(r.push(t.geometry),e.delete(i));}if(t.add)for(const o of t.add){const t=H(o,i);if(null==t)continue;const a=e.get(t);a&&r.push(a.geometry),r.push(o.geometry),e.set(t,o);}if(t.update)for(const i of t.update){const t=e.get(i.id);if(!t)continue;const s=!!i.newGeometry,n=i.removeAllProperties||(null===(o=i.removeProperties)||void 0===o?void 0:o.length)>0||(null===(a=i.addOrUpdateProperties)||void 0===a?void 0:a.length)>0;if(!s&&!n)continue;r.push(t.geometry);const l=Object.assign({},t);if(e.set(i.id,l),s&&(r.push(i.newGeometry),l.geometry=i.newGeometry),n){if(l.properties=i.removeAllProperties?{}:Object.assign({},l.properties||{}),i.removeProperties)for(const e of i.removeProperties)delete l.properties[e];if(i.addOrUpdateProperties)for(const{key:e,value:t}of i.addOrUpdateProperties)l.properties[e]=t;}}return r}(this._data.updateable,e,t);return e.removeAll||this._options.cluster?void 0:i}_getShouldReloadTileOptions(e){if(e)return {affectedBounds:e.filter(Boolean).map((e=>J(e)))}}shouldReloadTile(e,{affectedBounds:i}){if("loading"===e.state)return !0;if("unloaded"===e.state)return !1;const{buffer:o,extent:a}=this.workerOptions.geojsonVtOptions,r=function({x:e,y:i,z:o},a=0){const r=t.a4((e-a)/Math.pow(2,o)),s=t.a5((i+1+a)/Math.pow(2,o)),n=t.a4((e+1+a)/Math.pow(2,o)),l=t.a5((i-a)/Math.pow(2,o));return new G([r,s],[n,l])}(e.tileID.canonical,o/a);for(const e of i)if(r.intersects(e))return !0;return !1}loaded(){return !this._isUpdatingWorker&&!this._hasPendingWorkerUpdate()}loadTile(e){return t._(this,void 0,void 0,(function*(){const t=e.actor?"RT":"LT";e.actor=this.actor;const i={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity};e.abortController=new AbortController;const o=yield this.actor.sendAsync({type:t,data:i},e.abortController);delete e.abortController,e.unloadVectorData(),e.aborted||e.loadVectorData(o,this.map.painter,"RT"===t);}))}abortTile(e){return t._(this,void 0,void 0,(function*(){e.abortController&&(e.abortController.abort(),delete e.abortController),e.aborted=!0;}))}unloadTile(e){return t._(this,void 0,void 0,(function*(){e.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:e.uid,type:this.type,source:this.id}});}))}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}});}serialize(){return t.e({},this._options,{type:this.type,data:this._data.updateable?{type:"FeatureCollection",features:Array.from(this._data.updateable.values())}:this._data.url||this._data.geojson})}hasTransition(){return !1}}class te extends t.E{constructor(e,t,i,o){super(),this.flippedWindingOrder=!1,this.id=e,this.dispatcher=i,this.coordinates=t.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(o),this.options=t;}load(e){return t._(this,void 0,void 0,(function*(){this._loaded=!1,this.fire(new t.n("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{const t=yield u.getImage(yield this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,(null==t?void 0:t.data)&&(this.image=t.data,e&&(this.coordinates=e),this._finishLoading());}catch(e){this._request=null,this._loaded=!0,t.$(e)||this.fire(new t.l(t.d(e)));}}))}loaded(){return this._loaded}updateImage(e){return e.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=e.url,this.load(e.coordinates).finally((()=>this.texture=null)),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.n("data",{dataType:"source",sourceDataType:"metadata"})));}onAdd(e){this.map=e,this.load();}onRemove(){this._request&&(this._request.abort(),this._request=null);}setCoordinates(e){this.coordinates=e;const i=e.map(t.a7.fromLngLat);var o;return this.tileID=function(e){const i=t.a8.fromPoints(e),o=i.width(),a=i.height(),r=Math.max(o,a),s=Math.max(0,Math.floor(-Math.log(r)/Math.LN2)),n=Math.pow(2,s);return new t.aa(s,Math.floor((i.minX+i.maxX)/2*n),Math.floor((i.minY+i.maxY)/2*n))}(i),this.terrainTileRanges=this._getOverlappingTileRanges(i),this.minzoom=this.maxzoom=this.tileID.z,this.tileCoords=i.map((e=>this.tileID.getTilePoint(e)._round())),this.flippedWindingOrder=((o=this.tileCoords)[1].x-o[0].x)*(o[2].y-o[0].y)-(o[1].y-o[0].y)*(o[2].x-o[0].x)<0,this.fire(new t.n("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const e=this.map.painter.context,i=e.gl;this.texture||(this.texture=new t.T(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let o=!1;for(const e in this.tiles){const t=this.tiles[e];"loaded"!==t.state&&(t.state="loaded",t.texture=this.texture,o=!0);}o&&this.fire(new t.n("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));}loadTile(e){return t._(this,void 0,void 0,(function*(){var t;(null===(t=this.tileID)||void 0===t?void 0:t.equals(e.tileID.canonical))?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={}):e.state="errored";}))}serialize(){return {type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return !1}_getOverlappingTileRanges(e){const{minX:i,minY:o,maxX:a,maxY:r}=t.a8.fromPoints(e),s={};for(let e=0;e<=t.a9;e++){const t=Math.pow(2,e),n=Math.floor(i*t),l=Math.floor(o*t),c=Math.floor(a*t),h=Math.floor(r*t),u=(n%t+t)%t,d=c%t,_=Math.floor(n/t),p=Math.floor(c/t);s[e]={minWrap:_,maxWrap:p,minTileXWrapped:u,maxTileXWrapped:d,minTileY:l,maxTileY:h};}return s}}class ie extends te{constructor(e,t,i,o){super(e,t,i,o),this._onPlayingHandler=()=>{var e;null===(e=this.map)||void 0===e||e.triggerRepaint();},this.roundZoom=!0,this.type="video",this.options=t;}load(){return t._(this,void 0,void 0,(function*(){this._loaded=!1;const e=this.options;this.urls=[];for(const t of e.urls)this.urls.push((yield this.map._requestManager.transformRequest(t,"Source")).url);try{const e=yield t.ab(this.urls);if(this._loaded=!0,!e)return;this.video=e,this.video.loop=!0,this.video.addEventListener("playing",this._onPlayingHandler),this.map&&this.video.play(),this._finishLoading();}catch(e){this.fire(new t.l(t.d(e)));}}))}pause(){this.video&&this.video.pause();}play(){this.video&&this.video.play();}seek(e){if(this.video){const i=this.video.seekable;ei.end(0)?this.fire(new t.l(new t.ac(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=e;}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));}onRemove(){super.onRemove(),this.video&&(this.video.removeEventListener("playing",this._onPlayingHandler),this.video.pause());}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const e=this.map.painter.context,i=e.gl;this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new t.T(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let o=!1;for(const e in this.tiles){const t=this.tiles[e];"loaded"!==t.state&&(t.state="loaded",t.texture=this.texture,o=!0);}o&&this.fire(new t.n("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));}serialize(){return {type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class oe extends te{constructor(e,i,o,a){super(e,i,o,a),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((e=>!Array.isArray(e)||2!==e.length||e.some((e=>"number"!=typeof e))))||this.fire(new t.l(new t.ac(`sources.${e}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.l(new t.ac(`sources.${e}`,null,'missing required property "coordinates"'))),i.animate&&"boolean"!=typeof i.animate&&this.fire(new t.l(new t.ac(`sources.${e}`,null,'optional "animate" property must be a boolean value'))),i.canvas?"string"==typeof i.canvas||i.canvas instanceof HTMLCanvasElement||this.fire(new t.l(new t.ac(`sources.${e}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.l(new t.ac(`sources.${e}`,null,'missing required property "canvas"'))),this.options=i,this.animate=void 0===i.animate||i.animate;}load(){return t._(this,void 0,void 0,(function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.l(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());}))}getCanvas(){return this.canvas}onAdd(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play();}onRemove(){this.pause();}prepare(){let e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context,o=i.gl;this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):(this.texture=new t.T(i,this.canvas,o.RGBA,{premultiply:!0}),this.texture.bind(o.LINEAR,o.CLAMP_TO_EDGE));let a=!1;for(const e in this.tiles){const t=this.tiles[e];"loaded"!==t.state&&(t.state="loaded",t.texture=this.texture,a=!0);}a&&this.fire(new t.n("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));}serialize(){return {type:"canvas",animate:this.animate,canvas:this.options.canvas,coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const e of [this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return !0;return !1}}const ae={},re=e=>{switch(e){case "geojson":return ee;case "image":return te;case "raster":return q;case "raster-dem":return $;case "vector":return W;case "video":return ie;case "canvas":return oe}return ae[e]},se="RTLPluginLoaded";class ne extends t.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=B();}_syncState(e){return this.status=e,this.dispatcher.broadcast("SRPS",{pluginStatus:e,pluginURL:this.url}).catch((e=>{throw this.status="error",e}))}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null;}setRTLTextPlugin(e){return t._(this,arguments,void 0,(function*(e,t=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=n.resolveURL(e),!this.url)throw new Error(`requested url ${e} is invalid`);if("unavailable"===this.status){if(!t)return this._requestImport();this.status="deferred",this._syncState(this.status);}else if("requested"===this.status)return this._requestImport()}))}_requestImport(){return t._(this,void 0,void 0,(function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new t.n(se));}))}lazyLoad(){"unavailable"===this.status?this.status="requested":"deferred"===this.status&&this._requestImport();}}let le=null;function ce(){return le||(le=new ne),le}var he,ue;!function(e){e[e.Base=0]="Base",e[e.Parent=1]="Parent";}(he||(he={})),function(e){e[e.Departing=0]="Departing",e[e.Incoming=1]="Incoming";}(ue||(ue={}));class de{constructor(e,i){this.timeAdded=0,this.fadeEndTime=0,this.fadeOpacity=1,this.tileID=e,this.uid=t.ad(),this.uses=0,this.tileSize=i,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttFingerprint={},this.expiredRequestCount=0,this.state="loading";}isRenderable(e){return this.hasData()&&(!this.fadeEndTime||this.fadeOpacity>0)&&(e||!this.holdingForSymbolFade())}setCrossFadeLogic({fadingRole:e,fadingDirection:t,fadingParentID:i,fadeEndTime:o}){this.resetFadeLogic(),this.fadingRole=e,this.fadingDirection=t,this.fadingParentID=i,this.fadeEndTime=o;}setSelfFadeLogic(e){this.resetFadeLogic(),this.selfFading=!0,this.fadeEndTime=e;}resetFadeLogic(){this.fadingRole=null,this.fadingDirection=null,this.fadingParentID=null,this.selfFading=!1,this.timeAdded=c(),this.fadeEndTime=0,this.fadeOpacity=1;}wasRequested(){return "errored"===this.state||"loaded"===this.state||"reloading"===this.state}clearTextures(e){this.demTexture&&e.saveTileTexture(this.demTexture),this.demTexture=null;}loadVectorData(e,i,o){if(!0!==(null==e?void 0:e.etagUnmodified))if(this.hasData()&&this.unloadVectorData(),this.state="loaded",e){e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestEncoding=e.encoding,this.latestFeatureIndex.rawTileData=e.rawTileData,this.latestFeatureIndex.encoding=e.encoding):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData,this.latestFeatureIndex.encoding=this.latestEncoding)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(e,t){const i={};if(!t)return i;for(const o of e){const e=o.layerIds.map((e=>t.getLayer(e))).filter(Boolean);if(0!==e.length){o.layers=e,o.stateDependentLayerIds&&(o.stateDependentLayers=o.stateDependentLayerIds.map((t=>e.filter((e=>e.id===t))[0])));for(const t of e)i[t.id]=o;}}return i}(e.buckets,null==i?void 0:i.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.af){if(this.hasSymbolBuckets=!0,!o)break;i.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.af&&i.hasRTLText){this.hasRTLText=!0,ce().lazyLoad();break}}this.queryPadding=0;for(const e in this.buckets){const t=this.buckets[e];this.queryPadding=Math.max(this.queryPadding,i.style.getLayer(e).queryRadius(t));}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage),this.dashPositions=e.dashPositions;}else this.collisionBoxArray=new t.ae;else this.state="loaded";}unloadVectorData(){for(const e in this.buckets)this.buckets[e].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.imageAtlas=null,this.dashPositions=null,this.latestFeatureIndex=null,this.state="unloaded";}getBucket(e){return this.buckets[e.id]}upload(e){for(const t in this.buckets){const i=this.buckets[t];i.uploadPending()&&i.upload(e);}const i=e.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new t.T(e,this.imageAtlas.image,i.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new t.T(e,this.glyphAtlasImage,i.ALPHA),this.glyphAtlasImage=null);}prepare(e){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(e,this.imageAtlasTexture);}queryRenderedFeatures(e,t,i,o,a,r,s,n,l,c,h){var u;return (null===(u=this.latestFeatureIndex)||void 0===u?void 0:u.rawTileData)?this.latestFeatureIndex.query({queryGeometry:o,cameraQueryGeometry:a,scale:r,tileSize:this.tileSize,pixelPosMatrix:c,transform:n,params:s,queryPadding:this.queryPadding*l,getElevation:h},e,t,i):{}}querySourceFeatures(e,i){const o=this.latestFeatureIndex;if(!(null==o?void 0:o.rawTileData))return;const a=o.loadVTLayers(),r=(null==i?void 0:i.sourceLayer)?i.sourceLayer:"",s=a[t.ag]||a[r];if(!s)return;const n=t.ah(null==i?void 0:i.filter,null==i?void 0:i.globalState),{z:l,x:c,y:h}=this.tileID.canonical,u={z:l,x:c,y:h};for(let i=0;ie)t=!1;else if(i)if(this.expirationTime({zoom:0,x:0,y:0,wrap:e,fullyVisible:!1}),b=[],y=[];if(e.renderWorldCopies&&n.allowWorldCopies())for(let e=1;e<=3;e++)b.push(x(-e)),b.push(x(e));for(b.push(x(0));b.length>0;){const _=b.pop(),f=_.x,x=_.y;let w=_.fullyVisible;const T={x:f,y:x,z:_.zoom},P=n.getTileBoundingVolume(T,_.wrap,e.elevation,i);if(!w){const e=ye(o,P,a);if(0===e)continue;w=2===e;}const C=n.distanceToTile2d(r.x,r.y,T,P);let M=c;l&&(M=(i.calculateTileZoom||Pe)(e.zoom+t.ar(e.tileSize/i.tileSize),C,g,v,e.fov)),M=(i.roundZoom?Math.round:Math.floor)(M),M=Math.max(0,M);const I=Math.min(M,u);if(_.wrap=n.getWrap(s,T,_.wrap),_.zoom>=I){if(_.zoom>1),wrap:_.wrap,fullyVisible:w});}return y.sort(((e,t)=>e.distanceSq-t.distanceSq)).map((e=>e.tileID))}const Ie=t.a8.fromPoints([new t.P(0,0),new t.P(t.a6,t.a6)]);function Ee(e){return "raster"===e||"image"===e||"video"===e}function Se(e,t,i,o,a,r,s){if(!t.hasData())return !1;const{tileID:n,fadingRole:l,fadingDirection:c,fadingParentID:h}=t;if(l===he.Base&&c===ue.Incoming&&h)return i[h.key]=h,!0;const u=Math.max(n.overscaledZ-a,r);for(let a=n.overscaledZ-1;a>=u;a--){const r=n.scaledTo(a),l=e.getLoadedTile(r);if(l)return t.setCrossFadeLogic({fadingRole:he.Base,fadingDirection:ue.Incoming,fadingParentID:l.tileID,fadeEndTime:o+s}),l.setCrossFadeLogic({fadingRole:he.Parent,fadingDirection:ue.Departing,fadeEndTime:o+s}),i[r.key]=r,!0}return !1}function ze(e,t,i,o,a,r){if(!t.hasData())return !1;const s=t.tileID.children(a);let n=Re(e,t,s,i,o,a,r);if(n)return !0;for(const l of s)Re(e,t,l.children(a),i,o,a,r)&&(n=!0);return n}function Re(e,t,i,o,a,r,s){if(i[0].overscaledZ>=r)return !1;let n=!1;for(const r of i){const i=e.getLoadedTile(r);if(!i)continue;const{fadingRole:l,fadingDirection:c,fadingParentID:h}=i;l===he.Base&&c===ue.Departing&&h||(i.setCrossFadeLogic({fadingRole:he.Base,fadingDirection:ue.Departing,fadingParentID:t.tileID,fadeEndTime:a+s}),t.setCrossFadeLogic({fadingRole:he.Parent,fadingDirection:ue.Incoming,fadeEndTime:a+s})),o[r.key]=r,n=!0;}return n}function De(e,t,i,o){const a=e.tileID;return !!e.selfFading||!e.hasData()&&!!t.has(a)&&(e.setSelfFadeLogic(i+o),!0)}function Ae(e,t){var i;e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0;let o=t.tileID.canonical.x-e.tileID.canonical.x;const a=t.tileID.canonical.y-e.tileID.canonical.y,r=Math.pow(2,e.tileID.canonical.z),s=t.tileID.key;0===o&&0===a||Math.abs(a)>1||(Math.abs(o)>1&&(1===Math.abs(o+r)?o+=r:1===Math.abs(o-r)&&(o-=r)),t.dem&&e.dem&&(e.dem.backfillBorder(t.dem,o,a),(null===(i=e.neighboringTiles)||void 0===i?void 0:i[s])&&(e.neighboringTiles[s].backfilled=!0)));}class Le{constructor(){this._tiles={};}handleWrapJump(e){const t={};for(const i in this._tiles){const o=this._tiles[i];o.tileID=o.tileID.unwrapTo(o.tileID.wrap+e),t[o.tileID.key]=o;}this._tiles=t;}setFeatureState(e,t){for(const i in this._tiles)this._tiles[i].setFeatureState(e,t);}getAllTiles(){return Object.values(this._tiles)}getAllIds(e=!1){return e?Object.values(this._tiles).map((e=>e.tileID)).sort(t.au).map((e=>e.key)):Object.keys(this._tiles)}getTileById(e){return this._tiles[e]}setTile(e,t){this._tiles[e]=t;}deleteTileById(e){delete this._tiles[e];}getLoadedTile(e){const t=this.getTileById(e.key);return (null==t?void 0:t.hasData())?t:null}isIdRenderable(e,t=!1){var i;return null===(i=this.getTileById(e))||void 0===i?void 0:i.isRenderable(t)}getRenderableIds(e=0,i){const o=[];for(const e of this.getAllIds())this.isIdRenderable(e,i)&&o.push(this.getTileById(e));return i?o.sort(((i,o)=>{const a=i.tileID,r=o.tileID,s=new t.P(a.canonical.x,a.canonical.y)._rotate(-e),n=new t.P(r.canonical.x,r.canonical.y)._rotate(-e);return a.overscaledZ-r.overscaledZ||n.y-s.y||n.x-s.x})).map((e=>e.tileID.key)):o.map((e=>e.tileID)).sort(t.au).map((e=>e.key))}}class Fe extends t.E{constructor(e,i,o){super(),this.id=e,this.dispatcher=o,this.on("data",(e=>{this._dataHandler(e);})),this.on("dataloading",(()=>{this._sourceErrored=!1;})),this.on("error",(()=>{this._sourceErrored=this._source.loaded();})),this._source=((e,t,i,o)=>{const a=new(re(t.type))(e,t,i,o);if(a.id!==e)throw new Error(`Expected Source id to be ${e} instead of ${a.id}`);return a})(e,i,o,this),this._inViewTiles=new Le,this._outOfViewCache=new t.av(0,(e=>this._unloadTile(e))),this._timers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._rasterFadeDuration=0,this._maxFadingAncestorLevels=5,this._state=new _e,this._didEmitContent=!1,this._updated=!1;}onAdd(e){var t;this.map=e,this._maxTileCacheSize=e?e._maxTileCacheSize:null,this._maxTileCacheZoomLevels=e?e._maxTileCacheZoomLevels:null,(null===(t=this._source)||void 0===t?void 0:t.onAdd)&&this._source.onAdd(e);}onRemove(e){var t;for(const e of this._inViewTiles.getAllTiles())e.unloadVectorData();this.clearTiles(),(null===(t=this._source)||void 0===t?void 0:t.onRemove)&&this._source.onRemove(e),this._inViewTiles=new Le;}loaded(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;if(!(void 0===this.used&&void 0===this.usedForTerrain||this.used||this.usedForTerrain))return !0;if(!this._updated)return !1;for(const e of this._inViewTiles.getAllTiles())if("loaded"!==e.state&&"errored"!==e.state)return !1;return !0}getSource(){return this._source}getState(){return this._state}pause(){this._paused=!0;}resume(){if(!this._paused)return;const e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform,this.terrain);}_loadTile(e,i,o){return t._(this,void 0,void 0,(function*(){try{const t=yield this._source.loadTile(e);this._tileLoaded(e,i,o,t);}catch(i){e.state="errored",404!==i.status?this._source.fire(new t.l(t.d(i),{tile:e})):this.update(this.transform,this.terrain);}}))}_unloadTile(e){this._source.unloadTile&&this._source.unloadTile(e);}_abortTile(e){this._source.abortTile&&this._source.abortTile(e),this._source.fire(new t.n("dataabort",{tile:e,coord:e.tileID,dataType:"source"}));}serialize(){return this._source.serialize()}prepare(e){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._inViewTiles,this.map?this.map.painter:null);for(const t of this._inViewTiles.getAllTiles())t.upload(e),t.prepare(this.map.style.imageManager);}getIds(){return this._inViewTiles.getAllIds(!0)}getRenderableIds(e){var t;return this._inViewTiles.getRenderableIds(null===(t=this.transform)||void 0===t?void 0:t.bearingInRadians,e)}hasRenderableParent(e){const t=e.overscaledZ-1;if(t>=this._source.minzoom){const i=this.getLoadedTile(e.scaledTo(t));if(i)return this._inViewTiles.isIdRenderable(i.tileID.key)}return !1}reload(e,t=void 0){if(this._paused)this._shouldReloadOnResume=!0;else {this._outOfViewCache.reset();for(const i of this._inViewTiles.getAllIds()){const o=this._inViewTiles.getTileById(i);t&&!this._source.shouldReloadTile(o,t)||(e?this._reloadTile(i,"expired"):"errored"!==o.state&&this._reloadTile(i,"reloading"));}}}_reloadTile(e,i){return t._(this,void 0,void 0,(function*(){const t=this._inViewTiles.getTileById(e);t&&("loading"!==t.state&&(t.state=i),yield this._loadTile(t,e,i));}))}_tileLoaded(e,i,o,a){e.timeAdded=c(),e.selfFading&&(e.fadeEndTime=e.timeAdded+this._rasterFadeDuration),"expired"===o&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),(null==a?void 0:a.unmodified)||("raster-dem"===this.getSource().type&&e.dem&&function(e,t){var i,o,a;const r=t.getRenderableIds();for(const s of r){if(!(null===(i=e.neighboringTiles)||void 0===i?void 0:i[s]))continue;const r=t.getTileById(s);e.neighboringTiles[s].backfilled||Ae(e,r),(null===(a=null===(o=r.neighboringTiles)||void 0===o?void 0:o[e.tileID.key])||void 0===a?void 0:a.backfilled)||Ae(r,e);}}(e,this._inViewTiles),this._state.initializeTileState(e,this.map?this.map.painter:null),e.aborted||this._source.fire(new t.n("data",{dataType:"source",tile:e,coord:e.tileID})));}getTile(e){return this.getTileByID(e.key)}getTileByID(e){return this._inViewTiles.getTileById(e)}_retainLoadedChildren(e,t){const i=this._getLoadedDescendents(t),o=new Set;for(const a of t){const t=i[a.key];if(!(null==t?void 0:t.length)){o.add(a);continue}const r=a.overscaledZ+Fe.maxOverzooming,s=t.filter((e=>e.tileID.overscaledZ<=r));if(!s.length){o.add(a);continue}const n=Math.min(...s.map((e=>e.tileID.overscaledZ))),l=s.filter((e=>e.tileID.overscaledZ===n)).map((e=>e.tileID));for(const t of l)e[t.key]=t;this._areDescendentsComplete(l,n,a.overscaledZ)||o.add(a);}return o}_getLoadedDescendents(e){var t;const i={};for(const o of this._inViewTiles.getAllTiles().filter((e=>e.hasData())))for(const a of e)o.tileID.isChildOf(a)&&(i[t=a.key]||(i[t]=[]),i[a.key].push(o));return i}_areDescendentsComplete(e,t,i){return 1===e.length&&e[0].isOverscaled()?e[0].overscaledZ===t:Math.pow(4,t-i)===e.length}getLoadedTile(e){return this._inViewTiles.getLoadedTile(e)}updateCacheSize(e){const i=Math.ceil(e.width/this._source.tileSize)+1,o=Math.ceil(e.height/this._source.tileSize)+1,a=Math.floor(i*o*(null===this._maxTileCacheZoomLevels?t.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),r="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,a):a;this._outOfViewCache.setMaxSize(r);}handleWrapJump(e){const t=Math.round((e-(void 0===this._prevLng?e:this._prevLng))/360);this._prevLng=e,t&&(this._inViewTiles.handleWrapJump(t),this._resetTileReloadTimers());}update(e,i){if(!this._sourceLoaded||this._paused)return;let o;this.transform=e,this.terrain=i,this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this.used||this.usedForTerrain?this._source.tileID?o=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((e=>new t.a3(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y))):(o=Me(e,{tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:"vector"===this._source.type&&void 0!==this.map._zoomLevelsToOverscale?e.maxZoom-this.map._zoomLevelsToOverscale:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:i,calculateTileZoom:this._source.calculateTileZoom}),this._source.hasTile&&(o=o.filter((e=>this._source.hasTile(e))))):o=[],this.usedForTerrain&&(o=this._addTerrainIdealTiles(o));const a=0===o.length&&!this._updated&&this._didEmitContent;this._updated=!0,a&&this.fire(new t.n("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));const r=Ce(e,this._source),s=this._updateRetainedTiles(o,r),n=Ee(this._source.type);n&&this._rasterFadeDuration>0&&!i&&function(e,i,o,a,r,s,n){const l=c(),h=t.at(i);for(const t of i){const i=e.getTileById(t.key);i.fadingDirection!==ue.Departing&&0!==i.fadeOpacity||i.resetFadeLogic(),Se(e,i,o,l,a,r,n)||ze(e,i,o,l,s,n)||De(i,h,l,n)||i.resetFadeLogic();}}(this._inViewTiles,o,s,this._maxFadingAncestorLevels,this._source.minzoom,this._source.maxzoom,this._rasterFadeDuration),n?this._cleanUpRasterTiles(s):this._cleanUpVectorTiles(s);}_cleanUpRasterTiles(e){for(const t of this._inViewTiles.getAllIds())e[t]||this._removeTile(t);}_cleanUpVectorTiles(e){for(const t of this._inViewTiles.getAllIds()){const i=this._inViewTiles.getTileById(t);e[t]?i.clearSymbolFadeHold():i.hasSymbolBuckets?i.holdingForSymbolFade()?i.symbolFadeFinished()&&this._removeTile(t):i.setSymbolHoldDuration(this.map._fadeDuration):this._removeTile(t);}}_addTerrainIdealTiles(e){const t=[];for(const i of e)if(i.canonical.z>this._source.minzoom){const e=i.scaledTo(i.canonical.z-1);t.push(e);const o=i.scaledTo(Math.max(this._source.minzoom,Math.min(i.canonical.z,5)));t.push(o);}return e.concat(t)}releaseSymbolFadeTiles(){for(const e of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(e).holdingForSymbolFade()&&this._removeTile(e);}_updateRetainedTiles(e,t){var i;const o=new Set;for(const t of e)this._addTile(t).hasData()||o.add(t);const a=e.reduce(((e,t)=>(e[t.key]=t,e)),{}),r=this._retainLoadedChildren(a,o),s={},n=Math.max(t-Fe.maxUnderzooming,this._source.minzoom);for(const e of r){let t=this._inViewTiles.getTileById(e.key),o=null==t?void 0:t.wasRequested();for(let r=e.overscaledZ-1;r>=n;--r){const n=e.scaledTo(r);if(s[n.key])break;if(s[n.key]=!0,t=this.getTile(n),!t&&o&&(t=this._addTile(n)),t){const e=t.hasData();if((e||!(null===(i=this.map)||void 0===i?void 0:i.cancelPendingTileRequestsWhileZooming)||o)&&(a[n.key]=n),o=t.wasRequested(),e)break}}}return a}_addTile(e){let i=this._inViewTiles.getTileById(e.key);if(i)return i;i=this._outOfViewCache.getAndRemove(e),i&&(i.resetFadeLogic(),this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null));const o=i;return i||(i=new de(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,e.key,i.state)),i.uses++,this._inViewTiles.setTile(e.key,i),o||this._source.fire(new t.n("dataloading",{tile:i,coord:i.tileID,dataType:"source"})),i}_setTileReloadTimer(e,t){this._clearTileReloadTimer(e);const i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout((()=>{this._reloadTile(e,"expired"),delete this._timers[e];}),i));}_clearTileReloadTimer(e){const t=this._timers[e];t&&(clearTimeout(t),delete this._timers[e]);}_resetTileReloadTimers(){for(const e in this._timers)clearTimeout(this._timers[e]),delete this._timers[e];for(const e of this._inViewTiles.getAllIds()){const t=this._inViewTiles.getTileById(e);this._setTileReloadTimer(e,t);}}refreshTiles(e){for(const t of this._inViewTiles.getAllIds()){const i=this._inViewTiles.getTileById(t);(this._inViewTiles.isIdRenderable(t)||"errored"==i.state)&&e.some((e=>e.equals(i.tileID.canonical)))&&this._reloadTile(t,"expired");}}_removeTile(e){const t=this._inViewTiles.getTileById(e);t&&(t.uses--,this._inViewTiles.deleteTileById(e),this._clearTileReloadTimer(e),t.uses>0||(t.hasData()&&"reloading"!==t.state?this._outOfViewCache.add(t.tileID,t,t.getExpiryTimeout()):(t.aborted=!0,this._abortTile(t),this._unloadTile(t))));}_dataHandler(e){"source"===e.dataType&&("metadata"!==e.sourceDataType?"content"===e.sourceDataType&&this._sourceLoaded&&!this._paused&&(this.reload(e.sourceDataChanged,e.shouldReloadTileOptions),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0):this._sourceLoaded=!0);}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const e of this._inViewTiles.getAllIds())this._removeTile(e);this._outOfViewCache.reset();}tilesIn(e,i,o){const a=[],r=this.transform;if(!r)return a;const s=r.getCoveringTilesDetailsProvider().allowWorldCopies(),n=o?r.getCameraQueryGeometry(e):e,l=e=>r.screenPointToMercatorCoordinate(e,this.terrain),c=this.transformBbox(e,l,!s),h=this.transformBbox(n,l,!s),u=this.getIds(),d=t.a8.fromPoints(h);for(const e of u){const o=this._inViewTiles.getTileById(e);if(o.holdingForSymbolFade())continue;const n=s?[o.tileID]:[o.tileID.unwrapTo(-1),o.tileID.unwrapTo(0)],l=Math.pow(2,r.zoom-o.tileID.overscaledZ),u=i*o.queryPadding*t.a6/o.tileSize/l;for(const e of n){const i=d.map((i=>e.getTilePoint(new t.a7(i.x,i.y))));if(i.expandBy(u),i.intersects(Ie)){const t=c.map((t=>e.getTilePoint(t))),i=h.map((t=>e.getTilePoint(t)));a.push({tile:o,tileID:s?e:e.unwrapTo(0),queryGeometry:t,cameraQueryGeometry:i,scale:l});}}}return a}transformBbox(e,i,o){let a=e.map(i);if(o){const o=t.a8.fromPoints(e);o.shrinkBy(.001*Math.min(o.width(),o.height()));const r=o.map(i);t.a8.fromPoints(a).covers(r)||(a=a.map((e=>e.x>.5?new t.a7(e.x-1,e.y,e.z):e)));}return a}getVisibleCoordinates(e){const t=this.getRenderableIds(e).map((e=>this._inViewTiles.getTileById(e).tileID));return this.transform&&this.transform.populateCache(t),t}hasTransition(){return !!this._source.hasTransition()||Ee(this._source.type)&&function(e,t){if(t<=0)return !1;const i=c();for(const t of e.getAllTiles())if(t.fadeEndTime>=i)return !0;return !1}(this._inViewTiles,this._rasterFadeDuration)}setRasterFadeDuration(e){this._rasterFadeDuration=e;}setFeatureState(e,i,o){e||(e=t.ag),this._state.updateState(e,i,o);}removeFeatureState(e,i,o){e||(e=t.ag),this._state.removeFeatureState(e,i,o);}getFeatureState(e,i){return e||(e=t.ag),this._state.getState(e,i)}setDependencies(e,t,i){const o=this._inViewTiles.getTileById(e);o&&o.setDependencies(t,i);}reloadTilesForDependencies(e,t){for(const i of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(i).hasDependency(e,t)&&this._reloadTile(i,"reloading");this._outOfViewCache.filter((i=>!i.hasDependency(e,t)));}areTilesLoaded(){for(const e of this._inViewTiles.getAllTiles())if("loaded"!==e.state&&"errored"!==e.state)return !1;return !0}}Fe.maxUnderzooming=10,Fe.maxOverzooming=3;class ke{constructor(e,t){this.reset(e,t);}reset(e,t){this.points=e||[],this._distances=[0];for(let e=1;e0?(a-s)/n:0;return this.points[r].mult(1-l).add(this.points[i].mult(l))}}function Be(e,t){let i=!0;return "always"===e||"never"!==e&&"never"!==t||(i=!1),i}class Oe{constructor(e,t,i){const o=this.boxCells=[],a=this.circleCells=[];this.xCellCount=Math.ceil(e/i),this.yCellCount=Math.ceil(t/i);for(let e=0;ethis.width||o<0||t>this.height)return [];const n=[];if(e<=0&&t<=0&&this.width<=i&&this.height<=o){if(a)return [{key:null,x1:e,y1:t,x2:i,y2:o}];for(let e=0;e0}hitTestCircle(e,t,i,o,a){const r=e-i,s=e+i,n=t-i,l=t+i;if(s<0||r>this.width||l<0||n>this.height)return !1;const c=[];return this._forEachCell(r,n,s,l,this._queryCellCircle,c,{hitTest:!0,overlapMode:o,circle:{x:e,y:t,radius:i},seenUids:{box:{},circle:{}}},a),c.length>0}_queryCell(e,t,i,o,a,r,s,n){const{seenUids:l,hitTest:c,overlapMode:h}=s,u=this.boxCells[a],d=1e-6;if(null!==u){const a=this.bboxes;for(const s of u)if(!l.box[s]){l.box[s]=!0;const u=4*s,_=this.boxKeys[s];if(e<=a[u+2]+d&&t<=a[u+3]+d&&i>=a[u+0]-d&&o>=a[u+1]-d&&(!n||n(_))&&(!c||!Be(h,_.overlapMode))&&(r.push({key:_,x1:a[u],y1:a[u+1],x2:a[u+2],y2:a[u+3]}),c))return !0}}const _=this.circleCells[a];if(null!==_){const a=this.circles;for(const s of _)if(!l.circle[s]){l.circle[s]=!0;const u=3*s,d=this.circleKeys[s];if(this._circleAndRectCollide(a[u],a[u+1],a[u+2],e,t,i,o)&&(!n||n(d))&&(!c||!Be(h,d.overlapMode))){const e=a[u],t=a[u+1],i=a[u+2];if(r.push({key:d,x1:e-i,y1:t-i,x2:e+i,y2:t+i}),c)return !0}}}return !1}_queryCellCircle(e,t,i,o,a,r,s,n){const{circle:l,seenUids:c,overlapMode:h}=s,u=this.boxCells[a];if(null!==u){const e=this.bboxes;for(const t of u)if(!c.box[t]){c.box[t]=!0;const i=4*t,o=this.boxKeys[t];if(this._circleAndRectCollide(l.x,l.y,l.radius,e[i+0],e[i+1],e[i+2],e[i+3])&&(!n||n(o))&&!Be(h,o.overlapMode))return r.push(!0),!0}}const d=this.circleCells[a];if(null!==d){const e=this.circles;for(const t of d)if(!c.circle[t]){c.circle[t]=!0;const i=3*t,o=this.circleKeys[t];if(this._circlesCollide(e[i],e[i+1],e[i+2],l.x,l.y,l.radius)&&(!n||n(o))&&!Be(h,o.overlapMode))return r.push(!0),!0}}}_forEachCell(e,t,i,o,a,r,s,n){const l=this._convertToXCellCoord(e),c=this._convertToYCellCoord(t),h=this._convertToXCellCoord(i),u=this._convertToYCellCoord(o);for(let d=l;d<=h;d++)for(let l=c;l<=u;l++)if(a.call(this,e,t,i,o,this.xCellCount*l+d,r,s,n))return}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,i,o,a,r){const s=o-e,n=a-t,l=i+r;return l*l>s*s+n*n}_circleAndRectCollide(e,t,i,o,a,r,s){const n=(r-o)/2,l=Math.abs(e-(o+n));if(l>n+i)return !1;const c=(s-a)/2,h=Math.abs(t-(a+c));if(h>c+i)return !1;if(l<=n||h<=c)return !0;const u=l-n,d=h-c;return u*u+d*d<=i*i}}function je(e,t){const i=1/(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]),o=1/(t[8]*t[8]+t[9]*t[9]+t[10]*t[10]),a=t[0]*i,r=t[4]*i,s=t[8]*o,n=t[1]*i,l=t[5]*i,c=t[9]*o,h=t[2]*i,u=t[6]*i,d=t[10]*o;e[0]=a,e[1]=r,e[2]=s,e[4]=n,e[5]=l,e[6]=c,e[8]=h,e[9]=u,e[10]=d;const _=t[12],p=t[13],m=t[14];return e[12]=-a*_-n*p-h*m,e[13]=-r*_-l*p-u*m,e[14]=-s*_-c*p-d*m,e[3]=0,e[7]=0,e[11]=0,e[15]=1,e}const Ne=t.O();function Ze(e,i,a){const r=t.O();if(!e){const{vecSouth:e,vecEast:t}=Ge(i),a=o();a[0]=t[0],a[1]=t[1],a[2]=e[0],a[3]=e[1],s=a,(d=(l=(n=a)[0])*(u=n[3])-(h=n[2])*(c=n[1]))&&(s[0]=u*(d=1/d),s[1]=-c*d,s[2]=-h*d,s[3]=l*d),r[0]=a[0],r[1]=a[1],r[4]=a[2],r[5]=a[3];}var s,n,l,c,h,u,d;return t.S(r,r,[1/a,1/a,1]),r}function Ue(e,i,o,a){if(e){const e=t.O();if(!i){const{vecSouth:t,vecEast:i}=Ge(o);e[0]=i[0],e[1]=i[1],e[4]=t[0],e[5]=t[1];}return t.S(e,e,[a,a,1]),e}return o.pixelsToClipSpaceMatrix}function Ge(e){const i=Math.cos(e.rollInRadians),o=Math.sin(e.rollInRadians),a=Math.cos(e.pitchInRadians),r=Math.cos(e.bearingInRadians),s=Math.sin(e.bearingInRadians),n=t.az();n[0]=-r*a*o-s*i,n[1]=-s*a*o+r*i;const l=t.aA(n);l<1e-9?t.aB(n):t.aC(n,n,1/l);const c=t.az();c[0]=r*a*i-s*o,c[1]=s*a*i+r*o;const h=t.aA(c);return h<1e-9?t.aB(c):t.aC(c,c,1/h),{vecEast:c,vecSouth:n}}function Ve(e,i,o,a){let r;a?(r=[e,i,a(e,i),1],t.aE(r,r,o)):(r=[e,i,0,1],nt(r,r,o));const s=r[3];return {point:new t.P(r[0]/s,r[1]/s),signedDistanceFromCamera:s,isOccluded:!1}}function We(e,t){return .5+e/t*.5}function qe(e,t){return e.x>=-t[0]&&e.x<=t[0]&&e.y>=-t[1]&&e.y<=t[1]}function $e(e,i,o,a,r,s,n,l,c,h,u,d,_){const p=o?e.textSizeData:e.iconSizeData,m=t.aw(p,i.transform.zoom),f=[256/i.width*2+1,256/i.height*2+1],g=o?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;g.clear();const v=e.lineVertexArray,x=o?e.text.placedSymbolArray:e.icon.placedSymbolArray,b=i.transform.width/i.transform.height;let y=!1;for(let o=0;oMath.abs(o.x-i.x)*a?{useVertical:!0}:(e===t.ax.vertical?i.yo.x)?{needsFlipping:!0}:null}function Ke(e){const{projectionContext:i,pitchedLabelPlaneMatrixInverse:o,symbol:a,fontSize:r,flip:s,keepUpright:n,glyphOffsetArray:l,dynamicLayoutVertexArray:c,aspectRatio:h,rotateToLine:u}=e,d=r/24,_=a.lineOffsetX*d,p=a.lineOffsetY*d;let m;if(a.numGlyphs>1){const e=a.glyphStartIndex+a.numGlyphs,t=a.lineStartIndex,r=a.lineStartIndex+a.lineLength,c=He(d,l,_,p,s,a,u,i);if(!c)return {notEnoughRoom:!0};const f=et(c.first.point.x,c.first.point.y,i,o),g=et(c.last.point.x,c.last.point.y,i,o);if(n&&!s){const e=Xe(a.writingMode,f,g,h);if(e)return e}m=[c.first];for(let o=a.glyphStartIndex+1;o0?n.point:Ye(i.tileAnchorPoint,s,e,1,i),c=et(e.x,e.y,i,o),u=et(l.x,l.y,i,o),d=Xe(a.writingMode,c,u,h);if(d)return d}const e=at(d*l.getoffsetX(a.glyphStartIndex),_,p,s,a.segment,a.lineStartIndex,a.lineStartIndex+a.lineLength,i,u);if(!e||i.projectionCache.anyProjectionOccluded)return {notEnoughRoom:!0};m=[e];}for(const e of m)t.aD(c,e.point,e.angle);return {}}function Ye(e,t,i,o,a){const r=e.add(e.sub(t)._unit()),s=Je(r.x,r.y,a).point,n=i.sub(s);return i.add(n._mult(o/n.mag()))}function Qe(e,i,o){const a=i.projectionCache;if(a.projections[e])return a.projections[e];const r=new t.P(i.lineVertexArray.getx(e),i.lineVertexArray.gety(e)),s=Je(r.x,r.y,i);if(s.signedDistanceFromCamera>0)return a.projections[e]=s.point,a.anyProjectionOccluded||(a.anyProjectionOccluded=s.isOccluded),s.point;const n=e-o.direction;return Ye(0===o.distanceFromAnchor?i.tileAnchorPoint:new t.P(i.lineVertexArray.getx(n),i.lineVertexArray.gety(n)),r,o.previousVertex,o.absOffsetX-o.distanceFromAnchor+1,i)}function Je(e,t,i){const o=e+i.translation[0],a=t+i.translation[1];let r;return i.pitchWithMap?(r=Ve(o,a,i.pitchedLabelPlaneMatrix,i.getElevation),r.isOccluded=!1):(r=i.transform.projectTileCoordinates(o,a,i.unwrappedTileID,i.getElevation),r.point.x=(.5*r.point.x+.5)*i.width,r.point.y=(.5*-r.point.y+.5)*i.height),r}function et(e,i,o,a){if(o.pitchWithMap){const r=[e,i,0,1];return t.aE(r,r,a),o.transform.projectTileCoordinates(r[0]/r[3],r[1]/r[3],o.unwrappedTileID,o.getElevation).point}return {x:e/o.width*2-1,y:1-i/o.height*2}}function tt(e,t,i){return i.transform.projectTileCoordinates(e,t,i.unwrappedTileID,i.getElevation)}function it(e,t,i){return e._unit()._perp()._mult(t*i)}function ot(e,i,o,a,r,s,n,l,c){if(l.projectionCache.offsets[e])return l.projectionCache.offsets[e];const h=o.add(i);if(e+c.direction=r)return l.projectionCache.offsets[e]=h,h;const u=Qe(e+c.direction,l,c),d=it(u.sub(o),n,c.direction),_=o.add(d),p=u.add(d);return l.projectionCache.offsets[e]=t.aF(s,h,_,p)||h,l.projectionCache.offsets[e]}function at(e,t,i,o,a,r,s,n,l){const c=o?e-t:e+t;let h=c>0?1:-1,u=0;o&&(h*=-1,u=Math.PI),h<0&&(u+=Math.PI);let d,_=h>0?r+a:r+a+1;n.projectionCache.cachedAnchorPoint?d=n.projectionCache.cachedAnchorPoint:(d=Je(n.tileAnchorPoint.x,n.tileAnchorPoint.y,n).point,n.projectionCache.cachedAnchorPoint=d);let p,m,f=d,g=d,v=0,x=0;const b=Math.abs(c),y=[];let w;for(;v+x<=b;){if(_+=h,_=s)return null;v+=x,g=f,m=p;const e={absOffsetX:b,direction:h,distanceFromAnchor:v,previousVertex:g};if(f=Qe(_,n,e),0===i)y.push(g),w=f.sub(g);else {let t;const o=f.sub(g);t=0===o.mag()?it(Qe(_+h,n,e).sub(f),i,h):it(o,i,h),m||(m=g.add(t)),p=ot(_,t,f,r,s,m,i,n,e),y.push(m),w=p.sub(m);}x=w.mag();}const T=w._mult((b-v)/x)._add(m||g),P=u+Math.atan2(f.y-g.y,f.x-g.x);return y.push(T),{point:T,angle:l?P:0,path:y}}const rt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function st(e,t){for(let i=0;i=1;e--)_.push(s.path[e]);for(let e=1;ee.signedDistanceFromCamera<=0))?[]:e.map((e=>e.point));}let f=[];if(_.length>0){const e=_[0].clone(),i=_[0].clone();for(let t=1;t<_.length;t++)e.x=Math.min(e.x,_[t].x),e.y=Math.min(e.y,_[t].y),i.x=Math.max(i.x,_[t].x),i.y=Math.max(i.y,_[t].y);f=e.x>=o.x&&i.x<=a.x&&e.y>=o.y&&i.y<=a.y?[_]:i.xa.x||i.ya.y?[]:t.aG([_],o.x,o.y,a.x,a.y);}for(const t of f){r.reset(t,.25*i);let o=0;o=r.length<=.5*i?1:Math.ceil(r.paddedLength/p)+1;for(let t=0;t{const o=Ve(e.x,e.y,i,t.getElevation),a=t.transform.projectTileCoordinates(o.point.x,o.point.y,t.unwrappedTileID,t.getElevation);return a.point.x=(.5*a.point.x+.5)*t.width,a.point.y=(.5*-a.point.y+.5)*t.height,a}))}(e,t);return function(e){let t=0,i=0,o=0,a=0;for(let r=0;ri&&(i=a,t=o));return e.slice(t,t+i)}(i)}queryRenderedSymbols(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};const i=[],o=new t.a8;for(const a of e){const e=new t.P(a.x+lt,a.y+lt);o.extend(e),i.push(e);}const{minX:a,minY:r,maxX:s,maxY:n}=o,l=this.grid.query(a,r,s,n).concat(this.ignoredGrid.query(a,r,s,n)),c={},h={};for(const e of l){const o=e.key;if(void 0===c[o.bucketInstanceId]&&(c[o.bucketInstanceId]={}),c[o.bucketInstanceId][o.featureIndex])continue;const a=[new t.P(e.x1,e.y1),new t.P(e.x2,e.y1),new t.P(e.x2,e.y2),new t.P(e.x1,e.y2)];t.aH(i,a)&&(c[o.bucketInstanceId][o.featureIndex]=!0,void 0===h[o.bucketInstanceId]&&(h[o.bucketInstanceId]=[]),h[o.bucketInstanceId].push(o.featureIndex));}return h}insertCollisionBox(e,t,i,o,a,r){(i?this.ignoredGrid:this.grid).insert({bucketInstanceId:o,featureIndex:a,collisionGroupID:r,overlapMode:t},e[0],e[1],e[2],e[3]);}insertCollisionCircles(e,t,i,o,a,r){const s=i?this.ignoredGrid:this.grid,n={bucketInstanceId:o,featureIndex:a,collisionGroupID:r,overlapMode:t};for(let t=0;t=this.screenRightBoundary||othis.screenBottomBoundary}isInsideGrid(e,t,i,o){return i>=0&&e=0&&tthis.projectAndGetPerspectiveRatio(e.x,e.y,a,c,u)));S=e.some((e=>!e.isOccluded)),E=e.map((e=>new t.P(e.x,e.y)));}else S=!0;return {box:t.aI(E),allPointsOccluded:!S}}}class ht{constructor(e,t,i,o){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e.placed?t:-t))):o&&i?1:0,this.placed=i;}isHidden(){return 0===this.opacity&&!this.placed}}class ut{constructor(e,t,i,o,a){this.text=new ht(e?e.text:null,t,i,a),this.icon=new ht(e?e.icon:null,t,o,a);}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class dt{constructor(e,t,i){this.text=e,this.icon=t,this.skipFade=i;}}class _t{constructor(e,t,i,o,a){this.bucketInstanceId=e,this.featureIndex=t,this.sourceLayerIndex=i,this.bucketIndex=o,this.tileID=a;}}class pt{constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.collisionGroups={};}get(e){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[e]){const t=++this.maxGroupID;this.collisionGroups[e]={ID:t,predicate:e=>e.collisionGroupID===t};}return this.collisionGroups[e]}}function mt(e,i,o,a,r){const{horizontalAlign:s,verticalAlign:n}=t.aP(e);return new t.P(-(s-.5)*i+a[0]*r,-(n-.5)*o+a[1]*r)}class ft{constructor(e,t,i,o,a){this.transform=e.clone(),this.terrain=t,this.collisionIndex=new ct(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=i,this.retainedQueryData={},this.collisionGroups=new pt(o),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=a,a&&(a.prevPlacement=void 0),this.placedOrientations={};}_getTerrainElevationFunc(e){const t=this.terrain;return t?(i,o)=>t.getElevation(e,i,o):null}getBucketParts(e,i,o,a){const r=o.getBucket(i),s=o.latestFeatureIndex;if(!r||!s||i.id!==r.layerIds[0])return;const n=o.collisionBoxArray,l=r.layers[0].layout,c=r.layers[0].paint,h=Math.pow(2,this.transform.zoom-o.tileID.overscaledZ),u=o.tileSize/t.a6,d=o.tileID.toUnwrapped(),_="map"===l.get("text-rotation-alignment"),p=t.aK(o,1,this.transform.zoom),m=t.aL(this.collisionIndex.transform,o,c.get("text-translate"),c.get("text-translate-anchor")),f=t.aL(this.collisionIndex.transform,o,c.get("icon-translate"),c.get("icon-translate-anchor")),g=Ze(_,this.transform,p);this.retainedQueryData[r.bucketInstanceId]=new _t(r.bucketInstanceId,s,r.sourceLayerIndex,r.index,o.tileID);const v={bucket:r,layout:l,translationText:m,translationIcon:f,unwrappedTileID:d,pitchedLabelPlaneMatrix:g,scale:h,textPixelRatio:u,holdingForFade:o.holdingForSymbolFade(),collisionBoxArray:n,partiallyEvaluatedTextSize:t.aw(r.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(r.sourceID)};if(a)for(const t of r.sortKeyRanges){const{sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:a}=t;e.push({sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:a,parameters:v});}else e.push({symbolInstanceStart:0,symbolInstanceEnd:r.symbolInstances.length,parameters:v});}attemptAnchorPlacement(e,i,o,a,r,s,n,l,c,h,u,d,_,p,m,f,g,v,x,b){var y,w,T;const P=t.aM[e.textAnchor],C=[e.textOffset0,e.textOffset1],M=mt(P,o,a,C,r),I=this.collisionIndex.placeCollisionBox(i,d,l,c,h,n,s,f,u.predicate,x,M,b);if((!v||this.collisionIndex.placeCollisionBox(v,d,l,c,h,n,s,g,u.predicate,x,M,b).placeable)&&I.placeable){let e;if((null===(y=this.prevPlacement)||void 0===y?void 0:y.variableOffsets[_.crossTileID])&&(null===(T=null===(w=this.prevPlacement)||void 0===w?void 0:w.placements[_.crossTileID])||void 0===T?void 0:T.text)&&(e=this.prevPlacement.variableOffsets[_.crossTileID].anchor),0===_.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[_.crossTileID]={textOffset:C,width:o,height:a,anchor:P,textBoxScale:r,prevAnchor:e},this.markUsedJustification(p,P,_,m),p.allowVerticalPlacement&&(this.markUsedOrientation(p,m,_),this.placedOrientations[_.crossTileID]=m),{shift:M,placedGlyphBoxes:I}}}placeLayerBucketPart(e,i,o){const{bucket:a,layout:r,translationText:s,translationIcon:n,unwrappedTileID:l,pitchedLabelPlaneMatrix:c,textPixelRatio:h,holdingForFade:u,collisionBoxArray:d,partiallyEvaluatedTextSize:_,collisionGroup:p}=e.parameters,m=r.get("text-optional"),f=r.get("icon-optional"),g=t.aN(r,"text-overlap","text-allow-overlap"),v="always"===g,x=t.aN(r,"icon-overlap","icon-allow-overlap"),b="always"===x,y="map"===r.get("text-rotation-alignment"),w="map"===r.get("text-pitch-alignment"),T="none"!==r.get("icon-text-fit"),P="viewport-y"===r.get("symbol-z-order"),C=v&&(b||!a.hasIconData()||f),M=b&&(v||!a.hasTextData()||m);!a.collisionArrays&&d&&a.deserializeCollisionBoxes(d);const I=this.retainedQueryData[a.bucketInstanceId].tileID,E=this._getTerrainElevationFunc(I),S=this.transform.getFastPathSimpleProjectionMatrix(I),z=(e,d,b)=>{var P,z;if(i[e.crossTileID])return;if(u)return void(this.placements[e.crossTileID]=new dt(!1,!1,!1));let R=!1,D=!1,A=!0,L=null,F={box:null,placeable:!1,offscreen:null,occluded:!1},k={placeable:!1},B=null,O=null,j=null,N=0,Z=0,U=0;d.textFeatureIndex?N=d.textFeatureIndex:e.useRuntimeCollisionCircles&&(N=e.featureIndex),d.verticalTextFeatureIndex&&(Z=d.verticalTextFeatureIndex);const G=d.textBox;if(G){const i=i=>{let o=t.ax.horizontal;if(a.allowVerticalPlacement&&!i&&this.prevPlacement){const t=this.prevPlacement.placedOrientations[e.crossTileID];t&&(this.placedOrientations[e.crossTileID]=t,o=t,this.markUsedOrientation(a,o,e));}return o},r=(i,o)=>{if(a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&d.verticalTextBox){for(const e of a.writingModes)if(e===t.ax.vertical?(F=o(),k=F):F=i(),null==F?void 0:F.placeable)break}else F=i();},c=e.textAnchorOffsetStartIndex,u=e.textAnchorOffsetEndIndex;if(u===c){const o=(t,i)=>{const o=this.collisionIndex.placeCollisionBox(t,g,h,I,l,w,y,s,p.predicate,E,void 0,S);return (null==o?void 0:o.placeable)&&(this.markUsedOrientation(a,i,e),this.placedOrientations[e.crossTileID]=i),o};r((()=>o(G,t.ax.horizontal)),(()=>{const i=d.verticalTextBox;return a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&i?o(i,t.ax.vertical):{box:null,offscreen:null}})),i(null==F?void 0:F.placeable);}else {let _=t.aM[null===(z=null===(P=this.prevPlacement)||void 0===P?void 0:P.variableOffsets[e.crossTileID])||void 0===z?void 0:z.anchor];const m=(t,i,r)=>{const d=t.x2-t.x1,m=t.y2-t.y1,f=e.textBoxScale,v=T&&"never"===x?i:null;let b=null,P="never"===g?1:2,C="never";_&&P++;for(let i=0;im(G,d.iconBox,t.ax.horizontal)),(()=>{const i=d.verticalTextBox;return a.allowVerticalPlacement&&!(null==F?void 0:F.placeable)&&e.numVerticalGlyphVertices>0&&i?m(i,d.verticalIconBox,t.ax.vertical):{box:null,occluded:!0,offscreen:null}})),F&&(R=F.placeable,A=F.offscreen);const f=i(null==F?void 0:F.placeable);if(!R&&this.prevPlacement){const t=this.prevPlacement.variableOffsets[e.crossTileID];t&&(this.variableOffsets[e.crossTileID]=t,this.markUsedJustification(a,t.anchor,e,f));}}}if(B=F,R=null==B?void 0:B.placeable,A=null==B?void 0:B.offscreen,e.useRuntimeCollisionCircles&&e.centerJustifiedTextSymbolIndex>=0){const i=a.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),n=t.ay(a.textSizeData,_,i),h=r.get("text-padding");O=this.collisionIndex.placeCollisionCircles(g,i,a.lineVertexArray,a.glyphOffsetArray,n,l,c,o,w,p.predicate,e.collisionCircleDiameter,h,s,E),O.circles.length&&O.collisionDetected&&!o&&t.w("Collisions detected, but collision boxes are not shown"),R=v||O.circles.length>0&&!O.collisionDetected,A&&(A=O.offscreen);}if(d.iconFeatureIndex&&(U=d.iconFeatureIndex),d.iconBox){const e=e=>this.collisionIndex.placeCollisionBox(e,x,h,I,l,w,y,n,p.predicate,E,T&&L?L:void 0,S);k&&k.placeable&&d.verticalIconBox?(j=e(d.verticalIconBox),D=j.placeable):(j=e(d.iconBox),D=j.placeable),A&&(A=j.offscreen);}const V=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,W=f||0===e.numIconVertices;V||W?W?V||D&&(D=R):R=D&&R:D=R=D&&R;const q=D&&j.placeable;if(R&&B.placeable&&this.collisionIndex.insertCollisionBox(B.box,g,r.get("text-ignore-placement"),a.bucketInstanceId,k&&k.placeable&&Z?Z:N,p.ID),q&&this.collisionIndex.insertCollisionBox(j.box,x,r.get("icon-ignore-placement"),a.bucketInstanceId,U,p.ID),O&&R&&this.collisionIndex.insertCollisionCircles(O.circles,g,r.get("text-ignore-placement"),a.bucketInstanceId,N,p.ID),o&&this.storeCollisionData(a.bucketInstanceId,b,d,B,j,O),0===e.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");if(0===a.bucketInstanceId)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[e.crossTileID]=new dt((R||C)&&!(null==B?void 0:B.occluded),(D||M)&&!(null==j?void 0:j.occluded),A||a.justReloaded),i[e.crossTileID]=!0;};if(P){if(0!==e.symbolInstanceStart)throw new Error("bucket.bucketInstanceId should be 0");const t=a.getSortedSymbolIndexes(-this.transform.bearingInRadians);for(let e=t.length-1;e>=0;--e){const i=t[e];z(a.symbolInstances.get(i),a.collisionArrays[i],i);}}else for(let t=e.symbolInstanceStart;t=0&&(e.text.placedSymbolArray.get(t).crossTileID=r>=0&&t!==r?0:o.crossTileID);}markUsedOrientation(e,i,o){const a=i===t.ax.horizontal||i===t.ax.horizontalOnly?i:0,r=i===t.ax.vertical?i:0,s=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex];for(const t of s)e.text.placedSymbolArray.get(t).placedOrientation=a;o.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).placedOrientation=r);}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;const t=this.prevPlacement;let i=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;const o=t?t.symbolFadeChange(e):1,a=t?t.opacities:{},r=t?t.variableOffsets:{},s=t?t.placedOrientations:{};for(const e in this.placements){const t=this.placements[e],r=a[e];r?(this.opacities[e]=new ut(r,o,t.text,t.icon),i||(i=t.text!==r.text.placed),i||(i=t.icon!==r.icon.placed)):(this.opacities[e]=new ut(null,o,t.text,t.icon,t.skipFade),i||(i=t.text||t.icon));}for(const e in a){const t=a[e];if(!this.opacities[e]){const a=new ut(t,o,!1,!1);a.isHidden()||(this.opacities[e]=a,i||(i=t.text.placed),i||(i=t.icon.placed));}}for(const e in r)this.variableOffsets[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.variableOffsets[e]=r[e]);for(const e in s)this.placedOrientations[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.placedOrientations[e]=s[e]);if(t&&void 0===t.lastPlacementChangeTime)throw new Error("Last placement time for previous placement is not defined");i?this.lastPlacementChangeTime=e:"number"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e);}updateLayerOpacities(e,t){const i={};for(const o of t){const t=o.getBucket(e);t&&o.latestFeatureIndex&&e.id===t.layerIds[0]&&this.updateBucketOpacities(t,o.tileID,i,o.collisionBoxArray);}}updateBucketOpacities(e,i,o,a){e.hasTextData()&&(e.text.opacityVertexArray.clear(),e.text.hasVisibleVertices=!1),e.hasIconData()&&(e.icon.opacityVertexArray.clear(),e.icon.hasVisibleVertices=!1),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();const r=e.layers[0],s=r.layout,n=new ut(null,0,!1,!1,!0),l=s.get("text-allow-overlap"),c=s.get("icon-allow-overlap"),h=r._unevaluatedLayout.hasValue("text-variable-anchor")||r._unevaluatedLayout.hasValue("text-variable-anchor-offset"),u="map"===s.get("text-rotation-alignment"),d="map"===s.get("text-pitch-alignment"),_="none"!==s.get("icon-text-fit"),p=new ut(null,0,l&&(c||!e.hasIconData()||s.get("icon-optional")),c&&(l||!e.hasTextData()||s.get("text-optional")),!0);!e.collisionArrays&&a&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(a);const m=(e,t,i)=>{for(let o=0;o0,v=this.placedOrientations[a.crossTileID],x=v===t.ax.vertical,b=v===t.ax.horizontal||v===t.ax.horizontalOnly;if(r>0||s>0){const t=Ct(c.text);m(e.text,r,x?Mt:t),m(e.text,s,b?Mt:t);const i=c.text.isHidden(),o=[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex];for(const t of o)t>=0&&(e.text.placedSymbolArray.get(t).hidden=i||x?1:0);a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=i||b?1:0);const n=this.variableOffsets[a.crossTileID];n&&this.markUsedJustification(e,n.anchor,a,v);const l=this.placedOrientations[a.crossTileID];l&&(this.markUsedJustification(e,"left",a,l),this.markUsedOrientation(e,l,a));}if(g){const t=Ct(c.icon),i=!(_&&a.verticalPlacedIconSymbolIndex&&x);a.placedIconSymbolIndex>=0&&(m(e.icon,a.numIconVertices,i?t:Mt),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=c.icon.isHidden()),a.verticalPlacedIconSymbolIndex>=0&&(m(e.icon,a.numVerticalIconVertices,i?Mt:t),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=c.icon.isHidden());}const y=(null==f?void 0:f.has(i))?f.get(i):{text:null,icon:null};if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){const o=e.collisionArrays[i];if(o){let i=new t.P(0,0);if(o.textBox||o.verticalTextBox){let t=!0;if(h){const e=this.variableOffsets[l];e?(i=mt(e.anchor,e.width,e.height,e.textOffset,e.textBoxScale),u&&i._rotate(d?-this.transform.bearingInRadians:this.transform.bearingInRadians)):t=!1;}if(o.textBox||o.verticalTextBox){let a;o.textBox&&(a=x),o.verticalTextBox&&(a=b),gt(e.textCollisionBox.collisionVertexArray,c.text.placed,!t||a,y.text,i.x,i.y);}}if(o.iconBox||o.verticalIconBox){const t=Boolean(!b&&o.verticalIconBox);let a;o.iconBox&&(a=t),o.verticalIconBox&&(a=!t),gt(e.iconCollisionBox.collisionVertexArray,c.icon.placed,a,y.icon,_?i.x:0,_?i.y:0);}}}}if(e.sortFeatures(-this.transform.bearingInRadians),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.text.opacityVertexArray.length!==e.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${e.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${e.text.layoutVertexArray.length}) / 4`);if(e.icon.opacityVertexArray.length!==e.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${e.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${e.icon.layoutVertexArray.length}) / 4`);e.bucketInstanceId in this.collisionCircleArrays&&(e.collisionCircleArray=this.collisionCircleArrays[e.bucketInstanceId],delete this.collisionCircleArrays[e.bucketInstanceId]);}symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTimee}setStale(){this.stale=!0;}}function gt(e,t,i,o,a,r){o&&0!==o.length||(o=[0,0,0,0]);const s=o[0]-lt,n=o[1]-lt,l=o[2]-lt,c=o[3]-lt;e.emplaceBack(t?1:0,i?1:0,a||0,r||0,s,n),e.emplaceBack(t?1:0,i?1:0,a||0,r||0,l,n),e.emplaceBack(t?1:0,i?1:0,a||0,r||0,l,c),e.emplaceBack(t?1:0,i?1:0,a||0,r||0,s,c);}const vt=Math.pow(2,25),xt=Math.pow(2,24),bt=Math.pow(2,17),yt=Math.pow(2,16),wt=Math.pow(2,9),Tt=Math.pow(2,8),Pt=Math.pow(2,1);function Ct(e){if(0===e.opacity&&!e.placed)return 0;if(1===e.opacity&&e.placed)return 4294967295;const t=e.placed?1:0,i=Math.floor(127*e.opacity);return i*vt+t*xt+i*bt+t*yt+i*wt+t*Tt+i*Pt+t}const Mt=0;class It{constructor(e){this._sortAcrossTiles="viewport-y"!==e.layout.get("symbol-z-order")&&!e.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];}continuePlacement(e,t,i,o,a){const r=this._bucketParts;for(;this._currentTileIndexe.sortKey-t.sortKey)));this._currentPartIndex!this._forceFullPlacement&&c()-a>2;for(;this._currentPlacementIndex>=0;){const a=i[e[this._currentPlacementIndex]],s=this.placement.collisionIndex.transform.zoom;if(t.aQ(a)&&a.layout&&(!a.minzoom||a.minzoom<=s)&&(!a.maxzoom||a.maxzoom>s)){if(this._inProgressLayer||(this._inProgressLayer=new It(a)),this._inProgressLayer.continuePlacement(o[a.source],this.placement,this._showCollisionBoxes,a,r))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;}commit(e){return this.placement.commit(e),this.placement}}const St=512/t.a6/2;class zt{constructor(e,i,o){this.tileID=e,this.bucketInstanceId=o,this._symbolsByKey={};const a=new Map;for(let e=0;e({x:Math.floor(e.anchorX*St),y:Math.floor(e.anchorY*St)}))),crossTileIDs:i.map((e=>e.crossTileID))};if(o.positions.length>128){const e=new t.aR(o.positions.length,16,Uint16Array);for(const{x:t,y:i}of o.positions)e.add(t,i);e.finish(),delete o.positions,o.index=e;}this._symbolsByKey[e]=o;}}getScaledCoordinates(e,i){const{x:o,y:a,z:r}=this.tileID.canonical,{x:s,y:n,z:l}=i.canonical,c=St/Math.pow(2,l-r),h=(n*t.a6+e.anchorY)*c,u=a*t.a6*St;return {x:Math.floor((s*t.a6+e.anchorX)*c-o*t.a6*St),y:Math.floor(h-u)}}findMatches(e,t,i){const o=this.tileID.canonical.ze))}}class Rt{constructor(){this.maxCrossTileID=0;}generate(){return ++this.maxCrossTileID}}class Dt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;}handleWrapJump(e){const t=Math.round((e-this.lng)/360);if(0!==t)for(const e in this.indexes){const i=this.indexes[e],o={};for(const e in i){const a=i[e];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+t),o[a.tileID.key]=a;}this.indexes[e]=o;}this.lng=e;}addBucket(e,t,i){var o,a,r;if(null===(o=this.indexes[e.overscaledZ])||void 0===o?void 0:o[e.key]){if(this.indexes[e.overscaledZ][e.key].bucketInstanceId===t.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(e.overscaledZ,this.indexes[e.overscaledZ][e.key]);}for(let e=0;ee.overscaledZ)for(const i in o){const a=o[i];a.tileID.isChildOf(e)&&a.findMatches(t.symbolInstances,e,s);}else {const a=o[e.scaledTo(Number(i)).key];a&&a.findMatches(t.symbolInstances,e,s);}}for(let e=0;e 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\n#ifdef GLOBE\nif ((pos.y <-32767.5) || (pos.y > 32766.5)) {return 0.0;}\n#endif\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}const float PI=3.141592653589793;uniform mat4 u_projection_matrix;"),projectionMercator:kt("","float projectLineThickness(float tileY) {return 1.0;}float projectCircleRadius(float tileY) {return 1.0;}vec4 projectTile(vec2 p) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);return result;}vec4 projectTile(vec2 p,vec2 rawPos) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);if (rawPos.y <-32767.5 || rawPos.y > 32766.5) {result.z=-10000000.0;}return result;}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_projection_matrix*vec4(posInTile,elevation,1.0);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {return projectTileWithElevation(posInTile,elevation);}"),projectionGlobe:kt("","#define GLOBE_RADIUS 6371008.8\nuniform highp vec4 u_projection_tile_mercator_coords;uniform highp vec4 u_projection_clipping_plane;uniform highp float u_projection_transition;uniform mat4 u_projection_fallback_matrix;vec3 globeRotateVector(vec3 vec,vec2 angles) {vec3 axisRight=vec3(vec.z,0.0,-vec.x);vec3 axisUp=cross(axisRight,vec);axisRight=normalize(axisRight);axisUp=normalize(axisUp);vec2 t=tan(angles);return normalize(vec+axisRight*t.x+axisUp*t.y);}mat3 globeGetRotationMatrix(vec3 spherePos) {vec3 axisRight=vec3(spherePos.z,0.0,-spherePos.x);vec3 axisDown=cross(axisRight,spherePos);axisRight=normalize(axisRight);axisDown=normalize(axisDown);return mat3(axisRight,axisDown,spherePos\n);}float circumferenceRatioAtTileY(float tileY) {float mercator_pos_y=u_projection_tile_mercator_coords.y+u_projection_tile_mercator_coords.w*tileY;float spherical_y=2.0*atan(exp(PI-(mercator_pos_y*PI*2.0)))-PI*0.5;return cos(spherical_y);}float projectLineThickness(float tileY) {float thickness=1.0/circumferenceRatioAtTileY(tileY); \nif (u_projection_transition < 0.999) {return mix(1.0,thickness,u_projection_transition);} else {return thickness;}}vec3 projectToSphere(vec2 translatedPos,vec2 rawPos) {vec2 mercator_pos=u_projection_tile_mercator_coords.xy+u_projection_tile_mercator_coords.zw*translatedPos;vec2 spherical;spherical.x=mercator_pos.x*PI*2.0+PI;spherical.y=2.0*atan(exp(PI-(mercator_pos.y*PI*2.0)))-PI*0.5;float len=cos(spherical.y);vec3 pos=vec3(sin(spherical.x)*len,sin(spherical.y),cos(spherical.x)*len\n);if (rawPos.y <-32767.5) {pos=vec3(0.0,1.0,0.0);}if (rawPos.y > 32766.5) {pos=vec3(0.0,-1.0,0.0);}return pos;}vec3 projectToSphere(vec2 posInTile) {return projectToSphere(posInTile,vec2(0.0,0.0));}float globeComputeClippingZ(vec3 spherePos) {return (1.0-(dot(spherePos,u_projection_clipping_plane.xyz)+u_projection_clipping_plane.w));}vec4 interpolateProjection(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);globePosition.z=globeComputeClippingZ(elevatedPos)*globePosition.w;if (u_projection_transition > 0.999) {return globePosition;}vec4 flatPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);const float z_globeness_threshold=0.2;vec4 result=globePosition;result.z=mix(0.0,globePosition.z,clamp((u_projection_transition-z_globeness_threshold)/(1.0-z_globeness_threshold),0.0,1.0));result.xyw=mix(flatPosition.xyw,globePosition.xyw,u_projection_transition);if ((posInTile.y <-32767.5) || (posInTile.y > 32766.5)) {result=globePosition;const float poles_hidden_anim_percentage=0.02;result.z=mix(globePosition.z,100.0,pow(max((1.0-u_projection_transition)/poles_hidden_anim_percentage,0.0),8.0));}return result;}vec4 interpolateProjectionFor3D(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);if (u_projection_transition > 0.999) {return globePosition;}vec4 fallbackPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);return mix(fallbackPosition,globePosition,u_projection_transition);}vec4 projectTile(vec2 posInTile) {return interpolateProjection(posInTile,projectToSphere(posInTile),0.0);}vec4 projectTile(vec2 posInTile,vec2 rawPos) {return interpolateProjection(posInTile,projectToSphere(posInTile,rawPos),0.0);}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return interpolateProjection(posInTile,projectToSphere(posInTile),elevation);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {vec3 spherePos=projectToSphere(posInTile,posInTile);return interpolateProjectionFor3D(posInTile,spherePos,elevation);}"),background:kt("uniform vec4 u_color;uniform float u_opacity;void main() {fragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),backgroundPattern:kt("uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;void main() {gl_Position=projectTile(a_pos);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:kt("in vec3 v_data;in float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));fragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);const float epsilon=0.5/255.0;if (fragColor.r < epsilon && fragColor.g < epsilon && fragColor.b < epsilon && fragColor.a < epsilon) {discard;}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform highp float u_globe_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;uniform vec2 u_translate;in vec2 a_pos;out vec3 v_data;out float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 pos_raw=a_pos+32768.0;vec2 extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);vec2 circle_center=floor(pos_raw/8.0)+u_translate;float ele=get_elevation(circle_center);v_visibility=calculate_visibility(projectTileWithElevation(circle_center,ele));if (u_pitch_with_map) {\n#ifdef GLOBE\nvec3 center_vector=projectToSphere(circle_center);\n#endif\nfloat angle_scale=u_globe_extrude_scale;vec2 corner_position=circle_center;if (u_scale_with_map) {angle_scale*=(radius+stroke_width);corner_position+=extrude*u_extrude_scale*(radius+stroke_width);} else {\n#ifdef GLOBE\nvec4 projected_center=interpolateProjection(circle_center,center_vector,ele);\n#else\nvec4 projected_center=projectTileWithElevation(circle_center,ele);\n#endif\ncorner_position+=extrude*u_extrude_scale*(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);angle_scale*=(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);}\n#ifdef GLOBE\nvec2 angles=extrude*angle_scale;vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(corner_position,corner_vector,ele);\n#else\ngl_Position=projectTileWithElevation(corner_position,ele);\n#endif\n} else {gl_Position=projectTileWithElevation(circle_center,ele);if (gl_Position.z/gl_Position.w > 1.0) {gl_Position.xy=vec2(10000.0);}if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}"),clippingMask:kt(Lt,"in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),heatmap:kt("uniform highp float u_intensity;in vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);fragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;uniform highp float u_globe_extrude_scale;in vec2 a_pos;out vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 pos_raw=a_pos+32768.0;vec2 unscaled_extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 circle_center=floor(pos_raw/8.0);\n#ifdef GLOBE\nvec2 angles=v_extrude*radius*u_globe_extrude_scale;vec3 center_vector=projectToSphere(circle_center);vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(circle_center+extrude,corner_vector,0.0);\n#else\ngl_Position=projectTileFor3D(circle_center+extrude,get_elevation(circle_center));\n#endif\n}"),heatmapTexture:kt("uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;in vec2 v_pos;void main() {float t=texture(u_image,v_pos).r;vec4 color=texture(u_color_ramp,vec2(t,0.5));fragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(0.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:kt("in float v_placed;in float v_notUsed;void main() {float alpha=0.5;fragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {fragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {fragColor*=.1;}}","in vec2 a_anchor_pos;in vec2 a_placed;in vec2 a_box_real;uniform vec2 u_pixel_extrude_scale;out float v_placed;out float v_notUsed;void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:kt("in float v_radius;in vec2 v_extrude;in float v_collision;void main() {float alpha=0.5;float stroke_radius=0.9;float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);fragColor=color*alpha*opacity_t;}","in vec2 a_pos;in float a_radius;in vec2 a_flags;uniform vec2 u_viewport_size;out float v_radius;out vec2 v_extrude;out float v_collision;void main() {float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_collision=collision;gl_Position=vec4((a_pos/u_viewport_size*2.0-1.0)*vec2(1.0,-1.0),0.0,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),colorRelief:kt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;uniform vec4 u_unpack;uniform sampler2D u_elevation_stops;uniform sampler2D u_color_stops;uniform int u_color_ramp_size;uniform float u_opacity;in vec2 v_pos;float getElevation(vec2 coord) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}float getElevationStop(int stop) {float x=(float(stop)+0.5)/float(u_color_ramp_size);vec4 data=texture(u_elevation_stops,vec2(x,0))*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {float el=getElevation(v_pos);int r=(u_color_ramp_size-1);int l=0;float el_l=getElevationStop(l);float el_r=getElevationStop(r);while(r-l > 1){int m=(r+l)/2;float el_m=getElevationStop(m);if(el < el_m){r=m;el_r=el_m;}else\n{l=m;el_l=el_m;}}float x=(float(l)+(el-el_l)/(el_r-el_l)+0.5)/float(u_color_ramp_size);fragColor=u_opacity*texture(u_color_stops,vec2(x,0));\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_dimension;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_pos/8192.0)*scale+epsilon;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),debug:kt("uniform highp vec4 u_color;uniform sampler2D u_overlay;in vec2 v_uv;void main() {vec4 overlay_color=texture(u_overlay,v_uv);fragColor=mix(u_color,overlay_color,overlay_color.a);}","in vec2 a_pos;out vec2 v_uv;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=projectTileWithElevation(a_pos*u_overlay_scale,get_elevation(a_pos));}"),depth:kt(Lt,"in vec2 a_pos;void main() {\n#ifdef GLOBE\ngl_Position=projectTileFor3D(a_pos,0.0);\n#else\ngl_Position=u_projection_matrix*vec4(a_pos,0.0,1.0);\n#endif\n}"),fill:kt("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\nfragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_fill_translate;in vec2 a_pos;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=projectTile(a_pos+u_fill_translate,a_pos);}"),fillOutline:kt("in vec2 v_pos;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=outline_color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_world;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n}"),fillOutlinePattern:kt("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;in vec2 v_pos_a;in vec2 v_pos_b;in vec2 v_pos;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;out vec2 v_pos;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=projectTile(a_pos+u_fill_translate,a_pos);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n}"),fillPattern:kt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}"),fillExtrusion:kt("in vec4 v_color;void main() {fragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;in vec2 a_pos;in vec4 a_normal_ed;\n#ifdef TERRAIN3D\nin vec2 a_centroid;\n#endif\nout vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;\n#ifdef GLOBE\nvec3 spherePos=projectToSphere(posInTile,a_pos);gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);\n#else\ngl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);\n#endif\nfloat colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;vec3 normalForLighting=normal/16384.0;float directional=clamp(dot(normalForLighting,u_lightpos),0.0,1.0);\n#ifdef GLOBE\nmat3 rotMatrix=globeGetRotationMatrix(spherePos);normalForLighting=rotMatrix*normalForLighting;directional=mix(directional,clamp(dot(normalForLighting,u_lightpos_globe),0.0,1.0),u_projection_transition);\n#endif\ndirectional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}"),fillExtrusionPattern:kt("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;in vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);fragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;in vec2 a_pos;in vec4 a_normal_ed;\n#ifdef TERRAIN3D\nin vec2 a_centroid;\n#endif\n#ifdef GLOBE\nout vec3 v_sphere_pos;\n#endif\nout vec2 v_pos_a;out vec2 v_pos_b;out vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;\n#ifdef GLOBE\nvec3 spherePos=projectToSphere(posInTile,a_pos);vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);v_sphere_pos=elevatedPos;gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);\n#else\ngl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);\n#endif\nvec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,elevation*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}"),hillshadePrepare:kt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {vec2 epsilon=1.0/u_dimension;float tileSize=u_dimension.x-2.0;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))*tileSize/pow(2.0,exaggeration+(28.2562-u_zoom));fragColor=clamp(vec4(deriv.x/8.0+0.5,deriv.y/8.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;in vec2 a_pos;in vec2 a_texture_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:kt("uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_latrange;uniform float u_exaggeration;uniform vec4 u_accent;uniform int u_method;uniform float u_altitudes[NUM_ILLUMINATION_SOURCES];uniform float u_azimuths[NUM_ILLUMINATION_SOURCES];uniform vec4 u_shadows[NUM_ILLUMINATION_SOURCES];uniform vec4 u_highlights[NUM_ILLUMINATION_SOURCES];\n#define PI 3.141592653589793\n#define STANDARD 0\n#define COMBINED 1\n#define IGOR 2\n#define MULTIDIRECTIONAL 3\n#define BASIC 4\nfloat get_aspect(vec2 deriv){return deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);}void igor_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float aspect=get_aspect(deriv);float azimuth=u_azimuths[0]+PI;float slope_stength=atan(length(deriv))*2.0/PI;float aspect_strength=1.0-abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);float shadow_strength=slope_stength*aspect_strength;float highlight_strength=slope_stength*(1.0-aspect_strength);fragColor=u_shadows[0]*shadow_strength+u_highlights[0]*highlight_strength;}void standard_hillshade(vec2 deriv){float azimuth=u_azimuths[0]+PI;float slope=atan(0.625*length(deriv));float aspect=get_aspect(deriv);float intensity=u_exaggeration;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadows[0],u_highlights[0],shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);fragColor=accent_color*(1.0-shade_color.a)+shade_color;}void basic_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor=u_highlights[0]*(2.0*shade-1.0);}else\n{fragColor=u_shadows[0]*(1.0-2.0*shade);}}void multidirectional_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;fragColor=vec4(0,0,0,0);for(int i=0; i < NUM_ILLUMINATION_SOURCES; i++){float cos_alt=cos(u_altitudes[i]);float sin_alt=sin(u_altitudes[i]);float cos_az=-cos(u_azimuths[i]);float sin_az=-sin(u_azimuths[i]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor+=u_highlights[i]*(2.0*shade-1.0)/float(NUM_ILLUMINATION_SOURCES);}else\n{fragColor+=u_shadows[i]*(1.0-2.0*shade)/float(NUM_ILLUMINATION_SOURCES);}}}void combined_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=acos((sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv)));cang=clamp(cang,0.0,PI/2.0);float shade=cang*atan(length(deriv))*4.0/PI/PI;float highlight=(PI/2.0-cang)*atan(length(deriv))*4.0/PI/PI;fragColor=u_shadows[0]*shade+u_highlights[0]*highlight;}void main() {vec4 pixel=texture(u_image,v_pos);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));vec2 deriv=((pixel.rg*8.0)-4.0)/scaleFactor;if (u_method==BASIC) {basic_hillshade(deriv);} else if (u_method==COMBINED) {combined_hillshade(deriv);} else if (u_method==IGOR) {igor_hillshade(deriv);} else if (u_method==MULTIDIRECTIONAL) {multidirectional_hillshade(deriv);} else if (u_method==STANDARD) {standard_hillshade(deriv);} else {standard_hillshade(deriv);}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);v_pos=a_pos/8192.0;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),line:kt("uniform lowp float u_device_pixel_ratio;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp float v_linesofar;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),lineGradient:kt("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;in highp vec2 v_uv;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nin vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),linePattern:kt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;in vec2 v_normal;in vec2 v_width2;in float v_linesofar;in float v_gamma_scale;in float v_width;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture(u_image,pos_a),texture(u_image,pos_b),u_fade);fragColor=color*alpha*opacity;\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_linesofar;out float v_gamma_scale;out float v_width;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),lineSDF:kt("uniform lowp float u_device_pixel_ratio;uniform lowp float u_lineatlas_width;uniform sampler2D u_image;uniform float u_mix;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture(u_image,v_tex_a).a;float sdfdist_b=texture(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0/u_device_pixel_ratio)/min(dasharray_from.w,dasharray_to.w);alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out vec2 v_tex_a;out vec2 v_tex_b;out float v_gamma_scale;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nfloat u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}"),lineGradientSDF:kt("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform sampler2D u_image_dash;uniform float u_mix;uniform lowp float u_lineatlas_width;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;in highp vec2 v_uv;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);float sdfdist_a=texture(u_image_dash,v_tex_a).a;float sdfdist_b=texture(u_image_dash,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0)/min(dasharray_from.w,dasharray_to.w);float dash_alpha=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*dash_alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;out vec2 v_tex_a;out vec2 v_tex_b;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;float texel_height=1.0/u_image_height;float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nfloat u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}"),raster:kt("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;in vec2 v_pos0;in vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture(u_image0,v_pos0);vec4 color1=texture(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);fragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;uniform vec4 u_coords_top;uniform vec4 u_coords_bottom;in vec2 a_pos;out vec2 v_pos0;out vec2 v_pos1;void main() {vec2 fractionalPos=a_pos/8192.0;vec2 position=mix(mix(u_coords_top.xy,u_coords_top.zw,fractionalPos.x),mix(u_coords_bottom.xy,u_coords_bottom.zw,fractionalPos.x),fractionalPos.y);gl_Position=projectTile(position,position);v_pos0=((fractionalPos-0.5)/u_buffer_scale)+0.5;\n#ifdef GLOBE\nif (a_pos.y <-32767.5) {v_pos0.y=0.0;}if (a_pos.y > 32766.5) {v_pos0.y=1.0;}\n#endif\nv_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:kt("uniform sampler2D u_texture;in vec2 v_tex;in float v_total_opacity;void main() {fragColor=texture(u_texture,v_tex)*v_total_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_tex;out float v_total_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_total_opacity=opacity*max(0.0,min(visibility,fade_opacity[0]+fade_change));if (v_total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;\n#ifdef GLOBE\nif(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;}"),symbolSDF:kt("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform bool u_is_plain;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;in vec2 v_data0;in vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float total_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;lowp float dist=texture(u_texture,tex).a;lowp vec4 color_alpha_out_text,color_alpha_out_halo;if (u_is_plain){highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);color_alpha_out_text=total_opacity*alpha*fill_color;}if (u_is_halo) {float gamma_halo=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);float inner_edge_halo=inner_edge+gamma_halo*gamma_scale;highp float gamma_scaled_halo=gamma_halo*gamma_scale;highp float alpha_halo=smoothstep(inner_edge_halo-gamma_scaled_halo,inner_edge_halo+gamma_scaled_halo,dist);highp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha_halo= min(smoothstep(halo_edge-gamma_scaled_halo,halo_edge+gamma_scaled_halo,dist),1.0-alpha_halo);color_alpha_out_halo=total_opacity*alpha_halo*halo_color;}if (u_is_plain && u_is_halo) {fragColor=color_alpha_out_text+(1.-color_alpha_out_text.a)*color_alpha_out_halo;} else if (u_is_halo){fragColor=color_alpha_out_halo;} else {fragColor=color_alpha_out_text;}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_data0;out vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy/16.0;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));float total_opacity=opacity*interpolated_fade_opacity;if (total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;\n#ifdef GLOBE\nif(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,total_opacity);}"),symbolTextAndIcon:kt("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform bool u_is_text;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;in vec4 v_data0;in vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat total_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;fragColor=texture(u_texture_icon,tex_icon)*total_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;lowp float dist=texture(u_texture,tex).a;lowp vec4 color_alpha_out,color_alpha_out_halo;if (u_is_text) {highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);color_alpha_out=fill_color*(alpha*total_opacity);}if (u_is_halo) {highp float gamma_halo=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);lowp float buff_halo=(6.0-halo_width/fontScale)/SDF_PX;highp float gamma_scaled_halo=gamma_halo*gamma_scale;highp float alpha_halo=smoothstep(buff_halo-gamma_scaled_halo,buff_halo+gamma_scaled_halo,dist);color_alpha_out_halo=halo_color*(alpha_halo*total_opacity);}if (u_is_text && u_is_halo) {fragColor=color_alpha_out+(1.-color_alpha_out.a)*color_alpha_out_halo;} else if (u_is_halo) {fragColor=color_alpha_out_halo;} else {fragColor=color_alpha_out;}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec4 v_data0;out vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));float total_opacity=opacity*interpolated_fade_opacity;if (total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;\n#ifdef GLOBE\nif(u_pitch_with_map && !u_is_along_line) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,total_opacity,is_sdf);}"),terrain:kt("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;uniform bool u_is_globe_mode;in vec2 v_texture_pos;in float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture(u_texture,vec2(v_texture_pos.x,1.0-v_texture_pos.y));if (!u_is_globe_mode && u_fog_ground_blend_opacity > 0.0 && v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);fragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {fragColor=surface_color;}}","in vec3 a_pos3d;uniform mat4 u_fog_matrix;uniform float u_ele_delta;out vec2 v_texture_pos;out float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:kt("in float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {fragColor=pack(v_depth);}","in vec3 a_pos3d;uniform float u_ele_delta;out float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:kt("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;in vec2 v_texture_pos;void main() {vec4 rgba=texture(u_texture,v_texture_pos);fragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","in vec3 a_pos3d;uniform float u_ele_delta;out vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);}"),projectionErrorMeasurement:kt("in vec4 v_output_error_encoded;void main() {fragColor=v_output_error_encoded;}","in vec2 a_pos;uniform highp float u_input;uniform highp float u_output_expected;out vec4 v_output_error_encoded;void main() {float real_output=2.0*atan(exp(PI-(u_input*PI*2.0)))-PI*0.5;float error=real_output-u_output_expected;float abs_error=abs(error)*128.0;v_output_error_encoded.x=min(floor(abs_error*256.0),255.0)/255.0;abs_error-=v_output_error_encoded.x;v_output_error_encoded.y=min(floor(abs_error*65536.0),255.0)/255.0;abs_error-=v_output_error_encoded.x/255.0;v_output_error_encoded.z=min(floor(abs_error*16777216.0),255.0)/255.0;v_output_error_encoded.w=error >=0.0 ? 1.0 : 0.0;gl_Position=vec4(a_pos,0.0,1.0);}"),atmosphere:kt("#ifdef GL_ES\nprecision highp float;\n#endif\nin vec3 view_direction;uniform vec3 u_sun_pos;uniform vec3 u_globe_position;uniform float u_globe_radius;uniform float u_atmosphere_blend;/**Shader use from https:*Made some change to adapt to MapLibre Globe geometry*/const float PI=3.141592653589793;const int iSteps=5;const int jSteps=3;/*radius of the planet*/const float EARTH_RADIUS=6371e3;/*radius of the atmosphere*/const float ATMOS_RADIUS=6471e3;vec2 rsi(vec3 r0,vec3 rd,float sr) {float a=dot(rd,rd);float b=2.0*dot(rd,r0);float c=dot(r0,r0)-(sr*sr);float d=(b*b)-4.0*a*c;if (d < 0.0) return vec2(1e5,-1e5);return vec2((-b-sqrt(d))/(2.0*a),(-b+sqrt(d))/(2.0*a));}vec4 atmosphere(vec3 r,vec3 r0,vec3 pSun,float iSun,float rPlanet,float rAtmos,vec3 kRlh,float kMie,float shRlh,float shMie,float g) {pSun=normalize(pSun);r=normalize(r);vec2 p=rsi(r0,r,rAtmos);if (p.x > p.y) {return vec4(0.0,0.0,0.0,1.0);}if (p.x < 0.0) {p.x=0.0;}vec3 pos=r0+r*p.x;vec2 p2=rsi(r0,r,rPlanet);if (p2.x <=p2.y && p2.x > 0.0) {p.y=min(p.y,p2.x);}float iStepSize=(p.y-p.x)/float(iSteps);float iTime=p.x+iStepSize*0.5;vec3 totalRlh=vec3(0,0,0);vec3 totalMie=vec3(0,0,0);float iOdRlh=0.0;float iOdMie=0.0;float mu=dot(r,pSun);float mumu=mu*mu;float gg=g*g;float pRlh=3.0/(16.0*PI)*(1.0+mumu);float pMie=3.0/(8.0*PI)*((1.0-gg)*(mumu+1.0))/(pow(1.0+gg-2.0*mu*g,1.5)*(2.0+gg));for (int i=0; i < iSteps; i++) {vec3 iPos=r0+r*iTime;float iHeight=length(iPos)-rPlanet;float odStepRlh=exp(-iHeight/shRlh)*iStepSize;float odStepMie=exp(-iHeight/shMie)*iStepSize;iOdRlh+=odStepRlh;iOdMie+=odStepMie;float jStepSize=rsi(iPos,pSun,rAtmos).y/float(jSteps);float jTime=jStepSize*0.5;float jOdRlh=0.0;float jOdMie=0.0;for (int j=0; j < jSteps; j++) {vec3 jPos=iPos+pSun*jTime;float jHeight=length(jPos)-rPlanet;jOdRlh+=exp(-jHeight/shRlh)*jStepSize;jOdMie+=exp(-jHeight/shMie)*jStepSize;jTime+=jStepSize;}vec3 attn=exp(-(kMie*(iOdMie+jOdMie)+kRlh*(iOdRlh+jOdRlh)));totalRlh+=odStepRlh*attn;totalMie+=odStepMie*attn;iTime+=iStepSize;}float opacity=exp(-(length(kRlh)*length(totalRlh)+kMie*length(totalMie)));vec3 color=iSun*(pRlh*kRlh*totalRlh+pMie*kMie*totalMie);return vec4(color,opacity);}void main() {vec3 scale_camera_pos=-u_globe_position*EARTH_RADIUS/u_globe_radius;vec4 color=atmosphere(normalize(view_direction),scale_camera_pos,u_sun_pos,22.0,EARTH_RADIUS,ATMOS_RADIUS,vec3(5.5e-6,13.0e-6,22.4e-6),21e-6,8e3,1.2e3,0.758\n);color.rgb=1.0-exp(-1.0*color.rgb);color=pow(color,vec4(1.0/2.2));fragColor=vec4(color.rgb,1.0-color.a)*u_atmosphere_blend;}","in vec2 a_pos;uniform mat4 u_inv_proj_matrix;out vec3 view_direction;void main() {view_direction=(u_inv_proj_matrix*vec4(a_pos,0.0,1.0)).xyz;gl_Position=vec4(a_pos,0.0,1.0);}"),sky:kt("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform vec2 u_horizon;uniform vec2 u_horizon_normal;uniform float u_sky_horizon_blend;uniform float u_sky_blend;void main() {float x=gl_FragCoord.x;float y=gl_FragCoord.y;float blend=(y-u_horizon.y)*u_horizon_normal.y+(x-u_horizon.x)*u_horizon_normal.x;if (blend > 0.0) {if (blend < u_sky_horizon_blend) {fragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {fragColor=u_sky_color;}}fragColor=mix(fragColor,vec4(vec3(0.0),0.0),u_sky_blend);}","in vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function kt(e,t){const i=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,o=t.match(/in ([\w]+) ([\w]+)/g),a=e.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),r=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),s=r?r.concat(a):a,n={};return {fragmentSource:e=e.replace(i,((e,t,i,o,a)=>(n[a]=!0,"define"===t?`\n#ifndef HAS_UNIFORM_u_${a}\nin ${i} ${o} ${a};\n#else\nuniform ${i} ${o} u_${a};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${a}\n ${i} ${o} ${a} = u_${a};\n#endif\n`))),vertexSource:t=t.replace(i,((e,t,i,o,a)=>{const r="float"===o?"vec2":"vec4",s=a.match(/color/)?"color":r;return n[a]?"define"===t?`\n#ifndef HAS_UNIFORM_u_${a}\nuniform lowp float u_${a}_t;\nin ${i} ${r} a_${a};\nout ${i} ${o} ${a};\n#else\nuniform ${i} ${o} u_${a};\n#endif\n`:"vec4"===s?`\n#ifndef HAS_UNIFORM_u_${a}\n ${a} = a_${a};\n#else\n ${i} ${o} ${a} = u_${a};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${a}\n ${a} = unpack_mix_${s}(a_${a}, u_${a}_t);\n#else\n ${i} ${o} ${a} = u_${a};\n#endif\n`:"define"===t?`\n#ifndef HAS_UNIFORM_u_${a}\nuniform lowp float u_${a}_t;\nin ${i} ${r} a_${a};\n#else\nuniform ${i} ${o} u_${a};\n#endif\n`:"vec4"===s?`\n#ifndef HAS_UNIFORM_u_${a}\n ${i} ${o} ${a} = a_${a};\n#else\n ${i} ${o} ${a} = u_${a};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${a}\n ${i} ${o} ${a} = unpack_mix_${s}(a_${a}, u_${a}_t);\n#else\n ${i} ${o} ${a} = u_${a};\n#endif\n`})),staticAttributes:o,staticUniforms:s}}class Bt{constructor(e,t,i){this.vertexBuffer=e,this.indexBuffer=t,this.segments=i;}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null;}}var Ot=t.aS([{name:"a_pos",type:"Int16",components:2}]);const jt="#define PROJECTION_MERCATOR",Nt="mercator";class Zt{constructor(){this._cachedMesh=null;}get name(){return "mercator"}get useSubdivision(){return !1}get shaderVariantName(){return Nt}get shaderDefine(){return jt}get shaderPreludeCode(){return Ft.projectionMercator}get vertexShaderPreludeCode(){return Ft.projectionMercator.vertexSource}get subdivisionGranularity(){return t.aT.noSubdivision}get useGlobeControls(){return !1}get transitionState(){return 0}get latitudeErrorCorrectionRadians(){return 0}destroy(){}updateGPUdependent(e){}getMeshFromTileID(e,i,o,a,r){if(this._cachedMesh)return this._cachedMesh;const s=new t.aU;s.emplaceBack(0,0),s.emplaceBack(t.a6,0),s.emplaceBack(0,t.a6),s.emplaceBack(t.a6,t.a6);const n=e.createVertexBuffer(s,Ot.members),l=t.aV.simpleSegment(0,0,4,2),c=new t.aW;c.emplaceBack(1,0,2),c.emplaceBack(1,2,3);const h=e.createIndexBuffer(c);return this._cachedMesh=new Bt(n,h,l),this._cachedMesh}recalculate(){}hasTransition(){return !1}setErrorQueryLatitudeDegrees(e){}}class Ut{constructor(e=0,t=0,i=0,o=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)||i<0||isNaN(o)||o<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=e,this.bottom=t,this.left=i,this.right=o;}interpolate(e,i,o){return null!=i.top&&null!=e.top&&(this.top=t.H.number(e.top,i.top,o)),null!=i.bottom&&null!=e.bottom&&(this.bottom=t.H.number(e.bottom,i.bottom,o)),null!=i.left&&null!=e.left&&(this.left=t.H.number(e.left,i.left,o)),null!=i.right&&null!=e.right&&(this.right=t.H.number(e.right,i.right,o)),this}getCenter(e,i){const o=t.al((this.left+e-this.right)/2,0,e),a=t.al((this.top+i-this.bottom)/2,0,i);return new t.P(o,a)}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new Ut(this.top,this.bottom,this.left,this.right)}toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function Gt(e,t){if(!e.renderWorldCopies||e.lngRange)return;const i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0;}function Vt(e){return Math.max(0,Math.floor(e))}class Wt{constructor(e,i){var o;this.applyConstrain=(e,t)=>null!==this._constrainOverride?this._constrainOverride(e,t):this._callbacks.defaultConstrain(e,t),this._callbacks=e,this._tileSize=512,this._renderWorldCopies=void 0===(null==i?void 0:i.renderWorldCopies)||!!(null==i?void 0:i.renderWorldCopies),this._minZoom=(null==i?void 0:i.minZoom)||0,this._maxZoom=(null==i?void 0:i.maxZoom)||22,this._minPitch=null==(null==i?void 0:i.minPitch)?0:null==i?void 0:i.minPitch,this._maxPitch=null==(null==i?void 0:i.maxPitch)?60:null==i?void 0:i.maxPitch,this._constrainOverride=null!==(o=null==i?void 0:i.constrainOverride)&&void 0!==o?o:null,this.setMaxBounds(),this._width=0,this._height=0,this._center=new t.W(0,0),this._elevation=0,this._zoom=0,this._tileZoom=Vt(this._zoom),this._scale=t.ao(this._zoom),this._bearingInRadians=0,this._fovInRadians=.6435011087932844,this._pitchInRadians=0,this._rollInRadians=0,this._unmodified=!0,this._edgeInsets=new Ut,this._minElevationForCurrentTile=0,this._autoCalculateNearFarZ=!0;}apply(e,i,o){this._constrainOverride=e.constrainOverride,this._latRange=e.latRange,this._lngRange=e.lngRange,this._width=e.width,this._height=e.height,this._center=e.center,this._elevation=e.elevation,this._minElevationForCurrentTile=e.minElevationForCurrentTile,this._zoom=e.zoom,this._tileZoom=Vt(this._zoom),this._scale=t.ao(this._zoom),this._bearingInRadians=e.bearingInRadians,this._fovInRadians=e.fovInRadians,this._pitchInRadians=e.pitchInRadians,this._rollInRadians=e.rollInRadians,this._unmodified=e.unmodified,this._edgeInsets=new Ut(e.padding.top,e.padding.bottom,e.padding.left,e.padding.right),this._minZoom=e.minZoom,this._maxZoom=e.maxZoom,this._minPitch=e.minPitch,this._maxPitch=e.maxPitch,this._renderWorldCopies=e.renderWorldCopies,this._cameraToCenterDistance=e.cameraToCenterDistance,this._nearZ=e.nearZ,this._farZ=e.farZ,this._autoCalculateNearFarZ=!o&&e.autoCalculateNearFarZ,i&&this.constrainInternal(),this._calcMatrices();}get pixelsToClipSpaceMatrix(){return this._pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._clipSpaceToPixelsMatrix}get minElevationForCurrentTile(){return this._minElevationForCurrentTile}setMinElevationForCurrentTile(e){this._minElevationForCurrentTile=e;}get tileSize(){return this._tileSize}get tileZoom(){return this._tileZoom}get scale(){return this._scale}get width(){return this._width}get height(){return this._height}get bearingInRadians(){return this._bearingInRadians}get lngRange(){return this._lngRange}get latRange(){return this._latRange}get pixelsToGLUnits(){return this._pixelsToGLUnits}get minZoom(){return this._minZoom}setMinZoom(e){this._minZoom!==e&&(this._minZoom=e,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom));}get maxZoom(){return this._maxZoom}setMaxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom));}get minPitch(){return this._minPitch}setMinPitch(e){this._minPitch!==e&&(this._minPitch=e,this.setPitch(Math.max(this.pitch,e)));}get maxPitch(){return this._maxPitch}setMaxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.setPitch(Math.min(this.pitch,e)));}get renderWorldCopies(){return this._renderWorldCopies}setRenderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderWorldCopies=e;}get constrainOverride(){return this._constrainOverride}setConstrainOverride(e){void 0===e&&(e=null),this._constrainOverride!==e&&(this._constrainOverride=e,this.constrainInternal(),this._calcMatrices());}get worldSize(){return this._tileSize*this._scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new t.P(this._width,this._height)}get bearing(){return this._bearingInRadians/Math.PI*180}setBearing(e){const i=t.X(e,-180,180)*Math.PI/180;var a,r,s,n,l,c,h,u,d;this._bearingInRadians!==i&&(this._unmodified=!1,this._bearingInRadians=i,this._calcMatrices(),this._rotationMatrix=o(),a=this._rotationMatrix,s=-this._bearingInRadians,n=(r=this._rotationMatrix)[0],l=r[1],c=r[2],h=r[3],u=Math.sin(s),d=Math.cos(s),a[0]=n*d+c*u,a[1]=l*d+h*u,a[2]=n*-u+c*d,a[3]=l*-u+h*d);}get rotationMatrix(){return this._rotationMatrix}get pitchInRadians(){return this._pitchInRadians}get pitch(){return this._pitchInRadians/Math.PI*180}setPitch(e){const i=t.al(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitchInRadians!==i&&(this._unmodified=!1,this._pitchInRadians=i,this._calcMatrices());}get rollInRadians(){return this._rollInRadians}get roll(){return this._rollInRadians/Math.PI*180}setRoll(e){const t=e/180*Math.PI;this._rollInRadians!==t&&(this._unmodified=!1,this._rollInRadians=t,this._calcMatrices());}get fovInRadians(){return this._fovInRadians}get fov(){return t.aX(this._fovInRadians)}setFov(e){e=t.al(e,.1,150),this.fov!==e&&(this._unmodified=!1,this._fovInRadians=t.an(e),this._calcMatrices());}get zoom(){return this._zoom}setZoom(e){const i=this.applyConstrain(this._center,e).zoom;this._zoom!==i&&(this._unmodified=!1,this._zoom=i,this._tileZoom=Math.max(0,Math.floor(i)),this._scale=t.ao(i),this.constrainInternal(),this._calcMatrices());}get center(){return this._center}setCenter(e){e.lat===this._center.lat&&e.lng===this._center.lng||(this._unmodified=!1,this._center=e,this.constrainInternal(),this._calcMatrices());}get elevation(){return this._elevation}setElevation(e){e!==this._elevation&&(this._elevation=e,this.constrainInternal(),this._calcMatrices());}get padding(){return this._edgeInsets.toJSON()}setPadding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,e,1),this._calcMatrices());}get centerPoint(){return this._edgeInsets.getCenter(this._width,this._height)}get pixelsPerMeter(){return this._pixelPerMeter}get unmodified(){return this._unmodified}get cameraToCenterDistance(){return this._cameraToCenterDistance}get nearZ(){return this._nearZ}get farZ(){return this._farZ}get autoCalculateNearFarZ(){return this._autoCalculateNearFarZ}overrideNearFarZ(e,t){this._autoCalculateNearFarZ=!1,this._nearZ=e,this._farZ=t,this._calcMatrices();}clearNearFarZOverride(){this._autoCalculateNearFarZ=!0,this._calcMatrices();}isPaddingEqual(e){return this._edgeInsets.equals(e)}interpolatePadding(e,t,i){this._unmodified=!1,this._edgeInsets.interpolate(e,t,i),this.constrainInternal(),this._calcMatrices();}resize(e,t,i=!0){this._width=e,this._height=t,i&&this.constrainInternal(),this._calcMatrices();}getMaxBounds(){var e,t;return 2!==(null===(e=this._latRange)||void 0===e?void 0:e.length)||2!==(null===(t=this._lngRange)||void 0===t?void 0:t.length)?null:new G([this._lngRange[0],this._latRange[0]],[this._lngRange[1],this._latRange[1]])}setMaxBounds(e){e?(this._lngRange=[e.getWest(),e.getEast()],this._latRange=[e.getSouth(),e.getNorth()],this.constrainInternal()):(this._lngRange=null,this._latRange=[-t.am,t.am]);}getCameraQueryGeometry(e,i){if(1===i.length)return [i[0],e];{const{minX:o,minY:a,maxX:r,maxY:s}=t.a8.fromPoints(i).extend(e);return [new t.P(o,a),new t.P(r,a),new t.P(r,s),new t.P(o,s),new t.P(o,a)]}}constrainInternal(){if(!this.center||!this._width||!this._height||this._constraining)return;this._constraining=!0;const e=this._unmodified,{center:t,zoom:i}=this.applyConstrain(this.center,this.zoom);this.setCenter(t),this.setZoom(i),this._unmodified=e,this._constraining=!1;}_calcMatrices(){if(this._width&&this._height){this._pixelsToGLUnits=[2/this._width,-2/this._height];let e=t.ap(new Float64Array(16));t.S(e,e,[this._width/2,-this._height/2,1]),t.Q(e,e,[1,-1,0]),this._clipSpaceToPixelsMatrix=e,e=t.ap(new Float64Array(16)),t.S(e,e,[1,-1,1]),t.Q(e,e,[-1,-1,0]),t.S(e,e,[2/this._width,2/this._height,1]),this._pixelsToClipSpaceMatrix=e,this._cameraToCenterDistance=.5/Math.tan(this.fovInRadians/2)*this._height;}this._callbacks.calcMatrices();}calculateCenterFromCameraLngLatAlt(e,i,o,a){const r=void 0!==o?o:this.bearing,s=a=void 0!==a?a:this.pitch,{distanceToCenter:n,clampedElevation:l}=this._distanceToCenterFromAltElevationPitch(i,this.elevation,s),{x:c,y:h}=be(s,r),u=t.a7.fromLngLat(e,i);let d,_,p=t.aY(1,u.y),m=0;do{if(m+=1,m>10)break;_=n/p,d=new t.a7(u.x+c*_,u.y+h*_),p=1/d.meterInMercatorCoordinateUnits();}while(Math.abs(n-_*p)>1e-12);return {center:d.toLngLat(),elevation:l,zoom:t.ar(this.height/2/Math.tan(this.fovInRadians/2)/_/this.tileSize)}}recalculateZoomAndCenter(e){if(this.elevation-e==0)return;const i=1/this.worldSize,o=t.aq(1,this.center.lat)*this.worldSize,a=t.a7.fromLngLat(this.center,this.elevation),r=a.x/i,s=a.y/i,n=a.z/i,l=this.pitch,c=this.bearing,{x:h,y:u,z:d}=be(l,c),_=this.cameraToCenterDistance,p=r+_*-h,m=s+_*-u,f=n+_*d,{distanceToCenter:g,clampedElevation:v}=this._distanceToCenterFromAltElevationPitch(f/o,e,l),x=g*o,b=new t.a7((p+h*x)*i,(m+u*x)*i,0).toLngLat(),y=t.aq(1,b.lat),w=t.ar(this.height/2/Math.tan(this.fovInRadians/2)/g/y/this.tileSize);this._elevation=v,this._center=b,this.setZoom(w);}_distanceToCenterFromAltElevationPitch(e,i,o){const a=-Math.cos(t.an(o)),r=e-i;let s,n=i;return a*r>=0||Math.abs(a)<.1?(s=1e4,n=e+s*a):s=-r/a,{distanceToCenter:s,clampedElevation:n}}getCameraPoint(){const e=Math.tan(this.pitchInRadians)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.P(e*Math.sin(this.rollInRadians),e*Math.cos(this.rollInRadians)))}getCameraAltitude(){return Math.cos(this.pitchInRadians)*this._cameraToCenterDistance/this._pixelPerMeter+this.elevation}getCameraLngLat(){const e=t.aq(1,this.center.lat)*this.worldSize;return xe(this.center,this.elevation,this.pitch,this.bearing,this.cameraToCenterDistance/e).toLngLat()}getMercatorTileCoordinates(e){if(!e)return [0,0,1,1];const i=e.canonical.z>=0?1<this.max[0]||e.aabb.min[1]>this.max[1]||e.aabb.min[2]>this.max[2]||e.aabb.max[0]0?(t+=e[o]*this.min[o],i+=e[o]*this.max[o]):(i+=e[o]*this.min[o],t+=e[o]*this.max[o]);return t>=0?2:i<0?0:1}}class $t{distanceToTile2d(e,t,i,o){const a=o,r=a.distanceX([e,t]),s=a.distanceY([e,t]);return Math.hypot(r,s)}getWrap(e,t,i){return i}getTileBoundingVolume(e,i,o,a){var r,s;let n=0,l=0;if(null==a?void 0:a.terrain){const c=new t.a3(e.z,i,e.z,e.x,e.y),h=a.terrain.getMinMaxElevation(c);n=null!==(r=h.minElevation)&&void 0!==r?r:Math.min(0,o),l=null!==(s=h.maxElevation)&&void 0!==s?s:Math.max(0,o);}const c=1<a}allowWorldCopies(){return !0}prepareNextFrame(){}}class Ht{constructor(e,t,i){this.points=e,this.planes=t,this.aabb=i;}static fromInvProjectionMatrix(e,i=1,o=0,a,r){const s=r?[[6,5,4],[0,1,2],[0,3,7],[2,1,5],[3,2,6],[0,4,5]]:[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],n=Math.pow(2,o),l=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((o=>function(e,i,o,a){const r=t.aE([],e,i),s=1/r[3]/o*a;return t.b4(r,r,[s,s,1/r[3],s])}(o,e,i,n)));a&&function(e,i,o,a){const r=a?4:0,s=a?0:4;let n=0;const l=[],c=[];for(let i=0;i<4;i++){const o=t.b0([],e[i+s],e[i+r]),a=t.b5(o);t.aZ(o,o,1/a),l.push(a),c.push(o);}for(let i=0;i<4;i++){const a=t.b6(e[i+r],c[i],o);n=null!==a&&a>=0?Math.max(n,a):Math.max(n,l[i]);}const h=function(e,i){const o=t.b0([],e[i[0]],e[i[1]]),a=t.b0([],e[i[2]],e[i[1]]),r=[0,0,0,0];return t.b1(r,t.b2([],o,a)),r[3]=-t.b3(r,e[i[0]]),r}(e,i),u=function(e,i){const o=t.b7(e),a=t.b8([],e,1/o),r=t.b0([],i,t.aZ([],a,t.b3(i,a))),s=t.b7(r);if(s>0){const e=Math.sqrt(1-a[3]*a[3]),o=t.aZ([],a,-a[3]),n=t.a_([],o,t.aZ([],r,e/s));return t.b9(i,n)}return null}(o,h);if(null!==u){const e=u/t.b3(c[0],h);n=Math.min(n,e);}for(let t=0;t<4;t++){const i=Math.min(n,l[t]);e[t+s]=[e[t+r][0]+c[t][0]*i,e[t+r][1]+c[t][1]*i,e[t+r][2]+c[t][2]*i,1];}}(l,s[0],a,r);const c=s.map((e=>{const i=t.b0([],l[e[0]],l[e[1]]),o=t.b0([],l[e[2]],l[e[1]]),a=t.b1([],t.b2([],i,o)),r=-t.b3(a,l[e[1]]);return a.concat(r)})),h=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],u=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(const e of l)for(let t=0;t<3;t++)h[t]=Math.min(h[t],e[t]),u[t]=Math.max(u[t],e[t]);return new Ht(l,c,new qt(h,u))}}class Xt{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e);}setMaxZoom(e){this._helper.setMaxZoom(e);}setMinPitch(e){this._helper.setMinPitch(e);}setMaxPitch(e){this._helper.setMaxPitch(e);}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e);}setBearing(e){this._helper.setBearing(e);}setPitch(e){this._helper.setPitch(e);}setRoll(e){this._helper.setRoll(e);}setFov(e){this._helper.setFov(e);}setZoom(e){this._helper.setZoom(e);}setCenter(e){this._helper.setCenter(e);}setElevation(e){this._helper.setElevation(e);}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e);}setPadding(e){this._helper.setPadding(e);}interpolatePadding(e,t,i){this._helper.interpolatePadding(e,t,i);}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,i=!0){this._helper.resize(e,t,i);}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e);}setConstrainOverride(e){this._helper.setConstrainOverride(e);}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t);}clearNearFarZOverride(){this._helper.clearNearFarZOverride();}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(e,t){}constructor(e){this._posMatrixCache=new Map,this._alignedPosMatrixCache=new Map,this._fogMatrixCacheF32=new Map,this.defaultConstrain=(e,i)=>{i=t.al(+i,this.minZoom,this.maxZoom);const o={center:new t.W(e.lng,e.lat),zoom:i};let a=this._helper._lngRange;if(!this._helper._renderWorldCopies&&null===a){const e=180-1e-10;a=[-e,e];}const r=this.tileSize*t.ao(o.zoom);let s=0,n=r,l=0,c=r,h=0,u=0;const{x:d,y:_}=this.size;if(this._helper._latRange){const e=this._helper._latRange;s=t.Y(e[1])*r,n=t.Y(e[0])*r,n-s<_&&(h=_/(n-s));}a&&(l=t.X(t.Z(a[0])*r,0,r),c=t.X(t.Z(a[1])*r,0,r),cn&&(g=n-e);}if(a){const e=(l+c)/2;let i=p;this._helper._renderWorldCopies&&(i=t.X(p,e-r/2,e+r/2));const o=d/2;i-oc&&(f=c-o);}if(void 0!==f||void 0!==g){const e=new t.P(null!=f?f:p,null!=g?g:m);o.center=fe(r,e).wrap();}return o},this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new Wt({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new $t;}clone(){const e=new Xt;return e.apply(this,!1),e}apply(e,t,i){this._helper.apply(e,t,i);}get cameraPosition(){return this._cameraPosition}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._viewProjMatrix}get inverseProjectionMatrix(){return this._invProjMatrix}get mercatorMatrix(){return this._mercatorMatrix}getVisibleUnwrappedCoordinates(e){const i=[new t.ba(0,e)];if(this._helper._renderWorldCopies){const o=this.screenPointToMercatorCoordinate(new t.P(0,0)),a=this.screenPointToMercatorCoordinate(new t.P(this._helper._width,0)),r=this.screenPointToMercatorCoordinate(new t.P(this._helper._width,this._helper._height)),s=this.screenPointToMercatorCoordinate(new t.P(0,this._helper._height)),n=Math.floor(Math.min(o.x,a.x,r.x,s.x)),l=Math.floor(Math.max(o.x,a.x,r.x,s.x)),c=1;for(let o=n-c;o<=l+c;o++)0!==o&&i.push(new t.ba(o,e));}return i}getCameraFrustum(){return Ht.fromInvProjectionMatrix(this._invViewProjMatrix,this.worldSize)}getClippingPlane(){return null}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(e){const t=this.screenPointToLocation(this.centerPoint,e),i=e?e.getElevationForLngLatZoom(t,this._helper._tileZoom):0;this._helper.recalculateZoomAndCenter(i);}setLocationAtPoint(e,i){const o=t.aq(this.elevation,this.center.lat),a=this.screenPointToMercatorCoordinateAtZ(i,o),r=this.screenPointToMercatorCoordinateAtZ(this.centerPoint,o),s=t.a7.fromLngLat(e),n=new t.a7(s.x-(a.x-r.x),s.y-(a.y-r.y));this.setCenter(null==n?void 0:n.toLngLat()),this._helper._renderWorldCopies&&this.setCenter(this.center.wrap());}locationToScreenPoint(e,i){return i?this.coordinatePoint(t.a7.fromLngLat(e),i.getElevationForLngLat(e,this),this._pixelMatrix3D):this.coordinatePoint(t.a7.fromLngLat(e))}screenPointToLocation(e,t){var i;return null===(i=this.screenPointToMercatorCoordinate(e,t))||void 0===i?void 0:i.toLngLat()}screenPointToMercatorCoordinate(e,t){if(t){const i=t.pointCoordinate(e);if(null!=i)return i}return this.screenPointToMercatorCoordinateAtZ(e)}screenPointToMercatorCoordinateAtZ(e,i){const o=i||0,a=[e.x,e.y,0,1],r=[e.x,e.y,1,1];t.aE(a,a,this._pixelMatrixInverse),t.aE(r,r,this._pixelMatrixInverse);const s=a[3],n=r[3],l=a[1]/s,c=r[1]/n,h=a[2]/s,u=r[2]/n,d=h===u?0:(o-h)/(u-h);return new t.a7(t.H.number(a[0]/s,r[0]/n,d)/this.worldSize,t.H.number(l,c,d)/this.worldSize,o)}coordinatePoint(e,i=0,o=this._pixelMatrix){const a=[e.x*this.worldSize,e.y*this.worldSize,i,1];return t.aE(a,a,o),new t.P(a[0]/a[3],a[1]/a[3])}getBounds(){const e=Math.max(0,this._helper._height/2-ge(this));return (new G).extend(this.screenPointToLocation(new t.P(0,e))).extend(this.screenPointToLocation(new t.P(this._helper._width,e))).extend(this.screenPointToLocation(new t.P(this._helper._width,this._helper._height))).extend(this.screenPointToLocation(new t.P(0,this._helper._height)))}isPointOnMapSurface(e,t){return t?null!=t.pointCoordinate(e):e.y>this.height/2-ge(this)}calculatePosMatrix(e,i=!1,o){var a;const r=null!==(a=e.key)&&void 0!==a?a:t.bb(e.wrap,e.canonical.z,e.canonical.z,e.canonical.x,e.canonical.y),s=i?this._alignedPosMatrixCache:this._posMatrixCache;if(s.has(r)){const e=s.get(r);return o?e.f32:e.f64}const n=ve(e,this.worldSize);t.U(n,i?this._alignedProjMatrix:this._viewProjMatrix,n);const l={f64:n,f32:new Float32Array(n)};return s.set(r,l),o?l.f32:l.f64}calculateFogMatrix(e){const i=e.key,o=this._fogMatrixCacheF32;if(o.has(i))return o.get(i);const a=ve(e,this.worldSize);return t.U(a,this._fogMatrix,a),o.set(i,new Float32Array(a)),o.get(i)}calculateCenterFromCameraLngLatAlt(e,t,i,o){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,o)}_calculateNearFarZIfNeeded(e,i,o){if(!this._helper.autoCalculateNearFarZ)return;const a=Math.min(this.elevation,this.minElevationForCurrentTile,this.getCameraAltitude()-100),r=e-a*this._helper._pixelPerMeter/Math.cos(i),s=a<0?r:e,n=Math.PI/2+this.pitchInRadians,l=t.an(this.fov)*(Math.abs(Math.cos(t.an(this.roll)))*this.height+Math.abs(Math.sin(t.an(this.roll)))*this.width)/this.height*(.5+o.y/this.height),c=Math.sin(l)*s/Math.sin(t.al(Math.PI-n-l,.01,Math.PI-.01)),h=ge(this),u=Math.atan(h/this._helper.cameraToCenterDistance),d=t.an(.75),_=u>d?2*u*(.5+o.y/(2*h)):d,p=Math.sin(_)*s/Math.sin(t.al(Math.PI-n-_,.01,Math.PI-.01)),m=Math.min(c,p);this._helper._farZ=1.01*(Math.cos(Math.PI/2-i)*m+s),this._helper._nearZ=this._helper._height/50;}_calcMatrices(){if(!this._helper._height)return;const e=this.centerOffset,i=me(this.worldSize,this.center),o=i.x,a=i.y;this._helper._pixelPerMeter=t.aq(1,this.center.lat)*this.worldSize;const r=t.an(Math.min(this.pitch,pe)),s=Math.max(this._helper.cameraToCenterDistance/2,this._helper.cameraToCenterDistance+this._helper._elevation*this._helper._pixelPerMeter/Math.cos(r));let n;var l,c;this._calculateNearFarZIfNeeded(s,r,e),n=new Float64Array(16),t.bc(n,this.fovInRadians,this._helper._width/this._helper._height,this._helper._nearZ,this._helper._farZ),this._invProjMatrix=new Float64Array(16),(l=this._invProjMatrix)[0]=1/(c=n)[0],l[1]=0,l[2]=0,l[3]=0,l[4]=0,l[5]=1/c[5],l[6]=0,l[7]=0,l[8]=0,l[9]=0,l[10]=0,l[11]=1/c[14],l[12]=0,l[13]=0,l[14]=-1,l[15]=c[10]/c[14],n[8]=2*-e.x/this._helper._width,n[9]=2*e.y/this._helper._height,this._projectionMatrix=t.bd(n),t.S(n,n,[1,-1,1]),t.Q(n,n,[0,0,-this._helper.cameraToCenterDistance]),t.be(n,n,-this.rollInRadians),t.bf(n,n,this.pitchInRadians),t.be(n,n,-this.bearingInRadians),t.Q(n,n,[-o,-a,0]),this._mercatorMatrix=t.S([],n,[this.worldSize,this.worldSize,this.worldSize]),t.S(n,n,[1,1,this._helper._pixelPerMeter]),this._pixelMatrix=t.U(new Float64Array(16),this.clipSpaceToPixelsMatrix,n),t.Q(n,n,[0,0,-this.elevation]),this._viewProjMatrix=n,this._invViewProjMatrix=t.bg([],n);const h=[0,0,-1,1];t.aE(h,h,this._invViewProjMatrix),this._cameraPosition=[h[0]/h[3],h[1]/h[3],h[2]/h[3]],this._fogMatrix=new Float64Array(16),t.bc(this._fogMatrix,this.fovInRadians,this.width/this.height,s,this._helper._farZ),this._fogMatrix[8]=2*-e.x/this.width,this._fogMatrix[9]=2*e.y/this.height,t.S(this._fogMatrix,this._fogMatrix,[1,-1,1]),t.Q(this._fogMatrix,this._fogMatrix,[0,0,-this.cameraToCenterDistance]),t.be(this._fogMatrix,this._fogMatrix,-this.rollInRadians),t.bf(this._fogMatrix,this._fogMatrix,this.pitchInRadians),t.be(this._fogMatrix,this._fogMatrix,-this.bearingInRadians),t.Q(this._fogMatrix,this._fogMatrix,[-o,-a,0]),t.S(this._fogMatrix,this._fogMatrix,[1,1,this._helper._pixelPerMeter]),t.Q(this._fogMatrix,this._fogMatrix,[0,0,-this.elevation]),this._pixelMatrix3D=t.U(new Float64Array(16),this.clipSpaceToPixelsMatrix,n);const u=this._helper._width%2/2,d=this._helper._height%2/2,_=Math.cos(this.bearingInRadians),p=Math.sin(-this.bearingInRadians),m=o-Math.round(o)+_*u+p*d,f=a-Math.round(a)+_*d+p*u,g=new Float64Array(n);if(t.Q(g,g,[m>.5?m-1:m,f>.5?f-1:f,0]),this._alignedProjMatrix=g,n=t.bg(new Float64Array(16),this._pixelMatrix),!n)throw new Error("failed to invert matrix");this._pixelMatrixInverse=n,this._clearMatrixCaches();}_clearMatrixCaches(){this._posMatrixCache.clear(),this._alignedPosMatrixCache.clear(),this._fogMatrixCacheF32.clear();}maxPitchScaleFactor(){if(!this._pixelMatrixInverse)return 1;const e=this.screenPointToMercatorCoordinate(new t.P(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.aE(i,i,this._pixelMatrix)[3]/this._helper.cameraToCenterDistance}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){const e=t.aq(1,this.center.lat)*this.worldSize;return xe(this.center,this.elevation,this.pitch,this.bearing,this._helper.cameraToCenterDistance/e).toLngLat()}lngLatToCameraDepth(e,i){const o=t.a7.fromLngLat(e),a=[o.x*this.worldSize,o.y*this.worldSize,i,1];return t.aE(a,a,this._viewProjMatrix),a[2]/a[3]}getProjectionData(e){const{overscaledTileID:i,aligned:o,applyTerrainMatrix:a}=e,r=this._helper.getMercatorTileCoordinates(i),s=i?this.calculatePosMatrix(i,o,!0):null;let n;return n=(null==i?void 0:i.terrainRttPosMatrix32f)&&a?i.terrainRttPosMatrix32f:s||t.bh(),{mainMatrix:n,tileMercatorCoords:r,clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:n}}isLocationOccluded(e){return !1}getPixelScale(){return 1}getCircleRadiusCorrection(){return 1}getPitchedTextCorrection(e,t,i){return 1}transformLightDirection(e){return t.a$(e)}getRayDirectionFromPixel(e){throw new Error("Not implemented.")}projectTileCoordinates(e,i,o,a){const r=this.calculatePosMatrix(o);let s;a?(s=[e,i,a(e,i),1],t.aE(s,s,r)):(s=[e,i,0,1],nt(s,s,r));const n=s[3];return {point:new t.P(s[0]/n,s[1]/n),signedDistanceFromCamera:n,isOccluded:!1}}populateCache(e){for(const t of e)this.calculatePosMatrix(t);}getMatrixForModel(e,i){const o=t.a7.fromLngLat(e,i),a=o.meterInMercatorCoordinateUnits(),r=t.bi();return t.Q(r,r,[o.x,o.y,o.z]),t.be(r,r,Math.PI),t.bf(r,r,Math.PI/2),t.S(r,r,[-a,a,a]),r}getProjectionDataForCustomLayer(e=!0){const i=new t.a3(0,0,0,0,0),o=this.getProjectionData({overscaledTileID:i,applyGlobeMatrix:e}),a=ve(i,this.worldSize);t.U(a,this._viewProjMatrix,a),o.tileMercatorCoords=[0,0,1,1];const r=[t.a6,t.a6,this.worldSize/this._helper.pixelsPerMeter],s=t.bj();return t.S(s,a,r),o.fallbackMatrix=s,o.mainMatrix=s,o}getFastPathSimpleProjectionMatrix(e){return this.calculatePosMatrix(e)}}function Kt(){t.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.");}function Yt(e){if(e.useSlerp)if(e.k<1){const i=t.bk(e.startEulerAngles.roll,e.startEulerAngles.pitch,e.startEulerAngles.bearing),o=t.bk(e.endEulerAngles.roll,e.endEulerAngles.pitch,e.endEulerAngles.bearing),a=new Float64Array(4);t.bl(a,i,o,e.k);const r=t.bm(a);e.tr.setRoll(r.roll),e.tr.setPitch(r.pitch),e.tr.setBearing(r.bearing);}else e.tr.setRoll(e.endEulerAngles.roll),e.tr.setPitch(e.endEulerAngles.pitch),e.tr.setBearing(e.endEulerAngles.bearing);else e.tr.setRoll(t.H.number(e.startEulerAngles.roll,e.endEulerAngles.roll,e.k)),e.tr.setPitch(t.H.number(e.startEulerAngles.pitch,e.endEulerAngles.pitch,e.k)),e.tr.setBearing(t.H.number(e.startEulerAngles.bearing,e.endEulerAngles.bearing,e.k));}function Qt(e,i,o,a,r){const s=r.padding,n=me(r.worldSize,o.getNorthWest()),l=me(r.worldSize,o.getNorthEast()),c=me(r.worldSize,o.getSouthEast()),h=me(r.worldSize,o.getSouthWest()),u=t.an(-a),d=n.rotate(u),_=l.rotate(u),p=c.rotate(u),m=h.rotate(u),f=new t.P(Math.max(d.x,_.x,m.x,p.x),Math.max(d.y,_.y,m.y,p.y)),g=new t.P(Math.min(d.x,_.x,m.x,p.x),Math.min(d.y,_.y,m.y,p.y)),v=f.sub(g),x=(r.width-(s.left+s.right+i.left+i.right))/v.x,b=(r.height-(s.top+s.bottom+i.top+i.bottom))/v.y;if(b<0||x<0)return void Kt();const y=Math.min(t.ar(r.scale*Math.min(x,b)),e.maxZoom),w=t.P.convert(e.offset),T=new t.P((i.left-i.right)/2,(i.top-i.bottom)/2).rotate(t.an(a)),P=w.add(T).mult(r.scale/t.ao(y));return {center:fe(r.worldSize,n.add(c).div(2).sub(P)),zoom:y,bearing:a}}class Jt{get useGlobeControls(){return !1}handlePanInertia(e,t){const i=e.mag(),o=Math.abs(ge(t));return {easingOffset:e.mult(Math.min(.75*o/i,1)),easingCenter:t.center}}handleMapControlsRollPitchBearingZoom(e,t){e.bearingDelta&&t.setBearing(t.bearing+e.bearingDelta),e.pitchDelta&&t.setPitch(t.pitch+e.pitchDelta),e.rollDelta&&t.setRoll(t.roll+e.rollDelta),e.zoomDelta&&t.setZoom(t.zoom+e.zoomDelta);}handleMapControlsPan(e,t,i){e.around.distSqr(t.centerPoint)<.01||t.setLocationAtPoint(i,e.around);}cameraForBoxAndBearing(e,t,i,o,a){return Qt(e,t,i,o,a)}handleJumpToCenterZoom(e,i){e.zoom!==(void 0!==i.zoom?+i.zoom:e.zoom)&&e.setZoom(+i.zoom),void 0!==i.center&&e.setCenter(t.W.convert(i.center));}handleEaseTo(e,i){const o=e.zoom,a=e.padding,r={roll:e.roll,pitch:e.pitch,bearing:e.bearing},s={roll:void 0===i.roll?e.roll:i.roll,pitch:void 0===i.pitch?e.pitch:i.pitch,bearing:void 0===i.bearing?e.bearing:i.bearing},n=void 0!==i.zoom,l=!e.isPaddingEqual(i.padding);let c=!1;const h=n?+i.zoom:e.zoom;let u=e.centerPoint.add(i.offsetAsPoint);const d=e.screenPointToLocation(u),{center:_,zoom:p}=e.applyConstrain(t.W.convert(i.center||d),null!=h?h:o);Gt(e,_);const m=me(e.worldSize,d),f=me(e.worldSize,_).sub(m),g=t.ao(p-o);return c=p!==o,{easeFunc:n=>{if(c&&e.setZoom(t.H.number(o,p,n)),t.bn(r,s)||Yt({startEulerAngles:r,endEulerAngles:s,tr:e,k:n,useSlerp:r.roll!=s.roll}),l&&(e.interpolatePadding(a,i.padding,n),u=e.centerPoint.add(i.offsetAsPoint)),i.around)e.setLocationAtPoint(i.around,i.aroundPoint);else {const i=t.ao(e.zoom-o),a=p>o?Math.min(2,g):Math.max(.5,g),r=Math.pow(a,1-n),s=fe(e.worldSize,m.add(f.mult(n*r)).mult(i));e.setLocationAtPoint(e.renderWorldCopies?s.wrap():s,u);}},isZooming:c,elevationCenter:_}}handleFlyTo(e,i){const o=void 0!==i.zoom,a=e.zoom,r=e.applyConstrain(t.W.convert(i.center||i.locationAtOffset),o?+i.zoom:a),s=r.center,n=r.zoom;Gt(e,s);const l=me(e.worldSize,i.locationAtOffset),c=me(e.worldSize,s).sub(l),h=c.mag(),u=t.ao(n-a);let d;if(void 0!==i.minZoom){const o=Math.min(+i.minZoom,a,n),r=e.applyConstrain(s,o).zoom;d=t.ao(r-a);}return {easeFunc:(i,o,r,h)=>{e.setZoom(1===i?n:a+t.ar(o));const u=1===i?s:fe(e.worldSize,l.add(c.mult(r)).mult(o));e.setLocationAtPoint(e.renderWorldCopies?u.wrap():u,h);},scaleOfZoom:u,targetCenter:s,scaleOfMinZoom:d,pixelPathLength:h}}}class ei{constructor(e,t,i){this.blendFunction=e,this.blendColor=t,this.mask=i;}}ei.Replace=[1,0],ei.disabled=new ei(ei.Replace,t.bo.transparent,[!1,!1,!1,!1]),ei.unblended=new ei(ei.Replace,t.bo.transparent,[!0,!0,!0,!0]),ei.alphaBlended=new ei([1,771],t.bo.transparent,[!0,!0,!0,!0]);const ti=2305;class ii{constructor(e,t,i){this.enable=e,this.mode=t,this.frontFace=i;}}ii.disabled=new ii(!1,1029,ti),ii.backCCW=new ii(!0,1029,ti),ii.frontCCW=new ii(!0,1028,ti);class oi{constructor(e,t,i){this.func=e,this.mask=t,this.range=i;}}oi.ReadOnly=!1,oi.ReadWrite=!0,oi.disabled=new oi(519,oi.ReadOnly,[0,1]);const ai=7680;class ri{constructor(e,t,i,o,a,r){this.test=e,this.ref=t,this.mask=i,this.fail=o,this.depthFail=a,this.pass=r;}}function si(e){return "undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext}ri.disabled=new ri({func:519,mask:0},0,0,ai,ai,ai);class ni{get awaitingQuery(){return !!this._readbackQueue}constructor(e){this._readbackWaitFrames=4,this._measureWaitFrames=6,this._texWidth=1,this._texHeight=1,this._measuredError=0,this._updateCount=0,this._lastReadbackFrame=-1e3,this._readbackQueue=null,this._cachedRenderContext=e;const i=e.context,o=i.gl;this._texFormat=o.RGBA,this._texType=o.UNSIGNED_BYTE;const a=new t.aU;a.emplaceBack(-1,-1),a.emplaceBack(2,-1),a.emplaceBack(-1,2);const r=new t.aW;r.emplaceBack(0,1,2),this._fullscreenTriangle=new Bt(i.createVertexBuffer(a,Ot.members),i.createIndexBuffer(r),t.aV.simpleSegment(0,0,a.length,r.length)),this._resultBuffer=new Uint8Array(4),i.activeTexture.set(o.TEXTURE1);const s=o.createTexture();o.bindTexture(o.TEXTURE_2D,s),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.NEAREST),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.NEAREST),o.texImage2D(o.TEXTURE_2D,0,this._texFormat,this._texWidth,this._texHeight,0,this._texFormat,this._texType,null),this._fbo=i.createFramebuffer(this._texWidth,this._texHeight,!1,!1),this._fbo.colorAttachment.set(s),si(o)&&(this._pbo=o.createBuffer(),o.bindBuffer(o.PIXEL_PACK_BUFFER,this._pbo),o.bufferData(o.PIXEL_PACK_BUFFER,4,o.STREAM_READ),o.bindBuffer(o.PIXEL_PACK_BUFFER,null));}destroy(){const e=this._cachedRenderContext.context.gl;this._fullscreenTriangle.destroy(),this._fbo.destroy(),e.deleteBuffer(this._pbo),this._fullscreenTriangle=null,this._fbo=null,this._pbo=null,this._resultBuffer=null;}updateErrorLoop(e,t){const i=this._updateCount;return this._readbackQueue?i>=this._readbackQueue.frameNumberIssued+this._readbackWaitFrames&&this._tryReadback():i>=this._lastReadbackFrame+this._measureWaitFrames&&this._renderErrorTexture(e,t),this._updateCount++,this._measuredError}_bindFramebuffer(){const e=this._cachedRenderContext.context,t=e.gl;e.activeTexture.set(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this._fbo.colorAttachment.get()),e.bindFramebuffer.set(this._fbo.framebuffer);}_renderErrorTexture(e,i){const o=this._cachedRenderContext.context,a=o.gl;if(this._bindFramebuffer(),o.viewport.set([0,0,this._texWidth,this._texHeight]),o.clear({color:t.bo.transparent}),this._cachedRenderContext.useProgram("projectionErrorMeasurement").draw(o,a.TRIANGLES,oi.disabled,ri.disabled,ei.unblended,ii.disabled,((e,t)=>({u_input:e,u_output_expected:t}))(e,i),null,null,"$clipping",this._fullscreenTriangle.vertexBuffer,this._fullscreenTriangle.indexBuffer,this._fullscreenTriangle.segments),this._pbo&&si(a)){a.bindBuffer(a.PIXEL_PACK_BUFFER,this._pbo),a.readBuffer(a.COLOR_ATTACHMENT0),a.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,0),a.bindBuffer(a.PIXEL_PACK_BUFFER,null);const e=a.fenceSync(a.SYNC_GPU_COMMANDS_COMPLETE,0);a.flush(),this._readbackQueue={frameNumberIssued:this._updateCount,sync:e};}else this._readbackQueue={frameNumberIssued:this._updateCount,sync:null};}_tryReadback(){const e=this._cachedRenderContext.context.gl;if(this._pbo&&this._readbackQueue&&si(e)){const i=e.clientWaitSync(this._readbackQueue.sync,0,0);if(i===e.WAIT_FAILED)return t.w("WebGL2 clientWaitSync failed."),this._readbackQueue=null,void(this._lastReadbackFrame=this._updateCount);if(i===e.TIMEOUT_EXPIRED)return;e.bindBuffer(e.PIXEL_PACK_BUFFER,this._pbo),e.getBufferSubData(e.PIXEL_PACK_BUFFER,0,this._resultBuffer,0,4),e.bindBuffer(e.PIXEL_PACK_BUFFER,null);}else this._bindFramebuffer(),e.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,this._resultBuffer);this._readbackQueue=null,this._measuredError=ni._parseRGBA8float(this._resultBuffer),this._lastReadbackFrame=this._updateCount;}static _parseRGBA8float(e){let t=0;return t+=e[0]/256,t+=e[1]/65536,t+=e[2]/16777216,e[3]<127&&(t=-t),t/128}}const li=t.a6/128;function ci(e,i){const o=void 0!==e.granularity?Math.max(e.granularity,1):1,a=o+(e.generateBorders?2:0),r=o+(e.extendToNorthPole||e.generateBorders?1:0)+(e.extendToSouthPole||e.generateBorders?1:0),s=a+1,n=r+1,l=e.generateBorders?-1:0,c=e.generateBorders||e.extendToNorthPole?-1:0,h=o+(e.generateBorders?1:0),u=o+(e.generateBorders||e.extendToSouthPole?1:0),d=s*n,_=a*r*6,p=s*n>65536;if(p&&"16bit"===i)throw new Error("Granularity is too large and meshes would not fit inside 16 bit vertex indices.");const m=p||"32bit"===i,f=new Int16Array(2*d);let g=0;for(let i=c;i<=u;i++)for(let a=l;a<=h;a++){let r=a/o*t.a6;-1===a&&(r=-li),a===o+1&&(r=t.a6+li);let s=i/o*t.a6;-1===i&&(s=e.extendToNorthPole?t.bq:-li),i===o+1&&(s=e.extendToSouthPole?t.br:t.a6+li),f[g++]=r,f[g++]=s;}const v=m?new Uint32Array(_):new Uint16Array(_);let x=0;for(let e=0;e0}get latitudeErrorCorrectionRadians(){return this._verticalPerspectiveProjection.latitudeErrorCorrectionRadians}get currentProjection(){return this.useGlobeRendering?this._verticalPerspectiveProjection:this._mercatorProjection}get name(){return "globe"}get useSubdivision(){return this.currentProjection.useSubdivision}get shaderVariantName(){return this.currentProjection.shaderVariantName}get shaderDefine(){return this.currentProjection.shaderDefine}get shaderPreludeCode(){return this.currentProjection.shaderPreludeCode}get vertexShaderPreludeCode(){return this.currentProjection.vertexShaderPreludeCode}get subdivisionGranularity(){return this.currentProjection.subdivisionGranularity}get useGlobeControls(){return this.transitionState>0}destroy(){this._mercatorProjection.destroy(),this._verticalPerspectiveProjection.destroy();}updateGPUdependent(e){this._mercatorProjection.updateGPUdependent(e),this._verticalPerspectiveProjection.updateGPUdependent(e);}getMeshFromTileID(e,t,i,o,a){return this.currentProjection.getMeshFromTileID(e,t,i,o,a)}setProjection(e){this._transitionable.setValue("type",(null==e?void 0:e.type)||"mercator");}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()||this.currentProjection.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}setErrorQueryLatitudeDegrees(e){this._verticalPerspectiveProjection.setErrorQueryLatitudeDegrees(e),this._mercatorProjection.setErrorQueryLatitudeDegrees(e);}}function pi(e){const t=gi(e.worldSize,e.center.lat);return 2*Math.PI*t}function mi(e,i,o,a,r){const s=1/(1<1e-6){const a=e[0]/o,r=Math.acos(e[2]/o),s=(a>0?r:-r)/Math.PI*180;return new t.W(t.X(s,-180,180),i)}return new t.W(0,i)}function xi(e){return Math.cos(e*Math.PI/180)}function bi(e,i){const o=xi(e),a=xi(i);return t.ar(a/o)}function yi(e,i){const o=e.rotate(i.bearingInRadians),a=i.zoom+bi(i.center.lat,0),r=t.bt(1/xi(i.center.lat),1/xi(Math.min(Math.abs(i.center.lat),60)),t.bw(a,7,3,0,1)),s=360/pi({worldSize:i.worldSize,center:{lat:i.center.lat}});return new t.W(i.center.lng-o.x*s*r,t.al(i.center.lat+o.y*s,-t.am,t.am))}function wi(e){const t=.5*e,i=Math.sin(t),o=Math.cos(t);return Math.log(i+o)-Math.log(o-i)}function Ti(e,i,o,a){const r=e.lat+o*a;if(Math.abs(o)>1){const s=(Math.sign(e.lat+o)!==Math.sign(e.lat)?-Math.abs(e.lat):Math.abs(e.lat))*Math.PI/180,n=Math.abs(e.lat+o)*Math.PI/180,l=wi(s+a*(n-s)),c=wi(s),h=wi(n);return new t.W(e.lng+i*((l-c)/(h-c)),r)}return new t.W(e.lng+i*a,r)}class Pi{constructor(e){this._cachePrevious=new Map,this._cache=new Map,this._hadAnyChanges=!1,this._boundingVolumeFactory=e;}swapBuffers(){if(!this._hadAnyChanges)return;const e=this._cachePrevious;this._cachePrevious=this._cache,this._cache=e,this._cache.clear(),this._hadAnyChanges=!1;}getTileBoundingVolume(e,t,i,o){const a=`${e.z}_${e.x}_${e.y}_${(null==o?void 0:o.terrain)?"t":""}`,r=this._cache.get(a);if(r)return r;const s=this._cachePrevious.get(a);if(s)return this._cache.set(a,s),s;const n=this._boundingVolumeFactory(e,t,i,o);return this._cache.set(a,n),this._hadAnyChanges=!0,n}}class Ci{constructor(e,t,i,o){this.min=i,this.max=o,this.points=e,this.planes=t;}static fromAabb(e,t){const i=[];for(let o=0;o<8;o++)i.push([1&~o?e[0]:t[0],1==(o>>1&1)?t[1]:e[1],1==(o>>2&1)?t[2]:e[2]]);return new Ci(i,[[-1,0,0,t[0]],[1,0,0,-e[0]],[0,-1,0,t[1]],[0,1,0,-e[1]],[0,0,-1,t[2]],[0,0,1,-e[2]]],e,t)}static fromCenterSizeAngles(e,i,o){const a=t.bA([],o[0],o[1],o[2]),r=t.bB([],[i[0],0,0],a),s=t.bB([],[0,i[1],0],a),n=t.bB([],[0,0,i[2]],a),l=[...e],c=[...e];for(let t=0;t<8;t++)for(let i=0;i<3;i++){const o=e[i]+r[i]*(1&~t?-1:1)+s[i]*(1==(t>>1&1)?1:-1)+n[i]*(1==(t>>2&1)?1:-1);l[i]=Math.min(l[i],o),c[i]=Math.max(c[i],o);}const h=[];for(let i=0;i<8;i++){const o=[...e];t.a_(o,o,t.aZ([],r,1&~i?-1:1)),t.a_(o,o,t.aZ([],s,1==(i>>1&1)?1:-1)),t.a_(o,o,t.aZ([],n,1==(i>>2&1)?1:-1)),h.push(o);}return new Ci(h,[[...r,-t.b3(r,h[0])],[...s,-t.b3(s,h[0])],[...n,-t.b3(n,h[0])],[-r[0],-r[1],-r[2],-t.b3(r,h[7])],[-s[0],-s[1],-s[2],-t.b3(s,h[7])],[-n[0],-n[1],-n[2],-t.b3(n,h[7])]],l,c)}intersectsFrustum(e){let t=!0;const i=this.points.length,o=this.planes.length,a=e.planes.length,r=e.points.length;for(let o=0;o=0&&r++;}if(0===r)return 0;r=0&&o++;}if(0===o)return 0}return 1}intersectsPlane(e){const t=this.points.length;let i=0;for(let o=0;o=0&&i++;}return i===t?2:0===i?0:1}}function Mi(e,t,i){const o=e-t;return o<0?-o:Math.max(0,o-i)}function Ii(e,t,i,o,a){const r=e-i;let s;return s=r<0?Math.min(-r,1+r-a):r>a?Math.min(Math.max(r-a,0),1-r):0,Math.max(s,Mi(t,o,a))}class Ei{constructor(){this._boundingVolumeCache=new Pi(this._computeTileBoundingVolume);}prepareNextFrame(){this._boundingVolumeCache.swapBuffers();}distanceToTile2d(e,t,i,o){const a=1<4}allowWorldCopies(){return !1}getTileBoundingVolume(e,t,i,o){return this._boundingVolumeCache.getTileBoundingVolume(e,t,i,o)}_computeTileBoundingVolume(e,i,o,a){var r,s;let n=0,l=0;if(null==a?void 0:a.terrain){const c=new t.a3(e.z,i,e.z,e.x,e.y),h=a.terrain.getMinMaxElevation(c);n=null!==(r=h.minElevation)&&void 0!==r?r:Math.min(0,o),l=null!==(s=h.maxElevation)&&void 0!==s?s:Math.max(0,o);}if(n/=t.bD,l/=t.bD,n+=1,l+=1,e.z<=0)return Ci.fromAabb([-l,-l,-l],[l,l,l]);if(1===e.z)return Ci.fromAabb([0===e.x?-l:0,0===e.y?0:-l,-l],[0===e.x?0:l,0===e.y?l:0,l]);{const i=[mi(0,0,e.x,e.y,e.z),mi(t.a6,0,e.x,e.y,e.z),mi(t.a6,t.a6,e.x,e.y,e.z),mi(0,t.a6,e.x,e.y,e.z)],o=[];for(const e of i)o.push(t.aZ([],e,l));if(l!==n)for(const e of i)o.push(t.aZ([],e,n));0===e.y&&o.push([0,1,0]),e.y===(1<=(1<{const o=t.al(e.lat,-t.am,t.am),a=t.al(+i,this.minZoom+bi(0,o),this.maxZoom);return {center:new t.W(e.lng,o),zoom:a}},this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new Wt({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new Ei;}clone(){const e=new zi;return e.apply(this,!1),e}apply(e,t,i){this._globeLatitudeErrorCorrectionRadians=i||0,this._helper.apply(e,t);}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._globeViewProjMatrixNoCorrection}get inverseProjectionMatrix(){return this._globeProjMatrixInverted}get cameraPosition(){const e=t.bz();return e[0]=this._cameraPosition[0],e[1]=this._cameraPosition[1],e[2]=this._cameraPosition[2],e}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}getProjectionData(e){const{overscaledTileID:t,applyGlobeMatrix:i}=e,o=this._helper.getMercatorTileCoordinates(t);return {mainMatrix:this._globeViewProjMatrix32f,tileMercatorCoords:o,clippingPlane:this._cachedClippingPlane,projectionTransition:i?1:0,fallbackMatrix:this._globeViewProjMatrix32f}}_computeClippingPlane(e){const i=this.pitchInRadians,o=this.cameraToCenterDistance/e,a=Math.sin(i)*o,r=Math.cos(i)*o+1,s=1/Math.sqrt(a*a+r*r)*1;let n=-a,l=r;const c=Math.sqrt(n*n+l*l);n/=c,l/=c;const h=[0,n,l];t.bF(h,h,[0,0,0],-this.bearingInRadians),t.bG(h,h,[0,0,0],-1*this.center.lat*Math.PI/180),t.bH(h,h,[0,0,0],this.center.lng*Math.PI/180);const u=1/t.b5(h);return t.aZ(h,h,u),[...h,-s*u]}isLocationOccluded(e){return !this.isSurfacePointVisible(fi(e))}transformLightDirection(e){const i=this._helper._center.lng*Math.PI/180,o=this._helper._center.lat*Math.PI/180,a=Math.cos(o),r=[Math.sin(i)*a,Math.sin(o),Math.cos(i)*a],s=[r[2],0,-r[0]],n=[0,0,0];t.b2(n,s,r),t.b1(s,s),t.b1(n,n);const l=[0,0,0];return t.b1(l,[s[0]*e[0]+n[0]*e[1]+r[0]*e[2],s[1]*e[0]+n[1]*e[1]+r[1]*e[2],s[2]*e[0]+n[2]*e[1]+r[2]*e[2]]),l}getPixelScale(){return 1/Math.cos(this._helper._center.lat*Math.PI/180)}getCircleRadiusCorrection(){return Math.cos(this._helper._center.lat*Math.PI/180)}getPitchedTextCorrection(e,i,o){const a=function(e,i,o){const a=1/(1<r&&(r=i),on&&(n=o);}const h=[c.lng+s,c.lat+l,c.lng+r,c.lat+n];return this.isSurfacePointOnScreen([0,1,0])&&(h[3]=90,h[0]=-180,h[2]=180),this.isSurfacePointOnScreen([0,-1,0])&&(h[1]=-90,h[0]=-180,h[2]=180),new G(h)}calculateCenterFromCameraLngLatAlt(e,t,i,o){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,o)}setLocationAtPoint(e,i){const o=fi(this.unprojectScreenPoint(i)),a=fi(e),r=t.bz();t.bK(r);const s=t.bz();t.bH(s,o,r,-this.center.lng*Math.PI/180),t.bG(s,s,r,this.center.lat*Math.PI/180);const n=a[0]*a[0]+a[2]*a[2],l=s[0]*s[0];if(n=-g&&p<=g,x=f>=-g&&f<=g;let b,y;if(v&&x){const e=this.center.lng*Math.PI/180,i=this.center.lat*Math.PI/180;t.bM(u,e)+t.bM(p,i)=0}isSurfacePointOnScreen(e){if(!this.isSurfacePointVisible(e))return !1;const i=t.bE();return t.aE(i,[...e,1],this._globeViewProjMatrixNoCorrection),i[0]/=i[3],i[1]/=i[3],i[2]/=i[3],i[0]>-1&&i[0]<1&&i[1]>-1&&i[1]<1&&i[2]>-1&&i[2]<1}rayPlanetIntersection(e,i){const o=t.b3(e,i),a=t.bz(),r=t.bz();t.aZ(r,i,o),t.b0(a,e,r);const s=1-t.b3(a,a);if(s<0)return null;const n=t.b3(e,e)-1,l=-o+(o<0?1:-1)*Math.sqrt(s),c=n/l,h=l;return {tMin:Math.min(c,h),tMax:Math.max(c,h)}}unprojectScreenPoint(e){const i=this._cameraPosition,o=this.getRayDirectionFromPixel(e),a=this.rayPlanetIntersection(i,o);if(a){const e=t.bz();t.a_(e,i,[o[0]*a.tMin,o[1]*a.tMin,o[2]*a.tMin]);const r=t.bz();return t.b1(r,e),vi(r)}const r=this._cachedClippingPlane,s=r[0]*o[0]+r[1]*o[1]+r[2]*o[2],n=-t.b9(r,i)/s,l=t.bz();if(n>0)t.a_(l,i,[o[0]*n,o[1]*n,o[2]*n]);else {const e=t.bz();t.a_(e,i,[2*o[0],2*o[1],2*o[2]]);const a=t.b9(this._cachedClippingPlane,e);t.b0(l,e,[this._cachedClippingPlane[0]*a,this._cachedClippingPlane[1]*a,this._cachedClippingPlane[2]*a]);}const c=function(e){const i=t.bz();return i[0]=e[0]*-e[3],i[1]=e[1]*-e[3],i[2]=e[2]*-e[3],{center:i,radius:Math.sqrt(1-e[3]*e[3])}}(r);return vi(function(e,i,o){const a=t.bz();t.b0(a,o,e);const r=t.bz();return t.bx(r,e,a,i/t.b7(a)),r}(c.center,c.radius,l))}getMatrixForModel(e,i){const o=t.W.convert(e),a=1/t.bD,r=t.bi();return t.bI(r,r,o.lng/180*Math.PI),t.bf(r,r,-o.lat/180*Math.PI),t.Q(r,r,[0,0,1+i/t.bD]),t.bf(r,r,.5*Math.PI),t.S(r,r,[a,a,a]),r}getProjectionDataForCustomLayer(e=!0){const i=this.getProjectionData({overscaledTileID:new t.a3(0,0,0,0,0),applyGlobeMatrix:e});return i.tileMercatorCoords=[0,0,1,1],i}getFastPathSimpleProjectionMatrix(e){}}class Ri{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e);}setMaxZoom(e){this._helper.setMaxZoom(e);}setMinPitch(e){this._helper.setMinPitch(e);}setMaxPitch(e){this._helper.setMaxPitch(e);}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e);}setBearing(e){this._helper.setBearing(e);}setPitch(e){this._helper.setPitch(e);}setRoll(e){this._helper.setRoll(e);}setFov(e){this._helper.setFov(e);}setZoom(e){this._helper.setZoom(e);}setCenter(e){this._helper.setCenter(e);}setElevation(e){this._helper.setElevation(e);}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e);}setPadding(e){this._helper.setPadding(e);}interpolatePadding(e,t,i){this._helper.interpolatePadding(e,t,i);}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,i=!0){this._helper.resize(e,t,i);}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e);}setConstrainOverride(e){this._helper.setConstrainOverride(e);}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t);}clearNearFarZOverride(){this._helper.clearNearFarZOverride();}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}get isGlobeRendering(){return this._globeness>0}setTransitionState(e,t){this._globeness=e,this._globeLatitudeErrorCorrectionRadians=t,this._calcMatrices(),this._verticalPerspectiveTransform.getCoveringTilesDetailsProvider().prepareNextFrame(),this._mercatorTransform.getCoveringTilesDetailsProvider().prepareNextFrame();}get currentTransform(){return this.isGlobeRendering?this._verticalPerspectiveTransform:this._mercatorTransform}constructor(e){this._globeLatitudeErrorCorrectionRadians=0,this._globeness=1,this.defaultConstrain=(e,t)=>this.currentTransform.defaultConstrain(e,t),this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new Wt({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._globeness=1,this._mercatorTransform=new Xt,this._verticalPerspectiveTransform=new zi;}clone(){const e=new Ri;return e._globeness=this._globeness,e._globeLatitudeErrorCorrectionRadians=this._globeLatitudeErrorCorrectionRadians,e.apply(this,!1),e}apply(e,t){this._helper.apply(e,t),this._mercatorTransform.apply(this,!1),this._verticalPerspectiveTransform.apply(this,!1,this._globeLatitudeErrorCorrectionRadians);}get projectionMatrix(){return this.currentTransform.projectionMatrix}get modelViewProjectionMatrix(){return this.currentTransform.modelViewProjectionMatrix}get inverseProjectionMatrix(){return this.currentTransform.inverseProjectionMatrix}get cameraPosition(){return this.currentTransform.cameraPosition}getProjectionData(e){const t=this._mercatorTransform.getProjectionData(e),i=this._verticalPerspectiveTransform.getProjectionData(e);return {mainMatrix:this.isGlobeRendering?i.mainMatrix:t.mainMatrix,clippingPlane:i.clippingPlane,tileMercatorCoords:i.tileMercatorCoords,projectionTransition:e.applyGlobeMatrix?this._globeness:0,fallbackMatrix:t.fallbackMatrix}}isLocationOccluded(e){return this.currentTransform.isLocationOccluded(e)}transformLightDirection(e){return this.currentTransform.transformLightDirection(e)}getPixelScale(){return t.bt(this._mercatorTransform.getPixelScale(),this._verticalPerspectiveTransform.getPixelScale(),this._globeness)}getCircleRadiusCorrection(){return t.bt(this._mercatorTransform.getCircleRadiusCorrection(),this._verticalPerspectiveTransform.getCircleRadiusCorrection(),this._globeness)}getPitchedTextCorrection(e,i,o){const a=this._mercatorTransform.getPitchedTextCorrection(e,i,o),r=this._verticalPerspectiveTransform.getPitchedTextCorrection(e,i,o);return t.bt(a,r,this._globeness)}projectTileCoordinates(e,t,i,o){return this.currentTransform.projectTileCoordinates(e,t,i,o)}_calcMatrices(){this._helper._width&&this._helper._height&&(this._verticalPerspectiveTransform.apply(this,!1,this._globeLatitudeErrorCorrectionRadians),this._helper._nearZ=this._verticalPerspectiveTransform.nearZ,this._helper._farZ=this._verticalPerspectiveTransform.farZ,this._mercatorTransform.apply(this,!0,this.isGlobeRendering),this._helper._nearZ=this._mercatorTransform.nearZ,this._helper._farZ=this._mercatorTransform.farZ);}calculateFogMatrix(e){return this.currentTransform.calculateFogMatrix(e)}getVisibleUnwrappedCoordinates(e){return this.currentTransform.getVisibleUnwrappedCoordinates(e)}getCameraFrustum(){return this.currentTransform.getCameraFrustum()}getClippingPlane(){return this.currentTransform.getClippingPlane()}getCoveringTilesDetailsProvider(){return this.currentTransform.getCoveringTilesDetailsProvider()}recalculateZoomAndCenter(e){this._mercatorTransform.recalculateZoomAndCenter(e),this._verticalPerspectiveTransform.recalculateZoomAndCenter(e);}maxPitchScaleFactor(){return this._mercatorTransform.maxPitchScaleFactor()}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){return this._helper.getCameraLngLat()}lngLatToCameraDepth(e,t){return this.currentTransform.lngLatToCameraDepth(e,t)}populateCache(e){this._mercatorTransform.populateCache(e),this._verticalPerspectiveTransform.populateCache(e);}getBounds(){return this.currentTransform.getBounds()}calculateCenterFromCameraLngLatAlt(e,t,i,o){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,o)}setLocationAtPoint(e,t){if(!this.isGlobeRendering)return this._mercatorTransform.setLocationAtPoint(e,t),void this.apply(this._mercatorTransform,!1);this._verticalPerspectiveTransform.setLocationAtPoint(e,t),this.apply(this._verticalPerspectiveTransform,!1);}locationToScreenPoint(e,t){return this.currentTransform.locationToScreenPoint(e,t)}screenPointToMercatorCoordinate(e,t){return this.currentTransform.screenPointToMercatorCoordinate(e,t)}screenPointToLocation(e,t){return this.currentTransform.screenPointToLocation(e,t)}isPointOnMapSurface(e,t){return this.currentTransform.isPointOnMapSurface(e,t)}getRayDirectionFromPixel(e){return this._verticalPerspectiveTransform.getRayDirectionFromPixel(e)}getMatrixForModel(e,t){return this.currentTransform.getMatrixForModel(e,t)}getProjectionDataForCustomLayer(e=!0){const t=this._mercatorTransform.getProjectionDataForCustomLayer(e);if(!this.isGlobeRendering)return t;const i=this._verticalPerspectiveTransform.getProjectionDataForCustomLayer(e);return i.fallbackMatrix=t.mainMatrix,i}getFastPathSimpleProjectionMatrix(e){return this.currentTransform.getFastPathSimpleProjectionMatrix(e)}}class Di{get useGlobeControls(){return !0}handlePanInertia(e,i){const o=yi(e,i);return Math.abs(o.lng-i.center.lng)>180&&(o.lng=i.center.lng+179.5*Math.sign(o.lng-i.center.lng)),{easingCenter:o,easingOffset:new t.P(0,0)}}handleMapControlsRollPitchBearingZoom(e,i){const o=e.around,a=i.screenPointToLocation(o);e.bearingDelta&&i.setBearing(i.bearing+e.bearingDelta),e.pitchDelta&&i.setPitch(i.pitch+e.pitchDelta),e.rollDelta&&i.setRoll(i.roll+e.rollDelta);const r=i.zoom;e.zoomDelta&&i.setZoom(i.zoom+e.zoomDelta);const s=i.zoom-r;if(0===s)return;const n=t.bJ(i.center.lng,a.lng),l=n/(Math.abs(n/180)+1),c=t.bJ(i.center.lat,a.lat),h=i.getRayDirectionFromPixel(o),u=i.cameraPosition,d=-1*t.b3(u,h),_=t.bz();t.a_(_,u,[h[0]*d,h[1]*d,h[2]*d]);const p=t.b5(_)-1,m=Math.exp(.5*-Math.max(p-.3,0)),f=gi(i.worldSize,i.center.lat)/Math.min(i.width,i.height),g=t.bw(f,.9,.5,1,.25),v=(1-t.ao(-s))*Math.min(m,g),x=i.center.lat,b=i.zoom,y=new t.W(i.center.lng+l*v,t.al(i.center.lat+c*v,-t.am,t.am));i.setLocationAtPoint(a,o);const w=i.center,T=t.bw(Math.abs(n),45,85,0,1),P=t.bw(f,.75,.35,0,1),C=Math.pow(Math.max(T,P),.25),M=t.bJ(w.lng,y.lng),I=t.bJ(w.lat,y.lat);i.setCenter(new t.W(w.lng+M*C,w.lat+I*C).wrap()),i.setZoom(b+bi(x,i.center.lat));}handleMapControlsPan(e,t,i){if(!e.panDelta)return;const o=t.center.lat,a=t.zoom;t.setCenter(yi(e.panDelta,t).wrap()),t.setZoom(a+bi(o,t.center.lat));}cameraForBoxAndBearing(e,i,o,a,r){const s=Qt(e,i,o,a,r),n=i.left/r.width*2-1,l=(r.width-i.right)/r.width*2-1,c=i.top/r.height*-2+1,h=(r.height-i.bottom)/r.height*-2+1,u=t.bJ(o.getWest(),o.getEast())<0,d=u?o.getEast():o.getWest(),_=u?o.getWest():o.getEast(),p=Math.max(o.getNorth(),o.getSouth()),m=Math.min(o.getNorth(),o.getSouth()),f=d+.5*t.bJ(d,_),g=p+.5*t.bJ(p,m),v=r.clone();v.setCenter(s.center),v.setBearing(s.bearing),v.setPitch(0),v.setRoll(0),v.setZoom(s.zoom);const x=v.modelViewProjectionMatrix,b=[fi(o.getNorthWest()),fi(o.getNorthEast()),fi(o.getSouthWest()),fi(o.getSouthEast()),fi(new t.W(_,g)),fi(new t.W(d,g)),fi(new t.W(f,p)),fi(new t.W(f,m))],y=fi(s.center);let w=Number.POSITIVE_INFINITY;for(const e of b)n<0&&(w=Di.getLesserNonNegativeNonNull(w,Di.solveVectorScale(e,y,x,"x",n))),l>0&&(w=Di.getLesserNonNegativeNonNull(w,Di.solveVectorScale(e,y,x,"x",l))),c>0&&(w=Di.getLesserNonNegativeNonNull(w,Di.solveVectorScale(e,y,x,"y",c))),h<0&&(w=Di.getLesserNonNegativeNonNull(w,Di.solveVectorScale(e,y,x,"y",h)));if(Number.isFinite(w)&&0!==w)return s.zoom=Math.min(v.zoom+t.ar(w),e.maxZoom),s;Kt();}handleJumpToCenterZoom(e,i){const o=e.center.lat,a=e.applyConstrain(i.center?t.W.convert(i.center):e.center,e.zoom).center;e.setCenter(a.wrap());const r=void 0!==i.zoom?+i.zoom:e.zoom+bi(o,a.lat);e.zoom!==r&&e.setZoom(r);}handleEaseTo(e,i){const o=e.zoom,a=e.center,r=e.padding,s={roll:e.roll,pitch:e.pitch,bearing:e.bearing},n={roll:void 0===i.roll?e.roll:i.roll,pitch:void 0===i.pitch?e.pitch:i.pitch,bearing:void 0===i.bearing?e.bearing:i.bearing},l=void 0!==i.zoom,c=!e.isPaddingEqual(i.padding);let h=!1;const u=i.center?t.W.convert(i.center):a,d=e.applyConstrain(u,o).center;Gt(e,d);const _=e.clone();_.setCenter(d),_.setZoom(l?+i.zoom:o+bi(a.lat,u.lat)),_.setBearing(i.bearing);const p=new t.P(t.al(e.centerPoint.x+i.offsetAsPoint.x,0,e.width),t.al(e.centerPoint.y+i.offsetAsPoint.y,0,e.height));_.setLocationAtPoint(d,p);const m=(i.offset&&i.offsetAsPoint.mag())>0?_.center:d,f=l?+i.zoom:o+bi(a.lat,m.lat),g=o+bi(a.lat,0),v=f+bi(m.lat,0),x=t.bJ(a.lng,m.lng),b=t.bJ(a.lat,m.lat),y=t.ao(v-g);return h=f!==o,{easeFunc:o=>{if(t.bn(s,n)||Yt({startEulerAngles:s,endEulerAngles:n,tr:e,k:o,useSlerp:s.roll!=n.roll}),c&&e.interpolatePadding(r,i.padding,o),i.around)t.w("Easing around a point is not supported under globe projection."),e.setLocationAtPoint(i.around,i.aroundPoint);else {const t=v>g?Math.min(2,y):Math.max(.5,y),i=Math.pow(t,1-o),r=Ti(a,x,b,o*i);e.setCenter(r.wrap());}if(h){const i=t.H.number(g,v,o)+bi(0,e.center.lat);e.setZoom(i);}},isZooming:h,elevationCenter:m}}handleFlyTo(e,i){const o=void 0!==i.zoom,a=e.center,r=e.zoom,s=e.padding,n=!e.isPaddingEqual(i.padding),l=e.applyConstrain(t.W.convert(i.center||i.locationAtOffset),r).center,c=o?+i.zoom:e.zoom+bi(e.center.lat,l.lat),h=e.clone();h.setCenter(l),h.setZoom(c),h.setBearing(i.bearing);const u=new t.P(t.al(e.centerPoint.x+i.offsetAsPoint.x,0,e.width),t.al(e.centerPoint.y+i.offsetAsPoint.y,0,e.height));h.setLocationAtPoint(l,u);const d=h.center;Gt(e,d);const _=function(e,i,o){const a=fi(i),r=fi(o),s=t.b3(a,r),n=Math.acos(s),l=pi(e);return n/(2*Math.PI)*l}(e,a,d),p=r+bi(a.lat,0),m=c+bi(d.lat,0),f=t.ao(m-p);let g;if("number"==typeof i.minZoom){const o=+i.minZoom+bi(d.lat,0),a=Math.min(o,p,m)+bi(0,d.lat),r=e.applyConstrain(d,a).zoom+bi(d.lat,0);g=t.ao(r-p);}const v=t.bJ(a.lng,d.lng),x=t.bJ(a.lat,d.lat);return {easeFunc:(o,r,l,h)=>{const u=Ti(a,v,x,l);n&&e.interpolatePadding(s,i.padding,o);const _=1===o?d:u;e.setCenter(_.wrap());const m=p+t.ar(r);e.setZoom(1===o?c:m+bi(0,_.lat));},scaleOfZoom:f,targetCenter:d,scaleOfMinZoom:g,pixelPathLength:_}}static solveVectorScale(e,t,i,o,a){const r="x"===o?[i[0],i[4],i[8],i[12]]:[i[1],i[5],i[9],i[13]],s=[i[3],i[7],i[11],i[15]],n=e[0]*r[0]+e[1]*r[1]+e[2]*r[2],l=e[0]*s[0]+e[1]*s[1]+e[2]*s[2],c=t[0]*r[0]+t[1]*r[1]+t[2]*r[2],h=t[0]*s[0]+t[1]*s[1]+t[2]*s[2];return c+a*l===n+a*h||s[3]*(n-c)+r[3]*(h-l)+n*h==c*l?null:(c+r[3]-a*h-a*s[3])/(c-n-a*h+a*l)}static getLesserNonNegativeNonNull(e,t){return null!==t&&t>=0&&tt.C(e,null==i?void 0:i.filter((e=>"source.canvas"!==e.identifier))),Fi=t.bN();class ki extends t.E{constructor(e,i={}){var o,a;super(),this._rtlPluginLoaded=()=>{for(const e in this.tileManagers){const t=this.tileManagers[e].getSource().type;"vector"!==t&&"geojson"!==t||this.tileManagers[e].reload();}},this.map=e,this.dispatcher=new k(F(),e._getMapId()),this.dispatcher.registerMessageHandler("GG",((e,t)=>this.getGlyphs(e,t))),this.dispatcher.registerMessageHandler("GI",((e,t)=>this.getImages(e,t))),this.dispatcher.registerMessageHandler("GDA",((e,t)=>this.getDashes(e,t))),this.imageManager=new g,this.imageManager.setEventedParent(this);const r=(null===(o=e._container)||void 0===o?void 0:o.lang)||"undefined"!=typeof document&&(null===(a=document.documentElement)||void 0===a?void 0:a.lang)||void 0;this.glyphManager=new T(e._requestManager,i.localIdeographFontFamily,r),this.lineAtlas=new S(256,512),this.crossTileSymbolIndex=new At,this._setInitialValues(),this._resetUpdates(),this.dispatcher.broadcast("SR",t.bO()),ce().on(se,this._rtlPluginLoaded),this.on("data",(e=>{if("source"!==e.dataType||"metadata"!==e.sourceDataType)return;const t=this.tileManagers[e.sourceId];if(!t)return;const i=t.getSource();if(null==i?void 0:i.vectorLayerIds)for(const e in this._layers){const t=this._layers[e];t.source===i.id&&this._validateLayer(t);}}));}_setInitialValues(){var e;this._spritesImagesIds={},this._layers={},this._order=[],this.tileManagers={},this.zoomHistory=new t.bP,this._availableImages=[],this._globalState={},this._serializedLayers={},this.stylesheet=null,this.light=null,this.sky=null,this.projection&&(this.projection.destroy(),delete this.projection),this._loaded=!1,this._changed=!1,this._updatedLayers={},this._updatedSources={},this._changedImages={},this._glyphsDidChange=!1,this._updatedPaintProps={},this._layerOrderChanged=!1,this.crossTileSymbolIndex=new((null===(e=this.crossTileSymbolIndex)||void 0===e?void 0:e.constructor)||Object),this.pauseablePlacement=void 0,this.placement=void 0,this.z=0;}setGlobalStateProperty(e,i){var o,a,r;this._checkLoaded();const s=null===i?null!==(r=null===(a=null===(o=this.stylesheet.state)||void 0===o?void 0:o[e])||void 0===a?void 0:a.default)&&void 0!==r?r:null:i;if(t.bQ(s,this._globalState[e]))return this;this._globalState[e]=s,this._applyGlobalStateChanges([e]);}getGlobalState(){return this._globalState}setGlobalState(e){this._checkLoaded();const i=[];for(const o in e)!t.bQ(this._globalState[o],e[o].default)&&(i.push(o),this._globalState[o]=e[o].default);this._applyGlobalStateChanges(i);}_applyGlobalStateChanges(e){if(0===e.length)return;const t=new Set,i={};for(const o of e){i[o]=this._globalState[o];for(const e in this._layers){const i=this._layers[e],a=i.getLayoutAffectingGlobalStateRefs(),r=i.getPaintAffectingGlobalStateRefs(),s=i.getVisibilityAffectingGlobalStateRefs();if(a.has(o)&&t.add(i.source),r.has(o))for(const{name:e,value:t}of r.get(o))this._updatePaintProperty(i,e,t);(null==s?void 0:s.has(o))&&(i.recalculateVisibility(),this._updateLayer(i));}}this.dispatcher.broadcast("UGS",i);for(const e in this.tileManagers)t.has(e)&&(this._reloadSource(e),this._changed=!0);}loadURL(e){return t._(this,arguments,void 0,(function*(e,i={},o){this.fire(new t.n("dataloading",{dataType:"style"})),i.validate="boolean"!=typeof i.validate||i.validate,this._loadStyleRequest=new AbortController;const a=this._loadStyleRequest;try{const r=yield this.map._requestManager.transformRequest(e,"Style");t.bR(a.signal);const s=yield t.k(r,a);this._loadStyleRequest===a&&(this._loadStyleRequest=null),this._load(s.data,i,o);}catch(e){this._loadStyleRequest===a&&(this._loadStyleRequest=null),e&&!a.signal.aborted&&this.fire(new t.l(t.d(e)));}}))}loadJSON(e,i={},o){this.fire(new t.n("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,n.frameAsync(this._frameRequest,this.map._ownerWindow).then((()=>{this._frameRequest=null,i.validate=!1!==i.validate,this._load(e,i,o);})).catch((()=>{}));}loadEmpty(){this.fire(new t.n("dataloading",{dataType:"style"})),this._load(Fi,{validate:!1});}_load(e,i,o){var a,r;let s=i.transformStyle?i.transformStyle(o,e):e;if(!i.validate||!Li(this,t.F(s))){s=Object.assign({},s),this._loaded=!0,this.stylesheet=s;for(const e in s.sources)this.addSource(e,s.sources[e],{validate:!1});s.sprite?this._loadSprite(s.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(s.glyphs),this._createLayers(),this.light=new M(this.stylesheet.light),this._setProjectionInternal((null===(a=this.stylesheet.projection)||void 0===a?void 0:a.type)||"mercator"),this.sky=new E(this.stylesheet.sky),this.map.setTerrain(null!==(r=this.stylesheet.terrain)&&void 0!==r?r:null),this.fire(new t.n("data",{dataType:"style"})),this.fire(new t.n("style.load"));}}_createLayers(){var e,i,o;const a=t.bS(this.stylesheet.layers);this.setGlobalState(null!==(e=this.stylesheet.state)&&void 0!==e?e:null),this.dispatcher.broadcast("SL",a),this._order=a.map((e=>e.id)),this._layers={},this._serializedLayers=null;for(const e of a){const a=t.bT(e,this._globalState);if(a.setEventedParent(this,{layer:{id:e.id}}),this._layers[e.id]=a,t.bU(a)&&this.tileManagers[a.source]){const t=null!==(o=null===(i=e.paint)||void 0===i?void 0:i["raster-fade-duration"])&&void 0!==o?o:a.paint.get("raster-fade-duration");this.tileManagers[a.source].setRasterFadeDuration(t);}}}_loadSprite(e,i=!1,o=void 0){this.imageManager.setLoaded(!1);const a=new AbortController;let r;this._spriteRequest=a,function(e,i,o,a){return t._(this,void 0,void 0,(function*(){const r=p(e),s=o>1?"@2x":"",l={},c={};for(const{id:e,url:o}of r){const r=yield i.transformRequest(m(o,s,".json"),"SpriteJSON");l[e]=t.k(r,a);const n=yield i.transformRequest(m(o,s,".png"),"SpriteImage");c[e]=u.getImage(n,a);}return yield Promise.all([...Object.values(l),...Object.values(c)]),function(e,i){return t._(this,void 0,void 0,(function*(){const t={};for(const o in e){t[o]={};const a=n.getImageCanvasContext((yield i[o]).data),r=(yield e[o]).data;for(const e in r){const{width:i,height:s,x:n,y:l,sdf:c,pixelRatio:h,stretchX:u,stretchY:d,content:_,textFitWidth:p,textFitHeight:m}=r[e];t[o][e]={data:null,pixelRatio:h,sdf:c,stretchX:u,stretchY:d,content:_,textFitWidth:p,textFitHeight:m,spriteData:{width:i,height:s,x:n,y:l,context:a}};}}return t}))}(l,c)}))}(e,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then((e=>{if(this._spriteRequest=null,e)for(const t in e){this._spritesImagesIds[t]=[];const o=this._spritesImagesIds[t]?this._spritesImagesIds[t].filter((t=>!(t in e))):[];for(const e of o)this.imageManager.removeImage(e),this._changedImages[e]=!0;for(const o in e[t]){const a="default"===t?o:`${t}:${o}`;this._spritesImagesIds[t].push(a),a in this.imageManager.images?this.imageManager.updateImage(a,e[t][o],!1):this.imageManager.addImage(a,e[t][o]),i&&(this._changedImages[a]=!0);}}})).catch((e=>{this._spriteRequest=null,r=e,a.signal.aborted||this.fire(new t.l(r));})).finally((()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),i&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.n("data",{dataType:"style"})),o&&o(r);}));}_unloadSprite(){for(const e of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(e),this._changedImages[e]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.n("data",{dataType:"style"}));}_validateLayer(e){const i=this.tileManagers[e.source];if(!i)return;const o=e.sourceLayer;if(!o)return;const a=i.getSource();("geojson"===a.type||a.vectorLayerIds&&!a.vectorLayerIds.includes(o))&&this.fire(new t.l(new Error(`Source layer "${o}" does not exist on source "${a.id}" as specified by style layer "${e.id}".`)));}loaded(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(const e in this.tileManagers)if(!this.tileManagers[e].loaded())return !1;return this.imageManager.isLoaded()}_serializeByIds(e,i=!1){const o=this._serializedAllLayers();if(!e||0===e.length)return Object.values(i?t.bV(o):o);const a=[];for(const r of e)if(o[r]){const e=i?t.bV(o[r]):o[r];a.push(e);}return a}_serializedAllLayers(){let e=this._serializedLayers;if(e)return e;e=this._serializedLayers={};const t=Object.keys(this._layers);for(const i of t){const t=this._layers[i];"custom"!==t.type&&(e[i]=t.serialize());}return e}hasTransitions(){var e,t,i;if(null===(e=this.light)||void 0===e?void 0:e.hasTransition())return !0;if(null===(t=this.sky)||void 0===t?void 0:t.hasTransition())return !0;if(null===(i=this.projection)||void 0===i?void 0:i.hasTransition())return !0;for(const e in this.tileManagers)if(this.tileManagers[e].hasTransition())return !0;for(const e in this._layers)if(this._layers[e].hasTransition())return !0;return !1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(e){if(!this._loaded)return;const i=this._changed;if(i){const t=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(t.length||i.length)&&this._updateWorkerLayers(t,i);for(const e in this._updatedSources){const t=this._updatedSources[e];if("reload"===t)this._reloadSource(e);else {if("clear"!==t)throw new Error(`Invalid action ${t}`);this._clearSource(e);}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const t in this._updatedPaintProps)this._layers[t].updateTransitions(e);this.light.updateTransitions(e),this.sky.updateTransitions(e),this._resetUpdates();}const o={};for(const e in this.tileManagers){const t=this.tileManagers[e];o[e]=t.used,t.used=!1;}for(const t of this._order){const i=this._layers[t];i.recalculate(e,this._availableImages),!i.isHidden(e.zoom)&&i.source&&(this.tileManagers[i.source].used=!0);}for(const e in o){const i=this.tileManagers[e];!!o[e]!=!!i.used&&i.fire(new t.n("data",{sourceDataType:"visibility",dataType:"source",sourceId:e}));}this.light.recalculate(e),this.sky.recalculate(e),this.projection.recalculate(e),this.z=e.zoom,i&&this.fire(new t.n("data",{dataType:"style"}));}_updateTilesForChangedImages(){const e=Object.keys(this._changedImages);if(e.length){for(const t in this.tileManagers)this.tileManagers[t].reloadTilesForDependencies(["icons","patterns"],e);this._changedImages={};}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const e in this.tileManagers)this.tileManagers[e].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1;}}_updateWorkerLayers(e,t){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(e,!1),removedIds:t});}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1;}setState(e,i={}){var o;this._checkLoaded();const a=this.serialize();if(e=i.transformStyle?i.transformStyle(a,e):e,(null===(o=i.validate)||void 0===o||o)&&Li(this,t.F(e)))return !1;(e=t.bV(e)).layers=t.bS(e.layers);const r=t.bW(a,e),s=this._getOperationsToPerform(r);if(s.unimplemented.length>0)throw new Error(`Unimplemented: ${s.unimplemented.join(", ")}.`);if(0===s.operations.length)return !1;for(const e of s.operations)e();return this.stylesheet=e,this._serializedLayers=null,this.fire(new t.n("style.load",{style:this})),!0}_getOperationsToPerform(e){const t=[],i=[];for(const o of e)switch(o.command){case "setCenter":case "setZoom":case "setBearing":case "setPitch":case "setRoll":continue;case "addLayer":t.push((()=>this.addLayer.apply(this,o.args)));break;case "removeLayer":t.push((()=>this.removeLayer.apply(this,o.args)));break;case "setPaintProperty":t.push((()=>this.setPaintProperty.apply(this,o.args)));break;case "setLayoutProperty":t.push((()=>this.setLayoutProperty.apply(this,o.args)));break;case "setFilter":t.push((()=>this.setFilter.apply(this,o.args)));break;case "addSource":t.push((()=>this.addSource.apply(this,o.args)));break;case "removeSource":t.push((()=>this.removeSource.apply(this,o.args)));break;case "setLayerZoomRange":t.push((()=>this.setLayerZoomRange.apply(this,o.args)));break;case "setLight":t.push((()=>this.setLight.apply(this,o.args)));break;case "setGeoJSONSourceData":t.push((()=>this.setGeoJSONSourceData.apply(this,o.args)));break;case "setGlyphs":t.push((()=>this.setGlyphs.apply(this,o.args)));break;case "setSprite":t.push((()=>this.setSprite.apply(this,o.args)));break;case "setTerrain":t.push((()=>this.map.setTerrain.apply(this,o.args)));break;case "setSky":t.push((()=>this.setSky.apply(this,o.args)));break;case "setProjection":this.setProjection.apply(this,o.args);break;case "setGlobalState":t.push((()=>this.setGlobalState.apply(this,o.args)));break;case "setTransition":t.push((()=>{}));break;default:i.push(o.command);}return {operations:t,unimplemented:i}}addImage(e,i){if(this.getImage(e))return this.fire(new t.l(new Error(`An image named "${e}" already exists.`)));this.imageManager.addImage(e,i),this._afterImageUpdated(e);}updateImage(e,t){this.imageManager.updateImage(e,t);}getImage(e){return this.imageManager.getImage(e)}removeImage(e){if(!this.getImage(e))return this.fire(new t.l(new Error(`An image named "${e}" does not exist.`)));this.imageManager.removeImage(e),this._afterImageUpdated(e);}_afterImageUpdated(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.n("data",{dataType:"style"}));}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(e,i,o={}){var a;if(this._checkLoaded(),void 0!==this.tileManagers[e])throw new Error(`Source "${e}" already exists.`);if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(", ")}.`);if(["vector","raster","geojson","video","image"].includes(i.type)&&this._validate(t.F.source,`sources.${e}`,i,null,o))return;(null===(a=this.map)||void 0===a?void 0:a._collectResourceTiming)&&(i.collectResourceTiming=!0);const r=this.tileManagers[e]=new Fe(e,i,this.dispatcher);r.style=this,r.setEventedParent(this,(()=>({isSourceLoaded:r.loaded(),source:r.serialize(),sourceId:e}))),r.onAdd(this.map),this._changed=!0;}removeSource(e){if(this._checkLoaded(),void 0===this.tileManagers[e])throw new Error(`There is no source with this ID=${e}`);for(const i in this._layers)if(this._layers[i].source===e)return this.fire(new t.l(new Error(`Source "${e}" cannot be removed while layer "${i}" is using it.`)));const i=this.tileManagers[e];delete this.tileManagers[e],delete this._updatedSources[e],i.fire(new t.n("data",{sourceDataType:"metadata",dataType:"source",sourceId:e})),i.setEventedParent(null),i.onRemove(this.map),this._changed=!0;}setGeoJSONSourceData(e,t){if(this._checkLoaded(),void 0===this.tileManagers[e])throw new Error(`There is no source with this ID=${e}`);const i=this.tileManagers[e].getSource();if("geojson"!==i.type)throw new Error(`geojsonSource.type is ${i.type}, which is !== 'geojson`);i.setData(t),this._changed=!0;}getSource(e){var t;return null===(t=this.tileManagers[e])||void 0===t?void 0:t.getSource()}addLayer(e,i,o={}){this._checkLoaded();const a=e.id;if(this.getLayer(a))return void this.fire(new t.l(new Error(`Layer "${a}" already exists on this map.`)));let r;if("custom"===e.type){if(Li(this,t.bX(e)))return;r=t.bT(e,this._globalState);}else {if("source"in e&&"object"==typeof e.source&&(this.addSource(a,e.source),e=t.bV(e),e=t.e(e,{source:a})),this._validate(t.F.layer,`layers.${a}`,e,{arrayIndex:-1},o))return;r=t.bT(e,this._globalState),this._validateLayer(r),r.setEventedParent(this,{layer:{id:a}});}const s=i?this._order.indexOf(i):this._order.length;if(i&&-1===s)this.fire(new t.l(new Error(`Cannot add layer "${a}" before non-existing layer "${i}".`)));else {if(this._order.splice(s,0,a),this._layerOrderChanged=!0,this._layers[a]=r,this._removedLayers[a]&&r.source&&"custom"!==r.type){const e=this._removedLayers[a];delete this._removedLayers[a],e.type!==r.type?this._updatedSources[r.source]="clear":(this._updatedSources[r.source]="reload",this.tileManagers[r.source].pause());}this._updateLayer(r),r.onAdd&&r.onAdd(this.map);}}moveLayer(e,i){if(this._checkLoaded(),this._changed=!0,!this._layers[e])return void this.fire(new t.l(new Error(`The layer '${e}' does not exist in the map's style and cannot be moved.`)));if(e===i)return;const o=this._order.indexOf(e);this._order.splice(o,1);const a=i?this._order.indexOf(i):this._order.length;i&&-1===a?this.fire(new t.l(new Error(`Cannot move layer "${e}" before non-existing layer "${i}".`))):(this._order.splice(a,0,e),this._layerOrderChanged=!0);}removeLayer(e){this._checkLoaded();const i=this._layers[e];if(!i)return void this.fire(new t.l(new Error(`Cannot remove non-existing layer "${e}".`)));i.setEventedParent(null);const o=this._order.indexOf(e);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],this._serializedLayers&&delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}getLayer(e){return this._layers[e]}getLayersOrder(){return [...this._order]}hasLayer(e){return e in this._layers}setLayerZoomRange(e,i,o){this._checkLoaded();const a=this.getLayer(e);a?a.minzoom===i&&a.maxzoom===o||(null!=i&&(a.minzoom=i),null!=o&&(a.maxzoom=o),this._updateLayer(a)):this.fire(new t.l(new Error(`Cannot set the zoom range of non-existing layer "${e}".`)));}setFilter(e,i,o={}){this._checkLoaded();const a=this.getLayer(e);if(a){if(!t.bQ(a.filter,i))return null==i?(a.setFilter(void 0),void this._updateLayer(a)):void(this._validate(t.F.filter,`layers.${a.id}.filter`,i,null,o)||(a.setFilter(t.bV(i)),this._updateLayer(a)))}else this.fire(new t.l(new Error(`Cannot filter non-existing layer "${e}".`)));}getFilter(e){return t.bV(this.getLayer(e).filter)}setLayoutProperty(e,i,o,a={}){this._checkLoaded();const r=this.getLayer(e);r?t.bQ(r.getLayoutProperty(i),o)||(r.setLayoutProperty(i,o,a),this._updateLayer(r)):this.fire(new t.l(new Error(`Cannot style non-existing layer "${e}".`)));}getLayoutProperty(e,i){const o=this.getLayer(e);if(o)return o.getLayoutProperty(i);this.fire(new t.l(new Error(`Cannot get style of non-existing layer "${e}".`)));}setPaintProperty(e,i,o,a={}){this._checkLoaded();const r=this.getLayer(e);r?t.bQ(r.getPaintProperty(i),o)||this._updatePaintProperty(r,i,o,a):this.fire(new t.l(new Error(`Cannot style non-existing layer "${e}".`)));}_updatePaintProperty(e,i,o,a={}){e.setPaintProperty(i,o,a)&&this._updateLayer(e),t.bU(e)&&"raster-fade-duration"===i&&this.tileManagers[e.source].setRasterFadeDuration(o),this._changed=!0,this._updatedPaintProps[e.id]=!0,this._serializedLayers=null;}getPaintProperty(e,t){return this.getLayer(e).getPaintProperty(t)}setFeatureState(e,i){this._checkLoaded();const o=e.source,a=e.sourceLayer,r=this.tileManagers[o];if(void 0===r)return void this.fire(new t.l(new Error(`The source '${o}' does not exist in the map's style.`)));const s=r.getSource().type;"geojson"===s&&a?this.fire(new t.l(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==s||a?(void 0===e.id&&this.fire(new t.l(new Error("The feature id parameter must be provided."))),r.setFeatureState(a,e.id,i)):this.fire(new t.l(new Error("The sourceLayer parameter must be provided for vector source types.")));}removeFeatureState(e,i){this._checkLoaded();const o=e.source,a=this.tileManagers[o];if(void 0===a)return void this.fire(new t.l(new Error(`The source '${o}' does not exist in the map's style.`)));const r=a.getSource().type,s="vector"===r?e.sourceLayer:void 0;"vector"!==r||s?i&&"string"!=typeof e.id&&"number"!=typeof e.id?this.fire(new t.l(new Error("A feature id is required to remove its specific state property."))):a.removeFeatureState(s,e.id,i):this.fire(new t.l(new Error("The sourceLayer parameter must be provided for vector source types.")));}getFeatureState(e){this._checkLoaded();const i=e.source,o=e.sourceLayer,a=this.tileManagers[i];if(void 0!==a)return "vector"!==a.getSource().type||o?(void 0===e.id&&this.fire(new t.l(new Error("The feature id parameter must be provided."))),a.getFeatureState(o,e.id)):void this.fire(new t.l(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new t.l(new Error(`The source '${i}' does not exist in the map's style.`)));}getTransition(){var e;return t.e({duration:300,delay:0},null===(e=this.stylesheet)||void 0===e?void 0:e.transition)}serialize(){if(!this._loaded)return;const e=t.bY(this.tileManagers,(e=>e.serialize())),i=this._serializeByIds(this._order,!0),o=this.map.getTerrain()||void 0,a=this.stylesheet;return t.bZ({version:a.version,name:a.name,metadata:a.metadata,light:a.light,sky:a.sky,center:a.center,zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,sprite:a.sprite,glyphs:a.glyphs,transition:a.transition,projection:a.projection,sources:e,layers:i,terrain:o},(e=>void 0!==e))}_updateLayer(e){this._updatedLayers[e.id]=!0,e.source&&!this._updatedSources[e.source]&&"raster"!==this.tileManagers[e.source].getSource().type&&(this._updatedSources[e.source]="reload",this.tileManagers[e.source].pause()),this._serializedLayers=null,this._changed=!0;}_flattenAndSortRenderedFeatures(e){const t=e=>"fill-extrusion"===this._layers[e].type,i={},o=[];for(let a=this._order.length-1;a>=0;a--){const r=this._order[a];if(t(r)){i[r]=a;for(const t of e){const e=t[r];if(e)for(const t of e)o.push(t);}}}o.sort(((e,t)=>t.intersectionZ-e.intersectionZ));const a=[];for(let r=this._order.length-1;r>=0;r--){const s=this._order[r];if(t(s))for(let e=o.length-1;e>=0;e--){const t=o[e].feature;if(i[t.layer.id]this.map.terrain.getElevation(e,t,i):void 0));return this.placement&&r.push(function(e,t,i,o,a,r,s){const n={},l=r.queryRenderedSymbols(o),c=[];for(const e of Object.keys(l).map(Number))c.push(s[e]);c.sort(N);for(const i of c){const o=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],t,i.bucketIndex,i.sourceLayerIndex,{filterSpec:a.filter,globalState:a.globalState},a.layers,a.availableImages,e);for(const e in o){n[e]||(n[e]=[]);const t=o[e];t.sort(((e,t)=>{const o=i.featureSortOrder;if(o){const i=o.indexOf(e.featureIndex);return o.indexOf(t.featureIndex)-i}return t.featureIndex-e.featureIndex}));for(const i of t)n[e].push(i);}}return function(e,t,i){for(const o in e)for(const a of e[o])Z(a,i[t[o].source]);return e}(n,e,i)}(this._layers,s,this.tileManagers,e,l,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(r)}querySourceFeatures(e,i){(null==i?void 0:i.filter)&&this._validate(t.F.filter,"querySourceFeatures.filter",i.filter,null,i);const o=this.tileManagers[e];return o?function(e,t){const i=e.getRenderableIds().map((t=>e.getTileByID(t))),o=[],a={};for(const e of i){const i=e.tileID.canonical.key;a[i]||(a[i]=!0,e.querySourceFeatures(o,t));}return o}(o,i?Object.assign(Object.assign({},i),{globalState:this._globalState}):{globalState:this._globalState}):[]}getLight(){return this.light.getLight()}setLight(e,i={}){this._checkLoaded();const o=this.light.getLight();let a=!1;for(const i in e)if(!t.bQ(e[i],o[i])){a=!0;break}if(!a)return;const r={now:c(),transition:t.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e,i),this.light.updateTransitions(r);}getProjection(){var e;return null===(e=this.stylesheet)||void 0===e?void 0:e.projection}setProjection(e){this._checkLoaded();const t=null!=e?e:{type:"mercator"};if(this.stylesheet.projection=e,this.projection){if(this.projection.name===t.type)return;this.projection.destroy(),delete this.projection;}this._setProjectionInternal(t.type);}getSky(){var e;return null===(e=this.stylesheet)||void 0===e?void 0:e.sky}setSky(e,i={}){this._checkLoaded();const o=this.getSky();let a=!1;if(!e&&!o)return;if(e&&!o)a=!0;else if(!e&&o)a=!0;else for(const i in e)if(!t.bQ(e[i],o[i])){a=!0;break}if(!a)return;const r={now:c(),transition:t.e({duration:300,delay:0},this.stylesheet.transition)};this.stylesheet.sky=e,this.sky.setSky(e,i),this.sky.updateTransitions(r);}_setProjectionInternal(e){const i=function(e,i){const o={constrainOverride:i};if(Array.isArray(e)){const t=new _i({type:e});return {projection:t,transform:new Ri(o),cameraHelper:new Ai(t)}}switch(e){case "mercator":return {projection:new Zt,transform:new Xt(o),cameraHelper:new Jt};case "globe":{const e=new _i({type:["interpolate",["linear"],["zoom"],11,"vertical-perspective",12,"mercator"]});return {projection:e,transform:new Ri(o),cameraHelper:new Ai(e)}}case "vertical-perspective":return {projection:new ui,transform:new zi(o),cameraHelper:new Di};default:return t.w(`Unknown projection name: ${e}. Falling back to mercator projection.`),{projection:new Zt,transform:new Xt(o),cameraHelper:new Jt}}}(e,this.map.transformConstrain);this.projection=i.projection,this.map.migrateProjection(i.transform,i.cameraHelper);for(const e in this.tileManagers)this.tileManagers[e].reload();}_validate(e,i,o,a,r={}){return !1!==(null==r?void 0:r.validate)&&Li(this,e.call(t.F,t.e({key:i,style:this.serialize(),value:o,styleSpec:t.x},a)))}_remove(e=!0){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null),ce().off(se,this._rtlPluginLoaded);for(const e in this._layers)this._layers[e].setEventedParent(null);for(const e in this.tileManagers){const t=this.tileManagers[e];t.setEventedParent(null),t.onRemove(this.map);}this.imageManager.setEventedParent(null),this.setEventedParent(null),e&&this.dispatcher.broadcast("RM",void 0),this.dispatcher.remove(e);}_clearSource(e){this.tileManagers[e].clearTiles();}_reloadSource(e){this.tileManagers[e].resume(),this.tileManagers[e].reload();}_updateSources(e){for(const t in this.tileManagers)this.tileManagers[t].update(e,this.map.terrain);}_generateCollisionBoxes(){for(const e in this.tileManagers)this._reloadSource(e);}_updatePlacement(e,t,i,o,a=!1){let r=!1,s=!1;const n={};for(const t of this._order){const i=this._layers[t];if("symbol"!==i.type)continue;if(!n[i.source]){const e=this.tileManagers[i.source];n[i.source]=e.getRenderableIds(!0).map((t=>e.getTileByID(t))).sort(((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1)));}const o=this.crossTileSymbolIndex.addLayer(i,n[i.source],e.center.lng);r||(r=o);}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),a||(a=this._layerOrderChanged||0===i),(a||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(c(),e.zoom))&&(this.pauseablePlacement=new Et(e,this.map.terrain,this._order,a,t,i,o,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,n),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(c()),s=!0),r&&this.pauseablePlacement.placement.setStale()),s||r)for(const e of this._order){const t=this._layers[e];"symbol"===t.type&&this.placement.updateLayerOpacities(t,n[t.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(c())}_releaseSymbolFadeTiles(){for(const e in this.tileManagers)this.tileManagers[e].releaseSymbolFadeTiles();}getImages(e,i){return t._(this,void 0,void 0,(function*(){const e=yield this.imageManager.getImages(i.icons);this._updateTilesForChangedImages();const t=this.tileManagers[i.source];return t&&t.setDependencies(i.tileID.key,i.type,i.icons),e}))}getGlyphs(e,i){return t._(this,void 0,void 0,(function*(){const e=yield this.glyphManager.getGlyphs(i.stacks),t=this.tileManagers[i.source];return t&&t.setDependencies(i.tileID.key,i.type,[""]),e}))}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(e,i={}){this._checkLoaded(),e&&this._validate(t.F.glyphs,"glyphs",e,null,i)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=e,this.glyphManager.entries={},this.glyphManager.setURL(e));}getDashes(e,i){return t._(this,void 0,void 0,(function*(){const e={};for(const[t,o]of Object.entries(i.dashes))e[t]=this.lineAtlas.getDash(o.dasharray,o.round);return e}))}addSprite(e,i,o={},a){this._checkLoaded();const r=[{id:e,url:i}],s=[...p(this.stylesheet.sprite),...r];this._validate(t.F.sprite,"sprite",s,null,o)||(this.stylesheet.sprite=s,this._loadSprite(r,!0,a));}removeSprite(e){this._checkLoaded();const i=p(this.stylesheet.sprite);if(i.find((t=>t.id===e))){if(this._spritesImagesIds[e])for(const t of this._spritesImagesIds[e])this.imageManager.removeImage(t),this._changedImages[t]=!0;i.splice(i.findIndex((t=>t.id===e)),1),this.stylesheet.sprite=i.length>0?i:void 0,delete this._spritesImagesIds[e],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.n("data",{dataType:"style"}));}else this.fire(new t.l(new Error(`Sprite "${e}" doesn't exists on this map.`)));}getSprite(){return p(this.stylesheet.sprite)}setSprite(e,i={},o){this._checkLoaded(),e&&this._validate(t.F.sprite,"sprite",e,null,i)||(this.stylesheet.sprite=e,e?this._loadSprite(e,!0,o):(this._unloadSprite(),o&&o(null)));}destroy(){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null);for(const e in this.tileManagers){const t=this.tileManagers[e];t.setEventedParent(null),t.onRemove(this.map);}this.tileManagers={},this.imageManager&&(this.imageManager.setEventedParent(null),this.imageManager.destroy(),this._availableImages=[],this._spritesImagesIds={}),this.glyphManager&&this.glyphManager.destroy();for(const e in this._layers){const t=this._layers[e];t.setEventedParent(null),t.onRemove&&t.onRemove(this.map);}this._setInitialValues(),this.setEventedParent(null),this.dispatcher.unregisterMessageHandler("GG"),this.dispatcher.unregisterMessageHandler("GI"),this.dispatcher.unregisterMessageHandler("GDA"),this.dispatcher.remove(!0),this._listeners={},this._oneTimeListeners={};}}var Bi=t.aS([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Oi{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;}bind(e,t,i,o,a,r,s,n,l){this.context=e;let c=this.boundPaintVertexBuffers.length!==o.length;for(let e=0;!c&&e({u_texture:0,u_ele_delta:e,u_fog_matrix:i,u_fog_color:o?o.properties.get("fog-color"):t.bo.white,u_fog_ground_blend:o?o.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:r?0:o?o.calculateFogBlendOpacity(a):0,u_horizon_color:o?o.properties.get("horizon-color"):t.bo.white,u_horizon_fog_blend:o?o.properties.get("horizon-fog-blend"):1,u_is_globe_mode:r?1:0}),Ni={mainMatrix:"u_projection_matrix",tileMercatorCoords:"u_projection_tile_mercator_coords",clippingPlane:"u_projection_clipping_plane",projectionTransition:"u_projection_transition",fallbackMatrix:"u_projection_fallback_matrix"};function Zi(e){const t=[];for(const i of e){if(null===i)continue;const e=i.split(" ");t.push(e.pop());}return t}class Ui{constructor(e,i,o,a,r,s,n,l,c=[]){const h=e.gl;this.program=h.createProgram();const u=Zi(i.staticAttributes),d=o?o.getBinderAttributes():[],_=u.concat(d),p=Ft.prelude.staticUniforms?Zi(Ft.prelude.staticUniforms):[],m=n.staticUniforms?Zi(n.staticUniforms):[],f=i.staticUniforms?Zi(i.staticUniforms):[],g=o?o.getBinderUniforms():[],v=p.concat(m).concat(f).concat(g),x=[];for(const e of v)x.includes(e)||x.push(e);const b=o?o.defines():[];si(h)&&b.unshift("#version 300 es"),r&&b.push("#define OVERDRAW_INSPECTOR;"),s&&b.push("#define TERRAIN3D;"),l&&b.push(l),c&&b.push(...c);let y=b.concat(Ft.prelude.fragmentSource,n.fragmentSource,i.fragmentSource).join("\n"),w=b.concat(Ft.prelude.vertexSource,n.vertexSource,i.vertexSource).join("\n");si(h)||(y=function(e){return e.replace(/\bin\s/g,"varying ").replace("out highp vec4 fragColor;","").replace(/fragColor/g,"gl_FragColor").replace(/texture\(/g,"texture2D(")}(y),w=function(e){return e.replace(/\bin\s/g,"attribute ").replace(/\bout\s/g,"varying ").replace(/texture\(/g,"texture2D(")}(w));const T=h.createShader(h.FRAGMENT_SHADER);if(h.isContextLost())return void(this.failedToCreate=!0);if(h.shaderSource(T,y),h.compileShader(T),!h.getShaderParameter(T,h.COMPILE_STATUS))throw new Error(`Could not compile fragment shader: ${h.getShaderInfoLog(T)}`);h.attachShader(this.program,T);const P=h.createShader(h.VERTEX_SHADER);if(h.isContextLost())return void(this.failedToCreate=!0);if(h.shaderSource(P,w),h.compileShader(P),!h.getShaderParameter(P,h.COMPILE_STATUS))throw new Error(`Could not compile vertex shader: ${h.getShaderInfoLog(P)}`);h.attachShader(this.program,P),this.attributes={};const C={};this.numAttributes=_.length;for(let e=0;e({u_depth:new t.b_(e,i.u_depth),u_terrain:new t.b_(e,i.u_terrain),u_terrain_dim:new t.bp(e,i.u_terrain_dim),u_terrain_matrix:new t.c0(e,i.u_terrain_matrix),u_terrain_unpack:new t.c1(e,i.u_terrain_unpack),u_terrain_exaggeration:new t.bp(e,i.u_terrain_exaggeration)}))(e,C),this.projectionUniforms=((e,i)=>({u_projection_matrix:new t.c0(e,i.u_projection_matrix),u_projection_tile_mercator_coords:new t.c1(e,i.u_projection_tile_mercator_coords),u_projection_clipping_plane:new t.c1(e,i.u_projection_clipping_plane),u_projection_transition:new t.bp(e,i.u_projection_transition),u_projection_fallback_matrix:new t.c0(e,i.u_projection_fallback_matrix)}))(e,C),this.binderUniforms=o?o.getUniforms(e,C):[];}draw(e,t,i,o,a,r,s,n,l,c,h,u,d,_,p,m,f,g,v){var x;const b=e.gl;if(this.failedToCreate)return;if(e.program.set(this.program),e.setDepthMode(i),e.setStencilMode(o),e.setColorMode(a),e.setCullFace(r),n){e.activeTexture.set(b.TEXTURE2),b.bindTexture(b.TEXTURE_2D,n.depthTexture),e.activeTexture.set(b.TEXTURE3),b.bindTexture(b.TEXTURE_2D,n.texture);for(const e in this.terrainUniforms)this.terrainUniforms[e].set(n[e]);}if(l)for(const e in l)this.projectionUniforms[Ni[e]].set(l[e]);if(s)for(const e in this.fixedUniforms)this.fixedUniforms[e].set(s[e]);m&&m.setUniforms(e,this.binderUniforms,_,{zoom:p});let y=0;switch(t){case b.LINES:y=2;break;case b.TRIANGLES:y=3;break;case b.LINE_STRIP:y=1;}for(const i of d.get())i.vaos||(i.vaos={}),(x=i.vaos)[c]||(x[c]=new Oi),i.vaos[c].bind(e,this,h,m?m.getPaintVertexBuffers():[],u,i.vertexOffset,f,g,v),b.drawElements(t,i.primitiveLength*y,b.UNSIGNED_SHORT,i.primitiveOffset*y*2);}}function Gi(e,i,o){const a=1/t.aK(o,1,i.transform.tileZoom),r=Math.pow(2,o.tileID.overscaledZ),s=o.tileSize*Math.pow(2,i.transform.tileZoom)/r,n=s*(o.tileID.canonical.x+o.tileID.wrap*r),l=s*o.tileID.canonical.y;return {u_image:0,u_texsize:o.imageAtlasTexture.size,u_scale:[a,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[n>>16,l>>16],u_pixel_coord_lower:[65535&n,65535&l]}}const Vi=(e,i,o,a)=>{const r=e.style.light,s=r.properties.get("position"),n=[s.x,s.y,s.z],l=t.c4();"viewport"===r.properties.get("anchor")&&t.c5(l,e.transform.bearingInRadians),t.c6(n,n,l);const c=e.transform.transformLightDirection(n),h=r.properties.get("color");return {u_lightpos:n,u_lightpos_globe:c,u_lightintensity:r.properties.get("intensity"),u_lightcolor:[h.r,h.g,h.b],u_vertical_gradient:+i,u_opacity:o,u_fill_translate:a}},Wi=(e,i,o,a,r,s,n)=>t.e(Vi(e,i,o,a),Gi(s,e,n),{u_height_factor:-Math.pow(2,r.overscaledZ)/n.tileSize/8}),qi=(e,i,o,a)=>t.e(Gi(i,e,o),{u_fill_translate:a}),$i=(e,t)=>({u_world:e,u_fill_translate:t}),Hi=(e,i,o,a,r)=>t.e(qi(e,i,o,r),{u_world:a}),Xi=(e,i,o,a,r)=>{const s=e.transform;let n,l,c=0;if("map"===o.paint.get("circle-pitch-alignment")){const e=t.aK(i,1,s.zoom);n=!0,l=[e,e],c=e/(t.a6*Math.pow(2,i.tileID.overscaledZ))*2*Math.PI*r;}else n=!1,l=s.pixelsToGLUnits;return {u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+("map"===o.paint.get("circle-pitch-scale")),u_pitch_with_map:+n,u_device_pixel_ratio:e.pixelRatio,u_extrude_scale:l,u_globe_extrude_scale:c,u_translate:a}},Ki=e=>({u_pixel_extrude_scale:[1/e.width,1/e.height]}),Yi=e=>({u_viewport_size:[e.width,e.height]}),Qi=(e,t=1)=>({u_color:e,u_overlay:0,u_overlay_scale:t}),Ji=(e,i,o,a)=>{const r=t.aK(e,1,i)/(t.a6*Math.pow(2,e.tileID.overscaledZ))*2*Math.PI*a;return {u_extrude_scale:t.aK(e,1,i),u_intensity:o,u_globe_extrude_scale:r}},eo=(e,i,o,a)=>{const r=t.O();t.c7(r,0,e.width,e.height,0,0,1);const s=e.context.gl;return {u_matrix:r,u_world:[s.drawingBufferWidth,s.drawingBufferHeight],u_image:o,u_color_ramp:a,u_opacity:i.paint.get("heatmap-opacity")}},to=(e,t,i)=>{const o=i.paint.get("hillshade-accent-color");let a;switch(i.paint.get("hillshade-method")){case "basic":a=4;break;case "combined":a=1;break;case "igor":a=2;break;case "multidirectional":a=3;break;default:a=0;}const r=i.getIlluminationProperties();for(let t=0;t{const o=i.stride,a=t.O();return t.c7(a,0,t.a6,-t.a6,0,0,1),t.Q(a,a,[0,-t.a6,0]),{u_matrix:a,u_image:1,u_dimension:[o,o],u_zoom:e.overscaledZ,u_unpack:i.getUnpackVector()}};function oo(e,i){const o=Math.pow(2,i.canonical.z),a=i.canonical.y;return [new t.a7(0,a/o).toLngLat().lat,new t.a7(0,(a+1)/o).toLngLat().lat]}const ao=(e,t,i=0)=>({u_image:0,u_unpack:t.getUnpackVector(),u_dimension:[t.stride,t.stride],u_elevation_stops:1,u_color_stops:4,u_color_ramp_size:i,u_opacity:e.paint.get("color-relief-opacity")}),ro=(e,i,o,a)=>{const r=e.transform;return {u_translation:uo(e,i,o),u_ratio:a/t.aK(i,1,r.zoom),u_device_pixel_ratio:e.pixelRatio,u_units_to_pixels:[1/r.pixelsToGLUnits[0],1/r.pixelsToGLUnits[1]]}},so=(e,i,o,a,r)=>t.e(ro(e,i,o,a),{u_image:0,u_image_height:r}),no=(e,i,o,a,r)=>{const s=e.transform,n=ho(i,s);return {u_translation:uo(e,i,o),u_texsize:i.imageAtlasTexture.size,u_ratio:a/t.aK(i,1,s.zoom),u_device_pixel_ratio:e.pixelRatio,u_image:0,u_scale:[n,r.fromScale,r.toScale],u_fade:r.t,u_units_to_pixels:[1/s.pixelsToGLUnits[0],1/s.pixelsToGLUnits[1]]}},lo=(e,i,o,a,r)=>{const s=ho(i,e.transform);return t.e(ro(e,i,o,a),{u_tileratio:s,u_crossfade_from:r.fromScale,u_crossfade_to:r.toScale,u_image:0,u_mix:r.t,u_lineatlas_width:e.lineAtlas.width,u_lineatlas_height:e.lineAtlas.height})},co=(e,i,o,a,r,s)=>{const n=ho(i,e.transform);return t.e(ro(e,i,o,a),{u_image:0,u_image_height:s,u_tileratio:n,u_crossfade_from:r.fromScale,u_crossfade_to:r.toScale,u_image_dash:1,u_mix:r.t,u_lineatlas_width:e.lineAtlas.width,u_lineatlas_height:e.lineAtlas.height})};function ho(e,i){return 1/t.aK(e,1,i.tileZoom)}function uo(e,i,o){return t.aL(e.transform,i,o.paint.get("line-translate"),o.paint.get("line-translate-anchor"))}const _o=(e,t,i,o,a)=>{return {u_tl_parent:e,u_scale_parent:t,u_buffer_scale:1,u_fade_t:i.mix,u_opacity:i.opacity*o.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:o.paint.get("raster-brightness-min"),u_brightness_high:o.paint.get("raster-brightness-max"),u_saturation_factor:(s=o.paint.get("raster-saturation"),s>0?1-1/(1.001-s):-s),u_contrast_factor:(r=o.paint.get("raster-contrast"),r>0?1/(1-r):1+r),u_spin_weights:po(o.paint.get("raster-hue-rotate")),u_coords_top:[a[0].x,a[0].y,a[1].x,a[1].y],u_coords_bottom:[a[3].x,a[3].y,a[2].x,a[2].y]};var r,s;};function po(e){e*=Math.PI/180;const t=Math.sin(e),i=Math.cos(e);return [(2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3]}const mo=(e,t,i,o,a,r,s,n,l,c,h,u,d)=>{const _=s.transform;return {u_is_size_zoom_constant:+("constant"===e||"source"===e),u_is_size_feature_constant:+("constant"===e||"camera"===e),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:_.cameraToCenterDistance,u_pitch:_.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:_.width/_.height,u_fade_change:s.options.fadeDuration?s.symbolFadeChange:1,u_label_plane_matrix:n,u_coord_matrix:l,u_is_text:+h,u_pitch_with_map:+o,u_is_along_line:a,u_is_variable_anchor:r,u_texsize:u,u_texture:0,u_translation:c,u_pitched_scale:d}},fo=(e,i,o,a,r,s,n,l,c,h,u,d,_,p)=>{const m=n.transform;return t.e(mo(e,i,o,a,r,s,n,l,c,h,u,d,p),{u_gamma_scale:a?Math.cos(m.pitch*Math.PI/180)*m.cameraToCenterDistance:1,u_device_pixel_ratio:n.pixelRatio,u_is_halo:_?1:0,u_is_plain:1})},go=(e,i,o,a,r,s,n,l,c,h,u,d,_)=>t.e(fo(e,i,o,a,r,s,n,l,c,h,!0,u,!0,_),{u_texsize_icon:d,u_texture_icon:1}),vo=(e,t)=>({u_opacity:e,u_color:t}),xo=(e,i,o,a,r)=>t.e(function(e,i,o,a){const r=o.imageManager.getPattern(e.from.toString()),s=o.imageManager.getPattern(e.to.toString()),{width:n,height:l}=o.imageManager.getPixelSize(),c=Math.pow(2,a.tileID.overscaledZ),h=a.tileSize*Math.pow(2,o.transform.tileZoom)/c,u=h*(a.tileID.canonical.x+a.tileID.wrap*c),d=h*a.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:r.tl,u_pattern_br_a:r.br,u_pattern_tl_b:s.tl,u_pattern_br_b:s.br,u_texsize:[n,l],u_mix:i.t,u_pattern_size_a:r.displaySize,u_pattern_size_b:s.displaySize,u_scale_a:i.fromScale,u_scale_b:i.toScale,u_tile_units_to_pixels:1/t.aK(a,1,o.transform.tileZoom),u_pixel_coord_upper:[u>>16,d>>16],u_pixel_coord_lower:[65535&u,65535&d]}}(o,r,i,a),{u_opacity:e}),bo=(e,t)=>{},yo={fillExtrusion:(e,i)=>({u_lightpos:new t.c2(e,i.u_lightpos),u_lightpos_globe:new t.c2(e,i.u_lightpos_globe),u_lightintensity:new t.bp(e,i.u_lightintensity),u_lightcolor:new t.c2(e,i.u_lightcolor),u_vertical_gradient:new t.bp(e,i.u_vertical_gradient),u_opacity:new t.bp(e,i.u_opacity),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillExtrusionPattern:(e,i)=>({u_lightpos:new t.c2(e,i.u_lightpos),u_lightpos_globe:new t.c2(e,i.u_lightpos_globe),u_lightintensity:new t.bp(e,i.u_lightintensity),u_lightcolor:new t.c2(e,i.u_lightcolor),u_vertical_gradient:new t.bp(e,i.u_vertical_gradient),u_height_factor:new t.bp(e,i.u_height_factor),u_opacity:new t.bp(e,i.u_opacity),u_fill_translate:new t.c3(e,i.u_fill_translate),u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bp(e,i.u_fade)}),fill:(e,i)=>({u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillPattern:(e,i)=>({u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bp(e,i.u_fade),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillOutline:(e,i)=>({u_world:new t.c3(e,i.u_world),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillOutlinePattern:(e,i)=>({u_world:new t.c3(e,i.u_world),u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bp(e,i.u_fade),u_fill_translate:new t.c3(e,i.u_fill_translate)}),circle:(e,i)=>({u_camera_to_center_distance:new t.bp(e,i.u_camera_to_center_distance),u_scale_with_map:new t.b_(e,i.u_scale_with_map),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_extrude_scale:new t.c3(e,i.u_extrude_scale),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_globe_extrude_scale:new t.bp(e,i.u_globe_extrude_scale),u_translate:new t.c3(e,i.u_translate)}),collisionBox:(e,i)=>({u_pixel_extrude_scale:new t.c3(e,i.u_pixel_extrude_scale)}),collisionCircle:(e,i)=>({u_viewport_size:new t.c3(e,i.u_viewport_size)}),debug:(e,i)=>({u_color:new t.b$(e,i.u_color),u_overlay:new t.b_(e,i.u_overlay),u_overlay_scale:new t.bp(e,i.u_overlay_scale)}),depth:bo,clippingMask:bo,heatmap:(e,i)=>({u_extrude_scale:new t.bp(e,i.u_extrude_scale),u_intensity:new t.bp(e,i.u_intensity),u_globe_extrude_scale:new t.bp(e,i.u_globe_extrude_scale)}),heatmapTexture:(e,i)=>({u_matrix:new t.c0(e,i.u_matrix),u_world:new t.c3(e,i.u_world),u_image:new t.b_(e,i.u_image),u_color_ramp:new t.b_(e,i.u_color_ramp),u_opacity:new t.bp(e,i.u_opacity)}),hillshade:(e,i)=>({u_image:new t.b_(e,i.u_image),u_latrange:new t.c3(e,i.u_latrange),u_exaggeration:new t.bp(e,i.u_exaggeration),u_altitudes:new t.c9(e,i.u_altitudes),u_azimuths:new t.c9(e,i.u_azimuths),u_accent:new t.b$(e,i.u_accent),u_method:new t.b_(e,i.u_method),u_shadows:new t.c8(e,i.u_shadows),u_highlights:new t.c8(e,i.u_highlights)}),hillshadePrepare:(e,i)=>({u_matrix:new t.c0(e,i.u_matrix),u_image:new t.b_(e,i.u_image),u_dimension:new t.c3(e,i.u_dimension),u_zoom:new t.bp(e,i.u_zoom),u_unpack:new t.c1(e,i.u_unpack)}),colorRelief:(e,i)=>({u_image:new t.b_(e,i.u_image),u_unpack:new t.c1(e,i.u_unpack),u_dimension:new t.c3(e,i.u_dimension),u_elevation_stops:new t.b_(e,i.u_elevation_stops),u_color_stops:new t.b_(e,i.u_color_stops),u_color_ramp_size:new t.b_(e,i.u_color_ramp_size),u_opacity:new t.bp(e,i.u_opacity)}),line:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bp(e,i.u_ratio),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels)}),lineGradient:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bp(e,i.u_ratio),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_image_height:new t.bp(e,i.u_image_height)}),linePattern:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_texsize:new t.c3(e,i.u_texsize),u_ratio:new t.bp(e,i.u_ratio),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_image:new t.b_(e,i.u_image),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bp(e,i.u_fade)}),lineSDF:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bp(e,i.u_ratio),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_mix:new t.bp(e,i.u_mix),u_tileratio:new t.bp(e,i.u_tileratio),u_crossfade_from:new t.bp(e,i.u_crossfade_from),u_crossfade_to:new t.bp(e,i.u_crossfade_to),u_lineatlas_width:new t.bp(e,i.u_lineatlas_width),u_lineatlas_height:new t.bp(e,i.u_lineatlas_height)}),lineGradientSDF:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bp(e,i.u_ratio),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_image_height:new t.bp(e,i.u_image_height),u_tileratio:new t.bp(e,i.u_tileratio),u_crossfade_from:new t.bp(e,i.u_crossfade_from),u_crossfade_to:new t.bp(e,i.u_crossfade_to),u_image_dash:new t.b_(e,i.u_image_dash),u_mix:new t.bp(e,i.u_mix),u_lineatlas_width:new t.bp(e,i.u_lineatlas_width),u_lineatlas_height:new t.bp(e,i.u_lineatlas_height)}),raster:(e,i)=>({u_tl_parent:new t.c3(e,i.u_tl_parent),u_scale_parent:new t.bp(e,i.u_scale_parent),u_buffer_scale:new t.bp(e,i.u_buffer_scale),u_fade_t:new t.bp(e,i.u_fade_t),u_opacity:new t.bp(e,i.u_opacity),u_image0:new t.b_(e,i.u_image0),u_image1:new t.b_(e,i.u_image1),u_brightness_low:new t.bp(e,i.u_brightness_low),u_brightness_high:new t.bp(e,i.u_brightness_high),u_saturation_factor:new t.bp(e,i.u_saturation_factor),u_contrast_factor:new t.bp(e,i.u_contrast_factor),u_spin_weights:new t.c2(e,i.u_spin_weights),u_coords_top:new t.c1(e,i.u_coords_top),u_coords_bottom:new t.c1(e,i.u_coords_bottom)}),symbolIcon:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bp(e,i.u_size_t),u_size:new t.bp(e,i.u_size),u_camera_to_center_distance:new t.bp(e,i.u_camera_to_center_distance),u_pitch:new t.bp(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bp(e,i.u_aspect_ratio),u_fade_change:new t.bp(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texture:new t.b_(e,i.u_texture),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bp(e,i.u_pitched_scale)}),symbolSDF:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bp(e,i.u_size_t),u_size:new t.bp(e,i.u_size),u_camera_to_center_distance:new t.bp(e,i.u_camera_to_center_distance),u_pitch:new t.bp(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bp(e,i.u_aspect_ratio),u_fade_change:new t.bp(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texture:new t.b_(e,i.u_texture),u_gamma_scale:new t.bp(e,i.u_gamma_scale),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_is_halo:new t.b_(e,i.u_is_halo),u_is_plain:new t.b_(e,i.u_is_plain),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bp(e,i.u_pitched_scale)}),symbolTextAndIcon:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bp(e,i.u_size_t),u_size:new t.bp(e,i.u_size),u_camera_to_center_distance:new t.bp(e,i.u_camera_to_center_distance),u_pitch:new t.bp(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bp(e,i.u_aspect_ratio),u_fade_change:new t.bp(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texsize_icon:new t.c3(e,i.u_texsize_icon),u_texture:new t.b_(e,i.u_texture),u_texture_icon:new t.b_(e,i.u_texture_icon),u_gamma_scale:new t.bp(e,i.u_gamma_scale),u_device_pixel_ratio:new t.bp(e,i.u_device_pixel_ratio),u_is_halo:new t.b_(e,i.u_is_halo),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bp(e,i.u_pitched_scale)}),background:(e,i)=>({u_opacity:new t.bp(e,i.u_opacity),u_color:new t.b$(e,i.u_color)}),backgroundPattern:(e,i)=>({u_opacity:new t.bp(e,i.u_opacity),u_image:new t.b_(e,i.u_image),u_pattern_tl_a:new t.c3(e,i.u_pattern_tl_a),u_pattern_br_a:new t.c3(e,i.u_pattern_br_a),u_pattern_tl_b:new t.c3(e,i.u_pattern_tl_b),u_pattern_br_b:new t.c3(e,i.u_pattern_br_b),u_texsize:new t.c3(e,i.u_texsize),u_mix:new t.bp(e,i.u_mix),u_pattern_size_a:new t.c3(e,i.u_pattern_size_a),u_pattern_size_b:new t.c3(e,i.u_pattern_size_b),u_scale_a:new t.bp(e,i.u_scale_a),u_scale_b:new t.bp(e,i.u_scale_b),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.bp(e,i.u_tile_units_to_pixels)}),terrain:(e,i)=>({u_texture:new t.b_(e,i.u_texture),u_ele_delta:new t.bp(e,i.u_ele_delta),u_fog_matrix:new t.c0(e,i.u_fog_matrix),u_fog_color:new t.b$(e,i.u_fog_color),u_fog_ground_blend:new t.bp(e,i.u_fog_ground_blend),u_fog_ground_blend_opacity:new t.bp(e,i.u_fog_ground_blend_opacity),u_horizon_color:new t.b$(e,i.u_horizon_color),u_horizon_fog_blend:new t.bp(e,i.u_horizon_fog_blend),u_is_globe_mode:new t.bp(e,i.u_is_globe_mode)}),terrainDepth:(e,i)=>({u_ele_delta:new t.bp(e,i.u_ele_delta)}),terrainCoords:(e,i)=>({u_texture:new t.b_(e,i.u_texture),u_terrain_coords_id:new t.bp(e,i.u_terrain_coords_id),u_ele_delta:new t.bp(e,i.u_ele_delta)}),projectionErrorMeasurement:(e,i)=>({u_input:new t.bp(e,i.u_input),u_output_expected:new t.bp(e,i.u_output_expected)}),atmosphere:(e,i)=>({u_sun_pos:new t.c2(e,i.u_sun_pos),u_atmosphere_blend:new t.bp(e,i.u_atmosphere_blend),u_globe_position:new t.c2(e,i.u_globe_position),u_globe_radius:new t.bp(e,i.u_globe_radius),u_inv_proj_matrix:new t.c0(e,i.u_inv_proj_matrix)}),sky:(e,i)=>({u_sky_color:new t.b$(e,i.u_sky_color),u_horizon_color:new t.b$(e,i.u_horizon_color),u_horizon:new t.c3(e,i.u_horizon),u_horizon_normal:new t.c3(e,i.u_horizon_normal),u_sky_horizon_blend:new t.bp(e,i.u_sky_horizon_blend),u_sky_blend:new t.bp(e,i.u_sky_blend)})};class wo{constructor(e,t,i){this.context=e;const o=e.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||t.freeBufferAfterUpload();}bind(){this.context.bindElementBuffer.set(this.buffer);}updateData(e){const t=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer);}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const To={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Po{constructor(e,t,i,o){this.length=t.length,this.attributes=i,this.itemSize=t.bytesPerElement,this.dynamicDraw=o,this.context=e;const a=e.gl;this.buffer=a.createBuffer(),e.bindVertexBuffer.set(this.buffer),a.bufferData(a.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?a.DYNAMIC_DRAW:a.STATIC_DRAW),this.dynamicDraw||t.freeBufferAfterUpload();}bind(){this.context.bindVertexBuffer.set(this.buffer);}updateData(e){if(e.length!==this.length)throw new Error(`Length of new data is ${e.length}, which doesn't match current length of ${this.length}`);const t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer);}enableAttributes(e,t){for(const i of this.attributes){const o=t.attributes[i.name];void 0!==o&&e.enableVertexAttribArray(o);}}setVertexAttribPointers(e,t,i){for(const o of this.attributes){const a=t.attributes[o.name];void 0!==a&&e.vertexAttribPointer(a,o.components,e[To[o.type]],!1,this.itemSize,o.offset+this.itemSize*(i||0));}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}class Co{constructor(e){this.gl=e.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;}get(){return this.current}set(e){}getDefault(){return this.default}setDefault(){this.set(this.default);}}class Mo extends Co{getDefault(){return t.bo.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.clearColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class Io extends Co{getDefault(){return 1}set(e){(e!==this.current||this.dirty)&&(this.gl.clearDepth(e),this.current=e,this.dirty=!1);}}class Eo extends Co{getDefault(){return 0}set(e){(e!==this.current||this.dirty)&&(this.gl.clearStencil(e),this.current=e,this.dirty=!1);}}class So extends Co{getDefault(){return [!0,!0,!0,!0]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.colorMask(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class zo extends Co{getDefault(){return !0}set(e){(e!==this.current||this.dirty)&&(this.gl.depthMask(e),this.current=e,this.dirty=!1);}}class Ro extends Co{getDefault(){return 255}set(e){(e!==this.current||this.dirty)&&(this.gl.stencilMask(e),this.current=e,this.dirty=!1);}}class Do extends Co{getDefault(){return {func:this.gl.ALWAYS,ref:0,mask:255}}set(e){const t=this.current;(e.func!==t.func||e.ref!==t.ref||e.mask!==t.mask||this.dirty)&&(this.gl.stencilFunc(e.func,e.ref,e.mask),this.current=e,this.dirty=!1);}}class Ao extends Co{getDefault(){const e=this.gl;return [e.KEEP,e.KEEP,e.KEEP]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||this.dirty)&&(this.gl.stencilOp(e[0],e[1],e[2]),this.current=e,this.dirty=!1);}}class Lo extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.STENCIL_TEST):t.disable(t.STENCIL_TEST),this.current=e,this.dirty=!1;}}class Fo extends Co{getDefault(){return [0,1]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.depthRange(e[0],e[1]),this.current=e,this.dirty=!1);}}class ko extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.DEPTH_TEST):t.disable(t.DEPTH_TEST),this.current=e,this.dirty=!1;}}class Bo extends Co{getDefault(){return this.gl.LESS}set(e){(e!==this.current||this.dirty)&&(this.gl.depthFunc(e),this.current=e,this.dirty=!1);}}class Oo extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.BLEND):t.disable(t.BLEND),this.current=e,this.dirty=!1;}}class jo extends Co{getDefault(){const e=this.gl;return [e.ONE,e.ZERO]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.blendFunc(e[0],e[1]),this.current=e,this.dirty=!1);}}class No extends Co{getDefault(){return t.bo.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.blendColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class Zo extends Co{getDefault(){return this.gl.FUNC_ADD}set(e){(e!==this.current||this.dirty)&&(this.gl.blendEquation(e),this.current=e,this.dirty=!1);}}class Uo extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.CULL_FACE):t.disable(t.CULL_FACE),this.current=e,this.dirty=!1;}}class Go extends Co{getDefault(){return this.gl.BACK}set(e){(e!==this.current||this.dirty)&&(this.gl.cullFace(e),this.current=e,this.dirty=!1);}}class Vo extends Co{getDefault(){return this.gl.CCW}set(e){(e!==this.current||this.dirty)&&(this.gl.frontFace(e),this.current=e,this.dirty=!1);}}class Wo extends Co{getDefault(){return null}set(e){(e!==this.current||this.dirty)&&(this.gl.useProgram(e),this.current=e,this.dirty=!1);}}class qo extends Co{getDefault(){return this.gl.TEXTURE0}set(e){(e!==this.current||this.dirty)&&(this.gl.activeTexture(e),this.current=e,this.dirty=!1);}}class $o extends Co{getDefault(){const e=this.gl;return [0,0,e.drawingBufferWidth,e.drawingBufferHeight]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.viewport(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class Ho extends Co{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,e),this.current=e,this.dirty=!1;}}class Xo extends Co{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindRenderbuffer(t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class Ko extends Co{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindTexture(t.TEXTURE_2D,e),this.current=e,this.dirty=!1;}}class Yo extends Co{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class Qo extends Co{getDefault(){return null}set(e){const t=this.gl;t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class Jo extends Co{getDefault(){return null}set(e){var t;if(e===this.current&&!this.dirty)return;const i=this.gl;si(i)?i.bindVertexArray(e):null===(t=i.getExtension("OES_vertex_array_object"))||void 0===t||t.bindVertexArrayOES(e),this.current=e,this.dirty=!1;}}class ea extends Co{getDefault(){return 4}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_ALIGNMENT,e),this.current=e,this.dirty=!1;}}class ta extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e),this.current=e,this.dirty=!1;}}class ia extends Co{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,e),this.current=e,this.dirty=!1;}}class oa extends Co{constructor(e,t){super(e),this.context=e,this.parent=t;}getDefault(){return null}}class aa extends oa{setDirty(){this.dirty=!0;}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),this.current=e,this.dirty=!1;}}class ra extends oa{set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class sa extends oa{set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}const na="Framebuffer is not complete";class la{constructor(e,t,i,o,a){this.context=e,this.width=t,this.height=i;const r=e.gl,s=this.framebuffer=r.createFramebuffer();if(this.colorAttachment=new aa(e,s),o)this.depthAttachment=a?new sa(e,s):new ra(e,s);else if(a)throw new Error("Stencil cannot be set without depth");if(r.checkFramebufferStatus(r.FRAMEBUFFER)!==r.FRAMEBUFFER_COMPLETE)throw new Error(na)}destroy(){const e=this.context.gl,t=this.colorAttachment.get();if(t&&e.deleteTexture(t),this.depthAttachment){const t=this.depthAttachment.get();t&&e.deleteRenderbuffer(t);}e.deleteFramebuffer(this.framebuffer);}}class ca{constructor(e){var t,i;if(this.gl=e,this.clearColor=new Mo(this),this.clearDepth=new Io(this),this.clearStencil=new Eo(this),this.colorMask=new So(this),this.depthMask=new zo(this),this.stencilMask=new Ro(this),this.stencilFunc=new Do(this),this.stencilOp=new Ao(this),this.stencilTest=new Lo(this),this.depthRange=new Fo(this),this.depthTest=new ko(this),this.depthFunc=new Bo(this),this.blend=new Oo(this),this.blendFunc=new jo(this),this.blendColor=new No(this),this.blendEquation=new Zo(this),this.cullFace=new Uo(this),this.cullFaceSide=new Go(this),this.frontFace=new Vo(this),this.program=new Wo(this),this.activeTexture=new qo(this),this.viewport=new $o(this),this.bindFramebuffer=new Ho(this),this.bindRenderbuffer=new Xo(this),this.bindTexture=new Ko(this),this.bindVertexBuffer=new Yo(this),this.bindElementBuffer=new Qo(this),this.bindVertexArray=new Jo(this),this.pixelStoreUnpack=new ea(this),this.pixelStoreUnpackPremultiplyAlpha=new ta(this),this.pixelStoreUnpackFlipY=new ia(this),this.extTextureFilterAnisotropic=e.getExtension("EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE),si(e)){this.HALF_FLOAT=e.HALF_FLOAT;const o=e.getExtension("EXT_color_buffer_half_float");this.RGBA16F=null!==(t=e.RGBA16F)&&void 0!==t?t:null==o?void 0:o.RGBA16F_EXT,this.RGB16F=null!==(i=e.RGB16F)&&void 0!==i?i:null==o?void 0:o.RGB16F_EXT,e.getExtension("EXT_color_buffer_float");}else {e.getExtension("EXT_color_buffer_half_float"),e.getExtension("OES_texture_half_float_linear");const t=e.getExtension("OES_texture_half_float");this.HALF_FLOAT=null==t?void 0:t.HALF_FLOAT_OES;}}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.bindVertexArray.dirty=!0,this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;}createIndexBuffer(e,t){return new wo(this,e,t)}createVertexBuffer(e,t,i){return new Po(this,e,t,i)}createRenderbuffer(e,t,i){const o=this.gl,a=o.createRenderbuffer();return this.bindRenderbuffer.set(a),o.renderbufferStorage(o.RENDERBUFFER,e,t,i),this.bindRenderbuffer.set(null),a}createFramebuffer(e,t,i,o){return new la(this,e,t,i,o)}clear({color:e,depth:t,stencil:i}){const o=this.gl;let a=0;e&&(a|=o.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==t&&(a|=o.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(t),this.depthMask.set(!0)),void 0!==i&&(a|=o.STENCIL_BUFFER_BIT,this.clearStencil.set(i),this.stencilMask.set(255)),o.clear(a);}setCullFace(e){!1===e.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(e.mode),this.frontFace.set(e.frontFace));}setDepthMode(e){e.func!==this.gl.ALWAYS||e.mask?(this.depthTest.set(!0),this.depthFunc.set(e.func),this.depthMask.set(e.mask),this.depthRange.set(e.range)):this.depthTest.set(!1);}setStencilMode(e){e.test.func!==this.gl.ALWAYS||e.mask?(this.stencilTest.set(!0),this.stencilMask.set(e.mask),this.stencilOp.set([e.fail,e.depthFail,e.pass]),this.stencilFunc.set({func:e.test.func,ref:e.ref,mask:e.test.mask})):this.stencilTest.set(!1);}setColorMode(e){t.bQ(e.blendFunction,ei.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask);}createVertexArray(){var e;return si(this.gl)?this.gl.createVertexArray():null===(e=this.gl.getExtension("OES_vertex_array_object"))||void 0===e?void 0:e.createVertexArrayOES()}deleteVertexArray(e){var t;si(this.gl)?this.gl.deleteVertexArray(e):null===(t=this.gl.getExtension("OES_vertex_array_object"))||void 0===t||t.deleteVertexArrayOES(e);}unbindVAO(){this.bindVertexArray.set(null);}}let ha;function ua(e,i,o,a,r){var s,n;const l=e.context,c=e.transform,h=l.gl,u=e.useProgram("collisionBox"),d=[];let _=0,p=0;for(const t of a){const a=i.getTile(t).getBucket(o);if(!a)continue;const n=r?a.textCollisionBox:a.iconCollisionBox,m=a.collisionCircleArray;m.length>0&&(d.push({circleArray:m,circleOffset:p,coord:t}),_+=m.length/4,p=_),n&&u.draw(l,h.LINES,oi.disabled,ri.disabled,e.colorModeForRenderPass(),ii.disabled,Ki(e.transform),null===(s=e.style.map.terrain)||void 0===s?void 0:s.getTerrainData(t),c.getProjectionData({overscaledTileID:t,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),o.id,n.layoutVertexBuffer,n.indexBuffer,n.segments,null,e.transform.zoom,null,null,n.collisionVertexBuffer);}if(!r||!d.length)return;const m=e.useProgram("collisionCircle"),f=new t.ca;f.resize(4*_),f._trim();let g=0;for(const e of d)for(let t=0;t=0&&(f[g.associatedIconIndex]={shiftedAnchor:E,angle:S});}else st(g.numGlyphs,p);}if(c){m.clear();const i=e.icon.placedSymbolArray;for(let e=0;ee.style.map.terrain.getElevation(l,t,i):null,s="map"===o.layout.get("text-rotation-alignment");$e(c,e,r,j,i,b,h,s,l.toUnwrapped(),v.width,v.height,Z,a);}const W=r&&M||V,q=y||W?da:b?j:e.transform.clipSpaceToPixelsMatrix,$=m&&0!==o.paint.get(r?"text-halo-width":"icon-halo-width").constantOr(1);let H;H=m?c.iconsInText?go(f.kind,z,w,b,y,W,e,q,N,Z,D,k,E):fo(f.kind,z,w,b,y,W,e,q,N,Z,r,D,$,E):mo(f.kind,z,w,b,y,W,e,q,N,Z,r,D,E);const X={program:S,buffers:u,uniformValues:H,projectionData:U,atlasTexture:A,atlasTextureIcon:B,atlasInterpolation:L,atlasInterpolationIcon:F,isSDF:m,hasHalo:$};if(T&&c.canOverlap){P=!0;const e=u.segments.get();for(const i of e)I.push({segments:new t.aV([i]),sortKey:i.sortKey,state:X,terrainData:R});}else I.push({segments:u.segments,sortKey:0,state:X,terrainData:R});}P&&I.sort(((e,t)=>e.sortKey-t.sortKey));const S=null!==(m=o.paint.get(r?"text-halo-width":"icon-halo-width").constantOr(null))&&void 0!==m?m:1/0,z=o.layout.get("text-letter-spacing").constantOr(0)*t.aJ<0||S>1;for(const t of I){const i=t.state;f.activeTexture.set(g.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,g.CLAMP_TO_EDGE),i.atlasTextureIcon&&(f.activeTexture.set(g.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,g.CLAMP_TO_EDGE));const a=i.isSDF&&i.hasHalo;if(a){const a=i.uniformValues;a.u_is_halo=1,z&&(a.u_is_plain=0,va(i.buffers,t.segments,o,e,i.program,C,u,d,a,i.projectionData,t.terrainData),a.u_is_halo=0,a.u_is_plain=1);}va(i.buffers,t.segments,o,e,i.program,C,u,d,i.uniformValues,i.projectionData,t.terrainData),a&&!z&&(i.uniformValues.u_is_halo=0);}}function va(e,t,i,o,a,r,s,n,l,c,h){const u=o.context;a.draw(u,u.gl.TRIANGLES,r,s,n,ii.backCCW,l,h,c,i.id,e.layoutVertexBuffer,e.indexBuffer,t,i.paint,o.transform.zoom,e.programConfigurations.get(i.id),e.dynamicLayoutVertexBuffer,e.opacityVertexBuffer);}function xa(e,i,o,a,r){const s=e.context,n=s.gl,l=ri.disabled,c=new ei([n.ONE,n.ONE],t.bo.transparent,[!0,!0,!0,!0]),h=i.getBucket(o);if(!h)return;const u=a.key;let d=o.heatmapFbos.get(u);d||(d=ya(s,i.tileSize,i.tileSize),o.heatmapFbos.set(u,d)),s.bindFramebuffer.set(d.framebuffer),s.viewport.set([0,0,i.tileSize,i.tileSize]),s.clear({color:t.bo.transparent});const _=h.programConfigurations.get(o.id),p=e.useProgram("heatmap",_,!r),m=e.transform.getProjectionData({overscaledTileID:i.tileID,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),f=e.style.map.terrain.getTerrainData(a);p.draw(s,n.TRIANGLES,oi.disabled,l,c,ii.disabled,Ji(i,e.transform.zoom,o.paint.get("heatmap-intensity"),1),f,m,o.id,h.layoutVertexBuffer,h.indexBuffer,h.segments,o.paint,e.transform.zoom,_);}function ba(e,t,i,o,a){const r=e.context,s=r.gl,n=e.transform;r.setColorMode(e.colorModeForRenderPass());const l=wa(r,t),c=i.key,h=t.heatmapFbos.get(c);if(!h)return;r.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,h.colorAttachment.get()),r.activeTexture.set(s.TEXTURE1),l.bind(s.LINEAR,s.CLAMP_TO_EDGE);const u=n.getProjectionData({overscaledTileID:i,applyTerrainMatrix:a,applyGlobeMatrix:!o});e.useProgram("heatmapTexture").draw(r,s.TRIANGLES,oi.disabled,ri.disabled,e.colorModeForRenderPass(),ii.disabled,eo(e,t,0,1),null,u,t.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments,t.paint,n.zoom),h.destroy(),t.heatmapFbos.delete(c);}function ya(e,t,i){var o,a;const r=e.gl,s=r.createTexture();r.bindTexture(r.TEXTURE_2D,s),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR);const n=null!==(o=e.HALF_FLOAT)&&void 0!==o?o:r.UNSIGNED_BYTE,l=null!==(a=e.RGBA16F)&&void 0!==a?a:r.RGBA;r.texImage2D(r.TEXTURE_2D,0,l,t,i,0,r.RGBA,n,null);const c=e.createFramebuffer(t,i,!1,!1);return c.colorAttachment.set(s),c}function wa(e,i){return i.colorRampTexture||(i.colorRampTexture=new t.T(e,i.colorRamp,e.gl.RGBA)),i.colorRampTexture}function Ta(e,i,o,a,r,s,n,l){let c=256;if(r.stepInterpolant){const a=i.getSource().maxzoom,r=n.canonical.z===a?Math.ceil(1<e.options.anisotropicFilterPitch&&_.texParameterf(_.TEXTURE_2D,d.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,d.extTextureFilterAnisotropicMax);const S=null===(h=e.style.map.terrain)||void 0===h?void 0:h.getTerrainData(T),z=m.getProjectionData({overscaledTileID:T,aligned:v,applyGlobeMatrix:!c,applyTerrainMatrix:!0}),R=_o(I,M,E.fadeMix,i,n),D=f.getMeshFromTileID(d,T.canonical,r,s,"raster");p.draw(d,_.TRIANGLES,o,a?a[T.overscaledZ]:ri.disabled,g,l?ii.frontCCW:ii.backCCW,R,S,z,i.id,D.vertexBuffer,D.indexBuffer,D.segments);}}function ka(e,i,o,a){const r={parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:{tileOpacity:1,parentTileOpacity:1,fadeMix:{opacity:1,mix:0}}};if(0===o||a)return r;if(e.fadingParentID){const a=i.getLoadedTile(e.fadingParentID);if(!a)return r;const s=Math.pow(2,a.tileID.overscaledZ-e.tileID.overscaledZ),n=[e.tileID.canonical.x*s%1,e.tileID.canonical.y*s%1],l=function(e,i,o){const a=c(),r=(a-i.timeAdded)/o,s=e.fadingDirection===ue.Incoming,n=t.al((a-e.timeAdded)/o,0,1),l=t.al(1-r,0,1),h=s?n:l;return {tileOpacity:h,parentTileOpacity:s?l:n,fadeMix:{opacity:1,mix:1-h}}}(e,a,o);return {parentTile:a,parentScaleBy:s,parentTopLeft:n,fadeValues:l}}if(e.selfFading){const i=function(e,i){const o=(c()-e.timeAdded)/i,a=t.al(o,0,1);return {tileOpacity:a,fadeMix:{opacity:a,mix:0}}}(e,o);return {parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:i}}return r}const Ba=new t.bo(1,0,0,1),Oa=new t.bo(0,1,0,1),ja=new t.bo(0,0,1,1),Na=new t.bo(1,0,1,1),Za=new t.bo(0,1,1,1);function Ua(e,t,i,o){Va(e,0,t+i/2,e.transform.width,i,o);}function Ga(e,t,i,o){Va(e,t-i/2,0,i,e.transform.height,o);}function Va(e,t,i,o,a,r){const s=e.context,n=s.gl;n.enable(n.SCISSOR_TEST),n.scissor(t*e.pixelRatio,i*e.pixelRatio,o*e.pixelRatio,a*e.pixelRatio),s.clear({color:r}),n.disable(n.SCISSOR_TEST);}function Wa(e,i,o){var a;const r=e.context,s=r.gl,n=e.useProgram("debug"),l=oi.disabled,c=ri.disabled,h=e.colorModeForRenderPass(),u="$debug",d=null===(a=e.style.map.terrain)||void 0===a?void 0:a.getTerrainData(o);r.activeTexture.set(s.TEXTURE0);const _=i.getTileByID(o.key).latestRawTileData,p=Math.floor(((null==_?void 0:_.byteLength)||0)/1024),m=i.getTile(o).tileSize,f=512/Math.min(m,512)*(o.overscaledZ/e.transform.zoom)*.5;let g=o.canonical.toString();o.overscaledZ!==o.canonical.z&&(g+=` => ${o.overscaledZ}`),function(e,t){e.initDebugOverlayCanvas();const i=e.debugOverlayCanvas,o=e.context.gl,a=e.debugOverlayCanvas.getContext("2d");a.clearRect(0,0,i.width,i.height),a.shadowColor="white",a.shadowBlur=2,a.lineWidth=1.5,a.strokeStyle="white",a.textBaseline="top",a.font="bold 36px Open Sans, sans-serif",a.fillText(t,5,5),a.strokeText(t,5,5),e.debugOverlayTexture.update(i),e.debugOverlayTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE);}(e,`${g} ${p}kB`);const v=e.transform.getProjectionData({overscaledTileID:o,applyGlobeMatrix:!0,applyTerrainMatrix:!0});n.draw(r,s.TRIANGLES,l,c,ei.alphaBlended,ii.disabled,Qi(t.bo.transparent,f),null,v,u,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments),n.draw(r,s.LINE_STRIP,l,c,h,ii.disabled,Qi(t.bo.red),d,v,u,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);}function qa(e,t,i,o){const{isRenderingGlobe:a}=o,r=e.context,s=r.gl,n=e.transform,l=e.colorModeForRenderPass(),c=e.getDepthModeFor3D(),h=e.useProgram("terrain");r.bindFramebuffer.set(null),r.viewport.set([0,0,e.width,e.height]);for(const o of i){const i=t.getTerrainMesh(o.tileID),u=e.renderToTexture.getTexture(o),d=t.getTerrainData(o.tileID);r.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,u.texture);const _=t.getMeshFrameDelta(n.zoom),p=n.calculateFogMatrix(o.tileID.toUnwrapped()),m=ji(_,p,e.style.sky,n.pitch,a),f=n.getProjectionData({overscaledTileID:o.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});h.draw(r,s.TRIANGLES,c,ri.disabled,l,ii.backCCW,m,d,f,"terrain",i.vertexBuffer,i.indexBuffer,i.segments);}}function $a(e,i){if(!i.mesh){const o=new t.aU;o.emplaceBack(-1,-1),o.emplaceBack(1,-1),o.emplaceBack(1,1),o.emplaceBack(-1,1);const a=new t.aW;a.emplaceBack(0,1,2),a.emplaceBack(0,2,3),i.mesh=new Bt(e.createVertexBuffer(o,Ot.members),e.createIndexBuffer(a),t.aV.simpleSegment(0,0,o.length,a.length));}return i.mesh}const Ha={symbol:function(e,i,o,a,r,s){if("translucent"!==e.renderPass)return;const{isRenderingToTexture:n}=s,l=ri.disabled,c=e.colorModeForRenderPass();(o._unevaluatedLayout.hasValue("text-variable-anchor")||o._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(e,i,o,a,r,s,n,l,c){var h;const u=i.transform,d=i.style.map.terrain,_="map"===r,p="map"===s;for(const r of e){const e=a.getTile(r),s=e.getBucket(o);if(!(null===(h=null==s?void 0:s.text)||void 0===h?void 0:h.segments.get().length))continue;const m=t.aw(s.textSizeData,u.zoom),f=t.aK(e,1,i.transform.zoom),g=Ze(_,i.transform,f),v="none"!==o.layout.get("icon-text-fit")&&s.hasIconData();if(m){const i=Math.pow(2,u.zoom-e.tileID.overscaledZ),o=d?(e,t)=>d.getElevation(r,e,t):null;ma(s,_,p,c,u,g,i,m,v,t.aL(u,e,n,l),r.toUnwrapped(),o);}}}(a,e,o,i,o.layout.get("text-rotation-alignment"),o.layout.get("text-pitch-alignment"),o.paint.get("text-translate"),o.paint.get("text-translate-anchor"),r),0!==o.paint.get("icon-opacity").constantOr(1)&&ga(e,i,o,a,!1,o.paint.get("icon-translate"),o.paint.get("icon-translate-anchor"),o.layout.get("icon-rotation-alignment"),o.layout.get("icon-pitch-alignment"),o.layout.get("icon-keep-upright"),l,c,n),0!==o.paint.get("text-opacity").constantOr(1)&&ga(e,i,o,a,!0,o.paint.get("text-translate"),o.paint.get("text-translate-anchor"),o.layout.get("text-rotation-alignment"),o.layout.get("text-pitch-alignment"),o.layout.get("text-keep-upright"),l,c,n),i.map.showCollisionBoxes&&(ua(e,i,o,a,!0),ua(e,i,o,a,!1));},circle:function(e,i,o,a,r){var s;if("translucent"!==e.renderPass)return;const{isRenderingToTexture:n}=r,l=o.paint.get("circle-opacity"),c=o.paint.get("circle-stroke-width"),h=o.paint.get("circle-stroke-opacity"),u=!o.layout.get("circle-sort-key").isConstant();if(0===l.constantOr(1)&&(0===c.constantOr(1)||0===h.constantOr(1)))return;const d=e.context,_=d.gl,p=e.transform,m=e.getDepthModeForSublayer(0,oi.ReadOnly),f=ri.disabled,g=e.colorModeForRenderPass(),v=[],x=p.getCircleRadiusCorrection();for(const r of a){const a=i.getTile(r),l=a.getBucket(o);if(!l)continue;const c=o.paint.get("circle-translate"),h=o.paint.get("circle-translate-anchor"),d=t.aL(p,a,c,h),_=l.programConfigurations.get(o.id),m=e.useProgram("circle",_),f=l.layoutVertexBuffer,g=l.indexBuffer,b=null===(s=e.style.map.terrain)||void 0===s?void 0:s.getTerrainData(r),y={programConfiguration:_,program:m,layoutVertexBuffer:f,indexBuffer:g,uniformValues:Xi(e,a,o,d,x),terrainData:b,projectionData:p.getProjectionData({overscaledTileID:r,applyGlobeMatrix:!n,applyTerrainMatrix:!0})};if(u){const e=l.segments.get();for(const i of e)v.push({segments:new t.aV([i]),sortKey:i.sortKey,state:y});}else v.push({segments:l.segments,sortKey:0,state:y});}u&&v.sort(((e,t)=>e.sortKey-t.sortKey));for(const t of v){const{programConfiguration:i,program:a,layoutVertexBuffer:r,indexBuffer:s,uniformValues:n,terrainData:l,projectionData:c}=t.state;a.draw(d,_.TRIANGLES,m,f,g,ii.backCCW,n,l,c,o.id,r,s,t.segments,o.paint,e.transform.zoom,i);}},heatmap:function(e,i,o,a,r){if(0===o.paint.get("heatmap-opacity"))return;const s=e.context,{isRenderingToTexture:n,isRenderingGlobe:l}=r;if(e.style.map.terrain){for(const t of a){const a=i.getTile(t);i.hasRenderableParent(t)||("offscreen"===e.renderPass?xa(e,a,o,t,l):"translucent"===e.renderPass&&ba(e,o,t,n,l));}s.viewport.set([0,0,e.width,e.height]);}else "offscreen"===e.renderPass?function(e,i,o,a){const r=e.context,s=r.gl,n=e.transform,l=ri.disabled,c=new ei([s.ONE,s.ONE],t.bo.transparent,[!0,!0,!0,!0]);((function(e,i,o){const a=e.gl;e.activeTexture.set(a.TEXTURE1),e.viewport.set([0,0,i.width/4,i.height/4]);let r=o.heatmapFbos.get(t.cd);r?(a.bindTexture(a.TEXTURE_2D,r.colorAttachment.get()),e.bindFramebuffer.set(r.framebuffer)):(r=ya(e,i.width/4,i.height/4),o.heatmapFbos.set(t.cd,r));}))(r,e,o),r.clear({color:t.bo.transparent});for(const t of a){if(i.hasRenderableParent(t))continue;const a=i.getTile(t),h=a.getBucket(o);if(!h)continue;const u=h.programConfigurations.get(o.id),d=e.useProgram("heatmap",u),_=n.getProjectionData({overscaledTileID:t,applyGlobeMatrix:!0,applyTerrainMatrix:!1}),p=n.getCircleRadiusCorrection();d.draw(r,s.TRIANGLES,oi.disabled,l,c,ii.backCCW,Ji(a,n.zoom,o.paint.get("heatmap-intensity"),p),null,_,o.id,h.layoutVertexBuffer,h.indexBuffer,h.segments,o.paint,n.zoom,u);}r.viewport.set([0,0,e.width,e.height]);}(e,i,o,a):"translucent"===e.renderPass&&function(e,i){const o=e.context,a=o.gl;o.setColorMode(e.colorModeForRenderPass());const r=i.heatmapFbos.get(t.cd);r&&(o.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,r.colorAttachment.get()),o.activeTexture.set(a.TEXTURE1),wa(o,i).bind(a.LINEAR,a.CLAMP_TO_EDGE),e.useProgram("heatmapTexture").draw(o,a.TRIANGLES,oi.disabled,ri.disabled,e.colorModeForRenderPass(),ii.disabled,eo(e,i,0,1),null,null,i.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,i.paint,e.transform.zoom));}(e,o);},line:function(e,t,i,o,a){var r;if("translucent"!==e.renderPass)return;const{isRenderingToTexture:s}=a,n=i.paint.get("line-opacity"),l=i.paint.get("line-width");if(0===n.constantOr(1)||0===l.constantOr(1))return;const c=e.getDepthModeForSublayer(0,oi.ReadOnly),h=e.colorModeForRenderPass(),u=i.paint.get("line-dasharray"),d=u.constantOr(1),_=i.paint.get("line-pattern"),p=_.constantOr(1),m=i.paint.get("line-gradient"),f=i.getCrossfadeParameters();let g;g=p?"linePattern":d&&m?"lineGradientSDF":d?"lineSDF":m?"lineGradient":"line";const v=e.context,x=v.gl,b=e.transform;let y=!0;for(const a of o){const o=t.getTile(a);if(p&&!o.patternsLoaded())continue;const n=o.getBucket(i);if(!n)continue;const l=n.programConfigurations.get(i.id),w=e.context.program.get(),T=e.useProgram(g,l),P=y||T.program!==w,C=null===(r=e.style.map.terrain)||void 0===r?void 0:r.getTerrainData(a),M=_.constantOr(null),I=null==u?void 0:u.constantOr(null);if(M&&o.imageAtlas){const e=o.imageAtlas,t=e.patternPositions[M.to.toString()],i=e.patternPositions[M.from.toString()];t&&i&&l.setConstantPatternPositions(t,i);}else if(I){const t="round"===i.layout.get("line-cap").constantOr(null),o=e.lineAtlas.getDash(I.to,t),a=e.lineAtlas.getDash(I.from,t);l.setConstantDashPositions(o,a);}const E=b.getProjectionData({overscaledTileID:a,applyGlobeMatrix:!s,applyTerrainMatrix:!0}),S=b.getPixelScale();let z;p?(z=no(e,o,i,S,f),Pa(v,x,o,l,f)):d&&m?(z=co(e,o,i,S,f,n.lineClipsArray.length),Ia(e,t,v,x,i,n,a,l,f)):d?(z=lo(e,o,i,S,f),Ca(e,v,x,l,P,f)):m?(z=so(e,o,i,S,n.lineClipsArray.length),Ma(e,t,v,x,i,n,a)):z=ro(e,o,i,S);const R=e.stencilModeForClipping(a);T.draw(v,x.TRIANGLES,c,R,h,ii.disabled,z,C,E,i.id,n.layoutVertexBuffer,n.indexBuffer,n.segments,i.paint,e.transform.zoom,l,n.layoutVertexBuffer2),y=!1;}},fill:function(e,i,o,a,r){const s=o.paint.get("fill-color"),n=o.paint.get("fill-opacity");if(0===n.constantOr(1))return;const{isRenderingToTexture:l}=r,c=e.colorModeForRenderPass(),h=o.paint.get("fill-pattern"),u=e.opaquePassEnabledForLayer()&&!h.constantOr(1)&&1===s.constantOr(t.bo.transparent).a&&1===n.constantOr(0)?"opaque":"translucent";if(e.renderPass===u){const t=e.getDepthModeForSublayer(1,"opaque"===e.renderPass?oi.ReadWrite:oi.ReadOnly);Sa(e,i,o,a,t,c,!1,l);}if("translucent"===e.renderPass&&o.paint.get("fill-antialias")){const t=e.getDepthModeForSublayer(o.getPaintProperty("fill-outline-color")?2:0,oi.ReadOnly);Sa(e,i,o,a,t,c,!0,l);}},fillExtrusion:function(e,t,i,o,a){const r=i.paint.get("fill-extrusion-opacity");if(0===r)return;const{isRenderingToTexture:s}=a;if("translucent"===e.renderPass){const a=new oi(e.context.gl.LEQUAL,oi.ReadWrite,e.depthRangeFor3D);if(1!==r||i.paint.get("fill-extrusion-pattern").constantOr(1))za(e,t,i,o,a,ri.disabled,ei.disabled,s),za(e,t,i,o,a,e.stencilModeFor3D(),e.colorModeForRenderPass(),s);else {const r=e.colorModeForRenderPass();za(e,t,i,o,a,ri.disabled,r,s);}}},hillshade:function(e,i,o,a,r){if("offscreen"!==e.renderPass&&"translucent"!==e.renderPass)return;const{isRenderingToTexture:s}=r,n=e.context,l=e.style.projection.useSubdivision,c=e.getDepthModeForSublayer(0,oi.ReadOnly),h=e.colorModeForRenderPass();if("offscreen"===e.renderPass)!function(e,i,o,a,r,s,n){const l=e.context,c=l.gl,h="nearest"===a.paint.get("resampling")?c.NEAREST:c.LINEAR;for(const u of o){const o=i.getTile(u),d=o.dem;if(!(null==d?void 0:d.data))continue;if(!o.needsHillshadePrepare)continue;const _=d.dim,p=d.stride,m=d.getPixels();if(l.activeTexture.set(c.TEXTURE1),l.pixelStoreUnpackPremultiplyAlpha.set(!1),o.demTexture||(o.demTexture=e.getTileTexture(p)),o.demTexture){const e=o.demTexture;e.update(m,{premultiply:!1}),e.bind(c.NEAREST,c.CLAMP_TO_EDGE);}else o.demTexture=new t.T(l,m,c.RGBA,{premultiply:!1}),o.demTexture.bind(c.NEAREST,c.CLAMP_TO_EDGE);l.activeTexture.set(c.TEXTURE0);let f=o.fbo;if(!f){const e=new t.T(l,{width:_,height:_,data:null},c.RGBA);e.bind(h,c.CLAMP_TO_EDGE),f=o.fbo=l.createFramebuffer(_,_,!0,!1),f.colorAttachment.set(e.texture);}l.bindFramebuffer.set(f.framebuffer),l.viewport.set([0,0,_,_]),e.useProgram("hillshadePrepare").draw(l,c.TRIANGLES,r,s,n,ii.disabled,io(o.tileID,d),null,null,a.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),o.needsHillshadePrepare=!1;}}(e,i,a,o,c,ri.disabled,h),n.viewport.set([0,0,e.width,e.height]);else if("translucent"===e.renderPass)if(l){const[t,r,n]=e.stencilConfigForOverlapTwoPass(a);Ra(e,i,o,n,t,c,h,!1,s),Ra(e,i,o,n,r,c,h,!0,s);}else {const[t,r]=e.getStencilConfigForOverlapAndUpdateStencilID(a);Ra(e,i,o,r,t,c,h,!1,s);}},colorRelief:function(e,t,i,o,a){if("translucent"!==e.renderPass)return;if(!o.length)return;const{isRenderingToTexture:r}=a,s=e.style.projection.useSubdivision,n=e.getDepthModeForSublayer(0,oi.ReadOnly),l=e.colorModeForRenderPass();if(s){const[a,s,c]=e.stencilConfigForOverlapTwoPass(o);Aa(e,t,i,c,a,n,l,!1,r),Aa(e,t,i,c,s,n,l,!0,r);}else {const[a,s]=e.getStencilConfigForOverlapAndUpdateStencilID(o);Aa(e,t,i,s,a,n,l,!1,r);}},raster:function(e,t,i,o,a){if("translucent"!==e.renderPass)return;if(0===i.paint.get("raster-opacity"))return;if(!o.length)return;const{isRenderingToTexture:r}=a,s=t.getSource(),n=e.style.projection.useSubdivision;if(s instanceof te)Fa(e,t,i,o,null,!1,!1,s.tileCoords,s.flippedWindingOrder,r);else if(n){const[a,s,n]=e.stencilConfigForOverlapTwoPass(o);Fa(e,t,i,n,a,!1,!0,La,!1,r),Fa(e,t,i,n,s,!0,!0,La,!1,r);}else {const[a,s]=e.getStencilConfigForOverlapAndUpdateStencilID(o);Fa(e,t,i,s,a,!1,!0,La,!1,r);}},background:function(e,t,i,o,a){var r;const s=i.paint.get("background-color"),n=i.paint.get("background-opacity");if(0===n)return;const{isRenderingToTexture:l}=a,c=e.context,h=c.gl,u=e.style.projection,d=e.transform,_=d.tileSize,p=i.paint.get("background-pattern");if(e.isPatternMissing(p))return;const m=!p&&1===s.a&&1===n&&e.opaquePassEnabledForLayer()?"opaque":"translucent";if(e.renderPass!==m)return;const f=ri.disabled,g=e.getDepthModeForSublayer(0,"opaque"===m?oi.ReadWrite:oi.ReadOnly),v=e.colorModeForRenderPass(),x=e.useProgram(p?"backgroundPattern":"background"),b=o||Me(d,{tileSize:_,terrain:e.style.map.terrain});p&&(c.activeTexture.set(h.TEXTURE0),e.imageManager.bind(e.context));const y=i.getCrossfadeParameters();for(const t of b){const o=d.getProjectionData({overscaledTileID:t,applyGlobeMatrix:!l,applyTerrainMatrix:!0}),a=p?xo(n,e,p,{tileID:t,tileSize:_},y):vo(n,s),m=null===(r=e.style.map.terrain)||void 0===r?void 0:r.getTerrainData(t),b=u.getMeshFromTileID(c,t.canonical,!1,!0,"raster");x.draw(c,h.TRIANGLES,g,f,v,ii.backCCW,a,m,o,i.id,b.vertexBuffer,b.indexBuffer,b.segments);}},sky:function(e,t){const i=e.context,o=i.gl,a=((e,t,i)=>{const o=Math.cos(t.rollInRadians),a=Math.sin(t.rollInRadians),r=ge(t),s=t.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}).projectionTransition;return {u_sky_color:e.properties.get("sky-color"),u_horizon_color:e.properties.get("horizon-color"),u_horizon:[(t.width/2-r*a)*i,(t.height/2+r*o)*i],u_horizon_normal:[-a,o],u_sky_horizon_blend:e.properties.get("sky-horizon-blend")*t.height/2*i,u_sky_blend:s}})(t,e.style.map.transform,e.pixelRatio),r=new oi(o.LEQUAL,oi.ReadWrite,[0,1]),s=ri.disabled,n=e.colorModeForRenderPass(),l=e.useProgram("sky"),c=$a(i,t);l.draw(i,o.TRIANGLES,r,s,n,ii.disabled,a,null,void 0,"sky",c.vertexBuffer,c.indexBuffer,c.segments);},atmosphere:function(e,i,o){const a=e.context,r=a.gl,s=e.useProgram("atmosphere"),n=new oi(r.LEQUAL,oi.ReadOnly,[0,1]),l=e.transform,c=function(e,i){const o=e.properties.get("position"),a=[-o.x,-o.y,-o.z],r=t.ap(new Float64Array(16));return "map"===e.properties.get("anchor")&&(t.be(r,r,i.rollInRadians),t.bf(r,r,-i.pitchInRadians),t.be(r,r,i.bearingInRadians),t.bf(r,r,i.center.lat*Math.PI/180),t.bI(r,r,-i.center.lng*Math.PI/180)),t.cg(a,a,r),a}(o,e.transform),h=l.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),u=i.properties.get("atmosphere-blend")*h.projectionTransition;if(0===u)return;const d=gi(l.worldSize,l.center.lat),_=l.inverseProjectionMatrix,p=new Float64Array(4);p[3]=1,t.aE(p,p,l.modelViewProjectionMatrix),p[0]/=p[3],p[1]/=p[3],p[2]/=p[3],p[3]=1,t.aE(p,p,_),p[0]/=p[3],p[1]/=p[3],p[2]/=p[3],p[3]=1;const m=((e,t,i,o,a)=>({u_sun_pos:e,u_atmosphere_blend:t,u_globe_position:i,u_globe_radius:o,u_inv_proj_matrix:a}))(c,u,[p[0],p[1],p[2]],d,_),f=$a(a,i);s.draw(a,r.TRIANGLES,n,ri.disabled,ei.alphaBlended,ii.disabled,m,null,null,"atmosphere",f.vertexBuffer,f.indexBuffer,f.segments);},custom:function(e,t,i,o){const{isRenderingGlobe:a}=o,r=e.context,s=i.implementation,n=e.style.projection,l=e.transform,c=l.getProjectionDataForCustomLayer(a),h={farZ:l.farZ,nearZ:l.nearZ,fov:l.fov*Math.PI/180,modelViewProjectionMatrix:l.modelViewProjectionMatrix,projectionMatrix:l.projectionMatrix,shaderData:{variantName:n.shaderVariantName,vertexShaderPrelude:`const float PI = 3.141592653589793;\nuniform mat4 u_projection_matrix;\n${n.shaderPreludeCode.vertexSource}`,define:n.shaderDefine},defaultProjectionData:c},u=s.renderingMode?s.renderingMode:"2d";if("offscreen"===e.renderPass){const t=s.prerender;t&&(e.setCustomLayerDefaults(),r.setColorMode(e.colorModeForRenderPass()),t.call(s,r.gl,h),r.setDirty(),e.setBaseState());}else if("translucent"===e.renderPass){e.setCustomLayerDefaults(),r.setColorMode(e.colorModeForRenderPass()),r.setStencilMode(ri.disabled);const t="3d"===u?e.getDepthModeFor3D():e.getDepthModeForSublayer(0,oi.ReadOnly);r.setDepthMode(t),s.render(r.gl,h),r.setDirty(),e.setBaseState(),r.bindFramebuffer.set(null);}},debug:function(e,t,i){for(const o of i)Wa(e,t,o);},debugPadding:function(e){const t=e.transform.padding;Ua(e,e.transform.height-(t.top||0),3,Ba),Ua(e,t.bottom||0,3,Oa),Ga(e,t.left||0,3,ja),Ga(e,e.transform.width-(t.right||0),3,Na);const i=e.transform.centerPoint;!function(e,t,i,o){Va(e,t-1,i-10,2,20,o),Va(e,t-10,i-1,20,2,o);}(e,i.x,e.transform.height-i.y,Za);},terrainDepth:function(e,i){const o=e.context,a=o.gl,r=e.transform,s=ei.unblended,n=new oi(a.LEQUAL,oi.ReadWrite,[0,1]),l=i.tileManager.getRenderableTiles(),c=e.useProgram("terrainDepth");o.bindFramebuffer.set(i.getFramebuffer("depth").framebuffer),o.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),o.clear({color:t.bo.transparent,depth:1});for(const e of l){const t=i.getTerrainMesh(e.tileID),l=i.getTerrainData(e.tileID),h=r.getProjectionData({overscaledTileID:e.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0}),u={u_ele_delta:i.getMeshFrameDelta(r.zoom)};c.draw(o,a.TRIANGLES,n,ri.disabled,s,ii.backCCW,u,l,h,"terrain",t.vertexBuffer,t.indexBuffer,t.segments);}o.bindFramebuffer.set(null),o.viewport.set([0,0,e.width,e.height]);},terrainCoords:function(e,i){const o=e.context,a=o.gl,r=e.transform,s=ei.unblended,n=new oi(a.LEQUAL,oi.ReadWrite,[0,1]),l=i.getCoordsTexture(),c=i.tileManager.getRenderableTiles(),h=e.useProgram("terrainCoords");o.bindFramebuffer.set(i.getFramebuffer("coords").framebuffer),o.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),o.clear({color:t.bo.transparent,depth:1}),i.coordsIndex=[];for(const e of c){const t=i.getTerrainMesh(e.tileID),c=i.getTerrainData(e.tileID);o.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,l.texture);const u={u_terrain_coords_id:(255-i.coordsIndex.length)/255,u_texture:0,u_ele_delta:i.getMeshFrameDelta(r.zoom)},d=r.getProjectionData({overscaledTileID:e.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});h.draw(o,a.TRIANGLES,n,ri.disabled,s,ii.backCCW,u,c,d,"terrain",t.vertexBuffer,t.indexBuffer,t.segments),i.coordsIndex.push(e.tileID.key);}o.bindFramebuffer.set(null),o.viewport.set([0,0,e.width,e.height]);}};class Xa{constructor(e,i){this.drawFunctions=Ha,this.context=new ca(e),this.transform=i,this._tileTextures={},this.terrainFacilitator={depthDirty:!0,coordsDirty:!1,matrix:t.ap(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=Fe.maxOverzooming+Fe.maxUnderzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new At;}resize(e,t,i){if(this.width=Math.floor(e*i),this.height=Math.floor(t*i),this.pixelRatio=i,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const e of this.style._order)this.style._layers[e].resize();}setup(){const e=this.context,i=new t.aU;i.emplaceBack(0,0),i.emplaceBack(t.a6,0),i.emplaceBack(0,t.a6),i.emplaceBack(t.a6,t.a6),this.tileExtentBuffer=e.createVertexBuffer(i,Ot.members),this.tileExtentSegments=t.aV.simpleSegment(0,0,4,2);const o=new t.aU;o.emplaceBack(0,0),o.emplaceBack(t.a6,0),o.emplaceBack(0,t.a6),o.emplaceBack(t.a6,t.a6),this.debugBuffer=e.createVertexBuffer(o,Ot.members),this.debugSegments=t.aV.simpleSegment(0,0,4,5);const a=new t.ch;a.emplaceBack(0,0,0,0),a.emplaceBack(t.a6,0,t.a6,0),a.emplaceBack(0,t.a6,0,t.a6),a.emplaceBack(t.a6,t.a6,t.a6,t.a6),this.rasterBoundsBuffer=e.createVertexBuffer(a,Bi.members),this.rasterBoundsSegments=t.aV.simpleSegment(0,0,4,2);const r=new t.aU;r.emplaceBack(0,0),r.emplaceBack(t.a6,0),r.emplaceBack(0,t.a6),r.emplaceBack(t.a6,t.a6),this.rasterBoundsBufferPosOnly=e.createVertexBuffer(r,Ot.members),this.rasterBoundsSegmentsPosOnly=t.aV.simpleSegment(0,0,4,5);const s=new t.aU;s.emplaceBack(0,0),s.emplaceBack(1,0),s.emplaceBack(0,1),s.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(s,Ot.members),this.viewportSegments=t.aV.simpleSegment(0,0,4,2);const n=new t.ci;n.emplaceBack(0),n.emplaceBack(1),n.emplaceBack(3),n.emplaceBack(2),n.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(n);const l=new t.aW;l.emplaceBack(1,0,2),l.emplaceBack(1,2,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(l);const c=this.context.gl;this.stencilClearMode=new ri({func:c.ALWAYS,mask:0},0,255,c.ZERO,c.ZERO,c.ZERO),this.tileExtentMesh=new Bt(this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments);}clearStencil(){const e=this.context,i=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const o=t.O();t.c7(o,0,this.width,this.height,0,0,1),t.S(o,o,[i.drawingBufferWidth,i.drawingBufferHeight,0]);const a={mainMatrix:o,tileMercatorCoords:[0,0,1,1],clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:o};this.useProgram("clippingMask",null,!0).draw(e,i.TRIANGLES,oi.disabled,this.stencilClearMode,ei.disabled,ii.disabled,null,null,a,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);}_renderTileClippingMasks(e,t,i){if(this.currentStencilSource===e.source||!e.isTileClipped()||!(null==t?void 0:t.length))return;this.currentStencilSource=e.source,this.nextStencilID+t.length>256&&this.clearStencil();const o=this.context;o.setColorMode(ei.disabled),o.setDepthMode(oi.disabled);const a={};for(const e of t)a[e.key]=this.nextStencilID++;this._renderTileMasks(a,t,i,!0),this._renderTileMasks(a,t,i,!1),this._tileClippingMaskIDs=a;}_renderTileMasks(e,t,i,o){var a;const r=this.context,s=r.gl,n=this.style.projection,l=this.transform,c=this.useProgram("clippingMask");for(const h of t){const t=e[h.key],u=null===(a=this.style.map.terrain)||void 0===a?void 0:a.getTerrainData(h),d=n.getMeshFromTileID(this.context,h.canonical,o,!0,"stencil"),_=l.getProjectionData({overscaledTileID:h,applyGlobeMatrix:!i,applyTerrainMatrix:!0});c.draw(r,s.TRIANGLES,oi.disabled,new ri({func:s.ALWAYS,mask:0},t,255,s.KEEP,s.KEEP,s.REPLACE),ei.disabled,i?ii.disabled:ii.backCCW,null,u,_,"$clipping",d.vertexBuffer,d.indexBuffer,d.segments);}}_renderTilesDepthBuffer(){var e;const t=this.context,i=t.gl,o=this.style.projection,a=this.transform,r=this.useProgram("depth"),s=this.getDepthModeFor3D(),n=Me(a,{tileSize:a.tileSize});for(const l of n){const n=null===(e=this.style.map.terrain)||void 0===e?void 0:e.getTerrainData(l),c=o.getMeshFromTileID(this.context,l.canonical,!0,!0,"raster"),h=a.getProjectionData({overscaledTileID:l,applyGlobeMatrix:!0,applyTerrainMatrix:!0});r.draw(t,i.TRIANGLES,s,ri.disabled,ei.disabled,ii.backCCW,null,n,h,"$clipping",c.vertexBuffer,c.indexBuffer,c.segments);}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const e=this.nextStencilID++,t=this.context.gl;return new ri({func:t.NOTEQUAL,mask:255},e,255,t.KEEP,t.KEEP,t.REPLACE)}stencilModeForClipping(e){const t=this.context.gl;return new ri({func:t.EQUAL,mask:255},this._tileClippingMaskIDs[e.key],0,t.KEEP,t.KEEP,t.REPLACE)}getStencilConfigForOverlapAndUpdateStencilID(e){const t=this.context.gl,i=e.sort(((e,t)=>t.overscaledZ-e.overscaledZ)),o=i[i.length-1].overscaledZ,a=i[0].overscaledZ-o+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();const e={};for(let i=0;it.overscaledZ-e.overscaledZ)),o=i[i.length-1].overscaledZ,a=i[0].overscaledZ-o+1;if(this.clearStencil(),a>1){const e={},r={};for(let i=0;i0};for(const e in n){const t=n[e];t.used&&t.prepare(this.context),l[e]=t.getVisibleCoordinates(!1),h[e]=l[e].slice().reverse(),u[e]=t.getVisibleCoordinates(!0).reverse();}this.opaquePassCutoff=1/0;for(let e=0;ethis.useProgram(e)}),this.context.viewport.set([0,0,this.width,this.height]),this.context.bindFramebuffer.set(null),this.context.clear({color:i.showOverdrawInspector?t.bo.black:t.bo.transparent,depth:1}),this.clearStencil(),this.style.sky&&this.drawFunctions.sky(this,this.style.sky),this._showOverdrawInspector=i.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=s.length-1;this.currentLayer>=0;this.currentLayer--){const e=this.style._layers[s[this.currentLayer]],t=n[e.source],i=l[e.source];this._renderTileClippingMasks(e,i,!1),this.renderLayer(this,t,e,i,d);}this.renderPass="translucent";let _=!1;for(this.currentLayer=0;this.currentLayeri.source&&!i.isHidden(t)?[e.tileManagers[i.source]]:[])),a=o.filter((e=>"vector"===e.getSource().type)),r=o.filter((e=>"vector"!==e.getSource().type)),s=e=>{(!i||i.getSource().maxzoom0?t.pop():null}isPatternMissing(e){if(!e)return !1;if(!e.from||!e.to)return !0;const t=this.imageManager.getPattern(e.from.toString()),i=this.imageManager.getPattern(e.to.toString());return !t||!i}useProgram(e,t,i=!1,o=[]){var a;this.cache||(this.cache={});const r=!!this.style.map.terrain,s=this.style.projection,n=i?Ft.projectionMercator:s.shaderPreludeCode,l=i?jt:s.shaderDefine,c=e+(t?t.cacheKey:"")+`/${i?Nt:s.shaderVariantName}`+(this._showOverdrawInspector?"/overdraw":"")+(r?"/terrain":"")+(o?`/${o.join("/")}`:"");return (a=this.cache)[c]||(a[c]=new Ui(this.context,Ft[e],t,yo[e],this._showOverdrawInspector,r,n,l,o)),this.cache[c]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();}setBaseState(){const e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD);}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new t.T(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));}destroy(){var e,t;if(this._tileTextures){for(const e in this._tileTextures){const t=this._tileTextures[e];if(t)for(const e of t)e.destroy();}this._tileTextures={};}if(this.tileExtentBuffer&&this.tileExtentBuffer.destroy(),this.debugBuffer&&this.debugBuffer.destroy(),this.rasterBoundsBuffer&&this.rasterBoundsBuffer.destroy(),this.rasterBoundsBufferPosOnly&&this.rasterBoundsBufferPosOnly.destroy(),this.viewportBuffer&&this.viewportBuffer.destroy(),this.tileBorderIndexBuffer&&this.tileBorderIndexBuffer.destroy(),this.quadTriangleIndexBuffer&&this.quadTriangleIndexBuffer.destroy(),this.tileExtentMesh&&(null===(e=this.tileExtentMesh.vertexBuffer)||void 0===e||e.destroy()),this.tileExtentMesh&&(null===(t=this.tileExtentMesh.indexBuffer)||void 0===t||t.destroy()),this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this.cache){for(const e in this.cache){const t=this.cache[e];(null==t?void 0:t.program)&&this.context.gl.deleteProgram(t.program);}this.cache={};}this.context&&this.context.setDefault();}overLimit(){const{drawingBufferWidth:e,drawingBufferHeight:t}=this.context.gl;return this.width!==e||this.height!==t}}function Ka(e,t){let i,o=!1,a=null;const r=()=>{a=null,o&&(e(...i),a=setTimeout(r,t),o=!1);};return (...e)=>(o=!0,i=e,a||r(),a)}Xa.MAX_TEXTURE_POOL_SIZE_PER_BUCKET=50;class Ya{constructor(e){this._getCurrentHash=()=>{const e=window.location.hash.replace("#","");if(this._hashName){let t;const i=e.split("&").map((e=>e.split("=")));for(const e of i)e[0]===this._hashName&&(t=e);return (t&&t[1]||"").split("/")}return e.split("/")},this._onHashChange=()=>{const e=this._getCurrentHash();if(!this._isValidHash(e))return !1;const t=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(e[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+e[2],+e[1]],zoom:+e[0],bearing:t,pitch:+(e[4]||0)}),!0},this._updateHashUnthrottled=()=>{const e=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,e);},this._removeHash=()=>{const e=this._getCurrentHash();if(0===e.length)return;const t=e.join("/");let i=t;i.split("&").length>0&&(i=i.split("&")[0]),this._hashName&&(i=`${this._hashName}=${t}`);let o=window.location.hash.replace(i,"");o.startsWith("#&")?o=o.slice(0,1)+o.slice(2):"#"===o&&(o="");let a=window.location.href.replace(/(#.+)?$/,o);a=a.replace("&&","&"),window.history.replaceState(window.history.state,null,a);},this._updateHash=Ka(this._updateHashUnthrottled,300),this._hashName=e&&encodeURIComponent(e);}addTo(e){return this._map=e,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(e){const t=this._map.getCenter(),i=Math.round(100*this._map.getZoom())/100,o=Math.ceil((i*Math.LN2+Math.log(512/360/.5))/Math.LN10),a=Math.pow(10,o),r=Math.round(t.lng*a)/a,s=Math.round(t.lat*a)/a,n=this._map.getBearing(),l=this._map.getPitch();let c="";if(c+=e?`/${r}/${s}/${i}`:`${i}/${s}/${r}`,(n||l)&&(c+="/"+Math.round(10*n)/10),l&&(c+=`/${Math.round(l)}`),this._hashName){const e=this._hashName;let t=!1;const i=window.location.hash.slice(1).split("&").map((i=>{const o=i.split("=")[0];return o===e?(t=!0,`${o}=${c}`):i})).filter((e=>e));return t||i.push(`${e}=${c}`),`#${i.join("&")}`}return `#${c}`}_isValidHash(e){if(e.length<3||e.some(isNaN))return !1;try{new t.W(+e[2],+e[1]);}catch(e){return !1}const i=+e[0],o=+(e[3]||0),a=+(e[4]||0);return i>=this._map.getMinZoom()&&i<=this._map.getMaxZoom()&&o>=-180&&o<=180&&a>=this._map.getMinPitch()&&a<=this._map.getMaxPitch()}}const Qa={linearity:.3,easing:t.cv(0,0,.3,1)},Ja=t.e({deceleration:2500,maxSpeed:1400},Qa),er=t.e({deceleration:20,maxSpeed:1400},Qa),tr=t.e({deceleration:1e3,maxSpeed:360},Qa),ir=t.e({deceleration:1e3,maxSpeed:90},Qa),or=t.e({deceleration:1e3,maxSpeed:360},Qa);class ar{constructor(e){this._map=e,this.clear();}clear(){this._inertiaBuffer=[];}record(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:c(),settings:e});}_drainInertiaBuffer(){const e=this._inertiaBuffer,t=c();for(;e.length>0&&t-e[0].time>160;)e.shift();}_onMoveEnd(e){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,roll:0,pan:new t.P(0,0),pinchAround:void 0,around:void 0};for(const{settings:e}of this._inertiaBuffer)i.zoom+=e.zoomDelta||0,i.bearing+=e.bearingDelta||0,i.pitch+=e.pitchDelta||0,i.roll+=e.rollDelta||0,e.panDelta&&i.pan._add(e.panDelta),e.around&&(i.around=e.around),e.pinchAround&&(i.pinchAround=e.pinchAround);const o=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,a={};if(i.pan.mag()){const r=sr(i.pan.mag(),o,t.e({},Ja,e||{})),s=i.pan.mult(r.amount/i.pan.mag()),n=this._map.cameraHelper.handlePanInertia(s,this._map.transform);a.center=n.easingCenter,a.offset=n.easingOffset,rr(a,r);}if(i.zoom){const e=sr(i.zoom,o,er);a.zoom=t.cw(this._map.transform.zoom+e.amount,this._map.getZoomSnap(),e.amount),rr(a,e);}if(i.bearing){const e=sr(i.bearing,o,tr);a.bearing=this._map.transform.bearing+t.al(e.amount,-179,179),rr(a,e);}if(i.pitch){const e=sr(i.pitch,o,ir);a.pitch=this._map.transform.pitch+e.amount,rr(a,e);}if(i.roll){const e=sr(i.roll,o,or);a.roll=this._map.transform.roll+t.al(e.amount,-179,179),rr(a,e);}if(a.zoom||a.bearing){const e=void 0===i.pinchAround?i.around:i.pinchAround;a.around=e?this._map.unproject(e):this._map.getCenter();}return this.clear(),t.e(a,{noMoveStart:!0})}}function rr(e,t){(!e.duration||e.durationi.unproject(e))),n=r.reduce(((e,t,i,o)=>e.add(t.div(o.length))),new t.P(0,0));super(e,{points:r,point:n,lngLats:s,lngLat:i.unproject(n),originalEvent:o}),this._defaultPrevented=!1;}}class cr extends t.n{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,i){super(e,{originalEvent:i}),this._defaultPrevented=!1;}}class hr{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance;}reset(){delete this._mousedownPos;}wheel(e){return this._firePreventable(new cr(e.type,this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new nr(e.type,this._map,e))}mouseup(e){this._map.fire(new nr(e.type,this._map,e));}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||this._map.fire(new nr(e.type,this._map,e));}dblclick(e){return this._firePreventable(new nr(e.type,this._map,e))}mouseover(e){this._map.fire(new nr(e.type,this._map,e));}mouseout(e){this._map.fire(new nr(e.type,this._map,e));}touchstart(e){return this._firePreventable(new lr(e.type,this._map,e))}touchmove(e){this._map.fire(new lr(e.type,this._map,e));}touchend(e){this._map.fire(new lr(e.type,this._map,e));}touchcancel(e){this._map.fire(new lr(e.type,this._map,e));}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return {}}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class ur{constructor(e){this._map=e;}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent;}mousemove(e){this._map.fire(new nr(e.type,this._map,e));}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1;}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new nr("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);}contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._ignoreContextMenu||this._map.fire(new nr(e.type,this._map,e)),this._map.listens("contextmenu")&&e.preventDefault();}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class dr{constructor(e){this._map=e;}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return {lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(e){return this.transform.screenPointToLocation(t.P.convert(e),this._map.terrain)}}class _r{constructor(e,t){this._map=e,this._tr=new dr(e),this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1,t.boxZoom&&"object"==typeof t.boxZoom&&(this._boxZoomEnd=t.boxZoom.boxZoomEnd);}isEnabled(){return !!this._enabled}isActive(){return !!this._active}enable(){this.isEnabled()||(this._enabled=!0);}disable(){this.isEnabled()&&(this._enabled=!1);}mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(d.disableDrag(),this._startPos=this._lastPos=t,this._active=!0);}mousemoveWindow(e,t){if(!this._active)return;const i=t;if(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)e.fitScreenCoordinates(o,a,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",e);}keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent("boxzoomcancel",e));}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(this._box.remove(),this._box=null),d.enableDrag(),delete this._startPos,delete this._lastPos;}_fireEvent(e,i){return this._map.fire(new t.n(e,{originalEvent:i}))}}function pr(e,t){if(e.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${e.length}, points ${t.length}`);const i={};for(let o=0;othis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),o.length===this.numTouches&&(this.centroid=function(e){const i=new t.P(0,0);for(const t of e)i._add(t);return i.div(e.length)}(i),this.touches=pr(o,i)));}touchmove(e,t,i){if(this.aborted||!this.centroid)return;const o=pr(i,t);for(const e in this.touches){const t=o[e];(!t||t.dist(this.touches[e])>30)&&(this.aborted=!0);}}touchend(e,t,i){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}}class fr{constructor(e){this.singleTap=new mr(e),this.numTaps=e.numTaps,this.reset();}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset();}touchstart(e,t,i){this.singleTap.touchstart(e,t,i);}touchmove(e,t,i){this.singleTap.touchmove(e,t,i);}touchend(e,t,i){const o=this.singleTap.touchend(e,t,i);if(o){const t=e.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(o)<30;if(t&&i||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=o,this.count===this.numTaps)return this.reset(),o}}}class gr{constructor(e){this._tr=new dr(e),this._zoomIn=new fr({numTouches:1,numTaps:2}),this._zoomOut=new fr({numTouches:2,numTaps:1}),this.reset();}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();}touchstart(e,t,i){this._zoomIn.touchstart(e,t,i),this._zoomOut.touchstart(e,t,i);}touchmove(e,t,i){this._zoomIn.touchmove(e,t,i),this._zoomOut.touchmove(e,t,i);}touchend(e,i,o){const a=this._zoomIn.touchend(e,i,o),r=this._zoomOut.touchend(e,i,o),s=this._tr;return a?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:i=>i.easeTo({duration:300,zoom:t.cw(s.zoom+1,i.getZoomSnap()),around:s.unproject(a)},{originalEvent:e})}):r?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:i=>i.easeTo({duration:300,zoom:t.cw(s.zoom-1,i.getZoomSnap()),around:s.unproject(r)},{originalEvent:e})}):void 0}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class vr{constructor(e){this._enabled=!!e.enable,this._moveStateManager=e.moveStateManager,this._clickTolerance=e.clickTolerance||1,this._moveFunction=e.move,this._activateOnStart=!!e.activateOnStart,e.assignEvents(this),this.reset();}reset(e){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(e);}_move(...e){const t=this._moveFunction(...e);if(t.bearingDelta||t.pitchDelta||t.rollDelta||t.around||t.panDelta)return this._active=!0,t}dragStart(e,t){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(e)&&(this._moveStateManager.startMove(e),this._lastPoint=Array.isArray(t)?t[0]:t,this._activateOnStart&&this._lastPoint&&(this._active=!0));}dragMove(e,t){if(!this.isEnabled())return;const i=this._lastPoint;if(!i)return;if(e.preventDefault(),!this._moveStateManager.isValidMoveEvent(e))return void this.reset(e);const o=Array.isArray(t)?t[0]:t;return !this._moved&&o.dist(i)!0}),t=new Tr){this.mouseMoveStateManager=e,this.oneFingerTouchMoveStateManager=t;}_executeRelevantHandler(e,t,i){return e instanceof MouseEvent?t(e):"undefined"!=typeof TouchEvent&&e instanceof TouchEvent?i(e):void 0}startMove(e){this._executeRelevantHandler(e,(e=>{this.mouseMoveStateManager.startMove(e);}),(e=>{this.oneFingerTouchMoveStateManager.startMove(e);}));}endMove(e){this._executeRelevantHandler(e,(e=>{this.mouseMoveStateManager.endMove(e);}),(e=>{this.oneFingerTouchMoveStateManager.endMove(e);}));}isValidStartEvent(e){return this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.isValidStartEvent(e)),(e=>this.oneFingerTouchMoveStateManager.isValidStartEvent(e)))}isValidMoveEvent(e){return this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.isValidMoveEvent(e)),(e=>this.oneFingerTouchMoveStateManager.isValidMoveEvent(e)))}isValidEndEvent(e){return this._executeRelevantHandler(e,(e=>this.mouseMoveStateManager.isValidEndEvent(e)),(e=>this.oneFingerTouchMoveStateManager.isValidEndEvent(e)))}}const Cr=e=>{e.mousedown=e.dragStart,e.mousemoveWindow=e.dragMove,e.mouseup=e.dragEnd,e.contextmenu=e=>{e.preventDefault();};};class Mr{constructor(e,t){this._clickTolerance=e.clickTolerance||1,this._map=t,this.reset();}reset(){this._active=!1,this._touches={},this._sum=new t.P(0,0);}_shouldBePrevented(e){return e<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(e,t,i){return this._calculateTransform(e,t,i)}touchmove(e,t,i){if(this._active){if(!this._shouldBePrevented(i.length))return e.preventDefault(),this._calculateTransform(e,t,i);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",e);}}touchend(e,t,i){this._calculateTransform(e,t,i),this._active&&this._shouldBePrevented(i.length)&&this.reset();}touchcancel(){this.reset();}_calculateTransform(e,i,o){o.length>0&&(this._active=!0);const a=pr(o,i),r=new t.P(0,0),s=new t.P(0,0);let n=0;for(const e in a){const t=a[e],i=this._touches[e];i&&(r._add(t),s._add(t.sub(i)),n++,a[e]=t);}if(this._touches=a,this._shouldBePrevented(n)||!s.mag())return;const l=s.div(n);return this._sum._add(l),this._sum.mag()Math.abs(e.x)}class Lr extends Ir{constructor(e){super(),this._currentTouchCount=0,this._map=e;}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints;}touchstart(e,t,i){super.touchstart(e,t,i),this._currentTouchCount=i.length;}_start(e){this._lastPoints=e,Ar(e[0].sub(e[1]))&&(this._valid=!1);}_move(e,t,i){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;const o=e[0].sub(this._lastPoints[0]),a=e[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(o,a,i.timeStamp),this._valid?(this._lastPoints=e,this._active=!0,{pitchDelta:(o.y+a.y)/2*-.5}):void 0}gestureBeginsVertically(e,t,i){if(void 0!==this._valid)return this._valid;const o=e.mag()>=2,a=t.mag()>=2;if(!o&&!a)return;if(!o||!a)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const r=e.y>0==t.y>0;return Ar(e)&&Ar(t)&&r}}const Fr={panStep:100,bearingStep:15,pitchStep:10};class kr{constructor(e){this._tr=new dr(e);const t=Fr;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep,this._rotationDisabled=!1;}reset(){this._active=!1;}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let i=0,o=0,a=0,r=0,s=0;switch(e.keyCode){case 61:case 107:case 171:case 187:i=1;break;case 189:case 109:case 173:i=-1;break;case 37:e.shiftKey?o=-1:(e.preventDefault(),r=-1);break;case 39:e.shiftKey?o=1:(e.preventDefault(),r=1);break;case 38:e.shiftKey?a=1:(e.preventDefault(),s=-1);break;case 40:e.shiftKey?a=-1:(e.preventDefault(),s=1);break;default:return}return this._rotationDisabled&&(o=0,a=0),{cameraAnimation:n=>{const l=this._tr;n.easeTo({duration:300,easeId:"keyboardHandler",easing:Br,zoom:i?t.cw(l.zoom+i*(e.shiftKey?2:1),n.getZoomSnap()):l.zoom,bearing:l.bearing+o*this._bearingStep,pitch:l.pitch+a*this._pitchStep,offset:[-r*this._panStep,-s*this._panStep],center:l.center},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0;}enableRotation(){this._rotationDisabled=!1;}}function Br(e){return e*(2-e)}const Or=4.000244140625,jr=1/450;class Nr{constructor(e,t){this._onTimeout=e=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(e);},this._map=e,this._tr=new dr(e),this._triggerRenderFrame=t,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=jr;}setZoomRate(e){this._defaultZoomRate=e;}setWheelZoomRate(e){this._wheelZoomRate=e;}isEnabled(){return !!this._enabled}isActive(){return !!this._active||void 0!==this._finishTimeout}isZooming(){return !!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&"center"===e.around);}disable(){this.isEnabled()&&(this._enabled=!1);}_shouldBePrevented(e){return !!this._map.cooperativeGestures.isEnabled()&&!(e.ctrlKey||this._map.cooperativeGestures.isBypassed(e))}wheel(e){if(!this.isEnabled())return;if(this._shouldBePrevented(e))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",e);let t=e.deltaMode===WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY;const i=c(),o=i-(this._lastWheelEventTime||0);this._lastWheelEventTime=i,0!==t&&t%Or==0?this._type="wheel":0!==t&&Math.abs(t)<4?this._type="trackpad":o>400?(this._type=null,this._lastValue=t,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(o*t)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,t+=this._lastValue)),e.shiftKey&&t&&(t/=4),this._type&&(this._lastWheelEvent=e,this._delta-=t,this._active||this._start(e)),e.preventDefault();}_start(e){if(!this._delta)return;this._needsRerender=!1,this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const i=d.mousePos(this._map.getCanvas(),e),o=this._tr;this._aroundPoint=this._aroundCenter?o.transform.locationToScreenPoint(t.W.convert(o.center)):i,this._needsRerender||(this._needsRerender=!0,this._triggerRenderFrame());}renderFrame(){if(!this._needsRerender)return;if(this._needsRerender=!1,!this.isActive())return;const e=this._tr.transform;if("number"==typeof this._lastExpectedZoom){const t=e.zoom-this._lastExpectedZoom;"number"==typeof this._startZoom&&(this._startZoom+=t),"number"==typeof this._targetZoom&&(this._targetZoom+=t);}if(0!==this._delta){const i="wheel"===this._type&&Math.abs(this._delta)>Or?this._wheelZoomRate:this._defaultZoomRate;let o=2/(1+Math.exp(-Math.abs(this._delta*i)));this._delta<0&&0!==o&&(o=1/o);const a="number"!=typeof this._targetZoom?e.scale:t.ao(this._targetZoom),r=e.applyConstrain(e.getCameraLngLat(),t.ar(a*o)).zoom,s=this._map.getZoomSnap();if("wheel"===this._type&&s>0){const i=t.cw(e.zoom,s);this._targetZoom=t.cw(r,s,r-i);}else this._targetZoom=r;"wheel"===this._type&&(this._startZoom=e.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}const i="number"!=typeof this._targetZoom?e.zoom:this._targetZoom,o=this._startZoom,a=this._easing;let r,s=!1;if("wheel"===this._type&&o&&a){const e=c()-this._lastWheelEventTime,n=Math.min((e+5)/200,1),l=a(n);r=t.H.number(o,i,l),n<1?this._needsRerender=!0:s=!0;}else r=i,s=!0;return this._active=!0,s&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._lastExpectedZoom,delete this._finishTimeout;}),200)),this._lastExpectedZoom=r,{noInertia:!0,needsRenderFrame:!s,zoomDelta:r-e.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(e){let i=t.cy;if(this._prevEase){const e=this._prevEase,o=(c()-e.start)/e.duration,a=e.easing(o+.01)-e.easing(o),r=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-r*r);i=t.cv(r,s,.25,1);}return this._prevEase={start:c(),duration:e,easing:i},i}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,delete this._lastExpectedZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);}}class Zr{constructor(e,t){this._clickZoom=e,this._tapZoom=t;}enable(){this._clickZoom.enable(),this._tapZoom.enable();}disable(){this._clickZoom.disable(),this._tapZoom.disable();}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Ur{constructor(e){this._tr=new dr(e),this.reset();}reset(){this._active=!1;}dblclick(e,i){return e.preventDefault(),{cameraAnimation:o=>{o.easeTo({duration:300,zoom:t.cw(this._tr.zoom+(e.shiftKey?-1:1),o.getZoomSnap()),around:this._tr.unproject(i)},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Gr{constructor(){this._tap=new fr({numTouches:1,numTaps:1}),this._zoomRate=1,this.reset();}setZoomRate(e){this._zoomRate=null!=e?e:1;}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset();}touchstart(e,t,i){if(!this._swipePoint)if(this._tapTime){const o=t[0],a=e.timeStamp-this._tapTime<500,r=this._tapPoint.dist(o)<30;a&&r?i.length>0&&(this._swipePoint=o,this._swipeTouch=i[0].identifier):this.reset();}else this._tap.touchstart(e,t,i);}touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const o=t[0],a=o.y-this._swipePoint.y;return this._swipePoint=o,e.preventDefault(),this._active=!0,{zoomDelta:a/128*this._zoomRate}}}else this._tap.touchmove(e,t,i);}touchend(e,t,i){if(this._tapTime)this._swipePoint&&0===i.length&&this.reset();else {const o=this._tap.touchend(e,t,i);o&&(this._tapTime=e.timeStamp,this._tapPoint=o);}}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Vr{constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i;}enable(e){this._inertiaOptions=e||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan");}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan");}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Wr{constructor(e,t,i,o){this._pitchWithRotate=e.pitchWithRotate,this._rollEnabled=e.rollEnabled,this._mouseRotate=t,this._mousePitch=i,this._mouseRoll=o;}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable(),this._rollEnabled&&this._mouseRoll.enable();}disable(){this._mouseRotate.disable(),this._mousePitch.disable(),this._mouseRoll.disable();}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())&&(!this._rollEnabled||this._mouseRoll.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()||this._mouseRoll.isActive()}}class qr{constructor(e,t,i,o){this._el=e,this._touchZoom=t,this._touchRotate=i,this._tapDragZoom=o,this._rotationDisabled=!1,this._enabled=!0;}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate");}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate");}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}setZoomRate(e){this._touchZoom.setZoomRate(e),this._tapDragZoom.setZoomRate(e);}setZoomThreshold(e){this._touchZoom.setZoomThreshold(e);}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable();}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();}}class $r{constructor(e,t){this._bypassKey=navigator.userAgent.includes("Mac")?"metaKey":"ctrlKey",this._map=e,this._options=t,this._enabled=!1;}isActive(){return !1}reset(){}_setupUI(){if(this._container)return;const e=this._map.getCanvasContainer();e.classList.add("maplibregl-cooperative-gestures"),this._container=d.create("div","maplibregl-cooperative-gesture-screen",e);let t=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");"metaKey"===this._bypassKey&&(t=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));const i=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),o=document.createElement("div");o.className="maplibregl-desktop-message",o.textContent=t,this._container.appendChild(o);const a=document.createElement("div");a.className="maplibregl-mobile-message",a.textContent=i,this._container.appendChild(a),this._container.setAttribute("aria-hidden","true");}_destroyUI(){this._container&&(this._container.remove(),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container;}enable(){this._setupUI(),this._enabled=!0;}disable(){this._enabled=!1,this._destroyUI();}isEnabled(){return this._enabled}isBypassed(e){return e[this._bypassKey]}notifyGestureBlocked(e,i){this._enabled&&(this._map.fire(new t.n("cooperativegestureprevented",{gestureType:e,originalEvent:i})),this._container.classList.add("maplibregl-show"),setTimeout((()=>{this._container.classList.remove("maplibregl-show");}),100));}}const Hr=e=>e.zoom||e.drag||e.roll||e.pitch||e.rotate;class Xr extends t.n{}function Kr(e){var t;return (null===(t=e.panDelta)||void 0===t?void 0:t.mag())||e.zoomDelta||e.bearingDelta||e.pitchDelta||e.rollDelta}class Yr{get _ownerDocument(){var e;return (null===(e=this._el)||void 0===e?void 0:e.ownerDocument)||document}get _ownerWindow(){var e,t;return (null===(t=null===(e=this._el)||void 0===e?void 0:e.ownerDocument)||void 0===t?void 0:t.defaultView)||window}constructor(e,i){this.handleWindowEvent=e=>{this.handleEvent(e,`${e.type}Window`);},this.handleEvent=(e,i)=>{if("blur"===e.type)return void this.stop(!0);this._updatingCamera=!0;const o="renderFrame"===e.type?void 0:e,a={needsRenderFrame:!1},r={},s={};for(const{handlerName:n,handler:l,allowed:c}of this._handlers){if(!l.isEnabled())continue;let h;if(this._blockedByActive(s,c,n))l.reset();else if(l[i||e.type]){if(t.cz(e,i||e.type)){const t=d.mousePos(this._map.getCanvas(),e);h=l[i||e.type](e,t);}else if(t.cA(e,i||e.type)){const t=this._getMapTouches(e.touches),o=d.touchPos(this._map.getCanvas(),t);h=l[i||e.type](e,o,t);}else t.cB(i||e.type)||(h=l[i||e.type](e));this.mergeHandlerResult(a,r,h,n,o),(null==h?void 0:h.needsRenderFrame)&&this._triggerRenderFrame();}(h||l.isActive())&&(s[n]=l);}const n={};for(const e in this._previousActiveHandlers)s[e]||(n[e]=o);this._previousActiveHandlers=s,(Object.keys(n).length||Kr(a))&&(this._changes.push([a,r,n]),this._triggerRenderFrame()),(Object.keys(s).length||Kr(a))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:l}=a;l&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],l(this._map));},this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new ar(e),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(i);const o=this._el;this._listeners=[[o,"touchstart",{passive:!0}],[o,"touchmove",{passive:!1}],[o,"touchend",void 0],[o,"touchcancel",void 0],[o,"mousedown",void 0],[o,"mousemove",void 0],[o,"mouseup",void 0],[this._ownerDocument,"mousemove",{capture:!0}],[this._ownerDocument,"mouseup",void 0],[o,"mouseover",void 0],[o,"mouseout",void 0],[o,"dblclick",void 0],[o,"click",void 0],[o,"keydown",{capture:!1}],[o,"keyup",void 0],[o,"wheel",{passive:!1}],[o,"contextmenu",void 0],[this._ownerWindow,"blur",void 0]];for(const[e,t,i]of this._listeners)e.addEventListener(t,e===this._ownerDocument?this.handleWindowEvent:this.handleEvent,i);}destroy(){for(const[e,t,i]of this._listeners)e.removeEventListener(t,e===this._ownerDocument?this.handleWindowEvent:this.handleEvent,i);}_addDefaultHandlers(e){const i=this._map,o=i.getCanvasContainer();this._add("mapEvent",new hr(i,e));const a=i.boxZoom=new _r(i,e);this._add("boxZoom",a),e.interactive&&e.boxZoom&&a.enable();const r=i.cooperativeGestures=new $r(i,e.cooperativeGestures);this._add("cooperativeGestures",r),e.cooperativeGestures&&r.enable();const s=new gr(i),n=new Ur(i);i.doubleClickZoom=new Zr(n,s),this._add("tapZoom",s),this._add("clickZoom",n),e.interactive&&e.doubleClickZoom&&i.doubleClickZoom.enable();const l=new Gr;this._add("tapDragZoom",l);const c=i.touchPitch=new Lr(i);this._add("touchPitch",c),e.interactive&&e.touchPitch&&i.touchPitch.enable(e.touchPitch);const h=()=>i.project(i.getCenter()),u=function({enable:e,clickTolerance:i,aroundCenter:o=!0,minPixelCenterThreshold:a=100,rotateDegreesPerPixelMoved:r=.8},s){const n=new wr({checkCorrectEvent:e=>0===e.button&&e.ctrlKey||2===e.button&&!e.ctrlKey});return new vr({clickTolerance:i,move:(e,i)=>{const n=s();if(o&&Math.abs(n.y-e.y)>a)return {bearingDelta:t.cx(new t.P(e.x,i.y),i,n)};let l=(i.x-e.x)*r;return o&&i.y0===e.button&&e.ctrlKey||2===e.button});return new vr({clickTolerance:t,move:(e,t)=>({pitchDelta:(t.y-e.y)*i}),moveStateManager:o,enable:e,assignEvents:Cr})}(e),_=function({enable:e,clickTolerance:t,rollDegreesPerPixelMoved:i=.3},o){const a=new wr({checkCorrectEvent:e=>2===e.button&&e.ctrlKey});return new vr({clickTolerance:t,move:(e,t)=>{const a=o();let r=(t.x-e.x)*i;return t.y0===e.button&&!e.ctrlKey});return new vr({clickTolerance:t,move:(e,t)=>({around:t,panDelta:t.sub(e)}),activateOnStart:!0,moveStateManager:i,enable:e,assignEvents:Cr})}(e),m=new Mr(e,i);i.dragPan=new Vr(o,p,m),this._add("mousePan",p),this._add("touchPan",m,["touchZoom","touchRotate"]),e.interactive&&e.dragPan&&i.dragPan.enable(e.dragPan);const f=new Dr,g=new zr;i.touchZoomRotate=new qr(o,g,f,l),this._add("touchRotate",f,["touchPan","touchZoom"]),this._add("touchZoom",g,["touchPan","touchRotate"]),e.interactive&&e.touchZoomRotate&&i.touchZoomRotate.enable(e.touchZoomRotate),this._add("blockableMapEvent",new ur(i));const v=i.scrollZoom=new Nr(i,(()=>this._triggerRenderFrame()));this._add("scrollZoom",v,["mousePan"]),e.interactive&&e.scrollZoom&&i.scrollZoom.enable(e.scrollZoom);const x=i.keyboard=new kr(i);this._add("keyboard",x),e.interactive&&e.keyboard&&i.keyboard.enable();}_add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),this._handlersById[e]=t;}stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[];}}isActive(){for(const{handler:e}of this._handlers)if(e.isActive())return !0;return !1}isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return !!this._eventsInProgress.rotate}isMoving(){return Boolean(Hr(this._eventsInProgress))||this.isZooming()}_blockedByActive(e,t,i){for(const o in e)if(o!==i&&!(null==t?void 0:t.includes(o)))return !0;return !1}_getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.target)&&t.push(i);return t}mergeHandlerResult(e,i,o,a,r){if(!o)return;t.e(e,o);const s={handlerName:a,originalEvent:o.originalEvent||r};void 0!==o.zoomDelta&&(i.zoom=s),void 0!==o.panDelta&&(i.drag=s),void 0!==o.rollDelta&&(i.roll=s),void 0!==o.pitchDelta&&(i.pitch=s),void 0!==o.bearingDelta&&(i.rotate=s);}_applyChanges(){const e={},i={},o={};for(const[a,r,s]of this._changes)a.panDelta&&(e.panDelta=(e.panDelta||new t.P(0,0))._add(a.panDelta)),a.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+a.zoomDelta),a.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+a.bearingDelta),a.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+a.pitchDelta),a.rollDelta&&(e.rollDelta=(e.rollDelta||0)+a.rollDelta),void 0!==a.around&&(e.around=a.around),void 0!==a.pinchAround&&(e.pinchAround=a.pinchAround),a.noInertia&&(e.noInertia=a.noInertia),t.e(i,r),t.e(o,s);this._updateMapTransform(e,i,o),this._changes=[];}_updateMapTransform(e,t,i){const o=this._map,a=o._getTransformForUpdate(),r=o.terrain;if(!(Kr(e)||r&&this._terrainMovement))return void this._fireEvents(t,i,!0);o._stop(!0);let{panDelta:s,zoomDelta:n,bearingDelta:l,pitchDelta:c,rollDelta:h,around:u,pinchAround:d}=e;void 0!==d&&(u=d),u||(u=o.transform.centerPoint),r&&!a.isPointOnMapSurface(u)&&(u=a.centerPoint);const _={panDelta:s,zoomDelta:n,rollDelta:h,pitchDelta:c,bearingDelta:l,around:u};this._map.cameraHelper.useGlobeControls&&!a.isPointOnMapSurface(u)&&(u=a.centerPoint);const p=u.distSqr(a.centerPoint)<.01?a.center:a.screenPointToLocation(s?u.sub(s):u);this._handleMapControls({terrain:r,tr:a,deltasForHelper:_,preZoomAroundLoc:p,combinedEventsInProgress:t,panDelta:s}),o._applyUpdatedTransform(a),this._map._update(),e.noInertia||this._inertia.record(e),this._fireEvents(t,i,!0);}_handleMapControls({terrain:e,tr:t,deltasForHelper:i,preZoomAroundLoc:o,combinedEventsInProgress:a,panDelta:r}){const s=this._map.cameraHelper;if(s.handleMapControlsRollPitchBearingZoom(i,t),e)return s.useGlobeControls?(this._terrainMovement||!a.drag&&!a.zoom||(this._terrainMovement=!0,this._map._elevationFreeze=!0),void s.handleMapControlsPan(i,t,o)):this._terrainMovement||!a.drag&&!a.zoom?void(a.drag&&this._terrainMovement&&r?t.setCenter(t.screenPointToLocation(t.centerPoint.sub(r))):s.handleMapControlsPan(i,t,o)):(this._terrainMovement=!0,this._map._elevationFreeze=!0,void s.handleMapControlsPan(i,t,o));s.handleMapControlsPan(i,t,o);}_fireEvents(e,i,o){const a=Hr(this._eventsInProgress),r=Hr(e),s={};for(const t in e){const{originalEvent:i}=e[t];this._eventsInProgress[t]||(s[`${t}start`]=i),this._eventsInProgress[t]=e[t];}!a&&r&&this._fireEvent("movestart",r.originalEvent);for(const e in s)this._fireEvent(e,s[e]);r&&this._fireEvent("move",r.originalEvent);for(const t in e){const{originalEvent:i}=e[t];this._fireEvent(t,i);}const l={};let c;for(const e in this._eventsInProgress){const{handlerName:t,originalEvent:o}=this._eventsInProgress[e];this._handlersById[t].isActive()||(delete this._eventsInProgress[e],c=i[t]||o,l[`${e}end`]=c);}for(const e in l)this._fireEvent(e,l[e]);const h=Hr(this._eventsInProgress),u=(a||r)&&!h;if(u&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;const e=this._map._getTransformForUpdate();this._map.getCenterClampedToGround()&&e.recalculateZoomAndCenter(this._map.terrain),this._map._applyUpdatedTransform(e);}if(o&&u){this._updatingCamera=!0;const e=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=e=>0!==e&&-this._bearingSnap{delete this._frameId,this.handleEvent(new Xr("renderFrame",{timeStamp:e})),this._applyChanges();}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame());}}class Qr extends t.E{constructor(e,t,i){super(),this._renderFrameCallback=()=>{const e=Math.min((c()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();},this._moving=!1,this._zooming=!1,this.transform=e,this._bearingSnap=i.bearingSnap,this._zoomSnap=i.zoomSnap,this.cameraHelper=t,this.on("moveend",(()=>{delete this._requestedCameraState;}));}migrateProjection(e,t){e.apply(this.transform,!0),this.transform=e,this.cameraHelper=t;}getCenter(){return new t.W(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}getCenterElevation(){return this.transform.elevation}setCenterElevation(e,t){return this.jumpTo({elevation:e},t),this}getCenterClampedToGround(){return this._centerClampedToGround}setCenterClampedToGround(e){this._centerClampedToGround=e;}panBy(e,i,o){return e=t.P.convert(e).mult(-1),this.panTo(this.transform.center,t.e({offset:e},i),o)}panTo(e,i,o){return this.easeTo(t.e({center:e},i),o)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(e,i,o){return this.easeTo(t.e({zoom:e},i),o)}zoomIn(e,i){return this.zoomTo(t.cw(this.getZoom()+1,this._zoomSnap),e,i),this}zoomOut(e,i){return this.zoomTo(t.cw(this.getZoom()-1,this._zoomSnap),e,i),this}getVerticalFieldOfView(){return this.transform.fov}setVerticalFieldOfView(e,i){return e!=this.transform.fov&&(this.transform.setFov(e),this.fire(new t.n("movestart",i)).fire(new t.n("move",i)).fire(new t.n("moveend",i))),this}getBearing(){return this.transform.bearing}setZoomSnap(e){return this._zoomSnap=e,this}getZoomSnap(){return this._zoomSnap}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(e,i,o){return this.easeTo(t.e({bearing:e},i),o)}resetNorth(e,i){return this.rotateTo(0,t.e({duration:1e3},e),i),this}resetNorthPitch(e,i){return this.easeTo(t.e({bearing:0,pitch:0,roll:0,duration:1e3},e),i),this}snapToNorth(e,t){return Math.abs(this.getBearing()){f.easeFunc(t),this.terrain&&!e.freezeElevation&&this._updateElevation(t),this._applyUpdatedTransform(o),this._fireMoveEvents(i);}),(t=>{this.terrain&&e.freezeElevation&&this._finalizeElevation(),this._afterEase(i,t);}),e),this}_prepareEase(e,i,o={}){this._moving=!0,i||o.moving||this.fire(new t.n("movestart",e)),this._zooming&&!o.zooming&&this.fire(new t.n("zoomstart",e)),this._rotating&&!o.rotating&&this.fire(new t.n("rotatestart",e)),this._pitching&&!o.pitching&&this.fire(new t.n("pitchstart",e)),this._rolling&&!o.rolling&&this.fire(new t.n("rollstart",e));}_prepareElevation(e){this._elevationCenter=e,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(e,this.transform.tileZoom),this._elevationFreeze=!0;}_updateElevation(e){void 0!==this._elevationStart&&void 0!==this._elevationCenter||this._prepareElevation(this.transform.center),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom));const i=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(e<1&&i!==this._elevationTarget){const t=this._elevationTarget-this._elevationStart;this._elevationStart+=e*(t-(i-(t*e+this._elevationStart))/(1-e)),this._elevationTarget=i;}this.transform.setElevation(t.H.number(this._elevationStart,this._elevationTarget,e));}_finalizeElevation(){this._elevationFreeze=!1,this.getCenterClampedToGround()&&this.transform.recalculateZoomAndCenter(this.terrain);}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(e){if(!this.terrain&&e.elevation>=0&&e.pitch<=90)return {};const t=e.getCameraLngLat(),i=e.getCameraAltitude(),o=this.terrain?this.terrain.getElevationForLngLatZoom(t,e.zoom):0;if(ithis._elevateCameraIfInsideTerrain(e))),this.transformCameraUpdate&&t.push((e=>this.transformCameraUpdate(e))),!t.length)return;const i=e.clone();for(const e of t){const t=i.clone(),{center:o,zoom:a,roll:r,pitch:s,bearing:n,elevation:l}=e(t);o&&t.setCenter(o),void 0!==l&&t.setElevation(l),void 0!==a&&t.setZoom(a),void 0!==r&&t.setRoll(r),void 0!==s&&t.setPitch(s),void 0!==n&&t.setBearing(n),i.apply(t,!1);}this.transform.apply(i,!1);}_fireMoveEvents(e){this.fire(new t.n("move",e)),this._zooming&&this.fire(new t.n("zoom",e)),this._rotating&&this.fire(new t.n("rotate",e)),this._pitching&&this.fire(new t.n("pitch",e)),this._rolling&&this.fire(new t.n("roll",e));}_afterEase(e,i){if(this._easeId&&i&&this._easeId===i)return;delete this._easeId;const o=this._zooming,a=this._rotating,r=this._pitching,s=this._rolling;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._rolling=!1,this._padding=!1,o&&this.fire(new t.n("zoomend",e)),a&&this.fire(new t.n("rotateend",e)),r&&this.fire(new t.n("pitchend",e)),s&&this.fire(new t.n("rollend",e)),this.fire(new t.n("moveend",e));}flyTo(e,i){if(!e.essential&&n.prefersReducedMotion){const o=t.V(e,["center","zoom","bearing","pitch","roll","elevation","padding"]);return this.jumpTo(o,i)}this.stop(),"zoom"in(e=t.e({offset:[0,0],speed:1.2,curve:1.42,easing:t.cy},e))&&this._zoomSnap&&(e.zoom=t.cw(e.zoom,this._zoomSnap));const o=this._getTransformForUpdate(),a=o.bearing,r=o.pitch,s=o.roll,l=o.padding,c="bearing"in e?this._normalizeBearing(e.bearing,a):a,h="pitch"in e?+e.pitch:r,u="roll"in e?this._normalizeBearing(e.roll,s):s,d="padding"in e?e.padding:o.padding,_=t.P.convert(e.offset);let p=o.centerPoint.add(_);const m=o.screenPointToLocation(p),f=this.cameraHelper.handleFlyTo(o,{bearing:c,pitch:h,roll:u,padding:d,locationAtOffset:m,offsetAsPoint:_,center:e.center,minZoom:e.minZoom,zoom:e.zoom});let g=e.curve;const v=Math.max(o.width,o.height),x=v/f.scaleOfZoom,b=f.pixelPathLength;"number"==typeof f.scaleOfMinZoom&&(g=Math.sqrt(v/f.scaleOfMinZoom/b*2));const y=g*g;function w(e){const t=(x*x-v*v+(e?-1:1)*y*y*b*b)/(2*(e?x:v)*y*b);return Math.log(Math.sqrt(t*t+1)-t)}function T(e){return (Math.exp(e)-Math.exp(-e))/2}function P(e){return (Math.exp(e)+Math.exp(-e))/2}const C=w(!1);let M=function(e){return P(C)/P(C+g*e)},I=function(e){return v*((P(C)*(T(t=C+g*e)/P(t))-T(C))/y)/b;var t;},E=(w(!0)-C)/g;if(Math.abs(b)<2e-6||!isFinite(E)){if(Math.abs(v-x)<1e-6)return this.easeTo(e,i);const t=x0,M=e=>Math.exp(t*g*e);}return e.duration="duration"in e?+e.duration:1e3*E/("screenSpeed"in e?+e.screenSpeed/g:+e.speed),e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=a!==c,this._pitching=h!==r,this._rolling=u!==s,this._padding=!o.isPaddingEqual(d),this._prepareEase(i,!1),this.terrain&&this._prepareElevation(f.targetCenter),this._ease((n=>{const m=n*E,g=1/M(m),v=I(m);this._rotating&&o.setBearing(t.H.number(a,c,n)),this._pitching&&o.setPitch(t.H.number(r,h,n)),this._rolling&&o.setRoll(t.H.number(s,u,n)),this._padding&&(o.interpolatePadding(l,d,n),p=o.centerPoint.add(_)),f.easeFunc(n,g,v,p),this.terrain&&!e.freezeElevation&&this._updateElevation(n),this._applyUpdatedTransform(o),this._fireMoveEvents(i);}),(()=>{this.terrain&&e.freezeElevation&&this._finalizeElevation(),this._afterEase(i);}),e),this}isEasing(){return !!this._easeFrameId}stop(){return this._stop()}_stop(e,t){var i;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const e=this._onEaseEnd;delete this._onEaseEnd,e.call(this,t);}return e||null===(i=this.handlers)||void 0===i||i.stop(!1),this}_ease(e,t,i){!1===i.animate||0===i.duration?(e(1),t()):(this._easeStart=c(),this._easeOptions=i,this._onEaseFrame=e,this._onEaseEnd=t,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));}_normalizeBearing(e,i){e=t.X(e,-180,180);const o=Math.abs(e-i);return Math.abs(e-360-i)MapLibre'};class es{constructor(e=Jr){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")));},this._updateData=e=>{!e||"metadata"!==e.sourceDataType&&"visibility"!==e.sourceDataType&&"style"!==e.dataType&&"terrain"!==e.type||this._updateAttributions();},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1===this._compact?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"));},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show");},this.options=e;}getDefaultPosition(){return "bottom-right"}onAdd(e){return this._map=e,this._compact=this.options.compact,this._container=d.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=d.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=d.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){this._container.remove(),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0;}_setElementTitle(e,t){const i=this._map._getUIString(`AttributionControl.${t}`);e.title=i,e.setAttribute("aria-label",i);}_updateAttributions(){if(!this._map.style)return;let e=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=e.concat(this.options.customAttribution.map((e=>"string"!=typeof e?"":e))):"string"==typeof this.options.customAttribution&&e.push(this.options.customAttribution)),this._map.style.stylesheet){const e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id;}const t=this._map.style.tileManagers;for(const i in t){const o=t[i];if(o.used||o.usedForTerrain){const t=o.getSource();t.attribution&&!e.includes(t.attribution)&&e.push(t.attribution);}}e=e.filter((e=>String(e).trim())),e.sort(((e,t)=>e.length-t.length)),e=e.filter(((t,i)=>{for(let o=i+1;o{const e=this._container.children;if(e.length){const t=e[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1!==this._compact&&t.classList.add("maplibregl-compact"):t.classList.remove("maplibregl-compact");}},this.options=e;}getDefaultPosition(){return "bottom-left"}onAdd(e){var t;this._map=e,this._compact=null===(t=this.options)||void 0===t?void 0:t.compact,this._container=d.create("div","maplibregl-ctrl");const i=d.create("a","maplibregl-ctrl-logo");return i.target="_blank",i.rel="noopener nofollow",i.href="https://maplibre.org/",i.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),i.setAttribute("rel","noopener nofollow"),this._container.appendChild(i),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0;}}class is{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;}add(e){const t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){const t=this._currentlyRunning,i=t?this._queue.concat(t):this._queue;for(const t of i)if(t.id===e)return void(t.cancelled=!0)}run(e=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");const t=this._currentlyRunning=this._queue;this._queue=[];for(const i of t)if(!i.cancelled&&(i.callback(e),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1;}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];}}var os=t.aS([{name:"a_pos3d",type:"Int16",components:3}]);class as extends t.E{constructor(e){super(),this._lastTilesetChange=c(),this.tileManager=e,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.deltaZoom=1,this.tileSize=e._source.tileSize*2**this.deltaZoom,e.usedForTerrain=!0,e.tileSize=this.tileSize;}destruct(){this.tileManager.usedForTerrain=!1,this.tileManager.tileSize=null;}getSource(){return this.tileManager._source}update(e,i){this.tileManager.update(e,i),this._renderableTilesKeys=[];const o={};for(const a of Me(e,{tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:i,calculateTileZoom:this.tileManager._source.calculateTileZoom}))o[a.key]=!0,this._renderableTilesKeys.push(a.key),this._tiles[a.key]||(a.terrainRttPosMatrix32f=new Float64Array(16),t.c7(a.terrainRttPosMatrix32f,0,t.a6,t.a6,0,0,1),this._tiles[a.key]=new de(a,this.tileSize),this._lastTilesetChange=c());for(const e in this._tiles)o[e]||delete this._tiles[e];}freeRtt(e){for(const t in this._tiles){const i=this._tiles[t];(!e||i.tileID.equals(e)||i.tileID.isChildOf(e)||e.isChildOf(i.tileID))&&(i.rtt=[]);}}getRenderableTiles(){return this._renderableTilesKeys.map((e=>this.getTileByID(e)))}getTileByID(e){return this._tiles[e]}getTerrainCoords(e,t){return t?this._getTerrainCoordsForTileRanges(e,t):this._getTerrainCoordsForRegularTile(e)}_getTerrainCoordsForRegularTile(e){const i={};for(const o of this._renderableTilesKeys){const a=this._tiles[o].tileID,r=e.clone(),s=t.bj();if(a.canonical.equals(e.canonical))t.c7(s,0,t.a6,t.a6,0,0,1);else if(a.canonical.isChildOf(e.canonical)){const i=a.canonical.z-e.canonical.z,o=a.canonical.x-(a.canonical.x>>i<>i<>i;t.c7(s,0,n,n,0,0,1),t.Q(s,s,[-o*n,-r*n,0]);}else {if(!e.canonical.isChildOf(a.canonical))continue;{const i=e.canonical.z-a.canonical.z,o=e.canonical.x-(e.canonical.x>>i<>i<>i;t.c7(s,0,t.a6,t.a6,0,0,1),t.Q(s,s,[o*n,r*n,0]),t.S(s,s,[1/2**i,1/2**i,0]);}}r.terrainRttPosMatrix32f=new Float32Array(s),i[o]=r;}return i}_getTerrainCoordsForTileRanges(e,i){const o={};for(const a of this._renderableTilesKeys){const r=this._tiles[a].tileID;if(!this._isWithinTileRanges(r,i))continue;const s=e.clone(),n=t.bj();if(r.canonical.z===e.canonical.z){const i=e.canonical.x-r.canonical.x+e.wrap*(1<e.canonical.z){const i=r.canonical.z-e.canonical.z,o=r.canonical.x-(r.canonical.x>>i<>i<>i),l=e.canonical.y-(r.canonical.y>>i),c=t.a6>>i;t.c7(n,0,c,c,0,0,1),t.Q(n,n,[-o*c+s*t.a6,-a*c+l*t.a6,0]);}else {const i=e.canonical.z-r.canonical.z,o=e.canonical.x-(e.canonical.x>>i<>i<>i)-r.canonical.x,l=(e.canonical.y>>i)-r.canonical.y,c=t.a6<a.maxzoom&&(r=a.maxzoom),r=a.minzoom&&!(null==s?void 0:s.dem);)s=this.findTileInCaches(e.scaledTo(r--).key);return s}findTileInCaches(e){let t=this.tileManager.getTileByID(e);return t||(t=this.tileManager._outOfViewCache.getByKey(e),t)}anyTilesAfterTime(e=Date.now()){return this._lastTilesetChange>=e}_isWithinTileRanges(e,t){const i=t[e.canonical.z];return !!i&&(e.wrap>i.minWrap||e.wrap=i.minTileXWrapped&&e.canonical.x<=i.maxTileXWrapped&&e.canonical.y>=i.minTileY&&e.canonical.y<=i.maxTileY)}}class rs{constructor(e,t,i){this._meshCache={},this.painter=e,this.tileManager=new as(t),this.options=i,this.exaggeration="number"==typeof i.exaggeration?i.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024;}destroy(){this._fbo&&(this._fbo.destroy(),this._fbo=null),this._fboCoordsTexture&&(this._fboCoordsTexture.destroy(),this._fboCoordsTexture=null),this._fboDepthTexture&&(this._fboDepthTexture.destroy(),this._fboDepthTexture=null),this._emptyDemTexture&&(this._emptyDemTexture.destroy(),this._emptyDemTexture=null),this._emptyDepthTexture&&(this._emptyDepthTexture.destroy(),this._emptyDepthTexture=null),this._coordsTexture&&(this._coordsTexture.destroy(),this._coordsTexture=null);for(const e in this._meshCache)this._meshCache[e].destroy();this._meshCache={},this.tileManager.destruct();}getDEMElevation(e,i,o,a=t.a6){var r;const s=e.normalizeCoordinates(i,o,a);if(!s)return 0;const n=this.getTerrainData(s.tileID),l=null===(r=n.tile)||void 0===r?void 0:r.dem;if(!l)return 0;const c=t.cC([],[s.x/a*t.a6,s.y/a*t.a6],n.u_terrain_matrix),h=[c[0]*l.dim,c[1]*l.dim],u=Math.floor(h[0]),d=Math.floor(h[1]),_=h[0]-u,p=h[1]-d;return l.get(u,d)*(1-_)*(1-p)+l.get(u+1,d)*_*(1-p)+l.get(u,d+1)*(1-_)*p+l.get(u+1,d+1)*_*p}getElevationForLngLatZoom(e,i){if(!t.cD(i,e.wrap()))return 0;const{tileID:o,mercatorX:a,mercatorY:r}=this._getOverscaledTileIDFromLngLatZoom(e,i);return this.getElevation(o,a%t.a6,r%t.a6,t.a6)}getElevationForLngLat(e,t){const i=Me(t,{maxzoom:this.tileManager.maxzoom,minzoom:this.tileManager.minzoom,tileSize:512,terrain:this});let o=0;for(const e of i)e.canonical.z>o&&(o=Math.min(e.canonical.z,this.tileManager.maxzoom));return this.getElevationForLngLatZoom(e,o)}getElevation(e,i,o,a=t.a6){return this.getDEMElevation(e,i,o,a)*this.exaggeration}getTerrainData(e){var i,o;if(!this._emptyDemTexture){const e=this.painter.context,i=new t.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new t.T(e,i,e.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new t.T(e,new t.R({width:1,height:1}),e.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=t.ap([]);}const a=this.tileManager.getSourceTile(e,!0);if((null==a?void 0:a.dem)&&(!a.demTexture||a.needsTerrainPrepare)){const e=this.painter.context;a.demTexture=this.painter.getTileTexture(a.dem.stride),a.demTexture?a.demTexture.update(a.dem.getPixels(),{premultiply:!1}):a.demTexture=new t.T(e,a.dem.getPixels(),e.gl.RGBA,{premultiply:!1}),a.demTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),a.needsTerrainPrepare=!1;}const r=a&&a.toString()+a.tileID.key+e.key;if(r&&!this._demMatrixCache[r]){const i=this.tileManager.getSource().maxzoom;let o=e.canonical.z-a.tileID.canonical.z;e.overscaledZ>e.canonical.z&&(e.canonical.z>=i?o=e.canonical.z-i:t.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));const s=e.canonical.x-(e.canonical.x>>o<>o<>8<<4|e>>8,i[t+3]=0;const o=new t.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(i.buffer)),a=new t.T(e,o,e.gl.RGBA,{premultiply:!1});return a.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._coordsTexture=a,a}pointCoordinate(e){this.painter.maybeDrawDepth(!0),this.painter.maybeDrawCoords();const i=new Uint8Array(4),o=this.painter.context,a=o.gl,r=Math.round(e.x*this.painter.pixelRatio/devicePixelRatio),s=Math.round(e.y*this.painter.pixelRatio/devicePixelRatio),n=Math.round(this.painter.height/devicePixelRatio);o.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),a.readPixels(r,n-s-1,1,1,a.RGBA,a.UNSIGNED_BYTE,i),o.bindFramebuffer.set(null);const l=i[0]+(i[2]>>4<<8),c=i[1]+((15&i[2])<<8),h=this.coordsIndex[255-i[3]],u=h&&this.tileManager.getTileByID(h);if(!u)return null;const d=this._coordsTextureSize,_=(1<0,a=o&&0===e.canonical.y,r=o&&e.canonical.y===(1<e.id!==t)),this._recentlyUsed.push(e.id);}stampObject(e){e.stamp=++this._stamp;}getOrCreateFreeObject(){for(const e of this._recentlyUsed)if(!this._objects[e].inUse)return this._objects[e];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");const e=this._createObject(this._objects.length);return this._objects.push(e),e}freeObject(e){e.inUse=!1;}freeAllObjects(){for(const e of this._objects)this.freeObject(e);}isFull(){return !(this._objects.length!e.inUse))}}const ns={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0,"color-relief":!0};class ls{constructor(e,t){this.painter=e,this.terrain=t,this.pool=new ss(e.context,30,t.tileManager.tileSize*t.qualityFactor);}destruct(){this.pool.destruct();}getTexture(e){return this.pool.getObjectForId(e.rtt[this._stacks.length-1].id).texture}prepareForRender(e,t){var i,o,a;this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.tileManager.getRenderableTiles(),this._renderableLayerIds=e._order.filter((i=>!e._layers[i].isHidden(t))),this._coordsAscending={};for(const t in e.tileManagers){this._coordsAscending[t]={};const i=e.tileManagers[t].getVisibleCoordinates(),o=e.tileManagers[t].getSource(),r=o instanceof te?o.terrainTileRanges:null;for(const e of i){const i=this.terrain.tileManager.getTerrainCoords(e,r);for(const e in i)(a=this._coordsAscending[t])[e]||(a[e]=[]),this._coordsAscending[t][e].push(i[e]);}}this._rttFingerprints={};for(const t of e._order){const a=e._layers[t],r=a.source;if(ns[a.type]&&!this._rttFingerprints[r]){this._rttFingerprints[r]={};const t=null!==(o=null===(i=e.tileManagers[r])||void 0===i?void 0:i.getState().revision)&&void 0!==o?o:0;for(const e in this._coordsAscending[r])this._rttFingerprints[r][e]=`${this._coordsAscending[r][e].map((e=>e.key)).sort().join()}#${t}`;}}for(const e of this._renderableTiles)for(const t in this._rttFingerprints){const i=this._rttFingerprints[t][e.tileID.key];i&&i!==e.rttFingerprint[t]&&(e.rtt=[]);}}renderLayer(e,i){if(e.isHidden(this.painter.transform.zoom))return !1;const o=Object.assign(Object.assign({},i),{isRenderingToTexture:!0}),a=e.type,r=this.painter,s=this._renderableLayerIds[this._renderableLayerIds.length-1]===e.id;if(ns[a]&&(this._prevType&&ns[this._prevType]||this._stacks.push([]),this._prevType=a,this._stacks[this._stacks.length-1].push(e.id),!s))return !0;if(ns[this._prevType]||ns[a]&&s){this._prevType=a;const e=this._stacks.length-1,i=this._stacks[e]||[];for(const a of this._renderableTiles){if(this.pool.isFull()&&(qa(this.painter,this.terrain,this._rttTiles,o),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(a),a.rtt[e]){const t=this.pool.getObjectForId(a.rtt[e].id);if(t.stamp===a.rtt[e].stamp){this.pool.useObject(t);continue}}const s=this.pool.getOrCreateFreeObject();this.pool.useObject(s),this.pool.stampObject(s),a.rtt[e]={id:s.id,stamp:s.stamp},r.context.bindFramebuffer.set(s.fbo.framebuffer),r.context.clear({color:t.bo.transparent,stencil:0}),r.currentStencilSource=void 0;for(const e of i){const t=r.style._layers[e],i=t.source?this._coordsAscending[t.source][a.tileID.key]:[a.tileID];r.context.viewport.set([0,0,s.fbo.width,s.fbo.height]),r._renderTileClippingMasks(t,i,!0),r.renderLayer(r,r.style.tileManagers[t.source],t,i,o),t.source&&(a.rttFingerprint[t.source]=this._rttFingerprints[t.source][a.tileID.key]);}}return qa(this.painter,this.terrain,this._rttTiles,o),this._rttTiles=[],this.pool.freeAllObjects(),ns[a]}return !1}}const cs={"AttributionControl.ToggleAttribution":"Toggle attribution","AttributionControl.MapFeedback":"Map feedback","FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"MapLibre logo","Map.Title":"Map","Marker.Title":"Map marker","NavigationControl.ResetBearing":"Drag to rotate map, click to reset north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","Popup.Close":"Close popup","ScaleControl.Feet":"ft","ScaleControl.Meters":"m","ScaleControl.Kilometers":"km","ScaleControl.Miles":"mi","ScaleControl.NauticalMiles":"nm","GlobeControl.Enable":"Enable globe","GlobeControl.Disable":"Disable globe","TerrainControl.Enable":"Enable terrain","TerrainControl.Disable":"Disable terrain","CooperativeGesturesHandler.WindowsHelpText":"Use Ctrl + scroll to zoom the map","CooperativeGesturesHandler.MacHelpText":"Use ⌘ + scroll to zoom the map","CooperativeGesturesHandler.MobileHelpText":"Use two fingers to move the map"},hs=i,us={hash:!1,interactive:!0,bearingSnap:7,zoomSnap:0,attributionControl:Jr,maplibreLogo:!1,refreshExpiredTiles:!0,canvasContextAttributes:{antialias:!1,preserveDrawingBuffer:!1,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,desynchronized:!1,contextType:void 0},scrollZoom:!0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,trackResize:!0,center:[0,0],elevation:0,zoom:0,bearing:0,pitch:0,roll:0,renderWorldCopies:!0,maxTileCacheSize:null,maxTileCacheZoomLevels:t.c.MAX_TILE_CACHE_ZOOM_LEVELS,transformRequest:null,transformCameraUpdate:null,transformConstrain:null,fadeDuration:300,crossSourceCollisions:!0,clickTolerance:3,localIdeographFontFamily:"sans-serif",pitchWithRotate:!0,rollEnabled:!1,reduceMotion:void 0,validateStyle:!0,maxCanvasSize:[4096,4096],cancelPendingTileRequestsWhileZooming:!0,centerClampedToGround:!0,experimentalZoomLevelsToOverscale:void 0,anisotropicFilterPitch:20};let ds=class extends Qr{get _ownerWindow(){var e,t;return (null===(t=null===(e=this._container)||void 0===e?void 0:e.ownerDocument)||void 0===t?void 0:t.defaultView)||window}constructor(e){var i,o,a;const r=Object.assign(Object.assign(Object.assign({},us),e),{canvasContextAttributes:Object.assign(Object.assign({},us.canvasContextAttributes),e.canvasContextAttributes)});if(null!=r.minZoom&&null!=r.maxZoom&&r.minZoom>r.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=r.minPitch&&null!=r.maxPitch&&r.minPitch>r.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=r.minPitch&&r.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=r.maxPitch&&r.maxPitch>180)throw new Error("maxPitch must be less than or equal to 180");const s=new Xt,l=new Jt;void 0!==r.minZoom&&s.setMinZoom(r.minZoom),void 0!==r.maxZoom&&s.setMaxZoom(r.maxZoom),void 0!==r.minPitch&&s.setMinPitch(r.minPitch),void 0!==r.maxPitch&&s.setMaxPitch(r.maxPitch),void 0!==r.renderWorldCopies&&s.setRenderWorldCopies(r.renderWorldCopies),null!==r.transformConstrain&&s.setConstrainOverride(r.transformConstrain),super(s,l,{bearingSnap:r.bearingSnap,zoomSnap:r.zoomSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new is,this._controls=[],this._mapId=t.ad(),this._lostContextStyle={style:null,images:null},this._contextLost=e=>{if(e.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.painter.destroy(),this._lostContextStyle=this._getStyleAndImages(),this.style){for(const e of Object.values(this.style._layers))if("custom"===e.type&&console.warn(`Custom layer with id '${e.id}' cannot be restored after WebGL context loss. You will need to re-add it manually after context restoration.`),e._listeners)for(const[t]of Object.entries(e._listeners))console.warn(`Custom layer with id '${e.id}' had event listeners for event '${t}' which cannot be restored after WebGL context loss. You will need to re-add them manually after context restoration.`);this.style.destroy(),this.style=null,this.fire(new t.n("webglcontextlost",{originalEvent:e}));}else this.fire(new t.n("webglcontextlost",{originalEvent:e}));},this._contextRestored=e=>{this._lostContextStyle.style&&this.setStyle(this._lostContextStyle.style,{diff:!1}),this._lostContextStyle.images&&this.style&&(this.style.imageManager.images=this._lostContextStyle.images),this._lostContextStyle={style:null,images:null},this._setupPainter(),this.resize(),this._update(),this._resizeInternal(),this.fire(new t.n("webglcontextrestored",{originalEvent:e}));},this._onMapScroll=e=>{if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update();},this._interactive=r.interactive,this._maxTileCacheSize=r.maxTileCacheSize,this._maxTileCacheZoomLevels=r.maxTileCacheZoomLevels,this._canvasContextAttributes=Object.assign({},r.canvasContextAttributes),this._trackResize=!0===r.trackResize,this._bearingSnap=r.bearingSnap,this._zoomSnap=r.zoomSnap,this._centerClampedToGround=r.centerClampedToGround,this._refreshExpiredTiles=!0===r.refreshExpiredTiles,this._fadeDuration=r.fadeDuration,this._crossSourceCollisions=!0===r.crossSourceCollisions,this._collectResourceTiming=!0===r.collectResourceTiming,this._locale=Object.assign(Object.assign({},cs),r.locale),this._clickTolerance=r.clickTolerance,this._overridePixelRatio=r.pixelRatio,this._maxCanvasSize=r.maxCanvasSize,this._zoomLevelsToOverscale=r.experimentalZoomLevelsToOverscale,this.transformCameraUpdate=r.transformCameraUpdate,this.transformConstrain=r.transformConstrain,this.cancelPendingTileRequestsWhileZooming=!0===r.cancelPendingTileRequestsWhileZooming,this.setAnisotropicFilterPitch(r.anisotropicFilterPitch),void 0!==r.reduceMotion&&(n.prefersReducedMotion=r.reduceMotion),this._imageQueueHandle=u.addThrottleControl((()=>this.isMoving())),this._requestManager=new _(r.transformRequest),this._container=this._resolveContainer(r.container),r.maxBounds&&this.setMaxBounds(r.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",(()=>this._update(!1))),this.on("moveend",(()=>this._update(!1))),this.on("zoom",(()=>this._update(!0))),this.on("terrain",(()=>{this.painter.terrainFacilitator.depthDirty=!0,this._update(!0);})),this.once("idle",(()=>this._idleTriggered=!0)),"undefined"!=typeof window&&(this._ownerWindow.addEventListener("online",this._onWindowOnline,!1),this._setupResizeObserver()),this.handlers=new Yr(this,r),this._hash=r.hash?new Ya("string"==typeof r.hash&&r.hash||void 0).addTo(this):void 0,(null===(i=this._hash)||void 0===i?void 0:i._onHashChange())||(this.jumpTo({center:r.center,elevation:r.elevation,zoom:r.zoom,bearing:r.bearing,pitch:r.pitch,roll:r.roll}),r.bounds&&(this.resize(),this.fitBounds(r.bounds,t.e({},r.fitBoundsOptions,{duration:0}))));const c="string"==typeof r.style||!("globe"===(null===(a=null===(o=r.style)||void 0===o?void 0:o.projection)||void 0===a?void 0:a.type));this.resize(null,c),this._localIdeographFontFamily=r.localIdeographFontFamily,this._validateStyle=r.validateStyle,r.style&&this.setStyle(r.style,{localIdeographFontFamily:r.localIdeographFontFamily}),r.attributionControl&&this.addControl(new es("boolean"==typeof r.attributionControl?void 0:r.attributionControl)),r.maplibreLogo&&this.addControl(new ts,r.logoPosition),this.on("style.load",(()=>{if(c||this._resizeTransform(),this.transform.unmodified){const e=t.V(this.style.stylesheet,["center","zoom","bearing","pitch","roll"]);this.jumpTo(e);}})),this.on("data",(e=>{this._update("style"===e.dataType),this.fire(new t.n(`${e.dataType}data`,e));})),this.on("dataloading",(e=>{this.fire(new t.n(`${e.dataType}dataloading`,e));})),this.on("dataabort",(e=>{this.fire(new t.n("sourcedataabort",e));}));}_getMapId(){return this._mapId}setGlobalStateProperty(e,t){return this.style.setGlobalStateProperty(e,t),this._update(!0)}getGlobalState(){return this.style.getGlobalState()}addControl(e,i){if(void 0===i&&(i=e.getDefaultPosition?e.getDefaultPosition():"top-right"),!(null==e?void 0:e.onAdd))return this.fire(new t.l(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const o=e.onAdd(this);this._controls.push(e);const a=this._controlPositions[i];return i.includes("bottom")?a.insertBefore(o,a.firstChild):a.appendChild(o),this}removeControl(e){if(!(null==e?void 0:e.onRemove))return this.fire(new t.l(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this}hasControl(e){return this._controls.includes(e)}coveringTiles(e){return Me(this.transform,e)}calculateCameraOptionsFromTo(e,t,i,o){return null==o&&this.terrain&&(o=this.terrain.getElevationForLngLat(i,this.transform)),super.calculateCameraOptionsFromTo(e,t,i,o)}resize(e,i=!0){if(null!==this._lostContextStyle.style)return this;this._resizeInternal(i);const o=!this._moving;return o&&(this.stop(),this.fire(new t.n("movestart",e)).fire(new t.n("move",e))),this.fire(new t.n("resize",e)),o&&this.fire(new t.n("moveend",e)),this}_resizeInternal(e=!0){const[t,i]=this._containerDimensions(),o=this._getClampedPixelRatio(t,i);if(this._resizeCanvas(t,i,o),this.painter.resize(t,i,o),this.painter.overLimit()){const e=this.painter.context.gl;this._maxCanvasSize=[e.drawingBufferWidth,e.drawingBufferHeight];const o=this._getClampedPixelRatio(t,i);this._resizeCanvas(t,i,o),this.painter.resize(t,i,o);}this._resizeTransform(e);}_resizeTransform(e=!0){var t;const[i,o]=this._containerDimensions();this.transform.resize(i,o,e),null===(t=this._requestedCameraState)||void 0===t||t.resize(i,o,e);}_getClampedPixelRatio(e,t){const{0:i,1:o}=this._maxCanvasSize,a=this.getPixelRatio(),r=e*a,s=t*a;return Math.min(r>i?i/r:1,s>o?o/s:1)*a}getPixelRatio(){var e;return null!==(e=this._overridePixelRatio)&&void 0!==e?e:devicePixelRatio}setPixelRatio(e){this._overridePixelRatio=e,this.resize();}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(e){return this.transform.setMaxBounds(G.convert(e)),this._update()}setMinZoom(e){if((e=null==e?-2:e)>=-2&&e<=this.transform.maxZoom){const i=this.transform.zoom,o=this._getTransformForUpdate();return o.setMinZoom(e),this._applyUpdatedTransform(o),this._update(),i!==this.transform.zoom&&this.fire(new t.n("zoomstart")).fire(new t.n("zoom")).fire(new t.n("zoomend")).fire(new t.n("movestart")).fire(new t.n("move")).fire(new t.n("moveend")),this}throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(e){if((e=null==e?22:e)>=this.transform.minZoom){const i=this.transform.zoom,o=this._getTransformForUpdate();return o.setMaxZoom(e),this._applyUpdatedTransform(o),this._update(),i!==this.transform.zoom&&this.fire(new t.n("zoomstart")).fire(new t.n("zoom")).fire(new t.n("zoomend")).fire(new t.n("movestart")).fire(new t.n("move")).fire(new t.n("moveend")),this}throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(e){if((e=null==e?0:e)<0)throw new Error("minPitch must be greater than or equal to 0");if(e>=0&&e<=this.transform.maxPitch){const i=this.transform.pitch,o=this._getTransformForUpdate();return o.setMinPitch(e),this._applyUpdatedTransform(o),this._update(),i!==this.transform.pitch&&this.fire(new t.n("pitchstart")).fire(new t.n("pitch")).fire(new t.n("pitchend")).fire(new t.n("movestart")).fire(new t.n("move")).fire(new t.n("moveend")),this}throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(e){if((e=null==e?60:e)>180)throw new Error("maxPitch must be less than or equal to 180");if(e>=this.transform.minPitch){const i=this.transform.pitch,o=this._getTransformForUpdate();return o.setMaxPitch(e),this._applyUpdatedTransform(o),this._update(),i!==this.transform.pitch&&this.fire(new t.n("pitchstart")).fire(new t.n("pitch")).fire(new t.n("pitchend")).fire(new t.n("movestart")).fire(new t.n("move")).fire(new t.n("moveend")),this}throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getAnisotropicFilterPitch(){return this._anisotropicFilterPitch}setAnisotropicFilterPitch(e){if((e=null==e?20:e)>180)throw new Error("anisotropicFilterPitch must be less than or equal to 180");if(e<0)throw new Error("anisotropicFilterPitch must be greater than or equal to 0");return this._anisotropicFilterPitch=e,this._update()}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(e){return this.transform.setRenderWorldCopies(e),this._update()}setTransformConstrain(e){return this.transform.setConstrainOverride(e),this._update()}project(e){return this.transform.locationToScreenPoint(t.W.convert(e),this.style&&this.terrain)}unproject(e){return this.transform.screenPointToLocation(t.P.convert(e),this.terrain)}isMoving(){var e;return this._moving||(null===(e=this.handlers)||void 0===e?void 0:e.isMoving())}isZooming(){var e;return this._zooming||(null===(e=this.handlers)||void 0===e?void 0:e.isZooming())}isRotating(){var e;return this._rotating||(null===(e=this.handlers)||void 0===e?void 0:e.isRotating())}_createDelegatedListener(e,t,i){if("mouseenter"===e||"mouseover"===e){let o=!1;const a=a=>{const r=t.filter((e=>this.getLayer(e))),s=0!==r.length?this.queryRenderedFeatures(a.point,{layers:r}):[];s.length?o||(o=!0,i.call(this,new nr(e,this,a.originalEvent,{features:s}))):o=!1;};return {layers:t,listener:i,delegates:{mousemove:a,mouseout:()=>{o=!1;}}}}if("mouseleave"===e||"mouseout"===e){let o=!1;const a=a=>{const r=t.filter((e=>this.getLayer(e)));(0!==r.length?this.queryRenderedFeatures(a.point,{layers:r}):[]).length?o=!0:o&&(o=!1,i.call(this,new nr(e,this,a.originalEvent)));},r=t=>{o&&(o=!1,i.call(this,new nr(e,this,t.originalEvent)));};return {layers:t,listener:i,delegates:{mousemove:a,mouseout:r}}}{const o=e=>{const o=t.filter((e=>this.getLayer(e))),a=0!==o.length?this.queryRenderedFeatures(e.point,{layers:o}):[];a.length&&(e.features=a,i.call(this,e),delete e.features);};return {layers:t,listener:i,delegates:{[e]:o}}}}_saveDelegatedListener(e,t){var i;this._delegatedListeners||(this._delegatedListeners={}),(i=this._delegatedListeners)[e]||(i[e]=[]),this._delegatedListeners[e].push(t);}_removeDelegatedListener(e,t,i){var o;if(!(null===(o=this._delegatedListeners)||void 0===o?void 0:o[e]))return;const a=this._delegatedListeners[e];for(let e=0;et.includes(e)))){for(const e in o.delegates)this.off(e,o.delegates[e]);return void a.splice(e,1)}}}on(e,t,i){if(void 0===i)return super.on(e,t);const o="string"==typeof t?[t]:t,a=this._createDelegatedListener(e,o,i);this._saveDelegatedListener(e,a);for(const e in a.delegates)this.on(e,a.delegates[e]);return {unsubscribe:()=>{this._removeDelegatedListener(e,o,i);}}}once(e,t,i){if(void 0===i)return super.once(e,t);const o="string"==typeof t?[t]:t,a=this._createDelegatedListener(e,o,i);for(const t in a.delegates){const r=a.delegates[t];a.delegates[t]=(...t)=>{this._removeDelegatedListener(e,o,i),r(...t);};}this._saveDelegatedListener(e,a);for(const e in a.delegates)this.once(e,a.delegates[e]);return this}off(e,t,i){return void 0===i?super.off(e,t):(this._removeDelegatedListener(e,"string"==typeof t?[t]:t,i),this)}queryRenderedFeatures(e,i){if(!this.style)return [];let o;const a=e instanceof t.P||Array.isArray(e),r=a?e:[[0,0],[this.transform.width,this.transform.height]];if(i||(i=(a?{}:e)||{}),r instanceof t.P||"number"==typeof r[0])o=[t.P.convert(r)];else {const e=t.P.convert(r[0]),i=t.P.convert(r[1]);o=[e,new t.P(i.x,e.y),i,new t.P(e.x,i.y),e];}return this.style.queryRenderedFeatures(o,i,this.transform)}querySourceFeatures(e,t){return this.style.querySourceFeatures(e,t)}setStyle(e,i){return !1!==(i=t.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._updateStyle(e,i))}setTransformRequest(e){return this._requestManager.setTransformRequest(e),this}_getUIString(e){const t=this._locale[e];if(null==t)throw new Error(`Missing UI string '${e}'`);return t}_updateStyle(e,t){var i,o,a;if(null===(i=this._diffStyleRequest)||void 0===i||i.abort(),this._diffStyleRequest=null,t.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",(()=>this._updateStyle(e,t)));const r=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!e)),e?(this.style=new ki(this,t||{}),this.style.setEventedParent(this,{style:this.style}),"string"==typeof e?this.style.loadURL(e,t,r):this.style.loadJSON(e,t,r),this):(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),null===(a=null===(o=this.style)||void 0===o?void 0:o.projection)||void 0===a||a.destroy(),delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new ki(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty());}_diffStyle(e,i){return t._(this,void 0,void 0,(function*(){var o;if(null===(o=this._diffStyleRequest)||void 0===o||o.abort(),"string"==typeof e){const o=e;this._diffStyleRequest=new AbortController;const a=this._diffStyleRequest;try{const e=yield this._requestManager.transformRequest(o,"Style");if(a.signal.aborted)return void(this._diffStyleRequest=null);const r=yield t.k(e,a);this._diffStyleRequest=null,this._updateDiff(r.data,i);}catch(e){this._diffStyleRequest=null,t.$(e)||this.fire(new t.l(t.d(e)));}}else "object"==typeof e&&(this._diffStyleRequest=null,this._updateDiff(e,i));}))}_updateDiff(e,i){try{this.style.setState(e,i)&&this._update(!0);}catch(o){t.w(`Unable to perform style diff: ${t.d(o).message}. Rebuilding the style from scratch.`),this._updateStyle(e,i);}}getStyle(){if(this.style)return this.style.serialize()}_getStyleAndImages(){return this.style?{style:this.style.serialize(),images:this.style.imageManager.cloneImages()}:{style:null,images:{}}}isStyleLoaded(){if(this.style)return this.style.loaded();t.w("There is no style added to the map.");}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(e){var i;const o=null===(i=this.style)||void 0===i?void 0:i.tileManagers[e];if(void 0!==o)return o.loaded();this.fire(new t.l(new Error(`There is no tile manager with ID '${e}'`)));}setTerrain(e){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),e){const i=this.style.tileManagers[e.source];if(!i)throw new Error(`cannot load terrain, because there exists no source with ID: ${e.source}`);null===this.terrain&&i.reload();for(const i in this.style._layers){const o=this.style._layers[i];"hillshade"===o.type&&o.source===e.source&&t.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality."),"color-relief"===o.type&&o.source===e.source&&t.w("You are using the same source for a color-relief layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.");}this.terrain=new rs(this.painter,i,e),this.painter.renderToTexture=new ls(this.painter,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._terrainDataCallback=t=>{var i;"style"===t.dataType?this.terrain.tileManager.freeRtt():"source"===t.dataType&&t.tile&&(t.sourceId!==e.source||this._elevationFreeze||(this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))),"image"===(null===(i=t.source)||void 0===i?void 0:i.type)?this.terrain.tileManager.freeRtt():this.terrain.tileManager.freeRtt(t.tile.tileID));},this.style.on("data",this._terrainDataCallback);}else this.terrain&&this.terrain.destroy(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0);return this.fire(new t.n("terrain",{terrain:e})),this}getTerrain(){var e,t;return null!==(t=null===(e=this.terrain)||void 0===e?void 0:e.options)&&void 0!==t?t:null}areTilesLoaded(){var e;const t=null===(e=this.style)||void 0===e?void 0:e.tileManagers;for(const e of Object.values(t))if(!e.areTilesLoaded())return !1;return !0}removeSource(e){return this.style.removeSource(e),this._update(!0)}getSource(e){return this.style.getSource(e)}setSourceTileLodParams(e,t,i){if(i){const o=this.getSource(i);if(!o)throw new Error(`There is no source with ID "${i}", cannot set LOD parameters`);o.calculateTileZoom=Te(Math.max(1,e),Math.max(1,t));}else for(const i in this.style.tileManagers)this.style.tileManagers[i].getSource().calculateTileZoom=Te(Math.max(1,e),Math.max(1,t));return this._update(!0),this}refreshTiles(e,i){const o=this.style.tileManagers[e];if(!o)throw new Error(`There is no tile manager with ID "${e}", cannot refresh tile`);void 0===i?o.reload(!0):o.refreshTiles(i.map((e=>new t.aa(e.z,e.x,e.y))));}addImage(e,i,o={}){const{pixelRatio:a=1,sdf:r=!1,stretchX:s,stretchY:l,content:c,textFitWidth:h,textFitHeight:u}=o;if(this._lazyInitEmptyStyle(),!(i instanceof HTMLImageElement||t.b(i))){if(void 0===i.width||void 0===i.height)return this.fire(new t.l(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{const{width:o,height:n,data:d}=i,_=i;return this.style.addImage(e,{data:new t.R({width:o,height:n},new Uint8Array(d)),pixelRatio:a,stretchX:s,stretchY:l,content:c,textFitWidth:h,textFitHeight:u,sdf:r,version:0,userImage:_}),_.onAdd&&_.onAdd(this,e),this}}{const{width:o,height:d,data:_}=n.getImageData(i);this.style.addImage(e,{data:new t.R({width:o,height:d},_),pixelRatio:a,stretchX:s,stretchY:l,content:c,textFitWidth:h,textFitHeight:u,sdf:r,version:0});}}updateImage(e,i){const o=this.style.getImage(e);if(!o)return this.fire(new t.l(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const a=i instanceof HTMLImageElement||t.b(i)?n.getImageData(i):i,{width:r,height:s,data:l}=a;if(void 0===r||void 0===s)return this.fire(new t.l(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(r!==o.data.width||s!==o.data.height)return this.fire(new t.l(new Error("The width and height of the updated image must be that same as the previous version of the image")));const c=!(i instanceof HTMLImageElement||t.b(i));return o.data.replace(l,c),this.style.updateImage(e,o),this}getImage(e){return this.style.getImage(e)}hasImage(e){return e?!!this.style.getImage(e):(this.fire(new t.l(new Error("Missing required image id"))),!1)}removeImage(e){this.style.removeImage(e);}loadImage(e){return t._(this,void 0,void 0,(function*(){return u.getImage(yield this._requestManager.transformRequest(e,"Image"),new AbortController)}))}listImages(){return this.style.listImages()}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style.getLayer(e)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(e,t,i){return this.style.setLayerZoomRange(e,t,i),this._update(!0)}setFilter(e,t,i={}){return this.style.setFilter(e,t,i),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,i,o={}){return this.style.setPaintProperty(e,t,i,o),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,i,o={}){return this.style.setLayoutProperty(e,t,i,o),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setGlyphs(e,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(e,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(e,t,i={}){return this._lazyInitEmptyStyle(),this.style.addSprite(e,t,i,(e=>{e||this._update(!0);})),this}removeSprite(e){return this._lazyInitEmptyStyle(),this.style.removeSprite(e),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(e,t,(e=>{e||this._update(!0);})),this}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setSky(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSky(e,t),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let e=0,t=0;return this._container&&(e=this._container.clientWidth||400,t=this._container.clientHeight||300),[e,t]}_setupResizeObserver(){var e;let t=!1;const i=Ka((e=>{this._trackResize&&!this._removed&&(this.resize(e),this.redraw());}),50),o=null!==(e=this._ownerWindow.ResizeObserver)&&void 0!==e?e:ResizeObserver;this._resizeObserver=new o((e=>{t?i(e):t=!0;})),this._resizeObserver.observe(this._container);}_resolveContainer(e){if("string"==typeof e){const t=document.getElementById(e);if(!t)throw new Error(`Container '${e}' not found.`);return t}if(e instanceof HTMLElement)return e;if(e&&"object"==typeof e&&1===e.nodeType)return e;throw new Error("Invalid type: 'container' must be a String or HTMLElement.")}_setupContainer(){const e=this._container;e.classList.add("maplibregl-map");const t=this._canvasContainer=d.create("div","maplibregl-canvas-container",e);this._interactive&&t.classList.add("maplibregl-interactive"),this._canvas=d.create("canvas","maplibregl-canvas",t),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");const i=this._containerDimensions(),o=this._getClampedPixelRatio(i[0],i[1]);this._resizeCanvas(i[0],i[1],o);const a=this._controlContainer=d.create("div","maplibregl-control-container",e),r=this._controlPositions={};for(const e of ["top-left","top-right","bottom-left","bottom-right"])r[e]=d.create("div",`maplibregl-ctrl-${e} `,a);this._container.addEventListener("scroll",this._onMapScroll,!1);}_resizeCanvas(e,t,i){this._canvas.width=Math.floor(i*e),this._canvas.height=Math.floor(i*t),this._canvas.style.width=`${e}px`,this._canvas.style.height=`${t}px`;}_setupPainter(){const e=Object.assign(Object.assign({},this._canvasContextAttributes),{alpha:!0,depth:!0,stencil:!0,premultipliedAlpha:!0});let t=null;this._canvas.addEventListener("webglcontextcreationerror",(i=>{t={requestedAttributes:e},i&&(t.statusMessage=i.statusMessage,t.type=i.type);}),{once:!0});let i=null;if(i=this._canvasContextAttributes.contextType?this._canvas.getContext(this._canvasContextAttributes.contextType,e):this._canvas.getContext("webgl2",e)||this._canvas.getContext("webgl",e),!i){const e="Failed to initialize WebGL";throw t?(t.message=e,new Error(JSON.stringify(t))):new Error(e)}this.painter=new Xa(i,this.transform);}migrateProjection(e,i){super.migrateProjection(e,i),this.painter.transform=e,this.fire(new t.n("projectiontransition",{newProjection:this.style.projection.name}));}loaded(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){var t;return (null===(t=this.style)||void 0===t?void 0:t._loaded)?(this._styleDirty||(this._styleDirty=e),this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e);}_render(e){var i,o,a,r,s,n;const l=this._idleTriggered?this._fadeDuration:0,h=(null===(i=this.style.projection)||void 0===i?void 0:i.transitionState)>0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),this._removed)return;let u=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const e=this.transform.zoom,i=c();this.style.zoomHistory.update(e,i);const o=new t.J(e,{now:i,fadeDuration:l,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),a=o.crossFadingFactor();1===a&&a===this._crossFadingFactor||(u=!0,this._crossFadingFactor=a),this.style.update(o);}const d=(null===(o=this.style.projection)||void 0===o?void 0:o.transitionState)>0!==h;null===(a=this.style.projection)||void 0===a||a.setErrorQueryLatitudeDegrees(this.transform.center.lat),this.transform.setTransitionState(null===(r=this.style.projection)||void 0===r?void 0:r.transitionState,null===(s=this.style.projection)||void 0===s?void 0:s.latitudeErrorCorrectionRadians),this.style&&(this._sourcesDirty||d)&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.tileManager.update(this.transform,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),!this._elevationFreeze&&this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0)),this._placementDirty=null===(n=this.style)||void 0===n?void 0:n._updatePlacement(this.transform,this.showCollisionBoxes,l,this._crossSourceCollisions,d),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:l,showPadding:this.showPadding,anisotropicFilterPitch:this.getAnisotropicFilterPitch()}),this.fire(new t.n("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new t.n("load"))),this.style&&(this.style.hasTransitions()||u)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const _=this._sourcesDirty||this._styleDirty||this._placementDirty;return _||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.n("idle")),!this._loaded||this._fullyLoaded||_||(this._fullyLoaded=!0),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var e,i;this._hash&&this._hash.remove();for(const e of this._controls)e.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),null===(e=this._diffStyleRequest)||void 0===e||e.abort(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),"undefined"!=typeof window&&this._ownerWindow.removeEventListener("online",this._onWindowOnline,!1),u.removeThrottleControl(this._imageQueueHandle),null===(i=this._resizeObserver)||void 0===i||i.disconnect();const o=this.painter.context.gl.getExtension("WEBGL_lose_context");(null==o?void 0:o.loseContext)&&o.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),this._canvasContainer.remove(),this._controlContainer.remove(),this._container.removeEventListener("scroll",this._onMapScroll,!1),this._container.classList.remove("maplibregl-map"),this._removed=!0,this.fire(new t.n("remove"));}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,n.frame(this._frameRequest,(e=>{this._frameRequest=null;try{this._render(e);}catch(e){if(!t.$(e)&&!function(e){return e.message===na}(e))throw e}}),(()=>{}),this._ownerWindow));}get showTileBoundaries(){return !!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update());}get showPadding(){return !!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update());}get showCollisionBoxes(){return !!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update());}get showOverdrawInspector(){return !!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update());}get repaint(){return !!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint());}get vertices(){return !!this._vertices}set vertices(e){this._vertices=e,this._update();}get version(){return hs}getCameraTargetElevation(){return this.transform.elevation}getProjection(){return this.style.getProjection()}setProjection(e){return this._lazyInitEmptyStyle(),this.style.setProjection(e),this._update(!0)}};const _s={showCompass:!0,showZoom:!0,visualizePitch:!1,visualizeRoll:!0};class ps{constructor(e,i,o=!1){this.mousedown=e=>{this.startMove(e,d.mousePos(this.element,e)),window.addEventListener("mousemove",this.mousemove),window.addEventListener("mouseup",this.mouseup);},this.mousemove=e=>{this.move(e,d.mousePos(this.element,e));},this.mouseup=e=>{this._rotatePitchHandler.dragEnd(e),this.offTemp();},this.touchstart=e=>{1!==e.targetTouches.length?this.reset():(this._startPos=this._lastPos=d.touchPos(this.element,e.targetTouches)[0],this.startMove(e,this._startPos),window.addEventListener("touchmove",this.touchmove,{passive:!1}),window.addEventListener("touchend",this.touchend));},this.touchmove=e=>{1!==e.targetTouches.length?this.reset():(this._lastPos=d.touchPos(this.element,e.targetTouches)[0],this.move(e,this._lastPos));},this.touchend=e=>{0===e.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this._rotatePitchHandler.reset(),delete this._startPos,delete this._lastPos,this.offTemp();},this._clickTolerance=10,this.element=i;const a=new Pr;this._rotatePitchHandler=new vr({clickTolerance:3,move:(e,a)=>{const r=i.getBoundingClientRect(),s=new t.P((r.bottom-r.top)/2,(r.right-r.left)/2);return {bearingDelta:t.cx(new t.P(e.x,a.y),a,s),pitchDelta:o?-.5*(a.y-e.y):void 0}},moveStateManager:a,enable:!0,assignEvents:()=>{}}),this.map=e,i.addEventListener("mousedown",this.mousedown),i.addEventListener("touchstart",this.touchstart,{passive:!1}),i.addEventListener("touchcancel",this.reset);}startMove(e,t){this._rotatePitchHandler.dragStart(e,t),d.disableDrag();}move(e,t){const i=this.map,{bearingDelta:o,pitchDelta:a}=this._rotatePitchHandler.dragMove(e,t)||{};o&&i.setBearing(i.getBearing()+o),a&&i.setPitch(i.getPitch()+a);}off(){const e=this.element;e.removeEventListener("mousedown",this.mousedown),e.removeEventListener("touchstart",this.touchstart),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),e.removeEventListener("touchcancel",this.reset),this.offTemp();}offTemp(){d.enableDrag(),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend);}}let ms;function fs(e,i,o,a=!1){if(a||!o.getCoveringTilesDetailsProvider().allowWorldCopies())return null==e?void 0:e.wrap();const r=new t.W(e.lng,e.lat);if(e=new t.W(e.lng,e.lat),i){const a=new t.W(e.lng-360,e.lat),r=new t.W(e.lng+360,e.lat),s=o.locationToScreenPoint(e).distSqr(i);o.locationToScreenPoint(a).distSqr(i)180;){const t=o.locationToScreenPoint(e);if(t.x>=0&&t.y>=0&&t.x<=o.width&&t.y<=o.height)break;e.lng>o.center.lng?e.lng-=360:e.lng+=360;}return e.lng!==r.lng&&o.isPointOnMapSurface(o.locationToScreenPoint(e))?e:r}const gs={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function vs(e,t,i){const o=e.classList;for(const e in gs)o.remove(`maplibregl-${i}-anchor-${e}`);o.add(`maplibregl-${i}-anchor-${t}`);}class xs extends t.E{constructor(e){if(super(),this._onClick=e=>{this.fire(new t.n("click",{originalEvent:e}));},this._onKeyPress=e=>{"Space"!==e.code&&"Enter"!==e.code||this.togglePopup();},this._onMapClick=e=>{const t=e.originalEvent.target,i=this._element;this._popup&&(t===i||i.contains(t))&&this.togglePopup();},this._update=e=>{if(!this._map)return;const t=this._map.loaded()&&!this._map.isMoving();("terrain"===(null==e?void 0:e.type)||"render"===(null==e?void 0:e.type)&&!t)&&this._map.once("render",this._update),this._lngLat=fs(this._lngLat,this._flatPos,this._map.transform),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationToScreenPoint(this._lngLat)._add(this._offset));let i="";"viewport"===this._rotationAlignment||"auto"===this._rotationAlignment?i=`rotateZ(${this._rotation}deg)`:"map"===this._rotationAlignment&&(i=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let o="";"viewport"===this._pitchAlignment||"auto"===this._pitchAlignment?o="rotateX(0deg)":"map"===this._pitchAlignment&&(o=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||e&&"moveend"!==e.type||(this._pos=this._pos.round()),this._element.style.transform=`${gs[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${o} ${i}`,n.frameAsync(new AbortController,this._map._ownerWindow).then((()=>{this._updateOpacity("moveend"===(null==e?void 0:e.type));})).catch((()=>{}));},this._onMove=e=>{if(!this._isDragging){const t=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=t;}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none","pending"===this._state&&(this._state="active",this.fire(new t.n("dragstart"))),this.fire(new t.n("drag")));},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),"active"===this._state&&this.fire(new t.n("dragend")),this._state="inactive";},this._addDragHandler=e=>{this._element.contains(e.originalEvent.target)&&(e.preventDefault(),this._positionDelta=e.point.sub(this._pos).add(this._offset),this._pointerdownPos=e.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp));},this._anchor=(null==e?void 0:e.anchor)||"center",this._color=(null==e?void 0:e.color)||"#3FB1CE",this._scale=(null==e?void 0:e.scale)||1,this._draggable=(null==e?void 0:e.draggable)||!1,this._clickTolerance=(null==e?void 0:e.clickTolerance)||0,this._subpixelPositioning=(null==e?void 0:e.subpixelPositioning)||!1,this._isDragging=!1,this._state="inactive",this._rotation=(null==e?void 0:e.rotation)||0,this._rotationAlignment=(null==e?void 0:e.rotationAlignment)||"auto",this._pitchAlignment=(null==e?void 0:e.pitchAlignment)&&"auto"!==e.pitchAlignment?e.pitchAlignment:this._rotationAlignment,this.setOpacity(null==e?void 0:e.opacity,null==e?void 0:e.opacityWhenCovered),null==e?void 0:e.element)this._element=e.element,this._offset=t.P.convert((null==e?void 0:e.offset)||[0,0]);else {this._defaultMarker=!0,this._element=d.create("div");const i=d.createNS("http://www.w3.org/2000/svg","svg"),o=41,a=27;i.setAttributeNS(null,"display","block"),i.setAttributeNS(null,"height",`${o}px`),i.setAttributeNS(null,"width",`${a}px`),i.setAttributeNS(null,"viewBox",`0 0 ${a} ${o}`);const r=d.createNS("http://www.w3.org/2000/svg","g");r.setAttributeNS(null,"stroke","none"),r.setAttributeNS(null,"stroke-width","1"),r.setAttributeNS(null,"fill","none"),r.setAttributeNS(null,"fill-rule","evenodd");const s=d.createNS("http://www.w3.org/2000/svg","g");s.setAttributeNS(null,"fill-rule","nonzero");const n=d.createNS("http://www.w3.org/2000/svg","g");n.setAttributeNS(null,"transform","translate(3.0, 29.0)"),n.setAttributeNS(null,"fill","#000000");const l=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(const e of l){const t=d.createNS("http://www.w3.org/2000/svg","ellipse");t.setAttributeNS(null,"opacity","0.04"),t.setAttributeNS(null,"cx","10.5"),t.setAttributeNS(null,"cy","5.80029008"),t.setAttributeNS(null,"rx",e.rx),t.setAttributeNS(null,"ry",e.ry),n.appendChild(t);}const c=d.createNS("http://www.w3.org/2000/svg","g");c.setAttributeNS(null,"fill",this._color);const h=d.createNS("http://www.w3.org/2000/svg","path");h.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),c.appendChild(h);const u=d.createNS("http://www.w3.org/2000/svg","g");u.setAttributeNS(null,"opacity","0.25"),u.setAttributeNS(null,"fill","#000000");const _=d.createNS("http://www.w3.org/2000/svg","path");_.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),u.appendChild(_);const p=d.createNS("http://www.w3.org/2000/svg","g");p.setAttributeNS(null,"transform","translate(6.0, 7.0)"),p.setAttributeNS(null,"fill","#FFFFFF");const m=d.createNS("http://www.w3.org/2000/svg","g");m.setAttributeNS(null,"transform","translate(8.0, 8.0)");const f=d.createNS("http://www.w3.org/2000/svg","circle");f.setAttributeNS(null,"fill","#000000"),f.setAttributeNS(null,"opacity","0.25"),f.setAttributeNS(null,"cx","5.5"),f.setAttributeNS(null,"cy","5.5"),f.setAttributeNS(null,"r","5.4999962");const g=d.createNS("http://www.w3.org/2000/svg","circle");g.setAttributeNS(null,"fill","#FFFFFF"),g.setAttributeNS(null,"cx","5.5"),g.setAttributeNS(null,"cy","5.5"),g.setAttributeNS(null,"r","5.4999962"),m.appendChild(f),m.appendChild(g),s.appendChild(n),s.appendChild(c),s.appendChild(u),s.appendChild(p),s.appendChild(m),i.appendChild(s),i.setAttributeNS(null,"height",o*this._scale+"px"),i.setAttributeNS(null,"width",a*this._scale+"px"),this._element.appendChild(i),this._offset=t.P.convert((null==e?void 0:e.offset)||[0,-14]);}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",(e=>{e.preventDefault();})),this._element.addEventListener("mousedown",(e=>{e.preventDefault();})),vs(this._element,this._anchor,"marker"),null==e?void 0:e.className)for(const t of e.className.split(" "))this._element.classList.add(t);this._popup=null;}addTo(e){return this.remove(),this._map=e,this._element.hasAttribute("aria-label")||this._element.setAttribute("aria-label",e._getUIString("Marker.Title")),this._element.hasAttribute("role")||this._element.setAttribute("role","button"),e.getCanvasContainer().appendChild(this._element),e.on("move",this._update),e.on("moveend",this._update),e.on("terrain",this._update),e.on("projectiontransition",this._update),this._element.addEventListener("click",this._onClick),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("projectiontransition",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),this._element.removeEventListener("click",this._onClick),this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.W.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),e){if(!("offset"in e.options)){const t=38.1,i=13.5,o=Math.abs(i)/Math.SQRT2;e.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-t],"bottom-left":[o,-1*(t-i+o)],"bottom-right":[-o,-1*(t-i+o)],left:[i,-1*(t-i)],right:[-i,-1*(t-i)]}:this._offset;}this._popup=e,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress);}return this}setSubpixelPositioning(e){return this._subpixelPositioning=e,this}getPopup(){return this._popup}togglePopup(){const e=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:e?(e.isOpen()?e.remove():(e.setLngLat(this._lngLat),e.addTo(this._map)),this):this}_updateOpacity(e=!1){var i,o;const a=null===(i=this._map)||void 0===i?void 0:i.terrain,r=this._map.transform.isLocationOccluded(this._lngLat);if(!a||r){const e=r?this._opacityWhenCovered:this._opacity;return void(this._element.style.opacity!==e&&(this._element.style.opacity=e,this._element.classList.toggle("maplibregl-marker-covered",r)))}if(e)this._opacityTimeout=null;else {if(this._opacityTimeout)return;this._opacityTimeout=setTimeout((()=>{this._opacityTimeout=null;}),100);}const s=this._map,n=s.terrain.depthAtPoint(this._pos),l=s.terrain.getElevationForLngLat(this._lngLat,s.transform);if(s.transform.lngLatToCameraDepth(this._lngLat,l)-n<.006)return this._element.style.opacity=this._opacity,void this._element.classList.remove("maplibregl-marker-covered");const c=-this._offset.y/s.transform.pixelsPerMeter,h=Math.sin(s.getPitch()*Math.PI/180)*c,u=s.terrain.depthAtPoint(new t.P(this._pos.x,this._pos.y-this._offset.y)),d=s.transform.lngLatToCameraDepth(this._lngLat,l+h)-u>.006;(null===(o=this._popup)||void 0===o?void 0:o.isOpen())&&d&&this._popup.remove(),this._element.style.opacity=d?this._opacityWhenCovered:this._opacity,this._element.classList.toggle("maplibregl-marker-covered",d);}getOffset(){return this._offset}setOffset(e){return this._offset=t.P.convert(e),this._update(),this}addClassName(e){this._element.classList.add(e);}removeClassName(e){this._element.classList.remove(e);}toggleClassName(e){return this._element.classList.toggle(e)}setDraggable(e){return this._draggable=!!e,this._map&&(e?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(e){return this._rotation=e||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(e){return this._rotationAlignment=e||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(e){return this._pitchAlignment=e&&"auto"!==e?e:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(e,t){return (void 0===this._opacity||void 0===e&&void 0===t)&&(this._opacity="1",this._opacityWhenCovered="0.2"),void 0!==e&&(this._opacity=String(e)),void 0!==t&&(this._opacityWhenCovered=String(t)),this._map&&this._updateOpacity(!0),this}}const bs={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let ys=0,ws=!1;const Ts={maxWidth:100,unit:"metric"};function Ps(e,t,i){const o=(null==i?void 0:i.maxWidth)||100,a=e._container.clientHeight/2,r=e._container.clientWidth/2,s=e.unproject([r-o/2,a]),n=e.unproject([r+o/2,a]),l=Math.round(e.project(n).x-e.project(s).x),c=Math.min(o,l,e._container.clientWidth),h=s.distanceTo(n);if("imperial"===(null==i?void 0:i.unit)){const i=3.2808*h;i>5280?Cs(t,c,i/5280,e._getUIString("ScaleControl.Miles")):Cs(t,c,i,e._getUIString("ScaleControl.Feet"));}else "nautical"===(null==i?void 0:i.unit)?Cs(t,c,h/1852,e._getUIString("ScaleControl.NauticalMiles")):h>=1e3?Cs(t,c,h/1e3,e._getUIString("ScaleControl.Kilometers")):Cs(t,c,h,e._getUIString("ScaleControl.Meters"));}function Cs(e,t,i,o){const a=function(e){const t=Math.pow(10,`${Math.floor(e)}`.length-1);let i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(e){const t=Math.pow(10,Math.ceil(-Math.log(e)/Math.LN10));return Math.round(e*t)/t}(i),t*i}(i);e.style.width=t*(a/i)+"px",e.innerHTML=`${a} ${o}`;}const Ms={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1,locationOccludedOpacity:void 0,padding:void 0},Is=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Es(e){if(e){if("number"==typeof e){const i=Math.round(Math.abs(e)/Math.SQRT2);return {center:new t.P(0,0),top:new t.P(0,e),"top-left":new t.P(i,i),"top-right":new t.P(-i,i),bottom:new t.P(0,-e),"bottom-left":new t.P(i,-i),"bottom-right":new t.P(-i,-i),left:new t.P(e,0),right:new t.P(-e,0)}}if(e instanceof t.P||Array.isArray(e)){const i=t.P.convert(e);return {center:i,top:i,"top-left":i,"top-right":i,bottom:i,"bottom-left":i,"bottom-right":i,left:i,right:i}}return {center:t.P.convert(e.center||[0,0]),top:t.P.convert(e.top||[0,0]),"top-left":t.P.convert(e["top-left"]||[0,0]),"top-right":t.P.convert(e["top-right"]||[0,0]),bottom:t.P.convert(e.bottom||[0,0]),"bottom-left":t.P.convert(e["bottom-left"]||[0,0]),"bottom-right":t.P.convert(e["bottom-right"]||[0,0]),left:t.P.convert(e.left||[0,0]),right:t.P.convert(e.right||[0,0])}}return Es(new t.P(0,0))}const Ss=i;e.AJAXError=t.cG,e.EXTENT=t.a6,e.Event=t.n,e.Evented=t.E,e.LngLat=t.W,e.MercatorCoordinate=t.a7,e.Point=t.P,e.addProtocol=t.cH,e.config=t.c,e.removeProtocol=t.cI,e.AttributionControl=es,e.BoxZoomHandler=_r,e.CanvasSource=oe,e.CooperativeGesturesHandler=$r,e.DoubleClickZoomHandler=Zr,e.DragPanHandler=Vr,e.DragRotateHandler=Wr,e.EdgeInsets=Ut,e.FullscreenControl=class extends t.E{constructor(e={}){var i;super(),this._onFullscreenChange=()=>{var e;let t=window.document.fullscreenElement||window.document.webkitFullscreenElement;for(;null===(e=null==t?void 0:t.shadowRoot)||void 0===e?void 0:e.fullscreenElement;)t=t.shadowRoot.fullscreenElement;t===this._container!==this._fullscreen&&this._handleFullscreenChange();},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen();},this._fullscreen=!1,this._pseudo=null!==(i=e.pseudo)&&void 0!==i&&i,(null==e?void 0:e.container)&&(e.container instanceof HTMLElement?this._container=e.container:t.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange");}onAdd(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=d.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange);}_setupUI(){const e=this._fullscreenButton=d.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);d.create("span","maplibregl-ctrl-icon",e).setAttribute("aria-hidden","true"),e.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange);}_updateTitle(){const e=this._getTitle();this._fullscreenButton.setAttribute("aria-label",e),this._fullscreenButton.title=e;}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new t.n("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new t.n("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable());}_exitFullscreen(){this._pseudo?this._togglePseudoFullScreen():window.document.exitFullscreen?window.document.exitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen();}_requestFullscreen(){this._pseudo?this._togglePseudoFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen();}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize();}},e.GeoJSONSource=ee,e.GeolocateControl=class extends t.E{constructor(e){super(),this._onSuccess=e=>{if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.n("outofmaxbounds",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case "WAITING_ACTIVE":case "ACTIVE_LOCK":case "ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case "BACKGROUND":case "BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new t.n("geolocate",e)),this._finish();}},this._updateCamera=e=>{const i=new t.W(e.coords.longitude,e.coords.latitude),o=e.coords.accuracy,a=this._map.getBearing(),r=t.e({bearing:a},this.options.fitBoundsOptions),s=G.fromLngLat(i,o);this._map.fitBounds(s,r,{geolocateSource:!0});},this._updateMarker=e=>{if(e){const i=new t.W(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=e.coords.accuracy,this._updateCircleRadiusIfNeeded();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();},this._onUpdate=()=>{this._updateCircleRadiusIfNeeded();},this._onError=e=>{if(this._map){if(1===e.code){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===e.code&&ws)return;this._setErrorState();}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new t.n("error",e)),this._finish();}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;},this._onMoveStart=e=>{if(!this._map)return;const i=(null==e?void 0:e[0])instanceof ResizeObserverEntry;e.geolocateSource||"ACTIVE_LOCK"!==this._watchState||i||this._map.isZooming()||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new t.n("trackuserlocationend")),this.fire(new t.n("userlocationlostfocus")));},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",(e=>{e.preventDefault();})),this._geolocateButton=d.create("button","maplibregl-ctrl-geolocate",this._container),d.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0);},this._finishSetupUI=e=>{if(this._map){if(!1===e){t.w("Geolocation support is not available so the GeolocateControl will be disabled.");const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e);}else {const e=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=d.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new xs({element:this._dotElement}),this._circleElement=d.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new xs({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onUpdate),this._map.on("move",this._onUpdate),this._map.on("rotate",this._onUpdate),this._map.on("pitch",this._onUpdate)),this._geolocateButton.addEventListener("click",(()=>this.trigger())),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",this._onMoveStart);}},this.options=t.e({},bs,e);}onAdd(e){return this._map=e,this._container=d.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return t._(this,arguments,void 0,(function*(e=!1){if(void 0!==ms&&!e)return ms;if(void 0===window.navigator.permissions)return ms=!!window.navigator.geolocation,ms;try{const e=yield window.navigator.permissions.query({name:"geolocation"});ms="denied"!==e.state;}catch(e){ms=!!window.navigator.geolocation;}return ms}))}().then((e=>this._finishSetupUI(e))),this._container}onRemove(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off("movestart",this._onMoveStart),this._map.off("zoom",this._onUpdate),this._map.off("move",this._onUpdate),this._map.off("rotate",this._onUpdate),this._map.off("pitch",this._onUpdate),this._map=void 0,ys=0,ws=!1;}_isOutOfMapMaxBounds(e){const t=this._map.getMaxBounds(),i=e.coords;return t&&(i.longitudet.getEast()||i.latitudet.getNorth())}_setErrorState(){switch(this._watchState){case "WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case "ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case "BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case "ACTIVE_ERROR":case "BACKGROUND_ERROR":case "OFF":case void 0:break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadiusIfNeeded(){const e=this._userLocationDotMarker.getLngLat();if(!(this.options.showUserLocation&&this.options.showAccuracyCircle&&this._accuracy&&e))return;const t=this._map.project(e),i=this._map.unproject([t.x+100,t.y]),o=e.distanceTo(i)/100,a=2*this._accuracy/o;this._circleElement.style.width=`${a.toFixed(2)}px`,this._circleElement.style.height=`${a.toFixed(2)}px`;}trigger(){if(!this._setup)return t.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case "OFF":this._watchState="WAITING_ACTIVE",this.fire(new t.n("trackuserlocationstart"));break;case "WAITING_ACTIVE":case "ACTIVE_LOCK":case "ACTIVE_ERROR":case "BACKGROUND_ERROR":ys--,ws=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new t.n("trackuserlocationend"));break;case "BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.n("trackuserlocationstart")),this.fire(new t.n("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case "WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case "ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case "OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let e;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),ys++,ys>1?(e={maximumAge:6e5,timeout:0},ws=!0):(e=this.options.positionOptions,ws=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e);}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null);}},e.GlobeControl=class{constructor(){this._toggleProjection=()=>{var e;const t=null===(e=this._map.getProjection())||void 0===e?void 0:e.type;this._map.setProjection("mercator"!==t&&t?{type:"mercator"}:{type:"globe"}),this._updateGlobeIcon();},this._updateGlobeIcon=()=>{var e;this._globeButton.classList.remove("maplibregl-ctrl-globe"),this._globeButton.classList.remove("maplibregl-ctrl-globe-enabled"),"globe"===(null===(e=this._map.getProjection())||void 0===e?void 0:e.type)?(this._globeButton.classList.add("maplibregl-ctrl-globe-enabled"),this._globeButton.title=this._map._getUIString("GlobeControl.Disable")):(this._globeButton.classList.add("maplibregl-ctrl-globe"),this._globeButton.title=this._map._getUIString("GlobeControl.Enable"));};}onAdd(e){return this._map=e,this._container=d.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._globeButton=d.create("button","maplibregl-ctrl-globe",this._container),d.create("span","maplibregl-ctrl-icon",this._globeButton).setAttribute("aria-hidden","true"),this._globeButton.type="button",this._globeButton.addEventListener("click",this._toggleProjection),this._updateGlobeIcon(),this._map.on("styledata",this._updateGlobeIcon),this._map.on("projectiontransition",this._updateGlobeIcon),this._container}onRemove(){this._container.remove(),this._map.off("styledata",this._updateGlobeIcon),this._map.off("projectiontransition",this._updateGlobeIcon),this._globeButton.removeEventListener("click",this._toggleProjection),this._map=void 0;}},e.Hash=Ya,e.ImageSource=te,e.KeyboardHandler=kr,e.LngLatBounds=G,e.LogoControl=ts,e.Map=ds,e.MapLibreMap=ds,e.MapMouseEvent=nr,e.MapTouchEvent=lr,e.MapWheelEvent=cr,e.Marker=xs,e.NavigationControl=class{constructor(e){this._updateZoomButtons=()=>{const e=this._map.getZoom(),t=e===this._map.getMaxZoom(),i=e===this._map.getMinZoom();this._zoomInButton.disabled=t,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute("aria-disabled",t.toString()),this._zoomOutButton.setAttribute("aria-disabled",i.toString());},this._rotateCompassArrow=()=>{this._compassIcon.style.transform=this.options.visualizePitch&&this.options.visualizeRoll?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateZ(${-this._map.transform.roll}deg) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizeRoll?`rotate(${-this._map.transform.bearing-this._map.transform.roll}deg)`:`rotate(${-this._map.transform.bearing}deg)`;},this._setButtonTitle=(e,t)=>{const i=this._map._getUIString(`NavigationControl.${t}`);e.title=i,e.setAttribute("aria-label",i);},this.options=t.e({},_s,e),this._container=d.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",(e=>e.preventDefault())),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",(e=>this._map.zoomIn({},{originalEvent:e}))),d.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",(e=>this._map.zoomOut({},{originalEvent:e}))),d.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",(e=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:e}):this._map.resetNorth({},{originalEvent:e});})),this._compassIcon=d.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"));}onAdd(e){return this._map=e,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this.options.visualizeRoll&&this._map.on("roll",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new ps(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){this._container.remove(),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this.options.visualizeRoll&&this._map.off("roll",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map;}_createButton(e,t){const i=d.create("button",e,this._container);return i.type="button",i.addEventListener("click",t),i}},e.Popup=class extends t.E{constructor(e){super(),this._updateOpacity=()=>{void 0!==this.options.locationOccludedOpacity&&(this._container.style.opacity=this._map.transform.isLocationOccluded(this.getLngLat())?`${this.options.locationOccludedOpacity}`:"");},this.remove=()=>(this._content&&this._content.remove(),this._container&&(this._container.remove(),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("terrain",this._update),this._map.off("projectiontransition",this._update),this._map.off("mousemove",this._update),this._map.off("mouseup",this._update),this._map.off("drag",this._update),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new t.n("close"))),this),this._update=e=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=d.create("div","maplibregl-popup",this._map.getContainer()),this._tip=d.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(const e of this.options.className.split(" "))this._container.classList.add(e);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer");}let t;if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=fs(this._lngLat,this._flatPos,this._map.transform,this._trackPointer),e&&"point"in e&&e.point&&(t=e.point),this._trackPointer&&!t)return;const i=this._flatPos=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&t?t:this._map.transform.locationToScreenPoint(this._lngLat));let o=this.options.anchor;const a=Es(this.options.offset);if(!o){const e=this._container.offsetWidth,t=this._container.offsetHeight,r=function(e){var t,i,o,a;return e?{top:null!==(t=e.top)&&void 0!==t?t:0,right:null!==(i=e.right)&&void 0!==i?i:0,bottom:null!==(o=e.bottom)&&void 0!==o?o:0,left:null!==(a=e.left)&&void 0!==a?a:0}:{top:0,right:0,bottom:0,left:0}}(this.options.padding);let s;s=i.y+a.bottom.ythis._map.transform.height-t-r.bottom?["bottom"]:[],i.xthis._map.transform.width-e/2-r.right&&s.push("right"),o=0===s.length?"bottom":s.join("-");}let r=i.add(a[o]);this.options.subpixelPositioning||(r=r.round()),this._container.style.transform=`${gs[o]} translate(${r.x}px,${r.y}px)`,vs(this._container,o,"popup"),this._updateOpacity();},this._onClose=()=>{this.remove();},this.options=t.e(Object.create(Ms),e);}addTo(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._map.on("terrain",this._update),this._map.on("projectiontransition",this._update),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._update),this._map.on("mouseup",this._update),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new t.n("open")),this}isOpen(){return !!this._map}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.W.convert(e),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._update),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._update),this._map.on("drag",this._update),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(e){return this.setDOMContent(document.createTextNode(e))}setHTML(e){const t=document.createDocumentFragment(),i=document.createElement("body");let o;for(i.innerHTML=e;o=i.firstChild,o;)t.appendChild(o);return this.setDOMContent(t)}getMaxWidth(){var e;return null===(e=this._container)||void 0===e?void 0:e.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=d.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(e),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(e){return this._container&&this._container.classList.add(e),this}removeClassName(e){return this._container&&this._container.classList.remove(e),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){if(this._container)return this._container.classList.toggle(e)}setSubpixelPositioning(e){this.options.subpixelPositioning=e;}setPadding(e){this.options.padding=e,this._update();}_createCloseButton(){this.options.closeButton&&(this._closeButton=d.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose));}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const e=this._container.querySelector(Is);e&&e.focus();}},e.RasterDEMTileSource=$,e.RasterTileSource=q,e.ScaleControl=class{constructor(e){this._onMove=()=>{Ps(this._map,this._container,this.options);},this.setUnit=e=>{this.options.unit=e,Ps(this._map,this._container,this.options);},this.options=Object.assign(Object.assign({},Ts),e);}getDefaultPosition(){return "bottom-left"}onAdd(e){return this._map=e,this._container=d.create("div","maplibregl-ctrl maplibregl-ctrl-scale",e.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){this._container.remove(),this._map.off("move",this._onMove),this._map=void 0;}},e.ScrollZoomHandler=Nr,e.Style=ki,e.TerrainControl=class{constructor(e){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon();},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"));},this.options=e;}onAdd(e){return this._map=e,this._container=d.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=d.create("button","maplibregl-ctrl-terrain",this._container),d.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){this._container.remove(),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0;}},e.TwoFingersTouchPitchHandler=Lr,e.TwoFingersTouchRotateHandler=Dr,e.TwoFingersTouchZoomHandler=zr,e.TwoFingersTouchZoomRotateHandler=qr,e.VectorTileSource=W,e.VideoSource=ie,e.addSourceType=(e,i)=>t._(void 0,void 0,void 0,(function*(){if(re(e))throw new Error(`A source type called "${e}" already exists.`);((e,t)=>{ae[e]=t;})(e,i);})),e.clearPrewarmedResources=function(){const e=A;e&&(e.isPreloaded()&&1===e.numActive()?(e.release(z),A=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"));},e.createTileMesh=ci,e.getGlobalDispatcher=B,e.getMaxParallelImageRequests=function(){return t.c.MAX_PARALLEL_IMAGE_REQUESTS},e.getRTLTextPluginStatus=function(){return ce().getRTLTextPluginStatus()},e.getVersion=function(){return Ss},e.getWorkerCount=function(){return R.workerCount},e.getWorkerUrl=function(){return t.c.WORKER_URL},e.importScriptInWorkers=function(e){return B().broadcast("IS",e)},e.isTimeFrozen=function(){return l.isFrozen()},e.now=c,e.prewarm=function(){F().acquire(z);},e.restoreNow=function(){l.restoreNow();},e.setMaxParallelImageRequests=function(e){t.c.MAX_PARALLEL_IMAGE_REQUESTS=e;},e.setNow=function(e){l.setNow(e);},e.setRTLTextPlugin=function(e,t){return ce().setRTLTextPlugin(e,t)},e.setWorkerCount=function(e){R.workerCount=e;},e.setWorkerUrl=function(e){t.c.WORKER_URL=e;};})); - -// -// Our custom intro provides a specialized "define()" function, called by the -// AMD modules below, that sets up the worker blob URL and then executes the -// main module, storing its exported value as 'maplibregl' - - -var maplibregl$1 = maplibregl; - -return maplibregl$1; - -})); -//# sourceMappingURL=maplibre-gl.js.map diff --git a/public/doxa-maps/assets/legacy/upg-neighbor/upg-neighbor.iife.js b/public/doxa-maps/assets/legacy/upg-neighbor/upg-neighbor.iife.js deleted file mode 100644 index 58523ca2e..000000000 --- a/public/doxa-maps/assets/legacy/upg-neighbor/upg-neighbor.iife.js +++ /dev/null @@ -1,548 +0,0 @@ -(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".profile-loader[data-v-8d448c33]{width:100%;height:100%;position:relative}.profile-error[data-v-8d448c33]{padding:1rem;background:#fff3cd;border:1px solid #ffc107;border-radius:4px;font-family:monospace;font-size:13px}")),document.head.appendChild(e)}}catch(d){console.error("vite-plugin-css-injected-by-js",d)}})(); -(function(){"use strict";var xu;const Hf="modulepreload",Df=function(a){return"/"+a},zf={},oi=function(n,e,i){let t=Promise.resolve();function o(r){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=r,window.dispatchEvent(l),!l.defaultPrevented)throw r}return t.then(r=>{for(const l of r||[])l.status==="rejected"&&o(l.reason);return n().catch(o)})};/** -* @vue/shared v3.5.34 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function ro(a){const n=Object.create(null);for(const e of a.split(","))n[e]=1;return e=>e in n}const Fa={},Le=[],Mn=()=>{},tl=()=>!1,qi=a=>a.charCodeAt(0)===111&&a.charCodeAt(1)===110&&(a.charCodeAt(2)>122||a.charCodeAt(2)<97),Xi=a=>a.startsWith("onUpdate:"),Ja=Object.assign,lo=(a,n)=>{const e=a.indexOf(n);e>-1&&a.splice(e,1)},Tu=Object.prototype.hasOwnProperty,Ta=(a,n)=>Tu.call(a,n),Ca=Array.isArray,Re=a=>ri(a)==="[object Map]",ol=a=>ri(a)==="[object Set]",rl=a=>ri(a)==="[object Date]",ka=a=>typeof a=="function",Da=a=>typeof a=="string",Pn=a=>typeof a=="symbol",Na=a=>a!==null&&typeof a=="object",ll=a=>(Na(a)||ka(a))&&ka(a.then)&&ka(a.catch),sl=Object.prototype.toString,ri=a=>sl.call(a),Nu=a=>ri(a).slice(8,-1),Qi=a=>ri(a)==="[object Object]",at=a=>Da(a)&&a!=="NaN"&&a[0]!=="-"&&""+parseInt(a,10)===a,li=ro(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),nt=a=>{const n=Object.create(null);return e=>n[e]||(n[e]=a(e))},Lu=/-\w/g,nn=nt(a=>a.replace(Lu,n=>n.slice(1).toUpperCase())),Ru=/\B([A-Z])/g,yn=nt(a=>a.replace(Ru,"-$1").toLowerCase()),et=nt(a=>a.charAt(0).toUpperCase()+a.slice(1)),so=nt(a=>a?`on${et(a)}`:""),In=(a,n)=>!Object.is(a,n),co=(a,...n)=>{for(let e=0;e{Object.defineProperty(a,n,{configurable:!0,enumerable:!1,writable:i,value:e})},$u=a=>{const n=parseFloat(a);return isNaN(n)?a:n},gl=a=>{const n=Da(a)?Number(a):NaN;return isNaN(n)?a:n};let ul;const it=()=>ul||(ul=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ka(a){if(Ca(a)){const n={};for(let e=0;e{if(e){const i=e.split(Ku);i.length>1&&(n[i[0].trim()]=i[1].trim())}}),n}function Ia(a){let n="";if(Da(a))n=a;else if(Ca(a))for(let e=0;e!!(a&&a.__v_isRef===!0),X=a=>Da(a)?a:a==null?"":Ca(a)||Na(a)&&(a.toString===sl||!ka(a.toString))?pl(a)?X(a.value):JSON.stringify(a,ml,2):String(a),ml=(a,n)=>pl(n)?ml(a,n.value):Re(n)?{[`Map(${n.size})`]:[...n.entries()].reduce((e,[i,t],o)=>(e[uo(i,o)+" =>"]=t,e),{})}:ol(n)?{[`Set(${n.size})`]:[...n.values()].map(e=>uo(e))}:Pn(n)?uo(n):Na(n)&&!Ca(n)&&!Qi(n)?String(n):n,uo=(a,n="")=>{var e;return Pn(a)?`Symbol(${(e=a.description)!=null?e:n})`:a};/** -* @vue/reactivity v3.5.34 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Xa;class hl{constructor(n=!1){this.detached=n,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!n&&Xa&&(Xa.active?(this.parent=Xa,this.index=(Xa.scopes||(Xa.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let n,e;if(this.scopes)for(n=0,e=this.scopes.length;n0&&--this._on===0){if(Xa===this)Xa=this.prevScope;else{let n=Xa;for(;n;){if(n.prevScope===this){n.prevScope=this.prevScope;break}n=n.prevScope}}this.prevScope=void 0}}stop(n){if(this._active){this._active=!1;let e,i;for(e=0,i=this.effects.length;e0)return;if(ci){let n=ci;for(ci=void 0;n;){const e=n.next;n.next=void 0,n.flags&=-9,n=e}}let a;for(;si;){let n=si;for(si=void 0;n;){const e=n.next;if(n.next=void 0,n.flags&=-9,n.flags&1)try{n.trigger()}catch(i){a||(a=i)}n=e}}if(a)throw a}function Pl(a){for(let n=a.deps;n;n=n.nextDep)n.version=-1,n.prevActiveLink=n.dep.activeLink,n.dep.activeLink=n}function Cl(a){let n,e=a.depsTail,i=e;for(;i;){const t=i.prevDep;i.version===-1?(i===e&&(e=t),_o(i),zu(i)):n=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=t}a.deps=n,a.depsTail=e}function bo(a){for(let n=a.deps;n;n=n.nextDep)if(n.dep.version!==n.version||n.dep.computed&&(jl(n.dep.computed)||n.dep.version!==n.version))return!0;return!!a._dirty}function jl(a){if(a.flags&4&&!(a.flags&16)||(a.flags&=-17,a.globalVersion===gi)||(a.globalVersion=gi,!a.isSSR&&a.flags&128&&(!a.deps&&!a._dirty||!bo(a))))return;a.flags|=2;const n=a.dep,e=Oa,i=kn;Oa=a,kn=!0;try{Pl(a);const t=a.fn(a._value);(n.version===0||In(t,a._value))&&(a.flags|=128,a._value=t,n.version++)}catch(t){throw n.version++,t}finally{Oa=e,kn=i,Cl(a),a.flags&=-3}}function _o(a,n=!1){const{dep:e,prevSub:i,nextSub:t}=a;if(i&&(i.nextSub=t,a.prevSub=void 0),t&&(t.prevSub=i,a.nextSub=void 0),e.subs===a&&(e.subs=i,!i&&e.computed)){e.computed.flags&=-5;for(let o=e.computed.deps;o;o=o.nextDep)_o(o,!0)}!n&&!--e.sc&&e.map&&e.map.delete(e.key)}function zu(a){const{prevDep:n,nextDep:e}=a;n&&(n.nextDep=e,a.prevDep=void 0),e&&(e.prevDep=n,a.nextDep=void 0)}let kn=!0;const kl=[];function wn(){kl.push(kn),kn=!1}function xn(){const a=kl.pop();kn=a===void 0?!0:a}function Gl(a){const{cleanup:n}=a;if(a.cleanup=void 0,n){const e=Oa;Oa=void 0;try{n()}finally{Oa=e}}}let gi=0;class Vu{constructor(n,e){this.sub=n,this.dep=e,this.version=e.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class fo{constructor(n){this.computed=n,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(n){if(!Oa||!kn||Oa===this.computed)return;let e=this.activeLink;if(e===void 0||e.sub!==Oa)e=this.activeLink=new Vu(Oa,this),Oa.deps?(e.prevDep=Oa.depsTail,Oa.depsTail.nextDep=e,Oa.depsTail=e):Oa.deps=Oa.depsTail=e,vl(e);else if(e.version===-1&&(e.version=this.version,e.nextDep)){const i=e.nextDep;i.prevDep=e.prevDep,e.prevDep&&(e.prevDep.nextDep=i),e.prevDep=Oa.depsTail,e.nextDep=void 0,Oa.depsTail.nextDep=e,Oa.depsTail=e,Oa.deps===e&&(Oa.deps=i)}return e}trigger(n){this.version++,gi++,this.notify(n)}notify(n){ho();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{yo()}}}function vl(a){if(a.dep.sc++,a.sub.flags&4){const n=a.dep.computed;if(n&&!a.dep.subs){n.flags|=20;for(let i=n.deps;i;i=i.nextDep)vl(i)}const e=a.dep.subs;e!==a&&(a.prevSub=e,e&&(e.nextSub=a)),a.dep.subs=a}}const tt=new WeakMap,Ge=Symbol(""),Po=Symbol(""),ui=Symbol("");function rn(a,n,e){if(kn&&Oa){let i=tt.get(a);i||tt.set(a,i=new Map);let t=i.get(e);t||(i.set(e,t=new fo),t.map=i,t.key=e),t.track()}}function Dn(a,n,e,i,t,o){const r=tt.get(a);if(!r){gi++;return}const l=s=>{s&&s.trigger()};if(ho(),n==="clear")r.forEach(l);else{const s=Ca(a),g=s&&at(e);if(s&&e==="length"){const d=Number(i);r.forEach((_,k)=>{(k==="length"||k===ui||!Pn(k)&&k>=d)&&l(_)})}else switch((e!==void 0||r.has(void 0))&&l(r.get(e)),g&&l(r.get(ui)),n){case"add":s?g&&l(r.get("length")):(l(r.get(Ge)),Re(a)&&l(r.get(Po)));break;case"delete":s||(l(r.get(Ge)),Re(a)&&l(r.get(Po)));break;case"set":Re(a)&&l(r.get(Ge));break}}yo()}function Yu(a,n){const e=tt.get(a);return e&&e.get(n)}function $e(a){const n=wa(a);return n===a?n:(rn(n,"iterate",ui),bn(a)?n:n.map(Gn))}function ot(a){return rn(a=wa(a),"iterate",ui),a}function Tn(a,n){return Yn(a)?Fe(Vn(a)?Gn(n):n):Gn(n)}const Wu={__proto__:null,[Symbol.iterator](){return Co(this,Symbol.iterator,a=>Tn(this,a))},concat(...a){return $e(this).concat(...a.map(n=>Ca(n)?$e(n):n))},entries(){return Co(this,"entries",a=>(a[1]=Tn(this,a[1]),a))},every(a,n){return zn(this,"every",a,n,void 0,arguments)},filter(a,n){return zn(this,"filter",a,n,e=>e.map(i=>Tn(this,i)),arguments)},find(a,n){return zn(this,"find",a,n,e=>Tn(this,e),arguments)},findIndex(a,n){return zn(this,"findIndex",a,n,void 0,arguments)},findLast(a,n){return zn(this,"findLast",a,n,e=>Tn(this,e),arguments)},findLastIndex(a,n){return zn(this,"findLastIndex",a,n,void 0,arguments)},forEach(a,n){return zn(this,"forEach",a,n,void 0,arguments)},includes(...a){return jo(this,"includes",a)},indexOf(...a){return jo(this,"indexOf",a)},join(a){return $e(this).join(a)},lastIndexOf(...a){return jo(this,"lastIndexOf",a)},map(a,n){return zn(this,"map",a,n,void 0,arguments)},pop(){return di(this,"pop")},push(...a){return di(this,"push",a)},reduce(a,...n){return Al(this,"reduce",a,n)},reduceRight(a,...n){return Al(this,"reduceRight",a,n)},shift(){return di(this,"shift")},some(a,n){return zn(this,"some",a,n,void 0,arguments)},splice(...a){return di(this,"splice",a)},toReversed(){return $e(this).toReversed()},toSorted(a){return $e(this).toSorted(a)},toSpliced(...a){return $e(this).toSpliced(...a)},unshift(...a){return di(this,"unshift",a)},values(){return Co(this,"values",a=>Tn(this,a))}};function Co(a,n,e){const i=ot(a),t=i[n]();return i!==a&&!bn(a)&&(t._next=t.next,t.next=()=>{const o=t._next();return o.done||(o.value=e(o.value)),o}),t}const Ju=Array.prototype;function zn(a,n,e,i,t,o){const r=ot(a),l=r!==a&&!bn(a),s=r[n];if(s!==Ju[n]){const _=s.apply(a,o);return l?Gn(_):_}let g=e;r!==a&&(l?g=function(_,k){return e.call(this,Tn(a,_),k,a)}:e.length>2&&(g=function(_,k){return e.call(this,_,k,a)}));const d=s.call(r,g,i);return l&&t?t(d):d}function Al(a,n,e,i){const t=ot(a),o=t!==a&&!bn(a);let r=e,l=!1;t!==a&&(o?(l=i.length===0,r=function(g,d,_){return l&&(l=!1,g=Tn(a,g)),e.call(this,g,Tn(a,d),_,a)}):e.length>3&&(r=function(g,d,_){return e.call(this,g,d,_,a)}));const s=t[n](r,...i);return l?Tn(a,s):s}function jo(a,n,e){const i=wa(a);rn(i,"iterate",ui);const t=i[n](...e);return(t===-1||t===!1)&>(e[0])?(e[0]=wa(e[0]),i[n](...e)):t}function di(a,n,e=[]){wn(),ho();const i=wa(a)[n].apply(a,e);return yo(),xn(),i}const Zu=ro("__proto__,__v_isRef,__isVue"),Sl=new Set(Object.getOwnPropertyNames(Symbol).filter(a=>a!=="arguments"&&a!=="caller").map(a=>Symbol[a]).filter(Pn));function qu(a){Pn(a)||(a=String(a));const n=wa(this);return rn(n,"has",a),n.hasOwnProperty(a)}class El{constructor(n=!1,e=!1){this._isReadonly=n,this._isShallow=e}get(n,e,i){if(e==="__v_skip")return n.__v_skip;const t=this._isReadonly,o=this._isShallow;if(e==="__v_isReactive")return!t;if(e==="__v_isReadonly")return t;if(e==="__v_isShallow")return o;if(e==="__v_raw")return i===(t?o?Nl:Tl:o?xl:wl).get(n)||Object.getPrototypeOf(n)===Object.getPrototypeOf(i)?n:void 0;const r=Ca(n);if(!t){let s;if(r&&(s=Wu[e]))return s;if(e==="hasOwnProperty")return qu}const l=Reflect.get(n,e,Va(n)?n:i);if((Pn(e)?Sl.has(e):Zu(e))||(t||rn(n,"get",e),o))return l;if(Va(l)){const s=r&&at(e)?l:l.value;return t&&Na(s)?Go(s):s}return Na(l)?t?Go(l):pi(l):l}}class Ml extends El{constructor(n=!1){super(!1,n)}set(n,e,i,t){let o=n[e];const r=Ca(n)&&at(e);if(!this._isShallow){const g=Yn(o);if(!bn(i)&&!Yn(i)&&(o=wa(o),i=wa(i)),!r&&Va(o)&&!Va(i))return g||(o.value=i),!0}const l=r?Number(e)a,rt=a=>Reflect.getPrototypeOf(a);function ed(a,n,e){return function(...i){const t=this.__v_raw,o=wa(t),r=Re(o),l=a==="entries"||a===Symbol.iterator&&r,s=a==="keys"&&r,g=t[a](...i),d=e?ko:n?Fe:Gn;return!n&&rn(o,"iterate",s?Po:Ge),Ja(Object.create(g),{next(){const{value:_,done:k}=g.next();return k?{value:_,done:k}:{value:l?[d(_[0]),d(_[1])]:d(_),done:k}}})}}function lt(a){return function(...n){return a==="delete"?!1:a==="clear"?void 0:this}}function id(a,n){const e={get(t){const o=this.__v_raw,r=wa(o),l=wa(t);a||(In(t,l)&&rn(r,"get",t),rn(r,"get",l));const{has:s}=rt(r),g=n?ko:a?Fe:Gn;if(s.call(r,t))return g(o.get(t));if(s.call(r,l))return g(o.get(l));o!==r&&o.get(t)},get size(){const t=this.__v_raw;return!a&&rn(wa(t),"iterate",Ge),t.size},has(t){const o=this.__v_raw,r=wa(o),l=wa(t);return a||(In(t,l)&&rn(r,"has",t),rn(r,"has",l)),t===l?o.has(t):o.has(t)||o.has(l)},forEach(t,o){const r=this,l=r.__v_raw,s=wa(l),g=n?ko:a?Fe:Gn;return!a&&rn(s,"iterate",Ge),l.forEach((d,_)=>t.call(o,g(d),g(_),r))}};return Ja(e,a?{add:lt("add"),set:lt("set"),delete:lt("delete"),clear:lt("clear")}:{add(t){const o=wa(this),r=rt(o),l=wa(t),s=!n&&!bn(t)&&!Yn(t)?l:t;return r.has.call(o,s)||In(t,s)&&r.has.call(o,t)||In(l,s)&&r.has.call(o,l)||(o.add(s),Dn(o,"add",s,s)),this},set(t,o){!n&&!bn(o)&&!Yn(o)&&(o=wa(o));const r=wa(this),{has:l,get:s}=rt(r);let g=l.call(r,t);g||(t=wa(t),g=l.call(r,t));const d=s.call(r,t);return r.set(t,o),g?In(o,d)&&Dn(r,"set",t,o):Dn(r,"add",t,o),this},delete(t){const o=wa(this),{has:r,get:l}=rt(o);let s=r.call(o,t);s||(t=wa(t),s=r.call(o,t)),l&&l.call(o,t);const g=o.delete(t);return s&&Dn(o,"delete",t,void 0),g},clear(){const t=wa(this),o=t.size!==0,r=t.clear();return o&&Dn(t,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(t=>{e[t]=ed(t,a,n)}),e}function st(a,n){const e=id(a,n);return(i,t,o)=>t==="__v_isReactive"?!a:t==="__v_isReadonly"?a:t==="__v_raw"?i:Reflect.get(Ta(e,t)&&t in i?e:i,t,o)}const td={get:st(!1,!1)},od={get:st(!1,!0)},rd={get:st(!0,!1)},ld={get:st(!0,!0)},wl=new WeakMap,xl=new WeakMap,Tl=new WeakMap,Nl=new WeakMap;function sd(a){switch(a){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function cd(a){return a.__v_skip||!Object.isExtensible(a)?0:sd(Nu(a))}function pi(a){return Yn(a)?a:ct(a,!1,Xu,td,wl)}function gd(a){return ct(a,!1,ad,od,xl)}function Go(a){return ct(a,!0,Qu,rd,Tl)}function Yf(a){return ct(a,!0,nd,ld,Nl)}function ct(a,n,e,i,t){if(!Na(a)||a.__v_raw&&!(n&&a.__v_isReactive))return a;const o=cd(a);if(o===0)return a;const r=t.get(a);if(r)return r;const l=new Proxy(a,o===2?i:e);return t.set(a,l),l}function Vn(a){return Yn(a)?Vn(a.__v_raw):!!(a&&a.__v_isReactive)}function Yn(a){return!!(a&&a.__v_isReadonly)}function bn(a){return!!(a&&a.__v_isShallow)}function gt(a){return a?!!a.__v_raw:!1}function wa(a){const n=a&&a.__v_raw;return n?wa(n):a}function mi(a){return!Ta(a,"__v_skip")&&Object.isExtensible(a)&&cl(a,"__v_skip",!0),a}const Gn=a=>Na(a)?pi(a):a,Fe=a=>Na(a)?Go(a):a;function Va(a){return a?a.__v_isRef===!0:!1}function ua(a){return Rl(a,!1)}function Ll(a){return Rl(a,!0)}function Rl(a,n){return Va(a)?a:new ud(a,n)}class ud{constructor(n,e){this.dep=new fo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=e?n:wa(n),this._value=e?n:Gn(n),this.__v_isShallow=e}get value(){return this.dep.track(),this._value}set value(n){const e=this._rawValue,i=this.__v_isShallow||bn(n)||Yn(n);n=i?n:wa(n),In(n,e)&&(this._rawValue=n,this._value=i?n:Gn(n),this.dep.trigger())}}function ha(a){return Va(a)?a.value:a}const dd={get:(a,n,e)=>n==="__v_raw"?a:ha(Reflect.get(a,n,e)),set:(a,n,e,i)=>{const t=a[n];return Va(t)&&!Va(e)?(t.value=e,!0):Reflect.set(a,n,e,i)}};function $l(a){return Vn(a)?a:new Proxy(a,dd)}function pd(a){const n=Ca(a)?new Array(a.length):{};for(const e in a)n[e]=hd(a,e);return n}class md{constructor(n,e,i){this._object=n,this._defaultValue=i,this.__v_isRef=!0,this._value=void 0,this._key=Pn(e)?e:String(e),this._raw=wa(n);let t=!0,o=n;if(!Ca(n)||Pn(this._key)||!at(this._key))do t=!gt(o)||bn(o);while(t&&(o=o.__v_raw));this._shallow=t}get value(){let n=this._object[this._key];return this._shallow&&(n=ha(n)),this._value=n===void 0?this._defaultValue:n}set value(n){if(this._shallow&&Va(this._raw[this._key])){const e=this._object[this._key];if(Va(e)){e.value=n;return}}this._object[this._key]=n}get dep(){return Yu(this._raw,this._key)}}function hd(a,n,e){return new md(a,n,e)}class yd{constructor(n,e,i){this.fn=n,this.setter=e,this._value=void 0,this.dep=new fo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=gi-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!e,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&Oa!==this)return fl(this,!0),!0}get value(){const n=this.dep.track();return jl(this),n&&(n.version=this.dep.version),this._value}set value(n){this.setter&&this.setter(n)}}function bd(a,n,e=!1){let i,t;return ka(a)?i=a:(i=a.get,t=a.set),new yd(i,t,e)}const ut={},dt=new WeakMap;let ve;function _d(a,n=!1,e=ve){if(e){let i=dt.get(e);i||dt.set(e,i=[]),i.push(a)}}function fd(a,n,e=Fa){const{immediate:i,deep:t,once:o,scheduler:r,augmentJob:l,call:s}=e,g=I=>t?I:bn(I)||t===!1||t===0?Wn(I,1):Wn(I);let d,_,k,x,D=!1,T=!1;if(Va(a)?(_=()=>a.value,D=bn(a)):Vn(a)?(_=()=>g(a),D=!0):Ca(a)?(T=!0,D=a.some(I=>Vn(I)||bn(I)),_=()=>a.map(I=>{if(Va(I))return I.value;if(Vn(I))return g(I);if(ka(I))return s?s(I,2):I()})):ka(a)?n?_=s?()=>s(a,2):a:_=()=>{if(k){wn();try{k()}finally{xn()}}const I=ve;ve=d;try{return s?s(a,3,[x]):a(x)}finally{ve=I}}:_=Mn,n&&t){const I=_,G=t===!0?1/0:t;_=()=>Wn(I(),G)}const $=yl(),w=()=>{d.stop(),$&&$.active&&lo($.effects,d)};if(o&&n){const I=n;n=(...G)=>{I(...G),w()}}let L=T?new Array(a.length).fill(ut):ut;const E=I=>{if(!(!(d.flags&1)||!d.dirty&&!I))if(n){const G=d.run();if(t||D||(T?G.some((S,v)=>In(S,L[v])):In(G,L))){k&&k();const S=ve;ve=d;try{const v=[G,L===ut?void 0:T&&L[0]===ut?[]:L,x];L=G,s?s(n,3,v):n(...v)}finally{ve=S}}}else d.run()};return l&&l(E),d=new bl(_),d.scheduler=r?()=>r(E,!1):E,x=I=>_d(I,!1,d),k=d.onStop=()=>{const I=dt.get(d);if(I){if(s)s(I,4);else for(const G of I)G();dt.delete(d)}},n?i?E(!0):L=d.run():r?r(E.bind(null,!0),!0):d.run(),w.pause=d.pause.bind(d),w.resume=d.resume.bind(d),w.stop=w,w}function Wn(a,n=1/0,e){if(n<=0||!Na(a)||a.__v_skip||(e=e||new Map,(e.get(a)||0)>=n))return a;if(e.set(a,n),n--,Va(a))Wn(a.value,n,e);else if(Ca(a))for(let i=0;i{Wn(i,n,e)});else if(Qi(a)){for(const i in a)Wn(a[i],n,e);for(const i of Object.getOwnPropertySymbols(a))Object.prototype.propertyIsEnumerable.call(a,i)&&Wn(a[i],n,e)}return a}/** -* @vue/runtime-core v3.5.34 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const hi=[];let vo=!1;function Wf(a,...n){if(vo)return;vo=!0,wn();const e=hi.length?hi[hi.length-1].component:null,i=e&&e.appContext.config.warnHandler,t=Pd();if(i)Ke(i,e,11,[a+n.map(o=>{var r,l;return(l=(r=o.toString)==null?void 0:r.call(o))!=null?l:JSON.stringify(o)}).join(""),e&&e.proxy,t.map(({vnode:o})=>`at <${xs(e,o.type)}>`).join(` -`),t]);else{const o=[`[Vue warn]: ${a}`,...n];t.length&&o.push(` -`,...Cd(t)),console.warn(...o)}xn(),vo=!1}function Pd(){let a=hi[hi.length-1];if(!a)return[];const n=[];for(;a;){const e=n[0];e&&e.vnode===a?e.recurseCount++:n.push({vnode:a,recurseCount:0});const i=a.component&&a.component.parent;a=i&&i.vnode}return n}function Cd(a){const n=[];return a.forEach((e,i)=>{n.push(...i===0?[]:[` -`],...jd(e))}),n}function jd({vnode:a,recurseCount:n}){const e=n>0?`... (${n} recursive calls)`:"",i=a.component?a.component.parent==null:!1,t=` at <${xs(a.component,a.type,i)}`,o=">"+e;return a.props?[t,...kd(a.props),o]:[t+o]}function kd(a){const n=[],e=Object.keys(a);return e.slice(0,3).forEach(i=>{n.push(...Fl(i,a[i]))}),e.length>3&&n.push(" ..."),n}function Fl(a,n,e){return Da(n)?(n=JSON.stringify(n),e?n:[`${a}=${n}`]):typeof n=="number"||typeof n=="boolean"||n==null?e?n:[`${a}=${n}`]:Va(n)?(n=Fl(a,wa(n.value),!0),e?n:[`${a}=Ref<`,n,">"]):ka(n)?[`${a}=fn${n.name?`<${n.name}>`:""}`]:(n=wa(n),e?n:[`${a}=`,n])}function Ke(a,n,e,i){try{return i?a(...i):a()}catch(t){yi(t,n,e)}}function Nn(a,n,e,i){if(ka(a)){const t=Ke(a,n,e,i);return t&&ll(t)&&t.catch(o=>{yi(o,n,e)}),t}if(Ca(a)){const t=[];for(let o=0;o>>1,t=sn[i],o=_i(t);o=_i(e)?sn.push(a):sn.splice(vd(n),0,a),a.flags|=1,Bl()}}function Bl(){pt||(pt=Kl.then(Hl))}function Ad(a){Ca(a)?Be.push(...a):ce&&a.id===-1?ce.splice(Oe+1,0,a):a.flags&1||(Be.push(a),a.flags|=1),Bl()}function Ol(a,n,e=Ln+1){for(;e_i(e)-_i(i));if(Be.length=0,ce){ce.push(...n);return}for(ce=n,Oe=0;Oea.id==null?a.flags&2?-1:1/0:a.id;function Hl(a){try{for(Ln=0;Ln{i._d&&Ct(-1);const o=mt(n);let r;try{r=a(...t)}finally{mt(o),i._d&&Ct(1)}return r};return i._n=!0,i._c=!0,i._d=!0,i}function Ed(a,n){if(_n===null)return a;const e=vt(_n),i=a.dirs||(a.dirs=[]);for(let t=0;t1)return e&&ka(n)?n.call(i&&i.proxy):n}}function Md(){return!!(ue()||Se)}const Id=Symbol.for("v-scx"),wd=()=>Ya(Id);function xd(a,n){return So(a,null,n)}function cn(a,n,e){return So(a,n,e)}function So(a,n,e=Fa){const{immediate:i,deep:t,flush:o,once:r}=e,l=Ja({},e),s=n&&i||!n&&o!=="post";let g;if(De){if(o==="sync"){const x=wd();g=x.__watcherHandles||(x.__watcherHandles=[])}else if(!s){const x=()=>{};return x.stop=Mn,x.resume=Mn,x.pause=Mn,x}}const d=tn;l.call=(x,D,T)=>Nn(x,d,D,T);let _=!1;o==="post"?l.scheduler=x=>{pn(x,d&&d.suspense)}:o!=="sync"&&(_=!0,l.scheduler=(x,D)=>{D?x():Ao(x)}),l.augmentJob=x=>{n&&(x.flags|=4),_&&(x.flags|=2,d&&(x.id=d.uid,x.i=d))};const k=fd(a,n,l);return De&&(g?g.push(k):s&&k()),k}function Td(a,n,e){const i=this.proxy,t=Da(a)?a.includes(".")?zl(i,a):()=>i[a]:a.bind(i,i);let o;ka(n)?o=n:(o=n.handler,e=n);const r=Ei(this),l=So(t,o.bind(i),e);return r(),l}function zl(a,n){const e=n.split(".");return()=>{let i=a;for(let t=0;ta.__isTeleport,Rd=Symbol("_leaveCb");function Eo(a,n){a.shapeFlag&6&&a.component?(a.transition=n,Eo(a.component.subTree,n)):a.shapeFlag&128?(a.ssContent.transition=n.clone(a.ssContent),a.ssFallback.transition=n.clone(a.ssFallback)):a.transition=n}function fi(a,n){return ka(a)?Ja({name:a.name},n,{setup:a}):a}function Mo(a){a.ids=[a.ids[0]+a.ids[2]+++"-",0,0]}function Vl(a,n){let e;return!!((e=Object.getOwnPropertyDescriptor(a,n))&&!e.configurable)}const ht=new WeakMap;function Pi(a,n,e,i,t=!1){if(Ca(a)){a.forEach((T,$)=>Pi(T,n&&(Ca(n)?n[$]:n),e,i,t));return}if(Ci(i)&&!t){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&Pi(a,n,e,i.component.subTree);return}const o=i.shapeFlag&4?vt(i.component):i.el,r=t?null:o,{i:l,r:s}=a,g=n&&n.r,d=l.refs===Fa?l.refs={}:l.refs,_=l.setupState,k=wa(_),x=_===Fa?tl:T=>Vl(d,T)?!1:Ta(k,T),D=(T,$)=>!($&&Vl(d,$));if(g!=null&&g!==s){if(Yl(n),Da(g))d[g]=null,x(g)&&(_[g]=null);else if(Va(g)){const T=n;D(g,T.k)&&(g.value=null),T.k&&(d[T.k]=null)}}if(ka(s))Ke(s,l,12,[r,d]);else{const T=Da(s),$=Va(s);if(T||$){const w=()=>{if(a.f){const L=T?x(s)?_[s]:d[s]:D()||!a.k?s.value:d[a.k];if(t)Ca(L)&&lo(L,o);else if(Ca(L))L.includes(o)||L.push(o);else if(T)d[s]=[o],x(s)&&(_[s]=d[s]);else{const E=[o];D(s,a.k)&&(s.value=E),a.k&&(d[a.k]=E)}}else T?(d[s]=r,x(s)&&(_[s]=r)):$&&(D(s,a.k)&&(s.value=r),a.k&&(d[a.k]=r))};if(r){const L=()=>{w(),ht.delete(a)};L.id=-1,ht.set(a,L),pn(L,e)}else Yl(a),w()}}}function Yl(a){const n=ht.get(a);n&&(n.flags|=8,ht.delete(a))}const Wl=a=>a.nodeType===8;it().requestIdleCallback,it().cancelIdleCallback;function $d(a,n){if(Wl(a)&&a.data==="["){let e=1,i=a.nextSibling;for(;i;){if(i.nodeType===1){if(n(i)===!1)break}else if(Wl(i))if(i.data==="]"){if(--e===0)break}else i.data==="["&&e++;i=i.nextSibling}}else n(a)}const Ci=a=>!!a.type.__asyncLoader;function Fd(a){ka(a)&&(a={loader:a});const{loader:n,loadingComponent:e,errorComponent:i,delay:t=200,hydrate:o,timeout:r,suspensible:l=!0,onError:s}=a;let g=null,d,_=0;const k=()=>(_++,g=null,x()),x=()=>{let D;return g||(D=g=n().catch(T=>{if(T=T instanceof Error?T:new Error(String(T)),s)return new Promise(($,w)=>{s(T,()=>$(k()),()=>w(T),_+1)});throw T}).then(T=>D!==g&&g?g:(T&&(T.__esModule||T[Symbol.toStringTag]==="Module")&&(T=T.default),d=T,T)))};return fi({name:"AsyncComponentWrapper",__asyncLoader:x,__asyncHydrate(D,T,$){let w=!1;(T.bu||(T.bu=[])).push(()=>w=!0);const L=()=>{w||$()},E=o?()=>{const I=o(L,G=>$d(D,G));I&&(T.bum||(T.bum=[])).push(I)}:L;d?E():x().then(()=>!T.isUnmounted&&E())},get __asyncResolved(){return d},setup(){const D=tn;if(Mo(D),d)return()=>yt(d,D);const T=E=>{g=null,yi(E,D,13,!i)};if(l&&D.suspense||De)return x().then(E=>()=>yt(E,D)).catch(E=>(T(E),()=>i?Wa(i,{error:E}):null));const $=ua(!1),w=ua(),L=ua(!!t);return t&&setTimeout(()=>{L.value=!1},t),r!=null&&setTimeout(()=>{if(!$.value&&!w.value){const E=new Error(`Async component timed out after ${r}ms.`);T(E),w.value=E}},r),x().then(()=>{$.value=!0,D.parent&&Io(D.parent.vnode)&&D.parent.update()}).catch(E=>{T(E),w.value=E}),()=>{if($.value&&d)return yt(d,D);if(w.value&&i)return Wa(i,{error:w.value});if(e&&!L.value)return yt(e,D)}}})}function yt(a,n){const{ref:e,props:i,children:t,ce:o}=n.vnode,r=Wa(a,i,t);return r.ref=e,r.ce=o,delete n.vnode.ce,r}const Io=a=>a.type.__isKeepAlive;function Kd(a,n){Jl(a,"a",n)}function Bd(a,n){Jl(a,"da",n)}function Jl(a,n,e=tn){const i=a.__wdc||(a.__wdc=()=>{let t=e;for(;t;){if(t.isDeactivated)return;t=t.parent}return a()});if(bt(n,i,e),e){let t=e.parent;for(;t&&t.parent;)Io(t.parent.vnode)&&Od(i,n,e,t),t=t.parent}}function Od(a,n,e,i){const t=bt(n,a,i,!0);wo(()=>{lo(i[n],t)},e)}function bt(a,n,e=tn,i=!1){if(e){const t=e[a]||(e[a]=[]),o=n.__weh||(n.__weh=(...r)=>{wn();const l=Ei(e),s=Nn(n,e,a,r);return l(),xn(),s});return i?t.unshift(o):t.push(o),o}}const Jn=a=>(n,e=tn)=>{(!De||a==="sp")&&bt(a,(...i)=>n(...i),e)},Zl=Jn("bm"),Rn=Jn("m"),Ud=Jn("bu"),Hd=Jn("u"),Ue=Jn("bum"),wo=Jn("um"),Dd=Jn("sp"),zd=Jn("rtg"),Vd=Jn("rtc");function Yd(a,n=tn){bt("ec",a,n)}const Wd="components",ql=Symbol.for("v-ndc");function Jd(a){return Da(a)?Zd(Wd,a,!1)||a:a||ql}function Zd(a,n,e=!0,i=!1){const t=_n||tn;if(t){const o=t.type;{const l=ws(o,!1);if(l&&(l===n||l===nn(n)||l===et(nn(n))))return o}const r=Xl(t[a]||o[a],n)||Xl(t.appContext[a],n);return!r&&i?o:r}}function Xl(a,n){return a&&(a[n]||a[nn(n)]||a[et(nn(n))])}function Ua(a,n,e,i){let t;const o=e,r=Ca(a);if(r||Da(a)){const l=r&&Vn(a);let s=!1,g=!1;l&&(s=!bn(a),g=Yn(a),a=ot(a)),t=new Array(a.length);for(let d=0,_=a.length;d<_;d++)t[d]=n(s?g?Fe(Gn(a[d])):Gn(a[d]):a[d],d,void 0,o)}else if(typeof a=="number"){t=new Array(a);for(let l=0;ln(l,s,void 0,o));else{const l=Object.keys(a);t=new Array(l.length);for(let s=0,g=l.length;sa?Es(a)?vt(a):xo(a.parent):null,ji=Ja(Object.create(null),{$:a=>a,$el:a=>a.vnode.el,$data:a=>a.data,$props:a=>a.props,$attrs:a=>a.attrs,$slots:a=>a.slots,$refs:a=>a.refs,$parent:a=>xo(a.parent),$root:a=>xo(a.root),$host:a=>a.ce,$emit:a=>a.emit,$options:a=>es(a),$forceUpdate:a=>a.f||(a.f=()=>{Ao(a.update)}),$nextTick:a=>a.n||(a.n=bi.bind(a.proxy)),$watch:a=>Td.bind(a)}),To=(a,n)=>a!==Fa&&!a.__isScriptSetup&&Ta(a,n),qd={get({_:a},n){if(n==="__v_skip")return!0;const{ctx:e,setupState:i,data:t,props:o,accessCache:r,type:l,appContext:s}=a;if(n[0]!=="$"){const k=r[n];if(k!==void 0)switch(k){case 1:return i[n];case 2:return t[n];case 4:return e[n];case 3:return o[n]}else{if(To(i,n))return r[n]=1,i[n];if(t!==Fa&&Ta(t,n))return r[n]=2,t[n];if(Ta(o,n))return r[n]=3,o[n];if(e!==Fa&&Ta(e,n))return r[n]=4,e[n];No&&(r[n]=0)}}const g=ji[n];let d,_;if(g)return n==="$attrs"&&rn(a.attrs,"get",""),g(a);if((d=l.__cssModules)&&(d=d[n]))return d;if(e!==Fa&&Ta(e,n))return r[n]=4,e[n];if(_=s.config.globalProperties,Ta(_,n))return _[n]},set({_:a},n,e){const{data:i,setupState:t,ctx:o}=a;return To(t,n)?(t[n]=e,!0):i!==Fa&&Ta(i,n)?(i[n]=e,!0):Ta(a.props,n)||n[0]==="$"&&n.slice(1)in a?!1:(o[n]=e,!0)},has({_:{data:a,setupState:n,accessCache:e,ctx:i,appContext:t,props:o,type:r}},l){let s;return!!(e[l]||a!==Fa&&l[0]!=="$"&&Ta(a,l)||To(n,l)||Ta(o,l)||Ta(i,l)||Ta(ji,l)||Ta(t.config.globalProperties,l)||(s=r.__cssModules)&&s[l])},defineProperty(a,n,e){return e.get!=null?a._.accessCache[n]=0:Ta(e,"value")&&this.set(a,n,e.value,null),Reflect.defineProperty(a,n,e)}};function Ql(a){return Ca(a)?a.reduce((n,e)=>(n[e]=null,n),{}):a}let No=!0;function Xd(a){const n=es(a),e=a.proxy,i=a.ctx;No=!1,n.beforeCreate&&as(n.beforeCreate,a,"bc");const{data:t,computed:o,methods:r,watch:l,provide:s,inject:g,created:d,beforeMount:_,mounted:k,beforeUpdate:x,updated:D,activated:T,deactivated:$,beforeDestroy:w,beforeUnmount:L,destroyed:E,unmounted:I,render:G,renderTracked:S,renderTriggered:v,errorCaptured:K,serverPrefetch:O,expose:q,inheritAttrs:sa,components:ea,directives:ga,filters:Sa}=n;if(g&&Qd(g,i,null),r)for(const pa in r){const Y=r[pa];ka(Y)&&(i[pa]=Y.bind(e))}if(t){const pa=t.call(e,e);Na(pa)&&(a.data=pi(pa))}if(No=!0,o)for(const pa in o){const Y=o[pa],ta=ka(Y)?Y.bind(e,e):ka(Y.get)?Y.get.bind(e,e):Mn,aa=!ka(Y)&&ka(Y.set)?Y.set.bind(e):Mn,ba=la({get:ta,set:aa});Object.defineProperty(i,pa,{enumerable:!0,configurable:!0,get:()=>ba.value,set:na=>ba.value=na})}if(l)for(const pa in l)ns(l[pa],i,e,pa);if(s){const pa=ka(s)?s.call(e):s;Reflect.ownKeys(pa).forEach(Y=>{vn(Y,pa[Y])})}d&&as(d,a,"c");function ma(pa,Y){Ca(Y)?Y.forEach(ta=>pa(ta.bind(e))):Y&&pa(Y.bind(e))}if(ma(Zl,_),ma(Rn,k),ma(Ud,x),ma(Hd,D),ma(Kd,T),ma(Bd,$),ma(Yd,K),ma(Vd,S),ma(zd,v),ma(Ue,L),ma(wo,I),ma(Dd,O),Ca(q))if(q.length){const pa=a.exposed||(a.exposed={});q.forEach(Y=>{Object.defineProperty(pa,Y,{get:()=>e[Y],set:ta=>e[Y]=ta,enumerable:!0})})}else a.exposed||(a.exposed={});G&&a.render===Mn&&(a.render=G),sa!=null&&(a.inheritAttrs=sa),ea&&(a.components=ea),ga&&(a.directives=ga),O&&Mo(a)}function Qd(a,n,e=Mn){Ca(a)&&(a=Lo(a));for(const i in a){const t=a[i];let o;Na(t)?"default"in t?o=Ya(t.from||i,t.default,!0):o=Ya(t.from||i):o=Ya(t),Va(o)?Object.defineProperty(n,i,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):n[i]=o}}function as(a,n,e){Nn(Ca(a)?a.map(i=>i.bind(n.proxy)):a.bind(n.proxy),n,e)}function ns(a,n,e,i){let t=i.includes(".")?zl(e,i):()=>e[i];if(Da(a)){const o=n[a];ka(o)&&cn(t,o)}else if(ka(a))cn(t,a.bind(e));else if(Na(a))if(Ca(a))a.forEach(o=>ns(o,n,e,i));else{const o=ka(a.handler)?a.handler.bind(e):n[a.handler];ka(o)&&cn(t,o,a)}}function es(a){const n=a.type,{mixins:e,extends:i}=n,{mixins:t,optionsCache:o,config:{optionMergeStrategies:r}}=a.appContext,l=o.get(n);let s;return l?s=l:!t.length&&!e&&!i?s=n:(s={},t.length&&t.forEach(g=>_t(s,g,r,!0)),_t(s,n,r)),Na(n)&&o.set(n,s),s}function _t(a,n,e,i=!1){const{mixins:t,extends:o}=n;o&&_t(a,o,e,!0),t&&t.forEach(r=>_t(a,r,e,!0));for(const r in n)if(!(i&&r==="expose")){const l=ap[r]||e&&e[r];a[r]=l?l(a[r],n[r]):n[r]}return a}const ap={data:is,props:ts,emits:ts,methods:ki,computed:ki,beforeCreate:gn,created:gn,beforeMount:gn,mounted:gn,beforeUpdate:gn,updated:gn,beforeDestroy:gn,beforeUnmount:gn,destroyed:gn,unmounted:gn,activated:gn,deactivated:gn,errorCaptured:gn,serverPrefetch:gn,components:ki,directives:ki,watch:ep,provide:is,inject:np};function is(a,n){return n?a?function(){return Ja(ka(a)?a.call(this,this):a,ka(n)?n.call(this,this):n)}:n:a}function np(a,n){return ki(Lo(a),Lo(n))}function Lo(a){if(Ca(a)){const n={};for(let e=0;en==="modelValue"||n==="model-value"?a.modelModifiers:a[`${n}Modifiers`]||a[`${nn(n)}Modifiers`]||a[`${yn(n)}Modifiers`];function rp(a,n,...e){if(a.isUnmounted)return;const i=a.vnode.props||Fa;let t=e;const o=n.startsWith("update:"),r=o&&op(i,n.slice(7));r&&(r.trim&&(t=e.map(d=>Da(d)?d.trim():d)),r.number&&(t=e.map($u)));let l,s=i[l=so(n)]||i[l=so(nn(n))];!s&&o&&(s=i[l=so(yn(n))]),s&&Nn(s,a,6,t);const g=i[l+"Once"];if(g){if(!a.emitted)a.emitted={};else if(a.emitted[l])return;a.emitted[l]=!0,Nn(g,a,6,t)}}const lp=new WeakMap;function rs(a,n,e=!1){const i=e?lp:n.emitsCache,t=i.get(a);if(t!==void 0)return t;const o=a.emits;let r={},l=!1;if(!ka(a)){const s=g=>{const d=rs(g,n,!0);d&&(l=!0,Ja(r,d))};!e&&n.mixins.length&&n.mixins.forEach(s),a.extends&&s(a.extends),a.mixins&&a.mixins.forEach(s)}return!o&&!l?(Na(a)&&i.set(a,null),null):(Ca(o)?o.forEach(s=>r[s]=null):Ja(r,o),Na(a)&&i.set(a,r),r)}function ft(a,n){return!a||!qi(n)?!1:(n=n.slice(2).replace(/Once$/,""),Ta(a,n[0].toLowerCase()+n.slice(1))||Ta(a,yn(n))||Ta(a,n))}function Jf(){}function ls(a){const{type:n,vnode:e,proxy:i,withProxy:t,propsOptions:[o],slots:r,attrs:l,emit:s,render:g,renderCache:d,props:_,data:k,setupState:x,ctx:D,inheritAttrs:T}=a,$=mt(a);let w,L;try{if(e.shapeFlag&4){const I=t||i,G=I;w=$n(g.call(G,I,d,_,x,k,D)),L=l}else{const I=n;w=$n(I.length>1?I(_,{attrs:l,slots:r,emit:s}):I(_,null)),L=n.props?l:sp(l)}}catch(I){vi.length=0,yi(I,a,1),w=Wa(ge)}let E=w;if(L&&T!==!1){const I=Object.keys(L),{shapeFlag:G}=E;I.length&&G&7&&(o&&I.some(Xi)&&(L=cp(L,o)),E=He(E,L,!1,!0))}return e.dirs&&(E=He(E,null,!1,!0),E.dirs=E.dirs?E.dirs.concat(e.dirs):e.dirs),e.transition&&Eo(E,e.transition),w=E,mt($),w}const sp=a=>{let n;for(const e in a)(e==="class"||e==="style"||qi(e))&&((n||(n={}))[e]=a[e]);return n},cp=(a,n)=>{const e={};for(const i in a)(!Xi(i)||!(i.slice(9)in n))&&(e[i]=a[i]);return e};function gp(a,n,e){const{props:i,children:t,component:o}=a,{props:r,children:l,patchFlag:s}=n,g=o.emitsOptions;if(n.dirs||n.transition)return!0;if(e&&s>=0){if(s&1024)return!0;if(s&16)return i?ss(i,r,g):!!r;if(s&8){const d=n.dynamicProps;for(let _=0;_Object.create(gs),ds=a=>Object.getPrototypeOf(a)===gs;function dp(a,n,e,i=!1){const t={},o=us();a.propsDefaults=Object.create(null),ps(a,n,t,o);for(const r in a.propsOptions[0])r in t||(t[r]=void 0);e?a.props=i?t:gd(t):a.type.props?a.props=t:a.props=o,a.attrs=o}function pp(a,n,e,i){const{props:t,attrs:o,vnode:{patchFlag:r}}=a,l=wa(t),[s]=a.propsOptions;let g=!1;if((i||r>0)&&!(r&16)){if(r&8){const d=a.vnode.dynamicProps;for(let _=0;_{s=!0;const[k,x]=ms(_,n,!0);Ja(r,k),x&&l.push(...x)};!e&&n.mixins.length&&n.mixins.forEach(d),a.extends&&d(a.extends),a.mixins&&a.mixins.forEach(d)}if(!o&&!s)return Na(a)&&i.set(a,Le),Le;if(Ca(o))for(let d=0;da==="_"||a==="_ctx"||a==="$stable",Fo=a=>Ca(a)?a.map($n):[$n(a)],hp=(a,n,e)=>{if(n._n)return n;const i=Sd((...t)=>Fo(n(...t)),e);return i._c=!1,i},ys=(a,n,e)=>{const i=a._ctx;for(const t in a){if($o(t))continue;const o=a[t];if(ka(o))n[t]=hp(t,o,i);else if(o!=null){const r=Fo(o);n[t]=()=>r}}},bs=(a,n)=>{const e=Fo(n);a.slots.default=()=>e},_s=(a,n,e)=>{for(const i in n)(e||!$o(i))&&(a[i]=n[i])},yp=(a,n,e)=>{const i=a.slots=us();if(a.vnode.shapeFlag&32){const t=n._;t?(_s(i,n,e),e&&cl(i,"_",t,!0)):ys(n,i)}else n&&bs(a,n)},bp=(a,n,e)=>{const{vnode:i,slots:t}=a;let o=!0,r=Fa;if(i.shapeFlag&32){const l=n._;l?e&&l===1?o=!1:_s(t,n,e):(o=!n.$stable,ys(n,t)),r=n}else n&&(bs(a,n),r={default:1});if(o)for(const l in t)!$o(l)&&r[l]==null&&delete t[l]},pn=jp;function _p(a){return fp(a)}function fp(a,n){const e=it();e.__VUE__=!0;const{insert:i,remove:t,patchProp:o,createElement:r,createText:l,createComment:s,setText:g,setElementText:d,parentNode:_,nextSibling:k,setScopeId:x=Mn,insertStaticContent:D}=a,T=(h,C,y,R=null,H=null,V=null,oa=void 0,Q=null,m=!!C.dynamicChildren)=>{if(h===C)return;h&&!Si(h,C)&&(R=P(h),na(h,H,V,!0),h=null),C.patchFlag===-2&&(m=!1,C.dynamicChildren=null);const{type:b,ref:F,shapeFlag:J}=C;switch(b){case Gi:$(h,C,y,R);break;case ge:w(h,C,y,R);break;case Pt:h==null&&L(C,y,R,oa);break;case Aa:ea(h,C,y,R,H,V,oa,Q,m);break;default:J&1?G(h,C,y,R,H,V,oa,Q,m):J&6?ga(h,C,y,R,H,V,oa,Q,m):(J&64||J&128)&&b.process(h,C,y,R,H,V,oa,Q,m,N)}F!=null&&H?Pi(F,h&&h.ref,V,C||h,!C):F==null&&h&&h.ref!=null&&Pi(h.ref,null,V,h,!0)},$=(h,C,y,R)=>{if(h==null)i(C.el=l(C.children),y,R);else{const H=C.el=h.el;C.children!==h.children&&g(H,C.children)}},w=(h,C,y,R)=>{h==null?i(C.el=s(C.children||""),y,R):C.el=h.el},L=(h,C,y,R)=>{[h.el,h.anchor]=D(h.children,C,y,R,h.el,h.anchor)},E=({el:h,anchor:C},y,R)=>{let H;for(;h&&h!==C;)H=k(h),i(h,y,R),h=H;i(C,y,R)},I=({el:h,anchor:C})=>{let y;for(;h&&h!==C;)y=k(h),t(h),h=y;t(C)},G=(h,C,y,R,H,V,oa,Q,m)=>{if(C.type==="svg"?oa="svg":C.type==="math"&&(oa="mathml"),h==null)S(C,y,R,H,V,oa,Q,m);else{const b=h.el&&h.el._isVueCE?h.el:null;try{b&&b._beginPatch(),O(h,C,H,V,oa,Q,m)}finally{b&&b._endPatch()}}},S=(h,C,y,R,H,V,oa,Q)=>{let m,b;const{props:F,shapeFlag:J,transition:ca,dirs:ra}=h;if(m=h.el=r(h.type,V,F&&F.is,F),J&8?d(m,h.children):J&16&&K(h.children,m,null,R,H,Ko(h,V),oa,Q),ra&&Ae(h,null,R,"created"),v(m,h,h.scopeId,oa,R),F){for(const Z in F)Z!=="value"&&!li(Z)&&o(m,Z,null,F[Z],V,R);"value"in F&&o(m,"value",null,F.value,V),(b=F.onVnodeBeforeMount)&&Fn(b,R,h)}ra&&Ae(h,null,R,"beforeMount");const B=Pp(H,ca);B&&ca.beforeEnter(m),i(m,C,y),((b=F&&F.onVnodeMounted)||B||ra)&&pn(()=>{try{b&&Fn(b,R,h),B&&ca.enter(m),ra&&Ae(h,null,R,"mounted")}finally{}},H)},v=(h,C,y,R,H)=>{if(y&&x(h,y),R)for(let V=0;V{for(let b=m;b{const Q=C.el=h.el;let{patchFlag:m,dynamicChildren:b,dirs:F}=C;m|=h.patchFlag&16;const J=h.props||Fa,ca=C.props||Fa;let ra;if(y&&Ee(y,!1),(ra=ca.onVnodeBeforeUpdate)&&Fn(ra,y,C,h),F&&Ae(C,h,y,"beforeUpdate"),y&&Ee(y,!0),(J.innerHTML&&ca.innerHTML==null||J.textContent&&ca.textContent==null)&&d(Q,""),b?q(h.dynamicChildren,b,Q,y,R,Ko(C,H),V):oa||Y(h,C,Q,null,y,R,Ko(C,H),V,!1),m>0){if(m&16)sa(Q,J,ca,y,H);else if(m&2&&J.class!==ca.class&&o(Q,"class",null,ca.class,H),m&4&&o(Q,"style",J.style,ca.style,H),m&8){const B=C.dynamicProps;for(let Z=0;Z{ra&&Fn(ra,y,C,h),F&&Ae(C,h,y,"updated")},R)},q=(h,C,y,R,H,V,oa)=>{for(let Q=0;Q{if(C!==y){if(C!==Fa)for(const V in C)!li(V)&&!(V in y)&&o(h,V,C[V],null,H,R);for(const V in y){if(li(V))continue;const oa=y[V],Q=C[V];oa!==Q&&V!=="value"&&o(h,V,Q,oa,H,R)}"value"in y&&o(h,"value",C.value,y.value,H)}},ea=(h,C,y,R,H,V,oa,Q,m)=>{const b=C.el=h?h.el:l(""),F=C.anchor=h?h.anchor:l("");let{patchFlag:J,dynamicChildren:ca,slotScopeIds:ra}=C;ra&&(Q=Q?Q.concat(ra):ra),h==null?(i(b,y,R),i(F,y,R),K(C.children||[],y,F,H,V,oa,Q,m)):J>0&&J&64&&ca&&h.dynamicChildren&&h.dynamicChildren.length===ca.length?(q(h.dynamicChildren,ca,y,H,V,oa,Q),(C.key!=null||H&&C===H.subTree)&&fs(h,C,!0)):Y(h,C,y,F,H,V,oa,Q,m)},ga=(h,C,y,R,H,V,oa,Q,m)=>{C.slotScopeIds=Q,h==null?C.shapeFlag&512?H.ctx.activate(C,y,R,oa,m):Sa(C,y,R,H,V,oa,m):Ma(h,C,m)},Sa=(h,C,y,R,H,V,oa)=>{const Q=h.component=Mp(h,R,H);if(Io(h)&&(Q.ctx.renderer=N),Ip(Q,!1,oa),Q.asyncDep){if(H&&H.registerDep(Q,ma,oa),!h.el){const m=Q.subTree=Wa(ge);w(null,m,C,y),h.placeholder=m.el}}else ma(Q,h,C,y,H,V,oa)},Ma=(h,C,y)=>{const R=C.component=h.component;if(gp(h,C,y))if(R.asyncDep&&!R.asyncResolved){pa(R,C,y);return}else R.next=C,R.update();else C.el=h.el,R.vnode=C},ma=(h,C,y,R,H,V,oa)=>{const Q=()=>{if(h.isMounted){let{next:J,bu:ca,u:ra,parent:B,vnode:Z}=h;{const qa=Ps(h);if(qa){J&&(J.el=Z.el,pa(h,J,oa)),qa.asyncDep.then(()=>{pn(()=>{h.isUnmounted||b()},H)});return}}let _a=J,va;Ee(h,!1),J?(J.el=Z.el,pa(h,J,oa)):J=Z,ca&&co(ca),(va=J.props&&J.props.onVnodeBeforeUpdate)&&Fn(va,B,J,Z),Ee(h,!0);const Ra=ls(h),an=h.subTree;h.subTree=Ra,T(an,Ra,_(an.el),P(an),h,H,V),J.el=Ra.el,_a===null&&up(h,Ra.el),ra&&pn(ra,H),(va=J.props&&J.props.onVnodeUpdated)&&pn(()=>Fn(va,B,J,Z),H)}else{let J;const{el:ca,props:ra}=C,{bm:B,m:Z,parent:_a,root:va,type:Ra}=h,an=Ci(C);Ee(h,!1),B&&co(B),!an&&(J=ra&&ra.onVnodeBeforeMount)&&Fn(J,_a,C),Ee(h,!0);{va.ce&&va.ce._hasShadowRoot()&&va.ce._injectChildStyle(Ra,h.parent?h.parent.type:void 0);const qa=h.subTree=ls(h);T(null,qa,y,R,h,H,V),C.el=qa.el}if(Z&&pn(Z,H),!an&&(J=ra&&ra.onVnodeMounted)){const qa=C;pn(()=>Fn(J,_a,qa),H)}(C.shapeFlag&256||_a&&Ci(_a.vnode)&&_a.vnode.shapeFlag&256)&&h.a&&pn(h.a,H),h.isMounted=!0,C=y=R=null}};h.scope.on();const m=h.effect=new bl(Q);h.scope.off();const b=h.update=m.run.bind(m),F=h.job=m.runIfDirty.bind(m);F.i=h,F.id=h.uid,m.scheduler=()=>Ao(F),Ee(h,!0),b()},pa=(h,C,y)=>{C.component=h;const R=h.vnode.props;h.vnode=C,h.next=null,pp(h,C.props,R,y),bp(h,C.children,y),wn(),Ol(h),xn()},Y=(h,C,y,R,H,V,oa,Q,m=!1)=>{const b=h&&h.children,F=h?h.shapeFlag:0,J=C.children,{patchFlag:ca,shapeFlag:ra}=C;if(ca>0){if(ca&128){aa(b,J,y,R,H,V,oa,Q,m);return}else if(ca&256){ta(b,J,y,R,H,V,oa,Q,m);return}}ra&8?(F&16&&c(b,H,V),J!==b&&d(y,J)):F&16?ra&16?aa(b,J,y,R,H,V,oa,Q,m):c(b,H,V,!0):(F&8&&d(y,""),ra&16&&K(J,y,R,H,V,oa,Q,m))},ta=(h,C,y,R,H,V,oa,Q,m)=>{h=h||Le,C=C||Le;const b=h.length,F=C.length,J=Math.min(b,F);let ca;for(ca=0;caF?c(h,H,V,!0,!1,J):K(C,y,R,H,V,oa,Q,m,J)},aa=(h,C,y,R,H,V,oa,Q,m)=>{let b=0;const F=C.length;let J=h.length-1,ca=F-1;for(;b<=J&&b<=ca;){const ra=h[b],B=C[b]=m?Zn(C[b]):$n(C[b]);if(Si(ra,B))T(ra,B,y,null,H,V,oa,Q,m);else break;b++}for(;b<=J&&b<=ca;){const ra=h[J],B=C[ca]=m?Zn(C[ca]):$n(C[ca]);if(Si(ra,B))T(ra,B,y,null,H,V,oa,Q,m);else break;J--,ca--}if(b>J){if(b<=ca){const ra=ca+1,B=raca)for(;b<=J;)na(h[b],H,V,!0),b++;else{const ra=b,B=b,Z=new Map;for(b=B;b<=ca;b++){const Ba=C[b]=m?Zn(C[b]):$n(C[b]);Ba.key!=null&&Z.set(Ba.key,b)}let _a,va=0;const Ra=ca-B+1;let an=!1,qa=0;const Pa=new Array(Ra);for(b=0;b=Ra){na(Ba,H,V,!0);continue}let dn;if(Ba.key!=null)dn=Z.get(Ba.key);else for(_a=B;_a<=ca;_a++)if(Pa[_a-B]===0&&Si(Ba,C[_a])){dn=_a;break}dn===void 0?na(Ba,H,V,!0):(Pa[dn-B]=b+1,dn>=qa?qa=dn:an=!0,T(Ba,C[dn],y,null,H,V,oa,Q,m),va++)}const $a=an?Cp(Pa):Le;for(_a=$a.length-1,b=Ra-1;b>=0;b--){const Ba=B+b,dn=C[Ba],Ne=C[Ba+1],hn=Ba+1{const{el:V,type:oa,transition:Q,children:m,shapeFlag:b}=h;if(b&6){ba(h.component.subTree,C,y,R);return}if(b&128){h.suspense.move(C,y,R);return}if(b&64){oa.move(h,C,y,N);return}if(oa===Aa){i(V,C,y);for(let J=0;JQ.enter(V),H);else{const{leave:J,delayLeave:ca,afterLeave:ra}=Q,B=()=>{h.ctx.isUnmounted?t(V):i(V,C,y)},Z=()=>{V._isLeaving&&V[Rd](!0),J(V,()=>{B(),ra&&ra()})};ca?ca(V,B,Z):Z()}else i(V,C,y)},na=(h,C,y,R=!1,H=!1)=>{const{type:V,props:oa,ref:Q,children:m,dynamicChildren:b,shapeFlag:F,patchFlag:J,dirs:ca,cacheIndex:ra,memo:B}=h;if(J===-2&&(H=!1),Q!=null&&(wn(),Pi(Q,null,y,h,!0),xn()),ra!=null&&(C.renderCache[ra]=void 0),F&256){C.ctx.deactivate(h);return}const Z=F&1&&ca,_a=!Ci(h);let va;if(_a&&(va=oa&&oa.onVnodeBeforeUnmount)&&Fn(va,C,h),F&6)j(h.component,y,R);else{if(F&128){h.suspense.unmount(y,R);return}Z&&Ae(h,null,C,"beforeUnmount"),F&64?h.type.remove(h,C,y,N,R):b&&!b.hasOnce&&(V!==Aa||J>0&&J&64)?c(b,C,y,!1,!0):(V===Aa&&J&384||!H&&F&16)&&c(m,C,y),R&&u(h)}const Ra=B!=null&&ra==null;(_a&&(va=oa&&oa.onVnodeUnmounted)||Z||Ra)&&pn(()=>{va&&Fn(va,C,h),Z&&Ae(h,null,C,"unmounted"),Ra&&(h.el=null)},y)},u=h=>{const{type:C,el:y,anchor:R,transition:H}=h;if(C===Aa){A(y,R);return}if(C===Pt){I(h);return}const V=()=>{t(y),H&&!H.persisted&&H.afterLeave&&H.afterLeave()};if(h.shapeFlag&1&&H&&!H.persisted){const{leave:oa,delayLeave:Q}=H,m=()=>oa(y,V);Q?Q(h.el,V,m):m()}else V()},A=(h,C)=>{let y;for(;h!==C;)y=k(h),t(h),h=y;t(C)},j=(h,C,y)=>{const{bum:R,scope:H,job:V,subTree:oa,um:Q,m,a:b}=h;Cs(m),Cs(b),R&&co(R),H.stop(),V&&(V.flags|=8,na(oa,h,C,y)),Q&&pn(Q,C),pn(()=>{h.isUnmounted=!0},C)},c=(h,C,y,R=!1,H=!1,V=0)=>{for(let oa=V;oa{if(h.shapeFlag&6)return P(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const C=k(h.anchor||h.el),y=C&&C[Nd];return y?k(y):C};let p=!1;const M=(h,C,y)=>{let R;h==null?C._vnode&&(na(C._vnode,null,null,!0),R=C._vnode.component):T(C._vnode||null,h,C,null,null,null,y),C._vnode=h,p||(p=!0,Ol(R),Ul(),p=!1)},N={p:T,um:na,m:ba,r:u,mt:Sa,mc:K,pc:Y,pbc:q,n:P,o:a};return{render:M,hydrate:void 0,createApp:tp(M)}}function Ko({type:a,props:n},e){return e==="svg"&&a==="foreignObject"||e==="mathml"&&a==="annotation-xml"&&n&&n.encoding&&n.encoding.includes("html")?void 0:e}function Ee({effect:a,job:n},e){e?(a.flags|=32,n.flags|=4):(a.flags&=-33,n.flags&=-5)}function Pp(a,n){return(!a||a&&!a.pendingBranch)&&n&&!n.persisted}function fs(a,n,e=!1){const i=a.children,t=n.children;if(Ca(i)&&Ca(t))for(let o=0;o>1,a[e[l]]0&&(n[i]=e[o-1]),e[o]=i)}}for(o=e.length,r=e[o-1];o-- >0;)e[o]=r,r=n[r];return e}function Ps(a){const n=a.subTree.component;if(n)return n.asyncDep&&!n.asyncResolved?n:Ps(n)}function Cs(a){if(a)for(let n=0;na.__isSuspense;function jp(a,n){n&&n.pendingBranch?Ca(a)?n.effects.push(...a):n.effects.push(a):Ad(a)}const Aa=Symbol.for("v-fgt"),Gi=Symbol.for("v-txt"),ge=Symbol.for("v-cmt"),Pt=Symbol.for("v-stc"),vi=[];let fn=null;function z(a=!1){vi.push(fn=a?null:[])}function kp(){vi.pop(),fn=vi[vi.length-1]||null}let Ai=1;function Ct(a,n=!1){Ai+=a,a<0&&fn&&n&&(fn.hasOnce=!0)}function Gs(a){return a.dynamicChildren=Ai>0?fn||Le:null,kp(),Ai>0&&fn&&fn.push(a),a}function W(a,n,e,i,t,o){return Gs(f(a,n,e,i,t,o,!0))}function Me(a,n,e,i,t){return Gs(Wa(a,n,e,i,t,!0))}function jt(a){return a?a.__v_isVNode===!0:!1}function Si(a,n){return a.type===n.type&&a.key===n.key}const vs=({key:a})=>a??null,kt=({ref:a,ref_key:n,ref_for:e})=>(typeof a=="number"&&(a=""+a),a!=null?Da(a)||Va(a)||ka(a)?{i:_n,r:a,k:n,f:!!e}:a:null);function f(a,n=null,e=null,i=0,t=null,o=a===Aa?0:1,r=!1,l=!1){const s={__v_isVNode:!0,__v_skip:!0,type:a,props:n,key:n&&vs(n),ref:n&&kt(n),scopeId:Dl,slotScopeIds:null,children:e,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:i,dynamicProps:t,dynamicChildren:null,appContext:null,ctx:_n};return l?(Bo(s,e),o&128&&a.normalize(s)):e&&(s.shapeFlag|=Da(e)?8:16),Ai>0&&!r&&fn&&(s.patchFlag>0||o&6)&&s.patchFlag!==32&&fn.push(s),s}const Wa=Gp;function Gp(a,n=null,e=null,i=0,t=null,o=!1){if((!a||a===ql)&&(a=ge),jt(a)){const l=He(a,n,!0);return e&&Bo(l,e),Ai>0&&!o&&fn&&(l.shapeFlag&6?fn[fn.indexOf(a)]=l:fn.push(l)),l.patchFlag=-2,l}if(Rp(a)&&(a=a.__vccOpts),n){n=vp(n);let{class:l,style:s}=n;l&&!Da(l)&&(n.class=Ia(l)),Na(s)&&(gt(s)&&!Ca(s)&&(s=Ja({},s)),n.style=Ka(s))}const r=Da(a)?1:ks(a)?128:Ld(a)?64:Na(a)?4:ka(a)?2:0;return f(a,n,e,i,t,r,o,!0)}function vp(a){return a?gt(a)||ds(a)?Ja({},a):a:null}function He(a,n,e=!1,i=!1){const{props:t,ref:o,patchFlag:r,children:l,transition:s}=a,g=n?Ap(t||{},n):t,d={__v_isVNode:!0,__v_skip:!0,type:a.type,props:g,key:g&&vs(g),ref:n&&n.ref?e&&o?Ca(o)?o.concat(kt(n)):[o,kt(n)]:kt(n):o,scopeId:a.scopeId,slotScopeIds:a.slotScopeIds,children:l,target:a.target,targetStart:a.targetStart,targetAnchor:a.targetAnchor,staticCount:a.staticCount,shapeFlag:a.shapeFlag,patchFlag:n&&a.type!==Aa?r===-1?16:r|16:r,dynamicProps:a.dynamicProps,dynamicChildren:a.dynamicChildren,appContext:a.appContext,dirs:a.dirs,transition:s,component:a.component,suspense:a.suspense,ssContent:a.ssContent&&He(a.ssContent),ssFallback:a.ssFallback&&He(a.ssFallback),placeholder:a.placeholder,el:a.el,anchor:a.anchor,ctx:a.ctx,ce:a.ce};return s&&i&&Eo(d,s.clone(d)),d}function ya(a=" ",n=0){return Wa(Gi,null,a,n)}function As(a,n){const e=Wa(Pt,null,a);return e.staticCount=n,e}function fa(a="",n=!1){return n?(z(),Me(ge,null,a)):Wa(ge,null,a)}function $n(a){return a==null||typeof a=="boolean"?Wa(ge):Ca(a)?Wa(Aa,null,a.slice()):jt(a)?Zn(a):Wa(Gi,null,String(a))}function Zn(a){return a.el===null&&a.patchFlag!==-1||a.memo?a:He(a)}function Bo(a,n){let e=0;const{shapeFlag:i}=a;if(n==null)n=null;else if(Ca(n))e=16;else if(typeof n=="object")if(i&65){const t=n.default;t&&(t._c&&(t._d=!1),Bo(a,t()),t._c&&(t._d=!0));return}else{e=32;const t=n._;!t&&!ds(n)?n._ctx=_n:t===3&&_n&&(_n.slots._===1?n._=1:(n._=2,a.patchFlag|=1024))}else ka(n)?(n={default:n,_ctx:_n},e=32):(n=String(n),i&64?(e=16,n=[ya(n)]):e=8);a.children=n,a.shapeFlag|=e}function Ap(...a){const n={};for(let e=0;etn||_n;let Gt,Oo;{const a=it(),n=(e,i)=>{let t;return(t=a[e])||(t=a[e]=[]),t.push(i),o=>{t.length>1?t.forEach(r=>r(o)):t[0](o)}};Gt=n("__VUE_INSTANCE_SETTERS__",e=>tn=e),Oo=n("__VUE_SSR_SETTERS__",e=>De=e)}const Ei=a=>{const n=tn;return Gt(a),a.scope.on(),()=>{a.scope.off(),Gt(n)}},Ss=()=>{tn&&tn.scope.off(),Gt(null)};function Es(a){return a.vnode.shapeFlag&4}let De=!1;function Ip(a,n=!1,e=!1){n&&Oo(n);const{props:i,children:t}=a.vnode,o=Es(a);dp(a,i,o,n),yp(a,t,e||n);const r=o?wp(a,n):void 0;return n&&Oo(!1),r}function wp(a,n){const e=a.type;a.accessCache=Object.create(null),a.proxy=new Proxy(a.ctx,qd);const{setup:i}=e;if(i){wn();const t=a.setupContext=i.length>1?Tp(a):null,o=Ei(a),r=Ke(i,a,0,[a.props,t]),l=ll(r);if(xn(),o(),(l||a.sp)&&!Ci(a)&&Mo(a),l){if(r.then(Ss,Ss),n)return r.then(s=>{Ms(a,s)}).catch(s=>{yi(s,a,0)});a.asyncDep=r}else Ms(a,r)}else Is(a)}function Ms(a,n,e){ka(n)?a.type.__ssrInlineRender?a.ssrRender=n:a.render=n:Na(n)&&(a.setupState=$l(n)),Is(a)}function Is(a,n,e){const i=a.type;a.render||(a.render=i.render||Mn);{const t=Ei(a);wn();try{Xd(a)}finally{xn(),t()}}}const xp={get(a,n){return rn(a,"get",""),a[n]}};function Tp(a){const n=e=>{a.exposed=e||{}};return{attrs:new Proxy(a.attrs,xp),slots:a.slots,emit:a.emit,expose:n}}function vt(a){return a.exposed?a.exposeProxy||(a.exposeProxy=new Proxy($l(mi(a.exposed)),{get(n,e){if(e in n)return n[e];if(e in ji)return ji[e](a)},has(n,e){return e in n||e in ji}})):a.proxy}const Np=/(?:^|[-_])\w/g,Lp=a=>a.replace(Np,n=>n.toUpperCase()).replace(/[-_]/g,"");function ws(a,n=!0){return ka(a)?a.displayName||a.name:a.name||n&&a.__name}function xs(a,n,e=!1){let i=ws(n);if(!i&&n.__file){const t=n.__file.match(/([^/\\]+)\.\w+$/);t&&(i=t[1])}if(!i&&a){const t=o=>{for(const r in o)if(o[r]===n)return r};i=t(a.components)||a.parent&&t(a.parent.type.components)||t(a.appContext.components)}return i?Lp(i):e?"App":"Anonymous"}function Rp(a){return ka(a)&&"__vccOpts"in a}const la=(a,n)=>bd(a,n,De);function Ts(a,n,e){try{Ct(-1);const i=arguments.length;return i===2?Na(n)&&!Ca(n)?jt(n)?Wa(a,null,[n]):Wa(a,n):Wa(a,null,n):(i>3?e=Array.prototype.slice.call(arguments,2):i===3&&jt(e)&&(e=[e]),Wa(a,n,e))}finally{Ct(1)}}const $p="3.5.34";/** -* @vue/runtime-dom v3.5.34 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Uo;const Ns=typeof window<"u"&&window.trustedTypes;if(Ns)try{Uo=Ns.createPolicy("vue",{createHTML:a=>a})}catch{}const Ls=Uo?a=>Uo.createHTML(a):a=>a,Fp="http://www.w3.org/2000/svg",Kp="http://www.w3.org/1998/Math/MathML",qn=typeof document<"u"?document:null,Rs=qn&&qn.createElement("template"),Bp={insert:(a,n,e)=>{n.insertBefore(a,e||null)},remove:a=>{const n=a.parentNode;n&&n.removeChild(a)},createElement:(a,n,e,i)=>{const t=n==="svg"?qn.createElementNS(Fp,a):n==="mathml"?qn.createElementNS(Kp,a):e?qn.createElement(a,{is:e}):qn.createElement(a);return a==="select"&&i&&i.multiple!=null&&t.setAttribute("multiple",i.multiple),t},createText:a=>qn.createTextNode(a),createComment:a=>qn.createComment(a),setText:(a,n)=>{a.nodeValue=n},setElementText:(a,n)=>{a.textContent=n},parentNode:a=>a.parentNode,nextSibling:a=>a.nextSibling,querySelector:a=>qn.querySelector(a),setScopeId(a,n){a.setAttribute(n,"")},insertStaticContent(a,n,e,i,t,o){const r=e?e.previousSibling:n.lastChild;if(t&&(t===o||t.nextSibling))for(;n.insertBefore(t.cloneNode(!0),e),!(t===o||!(t=t.nextSibling)););else{Rs.innerHTML=Ls(i==="svg"?`${a}`:i==="mathml"?`${a}`:a);const l=Rs.content;if(i==="svg"||i==="mathml"){const s=l.firstChild;for(;s.firstChild;)l.appendChild(s.firstChild);l.removeChild(s)}n.insertBefore(l,e)}return[r?r.nextSibling:n.firstChild,e?e.previousSibling:n.lastChild]}},Op=Symbol("_vtc");function Up(a,n,e){const i=a[Op];i&&(n=(n?[n,...i]:[...i]).join(" ")),n==null?a.removeAttribute("class"):e?a.setAttribute("class",n):a.className=n}const At=Symbol("_vod"),$s=Symbol("_vsh"),Hp={name:"show",beforeMount(a,{value:n},{transition:e}){a[At]=a.style.display==="none"?"":a.style.display,e&&n?e.beforeEnter(a):Mi(a,n)},mounted(a,{value:n},{transition:e}){e&&n&&e.enter(a)},updated(a,{value:n,oldValue:e},{transition:i}){!n!=!e&&(i?n?(i.beforeEnter(a),Mi(a,!0),i.enter(a)):i.leave(a,()=>{Mi(a,!1)}):Mi(a,n))},beforeUnmount(a,{value:n}){Mi(a,n)}};function Mi(a,n){a.style.display=n?a[At]:"none",a[$s]=!n}const Dp=Symbol(""),zp=/(?:^|;)\s*display\s*:/;function Vp(a,n,e){const i=a.style,t=Da(e);let o=!1;if(e&&!t){if(n)if(Da(n))for(const r of n.split(";")){const l=r.slice(0,r.indexOf(":")).trim();e[l]==null&&Ii(i,l,"")}else for(const r in n)e[r]==null&&Ii(i,r,"");for(const r in e){r==="display"&&(o=!0);const l=e[r];l!=null?Wp(a,r,!Da(n)&&n?n[r]:void 0,l)||Ii(i,r,l):Ii(i,r,"")}}else if(t){if(n!==e){const r=i[Dp];r&&(e+=";"+r),i.cssText=e,o=zp.test(e)}}else n&&a.removeAttribute("style");At in a&&(a[At]=o?i.display:"",a[$s]&&(i.display="none"))}const Fs=/\s*!important$/;function Ii(a,n,e){if(Ca(e))e.forEach(i=>Ii(a,n,i));else if(e==null&&(e=""),n.startsWith("--"))a.setProperty(n,e);else{const i=Yp(a,n);Fs.test(e)?a.setProperty(yn(i),e.replace(Fs,""),"important"):a[i]=e}}const Ks=["Webkit","Moz","ms"],Ho={};function Yp(a,n){const e=Ho[n];if(e)return e;let i=nn(n);if(i!=="filter"&&i in a)return Ho[n]=i;i=et(i);for(let t=0;tDo||(Qp.then(()=>Do=0),Do=Date.now());function nm(a,n){const e=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=e.attached)return;Nn(em(i,e.value),n,5,[i])};return e.value=a,e.attached=am(),e}function em(a,n){if(Ca(n)){const e=a.stopImmediatePropagation;return a.stopImmediatePropagation=()=>{e.call(a),a._stopped=!0},n.map(i=>t=>!t._stopped&&i&&i(t))}else return n}const zs=a=>a.charCodeAt(0)===111&&a.charCodeAt(1)===110&&a.charCodeAt(2)>96&&a.charCodeAt(2)<123,im=(a,n,e,i,t,o)=>{const r=t==="svg";n==="class"?Up(a,i,r):n==="style"?Vp(a,e,i):qi(n)?Xi(n)||qp(a,n,e,i,o):(n[0]==="."?(n=n.slice(1),!0):n[0]==="^"?(n=n.slice(1),!1):tm(a,n,i,r))?(Us(a,n,i),!a.tagName.includes("-")&&(n==="value"||n==="checked"||n==="selected")&&Os(a,n,i,r,o,n!=="value")):a._isVueCE&&(om(a,n)||a._def.__asyncLoader&&(/[A-Z]/.test(n)||!Da(i)))?Us(a,nn(n),i,o,n):(n==="true-value"?a._trueValue=i:n==="false-value"&&(a._falseValue=i),Os(a,n,i,r))};function tm(a,n,e,i){if(i)return!!(n==="innerHTML"||n==="textContent"||n in a&&zs(n)&&ka(e));if(n==="spellcheck"||n==="draggable"||n==="translate"||n==="autocorrect"||n==="sandbox"&&a.tagName==="IFRAME"||n==="form"||n==="list"&&a.tagName==="INPUT"||n==="type"&&a.tagName==="TEXTAREA")return!1;if(n==="width"||n==="height"){const t=a.tagName;if(t==="IMG"||t==="VIDEO"||t==="CANVAS"||t==="SOURCE")return!1}return zs(n)&&Da(e)?!1:n in a}function om(a,n){const e=a._def.props;if(!e)return!1;const i=nn(n);return Array.isArray(e)?e.some(t=>nn(t)===i):Object.keys(e).some(t=>nn(t)===i)}const Vs={};function rm(a,n,e){let i=fi(a,n);Qi(i)&&(i=Ja({},i,n));class t extends zo{constructor(r){super(i,r,e)}}return t.def=i,t}const lm=typeof HTMLElement<"u"?HTMLElement:class{};class zo extends lm{constructor(n,e={},i=Zs){super(),this._def=n,this._props=e,this._createApp=i,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&i!==Zs?this._root=this.shadowRoot:n.shadowRoot!==!1?(this.attachShadow(Ja({},n.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let n=this;for(;n=n&&(n.assignedSlot||n.parentNode||n.host);)if(n instanceof zo){this._parent=n;break}this._instance||(this._resolved?this._mount(this._def):n&&n._pendingResolve?this._pendingResolve=n._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}_setParent(n=this._parent){n&&(this._instance.parent=n._instance,this._inheritParentContext(n))}_inheritParentContext(n=this._parent){n&&this._app&&Object.setPrototypeOf(this._app._context.provides,n._instance.provides)}disconnectedCallback(){this._connected=!1,bi(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(n){for(const e of n)this._setAttr(e.attributeName)}_resolveDef(){if(this._pendingResolve)return;for(let i=0;i{this._resolved=!0,this._pendingResolve=void 0;const{props:o,styles:r}=i;let l;if(o&&!Ca(o))for(const s in o){const g=o[s];(g===Number||g&&g.type===Number)&&(s in this._props&&(this._props[s]=gl(this._props[s])),(l||(l=Object.create(null)))[nn(s)]=!0)}this._numberProps=l,this._resolveProps(i),this.shadowRoot&&this._applyStyles(r),this._mount(i)},e=this._def.__asyncLoader;e?this._pendingResolve=e().then(i=>{i.configureApp=this._def.configureApp,n(this._def=i,!0)}):n(this._def)}_mount(n){this._app=this._createApp(n),this._inheritParentContext(),n.configureApp&&n.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const e=this._instance&&this._instance.exposed;if(e)for(const i in e)Ta(this,i)||Object.defineProperty(this,i,{get:()=>ha(e[i])})}_resolveProps(n){const{props:e}=n,i=Ca(e)?e:Object.keys(e||{});for(const t of Object.keys(this))t[0]!=="_"&&i.includes(t)&&this._setProp(t,this[t]);for(const t of i.map(nn))Object.defineProperty(this,t,{get(){return this._getProp(t)},set(o){this._setProp(t,o,!0,!this._patching)}})}_setAttr(n){if(n.startsWith("data-v-"))return;const e=this.hasAttribute(n);let i=e?this.getAttribute(n):Vs;const t=nn(n);e&&this._numberProps&&this._numberProps[t]&&(i=gl(i)),this._setProp(t,i,!1,!0)}_getProp(n){return this._props[n]}_setProp(n,e,i=!0,t=!1){if(e!==this._props[n]&&(this._dirty=!0,e===Vs?delete this._props[n]:(this._props[n]=e,n==="key"&&this._app&&(this._app._ceVNode.key=e)),t&&this._instance&&this._update(),i)){const o=this._ob;o&&(this._processMutations(o.takeRecords()),o.disconnect()),e===!0?this.setAttribute(yn(n),""):typeof e=="string"||typeof e=="number"?this.setAttribute(yn(n),e+""):e||this.removeAttribute(yn(n)),o&&o.observe(this,{attributes:!0})}}_update(){const n=this._createVNode();this._app&&(n.appContext=this._app._context),dm(n,this._root)}_createVNode(){const n={};this.shadowRoot||(n.onVnodeMounted=n.onVnodeUpdated=this._renderSlots.bind(this));const e=Wa(this._def,Ja(n,this._props));return this._instance||(e.ce=i=>{this._instance=i,i.ce=this,i.isCE=!0;const t=(o,r)=>{this.dispatchEvent(new CustomEvent(o,Qi(r[0])?Ja({detail:r},r[0]):{detail:r}))};i.emit=(o,...r)=>{t(o,r),yn(o)!==o&&t(yn(o),r)},this._setParent()}),e}_applyStyles(n,e,i){if(!n)return;if(e){if(e===this._def||this._styleChildren.has(e))return;this._styleChildren.add(e)}const t=this._nonce,o=this.shadowRoot,r=i?this._getStyleAnchor(i)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(o);let l=null;for(let s=n.length-1;s>=0;s--){const g=document.createElement("style");t&&g.setAttribute("nonce",t),g.textContent=n[s],o.insertBefore(g,l||r),l=g,s===0&&(i||this._styleAnchors.set(this._def,g),e&&this._styleAnchors.set(e,g))}}_getStyleAnchor(n){if(!n)return null;const e=this._styleAnchors.get(n);return e&&e.parentNode===this.shadowRoot?e:(e&&this._styleAnchors.delete(n),null)}_getRootStyleInsertionAnchor(n){for(let e=0;ea.stopPropagation(),prevent:a=>a.preventDefault(),self:a=>a.target!==a.currentTarget,ctrl:a=>!a.ctrlKey,shift:a=>!a.shiftKey,alt:a=>!a.altKey,meta:a=>!a.metaKey,left:a=>"button"in a&&a.button!==0,middle:a=>"button"in a&&a.button!==1,right:a=>"button"in a&&a.button!==2,exact:(a,n)=>sm.some(e=>a[`${e}Key`]&&!n.includes(e))},Xn=(a,n)=>{if(!a)return a;const e=a._withMods||(a._withMods={}),i=n.join(".");return e[i]||(e[i]=(t,...o)=>{for(let r=0;r{const e=a._withKeys||(a._withKeys={}),i=n.join(".");return e[i]||(e[i]=t=>{if(!("key"in t))return;const o=yn(t.key);if(n.some(r=>r===o||gm[r]===o))return a(t)})},um=Ja({patchProp:im},Bp);let Ws;function Js(){return Ws||(Ws=_p(um))}const dm=(...a)=>{Js().render(...a)},Zs=(...a)=>{const n=Js().createApp(...a),{mount:e}=n;return n.mount=i=>{const t=mm(i);if(!t)return;const o=n._component;!ka(o)&&!o.render&&!o.template&&(o.template=t.innerHTML),t.nodeType===1&&(t.textContent="");const r=e(t,!1,pm(t));return t instanceof Element&&(t.removeAttribute("v-cloak"),t.setAttribute("data-v-app","")),r},n};function pm(a){if(a instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&a instanceof MathMLElement)return"mathml"}function mm(a){return Da(a)?document.querySelector(a):a}/*! - * pinia v2.3.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let qs;const St=a=>qs=a,Xs=Symbol();function Vo(a){return a&&typeof a=="object"&&Object.prototype.toString.call(a)==="[object Object]"&&typeof a.toJSON!="function"}var wi;(function(a){a.direct="direct",a.patchObject="patch object",a.patchFunction="patch function"})(wi||(wi={}));function hm(){const a=po(!0),n=a.run(()=>ua({}));let e=[],i=[];const t=mi({install(o){St(t),t._a=o,o.provide(Xs,t),o.config.globalProperties.$pinia=t,i.forEach(r=>e.push(r)),i=[]},use(o){return this._a?e.push(o):i.push(o),this},_p:e,_a:null,_e:a,_s:new Map,state:n});return t}const Qs=()=>{};function ac(a,n,e,i=Qs){a.push(n);const t=()=>{const o=a.indexOf(n);o>-1&&(a.splice(o,1),i())};return!e&&yl()&&Du(t),t}function ze(a,...n){a.slice().forEach(e=>{e(...n)})}const ym=a=>a(),nc=Symbol(),Yo=Symbol();function Wo(a,n){a instanceof Map&&n instanceof Map?n.forEach((e,i)=>a.set(i,e)):a instanceof Set&&n instanceof Set&&n.forEach(a.add,a);for(const e in n){if(!n.hasOwnProperty(e))continue;const i=n[e],t=a[e];Vo(t)&&Vo(i)&&a.hasOwnProperty(e)&&!Va(i)&&!Vn(i)?a[e]=Wo(t,i):a[e]=i}return a}const bm=Symbol();function _m(a){return!Vo(a)||!a.hasOwnProperty(bm)}const{assign:de}=Object;function fm(a){return!!(Va(a)&&a.effect)}function Pm(a,n,e,i){const{state:t,actions:o,getters:r}=n,l=e.state.value[a];let s;function g(){l||(e.state.value[a]=t?t():{});const d=pd(e.state.value[a]);return de(d,o,Object.keys(r||{}).reduce((_,k)=>(_[k]=mi(la(()=>{St(e);const x=e._s.get(a);return r[k].call(x,x)})),_),{}))}return s=ec(a,g,n,e,i,!0),s}function ec(a,n,e={},i,t,o){let r;const l=de({actions:{}},e),s={deep:!0};let g,d,_=[],k=[],x;const D=i.state.value[a];!o&&!D&&(i.state.value[a]={});let T;function $(K){let O;g=d=!1,typeof K=="function"?(K(i.state.value[a]),O={type:wi.patchFunction,storeId:a,events:x}):(Wo(i.state.value[a],K),O={type:wi.patchObject,payload:K,storeId:a,events:x});const q=T=Symbol();bi().then(()=>{T===q&&(g=!0)}),d=!0,ze(_,O,i.state.value[a])}const w=o?function(){const{state:O}=e,q=O?O():{};this.$patch(sa=>{de(sa,q)})}:Qs;function L(){r.stop(),_=[],k=[],i._s.delete(a)}const E=(K,O="")=>{if(nc in K)return K[Yo]=O,K;const q=function(){St(i);const sa=Array.from(arguments),ea=[],ga=[];function Sa(pa){ea.push(pa)}function Ma(pa){ga.push(pa)}ze(k,{args:sa,name:q[Yo],store:G,after:Sa,onError:Ma});let ma;try{ma=K.apply(this&&this.$id===a?this:G,sa)}catch(pa){throw ze(ga,pa),pa}return ma instanceof Promise?ma.then(pa=>(ze(ea,pa),pa)).catch(pa=>(ze(ga,pa),Promise.reject(pa))):(ze(ea,ma),ma)};return q[nc]=!0,q[Yo]=O,q},I={_p:i,$id:a,$onAction:ac.bind(null,k),$patch:$,$reset:w,$subscribe(K,O={}){const q=ac(_,K,O.detached,()=>sa()),sa=r.run(()=>cn(()=>i.state.value[a],ea=>{(O.flush==="sync"?d:g)&&K({storeId:a,type:wi.direct,events:x},ea)},de({},s,O)));return q},$dispose:L},G=pi(I);i._s.set(a,G);const v=(i._a&&i._a.runWithContext||ym)(()=>i._e.run(()=>(r=po()).run(()=>n({action:E}))));for(const K in v){const O=v[K];if(Va(O)&&!fm(O)||Vn(O))o||(D&&_m(O)&&(Va(O)?O.value=D[K]:Wo(O,D[K])),i.state.value[a][K]=O);else if(typeof O=="function"){const q=E(O,K);v[K]=q,l.actions[K]=O}}return de(G,v),de(wa(G),v),Object.defineProperty(G,"$state",{get:()=>i.state.value[a],set:K=>{$(O=>{de(O,K)})}}),i._p.forEach(K=>{de(G,r.run(()=>K({store:G,app:i._a,pinia:i,options:l})))}),D&&o&&e.hydrate&&e.hydrate(G.$state,D),g=!0,d=!0,G}/*! #__NO_SIDE_EFFECTS__ */function Jo(a,n,e){let i,t;const o=typeof n=="function";typeof a=="string"?(i=a,t=o?e:n):(t=a,i=a.id);function r(l,s){const g=Md();return l=l||(g?Ya(Xs,null):null),l&&St(l),l=qs,l._s.has(i)||(o?ec(i,n,t,l):Pm(i,t,l)),l._s.get(i)}return r.$id=i,r}const Cm={backToLegend:"العودة إلى المفتاح",closeDetailView:"إغلاق عرض التفاصيل"},jm={prayForThem:"صلِّ من أجلهم",adoptThem:"تبنَّهم",moreInfo:"مزيد من المعلومات",zoomIn:"تكبير",zoomOut:"تصغير",switchToLightMode:"التبديل إلى الوضع الفاتح",switchToDarkMode:"التبديل إلى الوضع الداكن",resetView:"إعادة تعيين العرض",toggleFullscreen:"تبديل ملء الشاشة",aboutThisMap:"حول هذه الخريطة",closeMenu:"إغلاق القائمة",reloadMap:"إعادة تحميل الخريطة",showClusters:"إظهار المجموعات",clusterSettings:"إعدادات المجموعات",startAutoFly:"بدء الطيران التلقائي",stopFlight:"إيقاف الطيران",speedLabel:"السرعة:",speedOption:{slow:"بطيء",normal:"عادي",fast:"سريع"},shareEmbed:"مشاركة وتضمين"},km={labels:{country:"الدولة:",population:"السكان:",language:"اللغة:",religion:"الديانة:",languageFamily:"العائلة اللغوية:",peopleCommitted:"ملتزمون بالصلاة:"},messages:{noDescription:"لا يوجد وصف متاح."}},Gm={title:{prayer:"تقدم الصلاة",engagement:"تقدم الانخراط",adoption:"تقدم التبني",languageFamilies:"العائلات اللغوية",geoRegions:"مناطق",affinityBlocs:"كتل القرابة",gospelResources:"موارد الإنجيل"},header:{collapsed:"وسيلة الإيضاح",peopleGroupFallback:"مجموعة الشعب"},prayer:{needsPrayer:"يحتاج إلى صلاة",hasPrayer:"لديه صلاة",fullPrayerCoverage:"تغطية صلاة كاملة"},engagement:{needsEngagement:"يحتاج إلى انخراط",hasEngagement:"لديه انخراط"},adoption:{needsAdoption:"يحتاج إلى تبني",hasAdoption:"لديه تبني"},columns:{upgs:"UUPGs",population:"السكان",name:"الاسم"},footer:{total:"الإجمالي"},sortByUpgs:"ترتيب حسب UUPG",sortByPop:"ترتيب حسب السكان",colLabel:{religion:"ديانات UUPG",prayer:"حالة الصلاة",engagement:"حالة المشاركة",adoption:"حالة التبني",status:"الحالة"},titleBar:{legend:"مفتاح الخريطة",peopleGroups:"الشعوب",wagfRegions:"مناطق WAGF",languages:"اللغات"}},vm={menuComingSoon:"القائمة قادمة قريباً"},Am={clusterByRegion:"حسب منطقة",clusterByLanguageFamily:"حسب العائلة اللغوية",clusterByGospelResource:"حسب مورد الإنجيل"},Sm={header:"دورة الصلاة الحالية",lap:"الدورة",upgs:"UUPGs",separator:" من "},Em={placeholder:"شعب، مكان، لغة، ديانة",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"}},Mm={prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة"},Im={backToLegend:"Zurück zur Legende",closeDetailView:"Detailansicht schließen"},wm={prayForThem:"Für sie beten",adoptThem:"Sie adoptieren",moreInfo:"Mehr Infos",zoomIn:"Vergrößern",zoomOut:"Verkleinern",switchToLightMode:"Zum hellen Modus wechseln",switchToDarkMode:"Zum dunklen Modus wechseln",resetView:"Ansicht zurücksetzen",toggleFullscreen:"Vollbild umschalten",aboutThisMap:"Über diese Karte",closeMenu:"Menü schließen",reloadMap:"Karte neu laden",showClusters:"Cluster anzeigen",clusterSettings:"Cluster-Einstellungen",startAutoFly:"Auto-Flug starten",stopFlight:"Flug stoppen",speedLabel:"Geschwindigkeit:",speedOption:{slow:"Langsam",normal:"Normal",fast:"Schnell"},shareEmbed:"Teilen und einbetten"},xm={labels:{country:"Land:",population:"Bevölkerung:",language:"Sprache:",religion:"Religion:",languageFamily:"Sprachfamilie:",peopleCommitted:"Zum Gebet verpflichtet:"},messages:{noDescription:"Keine Beschreibung verfügbar."}},Tm={title:{prayer:"Gebetsfortschritt",engagement:"Engagement-Fortschritt",adoption:"Adoptionsfortschritt",languageFamilies:"Sprachfamilien",geoRegions:"Regionen",affinityBlocs:"Affinitätsblöcke",gospelResources:"Evangeliumsressourcen"},header:{collapsed:"Legende",peopleGroupFallback:"Volksgruppe"},prayer:{needsPrayer:"Braucht Gebet",hasPrayer:"Hat Gebet",fullPrayerCoverage:"Vollständige Gebetsabdeckung"},engagement:{needsEngagement:"Braucht Engagement",hasEngagement:"Hat Engagement"},adoption:{needsAdoption:"Braucht Adoption",hasAdoption:"Hat Adoption"},columns:{upgs:"UUPGs",population:"Bevölkerung"},footer:{total:"Gesamt"}},Nm={menuComingSoon:"Menü folgt in Kürze"},Lm={clusterByRegion:"Nach Region",clusterByLanguageFamily:"Nach Sprachfamilie",clusterByGospelResource:"Nach Evangeliumsressource"},Rm={header:"AKTUELLE GEBETSRUNDE",lap:"Runde",upgs:"UUPGs",separator:" von "},$m={placeholder:"Volk, Ort, Sprache, Religion",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle Daten"}},Fm={prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land"},Km={backToLegend:"Back to Legend",closeDetailView:"Close detail view"},Bm={prayForThem:"Pray for them",adoptThem:"Adopt",moreInfo:"More info",zoomIn:"Zoom in",zoomOut:"Zoom out",switchToLightMode:"Switch to light mode",switchToDarkMode:"Switch to dark mode",resetView:"Reset view",toggleFullscreen:"Toggle fullscreen",aboutThisMap:"About this map",closeMenu:"Close menu",reloadMap:"Reload Map",showClusters:"Show Clusters",clusterSettings:"Cluster Settings",startAutoFly:"Start Auto Fly",stopFlight:"Stop Flight",speedLabel:"Speed:",speedOption:{slow:"Slow",normal:"Normal",fast:"Fast"},shareEmbed:"Share & embed"},Om={labels:{country:"Country:",population:"Population:",language:"Language:",religion:"Religion:",languageFamily:"Language Family:",peopleCommitted:"Committed to pray:"},messages:{noDescription:"No description available."}},Um={title:{prayer:"Prayer Progress",engagement:"Engagement Progress",adoption:"Adoption Progress",languageFamilies:"Language Families",geoRegions:"Regions",affinityBlocs:"Affinity Blocks",gospelResources:"Gospel Resources"},header:{default:"Legend",collapsed:"Legend",peopleGroupFallback:"People Group"},prayer:{needsPrayer:"Needs Prayer",hasPrayer:"Has Prayer",fullPrayerCoverage:"Full Prayer Coverage"},engagement:{needsEngagement:"Unengaged",hasEngagement:"Engaged"},adoption:{needsAdoption:"Needs Adoption",hasAdoption:"Has Adoption"},columns:{upgs:"UUPGs",population:"Population",name:"Name"},footer:{total:"Total"},sortByUpgs:"Sort by UUPGs",sortByPop:"Sort by Population",colLabel:{religion:"UUPG Religions",prayer:"Prayer Status",engagement:"Engagement Status",adoption:"Adoption Status",status:"Status"},titleBar:{legend:"Legend",peopleGroups:"People Groups",wagfRegions:"WAGF Regions",languages:"Languages"}},Hm={menuComingSoon:"Menu coming soon"},Dm={clusterByRegion:"By Region",clusterByLanguageFamily:"By Language Family",clusterByGospelResource:"By Gospel Resource"},zm={country:{wagfRegion:"WAGF Region",wagfBlock:"WAGF Bloc",country:"Country",uupgCount:"UUPG Count"}},Vm={header:"CURRENT PRAYER LAP",lap:"Lap",upgs:"UUPGs",separator:" of "},Ym={placeholder:"People, place, language, religion",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All Data"}},Wm={prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country"},Jm={backToLegend:"Volver a la leyenda",closeDetailView:"Cerrar vista de detalle"},Zm={prayForThem:"Ora por ellos",adoptThem:"Adóptalos",moreInfo:"Más información",zoomIn:"Acercar",zoomOut:"Alejar",switchToLightMode:"Cambiar a modo claro",switchToDarkMode:"Cambiar a modo oscuro",resetView:"Restablecer vista",toggleFullscreen:"Alternar pantalla completa",aboutThisMap:"Acerca de este mapa",closeMenu:"Cerrar menú",reloadMap:"Recargar mapa",showClusters:"Mostrar clústeres",clusterSettings:"Ajustes de clústeres",startAutoFly:"Iniciar vuelo automático",stopFlight:"Detener vuelo",speedLabel:"Velocidad:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Compartir e incrustar"},qm={labels:{country:"País:",population:"Población:",language:"Idioma:",religion:"Religión:",languageFamily:"Familia lingüística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"No hay descripción disponible."}},Xm={title:{prayer:"Progreso de oración",engagement:"Progreso de implicación",adoption:"Progreso de adopción",languageFamilies:"Familias lingüísticas",geoRegions:"Regiones",affinityBlocs:"Bloques de afinidad",gospelResources:"Recursos del Evangelio"},header:{collapsed:"Leyenda",peopleGroupFallback:"Grupo de personas"},prayer:{needsPrayer:"Necesita oración",hasPrayer:"Tiene oración",fullPrayerCoverage:"Cobertura de oración completa"},engagement:{needsEngagement:"Necesita implicación",hasEngagement:"Tiene implicación"},adoption:{needsAdoption:"Necesita adopción",hasAdoption:"Tiene adopción"},columns:{upgs:"UUPGs",population:"Población",name:"Nombre"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por población",colLabel:{religion:"Religiones UUPG",prayer:"Estado de oración",engagement:"Estado de compromiso",adoption:"Estado de adopción",status:"Estado"},titleBar:{legend:"Leyenda",peopleGroups:"Pueblos",wagfRegions:"Regiones WAGF",languages:"Idiomas"}},Qm={menuComingSoon:"Menú próximamente"},ah={clusterByRegion:"Por región",clusterByLanguageFamily:"Por familia lingüística",clusterByGospelResource:"Por recurso del Evangelio"},nh={header:"VUELTA DE ORACIÓN ACTUAL",lap:"Vuelta",upgs:"UUPGs",separator:" de "},eh={placeholder:"Pueblo, lugar, idioma, religión",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"}},ih={prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País"},th={backToLegend:"Retour à la légende",closeDetailView:"Fermer la vue détaillée"},oh={prayForThem:"Priez pour eux",adoptThem:"Adoptez-les",moreInfo:"Plus d'infos",zoomIn:"Zoom avant",zoomOut:"Zoom arrière",switchToLightMode:"Passer au mode clair",switchToDarkMode:"Passer au mode sombre",resetView:"Réinitialiser la vue",toggleFullscreen:"Basculer en plein écran",aboutThisMap:"À propos de cette carte",closeMenu:"Fermer le menu",reloadMap:"Recharger la carte",showClusters:"Afficher les clusters",clusterSettings:"Paramètres des clusters",startAutoFly:"Démarrer le vol auto",stopFlight:"Arrêter le vol",speedLabel:"Vitesse :",speedOption:{slow:"Lente",normal:"Normale",fast:"Rapide"},shareEmbed:"Partager et intégrer"},rh={labels:{country:"Pays :",population:"Population :",language:"Langue :",religion:"Religion :",languageFamily:"Famille de langues :",peopleCommitted:"Engagés à prier :"},messages:{noDescription:"Aucune description disponible."}},lh={title:{prayer:"Progression de la prière",engagement:"Progression de l'engagement",adoption:"Progression de l'adoption",languageFamilies:"Familles de langues",geoRegions:"Régions",affinityBlocs:"Blocs d'affinité",gospelResources:"Ressources de l'Évangile"},header:{collapsed:"Légende",peopleGroupFallback:"Groupe de personnes"},prayer:{needsPrayer:"Besoin de prière",hasPrayer:"Prière en cours",fullPrayerCoverage:"Couverture de prière complète"},engagement:{needsEngagement:"Besoin d'engagement",hasEngagement:"Engagement en cours"},adoption:{needsAdoption:"Besoin d'adoption",hasAdoption:"Adoption en cours"},columns:{upgs:"UUPGs",population:"Population",name:"Nom"},footer:{total:"Total"},sortByUpgs:"Trier par UUPG",sortByPop:"Trier par population",colLabel:{religion:"Religions UUPG",prayer:"Statut de prière",engagement:"Statut d'engagement",adoption:"Statut d'adoption",status:"Statut"},titleBar:{legend:"Légende",peopleGroups:"Peuples",wagfRegions:"Régions WAGF",languages:"Langues"}},sh={menuComingSoon:"Menu bientôt disponible"},ch={clusterByRegion:"Par région",clusterByLanguageFamily:"Par famille de langues",clusterByGospelResource:"Par ressource de l'Évangile"},gh={country:{wagfRegion:"Région WAGF",wagfBlock:"Bloc WAGF",country:"Pays",uupgCount:"Nombre d'UUPG"}},uh={header:"TOUR DE PRIÈRE ACTUEL",lap:"Tour",upgs:"UUPGs",separator:" sur "},dh={placeholder:"Peuple, lieu, langue, religion",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"}},ph={prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays"},mh={backToLegend:"लेजेंड पर वापस जाएं",closeDetailView:"विवरण दृश्य बंद करें"},hh={prayForThem:"उनके लिए प्रार्थना करें",adoptThem:"उन्हें गोद लें",moreInfo:"अधिक जानकारी",zoomIn:"ज़ूम इन",zoomOut:"ज़ूम आउट",switchToLightMode:"लाइट मोड पर जाएं",switchToDarkMode:"डार्क मोड पर जाएं",resetView:"दृश्य रीसेट करें",toggleFullscreen:"फ़ुलस्क्रीन टॉगल करें",aboutThisMap:"इस मानचित्र के बारे में",closeMenu:"मेनू बंद करें",reloadMap:"मानचित्र पुनः लोड करें",showClusters:"क्लस्टर दिखाएं",clusterSettings:"क्लस्टर सेटिंग्स",startAutoFly:"ऑटो फ्लाई शुरू करें",stopFlight:"उड़ान रोकें",speedLabel:"गति:",speedOption:{slow:"धीमी",normal:"सामान्य",fast:"तेज़"},shareEmbed:"साझा करें और एम्बेड करें"},yh={labels:{country:"देश:",population:"जनसंख्या:",language:"भाषा:",religion:"धर्म:",languageFamily:"भाषा परिवार:",peopleCommitted:"प्रार्थना के लिए प्रतिबद्ध:"},messages:{noDescription:"कोई विवरण उपलब्ध नहीं है।"}},bh={title:{prayer:"प्रार्थना प्रगति",engagement:"सहभागिता प्रगति",adoption:"गोद लेने की प्रगति",languageFamilies:"भाषा परिवार",geoRegions:"क्षेत्र",affinityBlocs:"समानता समूह",gospelResources:"सुसमाचार संसाधन"},header:{collapsed:"किंवदंती",peopleGroupFallback:"जनजाति समूह"},prayer:{needsPrayer:"प्रार्थना चाहिए",hasPrayer:"प्रार्थना है",fullPrayerCoverage:"पूर्ण प्रार्थना कवरेज"},engagement:{needsEngagement:"सहभागिता चाहिए",hasEngagement:"सहभागिता है"},adoption:{needsAdoption:"गोद लेना चाहिए",hasAdoption:"गोद लिया गया"},columns:{upgs:"UUPGs",population:"जनसंख्या"},footer:{total:"कुल"}},_h={menuComingSoon:"मेनू शीघ्र आ रहा है"},fh={clusterByRegion:"क्षेत्र के अनुसार",clusterByLanguageFamily:"भाषा परिवार के अनुसार",clusterByGospelResource:"सुसमाचार संसाधन के अनुसार"},Ph={header:"वर्तमान प्रार्थना चक्र",lap:"चक्र",upgs:"UUPGs",separator:" में से "},Ch={placeholder:"लोग, स्थान, भाषा, धर्म",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"}},jh={backToLegend:"Torna alla legenda",closeDetailView:"Chiudi vista dettaglio"},kh={prayForThem:"Prega per loro",adoptThem:"Adottali",moreInfo:"Più informazioni",zoomIn:"Ingrandisci",zoomOut:"Riduci",switchToLightMode:"Passa alla modalità chiara",switchToDarkMode:"Passa alla modalità scura",resetView:"Reimposta vista",toggleFullscreen:"Attiva/disattiva schermo intero",aboutThisMap:"Informazioni su questa mappa",closeMenu:"Chiudi menu",reloadMap:"Ricarica mappa",showClusters:"Mostra cluster",clusterSettings:"Impostazioni cluster",startAutoFly:"Avvia volo automatico",stopFlight:"Ferma volo",speedLabel:"Velocità:",speedOption:{slow:"Lenta",normal:"Normale",fast:"Veloce"},shareEmbed:"Condividi e incorpora"},Gh={labels:{country:"Paese:",population:"Popolazione:",language:"Lingua:",religion:"Religione:",languageFamily:"Famiglia linguistica:",peopleCommitted:"Impegnati a pregare:"},messages:{noDescription:"Nessuna descrizione disponibile."}},vh={title:{prayer:"Avanzamento della preghiera",engagement:"Avanzamento dell'impegno",adoption:"Avanzamento dell'adozione",languageFamilies:"Famiglie linguistiche",geoRegions:"Regioni",affinityBlocs:"Blocchi di affinità",gospelResources:"Risorse del Vangelo"},header:{collapsed:"Legenda",peopleGroupFallback:"Gruppo di persone"},prayer:{needsPrayer:"Necessita preghiera",hasPrayer:"Ha preghiera",fullPrayerCoverage:"Copertura di preghiera completa"},engagement:{needsEngagement:"Necessita impegno",hasEngagement:"Ha impegno"},adoption:{needsAdoption:"Necessita adozione",hasAdoption:"Ha adozione"},columns:{upgs:"UUPGs",population:"Popolazione"},footer:{total:"Totale"}},Ah={menuComingSoon:"Menu in arrivo"},Sh={clusterByRegion:"Per regione",clusterByLanguageFamily:"Per famiglia linguistica",clusterByGospelResource:"Per risorsa del Vangelo"},Eh={header:"GIRO DI PREGHIERA ATTUALE",lap:"Giro",upgs:"UUPGs",separator:" di "},Mh={placeholder:"Popolo, luogo, lingua, religione",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"}},Ih={backToLegend:"Voltar à legenda",closeDetailView:"Fechar vista de detalhe"},wh={prayForThem:"Ore por eles",adoptThem:"Adote-os",moreInfo:"Mais informações",zoomIn:"Ampliar",zoomOut:"Reduzir",switchToLightMode:"Mudar para modo claro",switchToDarkMode:"Mudar para modo escuro",resetView:"Repor vista",toggleFullscreen:"Alternar ecrã inteiro",aboutThisMap:"Sobre este mapa",closeMenu:"Fechar menu",reloadMap:"Recarregar mapa",showClusters:"Mostrar clusters",clusterSettings:"Definições de clusters",startAutoFly:"Iniciar voo automático",stopFlight:"Parar voo",speedLabel:"Velocidade:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Partilhar e incorporar"},xh={labels:{country:"País:",population:"População:",language:"Língua:",religion:"Religião:",languageFamily:"Família linguística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"Sem descrição disponível."}},Th={title:{prayer:"Progresso da oração",engagement:"Progresso do envolvimento",adoption:"Progresso da adoção",languageFamilies:"Famílias linguísticas",geoRegions:"Regiões",affinityBlocs:"Blocos de afinidade",gospelResources:"Recursos do Evangelho"},header:{collapsed:"Legenda",peopleGroupFallback:"Grupo de pessoas"},prayer:{needsPrayer:"Precisa de oração",hasPrayer:"Tem oração",fullPrayerCoverage:"Cobertura de oração completa"},engagement:{needsEngagement:"Precisa de envolvimento",hasEngagement:"Tem envolvimento"},adoption:{needsAdoption:"Precisa de adoção",hasAdoption:"Tem adoção"},columns:{upgs:"UUPGs",population:"População",name:"Nome"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por população",colLabel:{religion:"Religiões UUPG",prayer:"Status de oração",engagement:"Status de engajamento",adoption:"Status de adoção",status:"Status"},titleBar:{legend:"Legenda",peopleGroups:"Povos",wagfRegions:"Regiões WAGF",languages:"Idiomas"}},Nh={menuComingSoon:"Menu em breve"},Lh={clusterByRegion:"Por região",clusterByLanguageFamily:"Por família linguística",clusterByGospelResource:"Por recurso do Evangelho"},Rh={header:"VOLTA DE ORAÇÃO ATUAL",lap:"Volta",upgs:"UUPGs",separator:" de "},$h={placeholder:"Povo, local, língua, religião",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"}},Fh={prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País"},Kh={backToLegend:"Înapoi la legendă",closeDetailView:"Închide vizualizarea detaliată"},Bh={prayForThem:"Roagă-te pentru ei",adoptThem:"Adoptă-i",moreInfo:"Mai multe informații",zoomIn:"Mărește",zoomOut:"Micșorează",switchToLightMode:"Comută la modul luminos",switchToDarkMode:"Comută la modul întunecat",resetView:"Resetează vizualizarea",toggleFullscreen:"Comută ecran complet",aboutThisMap:"Despre această hartă",closeMenu:"Închide meniul",reloadMap:"Reîncarcă harta",showClusters:"Arată clusterele",clusterSettings:"Setări clustere",startAutoFly:"Pornește zborul automat",stopFlight:"Oprește zborul",speedLabel:"Viteză:",speedOption:{slow:"Lent",normal:"Normal",fast:"Rapid"},shareEmbed:"Partajează și încorporează"},Oh={labels:{country:"Țară:",population:"Populație:",language:"Limbă:",religion:"Religie:",languageFamily:"Familie de limbi:",peopleCommitted:"Angajați să se roage:"},messages:{noDescription:"Nicio descriere disponibilă."}},Uh={title:{prayer:"Progresul rugăciunii",engagement:"Progresul implicării",adoption:"Progresul adopției",languageFamilies:"Familii de limbi",geoRegions:"Regiuni",affinityBlocs:"Blocuri de afinitate",gospelResources:"Resurse ale Evangheliei"},header:{collapsed:"Legendă",peopleGroupFallback:"Grup de popoare"},prayer:{needsPrayer:"Necesită rugăciune",hasPrayer:"Are rugăciune",fullPrayerCoverage:"Acoperire completă de rugăciune"},engagement:{needsEngagement:"Necesită implicare",hasEngagement:"Are implicare"},adoption:{needsAdoption:"Necesită adopție",hasAdoption:"Are adopție"},columns:{upgs:"UUPGs",population:"Populație"},footer:{total:"Total"}},Hh={menuComingSoon:"Meniu în curând"},Dh={clusterByRegion:"După regiune",clusterByLanguageFamily:"După familia de limbi",clusterByGospelResource:"După resursa Evangheliei"},zh={header:"TURUL DE RUGĂCIUNE CURENT",lap:"Tur",upgs:"UUPGs",separator:" din "},Vh={placeholder:"Popor, loc, limbă, religie",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"}},Yh={backToLegend:"Назад к легенде",closeDetailView:"Закрыть подробный вид"},Wh={prayForThem:"Молитесь о них",adoptThem:"Усыновите их",moreInfo:"Подробнее",zoomIn:"Приблизить",zoomOut:"Отдалить",switchToLightMode:"Переключить на светлый режим",switchToDarkMode:"Переключить на тёмный режим",resetView:"Сбросить вид",toggleFullscreen:"Полноэкранный режим",aboutThisMap:"Об этой карте",closeMenu:"Закрыть меню",reloadMap:"Перезагрузить карту",showClusters:"Показать кластеры",clusterSettings:"Настройки кластеров",startAutoFly:"Начать авто-полёт",stopFlight:"Остановить полёт",speedLabel:"Скорость:",speedOption:{slow:"Медленно",normal:"Нормально",fast:"Быстро"},shareEmbed:"Поделиться и встроить"},Jh={labels:{country:"Страна:",population:"Население:",language:"Язык:",religion:"Религия:",languageFamily:"Языковая семья:",peopleCommitted:"Обязались молиться:"},messages:{noDescription:"Описание недоступно."}},Zh={title:{prayer:"Прогресс молитвы",engagement:"Прогресс вовлечённости",adoption:"Прогресс усыновления",languageFamilies:"Языковые семьи",geoRegions:"Регионы",affinityBlocs:"Блоки родства",gospelResources:"Евангельские ресурсы"},header:{collapsed:"Условные обозначения",peopleGroupFallback:"Народная группа"},prayer:{needsPrayer:"Нуждается в молитве",hasPrayer:"Есть молитва",fullPrayerCoverage:"Полное молитвенное покрытие"},engagement:{needsEngagement:"Нуждается в вовлечённости",hasEngagement:"Есть вовлечённость"},adoption:{needsAdoption:"Нуждается в усыновлении",hasAdoption:"Есть усыновление"},columns:{upgs:"UUPGs",population:"Население",name:"Название"},footer:{total:"Всего"},sortByUpgs:"Сортировать по UUPG",sortByPop:"Сортировать по населению",colLabel:{religion:"Религии UUPG",prayer:"Статус молитвы",engagement:"Статус вовлечённости",adoption:"Статус усыновления",status:"Статус"},titleBar:{legend:"Легенда",peopleGroups:"Народы",wagfRegions:"Регионы WAGF",languages:"Языки"}},qh={menuComingSoon:"Меню скоро появится"},Xh={clusterByRegion:"По региону",clusterByLanguageFamily:"По языковой семье",clusterByGospelResource:"По евангельскому ресурсу"},Qh={header:"ТЕКУЩИЙ КРУГ МОЛИТВЫ",lap:"Круг",upgs:"UUPGs",separator:" из "},a0={placeholder:"Народ, место, язык, религия",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"}},n0={prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна"},e0={backToLegend:"返回图例",closeDetailView:"关闭详情视图"},i0={prayForThem:"为他们祷告",adoptThem:"认领他们",moreInfo:"更多信息",zoomIn:"放大",zoomOut:"缩小",switchToLightMode:"切换至浅色模式",switchToDarkMode:"切换至深色模式",resetView:"重置视图",toggleFullscreen:"切换全屏",aboutThisMap:"关于此地图",closeMenu:"关闭菜单",reloadMap:"重新加载地图",showClusters:"显示聚类",clusterSettings:"聚类设置",startAutoFly:"开始自动飞行",stopFlight:"停止飞行",speedLabel:"速度:",speedOption:{slow:"慢",normal:"正常",fast:"快"},shareEmbed:"分享与嵌入"},t0={labels:{country:"国家:",population:"人口:",language:"语言:",religion:"宗教:",languageFamily:"语系:",peopleCommitted:"承诺祷告人数:"},messages:{noDescription:"暂无描述。"}},o0={title:{prayer:"祷告进度",engagement:"参与进度",adoption:"认领进度",languageFamilies:"语系",geoRegions:"区域",affinityBlocs:"亲缘板块",gospelResources:"福音资源"},header:{collapsed:"图例",peopleGroupFallback:"民族群体"},prayer:{needsPrayer:"需要祷告",hasPrayer:"已有祷告",fullPrayerCoverage:"全面祷告覆盖"},engagement:{needsEngagement:"需要参与",hasEngagement:"已有参与"},adoption:{needsAdoption:"需要认领",hasAdoption:"已有认领"},columns:{upgs:"UUPGs",population:"人口"},footer:{total:"总计"}},r0={menuComingSoon:"菜单即将推出"},l0={clusterByRegion:"按 区域",clusterByLanguageFamily:"按语系",clusterByGospelResource:"按福音资源"},s0={header:"当前祷告轮次",lap:"第",upgs:"UUPGs",separator:" / "},c0={placeholder:"民族、地点、语言、宗教",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"}};/*! - * shared v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */function g0(a,n){typeof console<"u"&&(console.warn("[intlify] "+a),n&&console.warn(n.stack))}const Et=typeof window<"u",pe=(a,n=!1)=>n?Symbol.for(a):Symbol(a),u0=(a,n,e)=>d0({l:a,k:n,s:e}),d0=a=>JSON.stringify(a).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Za=a=>typeof a=="number"&&isFinite(a),p0=a=>lc(a)==="[object Date]",me=a=>lc(a)==="[object RegExp]",Mt=a=>Ga(a)&&Object.keys(a).length===0,on=Object.assign,m0=Object.create,La=(a=null)=>m0(a);let ic;const Qn=()=>ic||(ic=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:La());function tc(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/=/g,"=")}function oc(a){return a.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function h0(a){return a=a.replace(/(\w+)\s*=\s*"([^"]*)"/g,(i,t,o)=>`${t}="${oc(o)}"`),a=a.replace(/(\w+)\s*=\s*'([^']*)'/g,(i,t,o)=>`${t}='${oc(o)}'`),/\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi.test(a)&&(a=a.replace(/(\s+)(on)(\w+\s*=)/gi,"$1on$3")),[/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi].forEach(i=>{a=a.replace(i,"$1javascript:")}),a}const y0=Object.prototype.hasOwnProperty;function An(a,n){return y0.call(a,n)}const za=Array.isArray,Ha=a=>typeof a=="function",da=a=>typeof a=="string",Ea=a=>typeof a=="boolean",xa=a=>a!==null&&typeof a=="object",b0=a=>xa(a)&&Ha(a.then)&&Ha(a.catch),rc=Object.prototype.toString,lc=a=>rc.call(a),Ga=a=>{if(!xa(a))return!1;const n=Object.getPrototypeOf(a);return n===null||n.constructor===Object},_0=a=>a==null?"":za(a)||Ga(a)&&a.toString===rc?JSON.stringify(a,null,2):String(a);function f0(a,n=""){return a.reduce((e,i,t)=>t===0?e+i:e+n+i,"")}function It(a){let n=a;return()=>++n}const wt=a=>!xa(a)||za(a);function xt(a,n){if(wt(a)||wt(n))throw new Error("Invalid value");const e=[{src:a,des:n}];for(;e.length;){const{src:i,des:t}=e.pop();Object.keys(i).forEach(o=>{o!=="__proto__"&&(xa(i[o])&&!xa(t[o])&&(t[o]=Array.isArray(i[o])?[]:La()),wt(t[o])||wt(i[o])?t[o]=i[o]:e.push({src:i[o],des:t[o]}))})}}/*! - * message-compiler v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */function P0(a,n,e){return{line:a,column:n,offset:e}}function Tt(a,n,e){return{start:a,end:n}}const C0=/\{([0-9a-zA-Z]+)\}/g;function sc(a,...n){return n.length===1&&j0(n[0])&&(n=n[0]),(!n||!n.hasOwnProperty)&&(n={}),a.replace(C0,(e,i)=>n.hasOwnProperty(i)?n[i]:"")}const cc=Object.assign,gc=a=>typeof a=="string",j0=a=>a!==null&&typeof a=="object";function uc(a,n=""){return a.reduce((e,i,t)=>t===0?e+i:e+n+i,"")}const Zo={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},k0={[Zo.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function G0(a,n,...e){const i=sc(k0[a],...e||[]),t={message:String(i),code:a};return n&&(t.location=n),t}const ja={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},v0={[ja.EXPECTED_TOKEN]:"Expected token: '{0}'",[ja.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[ja.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[ja.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[ja.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[ja.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[ja.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[ja.EMPTY_PLACEHOLDER]:"Empty placeholder",[ja.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[ja.INVALID_LINKED_FORMAT]:"Invalid linked format",[ja.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[ja.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[ja.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[ja.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[ja.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[ja.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function Ve(a,n,e={}){const{domain:i,messages:t,args:o}=e,r=sc((t||v0)[a]||"",...o||[]),l=new SyntaxError(String(r));return l.code=a,n&&(l.location=n),l.domain=i,l}function A0(a){throw a}const ae=" ",S0="\r",un=` -`,E0="\u2028",M0="\u2029";function I0(a){const n=a;let e=0,i=1,t=1,o=0;const r=v=>n[v]===S0&&n[v+1]===un,l=v=>n[v]===un,s=v=>n[v]===M0,g=v=>n[v]===E0,d=v=>r(v)||l(v)||s(v)||g(v),_=()=>e,k=()=>i,x=()=>t,D=()=>o,T=v=>r(v)||s(v)||g(v)?un:n[v],$=()=>T(e),w=()=>T(e+o);function L(){return o=0,d(e)&&(i++,t=0),r(e)&&e++,e++,t++,n[e]}function E(){return r(e+o)&&o++,o++,n[e+o]}function I(){e=0,i=1,t=1,o=0}function G(v=0){o=v}function S(){const v=e+o;for(;v!==e;)L();o=0}return{index:_,line:k,column:x,peekOffset:D,charAt:T,currentChar:$,currentPeek:w,next:L,peek:E,reset:I,resetPeek:G,skipToPeek:S}}const he=void 0,w0=".",dc="'",x0="tokenizer";function T0(a,n={}){const e=n.location!==!1,i=I0(a),t=()=>i.index(),o=()=>P0(i.line(),i.column(),i.index()),r=o(),l=t(),s={currentType:14,offset:l,startLoc:r,endLoc:r,lastType:14,lastOffset:l,lastStartLoc:r,lastEndLoc:r,braceNest:0,inLinked:!1,text:""},g=()=>s,{onError:d}=n;function _(m,b,F,...J){const ca=g();if(b.column+=F,b.offset+=F,d){const ra=e?Tt(ca.startLoc,b):null,B=Ve(m,ra,{domain:x0,args:J});d(B)}}function k(m,b,F){m.endLoc=o(),m.currentType=b;const J={type:b};return e&&(J.loc=Tt(m.startLoc,m.endLoc)),F!=null&&(J.value=F),J}const x=m=>k(m,14);function D(m,b){return m.currentChar()===b?(m.next(),b):(_(ja.EXPECTED_TOKEN,o(),0,b),"")}function T(m){let b="";for(;m.currentPeek()===ae||m.currentPeek()===un;)b+=m.currentPeek(),m.peek();return b}function $(m){const b=T(m);return m.skipToPeek(),b}function w(m){if(m===he)return!1;const b=m.charCodeAt(0);return b>=97&&b<=122||b>=65&&b<=90||b===95}function L(m){if(m===he)return!1;const b=m.charCodeAt(0);return b>=48&&b<=57}function E(m,b){const{currentType:F}=b;if(F!==2)return!1;T(m);const J=w(m.currentPeek());return m.resetPeek(),J}function I(m,b){const{currentType:F}=b;if(F!==2)return!1;T(m);const J=m.currentPeek()==="-"?m.peek():m.currentPeek(),ca=L(J);return m.resetPeek(),ca}function G(m,b){const{currentType:F}=b;if(F!==2)return!1;T(m);const J=m.currentPeek()===dc;return m.resetPeek(),J}function S(m,b){const{currentType:F}=b;if(F!==8)return!1;T(m);const J=m.currentPeek()===".";return m.resetPeek(),J}function v(m,b){const{currentType:F}=b;if(F!==9)return!1;T(m);const J=w(m.currentPeek());return m.resetPeek(),J}function K(m,b){const{currentType:F}=b;if(!(F===8||F===12))return!1;T(m);const J=m.currentPeek()===":";return m.resetPeek(),J}function O(m,b){const{currentType:F}=b;if(F!==10)return!1;const J=()=>{const ra=m.currentPeek();return ra==="{"?w(m.peek()):ra==="@"||ra==="%"||ra==="|"||ra===":"||ra==="."||ra===ae||!ra?!1:ra===un?(m.peek(),J()):ea(m,!1)},ca=J();return m.resetPeek(),ca}function q(m){T(m);const b=m.currentPeek()==="|";return m.resetPeek(),b}function sa(m){const b=T(m),F=m.currentPeek()==="%"&&m.peek()==="{";return m.resetPeek(),{isModulo:F,hasSpace:b.length>0}}function ea(m,b=!0){const F=(ca=!1,ra="",B=!1)=>{const Z=m.currentPeek();return Z==="{"?ra==="%"?!1:ca:Z==="@"||!Z?ra==="%"?!0:ca:Z==="%"?(m.peek(),F(ca,"%",!0)):Z==="|"?ra==="%"||B?!0:!(ra===ae||ra===un):Z===ae?(m.peek(),F(!0,ae,B)):Z===un?(m.peek(),F(!0,un,B)):!0},J=F();return b&&m.resetPeek(),J}function ga(m,b){const F=m.currentChar();return F===he?he:b(F)?(m.next(),F):null}function Sa(m){const b=m.charCodeAt(0);return b>=97&&b<=122||b>=65&&b<=90||b>=48&&b<=57||b===95||b===36}function Ma(m){return ga(m,Sa)}function ma(m){const b=m.charCodeAt(0);return b>=97&&b<=122||b>=65&&b<=90||b>=48&&b<=57||b===95||b===36||b===45}function pa(m){return ga(m,ma)}function Y(m){const b=m.charCodeAt(0);return b>=48&&b<=57}function ta(m){return ga(m,Y)}function aa(m){const b=m.charCodeAt(0);return b>=48&&b<=57||b>=65&&b<=70||b>=97&&b<=102}function ba(m){return ga(m,aa)}function na(m){let b="",F="";for(;b=ta(m);)F+=b;return F}function u(m){$(m);const b=m.currentChar();return b!=="%"&&_(ja.EXPECTED_TOKEN,o(),0,b),m.next(),"%"}function A(m){let b="";for(;;){const F=m.currentChar();if(F==="{"||F==="}"||F==="@"||F==="|"||!F)break;if(F==="%")if(ea(m))b+=F,m.next();else break;else if(F===ae||F===un)if(ea(m))b+=F,m.next();else{if(q(m))break;b+=F,m.next()}else b+=F,m.next()}return b}function j(m){$(m);let b="",F="";for(;b=pa(m);)F+=b;return m.currentChar()===he&&_(ja.UNTERMINATED_CLOSING_BRACE,o(),0),F}function c(m){$(m);let b="";return m.currentChar()==="-"?(m.next(),b+=`-${na(m)}`):b+=na(m),m.currentChar()===he&&_(ja.UNTERMINATED_CLOSING_BRACE,o(),0),b}function P(m){return m!==dc&&m!==un}function p(m){$(m),D(m,"'");let b="",F="";for(;b=ga(m,P);)b==="\\"?F+=M(m):F+=b;const J=m.currentChar();return J===un||J===he?(_(ja.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,o(),0),J===un&&(m.next(),D(m,"'")),F):(D(m,"'"),F)}function M(m){const b=m.currentChar();switch(b){case"\\":case"'":return m.next(),`\\${b}`;case"u":return N(m,b,4);case"U":return N(m,b,6);default:return _(ja.UNKNOWN_ESCAPE_SEQUENCE,o(),0,b),""}}function N(m,b,F){D(m,b);let J="";for(let ca=0;ca{const J=m.currentChar();return J==="{"||J==="%"||J==="@"||J==="|"||J==="("||J===")"||!J||J===ae?F:(F+=J,m.next(),b(F))};return b("")}function R(m){$(m);const b=D(m,"|");return $(m),b}function H(m,b){let F=null;switch(m.currentChar()){case"{":return b.braceNest>=1&&_(ja.NOT_ALLOW_NEST_PLACEHOLDER,o(),0),m.next(),F=k(b,2,"{"),$(m),b.braceNest++,F;case"}":return b.braceNest>0&&b.currentType===2&&_(ja.EMPTY_PLACEHOLDER,o(),0),m.next(),F=k(b,3,"}"),b.braceNest--,b.braceNest>0&&$(m),b.inLinked&&b.braceNest===0&&(b.inLinked=!1),F;case"@":return b.braceNest>0&&_(ja.UNTERMINATED_CLOSING_BRACE,o(),0),F=V(m,b)||x(b),b.braceNest=0,F;default:{let ca=!0,ra=!0,B=!0;if(q(m))return b.braceNest>0&&_(ja.UNTERMINATED_CLOSING_BRACE,o(),0),F=k(b,1,R(m)),b.braceNest=0,b.inLinked=!1,F;if(b.braceNest>0&&(b.currentType===5||b.currentType===6||b.currentType===7))return _(ja.UNTERMINATED_CLOSING_BRACE,o(),0),b.braceNest=0,oa(m,b);if(ca=E(m,b))return F=k(b,5,j(m)),$(m),F;if(ra=I(m,b))return F=k(b,6,c(m)),$(m),F;if(B=G(m,b))return F=k(b,7,p(m)),$(m),F;if(!ca&&!ra&&!B)return F=k(b,13,h(m)),_(ja.INVALID_TOKEN_IN_PLACEHOLDER,o(),0,F.value),$(m),F;break}}return F}function V(m,b){const{currentType:F}=b;let J=null;const ca=m.currentChar();switch((F===8||F===9||F===12||F===10)&&(ca===un||ca===ae)&&_(ja.INVALID_LINKED_FORMAT,o(),0),ca){case"@":return m.next(),J=k(b,8,"@"),b.inLinked=!0,J;case".":return $(m),m.next(),k(b,9,".");case":":return $(m),m.next(),k(b,10,":");default:return q(m)?(J=k(b,1,R(m)),b.braceNest=0,b.inLinked=!1,J):S(m,b)||K(m,b)?($(m),V(m,b)):v(m,b)?($(m),k(b,12,C(m))):O(m,b)?($(m),ca==="{"?H(m,b)||J:k(b,11,y(m))):(F===8&&_(ja.INVALID_LINKED_FORMAT,o(),0),b.braceNest=0,b.inLinked=!1,oa(m,b))}}function oa(m,b){let F={type:14};if(b.braceNest>0)return H(m,b)||x(b);if(b.inLinked)return V(m,b)||x(b);switch(m.currentChar()){case"{":return H(m,b)||x(b);case"}":return _(ja.UNBALANCED_CLOSING_BRACE,o(),0),m.next(),k(b,3,"}");case"@":return V(m,b)||x(b);default:{if(q(m))return F=k(b,1,R(m)),b.braceNest=0,b.inLinked=!1,F;const{isModulo:ca,hasSpace:ra}=sa(m);if(ca)return ra?k(b,0,A(m)):k(b,4,u(m));if(ea(m))return k(b,0,A(m));break}}return F}function Q(){const{currentType:m,offset:b,startLoc:F,endLoc:J}=s;return s.lastType=m,s.lastOffset=b,s.lastStartLoc=F,s.lastEndLoc=J,s.offset=t(),s.startLoc=o(),i.currentChar()===he?k(s,14):oa(i,s)}return{nextToken:Q,currentOffset:t,currentPosition:o,context:g}}const N0="parser",L0=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function R0(a,n,e){switch(a){case"\\\\":return"\\";case"\\'":return"'";default:{const i=parseInt(n||e,16);return i<=55295||i>=57344?String.fromCodePoint(i):"�"}}}function $0(a={}){const n=a.location!==!1,{onError:e,onWarn:i}=a;function t(E,I,G,S,...v){const K=E.currentPosition();if(K.offset+=S,K.column+=S,e){const O=n?Tt(G,K):null,q=Ve(I,O,{domain:N0,args:v});e(q)}}function o(E,I,G,S,...v){const K=E.currentPosition();if(K.offset+=S,K.column+=S,i){const O=n?Tt(G,K):null;i(G0(I,O,v))}}function r(E,I,G){const S={type:E};return n&&(S.start=I,S.end=I,S.loc={start:G,end:G}),S}function l(E,I,G,S){n&&(E.end=I,E.loc&&(E.loc.end=G))}function s(E,I){const G=E.context(),S=r(3,G.offset,G.startLoc);return S.value=I,l(S,E.currentOffset(),E.currentPosition()),S}function g(E,I){const G=E.context(),{lastOffset:S,lastStartLoc:v}=G,K=r(5,S,v);return K.index=parseInt(I,10),E.nextToken(),l(K,E.currentOffset(),E.currentPosition()),K}function d(E,I,G){const S=E.context(),{lastOffset:v,lastStartLoc:K}=S,O=r(4,v,K);return O.key=I,G===!0&&(O.modulo=!0),E.nextToken(),l(O,E.currentOffset(),E.currentPosition()),O}function _(E,I){const G=E.context(),{lastOffset:S,lastStartLoc:v}=G,K=r(9,S,v);return K.value=I.replace(L0,R0),E.nextToken(),l(K,E.currentOffset(),E.currentPosition()),K}function k(E){const I=E.nextToken(),G=E.context(),{lastOffset:S,lastStartLoc:v}=G,K=r(8,S,v);return I.type!==12?(t(E,ja.UNEXPECTED_EMPTY_LINKED_MODIFIER,G.lastStartLoc,0),K.value="",l(K,S,v),{nextConsumeToken:I,node:K}):(I.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,G.lastStartLoc,0,Sn(I)),K.value=I.value||"",l(K,E.currentOffset(),E.currentPosition()),{node:K})}function x(E,I){const G=E.context(),S=r(7,G.offset,G.startLoc);return S.value=I,l(S,E.currentOffset(),E.currentPosition()),S}function D(E){const I=E.context(),G=r(6,I.offset,I.startLoc);let S=E.nextToken();if(S.type===9){const v=k(E);G.modifier=v.node,S=v.nextConsumeToken||E.nextToken()}switch(S.type!==10&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(S)),S=E.nextToken(),S.type===2&&(S=E.nextToken()),S.type){case 11:S.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(S)),G.key=x(E,S.value||"");break;case 5:S.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(S)),G.key=d(E,S.value||"");break;case 6:S.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(S)),G.key=g(E,S.value||"");break;case 7:S.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(S)),G.key=_(E,S.value||"");break;default:{t(E,ja.UNEXPECTED_EMPTY_LINKED_KEY,I.lastStartLoc,0);const v=E.context(),K=r(7,v.offset,v.startLoc);return K.value="",l(K,v.offset,v.startLoc),G.key=K,l(G,v.offset,v.startLoc),{nextConsumeToken:S,node:G}}}return l(G,E.currentOffset(),E.currentPosition()),{node:G}}function T(E){const I=E.context(),G=I.currentType===1?E.currentOffset():I.offset,S=I.currentType===1?I.endLoc:I.startLoc,v=r(2,G,S);v.items=[];let K=null,O=null;do{const ea=K||E.nextToken();switch(K=null,ea.type){case 0:ea.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(ea)),v.items.push(s(E,ea.value||""));break;case 6:ea.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(ea)),v.items.push(g(E,ea.value||""));break;case 4:O=!0;break;case 5:ea.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(ea)),v.items.push(d(E,ea.value||"",!!O)),O&&(o(E,Zo.USE_MODULO_SYNTAX,I.lastStartLoc,0,Sn(ea)),O=null);break;case 7:ea.value==null&&t(E,ja.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,Sn(ea)),v.items.push(_(E,ea.value||""));break;case 8:{const ga=D(E);v.items.push(ga.node),K=ga.nextConsumeToken||null;break}}}while(I.currentType!==14&&I.currentType!==1);const q=I.currentType===1?I.lastOffset:E.currentOffset(),sa=I.currentType===1?I.lastEndLoc:E.currentPosition();return l(v,q,sa),v}function $(E,I,G,S){const v=E.context();let K=S.items.length===0;const O=r(1,I,G);O.cases=[],O.cases.push(S);do{const q=T(E);K||(K=q.items.length===0),O.cases.push(q)}while(v.currentType!==14);return K&&t(E,ja.MUST_HAVE_MESSAGES_IN_PLURAL,G,0),l(O,E.currentOffset(),E.currentPosition()),O}function w(E){const I=E.context(),{offset:G,startLoc:S}=I,v=T(E);return I.currentType===14?v:$(E,G,S,v)}function L(E){const I=T0(E,cc({},a)),G=I.context(),S=r(0,G.offset,G.startLoc);return n&&S.loc&&(S.loc.source=E),S.body=w(I),a.onCacheKey&&(S.cacheKey=a.onCacheKey(E)),G.currentType!==14&&t(I,ja.UNEXPECTED_LEXICAL_ANALYSIS,G.lastStartLoc,0,E[G.offset]||""),l(S,I.currentOffset(),I.currentPosition()),S}return{parse:L}}function Sn(a){if(a.type===14)return"EOF";const n=(a.value||"").replace(/\r?\n/gu,"\\n");return n.length>10?n.slice(0,9)+"…":n}function F0(a,n={}){const e={ast:a,helpers:new Set};return{context:()=>e,helper:o=>(e.helpers.add(o),o)}}function pc(a,n){for(let e=0;emc(e)),a}function mc(a){if(a.items.length===1){const n=a.items[0];(n.type===3||n.type===9)&&(a.static=n.value,delete n.value)}else{const n=[];for(let e=0;er;function s(T,$){r.code+=T}function g(T,$=!0){const w=$?i:"";s(t?w+" ".repeat(T):w)}function d(T=!0){const $=++r.indentLevel;T&&g($)}function _(T=!0){const $=--r.indentLevel;T&&g($)}function k(){g(r.indentLevel)}return{context:l,push:s,indent:d,deindent:_,newline:k,helper:T=>`_${T}`,needIndent:()=>r.needIndent}}function D0(a,n){const{helper:e}=a;a.push(`${e("linked")}(`),We(a,n.key),n.modifier?(a.push(", "),We(a,n.modifier),a.push(", _type")):a.push(", undefined, _type"),a.push(")")}function z0(a,n){const{helper:e,needIndent:i}=a;a.push(`${e("normalize")}([`),a.indent(i());const t=n.items.length;for(let o=0;o1){a.push(`${e("plural")}([`),a.indent(i());const t=n.cases.length;for(let o=0;o{const e=gc(n.mode)?n.mode:"normal",i=gc(n.filename)?n.filename:"message.intl";n.sourceMap;const t=n.breakLineCode!=null?n.breakLineCode:e==="arrow"?";":` -`,o=n.needIndent?n.needIndent:e!=="arrow",r=a.helpers||[],l=H0(a,{filename:i,breakLineCode:t,needIndent:o});l.push(e==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(o),r.length>0&&(l.push(`const { ${uc(r.map(d=>`${d}: _${d}`),", ")} } = ctx`),l.newline()),l.push("return "),We(l,a),l.deindent(o),l.push("}"),delete a.helpers;const{code:s,map:g}=l.context();return{ast:a,code:s,map:g?g.toJSON():void 0}};function J0(a,n={}){const e=cc({},n),i=!!e.jit,t=!!e.minify,o=e.optimize==null?!0:e.optimize,l=$0(e).parse(a);return i?(o&&B0(l),t&&Ye(l),{ast:l,code:""}):(K0(l,e),W0(l,e))}/*! - * core-base v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */function Z0(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Qn().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Qn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Qn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Kn(a){return xa(a)&&Xo(a)===0&&(An(a,"b")||An(a,"body"))}const hc=["b","body"];function q0(a){return ye(a,hc)}const yc=["c","cases"];function X0(a){return ye(a,yc,[])}const bc=["s","static"];function Q0(a){return ye(a,bc)}const _c=["i","items"];function ay(a){return ye(a,_c,[])}const fc=["t","type"];function Xo(a){return ye(a,fc)}const Pc=["v","value"];function Nt(a,n){const e=ye(a,Pc);if(e!=null)return e;throw xi(n)}const Cc=["m","modifier"];function ny(a){return ye(a,Cc)}const jc=["k","key"];function ey(a){const n=ye(a,jc);if(n)return n;throw xi(6)}function ye(a,n,e){for(let i=0;i{r===void 0?r=l:r+=l},k[1]=()=>{r!==void 0&&(n.push(r),r=void 0)},k[2]=()=>{k[0](),t++},k[3]=()=>{if(t>0)t--,i=4,k[0]();else{if(t=0,r===void 0||(r=ly(r),r===!1))return!1;k[1]()}};function x(){const D=a[e+1];if(i===5&&D==="'"||i===6&&D==='"')return e++,l="\\"+D,k[0](),!0}for(;i!==null;)if(e++,o=a[e],!(o==="\\"&&x())){if(s=ry(o),_=be[i],g=_[s]||_.l||8,g===8||(i=g[0],g[1]!==void 0&&(d=k[g[1]],d&&(l=o,d()===!1))))return;if(i===7)return n}}const Gc=new Map;function cy(a,n){return xa(a)?a[n]:null}function gy(a,n){if(!xa(a))return null;let e=Gc.get(n);if(e||(e=sy(n),e&&Gc.set(n,e)),!e)return null;const i=e.length;let t=a,o=0;for(;oa,dy=a=>"",py="text",my=a=>a.length===0?"":f0(a),hy=_0;function vc(a,n){return a=Math.abs(a),n===2?a?a>1?1:0:1:a?Math.min(a,2):0}function yy(a){const n=Za(a.pluralIndex)?a.pluralIndex:-1;return a.named&&(Za(a.named.count)||Za(a.named.n))?Za(a.named.count)?a.named.count:Za(a.named.n)?a.named.n:n:n}function by(a,n){n.count||(n.count=a),n.n||(n.n=a)}function _y(a={}){const n=a.locale,e=yy(a),i=xa(a.pluralRules)&&da(n)&&Ha(a.pluralRules[n])?a.pluralRules[n]:vc,t=xa(a.pluralRules)&&da(n)&&Ha(a.pluralRules[n])?vc:void 0,o=w=>w[i(e,w.length,t)],r=a.list||[],l=w=>r[w],s=a.named||La();Za(a.pluralIndex)&&by(e,s);const g=w=>s[w];function d(w){const L=Ha(a.messages)?a.messages(w):xa(a.messages)?a.messages[w]:!1;return L||(a.parent?a.parent.message(w):dy)}const _=w=>a.modifiers?a.modifiers[w]:uy,k=Ga(a.processor)&&Ha(a.processor.normalize)?a.processor.normalize:my,x=Ga(a.processor)&&Ha(a.processor.interpolate)?a.processor.interpolate:hy,D=Ga(a.processor)&&da(a.processor.type)?a.processor.type:py,$={list:l,named:g,plural:o,linked:(w,...L)=>{const[E,I]=L;let G="text",S="";L.length===1?xa(E)?(S=E.modifier||S,G=E.type||G):da(E)&&(S=E||S):L.length===2&&(da(E)&&(S=E||S),da(I)&&(G=I||G));const v=d(w)($),K=G==="vnode"&&za(v)&&S?v[0]:v;return S?_(S)(K,G):K},message:d,type:D,interpolate:x,normalize:k,values:on(La(),r,s)};return $}let Ti=null;function fy(a){Ti=a}function Py(a,n,e){Ti&&Ti.emit("i18n:init",{timestamp:Date.now(),i18n:a,version:n,meta:e})}const Cy=jy("function:translate");function jy(a){return n=>Ti&&Ti.emit(a,n)}const ky=Zo.__EXTEND_POINT__,Ie=It(ky),Gy={FALLBACK_TO_TRANSLATE:Ie(),CANNOT_FORMAT_NUMBER:Ie(),FALLBACK_TO_NUMBER_FORMAT:Ie(),CANNOT_FORMAT_DATE:Ie(),FALLBACK_TO_DATE_FORMAT:Ie(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:Ie(),__EXTEND_POINT__:Ie()},Ac=ja.__EXTEND_POINT__,we=It(Ac),En={INVALID_ARGUMENT:Ac,INVALID_DATE_ARGUMENT:we(),INVALID_ISO_DATE_ARGUMENT:we(),NOT_SUPPORT_NON_STRING_MESSAGE:we(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:we(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:we(),NOT_SUPPORT_LOCALE_TYPE:we(),__EXTEND_POINT__:we()};function Bn(a){return Ve(a,null,void 0)}function Qo(a,n){return n.locale!=null?Sc(n.locale):Sc(a.locale)}let ar;function Sc(a){if(da(a))return a;if(Ha(a)){if(a.resolvedOnce&&ar!=null)return ar;if(a.constructor.name==="Function"){const n=a();if(b0(n))throw Bn(En.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return ar=n}else throw Bn(En.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Bn(En.NOT_SUPPORT_LOCALE_TYPE)}function vy(a,n,e){return[...new Set([e,...za(n)?n:xa(n)?Object.keys(n):da(n)?[n]:[e]])]}function Ec(a,n,e){const i=da(e)?e:Je,t=a;t.__localeChainCache||(t.__localeChainCache=new Map);let o=t.__localeChainCache.get(i);if(!o){o=[];let r=[e];for(;za(r);)r=Mc(o,r,n);const l=za(n)||!Ga(n)?n:n.default?n.default:null;r=da(l)?[l]:l,za(r)&&Mc(o,r,!1),t.__localeChainCache.set(i,o)}return o}function Mc(a,n,e){let i=!0;for(let t=0;t`${a.charAt(0).toLocaleUpperCase()}${a.substr(1)}`;function My(){return{upper:(a,n)=>n==="text"&&da(a)?a.toUpperCase():n==="vnode"&&xa(a)&&"__v_isVNode"in a?a.children.toUpperCase():a,lower:(a,n)=>n==="text"&&da(a)?a.toLowerCase():n==="vnode"&&xa(a)&&"__v_isVNode"in a?a.children.toLowerCase():a,capitalize:(a,n)=>n==="text"&&da(a)?wc(a):n==="vnode"&&xa(a)&&"__v_isVNode"in a?wc(a.children):a}}let xc;function Tc(a){xc=a}let Nc;function Iy(a){Nc=a}let Lc;function wy(a){Lc=a}let Rc=null;const xy=a=>{Rc=a},Ty=()=>Rc;let $c=null;const Fc=a=>{$c=a},Ny=()=>$c;let Kc=0;function Ly(a={}){const n=Ha(a.onWarn)?a.onWarn:g0,e=da(a.version)?a.version:Ey,i=da(a.locale)||Ha(a.locale)?a.locale:Je,t=Ha(i)?Je:i,o=za(a.fallbackLocale)||Ga(a.fallbackLocale)||da(a.fallbackLocale)||a.fallbackLocale===!1?a.fallbackLocale:t,r=Ga(a.messages)?a.messages:nr(t),l=Ga(a.datetimeFormats)?a.datetimeFormats:nr(t),s=Ga(a.numberFormats)?a.numberFormats:nr(t),g=on(La(),a.modifiers,My()),d=a.pluralRules||La(),_=Ha(a.missing)?a.missing:null,k=Ea(a.missingWarn)||me(a.missingWarn)?a.missingWarn:!0,x=Ea(a.fallbackWarn)||me(a.fallbackWarn)?a.fallbackWarn:!0,D=!!a.fallbackFormat,T=!!a.unresolving,$=Ha(a.postTranslation)?a.postTranslation:null,w=Ga(a.processor)?a.processor:null,L=Ea(a.warnHtmlMessage)?a.warnHtmlMessage:!0,E=!!a.escapeParameter,I=Ha(a.messageCompiler)?a.messageCompiler:xc,G=Ha(a.messageResolver)?a.messageResolver:Nc||cy,S=Ha(a.localeFallbacker)?a.localeFallbacker:Lc||vy,v=xa(a.fallbackContext)?a.fallbackContext:void 0,K=a,O=xa(K.__datetimeFormatters)?K.__datetimeFormatters:new Map,q=xa(K.__numberFormatters)?K.__numberFormatters:new Map,sa=xa(K.__meta)?K.__meta:{};Kc++;const ea={version:e,cid:Kc,locale:i,fallbackLocale:o,messages:r,modifiers:g,pluralRules:d,missing:_,missingWarn:k,fallbackWarn:x,fallbackFormat:D,unresolving:T,postTranslation:$,processor:w,warnHtmlMessage:L,escapeParameter:E,messageCompiler:I,messageResolver:G,localeFallbacker:S,fallbackContext:v,onWarn:n,__meta:sa};return ea.datetimeFormats=l,ea.numberFormats=s,ea.__datetimeFormatters=O,ea.__numberFormatters=q,__INTLIFY_PROD_DEVTOOLS__&&Py(ea,e,sa),ea}const nr=a=>({[a]:La()});function er(a,n,e,i,t){const{missing:o,onWarn:r}=a;if(o!==null){const l=o(a,e,n,t);return da(l)?l:n}else return n}function Ni(a,n,e){const i=a;i.__localeChainCache=new Map,a.localeFallbacker(a,e,n)}function Ry(a,n){return a===n?!1:a.split("-")[0]===n.split("-")[0]}function $y(a,n){const e=n.indexOf(a);if(e===-1)return!1;for(let i=e+1;iFy(e,a)}function Fy(a,n){const e=q0(n);if(e==null)throw xi(0);if(Xo(e)===1){const o=X0(e);return a.plural(o.reduce((r,l)=>[...r,Bc(a,l)],[]))}else return Bc(a,e)}function Bc(a,n){const e=Q0(n);if(e!=null)return a.type==="text"?e:a.normalize([e]);{const i=ay(n).reduce((t,o)=>[...t,tr(a,o)],[]);return a.normalize(i)}}function tr(a,n){const e=Xo(n);switch(e){case 3:return Nt(n,e);case 9:return Nt(n,e);case 4:{const i=n;if(An(i,"k")&&i.k)return a.interpolate(a.named(i.k));if(An(i,"key")&&i.key)return a.interpolate(a.named(i.key));throw xi(e)}case 5:{const i=n;if(An(i,"i")&&Za(i.i))return a.interpolate(a.list(i.i));if(An(i,"index")&&Za(i.index))return a.interpolate(a.list(i.index));throw xi(e)}case 6:{const i=n,t=ny(i),o=ey(i);return a.linked(tr(a,o),t?tr(a,t):void 0,a.type)}case 7:return Nt(n,e);case 8:return Nt(n,e);default:throw new Error(`unhandled node on format message part: ${e}`)}}const Oc=a=>a;let Ze=La();function Uc(a,n={}){let e=!1;const i=n.onError||A0;return n.onError=t=>{e=!0,i(t)},{...J0(a,n),detectError:e}}const Ky=(a,n)=>{if(!da(a))throw Bn(En.NOT_SUPPORT_NON_STRING_MESSAGE);{Ea(n.warnHtmlMessage)&&n.warnHtmlMessage;const i=(n.onCacheKey||Oc)(a),t=Ze[i];if(t)return t;const{code:o,detectError:r}=Uc(a,n),l=new Function(`return ${o}`)();return r?l:Ze[i]=l}};function By(a,n){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&da(a)){Ea(n.warnHtmlMessage)&&n.warnHtmlMessage;const i=(n.onCacheKey||Oc)(a),t=Ze[i];if(t)return t;const{ast:o,detectError:r}=Uc(a,{...n,location:!1,jit:!0}),l=ir(o);return r?l:Ze[i]=l}else{const e=a.cacheKey;if(e){const i=Ze[e];return i||(Ze[e]=ir(a))}else return ir(a)}}const Hc=()=>"",Cn=a=>Ha(a);function Dc(a,...n){const{fallbackFormat:e,postTranslation:i,unresolving:t,messageCompiler:o,fallbackLocale:r,messages:l}=a,[s,g]=or(...n),d=Ea(g.missingWarn)?g.missingWarn:a.missingWarn,_=Ea(g.fallbackWarn)?g.fallbackWarn:a.fallbackWarn,k=Ea(g.escapeParameter)?g.escapeParameter:a.escapeParameter,x=!!g.resolvedMessage,D=da(g.default)||Ea(g.default)?Ea(g.default)?o?s:()=>s:g.default:e?o?s:()=>s:"",T=e||D!=="",$=Qo(a,g);k&&Oy(g);let[w,L,E]=x?[s,$,l[$]||La()]:zc(a,s,$,r,_,d),I=w,G=s;if(!x&&!(da(I)||Kn(I)||Cn(I))&&T&&(I=D,G=I),!x&&(!(da(I)||Kn(I)||Cn(I))||!da(L)))return t?Lt:s;let S=!1;const v=()=>{S=!0},K=Cn(I)?I:Vc(a,s,L,I,G,v);if(S)return I;const O=Dy(a,L,E,g),q=_y(O),sa=Uy(a,K,q);let ea=i?i(sa,s):sa;if(k&&da(ea)&&(ea=h0(ea)),__INTLIFY_PROD_DEVTOOLS__){const ga={timestamp:Date.now(),key:da(s)?s:Cn(I)?I.key:"",locale:L||(Cn(I)?I.locale:""),format:da(I)?I:Cn(I)?I.source:"",message:ea};ga.meta=on({},a.__meta,Ty()||{}),Cy(ga)}return ea}function Oy(a){za(a.list)?a.list=a.list.map(n=>da(n)?tc(n):n):xa(a.named)&&Object.keys(a.named).forEach(n=>{da(a.named[n])&&(a.named[n]=tc(a.named[n]))})}function zc(a,n,e,i,t,o){const{messages:r,onWarn:l,messageResolver:s,localeFallbacker:g}=a,d=g(a,i,e);let _=La(),k,x=null;const D="translate";for(let T=0;Ti;return g.locale=e,g.key=n,g}const s=r(i,Hy(a,e,t,i,l,o));return s.locale=e,s.key=n,s.source=i,s}function Uy(a,n,e){return n(e)}function or(...a){const[n,e,i]=a,t=La();if(!da(n)&&!Za(n)&&!Cn(n)&&!Kn(n))throw Bn(En.INVALID_ARGUMENT);const o=Za(n)?String(n):(Cn(n),n);return Za(e)?t.plural=e:da(e)?t.default=e:Ga(e)&&!Mt(e)?t.named=e:za(e)&&(t.list=e),Za(i)?t.plural=i:da(i)?t.default=i:Ga(i)&&on(t,i),[o,t]}function Hy(a,n,e,i,t,o){return{locale:n,key:e,warnHtmlMessage:t,onError:r=>{throw o&&o(r),r},onCacheKey:r=>u0(n,e,r)}}function Dy(a,n,e,i){const{modifiers:t,pluralRules:o,messageResolver:r,fallbackLocale:l,fallbackWarn:s,missingWarn:g,fallbackContext:d}=a,k={locale:n,modifiers:t,pluralRules:o,messages:x=>{let D=r(e,x);if(D==null&&d){const[,,T]=zc(d,x,n,l,s,g);D=r(T,x)}if(da(D)||Kn(D)){let T=!1;const w=Vc(a,x,n,D,x,()=>{T=!0});return T?Hc:w}else return Cn(D)?D:Hc}};return a.processor&&(k.processor=a.processor),i.list&&(k.list=i.list),i.named&&(k.named=i.named),Za(i.plural)&&(k.pluralIndex=i.plural),k}function Yc(a,...n){const{datetimeFormats:e,unresolving:i,fallbackLocale:t,onWarn:o,localeFallbacker:r}=a,{__datetimeFormatters:l}=a,[s,g,d,_]=rr(...n),k=Ea(d.missingWarn)?d.missingWarn:a.missingWarn;Ea(d.fallbackWarn)?d.fallbackWarn:a.fallbackWarn;const x=!!d.part,D=Qo(a,d),T=r(a,t,D);if(!da(s)||s==="")return new Intl.DateTimeFormat(D,_).format(g);let $={},w,L=null;const E="datetime format";for(let S=0;S{Wc.includes(s)?r[s]=e[s]:o[s]=e[s]}),da(i)?o.locale=i:Ga(i)&&(r=i),Ga(t)&&(r=t),[o.key||"",l,o,r]}function Jc(a,n,e){const i=a;for(const t in e){const o=`${n}__${t}`;i.__datetimeFormatters.has(o)&&i.__datetimeFormatters.delete(o)}}function Zc(a,...n){const{numberFormats:e,unresolving:i,fallbackLocale:t,onWarn:o,localeFallbacker:r}=a,{__numberFormatters:l}=a,[s,g,d,_]=lr(...n),k=Ea(d.missingWarn)?d.missingWarn:a.missingWarn;Ea(d.fallbackWarn)?d.fallbackWarn:a.fallbackWarn;const x=!!d.part,D=Qo(a,d),T=r(a,t,D);if(!da(s)||s==="")return new Intl.NumberFormat(D,_).format(g);let $={},w,L=null;const E="number format";for(let S=0;S{qc.includes(s)?r[s]=e[s]:o[s]=e[s]}),da(i)?o.locale=i:Ga(i)&&(r=i),Ga(t)&&(r=t),[o.key||"",l,o,r]}function Xc(a,n,e){const i=a;for(const t in e){const o=`${n}__${t}`;i.__numberFormatters.has(o)&&i.__numberFormatters.delete(o)}}Z0();/*! - * vue-i18n v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */const zy="9.14.5";function Vy(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(Qn().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(Qn().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Qn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Qn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Qn().__INTLIFY_PROD_DEVTOOLS__=!1)}const Yy=Gy.__EXTEND_POINT__,ne=It(Yy);ne(),ne(),ne(),ne(),ne(),ne(),ne(),ne(),ne();const Qc=En.__EXTEND_POINT__,mn=It(Qc),Qa={UNEXPECTED_RETURN_TYPE:Qc,INVALID_ARGUMENT:mn(),MUST_BE_CALL_SETUP_TOP:mn(),NOT_INSTALLED:mn(),NOT_AVAILABLE_IN_LEGACY_MODE:mn(),REQUIRED_VALUE:mn(),INVALID_VALUE:mn(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:mn(),NOT_INSTALLED_WITH_PROVIDE:mn(),UNEXPECTED_ERROR:mn(),NOT_COMPATIBLE_LEGACY_VUE_I18N:mn(),BRIDGE_SUPPORT_VUE_2_ONLY:mn(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:mn(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:mn(),__EXTEND_POINT__:mn()};function en(a,...n){return Ve(a,null,void 0)}const sr=pe("__translateVNode"),cr=pe("__datetimeParts"),gr=pe("__numberParts"),ag=pe("__setPluralRules"),ng=pe("__injectWithOption"),ur=pe("__dispose");function Li(a){if(!xa(a)||Kn(a))return a;for(const n in a)if(An(a,n))if(!n.includes("."))xa(a[n])&&Li(a[n]);else{const e=n.split("."),i=e.length-1;let t=a,o=!1;for(let r=0;r{if("locale"in l&&"resource"in l){const{locale:s,resource:g}=l;s?(r[s]=r[s]||La(),xt(g,r[s])):xt(g,r)}else da(l)&&xt(JSON.parse(l),r)}),t==null&&o)for(const l in r)An(r,l)&&Li(r[l]);return r}function eg(a){return a.type}function ig(a,n,e){let i=xa(n.messages)?n.messages:La();"__i18nGlobal"in e&&(i=Rt(a.locale.value,{messages:i,__i18n:e.__i18nGlobal}));const t=Object.keys(i);t.length&&t.forEach(o=>{a.mergeLocaleMessage(o,i[o])});{if(xa(n.datetimeFormats)){const o=Object.keys(n.datetimeFormats);o.length&&o.forEach(r=>{a.mergeDateTimeFormat(r,n.datetimeFormats[r])})}if(xa(n.numberFormats)){const o=Object.keys(n.numberFormats);o.length&&o.forEach(r=>{a.mergeNumberFormat(r,n.numberFormats[r])})}}}function tg(a){return Wa(Gi,null,a,0)}const og="__INTLIFY_META__",rg=()=>[],Wy=()=>!1;let lg=0;function sg(a){return(n,e,i,t)=>a(e,i,ue()||void 0,t)}const Jy=()=>{const a=ue();let n=null;return a&&(n=eg(a)[og])?{[og]:n}:null};function dr(a={},n){const{__root:e,__injectWithOption:i}=a,t=e===void 0,o=a.flatJson,r=Et?ua:Ll,l=!!a.translateExistCompatible;let s=Ea(a.inheritLocale)?a.inheritLocale:!0;const g=r(e&&s?e.locale.value:da(a.locale)?a.locale:Je),d=r(e&&s?e.fallbackLocale.value:da(a.fallbackLocale)||za(a.fallbackLocale)||Ga(a.fallbackLocale)||a.fallbackLocale===!1?a.fallbackLocale:g.value),_=r(Rt(g.value,a)),k=r(Ga(a.datetimeFormats)?a.datetimeFormats:{[g.value]:{}}),x=r(Ga(a.numberFormats)?a.numberFormats:{[g.value]:{}});let D=e?e.missingWarn:Ea(a.missingWarn)||me(a.missingWarn)?a.missingWarn:!0,T=e?e.fallbackWarn:Ea(a.fallbackWarn)||me(a.fallbackWarn)?a.fallbackWarn:!0,$=e?e.fallbackRoot:Ea(a.fallbackRoot)?a.fallbackRoot:!0,w=!!a.fallbackFormat,L=Ha(a.missing)?a.missing:null,E=Ha(a.missing)?sg(a.missing):null,I=Ha(a.postTranslation)?a.postTranslation:null,G=e?e.warnHtmlMessage:Ea(a.warnHtmlMessage)?a.warnHtmlMessage:!0,S=!!a.escapeParameter;const v=e?e.modifiers:Ga(a.modifiers)?a.modifiers:{};let K=a.pluralRules||e&&e.pluralRules,O;O=(()=>{t&&Fc(null);const B={version:zy,locale:g.value,fallbackLocale:d.value,messages:_.value,modifiers:v,pluralRules:K,missing:E===null?void 0:E,missingWarn:D,fallbackWarn:T,fallbackFormat:w,unresolving:!0,postTranslation:I===null?void 0:I,warnHtmlMessage:G,escapeParameter:S,messageResolver:a.messageResolver,messageCompiler:a.messageCompiler,__meta:{framework:"vue"}};B.datetimeFormats=k.value,B.numberFormats=x.value,B.__datetimeFormatters=Ga(O)?O.__datetimeFormatters:void 0,B.__numberFormatters=Ga(O)?O.__numberFormatters:void 0;const Z=Ly(B);return t&&Fc(Z),Z})(),Ni(O,g.value,d.value);function sa(){return[g.value,d.value,_.value,k.value,x.value]}const ea=la({get:()=>g.value,set:B=>{g.value=B,O.locale=g.value}}),ga=la({get:()=>d.value,set:B=>{d.value=B,O.fallbackLocale=d.value,Ni(O,g.value,B)}}),Sa=la(()=>_.value),Ma=la(()=>k.value),ma=la(()=>x.value);function pa(){return Ha(I)?I:null}function Y(B){I=B,O.postTranslation=B}function ta(){return L}function aa(B){B!==null&&(E=sg(B)),L=B,O.missing=E}const ba=(B,Z,_a,va,Ra,an)=>{sa();let qa;try{__INTLIFY_PROD_DEVTOOLS__,t||(O.fallbackContext=e?Ny():void 0),qa=B(O)}finally{__INTLIFY_PROD_DEVTOOLS__,t||(O.fallbackContext=void 0)}if(_a!=="translate exists"&&Za(qa)&&qa===Lt||_a==="translate exists"&&!qa){const[Pa,$a]=Z();return e&&$?va(e):Ra(Pa)}else{if(an(qa))return qa;throw en(Qa.UNEXPECTED_RETURN_TYPE)}};function na(...B){return ba(Z=>Reflect.apply(Dc,null,[Z,...B]),()=>or(...B),"translate",Z=>Reflect.apply(Z.t,Z,[...B]),Z=>Z,Z=>da(Z))}function u(...B){const[Z,_a,va]=B;if(va&&!xa(va))throw en(Qa.INVALID_ARGUMENT);return na(Z,_a,on({resolvedMessage:!0},va||{}))}function A(...B){return ba(Z=>Reflect.apply(Yc,null,[Z,...B]),()=>rr(...B),"datetime format",Z=>Reflect.apply(Z.d,Z,[...B]),()=>Ic,Z=>da(Z))}function j(...B){return ba(Z=>Reflect.apply(Zc,null,[Z,...B]),()=>lr(...B),"number format",Z=>Reflect.apply(Z.n,Z,[...B]),()=>Ic,Z=>da(Z))}function c(B){return B.map(Z=>da(Z)||Za(Z)||Ea(Z)?tg(String(Z)):Z)}const p={normalize:c,interpolate:B=>B,type:"vnode"};function M(...B){return ba(Z=>{let _a;const va=Z;try{va.processor=p,_a=Reflect.apply(Dc,null,[va,...B])}finally{va.processor=null}return _a},()=>or(...B),"translate",Z=>Z[sr](...B),Z=>[tg(Z)],Z=>za(Z))}function N(...B){return ba(Z=>Reflect.apply(Zc,null,[Z,...B]),()=>lr(...B),"number format",Z=>Z[gr](...B),rg,Z=>da(Z)||za(Z))}function U(...B){return ba(Z=>Reflect.apply(Yc,null,[Z,...B]),()=>rr(...B),"datetime format",Z=>Z[cr](...B),rg,Z=>da(Z)||za(Z))}function h(B){K=B,O.pluralRules=K}function C(B,Z){return ba(()=>{if(!B)return!1;const _a=da(Z)?Z:g.value,va=H(_a),Ra=O.messageResolver(va,B);return l?Ra!=null:Kn(Ra)||Cn(Ra)||da(Ra)},()=>[B],"translate exists",_a=>Reflect.apply(_a.te,_a,[B,Z]),Wy,_a=>Ea(_a))}function y(B){let Z=null;const _a=Ec(O,d.value,g.value);for(let va=0;va<_a.length;va++){const Ra=_.value[_a[va]]||{},an=O.messageResolver(Ra,B);if(an!=null){Z=an;break}}return Z}function R(B){const Z=y(B);return Z??(e?e.tm(B)||{}:{})}function H(B){return _.value[B]||{}}function V(B,Z){if(o){const _a={[B]:Z};for(const va in _a)An(_a,va)&&Li(_a[va]);Z=_a[B]}_.value[B]=Z,O.messages=_.value}function oa(B,Z){_.value[B]=_.value[B]||{};const _a={[B]:Z};if(o)for(const va in _a)An(_a,va)&&Li(_a[va]);Z=_a[B],xt(Z,_.value[B]),O.messages=_.value}function Q(B){return k.value[B]||{}}function m(B,Z){k.value[B]=Z,O.datetimeFormats=k.value,Jc(O,B,Z)}function b(B,Z){k.value[B]=on(k.value[B]||{},Z),O.datetimeFormats=k.value,Jc(O,B,Z)}function F(B){return x.value[B]||{}}function J(B,Z){x.value[B]=Z,O.numberFormats=x.value,Xc(O,B,Z)}function ca(B,Z){x.value[B]=on(x.value[B]||{},Z),O.numberFormats=x.value,Xc(O,B,Z)}lg++,e&&Et&&(cn(e.locale,B=>{s&&(g.value=B,O.locale=B,Ni(O,g.value,d.value))}),cn(e.fallbackLocale,B=>{s&&(d.value=B,O.fallbackLocale=B,Ni(O,g.value,d.value))}));const ra={id:lg,locale:ea,fallbackLocale:ga,get inheritLocale(){return s},set inheritLocale(B){s=B,B&&e&&(g.value=e.locale.value,d.value=e.fallbackLocale.value,Ni(O,g.value,d.value))},get availableLocales(){return Object.keys(_.value).sort()},messages:Sa,get modifiers(){return v},get pluralRules(){return K||{}},get isGlobal(){return t},get missingWarn(){return D},set missingWarn(B){D=B,O.missingWarn=D},get fallbackWarn(){return T},set fallbackWarn(B){T=B,O.fallbackWarn=T},get fallbackRoot(){return $},set fallbackRoot(B){$=B},get fallbackFormat(){return w},set fallbackFormat(B){w=B,O.fallbackFormat=w},get warnHtmlMessage(){return G},set warnHtmlMessage(B){G=B,O.warnHtmlMessage=B},get escapeParameter(){return S},set escapeParameter(B){S=B,O.escapeParameter=B},t:na,getLocaleMessage:H,setLocaleMessage:V,mergeLocaleMessage:oa,getPostTranslationHandler:pa,setPostTranslationHandler:Y,getMissingHandler:ta,setMissingHandler:aa,[ag]:h};return ra.datetimeFormats=Ma,ra.numberFormats=ma,ra.rt=u,ra.te=C,ra.tm=R,ra.d=A,ra.n=j,ra.getDateTimeFormat=Q,ra.setDateTimeFormat=m,ra.mergeDateTimeFormat=b,ra.getNumberFormat=F,ra.setNumberFormat=J,ra.mergeNumberFormat=ca,ra[ng]=i,ra[sr]=M,ra[cr]=U,ra[gr]=N,ra}function Zy(a){const n=da(a.locale)?a.locale:Je,e=da(a.fallbackLocale)||za(a.fallbackLocale)||Ga(a.fallbackLocale)||a.fallbackLocale===!1?a.fallbackLocale:n,i=Ha(a.missing)?a.missing:void 0,t=Ea(a.silentTranslationWarn)||me(a.silentTranslationWarn)?!a.silentTranslationWarn:!0,o=Ea(a.silentFallbackWarn)||me(a.silentFallbackWarn)?!a.silentFallbackWarn:!0,r=Ea(a.fallbackRoot)?a.fallbackRoot:!0,l=!!a.formatFallbackMessages,s=Ga(a.modifiers)?a.modifiers:{},g=a.pluralizationRules,d=Ha(a.postTranslation)?a.postTranslation:void 0,_=da(a.warnHtmlInMessage)?a.warnHtmlInMessage!=="off":!0,k=!!a.escapeParameterHtml,x=Ea(a.sync)?a.sync:!0;let D=a.messages;if(Ga(a.sharedMessages)){const S=a.sharedMessages;D=Object.keys(S).reduce((K,O)=>{const q=K[O]||(K[O]={});return on(q,S[O]),K},D||{})}const{__i18n:T,__root:$,__injectWithOption:w}=a,L=a.datetimeFormats,E=a.numberFormats,I=a.flatJson,G=a.translateExistCompatible;return{locale:n,fallbackLocale:e,messages:D,flatJson:I,datetimeFormats:L,numberFormats:E,missing:i,missingWarn:t,fallbackWarn:o,fallbackRoot:r,fallbackFormat:l,modifiers:s,pluralRules:g,postTranslation:d,warnHtmlMessage:_,escapeParameter:k,messageResolver:a.messageResolver,inheritLocale:x,translateExistCompatible:G,__i18n:T,__root:$,__injectWithOption:w}}function pr(a={},n){{const e=dr(Zy(a)),{__extender:i}=a,t={id:e.id,get locale(){return e.locale.value},set locale(o){e.locale.value=o},get fallbackLocale(){return e.fallbackLocale.value},set fallbackLocale(o){e.fallbackLocale.value=o},get messages(){return e.messages.value},get datetimeFormats(){return e.datetimeFormats.value},get numberFormats(){return e.numberFormats.value},get availableLocales(){return e.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(o){},get missing(){return e.getMissingHandler()},set missing(o){e.setMissingHandler(o)},get silentTranslationWarn(){return Ea(e.missingWarn)?!e.missingWarn:e.missingWarn},set silentTranslationWarn(o){e.missingWarn=Ea(o)?!o:o},get silentFallbackWarn(){return Ea(e.fallbackWarn)?!e.fallbackWarn:e.fallbackWarn},set silentFallbackWarn(o){e.fallbackWarn=Ea(o)?!o:o},get modifiers(){return e.modifiers},get formatFallbackMessages(){return e.fallbackFormat},set formatFallbackMessages(o){e.fallbackFormat=o},get postTranslation(){return e.getPostTranslationHandler()},set postTranslation(o){e.setPostTranslationHandler(o)},get sync(){return e.inheritLocale},set sync(o){e.inheritLocale=o},get warnHtmlInMessage(){return e.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(o){e.warnHtmlMessage=o!=="off"},get escapeParameterHtml(){return e.escapeParameter},set escapeParameterHtml(o){e.escapeParameter=o},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(o){},get pluralizationRules(){return e.pluralRules||{}},__composer:e,t(...o){const[r,l,s]=o,g={};let d=null,_=null;if(!da(r))throw en(Qa.INVALID_ARGUMENT);const k=r;return da(l)?g.locale=l:za(l)?d=l:Ga(l)&&(_=l),za(s)?d=s:Ga(s)&&(_=s),Reflect.apply(e.t,e,[k,d||_||{},g])},rt(...o){return Reflect.apply(e.rt,e,[...o])},tc(...o){const[r,l,s]=o,g={plural:1};let d=null,_=null;if(!da(r))throw en(Qa.INVALID_ARGUMENT);const k=r;return da(l)?g.locale=l:Za(l)?g.plural=l:za(l)?d=l:Ga(l)&&(_=l),da(s)?g.locale=s:za(s)?d=s:Ga(s)&&(_=s),Reflect.apply(e.t,e,[k,d||_||{},g])},te(o,r){return e.te(o,r)},tm(o){return e.tm(o)},getLocaleMessage(o){return e.getLocaleMessage(o)},setLocaleMessage(o,r){e.setLocaleMessage(o,r)},mergeLocaleMessage(o,r){e.mergeLocaleMessage(o,r)},d(...o){return Reflect.apply(e.d,e,[...o])},getDateTimeFormat(o){return e.getDateTimeFormat(o)},setDateTimeFormat(o,r){e.setDateTimeFormat(o,r)},mergeDateTimeFormat(o,r){e.mergeDateTimeFormat(o,r)},n(...o){return Reflect.apply(e.n,e,[...o])},getNumberFormat(o){return e.getNumberFormat(o)},setNumberFormat(o,r){e.setNumberFormat(o,r)},mergeNumberFormat(o,r){e.mergeNumberFormat(o,r)},getChoiceIndex(o,r){return-1}};return t.__extender=i,t}}const mr={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:a=>a==="parent"||a==="global",default:"parent"},i18n:{type:Object}};function qy({slots:a},n){return n.length===1&&n[0]==="default"?(a.default?a.default():[]).reduce((i,t)=>[...i,...t.type===Aa?t.children:[t]],[]):n.reduce((e,i)=>{const t=a[i];return t&&(e[i]=t()),e},La())}function cg(a){return Aa}const gg=fi({name:"i18n-t",props:on({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:a=>Za(a)||!isNaN(a)}},mr),setup(a,n){const{slots:e,attrs:i}=n,t=a.i18n||hr({useScope:a.scope,__useComponent:!0});return()=>{const o=Object.keys(e).filter(_=>_!=="_"),r=La();a.locale&&(r.locale=a.locale),a.plural!==void 0&&(r.plural=da(a.plural)?+a.plural:a.plural);const l=qy(n,o),s=t[sr](a.keypath,l,r),g=on(La(),i),d=da(a.tag)||xa(a.tag)?a.tag:cg();return Ts(d,g,s)}}});function Xy(a){return za(a)&&!da(a[0])}function ug(a,n,e,i){const{slots:t,attrs:o}=n;return()=>{const r={part:!0};let l=La();a.locale&&(r.locale=a.locale),da(a.format)?r.key=a.format:xa(a.format)&&(da(a.format.key)&&(r.key=a.format.key),l=Object.keys(a.format).reduce((k,x)=>e.includes(x)?on(La(),k,{[x]:a.format[x]}):k,La()));const s=i(a.value,r,l);let g=[r.key];za(s)?g=s.map((k,x)=>{const D=t[k.type],T=D?D({[k.type]:k.value,index:x,parts:s}):[k.value];return Xy(T)&&(T[0].key=`${k.type}-${x}`),T}):da(s)&&(g=[s]);const d=on(La(),o),_=da(a.tag)||xa(a.tag)?a.tag:cg();return Ts(_,d,g)}}const dg=fi({name:"i18n-n",props:on({value:{type:Number,required:!0},format:{type:[String,Object]}},mr),setup(a,n){const e=a.i18n||hr({useScope:a.scope,__useComponent:!0});return ug(a,n,qc,(...i)=>e[gr](...i))}}),pg=fi({name:"i18n-d",props:on({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},mr),setup(a,n){const e=a.i18n||hr({useScope:a.scope,__useComponent:!0});return ug(a,n,Wc,(...i)=>e[cr](...i))}});function Qy(a,n){const e=a;if(a.mode==="composition")return e.__getInstance(n)||a.global;{const i=e.__getInstance(n);return i!=null?i.__composer:a.global.__composer}}function ab(a){const n=r=>{const{instance:l,modifiers:s,value:g}=r;if(!l||!l.$)throw en(Qa.UNEXPECTED_ERROR);const d=Qy(a,l.$),_=mg(g);return[Reflect.apply(d.t,d,[...hg(_)]),d]};return{created:(r,l)=>{const[s,g]=n(l);Et&&a.global===g&&(r.__i18nWatcher=cn(g.locale,()=>{l.instance&&l.instance.$forceUpdate()})),r.__composer=g,r.textContent=s},unmounted:r=>{Et&&r.__i18nWatcher&&(r.__i18nWatcher(),r.__i18nWatcher=void 0,delete r.__i18nWatcher),r.__composer&&(r.__composer=void 0,delete r.__composer)},beforeUpdate:(r,{value:l})=>{if(r.__composer){const s=r.__composer,g=mg(l);r.textContent=Reflect.apply(s.t,s,[...hg(g)])}},getSSRProps:r=>{const[l]=n(r);return{textContent:l}}}}function mg(a){if(da(a))return{path:a};if(Ga(a)){if(!("path"in a))throw en(Qa.REQUIRED_VALUE,"path");return a}else throw en(Qa.INVALID_VALUE)}function hg(a){const{path:n,locale:e,args:i,choice:t,plural:o}=a,r={},l=i||{};return da(e)&&(r.locale=e),Za(t)&&(r.plural=t),Za(o)&&(r.plural=o),[n,l,r]}function nb(a,n,...e){const i=Ga(e[0])?e[0]:{},t=!!i.useI18nComponentName;(Ea(i.globalInstall)?i.globalInstall:!0)&&([t?"i18n":gg.name,"I18nT"].forEach(r=>a.component(r,gg)),[dg.name,"I18nN"].forEach(r=>a.component(r,dg)),[pg.name,"I18nD"].forEach(r=>a.component(r,pg))),a.directive("t",ab(n))}function eb(a,n,e){return{beforeCreate(){const i=ue();if(!i)throw en(Qa.UNEXPECTED_ERROR);const t=this.$options;if(t.i18n){const o=t.i18n;if(t.__i18n&&(o.__i18n=t.__i18n),o.__root=n,this===this.$root)this.$i18n=yg(a,o);else{o.__injectWithOption=!0,o.__extender=e.__vueI18nExtend,this.$i18n=pr(o);const r=this.$i18n;r.__extender&&(r.__disposer=r.__extender(this.$i18n))}}else if(t.__i18n)if(this===this.$root)this.$i18n=yg(a,t);else{this.$i18n=pr({__i18n:t.__i18n,__injectWithOption:!0,__extender:e.__vueI18nExtend,__root:n});const o=this.$i18n;o.__extender&&(o.__disposer=o.__extender(this.$i18n))}else this.$i18n=a;t.__i18nGlobal&&ig(n,t,t),this.$t=(...o)=>this.$i18n.t(...o),this.$rt=(...o)=>this.$i18n.rt(...o),this.$tc=(...o)=>this.$i18n.tc(...o),this.$te=(o,r)=>this.$i18n.te(o,r),this.$d=(...o)=>this.$i18n.d(...o),this.$n=(...o)=>this.$i18n.n(...o),this.$tm=o=>this.$i18n.tm(o),e.__setInstance(i,this.$i18n)},mounted(){},unmounted(){const i=ue();if(!i)throw en(Qa.UNEXPECTED_ERROR);const t=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,t.__disposer&&(t.__disposer(),delete t.__disposer,delete t.__extender),e.__deleteInstance(i),delete this.$i18n}}}function yg(a,n){a.locale=n.locale||a.locale,a.fallbackLocale=n.fallbackLocale||a.fallbackLocale,a.missing=n.missing||a.missing,a.silentTranslationWarn=n.silentTranslationWarn||a.silentFallbackWarn,a.silentFallbackWarn=n.silentFallbackWarn||a.silentFallbackWarn,a.formatFallbackMessages=n.formatFallbackMessages||a.formatFallbackMessages,a.postTranslation=n.postTranslation||a.postTranslation,a.warnHtmlInMessage=n.warnHtmlInMessage||a.warnHtmlInMessage,a.escapeParameterHtml=n.escapeParameterHtml||a.escapeParameterHtml,a.sync=n.sync||a.sync,a.__composer[ag](n.pluralizationRules||a.pluralizationRules);const e=Rt(a.locale,{messages:n.messages,__i18n:n.__i18n});return Object.keys(e).forEach(i=>a.mergeLocaleMessage(i,e[i])),n.datetimeFormats&&Object.keys(n.datetimeFormats).forEach(i=>a.mergeDateTimeFormat(i,n.datetimeFormats[i])),n.numberFormats&&Object.keys(n.numberFormats).forEach(i=>a.mergeNumberFormat(i,n.numberFormats[i])),a}const ib=pe("global-vue-i18n");function tb(a={},n){const e=__VUE_I18N_LEGACY_API__&&Ea(a.legacy)?a.legacy:__VUE_I18N_LEGACY_API__,i=Ea(a.globalInjection)?a.globalInjection:!0,t=__VUE_I18N_LEGACY_API__&&e?!!a.allowComposition:!0,o=new Map,[r,l]=ob(a,e),s=pe("");function g(k){return o.get(k)||null}function d(k,x){o.set(k,x)}function _(k){o.delete(k)}{const k={get mode(){return __VUE_I18N_LEGACY_API__&&e?"legacy":"composition"},get allowComposition(){return t},async install(x,...D){if(x.__VUE_I18N_SYMBOL__=s,x.provide(x.__VUE_I18N_SYMBOL__,k),Ga(D[0])){const w=D[0];k.__composerExtend=w.__composerExtend,k.__vueI18nExtend=w.__vueI18nExtend}let T=null;!e&&i&&(T=mb(x,k.global)),__VUE_I18N_FULL_INSTALL__&&nb(x,k,...D),__VUE_I18N_LEGACY_API__&&e&&x.mixin(eb(l,l.__composer,k));const $=x.unmount;x.unmount=()=>{T&&T(),k.dispose(),$()}},get global(){return l},dispose(){r.stop()},__instances:o,__getInstance:g,__setInstance:d,__deleteInstance:_};return k}}function hr(a={}){const n=ue();if(n==null)throw en(Qa.MUST_BE_CALL_SETUP_TOP);if(!n.isCE&&n.appContext.app!=null&&!n.appContext.app.__VUE_I18N_SYMBOL__)throw en(Qa.NOT_INSTALLED);const e=rb(n),i=sb(e),t=eg(n),o=lb(a,t);if(__VUE_I18N_LEGACY_API__&&e.mode==="legacy"&&!a.__useComponent){if(!e.allowComposition)throw en(Qa.NOT_AVAILABLE_IN_LEGACY_MODE);return db(n,o,i,a)}if(o==="global")return ig(i,a,t),i;if(o==="parent"){let s=cb(e,n,a.__useComponent);return s==null&&(s=i),s}const r=e;let l=r.__getInstance(n);if(l==null){const s=on({},a);"__i18n"in t&&(s.__i18n=t.__i18n),i&&(s.__root=i),l=dr(s),r.__composerExtend&&(l[ur]=r.__composerExtend(l)),ub(r,n,l),r.__setInstance(n,l)}return l}function ob(a,n,e){const i=po();{const t=__VUE_I18N_LEGACY_API__&&n?i.run(()=>pr(a)):i.run(()=>dr(a));if(t==null)throw en(Qa.UNEXPECTED_ERROR);return[i,t]}}function rb(a){{const n=Ya(a.isCE?ib:a.appContext.app.__VUE_I18N_SYMBOL__);if(!n)throw en(a.isCE?Qa.NOT_INSTALLED_WITH_PROVIDE:Qa.UNEXPECTED_ERROR);return n}}function lb(a,n){return Mt(a)?"__i18n"in n?"local":"global":a.useScope?a.useScope:"local"}function sb(a){return a.mode==="composition"?a.global:a.global.__composer}function cb(a,n,e=!1){let i=null;const t=n.root;let o=gb(n,e);for(;o!=null;){const r=a;if(a.mode==="composition")i=r.__getInstance(o);else if(__VUE_I18N_LEGACY_API__){const l=r.__getInstance(o);l!=null&&(i=l.__composer,e&&i&&!i[ng]&&(i=null))}if(i!=null||t===o)break;o=o.parent}return i}function gb(a,n=!1){return a==null?null:n&&a.vnode.ctx||a.parent}function ub(a,n,e){Rn(()=>{},n),wo(()=>{const i=e;a.__deleteInstance(n);const t=i[ur];t&&(t(),delete i[ur])},n)}function db(a,n,e,i={}){const t=n==="local",o=Ll(null);if(t&&a.proxy&&!(a.proxy.$options.i18n||a.proxy.$options.__i18n))throw en(Qa.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const r=Ea(i.inheritLocale)?i.inheritLocale:!da(i.locale),l=ua(!t||r?e.locale.value:da(i.locale)?i.locale:Je),s=ua(!t||r?e.fallbackLocale.value:da(i.fallbackLocale)||za(i.fallbackLocale)||Ga(i.fallbackLocale)||i.fallbackLocale===!1?i.fallbackLocale:l.value),g=ua(Rt(l.value,i)),d=ua(Ga(i.datetimeFormats)?i.datetimeFormats:{[l.value]:{}}),_=ua(Ga(i.numberFormats)?i.numberFormats:{[l.value]:{}}),k=t?e.missingWarn:Ea(i.missingWarn)||me(i.missingWarn)?i.missingWarn:!0,x=t?e.fallbackWarn:Ea(i.fallbackWarn)||me(i.fallbackWarn)?i.fallbackWarn:!0,D=t?e.fallbackRoot:Ea(i.fallbackRoot)?i.fallbackRoot:!0,T=!!i.fallbackFormat,$=Ha(i.missing)?i.missing:null,w=Ha(i.postTranslation)?i.postTranslation:null,L=t?e.warnHtmlMessage:Ea(i.warnHtmlMessage)?i.warnHtmlMessage:!0,E=!!i.escapeParameter,I=t?e.modifiers:Ga(i.modifiers)?i.modifiers:{},G=i.pluralRules||t&&e.pluralRules;function S(){return[l.value,s.value,g.value,d.value,_.value]}const v=la({get:()=>o.value?o.value.locale.value:l.value,set:y=>{o.value&&(o.value.locale.value=y),l.value=y}}),K=la({get:()=>o.value?o.value.fallbackLocale.value:s.value,set:y=>{o.value&&(o.value.fallbackLocale.value=y),s.value=y}}),O=la(()=>o.value?o.value.messages.value:g.value),q=la(()=>d.value),sa=la(()=>_.value);function ea(){return o.value?o.value.getPostTranslationHandler():w}function ga(y){o.value&&o.value.setPostTranslationHandler(y)}function Sa(){return o.value?o.value.getMissingHandler():$}function Ma(y){o.value&&o.value.setMissingHandler(y)}function ma(y){return S(),y()}function pa(...y){return o.value?ma(()=>Reflect.apply(o.value.t,null,[...y])):ma(()=>"")}function Y(...y){return o.value?Reflect.apply(o.value.rt,null,[...y]):""}function ta(...y){return o.value?ma(()=>Reflect.apply(o.value.d,null,[...y])):ma(()=>"")}function aa(...y){return o.value?ma(()=>Reflect.apply(o.value.n,null,[...y])):ma(()=>"")}function ba(y){return o.value?o.value.tm(y):{}}function na(y,R){return o.value?o.value.te(y,R):!1}function u(y){return o.value?o.value.getLocaleMessage(y):{}}function A(y,R){o.value&&(o.value.setLocaleMessage(y,R),g.value[y]=R)}function j(y,R){o.value&&o.value.mergeLocaleMessage(y,R)}function c(y){return o.value?o.value.getDateTimeFormat(y):{}}function P(y,R){o.value&&(o.value.setDateTimeFormat(y,R),d.value[y]=R)}function p(y,R){o.value&&o.value.mergeDateTimeFormat(y,R)}function M(y){return o.value?o.value.getNumberFormat(y):{}}function N(y,R){o.value&&(o.value.setNumberFormat(y,R),_.value[y]=R)}function U(y,R){o.value&&o.value.mergeNumberFormat(y,R)}const h={get id(){return o.value?o.value.id:-1},locale:v,fallbackLocale:K,messages:O,datetimeFormats:q,numberFormats:sa,get inheritLocale(){return o.value?o.value.inheritLocale:r},set inheritLocale(y){o.value&&(o.value.inheritLocale=y)},get availableLocales(){return o.value?o.value.availableLocales:Object.keys(g.value)},get modifiers(){return o.value?o.value.modifiers:I},get pluralRules(){return o.value?o.value.pluralRules:G},get isGlobal(){return o.value?o.value.isGlobal:!1},get missingWarn(){return o.value?o.value.missingWarn:k},set missingWarn(y){o.value&&(o.value.missingWarn=y)},get fallbackWarn(){return o.value?o.value.fallbackWarn:x},set fallbackWarn(y){o.value&&(o.value.missingWarn=y)},get fallbackRoot(){return o.value?o.value.fallbackRoot:D},set fallbackRoot(y){o.value&&(o.value.fallbackRoot=y)},get fallbackFormat(){return o.value?o.value.fallbackFormat:T},set fallbackFormat(y){o.value&&(o.value.fallbackFormat=y)},get warnHtmlMessage(){return o.value?o.value.warnHtmlMessage:L},set warnHtmlMessage(y){o.value&&(o.value.warnHtmlMessage=y)},get escapeParameter(){return o.value?o.value.escapeParameter:E},set escapeParameter(y){o.value&&(o.value.escapeParameter=y)},t:pa,getPostTranslationHandler:ea,setPostTranslationHandler:ga,getMissingHandler:Sa,setMissingHandler:Ma,rt:Y,d:ta,n:aa,tm:ba,te:na,getLocaleMessage:u,setLocaleMessage:A,mergeLocaleMessage:j,getDateTimeFormat:c,setDateTimeFormat:P,mergeDateTimeFormat:p,getNumberFormat:M,setNumberFormat:N,mergeNumberFormat:U};function C(y){y.locale.value=l.value,y.fallbackLocale.value=s.value,Object.keys(g.value).forEach(R=>{y.mergeLocaleMessage(R,g.value[R])}),Object.keys(d.value).forEach(R=>{y.mergeDateTimeFormat(R,d.value[R])}),Object.keys(_.value).forEach(R=>{y.mergeNumberFormat(R,_.value[R])}),y.escapeParameter=E,y.fallbackFormat=T,y.fallbackRoot=D,y.fallbackWarn=x,y.missingWarn=k,y.warnHtmlMessage=L}return Zl(()=>{if(a.proxy==null||a.proxy.$i18n==null)throw en(Qa.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const y=o.value=a.proxy.$i18n.__composer;n==="global"?(l.value=y.locale.value,s.value=y.fallbackLocale.value,g.value=y.messages.value,d.value=y.datetimeFormats.value,_.value=y.numberFormats.value):t&&C(y)}),h}const pb=["locale","fallbackLocale","availableLocales"],bg=["t","rt","d","n","tm","te"];function mb(a,n){const e=Object.create(null);return pb.forEach(t=>{const o=Object.getOwnPropertyDescriptor(n,t);if(!o)throw en(Qa.UNEXPECTED_ERROR);const r=Va(o.value)?{get(){return o.value.value},set(l){o.value.value=l}}:{get(){return o.get&&o.get()}};Object.defineProperty(e,t,r)}),a.config.globalProperties.$i18n=e,bg.forEach(t=>{const o=Object.getOwnPropertyDescriptor(n,t);if(!o||!o.value)throw en(Qa.UNEXPECTED_ERROR);Object.defineProperty(a.config.globalProperties,`$${t}`,o)}),()=>{delete a.config.globalProperties.$i18n,bg.forEach(t=>{delete a.config.globalProperties[`$${t}`]})}}if(Vy(),__INTLIFY_JIT_COMPILATION__?Tc(By):Tc(Ky),Iy(gy),wy(Ec),__INTLIFY_PROD_DEVTOOLS__){const a=Qn();a.__INTLIFY__=!0,fy(a.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const hb=Object.assign({"./locales/ar/aria.json":Cm,"./locales/ar/buttons.json":jm,"./locales/ar/detail.json":km,"./locales/ar/legend.json":Gm,"./locales/ar/messages.json":vm,"./locales/ar/options.json":Am,"./locales/ar/prayerLaps.json":Sm,"./locales/ar/search.json":Em,"./locales/ar/tabs.json":Mm,"./locales/de/aria.json":Im,"./locales/de/buttons.json":wm,"./locales/de/detail.json":xm,"./locales/de/legend.json":Tm,"./locales/de/messages.json":Nm,"./locales/de/options.json":Lm,"./locales/de/prayerLaps.json":Rm,"./locales/de/search.json":$m,"./locales/de/tabs.json":Fm,"./locales/en/aria.json":Km,"./locales/en/buttons.json":Bm,"./locales/en/detail.json":Om,"./locales/en/legend.json":Um,"./locales/en/messages.json":Hm,"./locales/en/options.json":Dm,"./locales/en/popup.json":zm,"./locales/en/prayerLaps.json":Vm,"./locales/en/search.json":Ym,"./locales/en/tabs.json":Wm,"./locales/es/aria.json":Jm,"./locales/es/buttons.json":Zm,"./locales/es/detail.json":qm,"./locales/es/legend.json":Xm,"./locales/es/messages.json":Qm,"./locales/es/options.json":ah,"./locales/es/prayerLaps.json":nh,"./locales/es/search.json":eh,"./locales/es/tabs.json":ih,"./locales/fr/aria.json":th,"./locales/fr/buttons.json":oh,"./locales/fr/detail.json":rh,"./locales/fr/legend.json":lh,"./locales/fr/messages.json":sh,"./locales/fr/options.json":ch,"./locales/fr/popup.json":gh,"./locales/fr/prayerLaps.json":uh,"./locales/fr/search.json":dh,"./locales/fr/tabs.json":ph,"./locales/hi/aria.json":mh,"./locales/hi/buttons.json":hh,"./locales/hi/detail.json":yh,"./locales/hi/legend.json":bh,"./locales/hi/messages.json":_h,"./locales/hi/options.json":fh,"./locales/hi/prayerLaps.json":Ph,"./locales/hi/search.json":Ch,"./locales/it/aria.json":jh,"./locales/it/buttons.json":kh,"./locales/it/detail.json":Gh,"./locales/it/legend.json":vh,"./locales/it/messages.json":Ah,"./locales/it/options.json":Sh,"./locales/it/prayerLaps.json":Eh,"./locales/it/search.json":Mh,"./locales/pt/aria.json":Ih,"./locales/pt/buttons.json":wh,"./locales/pt/detail.json":xh,"./locales/pt/legend.json":Th,"./locales/pt/messages.json":Nh,"./locales/pt/options.json":Lh,"./locales/pt/prayerLaps.json":Rh,"./locales/pt/search.json":$h,"./locales/pt/tabs.json":Fh,"./locales/ro/aria.json":Kh,"./locales/ro/buttons.json":Bh,"./locales/ro/detail.json":Oh,"./locales/ro/legend.json":Uh,"./locales/ro/messages.json":Hh,"./locales/ro/options.json":Dh,"./locales/ro/prayerLaps.json":zh,"./locales/ro/search.json":Vh,"./locales/ru/aria.json":Yh,"./locales/ru/buttons.json":Wh,"./locales/ru/detail.json":Jh,"./locales/ru/legend.json":Zh,"./locales/ru/messages.json":qh,"./locales/ru/options.json":Xh,"./locales/ru/prayerLaps.json":Qh,"./locales/ru/search.json":a0,"./locales/ru/tabs.json":n0,"./locales/zh/aria.json":e0,"./locales/zh/buttons.json":i0,"./locales/zh/detail.json":t0,"./locales/zh/legend.json":o0,"./locales/zh/messages.json":r0,"./locales/zh/options.json":l0,"./locales/zh/prayerLaps.json":s0,"./locales/zh/search.json":c0}),Ri={};for(const[a,n]of Object.entries(hb)){const e=a.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!e)continue;const[,i,t]=e;Ri[i]??(Ri[i]={}),Ri[i][t]=n}const _g=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"];function yb(){var e;const n=(((e=document==null?void 0:document.documentElement)==null?void 0:e.lang)||"").split("-")[0].toLowerCase();return _g.includes(n)?n:"en"}function bb(){return tb({legacy:!1,globalInjection:!0,locale:yb(),fallbackLocale:"en",messages:Ri,missingWarn:!1,fallbackWarn:!1})}let _b=0;const fb=Jo("ui",{state:()=>({_storeInstanceId:++_b,theme:"light",colorScheme:"default",reducedMotion:!1,highContrast:!1,activeTab:"geo-regions",sidebarCollapsed:!1,mobileMenuOpen:!1,legendState:"collapsed",_customLegendHeight:null,searchMode:!1,hamburgerMenuOpen:!1,legendMode:"prayer",prayerFilter:null,engagementFilter:null,adoptionFilter:null,religionFilter:null,selectedPeopleGroup:null,breakpoint:"desktop",windowSize:{width:window.innerWidth,height:window.innerHeight},toasts:[],nextToastId:1,toastDuration:5e3,openModals:[],modalData:new Map,isGlobalLoading:!1,globalLoadingMessage:"Loading...",loadingStates:new Map,interactionHistory:[],maxHistoryLength:20,keyboardShortcutsEnabled:!0,screenReaderAnnouncement:"",focusTrapActive:!1,debugMode:!1,showPerformanceOverlay:!1}),getters:{isDarkTheme:a=>a.theme==="auto"?window.matchMedia("(prefers-color-scheme: dark)").matches:a.theme==="dark",isMobile:a=>a.breakpoint==="mobile",isTablet:a=>a.breakpoint==="tablet",isDesktop:a=>a.breakpoint==="desktop"||a.breakpoint==="wide",legendHeight:a=>a._customLegendHeight?a._customLegendHeight:a.legendState==="collapsed"?"48px":a.legendState==="open"?"30%":a.legendState==="fullyOpen"?"calc(100% - 80px)":"48px",caretRotation:a=>a.legendState==="collapsed"?0:90,showPullTab:a=>a.legendState==="open"||a.legendState==="fullyOpen",getToastsByType:a=>n=>a.toasts.filter(e=>e.type===n),hasOpenModal:a=>a.openModals.length>0,topModal:a=>a.openModals.length===0?null:a.openModals[a.openModals.length-1],isModalOpen:a=>n=>a.openModals.includes(n),isAnyLoading:a=>a.isGlobalLoading||a.loadingStates.size>0,isLoading:a=>n=>a.loadingStates.get(n)||!1},actions:{setTheme(a){if(!["light","dark","auto"].includes(a))return;this.theme=a;const e=this.isDarkTheme;document.documentElement.setAttribute("data-theme",e?"dark":"light"),localStorage.setItem("theme",a)},toggleTheme(){const a=this.theme==="light"?"dark":"light";this.setTheme(a)},setColorScheme(a){this.colorScheme=a,document.documentElement.setAttribute("data-color-scheme",a)},toggleReducedMotion(){this.reducedMotion=!this.reducedMotion,document.documentElement.setAttribute("data-reduced-motion",this.reducedMotion)},toggleHighContrast(){this.highContrast=!this.highContrast,document.documentElement.setAttribute("data-high-contrast",this.highContrast)},setActiveTab(a){this.activeTab=a,this.addToHistory({type:"tab-change",tabId:a,timestamp:Date.now()})},toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed},openMobileMenu(){this.mobileMenuOpen=!0},closeMobileMenu(){this.mobileMenuOpen=!1},setLegendMode(a){["prayer","detail"].includes(a)&&(this.legendMode=a)},setPrayerFilter(a){[null,"noPrayer","hasPrayer","fullPrayer"].includes(a)&&(this.prayerFilter=a)},setEngagementFilter(a){[null,"notEngaged","hasEngagement"].includes(a)&&(this.engagementFilter=a)},setAdoptionFilter(a){[null,"notAdopted","hasAdoption"].includes(a)&&(this.adoptionFilter=a)},setReligionFilter(a){[null,"C","M","H","B","E","J","S","N","O","U"].includes(a)&&(this.religionFilter=a)},selectPeopleGroup(a){this.selectedPeopleGroup=a,a?(this._legendStateBeforeDetail=this.legendState,this.legendState="open",this._customLegendHeight=null,this.setLegendMode("detail")):(this.legendState=this._legendStateBeforeDetail||"open",this._customLegendHeight=null,this.setLegendMode("prayer"))},setLegendState(a){["collapsed","open","fullyOpen"].includes(a)&&(this.legendState=a)},toggleSearchMode(){this.searchMode=!this.searchMode},setSearchMode(a){this.searchMode=a},toggleHamburgerMenu(){this.hamburgerMenuOpen=!this.hamburgerMenuOpen},updateBreakpoint(a){let n;a<768?n="mobile":a<1024?n="tablet":a<1920?n="desktop":n="wide",n!==this.breakpoint&&(this.breakpoint=n)},updateWindowSize(a,n){this.windowSize.width=a,this.windowSize.height=n,this.updateBreakpoint(a)},showToast(a){const{message:n,type:e="info",duration:i=this.toastDuration,action:t=null,persistent:o=!1}=a,r={id:this.nextToastId++,message:n,type:e,duration:i,action:t,persistent:o,createdAt:Date.now()};return this.toasts.push(r),!o&&i>0&&setTimeout(()=>{this.removeToast(r.id)},i),r.id},showSuccess(a,n={}){return this.showToast({message:a,type:"success",...n})},showError(a,n={}){return this.showToast({message:a,type:"error",duration:7e3,...n})},showWarning(a,n={}){return this.showToast({message:a,type:"warning",...n})},showInfo(a,n={}){return this.showToast({message:a,type:"info",...n})},removeToast(a){const n=this.toasts.findIndex(e=>e.id===a);n!==-1&&this.toasts.splice(n,1)},clearAllToasts(){this.toasts=[]},openModal(a,n={}){this.openModals.includes(a)||(this.openModals.push(a),this.modalData.set(a,n),this.focusTrapActive=!0)},closeModal(a=null){if(a){const n=this.openModals.indexOf(a);n!==-1&&(this.openModals.splice(n,1),this.modalData.delete(a))}else{const n=this.openModals.pop();n&&this.modalData.delete(n)}this.openModals.length===0&&(this.focusTrapActive=!1)},closeAllModals(){this.openModals=[],this.modalData.clear(),this.focusTrapActive=!1},getModalData(a){return this.modalData.get(a)},showGlobalLoading(a="Loading..."){this.isGlobalLoading=!0,this.globalLoadingMessage=a},hideGlobalLoading(){this.isGlobalLoading=!1},setLoading(a,n=!0){n?this.loadingStates.set(a,!0):this.loadingStates.delete(a)},addToHistory(a){this.interactionHistory.push(a),this.interactionHistory.length>this.maxHistoryLength&&this.interactionHistory.shift()},clearHistory(){this.interactionHistory=[]},announce(a,n="polite"){this.screenReaderAnnouncement=a,setTimeout(()=>{this.screenReaderAnnouncement===a&&(this.screenReaderAnnouncement="")},1e3)},toggleKeyboardShortcuts(){this.keyboardShortcutsEnabled=!this.keyboardShortcutsEnabled},toggleDebugMode(){this.debugMode=!this.debugMode},togglePerformanceOverlay(){this.showPerformanceOverlay=!this.showPerformanceOverlay},toggleLegend(){this.legendState==="fullyOpen"?this.legendState="open":this.legendState==="open"?this.legendState="collapsed":this.legendState="open",this._customLegendHeight=null},openLegend(){this.legendState="open",this._customLegendHeight=null},fullyOpenLegend(){this.legendState="fullyOpen",this._customLegendHeight=null},collapseLegend(){this.legendState="collapsed",this._customLegendHeight=null},setLegendHeight(a){this._customLegendHeight=a},handleLegendItemClick(){this.legendState==="fullyOpen"&&(this.legendState="open")},enableSearchMode(){this.searchMode=!0},disableSearchMode(){this.searchMode=!1},toggleHamburgerMenu(){this.hamburgerMenuOpen=!this.hamburgerMenuOpen},openHamburgerMenu(){this.hamburgerMenuOpen=!0},closeHamburgerMenu(){this.hamburgerMenuOpen=!1},init(){const a=localStorage.getItem("theme");a&&this.setTheme(a),new ResizeObserver(e=>{for(const i of e)this.updateWindowSize(i.contentRect.width,i.contentRect.height)}).observe(document.documentElement),window.matchMedia&&(window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{this.theme==="auto"&&document.documentElement.setAttribute("data-theme",e.matches?"dark":"light")}),window.matchMedia("(prefers-reduced-motion: reduce)").addEventListener("change",e=>{this.reducedMotion=e.matches,document.documentElement.setAttribute("data-reduced-motion",e.matches)}))}}}),Pb=Jo("map",{state:()=>({maps:{},activeMapId:null,selectedRegion:null,selectedFamily:null,selectedAffinityBlock:null,selectedLanguage:null,selectedDialect:null,activeLegendTab:"family",selectedResource:null,selectedPeopleGroup:null,selectedPinIds:[],globalFilters:{},searchQuery:"",autoFly:{isActive:!1,speed:1,interval:5e3,currentIndex:0,items:[],timerId:null},guidedTour:{isActive:!1,currentStep:0,steps:[]},showClusters:!1,clusterMode:"region",clusterFilterProperty:null,clusterFilterValue:null,flySpeed:"normal",fullscreenMapId:null,preferences:{theme:"light",defaultMapStyle:"streets",enableAnimations:!0,autoSavePreferences:!0}}),getters:{getMapById:a=>n=>a.maps[n],activeMap:a=>a.activeMapId?a.maps[a.activeMapId]:null,hasMap:a=>n=>n in a.maps,allMapIds:a=>Object.keys(a.maps),hasSelection:a=>!!(a.selectedRegion||a.selectedFamily||a.selectedAffinityBlock||a.selectedPeopleGroup),isAutoFlying:a=>a.autoFly.isActive,isGuidedTourActive:a=>a.guidedTour.isActive,isMapFullscreen:a=>n=>a.fullscreenMapId===n},actions:{registerMap(a,n,e={}){let i=1.5;e.zoom!==void 0?i=e.zoom:n&&typeof n.getZoom=="function"&&(i=n.getZoom());let t=[0,0];if(e.center)t=e.center;else if(n&&typeof n.getCenter=="function"){const o=n.getCenter();o&&(t=[o.lng,o.lat])}this.maps[a]={instance:n,config:e,isReady:!1,zoom:i,center:t,registeredAt:Date.now()},this.activeMapId||(this.activeMapId=a)},setMapReady(a){const n=this.maps[a];n&&(n.isReady=!0)},updateMapState(a,n){const e=this.maps[a];e&&Object.assign(e,n)},unregisterMap(a){if(delete this.maps[a],this.activeMapId===a){const n=this.allMapIds;this.activeMapId=n.length>0?n[0]:null}},setActiveMap(a){a in this.maps&&(this.activeMapId=a)},selectRegion(a){this.selectedFamily=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedRegion=a},selectFamily(a){this.selectedRegion=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedLanguage=null,this.selectedDialect=null,this.selectedFamily=a},setActiveLegendTab(a){this.activeLegendTab=a},selectLanguage(a){this.selectedRegion=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedFamily=null,this.selectedDialect=null,this.selectedLanguage=a},selectDialect(a){this.selectedRegion=null,this.selectedFamily=null,this.selectedLanguage=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedDialect=a},selectAffinityBlock(a){this.selectedRegion=null,this.selectedFamily=null,this.selectedPeopleGroup=null,this.selectedAffinityBlock=a},selectPeopleGroup(a){this.selectedPeopleGroup=a},selectResource(a){this.selectedRegion=null,this.selectedFamily=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedResource===a?this.selectedResource=null:this.selectedResource=a},clearSelections(){this.selectedRegion=null,this.selectedFamily=null,this.selectedLanguage=null,this.selectedDialect=null,this.selectedAffinityBlock=null,this.selectedResource=null,this.selectedPeopleGroup=null,this.selectedPinIds=[],this.showClusters=!1,this.clusterMode="region"},setSelectedPinIds(a){this.selectedPinIds=a||[]},setFilter(a,n){this.globalFilters[a]=n},removeFilter(a){delete this.globalFilters[a]},clearFilters(){this.globalFilters={},this.searchQuery=""},setSearchQuery(a){this.searchQuery=a},startAutoFly(a,n=1){this.stopAutoFly(),this.autoFly.isActive=!0,this.autoFly.speed=n,this.autoFly.items=a,this.autoFly.currentIndex=0},stopAutoFly(){this.autoFly.timerId&&(clearInterval(this.autoFly.timerId),this.autoFly.timerId=null),this.autoFly.isActive=!1,this.autoFly.currentIndex=0},setAutoFlySpeed(a){this.autoFly.speed=Math.max(.5,Math.min(2,a))},nextAutoFlyItem(){if(!this.autoFly.isActive||this.autoFly.items.length===0)return;this.autoFly.currentIndex=(this.autoFly.currentIndex+1)%this.autoFly.items.length;const a=this.autoFly.items[this.autoFly.currentIndex];a.type==="region"?this.selectRegion(a):a.type==="family"&&this.selectFamily(a)},toggleClusters(a){typeof a=="boolean"?this.showClusters=a:this.showClusters=!this.showClusters},setClusterMode(a){["region","language-family","affinity-block","mst","resource"].includes(a)&&(this.clusterMode=a)},setClusterFilter(a,n){this.clusterFilterProperty=a||null,this.clusterFilterValue=n||null},clearClusterFilter(){this.clusterFilterProperty=null,this.clusterFilterValue=null},setFlySpeed(a){["slow","normal","fast"].includes(a)&&(this.flySpeed=a)},setSelectedFamily(a){this.selectFamily(a)},clearSelectedFamily(){this.selectFamily(null)},setSelectedRegion(a){this.selectRegion(a)},clearSelectedRegion(){this.selectRegion(null)},clearSelectedResource(){this.selectResource(null)},clearSelectedLanguage(){this.selectLanguage(null)},clearSelectedDialect(){this.selectDialect(null)},toggleFullscreen(a){this.fullscreenMapId===a?this.fullscreenMapId=null:this.fullscreenMapId=a},loadPreferences(){try{const a=localStorage.getItem("mapUserPreferences");if(a){const n=JSON.parse(a);this.preferences={...this.preferences,...n}}}catch(a){console.error("[mapStore] Failed to load preferences:",a)}},savePreferences(){try{localStorage.setItem("mapUserPreferences",JSON.stringify(this.preferences))}catch(a){console.error("[mapStore] Failed to save preferences:",a)}},setPreference(a,n){this.preferences[a]=n,this.preferences.autoSavePreferences&&this.savePreferences()}}}),Cb=Jo("data",{state:()=>({sources:{},loadingStates:{}}),actions:{async load(a,n){if(!this.sources[a]){this.loadingStates[a]={isLoading:!0,error:null};try{const e=await n();this.sources[a]=mi({features:e,timestamp:Date.now()}),this.loadingStates[a]={isLoading:!1,error:null}}catch(e){console.error(`[dataStore] Failed to load source "${a}":`,e),this.loadingStates[a]={isLoading:!1,error:e}}}},clearSource(a){delete this.sources[a],delete this.loadingStates[a]},cacheSourceData(a,n){this.sources[a]=mi({features:n.normalizedData||[],timestamp:n.timestamp||Date.now()})},hasSourceData(a){return!!this.sources[a]},getSourceData(a){return this.sources[a]?{normalizedData:this.sources[a].features}:null}},getters:{getData:a=>n=>{var e;return((e=a.sources[n])==null?void 0:e.features)??null},isLoading:a=>n=>{var e;return((e=a.loadingStates[n])==null?void 0:e.isLoading)??!1},getError:a=>n=>{var e;return((e=a.loadingStates[n])==null?void 0:e.error)??null}}}),jb={activeSource:"pray-tools"},kb=(a,n)=>{const e=a.__vccOpts||a;for(const[i,t]of n)e[i]=t;return e},Gb={class:"profile-loader"},vb={key:0,class:"profile-error"},Ab={key:1,class:"profile-error"},Sb=kb({__name:"ProfileLoader",props:{profileConfig:{type:String,default:""}},setup(a){var $;const n=a,e=la(()=>{if(!n.profileConfig)return null;try{return JSON.parse(n.profileConfig)}catch{return console.error("[ProfileLoader] Invalid profile-config JSON:",n.profileConfig),null}}),i=la(()=>{var w;return((w=e.value)==null?void 0:w.profile)||null}),t=la(()=>{var w;return((w=e.value)==null?void 0:w.tk)||""}),o=la(()=>{var w;return((w=e.value)==null?void 0:w.dataSource)||jb.activeSource}),r=la(()=>{var w;return((w=e.value)==null?void 0:w.colorSet)||"default"}),l=la(()=>{var L,E;const w=(((L=e.value)==null?void 0:L.locale)||((E=e.value)==null?void 0:E.lang)||"").split("-")[0].toLowerCase();return _g.includes(w)?w:""}),s=Ya("appI18n",null);xd(()=>{l.value&&s&&(s.global.locale.value=l.value)});const g=la(()=>{var w,L;return l.value||((L=(w=s==null?void 0:s.global)==null?void 0:w.locale)==null?void 0:L.value)||"en"}),d=la(()=>{var w;return((w=e.value)==null?void 0:w.instanceId)||"map-embed-"+Math.random().toString(36).slice(2,9)}),_=Ya("profileModules",null);if(!_)throw new Error('[ProfileLoader] No profileModules provided. Bundle entry must `app.provide("profileModules", import.meta.glob("./*.vue"))`');const k=la(()=>{if(!i.value)return null;const w=`./${i.value}.vue`;return _[w]?Fd(_[w]):(console.error(`[ProfileLoader] Profile not found: "${i.value}". Available:`,Object.keys(_)),null)});vn("mapboxToken",t),vn("dataSource",o),vn("colorSet",r),vn("profileConfig",e),vn("instanceId",d),vn("lang",g);const x=fb(),D=Pb(),T=Cb();try{window.localStorage.getItem("__probe__")}catch{const L=Object.create(null),E={getItem:I=>I in L?L[I]:null,setItem:(I,G)=>{L[I]=String(G)},removeItem:I=>{delete L[I]},clear:()=>{for(const I in L)delete L[I]},key:I=>Object.keys(L)[I]??null,get length(){return Object.keys(L).length}};try{Object.defineProperty(window,"localStorage",{configurable:!0,value:E})}catch{}}try{const w=localStorage.getItem("theme");w&&(($=x.setTheme)==null||$.call(x,w))}catch{}return vn("uiStore",x),vn("mapStore",D),vn("dataStore",T),(w,L)=>(z(),W("div",Gb,[e.value?k.value?(z(),Me(Jd(k.value),{key:2})):(z(),W("div",Ab,[f("p",null,[L[1]||(L[1]=ya("⚠️ Profile ",-1)),f("strong",null,'"'+X(i.value)+'"',1),L[2]||(L[2]=ya(" not found.",-1))])])):(z(),W("div",vb,[...L[0]||(L[0]=[f("p",null,[ya("⚠️ "),f("strong",null,"map-embed"),ya(": missing or invalid "),f("code",null,"profile-config"),ya(" prop.")],-1),f("p",null,[ya("Example: "),f("code",null,`profile-config='{"profile":"example-map","tk":"pk.YOUR_MAPBOX_TOKEN"}'`)],-1)])]))]))}},[["__scopeId","data-v-8d448c33"]]),Eb=Object.assign({"./bloom-cockpit.vue":()=>oi(()=>Promise.resolve().then(()=>P_),void 0),"./flower-mesh.vue":()=>oi(()=>Promise.resolve().then(()=>Y_),void 0),"./lang-cluster.vue":()=>oi(()=>Promise.resolve().then(()=>p5),void 0),"./send-map.vue":()=>oi(()=>Promise.resolve().then(()=>K5),void 0),"./upg-neighbors.vue":()=>oi(()=>Promise.resolve().then(()=>Of),void 0)});if(typeof window<"u"&&((xu=window.mapboxgl)!=null&&xu.setRTLTextPlugin))try{window.mapboxgl.setRTLTextPlugin("https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.3.0/mapbox-gl-rtl-text.js",null,!0)}catch{}function $i(){return rm(Sb,{configureApp(a){a.use(hm()),a.use(bb()),a.provide("profileModules",Eb)}})}typeof customElements<"u"&&(customElements.get("send-map")||customElements.define("send-map",$i()),customElements.get("flower-mesh")||customElements.define("flower-mesh",$i()),customElements.get("lang-cluster")||customElements.define("lang-cluster",$i()),customElements.get("bloom-cockpit")||customElements.define("bloom-cockpit",$i()),customElements.get("upg-neighbors")||customElements.define("upg-neighbors",$i()));function On(a,n){const e=n||Mb(a);Rn(()=>{var l;const i=ue();if(!i)return;const t=(l=i.proxy)==null?void 0:l.$el;if(!t)return;const o=t.getRootNode();if(!(o instanceof ShadowRoot)||o.querySelector(`style[data-shadow-styles="${e}"]`))return;const r=document.createElement("style");r.setAttribute("data-shadow-styles",e),r.textContent=a,o.appendChild(r)})}function Mb(a){let n=0;for(let e=0;e=2% (>=2% evangelical) OR GSEC>=4 — senders only; 'Engaged' excluded (engaged != reached)",reached_pool:5146,target_countries:40,total_neighbors:2603,neighbors_with_rol3:2603,neighbors_with_coords:2603},countries:{India:{target_upg:2040,target_pop:1394512400,target_top_langs:["Hindi","Urdu","Gujarati","Marathi"],target_top_religion:"Hinduism",neighbors:[{name:"Naga, Sangtam",country:"India",lang:"Naga, Sangtam",rol3:"nsa",pct_christian:75,pop:12e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.85,lng:94.62,code:"PG041909"},{name:"Naga Kacha",country:"India",lang:"Naga, Zeme",rol3:"nzm",pct_christian:75,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.21,lng:94.04,code:"PG049568"},{name:"Moyon",country:"India",lang:"Naga, Moyon",rol3:"nmo",pct_christian:75,pop:3600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049747"},{name:"Lisu",country:"India",lang:"Lisu",rol3:"lis",pct_christian:75,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.37,lng:96.37,code:"PG049761"},{name:"Koirao",country:"India",lang:"Boro (India)",rol3:"brx",pct_christian:75,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.2,lng:94.05,code:"PG049766"},{name:"Beldar (Bundelkhandi)",country:"India",lang:"Bundeli",rol3:"bns",pct_christian:75,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.76,lng:81.58,code:"PG048210"},{name:"Majhi",country:"India",lang:"Majhi",rol3:"mjz",pct_christian:75,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.11,lng:88.35,code:"PG049075"},{name:"Ansari-Momin (Sadri)",country:"India",lang:"Sadri",rol3:"sck",pct_christian:75,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:23.63,lng:85.55,code:"PG048700"},{name:"Syrian Christian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:62.5,pop:4495e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:12.35,lng:76.09,code:"PG041308"},{name:"Naga, Ao",country:"India",lang:"Naga, Ao",rol3:"njo",pct_christian:62.5,pop:411e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.34,lng:94.36,code:"PG041361"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Naga, Sema",country:"India",lang:"Naga, Sumi",rol3:"nsm",pct_christian:62.5,pop:368e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.93,lng:94.23,code:"PG041651"},{name:"Naga, Konyak",country:"India",lang:"Naga, Konyak",rol3:"nbe",pct_christian:62.5,pop:361e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.72,lng:95.04,code:"PG041687"},{name:"Naga, Angami",country:"India",lang:"Naga, Angami",rol3:"njm",pct_christian:62.5,pop:241e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.69,lng:93.9,code:"PG041738"},{name:"Naga, Lotha",country:"India",lang:"Naga, Lotha",rol3:"njh",pct_christian:62.5,pop:234e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.01,lng:94.06,code:"PG041755"},{name:"Naga, Tangkhul",country:"India",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:214e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.07,lng:94.38,code:"PG041697"},{name:"Naga, Chakhesang",country:"India",lang:"Naga, Chokri",rol3:"nri",pct_christian:62.5,pop:198e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.56,lng:94.3,code:"PG041748"},{name:"Kuki",country:"India",lang:"Chin, Thado",rol3:"tcz",pct_christian:62.5,pop:179e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.49,lng:93.86,code:"PG041761"},{name:"Naga, Kabui",country:"India",lang:"Naga, Rongmei",rol3:"nbu",pct_christian:62.5,pop:121e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.15,lng:93.79,code:"PG041943"},{name:"Naga, Yimchunger",country:"India",lang:"Naga, Yimchungru",rol3:"yim",pct_christian:62.5,pop:112e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.8,lng:94.83,code:"PG041978"},{name:"Naga, Mao",country:"India",lang:"Naga, Mao",rol3:"nbi",pct_christian:62.5,pop:106e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.2,lng:94.04,code:"PG041779"},{name:"Naga, Zeliang",country:"India",lang:"Naga, Zeme",rol3:"nzm",pct_christian:62.5,pop:106e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.62,lng:93.83,code:"PG041995"},{name:"Naga, Rengma",country:"India",lang:"Naga, Southern Rengma",rol3:"nre",pct_christian:62.5,pop:79e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.26,lng:94.7,code:"PG042067"},{name:"Vaiphei",country:"India",lang:"Vaiphei",rol3:"vap",pct_christian:62.5,pop:56e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.31,lng:93.43,code:"PG042060"},{name:"Kahha",country:"India",lang:"Naga, Phom",rol3:"nph",pct_christian:62.5,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.48,lng:94.74,code:"PG041953"},{name:"Mizo, Pawi",country:"India",lang:"Chin, Paite",rol3:"pck",pct_christian:62.5,pop:47500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.88,code:"PG041966"},{name:"Nicobarese",country:"India",lang:"Nicobarese, Car",rol3:"caq",pct_christian:62.5,pop:42500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.18,lng:92.77,code:"PG041984"},{name:"Naga, Maring",country:"India",lang:"Naga, Maring",rol3:"nng",pct_christian:62.5,pop:34500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG042119"},{name:"Chin, Mara",country:"India",lang:"Mara",rol3:"mrh",pct_christian:62.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.89,code:"PG042043"},{name:"Zou",country:"India",lang:"Zo",rol3:"zom",pct_christian:62.5,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.16,lng:93.71,code:"PG042107"},{name:"Naga, Pochury",country:"India",lang:"Naga, Pochuri",rol3:"npo",pct_christian:62.5,pop:24500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.03,lng:94.53,code:"PG049624"},{name:"Gangte",country:"India",lang:"Gangte",rol3:"gnb",pct_christian:62.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.28,lng:93.69,code:"PG042166"},{name:"Lamgang",country:"India",lang:"Lamkang",rol3:"lmk",pct_christian:62.5,pop:8700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.44,lng:94.05,code:"PG049002"},{name:"Chiru",country:"India",lang:"Chiru",rol3:"cdf",pct_christian:62.5,pop:8300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.35,lng:94.11,code:"PG049001"},{name:"Cote",country:"India",lang:"Naga, Chothe",rol3:"nct",pct_christian:62.5,pop:4100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049749"},{name:"Aimol",country:"India",lang:"Aimol",rol3:"aim",pct_christian:62.5,pop:3700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.7,lng:93.92,code:"PG048880"},{name:"Ucai",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:62.5,pop:3100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.36,lng:92.17,code:"PG049762"},{name:"Monsang",country:"India",lang:"Naga, Monsang",rol3:"nmh",pct_christian:62.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049759"},{name:"Soria",country:"India",lang:"Hindi",rol3:"hin",pct_christian:62.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.2,lng:77.09,code:"PG048955"},{name:"Pnar",country:"India",lang:"Pnar",rol3:"pbv",pct_christian:62.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.89,code:"PG049638"},{name:"Mangli",country:"India",lang:"Sambalpuri",rol3:"spv",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.91,lng:83.18,code:"PG049616"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Tarao",country:"India",lang:"Naga, Tarao",rol3:"tro",pct_christian:62.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049555"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Khasi",country:"India",lang:"Khasi",rol3:"kha",pct_christian:45,pop:1675e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.52,lng:91.79,code:"PG041380"},{name:"Pulayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:45,pop:154e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.06,lng:76.53,code:"PG041344"},{name:"Garo",country:"India",lang:"Garo",rol3:"grt",pct_christian:45,pop:1065e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.62,lng:90.74,code:"PG041444"},{name:"Meghval",country:"India",lang:"Hindi",rol3:"hin",pct_christian:45,pop:377e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.87,lng:73.03,code:"PG041328"},{name:"Santal (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:45,pop:176e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.8,lng:87.48,code:"PG046353"},{name:"Hmar",country:"India",lang:"Hmar",rol3:"hmr",pct_christian:45,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.97,lng:93.56,code:"PG041808"},{name:"Paite",country:"India",lang:"Chin, Paite",rol3:"pck",pct_christian:45,pop:94e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.3,lng:93.43,code:"PG041890"},{name:"Naga, Khiamngan",country:"India",lang:"Naga, Khiamniungan",rol3:"kix",pct_christian:45,pop:56e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.17,lng:94.89,code:"PG042023"},{name:"Mizo",country:"India",lang:"Mizo",rol3:"lus",pct_christian:35,pop:1115e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.31,lng:92.83,code:"PG041461"},{name:"Thadou",country:"India",lang:"Chin, Thado",rol3:"tcz",pct_christian:35,pop:268e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.3,lng:93.43,code:"PG041679"},{name:"Mal Paharia",country:"India",lang:"Mal Paharia",rol3:"mkb",pct_christian:35,pop:231e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.56,lng:87.66,code:"PG041653"},{name:"Bhil Mina",country:"India",lang:"Vaghri",rol3:"vgr",pct_christian:35,pop:131e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.59,lng:73.72,code:"PG048977"},{name:"Nissi",country:"India",lang:"Nyishi",rol3:"njz",pct_christian:35,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.27,lng:93.61,code:"PG041760"},{name:"Chang (Naga)",country:"India",lang:"Naga, Chang",rol3:"nbc",pct_christian:35,pop:81500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.17,lng:94.89,code:"PG041979"},{name:"Malai Arayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:35,pop:48e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:9.65,lng:76.66,code:"PG041952"},{name:"Anal",country:"India",lang:"Anal",rol3:"anm",pct_christian:35,pop:31500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.04,lng:94.14,code:"PG042153"},{name:"Nagbansi (Dogri)",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:35,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:33.05,lng:75.08,code:"PG048317"},{name:"Pagi",country:"India",lang:"Konkani",rol3:"knn",pct_christian:35,pop:650,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:14.91,lng:74.23,code:"PG049171"},{name:"Munda ",country:"India",lang:"Munda",rol3:"unx",pct_christian:25,pop:2875e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.75,lng:88.2,code:"PG041329"},{name:"Kharia",country:"India",lang:"Kharia",rol3:"khr",pct_christian:25,pop:889e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.47,lng:84.55,code:"PG041457"},{name:"Paravar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:162e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:8.62,lng:77,code:"PG041743"},{name:"Koh",country:"India",lang:"Marathi",rol3:"mar",pct_christian:25,pop:96500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.29,lng:76.9,code:"PG041285"},{name:"Mehar",country:"India",lang:"Mewari",rol3:"mtr",pct_christian:25,pop:84500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:24.37,lng:76.25,code:"PG041828"},{name:"Madgi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:76500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.17,lng:79.45,code:"PG041802"},{name:"Mech",country:"India",lang:"Assamese",rol3:"asm",pct_christian:25,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:27.1,lng:92.43,code:"PG041900"},{name:"Adi Gallong",country:"India",lang:"Adi, Galo",rol3:"adl",pct_christian:25,pop:71e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:28.32,lng:94.51,code:"PG041851"},{name:"Gounder",country:"India",lang:"Tamil",rol3:"tam",pct_christian:25,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:11.68,lng:78.22,code:"PG041906"},{name:"Hajong",country:"India",lang:"Hajong",rol3:"haj",pct_christian:25,pop:47e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.53,lng:89.89,code:"PG041954"},{name:"Kerala Mudali",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:9.44,lng:78.7,code:"PG049672"},{name:"Noatia",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:25,pop:9800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:23.79,lng:91.46,code:"PG042172"},{name:"Godari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:17.69,lng:83.22,code:"PG049205"},{name:"Kambodia Bhagat",country:"India",lang:"Marwari (India)",rol3:"rwr",pct_christian:25,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.95,lng:72.49,code:"PG049636"},{name:"Chamail",country:"India",lang:"Hindi",rol3:"hin",pct_christian:25,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:25.48,lng:85.95,code:"PG049469"},{name:"Ghogia",country:"India",lang:"Odia",rol3:"ory",pct_christian:25,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.15,lng:84.09,code:"PG049008"},{name:"Gangai",country:"India",lang:"Surjapuri",rol3:"sjp",pct_christian:25,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:25.69,lng:87.53,code:"PG049394"},{name:"Arakala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:18.11,lng:83.4,code:"PG049160"},{name:"Mala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:7615e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:16.36,lng:79.51,code:"PG041263"},{name:"Balmiki (Haryanvi)",country:"India",lang:"Haryanvi",rol3:"bgc",pct_christian:17.5,pop:189e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:29.19,lng:76.36,code:"PG048194"},{name:"Balmiki (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:17.5,pop:172e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.93,lng:78.08,code:"PG041289"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Balmiki (Pahari)",country:"India",lang:"Garhwali",rol3:"gbm",pct_christian:17.5,pop:131e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:30.26,lng:78.62,code:"PG048196"},{name:"Damor",country:"India",lang:"Wagdi",rol3:"wbr",pct_christian:17.5,pop:128e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:23.74,lng:73.85,code:"PG041876"},{name:"Lepcha",country:"India",lang:"Lepcha",rol3:"lep",pct_christian:17.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.34,lng:88.58,code:"PG041791"},{name:"Kachari",country:"India",lang:"Kachari",rol3:"xac",pct_christian:17.5,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.37,lng:95.08,code:"PG041505"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Chuhra",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:17.5,pop:59e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:31.92,lng:77.25,code:"PG049402"},{name:"Adi Minyong",country:"India",lang:"Adi",rol3:"adi",pct_christian:17.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:28.05,lng:94.43,code:"PG041950"},{name:"Nocte",country:"India",lang:"Naga, Nocte",rol3:"njb",pct_christian:17.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.07,lng:95.23,code:"PG042002"},{name:"Ojha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:46e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.74,lng:78.25,code:"PG041974"},{name:"Badhi",country:"India",lang:"Hindi",rol3:"hin",pct_christian:17.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:29.95,lng:77.55,code:"PG041480"},{name:"Goudu",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:17.71,lng:83.25,code:"PG042158"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Miji",country:"India",lang:"Miji",rol3:"sjl",pct_christian:17.5,pop:7e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.3,lng:92.4,code:"PG049709"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Bari (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.86,lng:84.8,code:"PG048204"},{name:"Babar",country:"India",lang:"Haroti",rol3:"hoj",pct_christian:17.5,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:25.43,lng:75.65,code:"PG048961"},{name:"Bayil Kammara",country:"India",lang:"Marwari (India)",rol3:"rwr",pct_christian:17.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:16.34,lng:76.08,code:"PG049856"},{name:"Candhai Maru",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.48,lng:83.97,code:"PG049648"},{name:"Khati (Haryanvi)",country:"India",lang:"Haryanvi",rol3:"bgc",pct_christian:17.5,pop:200,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:29.21,lng:76.34,code:"PG048299"},{name:"Madiga",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:9445e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:16.51,lng:79.06,code:"PG041253"},{name:"Mang",country:"India",lang:"Marathi",rol3:"mar",pct_christian:12.5,pop:304e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:20.38,lng:76.05,code:"PG041315"},{name:"Chakkiliyan",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1205e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.61,lng:77.71,code:"PG041373"},{name:"Saora",country:"India",lang:"Sora",rol3:"srb",pct_christian:12.5,pop:119e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:20.64,lng:83.56,code:"PG041407"},{name:"Nadua Shabar",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:659e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:19.9,lng:85.17,code:"PG049502"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Mannan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:145e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.8,lng:76.55,code:"PG041756"},{name:"Chakravar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:45e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:8.62,lng:77,code:"PG041956"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Domar",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:12.5,pop:27e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.45,lng:80.38,code:"PG049077"},{name:"Samban",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:24500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:8.7,lng:77.49,code:"PG041752"},{name:"Mehtar",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:2e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:16.22,lng:75.63,code:"PG042116"},{name:"Panchama",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:17.01,lng:81.79,code:"PG042086"},{name:"Palliyan",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:9.89,lng:77.09,code:"PG049215"},{name:"Puroik",country:"India",lang:"Adi",rol3:"adi",pct_christian:12.5,pop:4300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.43,lng:92.97,code:"PG049739"},{name:"Karen",country:"India",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:12.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.78,lng:92.86,code:"PG048894"},{name:"Padigarajulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:15.58,lng:79.51,code:"PG049165"},{name:"Kuda",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.83,lng:85.53,code:"PG049016"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Tharua",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:650,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.49,lng:86.93,code:"PG049031"},{name:"Gharrami",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:28.64,lng:77.12,code:"PG049392"},{name:"Dusadh",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:7.5,pop:691e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.23,lng:85.31,code:"PG041266"},{name:"Nadar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:6365e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:11.17,lng:77.82,code:"PG041309"},{name:"Oraon",country:"India",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:551e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:24.4,lng:86.87,code:"PG041304"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Vellalar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:308e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.78,lng:77.78,code:"PG041493"},{name:"Kondh",country:"India",lang:"Kuvi",rol3:"kxv",pct_christian:7.5,pop:219e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:18.49,lng:83.27,code:"PG041352"},{name:"Pano",country:"India",lang:"Odia",rol3:"ory",pct_christian:7.5,pop:1735e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.04,lng:85.14,code:"PG041345"},{name:"Chamar (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:7.5,pop:1275e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:26.07,lng:80.62,code:"PG046031"},{name:"Munda (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:1235e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:26.97,lng:94.06,code:"PG048248"},{name:"Santal (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:697e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:26.55,lng:92.86,code:"PG046151"},{name:"Goan",country:"India",lang:"Konkani",rol3:"knn",pct_christian:7.5,pop:661e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:17.38,lng:74.3,code:"PG041474"},{name:"Gamit",country:"India",lang:"Gamit",rol3:"gbl",pct_christian:7.5,pop:649e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:21.11,lng:73.62,code:"PG041462"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"},{name:"Karbi",country:"India",lang:"Karbi",rol3:"mjw",pct_christian:7.5,pop:537e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.62,lng:93.03,code:"PG041521"},{name:"Cheruman",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:467e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.61,lng:76.25,code:"PG041452"},{name:"Garasia",country:"India",lang:"Garasia, Adiwasi",rol3:"gas",pct_christian:7.5,pop:295e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:24.08,lng:73.13,code:"PG041610"},{name:"Amant",country:"India",lang:"Maithili",rol3:"mai",pct_christian:7.5,pop:244e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:25.04,lng:86.5,code:"PG042053"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Jamatia",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:7.5,pop:138e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:23.36,lng:91.61,code:"PG041812"},{name:"Ghanchi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:129e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:22.02,lng:73.03,code:"PG041585"},{name:"Tangsa",country:"India",lang:"Naga, Tangshang",rol3:"nst",pct_christian:7.5,pop:85500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.37,lng:96.37,code:"PG042146"},{name:"Bharathar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:81e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:8.94,lng:76.82,code:"PG049578"},{name:"Wancho",country:"India",lang:"Naga, Wancho",rol3:"nnp",pct_christian:7.5,pop:7e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.56,lng:95.05,code:"PG041877"},{name:"Halam",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:7.5,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:23.79,lng:91.46,code:"PG041914"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Asur",country:"India",lang:"Asuri",rol3:"asr",pct_christian:7.5,pop:52500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:23.18,lng:84.56,code:"PG042115"}]},Pakistan:{target_upg:782,target_pop:250773e3,target_top_langs:["Punjabi, Western","Pashto, Central","Sindhi","Saraiki"],target_top_religion:"Islam",neighbors:[{name:"Chandala",country:"Pakistan",lang:"Saraiki",rol3:"skr",pct_christian:35,pop:752e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:31.73,lng:73.95,code:"PG049353"},{name:"Goan",country:"Pakistan",lang:"Konkani, Goan",rol3:"gom",pct_christian:25,pop:80500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.89,lng:67.06,code:"PG006349"},{name:"Marwari, Northern",country:"Pakistan",lang:"Marwari (Pakistan)",rol3:"mve",pct_christian:7.5,pop:17e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:28.82,lng:71.72,code:"PG006386"},{name:"Han Chinese",country:"Pakistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:31.52,lng:74.34,code:"PG006354"},{name:"Gujarati",country:"Pakistan",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:146e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.88,lng:70.3,code:"PG006352"},{name:"Bhil, Meghwar",country:"Pakistan",lang:"Sindhi Bhil",rol3:"sbn",pct_christian:3.5,pop:73e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.75,lng:68.61,code:"PG006381"},{name:"British",country:"Pakistan",lang:"English",rol3:"eng",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:31.38,lng:72.73,code:"PG006336"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Bhil Mina",country:"India",lang:"Vaghri",rol3:"vgr",pct_christian:35,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:24.59,lng:73.72,code:"PG048977"},{name:"Nagbansi (Dogri)",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:35,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:33.05,lng:75.08,code:"PG048317"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Chuhra",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:17.5,pop:59e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.92,lng:77.25,code:"PG049402"},{name:"Romani, Vlax",country:"Belgium",lang:"Romani, Vlax",rol3:"rmy",pct_christian:17.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.85,lng:4.38,code:"PG000068"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Kela",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:20.46,lng:85.67,code:"PG042031"},{name:"Badhi",country:"India",lang:"Pahari-Potwari",rol3:"phr",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:31.86,lng:76.82,code:"PG041983"},{name:"Baiti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:23.24,lng:88.24,code:"PG042100"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Cheintz",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:7.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:34.09,lng:74.81,code:"PG049470"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Watal",country:"India",lang:"Kashmiri",rol3:"kas",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.11,lng:74.77,code:"PG049375"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Bhangi (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:699e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.15,lng:87.53,code:"PG048219"},{name:"Kora",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:279e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.29,lng:86.43,code:"PG041592"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Od",country:"India",lang:"Oadki",rol3:"odk",pct_christian:3.5,pop:166e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:29.22,lng:75.8,code:"PG041691"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Batwal",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:108e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:32.75,lng:74.8,code:"PG041740"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Romani, Vlax, Kalderash",country:"Argentina",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:61e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-34.65,lng:-58.56,code:"PG017346"},{name:"Koch",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.68,lng:88.93,code:"PG042084"},{name:"Kotal",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:42500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.42,lng:87.79,code:"PG041946"},{name:"Romani, Vlax",country:"Colombia",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:4.64,lng:-74.11,code:"PG016290"},{name:"Vaghri",country:"India",lang:"Vaghri",rol3:"vgr",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042168"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Doai",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.05,lng:88.57,code:"PG042134"},{name:"Saryara",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:19500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:33.44,lng:75.87,code:"PG042135"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Paharia",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.37,lng:86.02,code:"PG049049"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Jogi (Bagri)",country:"India",lang:"Bagri",rol3:"bgq",pct_christian:3.5,pop:6700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.06,lng:74.08,code:"PG048278"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Behera",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.44,code:"PG041569"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Dagi",country:"India",lang:"Pahari-Potwari",rol3:"phr",pct_christian:3.5,pop:3100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:32.6,lng:76.92,code:"PG049401"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Ratal",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:32.38,lng:75.51,code:"PG049072"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Bhat (Pahari)",country:"India",lang:"Pahari-Potwari",rol3:"phr",pct_christian:3.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.66,lng:77.43,code:"PG048019"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Arain (Dogri)",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:32.11,lng:75.88,code:"PG048186"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"}]},Indonesia:{target_upg:237,target_pop:200492130,target_top_langs:["Javanese","Sunda","Malay","Madura"],target_top_religion:"Islam",neighbors:[{name:"Ekagi",country:"Indonesia",lang:"Ekari",rol3:"ekg",pct_christian:75,pop:17e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.83,lng:136.16,code:"PG022913"},{name:"Damal",country:"Indonesia",lang:"Damal",rol3:"uhn",pct_christian:75,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.95,lng:137.47,code:"PG022898"},{name:"Waropen",country:"Indonesia",lang:"Waropen",rol3:"wrp",pct_christian:75,pop:9800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.32,lng:136.75,code:"PG023089"},{name:"Kayan River Kenyah",country:"Indonesia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:75,pop:9700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:1.79,lng:115.19,code:"PG022573"},{name:"Wandamen",country:"Indonesia",lang:"Wamesa",rol3:"wad",pct_christian:75,pop:7300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.19,lng:133.96,code:"PG023082"},{name:"Siagha-Yenimu",country:"Indonesia",lang:"Awyu, Edera",rol3:"awy",pct_christian:75,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.15,lng:139.79,code:"PG047129"},{name:"Sobei",country:"Indonesia",lang:"Sobei",rol3:"sob",pct_christian:75,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.9,lng:138.76,code:"PG023048"},{name:"Turu",country:"Indonesia",lang:"Iau",rol3:"tmu",pct_christian:75,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.23,lng:137.67,code:"PG023073"},{name:"Serui-Laut",country:"Indonesia",lang:"Serui-Laut",rol3:"seu",pct_christian:75,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.88,lng:136.25,code:"PG023046"},{name:"Kelinyau Kenyah",country:"Indonesia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:75,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:.97,lng:116.7,code:"PG022574"},{name:"Sekar",country:"Indonesia",lang:"Sekar",rol3:"skz",pct_christian:75,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.68,lng:132.45,code:"PG023040"},{name:"Awera",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:75,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.72,lng:136.08,code:"PG022455"},{name:"Mor",country:"Indonesia",lang:"Iha",rol3:"ihp",pct_christian:75,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.84,lng:132.97,code:"PG022996"},{name:"Dani, Western",country:"Indonesia",lang:"Dani, Western",rol3:"dnw",pct_christian:62.5,pop:266e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.77,lng:138.31,code:"PG022902"},{name:"Mamasa",country:"Indonesia",lang:"Mamasa",rol3:"mqj",pct_christian:62.5,pop:151e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.93,lng:119.31,code:"PG022838"},{name:"Dani, Mid Grand Valley",country:"Indonesia",lang:"Dani, Mid Grand Valley",rol3:"dnt",pct_christian:62.5,pop:77e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.09,lng:138.94,code:"PG022900"},{name:"Jamden",country:"Indonesia",lang:"Yamdena",rol3:"jmd",pct_christian:62.5,pop:56500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.72,lng:131.43,code:"PG022665"},{name:"Bolongan",country:"Indonesia",lang:"Bulungan",rol3:"blj",pct_christian:62.5,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:.38,lng:123.68,code:"PG022556"},{name:"Kedang",country:"Indonesia",lang:"Kedang",rol3:"ksx",pct_christian:62.5,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.25,lng:123.76,code:"PG022750"},{name:"Moni",country:"Indonesia",lang:"Moni",rol3:"mnz",pct_christian:62.5,pop:30500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.6,lng:136.94,code:"PG022995"},{name:"Kisar",country:"Indonesia",lang:"Kisar",rol3:"kje",pct_christian:62.5,pop:28500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.79,lng:126.33,code:"PG022683"},{name:"Dani, Lower Grand Valley",country:"Indonesia",lang:"Dani, Lower Grand Valley",rol3:"dni",pct_christian:62.5,pop:28500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.26,lng:138.95,code:"PG022899"},{name:"Dani, Upper Grand Valley",country:"Indonesia",lang:"Dani, Upper Grand Valley",rol3:"dna",pct_christian:62.5,pop:28500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.95,lng:138.86,code:"PG022901"},{name:"Meyah",country:"Indonesia",lang:"Meyah",rol3:"mej",pct_christian:62.5,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.07,lng:133.54,code:"PG022988"},{name:"Alune",country:"Indonesia",lang:"Alune",rol3:"alp",pct_christian:62.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.08,lng:128.41,code:"PG022622"},{name:"Galumpang",country:"Indonesia",lang:"Kalumpang",rol3:"kli",pct_christian:62.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.51,lng:119.48,code:"PG022810"},{name:"Tabaru",country:"Indonesia",lang:"Tabaru",rol3:"tby",pct_christian:62.5,pop:22500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:.75,lng:127.64,code:"PG022716"},{name:"Bantik",country:"Indonesia",lang:"Malay, Manado",rol3:"xmm",pct_christian:62.5,pop:2e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:1.5,lng:124.84,code:"PG022789"},{name:"Sougb",country:"Indonesia",lang:"Sougb",rol3:"mnx",pct_christian:62.5,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.52,lng:134.05,code:"PG022979"},{name:"Nduga",country:"Indonesia",lang:"Nduga",rol3:"ndx",pct_christian:62.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.03,lng:138.05,code:"PG023007"},{name:"Ngalum",country:"Indonesia",lang:"Ngalum",rol3:"szb",pct_christian:62.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.84,lng:140.6,code:"PG023008"},{name:"Asmat Casuarina",country:"Indonesia",lang:"Asmat, Casuarina Coast",rol3:"asc",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.18,lng:138.46,code:"PG022450"},{name:"Kupel",country:"Indonesia",lang:"Ketengban",rol3:"xte",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.36,lng:140.41,code:"PG022964"},{name:"Tehit",country:"Indonesia",lang:"Tehit",rol3:"kps",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.36,lng:131.98,code:"PG023068"},{name:"Kamoro",country:"Indonesia",lang:"Kamoro",rol3:"kgq",pct_christian:62.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.51,lng:136.26,code:"PG022935"},{name:"Leboni",country:"Indonesia",lang:"Rampi",rol3:"lje",pct_christian:62.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.13,lng:120.3,code:"PG022827"},{name:"Dobel",country:"Indonesia",lang:"Dobel",rol3:"kvo",pct_christian:62.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.2,lng:134.63,code:"PG022642"},{name:"Meninggo",country:"Indonesia",lang:"Moskona",rol3:"mtj",pct_christian:62.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.57,lng:133.18,code:"PG022990"},{name:"Southeast Marind",country:"Indonesia",lang:"Marind",rol3:"mrz",pct_christian:62.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.04,lng:140.21,code:"PG023051"},{name:"Selaru",country:"Indonesia",lang:"Selaru",rol3:"slu",pct_christian:62.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.2,lng:130.97,code:"PG022706"},{name:"Amberbaken",country:"Indonesia",lang:"Mpur",rol3:"akc",pct_christian:62.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-.73,lng:133.16,code:"PG022444"},{name:"Kulawi",country:"Indonesia",lang:"Moma",rol3:"myl",pct_christian:62.5,pop:9300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.64,lng:119.96,code:"PG022822"},{name:"Muyu North",country:"Indonesia",lang:"Muyu, North",rol3:"kti",pct_christian:62.5,pop:9300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.44,lng:140.79,code:"PG023016"},{name:"Iha",country:"Indonesia",lang:"Iha",rol3:"ihp",pct_christian:62.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.82,lng:132.32,code:"PG022922"},{name:"Wemale, North",country:"Indonesia",lang:"Wemale",rol3:"weo",pct_christian:62.5,pop:8900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.07,lng:128.83,code:"PG022694"},{name:"Seko Padang",country:"Indonesia",lang:"Seko Padang",rol3:"skx",pct_christian:62.5,pop:8100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.21,lng:119.85,code:"PG022864"},{name:"Saparua",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.55,lng:128.66,code:"PG022704"},{name:"Ansus",country:"Indonesia",lang:"Ansus",rol3:"and",pct_christian:62.5,pop:7500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.72,lng:135.78,code:"PG022446"},{name:"Awyu Asue",country:"Indonesia",lang:"Awyu, Asue",rol3:"psa",pct_christian:62.5,pop:7500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.09,lng:139.15,code:"PG022457"},{name:"Ndao",country:"Indonesia",lang:"Dhao",rol3:"nfa",pct_christian:62.5,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-10.82,lng:122.66,code:"PG022765"},{name:"Irahutu",country:"Indonesia",lang:"Irarutu",rol3:"irh",pct_christian:62.5,pop:6600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.05,lng:133.32,code:"PG022924"},{name:"Taliabo",country:"Indonesia",lang:"Taliabu",rol3:"tlv",pct_christian:62.5,pop:6e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.81,lng:125.36,code:"PG022717"},{name:"Nimboran",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.59,lng:140.2,code:"PG023010"},{name:"Tamagario",country:"Indonesia",lang:"Tamagario",rol3:"tcg",pct_christian:62.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.64,lng:138.92,code:"PG023056"},{name:"Tepera",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.46,lng:140.39,code:"PG023069"},{name:"Hupla",country:"Indonesia",lang:"Hupla",rol3:"hap",pct_christian:62.5,pop:5400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.35,lng:139.17,code:"PG022921"},{name:"Seluwasan",country:"Indonesia",lang:"Seluwasan",rol3:"sws",pct_christian:62.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.67,lng:131.23,code:"PG022707"},{name:"Sawuy",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:5100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-10.54,lng:121.85,code:"PG023038"},{name:"Babar Tenggara",country:"Indonesia",lang:"Babar, Southeast",rol3:"vbb",pct_christian:62.5,pop:5e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.96,lng:129.8,code:"PG022628"},{name:"Eipomek",country:"Indonesia",lang:"Lik",rol3:"eip",pct_christian:62.5,pop:4900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.36,lng:140.03,code:"PG022912"},{name:"Wambon",country:"Indonesia",lang:"Wambon",rol3:"wms",pct_christian:62.5,pop:4900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.47,lng:140.51,code:"PG023080"},{name:"Liana-Seti",country:"Indonesia",lang:"Liana-Seti",rol3:"ste",pct_christian:62.5,pop:4700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.12,lng:129.89,code:"PG022710"},{name:"Muyu South",country:"Indonesia",lang:"Muyu, South",rol3:"kts",pct_christian:62.5,pop:4600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.01,lng:140.84,code:"PG023052"},{name:"Kalabra",country:"Indonesia",lang:"Kalabra",rol3:"kzz",pct_christian:62.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.37,lng:131.65,code:"PG022932"},{name:"Nipsan",country:"Indonesia",lang:"Nipsan",rol3:"nps",pct_christian:62.5,pop:3700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.23,lng:139.04,code:"PG023012"},{name:"Seko, Central",country:"Indonesia",lang:"Seko Tengah",rol3:"sko",pct_christian:62.5,pop:3600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.49,lng:119.82,code:"PG022865"},{name:"Padoe",country:"Indonesia",lang:"Padoe",rol3:"pdo",pct_christian:62.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.46,lng:121.05,code:"PG022868"},{name:"Nafri",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.67,lng:140.74,code:"PG023003"},{name:"Pom",country:"Indonesia",lang:"Pom",rol3:"pmo",pct_christian:62.5,pop:3300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.65,lng:135.63,code:"PG023024"},{name:"Kurudu",country:"Indonesia",lang:"Kurudu",rol3:"kjr",pct_christian:62.5,pop:3200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.85,lng:137.01,code:"PG022966"},{name:"Yaosakor Asmat",country:"Indonesia",lang:"Asmat, Yaosakor",rol3:"asy",pct_christian:62.5,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.62,lng:138.54,code:"PG023099"},{name:"Mairasi",country:"Indonesia",lang:"Mairasi",rol3:"zrs",pct_christian:62.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.47,lng:134.02,code:"PG022976"},{name:"Marau",country:"Indonesia",lang:"Marau",rol3:"mvr",pct_christian:62.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.68,lng:135.79,code:"PG022982"},{name:"Somahai",country:"Indonesia",lang:"Momuna",rol3:"mqf",pct_christian:62.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5,lng:139.24,code:"PG023049"},{name:"Uria",country:"Indonesia",lang:"Orya",rol3:"ury",pct_christian:62.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.84,lng:139.74,code:"PG023074"},{name:"Inanwatan",country:"Indonesia",lang:"Suabo",rol3:"szp",pct_christian:62.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.07,lng:132.16,code:"PG022923"},{name:"Kemberano",country:"Indonesia",lang:"Kemberano",rol3:"bzp",pct_christian:62.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.37,lng:132.97,code:"PG022933"},{name:"Saberi",country:"Indonesia",lang:"Isirawa",rol3:"srl",pct_christian:62.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.82,lng:138.48,code:"PG023030"},{name:"Iria",country:"Indonesia",lang:"Kamberau",rol3:"irx",pct_christian:62.5,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.45,lng:133.58,code:"PG022926"},{name:"Riantana",country:"Indonesia",lang:"Riantana",rol3:"ran",pct_christian:62.5,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.68,lng:138.59,code:"PG023028"},{name:"Ninggrum",country:"Indonesia",lang:"Ninggerum",rol3:"nxr",pct_christian:62.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.3,lng:140.95,code:"PG023011"},{name:"Woi",country:"Indonesia",lang:"Woi",rol3:"wbw",pct_christian:62.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.64,lng:135.5,code:"PG023092"},{name:"Mekwei",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.51,lng:140.37,code:"PG022989"},{name:"Seget",country:"Indonesia",lang:"Moi Lemas",rol3:"sbg",pct_christian:62.5,pop:1900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.34,lng:131.17,code:"PG023039"},{name:"Demta",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.37,lng:140.16,code:"PG022906"},{name:"Berik",country:"Indonesia",lang:"Berik",rol3:"bkl",pct_christian:62.5,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.35,lng:138.86,code:"PG022467"},{name:"Bonfia",country:"Indonesia",lang:"Masiwang",rol3:"bnf",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.39,lng:130.57,code:"PG022636"},{name:"Davelor",country:"Indonesia",lang:"Dawera-Daweloor",rol3:"ddw",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.75,lng:130.04,code:"PG022641"},{name:"Dem",country:"Indonesia",lang:"Dem",rol3:"dem",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.73,lng:137.58,code:"PG022904"},{name:"Kamberataro",country:"Indonesia",lang:"Dla",rol3:"kbv",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.54,lng:140.96,code:"PG022934"},{name:"Kaugat",country:"Indonesia",lang:"Atohwaim",rol3:"aqm",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.28,lng:138.68,code:"PG022943"},{name:"Moraid",country:"Indonesia",lang:"Moraid",rol3:"msg",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.05,lng:131.88,code:"PG022998"},{name:"Ndom",country:"Indonesia",lang:"Ndom",rol3:"nqm",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.09,lng:138,code:"PG023006"},{name:"Sempan",country:"Indonesia",lang:"Sempan",rol3:"xse",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.04,lng:137.68,code:"PG023043"},{name:"Waris",country:"Indonesia",lang:"Waris",rol3:"wrs",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.24,lng:140.93,code:"PG023087"},{name:"Northern Asmat",country:"Indonesia",lang:"Asmat, North",rol3:"nks",pct_christian:62.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.69,lng:138.52,code:"PG023015"},{name:"Semimi",country:"Indonesia",lang:"Semimi",rol3:"etz",pct_christian:62.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.77,lng:134.45,code:"PG023042"},{name:"Panasuan",country:"Indonesia",lang:"Panasuan",rol3:"psn",pct_christian:62.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.26,lng:119.65,code:"PG022852"},{name:"Talondo",country:"Indonesia",lang:"Talondo’",rol3:"tln",pct_christian:62.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.51,lng:119.34,code:"PG022874"},{name:"Asienara, Buruwai",country:"Indonesia",lang:"Buruwai",rol3:"asi",pct_christian:62.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.59,lng:133.34,code:"PG022452"},{name:"Duvele",country:"Indonesia",lang:"Duvle",rol3:"duv",pct_christian:62.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.16,lng:137.97,code:"PG022911"},{name:"Taikat",country:"Indonesia",lang:"Taikat",rol3:"aos",pct_christian:62.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.86,lng:140.65,code:"PG023055"},{name:"Masela, West",country:"Indonesia",lang:"Masela, West",rol3:"mss",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.19,lng:129.83,code:"PG022735"},{name:"Kayupulau",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.54,lng:140.72,code:"PG022949"},{name:"Papuma",country:"Indonesia",lang:"Papuma",rol3:"ppm",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.74,lng:135.86,code:"PG023022"},{name:"Wanggom",country:"Indonesia",lang:"Wanggom",rol3:"wng",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.55,lng:140.17,code:"PG023083"},{name:"Dai",country:"Indonesia",lang:"Dai",rol3:"dij",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.55,lng:129.69,code:"PG022640"},{name:"Kaburi",country:"Indonesia",lang:"Kaburi",rol3:"uka",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.91,lng:132.48,code:"PG022929"},{name:"Kampung Baru",country:"Indonesia",lang:"Kais",rol3:"kzm",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.73,lng:132.29,code:"PG022936"},{name:"Puragi",country:"Indonesia",lang:"Puragi",rol3:"pru",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.94,lng:132.24,code:"PG023025"},{name:"Tanahmerah",country:"Indonesia",lang:"Tanahmerah",rol3:"tcm",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.56,lng:133.17,code:"PG023058"},{name:"Masela, East",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.14,lng:129.87,code:"PG022644"},{name:"Masela, Central",country:"Indonesia",lang:"Masela, West",rol3:"mss",pct_christian:62.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.18,lng:129.84,code:"PG022712"},{name:"Mawes",country:"Indonesia",lang:"Mawes",rol3:"mgk",pct_christian:62.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.36,lng:139.67,code:"PG022987"},{name:"Bonggo",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.31,lng:139.57,code:"PG022471"},{name:"Kaibubu",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.16,lng:128.22,code:"PG022667"},{name:"Keder",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.04,lng:139.05,code:"PG022950"},{name:"Bonefa",country:"Indonesia",lang:"Nisa",rol3:"njs",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.34,lng:137.23,code:"PG022470"},{name:"Konda",country:"Indonesia",lang:"Konda",rol3:"knd",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.56,lng:132.01,code:"PG022957"},{name:"Lepki",country:"Indonesia",lang:"Lepki",rol3:"lpe",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.13,lng:140.48,code:"PG022973"},{name:"Manem",country:"Indonesia",lang:"Manem",rol3:"jet",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.97,lng:140.9,code:"PG022978"},{name:"Yelmek",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.44,lng:139.16,code:"PG023105"},{name:"Kanum",country:"Indonesia",lang:"Kanum, Ngkâlmpw",rol3:"kcd",pct_christian:62.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.51,lng:140.84,code:"PG022938"},{name:"Tarunggare",country:"Indonesia",lang:"Tunggare",rol3:"trt",pct_christian:62.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.28,lng:135.6,code:"PG023063"},{name:"Kwansu",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.57,lng:140.29,code:"PG022968"},{name:"Papasena",country:"Indonesia",lang:"Papasena",rol3:"pas",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.8,lng:138.63,code:"PG023021"},{name:"Samarkena",country:"Indonesia",lang:"Samarokena",rol3:"tmj",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.83,lng:138.26,code:"PG023031"},{name:"Tarpia",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.37,lng:140.05,code:"PG023062"},{name:"Baburiwa",country:"Indonesia",lang:"Eritai",rol3:"ert",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.73,lng:138.12,code:"PG022459"},{name:"Serili",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.11,lng:129.91,code:"PG022708"},{name:"Kaure",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.24,lng:140.11,code:"PG022944"},{name:"Koneraw",country:"Indonesia",lang:"Koneraw",rol3:"kdw",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.36,lng:138.07,code:"PG022958"},{name:"Wakde",country:"Indonesia",lang:"Mo",rol3:"wkd",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.99,lng:138.99,code:"PG023078"},{name:"Sukubatong",country:"Indonesia",lang:"Kimki",rol3:"sbt",pct_christian:62.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.37,lng:140.91,code:"PG023054"},{name:"Taori-So",country:"Indonesia",lang:"Doutai",rol3:"tds",pct_christian:62.5,pop:475,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.31,lng:138.14,code:"PG023061"},{name:"Yotafa",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:475,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.58,lng:140.68,code:"PG023109"},{name:"Lorang",country:"Indonesia",lang:"Lorang",rol3:"lrn",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.3,lng:134.42,code:"PG022685"},{name:"Kirira",country:"Indonesia",lang:"Kirikiri",rol3:"kiy",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.18,lng:137.18,code:"PG022953"},{name:"Saweru",country:"Indonesia",lang:"Saweru",rol3:"swr",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.91,lng:136.29,code:"PG023037"},{name:"Yamna",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.1,lng:139.21,code:"PG023098"},{name:"Masimasi",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:425,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2,lng:139.14,code:"PG022984"},{name:"Sause",country:"Indonesia",lang:"Sause",rol3:"sao",pct_christian:62.5,pop:425,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.24,lng:139.62,code:"PG023036"},{name:"Biksi",country:"Indonesia",lang:"Yetfa",rol3:"yet",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.04,lng:140.79,code:"PG022469"},{name:"Karas",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.45,lng:132.68,code:"PG022940"},{name:"Sasawa",country:"Indonesia",lang:"Kwerba",rol3:"kwe",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.18,lng:138.47,code:"PG023034"},{name:"Yeretuar",country:"Indonesia",lang:"Yeretuar",rol3:"gop",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.04,lng:134.68,code:"PG023106"},{name:"Foau",country:"Indonesia",lang:"Foau",rol3:"flh",pct_christian:62.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.99,lng:139.29,code:"PG022917"},{name:"Kosare",country:"Indonesia",lang:"Kosare",rol3:"kiq",pct_christian:62.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.75,lng:140.22,code:"PG022962"},{name:"Rasawa",country:"Indonesia",lang:"Rasawa",rol3:"rac",pct_christian:62.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.35,lng:136.41,code:"PG023027"},{name:"Elseng",country:"Indonesia",lang:"Elseng",rol3:"mrf",pct_christian:62.5,pop:325,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.1,lng:140.39,code:"PG023000"}]},Bangladesh:{target_upg:276,target_pop:172467300,target_top_langs:["Bengali","Sylheti","Rohingya","Urdu"],target_top_religion:"Islam",neighbors:[{name:"Garo",country:"Bangladesh",lang:"Garo",rol3:"grt",pct_christian:62.5,pop:137e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.79,lng:90.47,code:"PG001167"},{name:"Pangkhu",country:"Bangladesh",lang:"Pangkhua",rol3:"pkh",pct_christian:62.5,pop:5400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.85,lng:92.38,code:"PG001197"},{name:"Santal",country:"Bangladesh",lang:"Santhali",rol3:"sat",pct_christian:45,pop:21e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.62,lng:88.79,code:"PG001203"},{name:"Migam",country:"Bangladesh",lang:"Megam",rol3:"mef",pct_christian:45,pop:8700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.09,lng:91,code:"PG001190"},{name:"Southern Chin",country:"Bangladesh",lang:"Chin, Asho",rol3:"csh",pct_christian:45,pop:4600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.96,lng:92.37,code:"PG001206"},{name:"Riang",country:"Bangladesh",lang:"Riang",rol3:"ria",pct_christian:45,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.56,lng:92.27,code:"PG001200"},{name:"Mahale",country:"Bangladesh",lang:"Santhali",rol3:"sat",pct_christian:35,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.62,lng:88.78,code:"PG001187"},{name:"Khumi Chin",country:"Bangladesh",lang:"Chin, Khumi",rol3:"cnk",pct_christian:35,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.8,lng:92.5,code:"PG001180"},{name:"Lushai",country:"Bangladesh",lang:"Mizo",rol3:"lus",pct_christian:35,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.67,lng:92.19,code:"PG001185"},{name:"Koch",country:"Bangladesh",lang:"Koch",rol3:"kdq",pct_christian:25,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.79,lng:89.7,code:"PG001181"},{name:"Munda",country:"Bangladesh",lang:"Mundari",rol3:"unr",pct_christian:25,pop:5800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:25.4,lng:88.78,code:"PG001192"},{name:"Oraon",country:"Bangladesh",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:89500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.86,lng:88.88,code:"PG001195"},{name:"Han Chinese",country:"Bangladesh",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:3500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.75,lng:90.4,code:"PG001172"},{name:"Marma",country:"Bangladesh",lang:"Marma",rol3:"rmz",pct_christian:3.5,pop:276e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:22.56,lng:92.24,code:"PG001189"},{name:"Tripuri",country:"Bangladesh",lang:"Kok Borok",rol3:"trp",pct_christian:3.5,pop:142e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.74,lng:91.28,code:"PG001215"},{name:"Manipuri",country:"Bangladesh",lang:"Meitei",rol3:"mni",pct_christian:3.5,pop:44e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.73,lng:91.74,code:"PG001188"},{name:"Mru",country:"Bangladesh",lang:"Mru",rol3:"mro",pct_christian:3.5,pop:35e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.71,lng:92.45,code:"PG001191"},{name:"Bawm",country:"Bangladesh",lang:"Chin, Bawm",rol3:"bgr",pct_christian:3.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.95,lng:92.46,code:"PG001153"},{name:"British",country:"Bangladesh",lang:"English",rol3:"eng",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:23.73,lng:90.42,code:"PG001159"},{name:"Hajong",country:"Bangladesh",lang:"Hajong",rol3:"haj",pct_christian:3.5,pop:9500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.11,lng:90.37,code:"PG001170"},{name:"Mara",country:"Bangladesh",lang:"Shendu",rol3:"shl",pct_christian:3.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.2,lng:92.54,code:"PG001204"},{name:"Ansari-Momin (Sadri)",country:"India",lang:"Sadri",rol3:"sck",pct_christian:75,pop:225,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.63,lng:85.55,code:"PG048700"},{name:"Pnar",country:"India",lang:"Pnar",rol3:"pbv",pct_christian:62.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.89,code:"PG049638"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Khasi",country:"India",lang:"Khasi",rol3:"kha",pct_christian:45,pop:1675e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:25.52,lng:91.79,code:"PG041380"},{name:"Santal (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:45,pop:176e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.8,lng:87.48,code:"PG046353"},{name:"Madgi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:76500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.17,lng:79.45,code:"PG041802"},{name:"Mech",country:"India",lang:"Assamese",rol3:"asm",pct_christian:25,pop:73500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.1,lng:92.43,code:"PG041900"},{name:"Godari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.69,lng:83.22,code:"PG049205"},{name:"Ghogia",country:"India",lang:"Odia",rol3:"ory",pct_christian:25,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.15,lng:84.09,code:"PG049008"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"Arakala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:375,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.11,lng:83.4,code:"PG049160"},{name:"Mala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:7615e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.36,lng:79.51,code:"PG041263"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Ojha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:46e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.74,lng:78.25,code:"PG041974"},{name:"Goudu",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.71,lng:83.25,code:"PG042158"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Bari (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.86,lng:84.8,code:"PG048204"},{name:"Candhai Maru",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.48,lng:83.97,code:"PG049648"},{name:"Madiga",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:9445e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.51,lng:79.06,code:"PG041253"},{name:"Chakkiliyan",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1205e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:77.71,code:"PG041373"},{name:"Nadua Shabar",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:659e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:19.9,lng:85.17,code:"PG049502"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Panchama",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:7800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.01,lng:81.79,code:"PG042086"},{name:"Padigarajulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.58,lng:79.51,code:"PG049165"},{name:"Kuda",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.83,lng:85.53,code:"PG049016"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Tharua",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.49,lng:86.93,code:"PG049031"},{name:"Dusadh",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:7.5,pop:691e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:25.23,lng:85.31,code:"PG041266"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Pano",country:"India",lang:"Odia",rol3:"ory",pct_christian:7.5,pop:1735e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:21.04,lng:85.14,code:"PG041345"},{name:"Munda (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:1235e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.97,lng:94.06,code:"PG048248"},{name:"Santal (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:697e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.55,lng:92.86,code:"PG046151"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Telugu",country:"Malaysia",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:137e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.62,code:"PG009356"},{name:"Ghanchi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:129e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.02,lng:73.03,code:"PG041585"},{name:"Mishmi",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:51500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.99,lng:96.59,code:"PG042163"},{name:"Badaik",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:47500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.23,lng:84.86,code:"PG042092"},{name:"Parhaiya",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.97,lng:84.3,code:"PG041928"},{name:"Mala Dasari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:15.53,lng:78,code:"PG041919"},{name:"Kela",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:20.46,lng:85.67,code:"PG042031"},{name:"Baiti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:23.24,lng:88.24,code:"PG042100"},{name:"Chhetri",country:"India",lang:"Nepali",rol3:"npi",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.34,lng:89.24,code:"PG041565"},{name:"Thoti",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:19.26,lng:79.01,code:"PG042167"},{name:"Bhandari",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.56,lng:73.13,code:"PG041414"},{name:"Ellamalawar",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.37,lng:76.49,code:"PG042033"},{name:"Gandla",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.61,lng:79.51,code:"PG041598"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Telugu",country:"Singapore",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:1.36,lng:103.82,code:"PG010724"},{name:"Gudugudupandi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.88,lng:78.56,code:"PG049883"},{name:"Banai",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.61,lng:90.3,code:"PG049560"},{name:"Patni Vankar",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:325,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.04,lng:72.6,code:"PG049948"},{name:"Yadava (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:8465e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.05,lng:84.06,code:"PG046313"},{name:"Chamar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:455e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.65,lng:84.13,code:"PG046025"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Mahyavanshi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:2305e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.73,lng:71.51,code:"PG041327"},{name:"Gujarati",country:"Pakistan",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:146e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.88,lng:70.3,code:"PG006352"},{name:"Ganda",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:128e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.6,lng:83.11,code:"PG041366"},{name:"Ho",country:"India",lang:"Ho",rol3:"hoc",pct_christian:3.5,pop:118e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:22.28,lng:85.76,code:"PG041399"},{name:"Gond (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:856e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.12,lng:83.68,code:"PG048258"},{name:"Kondara",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:702e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.46,lng:85.67,code:"PG041421"},{name:"Bhangi (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:699e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.15,lng:87.53,code:"PG048219"},{name:"Gond (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:3.5,pop:55e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.95,lng:94.05,code:"PG048259"},{name:"Adi Andhra",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:344e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.06,lng:81.75,code:"PG049197"},{name:"Lohara",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:324e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:25.14,lng:87.24,code:"PG041542"},{name:"Kora",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:279e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.29,lng:86.43,code:"PG041592"},{name:"Beda Jangam",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.11,lng:76.53,code:"PG041759"},{name:"Chakma",country:"India",lang:"Chakma",rol3:"ccp",pct_christian:3.5,pop:205e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Folk",lat:23.41,lng:92.17,code:"PG041710"},{name:"Mala Sale",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:169e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:19.26,lng:79.01,code:"PG041624"},{name:"Domban",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:163e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.35,lng:78.88,code:"PG042124"},{name:"Gurung",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:147e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.84,lng:90.63,code:"PG041693"},{name:"Nepali",country:"Bhutan",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.13,lng:89.79,code:"PG042388"},{name:"Beldar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:115e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.35,lng:83.71,code:"PG048209"},{name:"Kotia",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:104e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.9,lng:82.7,code:"PG041783"},{name:"Rajbhar",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:89e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.68,lng:80.47,code:"PG042085"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Bania, Brittial",country:"India",lang:"Assamese",rol3:"asm",pct_christian:3.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.14,lng:91.55,code:"PG041797"},{name:"Damai (Nepali)",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:66500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.66,lng:89.08,code:"PG041874"},{name:"Kunbi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.24,lng:70.76,code:"PG046238"},{name:"Mukha Dhora",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:56e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.9,lng:82.7,code:"PG042032"},{name:"Koch",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.68,lng:88.93,code:"PG042084"},{name:"Bagheti",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:20.46,lng:85.67,code:"PG041964"},{name:"Kotal",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:42500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.42,lng:87.79,code:"PG041946"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Omanatya",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:18.81,lng:82.76,code:"PG042004"},{name:"Mala Jangam",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:34e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.36,lng:76.78,code:"PG041898"},{name:"Burmese",country:"Malaysia",lang:"Burmese",rol3:"mya",pct_christian:3.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018483"},{name:"Binjhia",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22,lng:82.34,code:"PG042025"},{name:"Bariki",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:19.64,lng:84.68,code:"PG041881"},{name:"Bargunda",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.38,lng:75.65,code:"PG042022"},{name:"Sudugadu Siddha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:12.99,lng:76.11,code:"PG042143"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Gond (Sadri) ",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.17,lng:85,code:"PG048262"},{name:"Pap",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:23500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:21.21,lng:83.34,code:"PG042122"},{name:"Doai",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.05,lng:88.57,code:"PG042134"},{name:"Byagara",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.88,lng:78.22,code:"PG041825"},{name:"Konda Kapu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:18500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.19,lng:82.01,code:"PG041904"},{name:"Sarki",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.96,lng:88.33,code:"PG042059"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Telugu",country:"Sri Lanka",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:6.91,lng:79.9,code:"PG006443"},{name:"Pentia",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:18.81,lng:82.76,code:"PG042165"},{name:"Panka (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:19.21,lng:82.51,code:"PG049026"},{name:"Gorait",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.21,lng:85.33,code:"PG042169"},{name:"Jaggali",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:9700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:19.64,lng:84.68,code:"PG042152"},{name:"Paharia",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.37,lng:86.02,code:"PG049049"},{name:"Madiga Dasu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:7400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.39,lng:80.11,code:"PG049163"},{name:"Assamese",country:"Bhutan",lang:"Assamese",rol3:"asm",pct_christian:3.5,pop:7300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.87,lng:90.38,code:"PG001218"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Mali",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.9,lng:82.7,code:"PG047911"},{name:"Dakkala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.39,lng:83.94,code:"PG041849"},{name:"Behera",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.44,code:"PG041569"},{name:"Thogataveera Kshatriya",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:3100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.4,lng:77.89,code:"PG049753"},{name:"Kanda",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:3100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.9,lng:91.74,code:"PG049042"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Reddi Dora",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:2600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.68,lng:83.21,code:"PG049166"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"},{name:"Bhagotulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:450,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.89,lng:81.4,code:"PG049859"},{name:"Kusunda",country:"Nepal",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.17,lng:85.13,code:"PG049141"}]},China:{target_upg:444,target_pop:139759490,target_top_langs:["Chinese, Xiang","Chinese, Mandarin","Uyghur","Mongolian, Peripheral"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Ayi",country:"China",lang:"Lisu",rol3:"lis",pct_christian:62.5,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.14,lng:98.85,code:"PG006671"},{name:"Xiandao",country:"China",lang:"Achang",rol3:"acn",pct_christian:62.5,pop:200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.52,lng:97.88,code:"PG022125"},{name:"Hkauri",country:"China",lang:"Tibetan, Central",rol3:"bod",pct_christian:62.5,pop:40,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.55,lng:97.6,code:"PG022169"},{name:"Gha-Mu",country:"China",lang:"Miao, Small Flowery",rol3:"sfm",pct_christian:45,pop:171e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.53,lng:105.11,code:"PG006745"},{name:"Lipo, Eastern",country:"China",lang:"Lipo",rol3:"lpo",pct_christian:45,pop:139e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.84,lng:102.3,code:"PG007265"},{name:"Rawang",country:"China",lang:"Rawang",rol3:"raw",pct_christian:45,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.73,lng:98.31,code:"PG023113"},{name:"Lisu",country:"China",lang:"Lisu",rol3:"lis",pct_christian:35,pop:837e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.84,lng:99.07,code:"PG007267"},{name:"A-Hmao",country:"China",lang:"Miao, Large Flowery",rol3:"hmd",pct_christian:35,pop:644e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.11,lng:103.41,code:"PG006652"},{name:"Indonesian",country:"China",lang:"Indonesian",rol3:"ind",pct_christian:35,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.24,lng:110.15,code:"PG007207"},{name:"Maru",country:"China",lang:"Lhao Vo",rol3:"mhx",pct_christian:25,pop:31e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.33,lng:98.43,code:"PG007279"},{name:"Jingpo",country:"China",lang:"Jingpho",rol3:"kac",pct_christian:25,pop:29500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.41,lng:97.86,code:"PG007217"},{name:"Laka",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:25,pop:9700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.04,lng:102.28,code:"PG007241"},{name:"Lagou",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:25,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.23,lng:104.52,code:"PG007237"},{name:"Lashi",country:"China",lang:"Lacid",rol3:"lsi",pct_christian:25,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.06,lng:98.66,code:"PG007248"},{name:"Nasu, Eastern",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:17.5,pop:65e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.07,lng:102.78,code:"PG007326"},{name:"Nasu, Wusa",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:17.5,pop:412e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.27,lng:103.71,code:"PG007426"},{name:"Naluo",country:"China",lang:"Nuosu",rol3:"iii",pct_christian:17.5,pop:62500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.83,lng:102.4,code:"PG007323"},{name:"Minglang",country:"China",lang:"Sani",rol3:"ysn",pct_christian:17.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.77,lng:102.27,code:"PG007303"},{name:"Lawa",country:"China",lang:"Lawa, Western",rol3:"lcp",pct_christian:12.5,pop:67500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:23.84,lng:99.19,code:"PG007250"},{name:"Nu",country:"China",lang:"Nusu",rol3:"nuf",pct_christian:12.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.08,lng:98.94,code:"PG007338"},{name:"Guopu",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:12.5,pop:26500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.31,lng:104.13,code:"PG006753"},{name:"Bela",country:"China",lang:"Pela",rol3:"bxd",pct_christian:12.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:24.61,lng:98.31,code:"PG006684"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Han Chinese, Wu",country:"China",lang:"Chinese, Wu",rol3:"wuu",pct_christian:7.5,pop:9253e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:29.71,lng:119.11,code:"PG006806"},{name:"Han Chinese, Cantonese",country:"China",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6477e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.94,lng:111.32,code:"PG006808"},{name:"Han Chinese, Jinyu",country:"China",lang:"Chinese, Jinyu",rol3:"cjy",pct_christian:7.5,pop:6031e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:38.74,lng:111.39,code:"PG006801"},{name:"Han Chinese, Xiang",country:"China",lang:"Chinese, Xiang",rol3:"hsn",pct_christian:7.5,pop:423e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:27.97,lng:111.27,code:"PG006807"},{name:"Han Chinese, Gan",country:"China",lang:"Chinese, Gan",rol3:"gan",pct_christian:7.5,pop:4128e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:28.29,lng:115.02,code:"PG006798"},{name:"Han Chinese, Min Nan",country:"China",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:3555e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:23.42,lng:115.05,code:"PG006805"},{name:"Han Chinese, Min Bei",country:"China",lang:"Chinese, Min Bei",rol3:"mnp",pct_christian:7.5,pop:113e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:26.93,lng:117.92,code:"PG006803"},{name:"Han Chinese, Min Dong",country:"China",lang:"Chinese, Min Dong",rol3:"cdo",pct_christian:7.5,pop:106e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:26.54,lng:119.2,code:"PG006804"},{name:"Han Chinese, Puxian",country:"China",lang:"Chinese, Pu-Xian",rol3:"cpx",pct_christian:7.5,pop:31e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:25.37,lng:118.86,code:"PG007003"},{name:"Lahu",country:"China",lang:"Lahu",rol3:"lhu",pct_christian:7.5,pop:59e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.76,lng:99.83,code:"PG007238"},{name:"Wumeng",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:7.5,pop:61500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.46,lng:103.62,code:"PG022123"},{name:"Puwa",country:"China",lang:"Phowa, Hlepho",rol3:"yhl",pct_christian:7.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.46,lng:103.33,code:"PG022103"},{name:"Achang",country:"China",lang:"Achang",rol3:"acn",pct_christian:7.5,pop:38500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:24.64,lng:98.23,code:"PG006653"},{name:"Drung",country:"China",lang:"Drung",rol3:"duu",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.87,lng:98.32,code:"PG006724"},{name:"Depo",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:7.5,pop:9900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.39,lng:101.95,code:"PG006723"},{name:"Tuwo",country:"China",lang:"Lisu",rol3:"lis",pct_christian:7.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.05,lng:98.67,code:"PG007417"},{name:"Han Chinese, Huizhou",country:"China",lang:"Chinese, Huizhou",rol3:"czh",pct_christian:3.5,pop:542e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:29.62,lng:118.21,code:"PG006800"},{name:"Han Chinese, Min Zhong",country:"China",lang:"Chinese, Min Zhong",rol3:"czo",pct_christian:3.5,pop:963e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:26.14,lng:117.51,code:"PG006979"},{name:"Chuanlan",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:416e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.86,lng:105.07,code:"PG006713"},{name:"Han Chinese, Waxianghua",country:"China",lang:"Waxianghua",rol3:"wxa",pct_christian:3.5,pop:385e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:28.71,lng:110.24,code:"PG007076"},{name:"Xibe",country:"China",lang:"Xibe",rol3:"sjo",pct_christian:3.5,pop:151e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.78,lng:123.3,code:"PG007432"},{name:"Zaiwa",country:"China",lang:"Zaiwa",rol3:"atb",pct_christian:3.5,pop:142e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.36,lng:98.39,code:"PG007451"},{name:"Nosu, Tianba",country:"China",lang:"Nuosu",rol3:"iii",pct_christian:3.5,pop:138e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:28.87,lng:102.87,code:"PG022214"},{name:"Manchu",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:132e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:47.66,lng:124.56,code:"PG007275"},{name:"Naisu",country:"China",lang:"Yi, Wuding-Luquan",rol3:"ywq",pct_christian:3.5,pop:82e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:25.49,lng:101.86,code:"PG007322"},{name:"Maonan",country:"China",lang:"Maonan",rol3:"mmd",pct_christian:3.5,pop:79e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Daoism",lat:24.99,lng:108.02,code:"PG007278"},{name:"Michi",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:49e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.78,lng:102.18,code:"PG007300"},{name:"Muji, Southern",country:"China",lang:"Muji, Southern",rol3:"ymc",pct_christian:3.5,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.09,lng:103.31,code:"PG007319"},{name:"Neisu",country:"China",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:28e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.17,lng:100.64,code:"PG007334"},{name:"Sansu",country:"China",lang:"Hlersu",rol3:"hle",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.55,lng:102.25,code:"PG007382"},{name:"Laopang",country:"China",lang:"Laopang",rol3:"lbg",pct_christian:3.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:23.78,lng:99.39,code:"PG007247"},{name:"Achang, Husa",country:"China",lang:"Achang",rol3:"acn",pct_christian:3.5,pop:8500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Mahayana",lat:24.45,lng:97.87,code:"PG006654"},{name:"Gouzou",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:3.5,pop:6400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:26.92,lng:104.5,code:"PG006750"},{name:"Meng",country:"China",lang:"Hani",rol3:"hni",pct_christian:3.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.89,lng:101.81,code:"PG007280"},{name:"Zauzou",country:"China",lang:"Zauzou",rol3:"zal",pct_christian:3.5,pop:3800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:26.37,lng:99.01,code:"PG007453"},{name:"Naxi, Northern",country:"China",lang:"Naxi",rol3:"nxq",pct_christian:3.5,pop:3500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:28.78,lng:98.73,code:"PG022209"},{name:"Duoluo",country:"China",lang:"Duoluo",rol3:"giw",pct_christian:3.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:25.71,lng:105.63,code:"PG022159"},{name:"Fuma",country:"China",lang:"Hlai",rol3:"lic",pct_christian:3.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:19.33,lng:108.75,code:"PG006737"},{name:"Thmaun",country:"Cambodia",lang:"Undetermined",rol3:"und",pct_christian:45,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.12,lng:106.43,code:"PG022376"},{name:"Hmong",country:"Vietnam",lang:"Hmong Daw",rol3:"mww",pct_christian:35,pop:133e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.86,lng:103.59,code:"PG011142"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Rukai",country:"Taiwan",lang:"Rukai",rol3:"dru",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.82,lng:120.83,code:"PG007516"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Korean",country:"Argentina",lang:"Korean",rol3:"kor",pct_christian:25,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG046918"},{name:"Korean",country:"Singapore",lang:"Korean",rol3:"kor",pct_christian:25,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:1.36,lng:103.82,code:"PG010710"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"Korean",country:"Taiwan",lang:"Korean",rol3:"kor",pct_christian:25,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.63,lng:120.33,code:"PG007526"},{name:"Lanten",country:"Laos",lang:"Kim Mun",rol3:"mji",pct_christian:25,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:21.92,lng:101.91,code:"PG020923"},{name:"Korean",country:"Northern Mariana Islands",lang:"Korean",rol3:"kor",pct_christian:25,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:15.91,lng:145.61,code:"PG050228"},{name:"Korean",country:"Australia",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:167e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-33.85,lng:151.03,code:"PG021625"},{name:"Korean",country:"Canada",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:46.93,lng:-92.67,code:"PG043424"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Adi Minyong",country:"India",lang:"Adi",rol3:"adi",pct_christian:17.5,pop:5e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:28.05,lng:94.43,code:"PG041950"},{name:"Korean",country:"United Kingdom",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.5,lng:-.17,code:"PG000650"},{name:"Korean",country:"New Zealand",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-36.89,lng:174.78,code:"PG047592"},{name:"Korean",country:"Hong Kong",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.38,lng:114.13,code:"PG050601"},{name:"Korean",country:"Paraguay",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.3,lng:-57.56,code:"PG017246"},{name:"Korean",country:"Guam",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.44,lng:144.78,code:"PG050301"},{name:"Korean",country:"Dominican Republic",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:18.48,lng:-69.91,code:"PG022409"},{name:"Korean",country:"South Korea",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:5025e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.38,lng:127.82,code:"PG048088"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Nikkei, Brazilian",country:"Japan",lang:"Japanese",rol3:"jpn",pct_christian:12.5,pop:104e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:35.13,lng:136.92,code:"PG049262"},{name:"Korean",country:"Mozambique",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.89,lng:32.57,code:"PG015382"},{name:"Korean",country:"Madagascar",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-18.91,lng:47.53,code:"PG015310"},{name:"Blang",country:"Myanmar",lang:"Blang",rol3:"blr",pct_christian:12.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:21.5,lng:100.17,code:"PG022041"},{name:"Hsifan",country:"Myanmar",lang:"Tibetan, Central",rol3:"bod",pct_christian:12.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Tibetan",lat:27.24,lng:97.64,code:"PG009445"},{name:"Puroik",country:"India",lang:"Adi",rol3:"adi",pct_christian:12.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:27.43,lng:92.97,code:"PG049739"},{name:"Korean",country:"Honduras",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:14.08,lng:-87.2,code:"PG024788"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Han Chinese, Cantonese",country:"Hong Kong",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6255e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050587"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Han Chinese, Cantonese",country:"Malaysia",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:19e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.65,lng:101.56,code:"PG046594"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Khmu, Ou",country:"Laos",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:817e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:102.58,code:"PG020913"},{name:"Han Chinese, Cantonese",country:"Vietnam",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:784e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.03,lng:105.82,code:"PG046444"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Han Chinese, Cantonese",country:"Macao",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:663e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.16,lng:113.56,code:"PG050584"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Han Chinese, Cantonese",country:"Singapore",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:511e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020725"},{name:"Han Chinese, Mandarin",country:"Singapore",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020728"},{name:"Han Chinese",country:"Brazil",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-23.17,lng:-45.54,code:"PG016864"},{name:"Han Chinese, Mandarin",country:"United Arab Emirates",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:202e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.67,lng:55.14,code:"PG049240"},{name:"Han Chinese",country:"United Kingdom",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:196e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:51.5,lng:-.17,code:"PG043796"},{name:"Han Chinese, Mandarin",country:"North Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:184e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:39,lng:125.92,code:"PG007584"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Han Chinese",country:"France",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:172e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:48.2,lng:2.3,code:"PG023131"},{name:"Han Chinese, Mandarin",country:"Hong Kong",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:163e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050605"},{name:"Han Chinese, Cantonese",country:"Peru",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:117e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-12.05,lng:-77.02,code:"PG017533"},{name:"Han Chinese, Mandarin",country:"Saudi Arabia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.68,lng:46.74,code:"PG049246"},{name:"Han Chinese",country:"Tanzania",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:106e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-6.83,lng:39.25,code:"PG014935"},{name:"Han Chinese",country:"Italy",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:44.22,lng:10.5,code:"PG000330"},{name:"Han Chinese",country:"South Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:94500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.58,lng:127.64,code:"PG007589"},{name:"Han Chinese, Mandarin",country:"Tajikistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.57,lng:68.77,code:"PG049245"},{name:"Han Chinese",country:"Madagascar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:78500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-18.91,lng:47.53,code:"PG015301"},{name:"Han Chinese",country:"Panama",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:8.5,lng:-82.42,code:"PG024831"},{name:"Han Chinese, Mandarin",country:"Egypt",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:30.05,lng:31.32,code:"PG050167"},{name:"Han Chinese, Mandarin",country:"Russian Federation",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:62e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.07,lng:119.29,code:"PG048686"},{name:"Han Chinese",country:"Pakistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:6e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:31.52,lng:74.34,code:"PG006354"},{name:"Han Chinese",country:"Argentina",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:52500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-34.65,lng:-58.56,code:"PG042923"},{name:"Han Chinese",country:"Germany",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.84,lng:11.14,code:"PG023132"},{name:"Korean",country:"Brazil",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:48500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-23.57,lng:-46.57,code:"PG016974"},{name:"Korean",country:"Germany",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.12,lng:8.67,code:"PG000249"},{name:"Han Chinese",country:"Trinidad and Tobago",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:44500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.68,lng:-61.38,code:"PG016447"},{name:"Han Chinese",country:"Cuba",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:23.07,lng:-82.32,code:"PG016302"},{name:"Iu Mien",country:"United States",lang:"Iu Mien",rol3:"ium",pct_christian:7.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.75,lng:-111.78,code:"PG043283"},{name:"Han Chinese",country:"Zambia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:-15.4,lng:28.31,code:"PG015577"},{name:"Han Chinese",country:"Laos",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:17.97,lng:102.64,code:"PG009111"},{name:"Han Chinese",country:"Netherlands",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:52.33,lng:4.86,code:"PG023133"},{name:"Han Chinese, Cantonese",country:"Venezuela",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.48,lng:-66.88,code:"PG016472"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Han Chinese",country:"Greece",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.01,lng:23.77,code:"PG048769"},{name:"Han Chinese, Mandarin",country:"Venezuela",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.48,lng:-66.88,code:"PG016471"},{name:"Han Chinese",country:"Mexico",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:20.65,lng:-101.28,code:"PG024949"},{name:"Han Chinese",country:"Portugal",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:38.77,lng:-9.25,code:"PG000483"},{name:"Han Chinese, Mandarin",country:"Belgium",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.85,lng:4.38,code:"PG000057"},{name:"Han Chinese",country:"Mozambique",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:21e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:-25.92,lng:32.59,code:"PG015380"},{name:"Korean",country:"Kyrgyzstan",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:19500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:42.88,lng:74.63,code:"PG024358"},{name:"Korean",country:"Iran",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:17500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.7,lng:51.38,code:"PG024174"},{name:"Han Chinese, Mandarin",country:"Hungary",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:47.48,lng:19.11,code:"PG042235"}]},Japan:{target_upg:32,target_pop:120582800,target_top_langs:["Japanese","Okinawan, Central","Japanese Sign Language","Burmese"],target_top_religion:"Buddhism",neighbors:[{name:"Nikkei, Brazilian",country:"Japan",lang:"Japanese",rol3:"jpn",pct_christian:12.5,pop:104e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:35.13,lng:136.92,code:"PG049262"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Miyako-Irabu",country:"Japan",lang:"Japanese",rol3:"jpn",pct_christian:3.5,pop:65500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:24.77,lng:125.33,code:"PG047515"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Indian - Christian",country:"South Africa",lang:"English",rol3:"eng",pct_christian:62.5,pop:31e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-29.84,lng:30.93,code:"PG048045"},{name:"Euronesian",country:"Samoa",lang:"English",rol3:"eng",pct_christian:62.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.85,lng:-171.8,code:"PG018323"},{name:"British",country:"Tanzania",lang:"English",rol3:"eng",pct_christian:62.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-6.83,lng:39.25,code:"PG014914"},{name:"British",country:"Zimbabwe",lang:"English",rol3:"eng",pct_christian:62.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-17.83,lng:31.03,code:"PG015650"},{name:"Dominican",country:"Dominican Republic",lang:"Spanish",rol3:"spa",pct_christian:45,pop:109e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.9,lng:-70.49,code:"PG016313"},{name:"American",country:"Singapore",lang:"English",rol3:"eng",pct_christian:45,pop:9800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.36,lng:103.82,code:"PG018447"},{name:"British",country:"Barbados",lang:"English",rol3:"eng",pct_christian:45,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:13.12,lng:-59.6,code:"PG016197"},{name:"British",country:"Venezuela",lang:"English",rol3:"eng",pct_christian:45,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:10.48,lng:-66.88,code:"PG016461"},{name:"British",country:"Botswana",lang:"English",rol3:"eng",pct_christian:45,pop:7100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-24.65,lng:25.91,code:"PG015217"},{name:"Pitcairn Islander",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:45,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018502"},{name:"American",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:95500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.52,lng:142.46,code:"PG020268"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Caribbean Hindi",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:4.91,lng:-52.3,code:"PG022284"},{name:"Southwest Aborigine Creol",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-32.54,lng:115.99,code:"PG008068"},{name:"Anglo-Australian",country:"Singapore",lang:"English",rol3:"eng",pct_christian:35,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:1.36,lng:103.82,code:"PG010684"},{name:"American",country:"Iceland",lang:"English",rol3:"eng",pct_christian:35,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.14,lng:-21.89,code:"PG000293"},{name:"American",country:"Marshall Islands",lang:"English",rol3:"eng",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:7.1,lng:171.22,code:"PG009376"},{name:"Itene",country:"Bolivia",lang:"Spanish",rol3:"spa",pct_christian:35,pop:70,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-11.89,lng:-65.09,code:"PG046959"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Guatemalan",country:"Guatemala",lang:"Spanish",rol3:"spa",pct_christian:25,pop:1015e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.7,lng:-90.36,code:"PG024712"},{name:"El Salvadoran",country:"El Salvador",lang:"Spanish",rol3:"spa",pct_christian:25,pop:61e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.73,lng:-88.87,code:"PG024979"},{name:"Detribalized Aborigine",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:58e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG007863"},{name:"Jamaican",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:33e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047381"},{name:"Barbadian",country:"Barbados",lang:"English",rol3:"eng",pct_christian:25,pop:269e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.17,lng:-59.56,code:"PG016195"},{name:"American",country:"Panama",lang:"English",rol3:"eng",pct_christian:25,pop:186e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.06,lng:-79.38,code:"PG050309"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Barbadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047394"},{name:"Korean",country:"Argentina",lang:"Korean",rol3:"kor",pct_christian:25,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG046918"},{name:"Guatemalan",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:25,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047378"},{name:"Korean",country:"Singapore",lang:"Korean",rol3:"kor",pct_christian:25,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:1.36,lng:103.82,code:"PG010710"},{name:"Bay Islands Creole",country:"Honduras",lang:"English",rol3:"eng",pct_christian:25,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.34,lng:-86.39,code:"PG024758"},{name:"American",country:"Virgin Islands",lang:"English",rol3:"eng",pct_christian:25,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.96,lng:-64.8,code:"PG050296"},{name:"American",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:25,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018513"},{name:"American",country:"Guam",lang:"English",rol3:"eng",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.44,lng:144.78,code:"PG050299"},{name:"Korean",country:"Taiwan",lang:"Korean",rol3:"kor",pct_christian:25,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.63,lng:120.33,code:"PG007526"},{name:"Mixtec, Southeastern Nochixtlan",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.21,lng:-97.09,code:"PG039145"},{name:"American",country:"Fiji",lang:"English",rol3:"eng",pct_christian:25,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-18.13,lng:178.44,code:"PG018421"},{name:"American",country:"Greenland",lang:"English",rol3:"eng",pct_christian:25,pop:3400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.18,lng:-51.7,code:"PG000286"},{name:"Itza",country:"Guatemala",lang:"Spanish",rol3:"spa",pct_christian:25,pop:3200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:17,lng:-89.88,code:"PG024726"},{name:"Zapotec, Southeastern Ixtlan",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:2900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.23,lng:-96.49,code:"PG039219"},{name:"Maori",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050518"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Wik-Ngathan",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.84,lng:141.57,code:"PG008118"},{name:"Polynesian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050519"},{name:"Korean",country:"Northern Mariana Islands",lang:"Korean",rol3:"kor",pct_christian:25,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:15.91,lng:145.61,code:"PG050228"},{name:"Tektiteko",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.49,lng:-92.13,code:"PG039080"},{name:"Yankuntatjara",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-27.14,lng:133.83,code:"PG008134"},{name:"Bora",country:"Peru",lang:"Spanish",rol3:"spa",pct_christian:25,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-3.22,lng:-71.98,code:"PG017505"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"Mocho",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:225,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.27,lng:-92.35,code:"PG039159"},{name:"Mixtec, Sindihui",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:80,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.01,lng:-97.37,code:"PG039143"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Honduran",country:"Honduras",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:9865e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:14.82,lng:-86.62,code:"PG042459"},{name:"Panamanian",country:"Panama",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:2945e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.12,lng:-79.12,code:"PG024843"},{name:"Korean",country:"Australia",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:167e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-33.85,lng:151.03,code:"PG021625"},{name:"Korean",country:"Canada",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:46.93,lng:-92.67,code:"PG043424"},{name:"Salvadoran",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:70500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047373"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Bermudians",country:"Bermuda",lang:"English",rol3:"eng",pct_christian:17.5,pop:66e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.31,lng:-64.77,code:"PG016210"},{name:"Caymanian",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:17.5,pop:60500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:19.42,lng:-80.89,code:"PG016216"},{name:"Korean",country:"United Kingdom",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.5,lng:-.17,code:"PG000650"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Korean",country:"New Zealand",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-36.89,lng:174.78,code:"PG047592"},{name:"Kenyan",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:43.83,lng:-79.46,code:"PG047469"},{name:"American",country:"Haiti",lang:"English",rol3:"eng",pct_christian:17.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.55,lng:-72.32,code:"PG016382"},{name:"Mam",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:17500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.4,lng:-92.35,code:"PG039078"},{name:"Ghanaian",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:49.22,lng:-122.99,code:"PG047407"},{name:"Nicaraguan",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047377"},{name:"Honduran",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047379"},{name:"Kanjobal",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.63,lng:-89.7,code:"PG039087"},{name:"Korean",country:"Hong Kong",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.38,lng:114.13,code:"PG050601"},{name:"Korean",country:"Paraguay",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.3,lng:-57.56,code:"PG017246"},{name:"Zoque, Chimalapa",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:6400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.88,lng:-94.4,code:"PG039236"},{name:"Panamanian",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047376"},{name:"Zapotec, Southern Rincon",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.35,lng:-96.27,code:"PG039223"},{name:"Korean",country:"Guam",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.44,lng:144.78,code:"PG050301"},{name:"Passamaquoddy",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.36,lng:-67.46,code:"PG043437"},{name:"Tlingit",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:60.48,lng:-132.29,code:"PG043489"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Zapotec, San Baltazar Loxicha",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.05,lng:-96.76,code:"PG039195"},{name:"Huave, San Francisco del Mar",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.24,lng:-94.49,code:"PG039082"},{name:"Onondaga",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.05,lng:-80.11,code:"PG043451"},{name:"Korean",country:"Dominican Republic",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:18.48,lng:-69.91,code:"PG022409"},{name:"Popti",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.89,lng:-91.99,code:"PG039086"},{name:"Popoluca, Texistepec",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.78,lng:-94.8,code:"PG048643"},{name:"Zapotec, Southern Rincon",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:32.36,lng:-109.45,code:"PG049308"},{name:"K’ómoks",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-124.96,code:"PG043374"},{name:"Rembarunga",country:"Australia",lang:"English",rol3:"eng",pct_christian:17.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-12.96,lng:134.58,code:"PG008058"},{name:"Korean",country:"South Korea",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:5025e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.38,lng:127.82,code:"PG048088"},{name:"Chilean",country:"Chile",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:1776e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-32.83,lng:-71.15,code:"PG017439"},{name:"Puerto Rican",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:4035e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:35.35,lng:-95.96,code:"PG043603"},{name:"Irish, Northern",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:166e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:54.61,lng:-6.69,code:"PG022219"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Afro-Trinidadian",country:"Trinidad and Tobago",lang:"English",rol3:"eng",pct_christian:12.5,pop:725e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.42,lng:-61.3,code:"PG016442"},{name:"Metis",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:704e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.13,lng:-97.19,code:"PG043455"},{name:"American",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:402e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.97,lng:-107.63,code:"PG043500"},{name:"English Caribbean",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:394e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.73,lng:-90.31,code:"PG049256"},{name:"Han Chinese",country:"Singapore",lang:"English",rol3:"eng",pct_christian:12.5,pop:358e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020724"},{name:"Chiquitano",country:"Bolivia",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:211e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-15.91,lng:-61.84,code:"PG017398"},{name:"Detribalized Amerindian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.64,lng:-115.72,code:"PG043384"},{name:"Colombian",country:"Venezuela",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:189e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.01,lng:-66.66,code:"PG046909"},{name:"Afro-Argentine",country:"Argentina",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:153e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-34.65,lng:-58.56,code:"PG042890"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Sub-Saharan Africans, English-Speaking",country:"Belgium",lang:"English",rol3:"eng",pct_christian:12.5,pop:123e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.85,lng:4.38,code:"PG047833"},{name:"Tojolabal",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:92500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.4,lng:-91.85,code:"PG039160"},{name:"Chontal, Tabasco",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.1,lng:-92.61,code:"PG039061"},{name:"Nahuatl, Isthmus",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:78500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.12,lng:-94.34,code:"PG048653"},{name:"Fijian",country:"Australia",lang:"English",rol3:"eng",pct_christian:12.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG050451"},{name:"Cree, Woodland",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.6,lng:-106.15,code:"PG043378"},{name:"Dominican",country:"Dominica",lang:"English",rol3:"eng",pct_christian:12.5,pop:67e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.43,lng:-61.35,code:"PG016306"},{name:"Chilean",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047386"},{name:"Belizean",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:43500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:33.94,lng:-118.12,code:"PG047184"},{name:"Korean",country:"Mozambique",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.89,lng:32.57,code:"PG015382"},{name:"Welsh",country:"Argentina",lang:"English",rol3:"eng",pct_christian:12.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-43.27,lng:-65.44,code:"PG017376"},{name:"Chilean",country:"Sweden",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:58.15,lng:15.03,code:"PG000547"},{name:"Mixe, Isthmus",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.08,lng:-95.14,code:"PG039098"},{name:"Mohawk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:44.18,lng:-77.77,code:"PG043441"},{name:"Dominican",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047374"},{name:"Barbadian",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.5,lng:-.17,code:"PG048436"},{name:"Chinantec, Central",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.81,lng:-96.26,code:"PG039065"},{name:"Korean",country:"Madagascar",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-18.91,lng:47.53,code:"PG015310"},{name:"Euronesian",country:"Fiji",lang:"English",rol3:"eng",pct_christian:12.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-17.95,lng:178.24,code:"PG018419"},{name:"Spaniard",country:"Ireland",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:53.39,lng:-6.28,code:"PG000303"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"American",country:"Costa Rica",lang:"English",rol3:"eng",pct_christian:12.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:10.22,lng:-85.24,code:"PG025025"},{name:"Popoluca, Sayula",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.73,lng:-94.95,code:"PG048641"},{name:"Mixe, Coatlan",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:9100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.79,lng:-95.6,code:"PG039097"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Nahuatl, Isthmus",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:31.63,lng:-89.16,code:"PG049280"},{name:"Tsimshian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.42,lng:-130.3,code:"PG043490"},{name:"Lillooet",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.68,lng:-121.92,code:"PG043432"},{name:"Zapotec, Guevea de Humboldt",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.73,lng:-95.33,code:"PG039189"},{name:"Latin American",country:"Curacao",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:12.19,lng:-68.97,code:"PG023181"},{name:"Nakota (Assiniboine)",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:52.17,lng:-107.03,code:"PG043354"},{name:"Kwakwakaʼwakw",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.72,lng:-127.5,code:"PG043427"},{name:"Zapotec, Lachiguiri",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:5900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.61,lng:-95.5,code:"PG039196"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Dakota",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:5500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.52,lng:-102.88,code:"PG043381"},{name:"American",country:"Micronesia",lang:"English",rol3:"eng",pct_christian:12.5,pop:5400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.95,lng:158.2,code:"PG018394"},{name:"Straits Salish",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.49,lng:-123.46,code:"PG043479"},{name:"Bahamian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.9,lng:-79.58,code:"PG050486"},{name:"Chuj",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.06,lng:-91.88,code:"PG039062"},{name:"Zapotec, Xanaguia",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.1,lng:-96.24,code:"PG039207"}]},Iran:{target_upg:85,target_pop:91827910,target_top_langs:["Persian, Iranian","Azerbaijani, South","Kurdish, Southern","Gilaki"],target_top_religion:"Islam",neighbors:[{name:"Korean",country:"Iran",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:17500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:35.7,lng:51.38,code:"PG024174"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Romani, Balkan",country:"Italy",lang:"Romani, Balkan",rol3:"rmn",pct_christian:62.5,pop:2500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:45.54,lng:9.19,code:"PG000312"},{name:"Romani, Balkan",country:"Bulgaria",lang:"Romani, Balkan",rol3:"rmn",pct_christian:7.5,pop:267e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:42.86,lng:23.79,code:"PG000737"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Romani, Balkan",country:"France",lang:"Romani, Balkan",rol3:"rmn",pct_christian:3.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.84,lng:2.35,code:"PG000134"}]},"Türkiye (Turkey)":{target_upg:63,target_pop:86815200,target_top_langs:["Turkish","Kurdish, Northern","Arabic, Levantine","Zazaki, Southern"],target_top_religion:"Islam",neighbors:[{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Han Chinese",country:"Turkiye",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:44500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.04,lng:28.87,code:"PG024558"},{name:"Romani, Balkan",country:"Italy",lang:"Romani, Balkan",rol3:"rmn",pct_christian:62.5,pop:2500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:45.54,lng:9.19,code:"PG000312"},{name:"Romani, Balkan",country:"Bulgaria",lang:"Romani, Balkan",rol3:"rmn",pct_christian:7.5,pop:267e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:42.86,lng:23.79,code:"PG000737"},{name:"Armenian",country:"Canada",lang:"Armenian, Western",rol3:"hyw",pct_christian:7.5,pop:71e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.83,lng:-77.31,code:"PG043353"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Greek",country:"Czech Republic",lang:"Greek",rol3:"ell",pct_christian:7.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.82,lng:17.98,code:"PG048862"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"},{name:"Romani, Balkan",country:"France",lang:"Romani, Balkan",rol3:"rmn",pct_christian:3.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.84,lng:2.35,code:"PG000134"}]},Egypt:{target_upg:34,target_pop:82788900,target_top_langs:["Arabic, Egyptian","Arabic, Sudanese","Arabic, Algerian","Arabic, Moroccan"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Egypt",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:30.05,lng:31.32,code:"PG050167"},{name:"Amhara",country:"Canada",lang:"Amharic",rol3:"amh",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG047403"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Ethiopian, Oromo",country:"United States",lang:"Oromo, West Central",rol3:"gaz",pct_christian:3.5,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.9,lng:-77.19,code:"PG047338"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},Nigeria:{target_upg:52,target_pop:72422800,target_top_langs:["Hausa","Fulfulde, Nigerian","Kanuri, Yerwa","Fulfulde, Adamawa"],target_top_religion:"Islam",neighbors:[{name:"Rumaya",country:"Nigeria",lang:"Mala (Nigeria)",rol3:"ruy",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.42,lng:8.67,code:"PG014094"},{name:"Janji",country:"Nigeria",lang:"Janji",rol3:"jni",pct_christian:62.5,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.12,lng:8.62,code:"PG013870"},{name:"Kagoma",country:"Nigeria",lang:"Gyong",rol3:"kdm",pct_christian:45,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.26,lng:8.19,code:"PG013889"},{name:"Kaivi",country:"Nigeria",lang:"Kaivi",rol3:"kce",pct_christian:45,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.41,lng:8.67,code:"PG013891"},{name:"Sura",country:"Nigeria",lang:"Mwaghavul",rol3:"sur",pct_christian:35,pop:19e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.55,lng:9.02,code:"PG014115"},{name:"Dadiya",country:"Nigeria",lang:"Dadiya",rol3:"dbd",pct_christian:35,pop:66500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.64,lng:11.44,code:"PG013294"},{name:"Bajju",country:"Nigeria",lang:"Jju",rol3:"kaj",pct_christian:25,pop:685e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.68,lng:8.07,code:"PG013892"},{name:"Okpe",country:"Nigeria",lang:"Okpe (Southwestern Edoid)",rol3:"oke",pct_christian:25,pop:465e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.78,lng:5.57,code:"PG014065"},{name:"Wukari Jukun",country:"Nigeria",lang:"Wapan",rol3:"juk",pct_christian:25,pop:222e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.32,lng:9.7,code:"PG014174"},{name:"Aten",country:"Nigeria",lang:"Iten",rol3:"etx",pct_christian:25,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.65,lng:8.57,code:"PG013646"},{name:"Gure-Kahugu",country:"Nigeria",lang:"Tugbiri-Niragu",rol3:"grh",pct_christian:25,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.31,lng:8.42,code:"PG013815"},{name:"Kagoro",country:"Nigeria",lang:"Tyap",rol3:"kcg",pct_christian:25,pop:38e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.59,lng:8.26,code:"PG013890"},{name:"Awak",country:"Nigeria",lang:"Awak",rol3:"awo",pct_christian:25,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.92,lng:11.4,code:"PG013649"},{name:"Binawa",country:"Nigeria",lang:"Bina (Nigeria)",rol3:"byj",pct_christian:25,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.29,lng:8.26,code:"PG013689"},{name:"Naraguta",country:"Nigeria",lang:"Iguta",rol3:"nar",pct_christian:25,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.99,lng:8.85,code:"PG014012"},{name:"Karim-Maudi",country:"Nigeria",lang:"Karimjo",rol3:"cfg",pct_christian:25,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.86,lng:10.82,code:"PG023179"},{name:"Kono",country:"Nigeria",lang:"Kono (Nigeria)",rol3:"klk",pct_christian:25,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.23,lng:8.4,code:"PG013929"},{name:"Lakka",country:"Nigeria",lang:"Kabba",rol3:"ksp",pct_christian:25,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:9.15,lng:11.25,code:"PG013956"},{name:"Burak",country:"Nigeria",lang:"Burak",rol3:"bys",pct_christian:25,pop:8800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.74,lng:11.28,code:"PG013704"},{name:"Kholok",country:"Nigeria",lang:"Kholok",rol3:"ktc",pct_christian:25,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:9.3,lng:11.13,code:"PG014377"},{name:"Mingang Doso",country:"Nigeria",lang:"Mingang Doso",rol3:"mko",pct_christian:25,pop:6200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.4,lng:11.26,code:"PG014411"},{name:"Katab",country:"Nigeria",lang:"Tyap",rol3:"kcg",pct_christian:17.5,pop:287e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.82,lng:8.31,code:"PG013912"},{name:"Begbere",country:"Nigeria",lang:"Koro Wachi",rol3:"bqv",pct_christian:17.5,pop:171e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.69,lng:7.64,code:"PG013046"},{name:"Ndoro",country:"Nigeria",lang:"Ndoola",rol3:"ndr",pct_christian:17.5,pop:121e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.98,lng:10.78,code:"PG014016"},{name:"Chamba Leko",country:"Nigeria",lang:"Samba Leko",rol3:"ndi",pct_christian:17.5,pop:118e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.83,lng:10.69,code:"PG013720"},{name:"Pero",country:"Nigeria",lang:"Pero",rol3:"pip",pct_christian:17.5,pop:57500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.7,lng:11.17,code:"PG014080"},{name:"Bandawa-Minda",country:"Nigeria",lang:"Shoo-Minda-Nye",rol3:"bcv",pct_christian:17.5,pop:38e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:8.97,lng:10.99,code:"PG013664"},{name:"Etulo",country:"Nigeria",lang:"Etulo",rol3:"utr",pct_christian:17.5,pop:25500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.29,lng:9.32,code:"PG013776"},{name:"Ruruma",country:"Nigeria",lang:"Ruma",rol3:"ruz",pct_christian:17.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.23,lng:8.64,code:"PG014095"},{name:"Gwomu",country:"Nigeria",lang:"Moo",rol3:"gwg",pct_christian:17.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.48,lng:11.3,code:"PG013824"},{name:"Bukwun",country:"Nigeria",lang:"Bukwen",rol3:"buz",pct_christian:17.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.94,lng:10.2,code:"PG013283"},{name:"Berom",country:"Nigeria",lang:"Berom",rol3:"bom",pct_christian:12.5,pop:1485e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.58,lng:8.8,code:"PG013683"},{name:"Tarok",country:"Nigeria",lang:"Tarok",rol3:"yer",pct_christian:12.5,pop:584e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.13,lng:10.1,code:"PG014124"},{name:"Hyam",country:"Nigeria",lang:"Hyam",rol3:"jab",pct_christian:12.5,pop:396e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.54,lng:8.09,code:"PG013833"},{name:"Bachama",country:"Nigeria",lang:"Bacama",rol3:"bcy",pct_christian:12.5,pop:341e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.46,lng:12.08,code:"PG013653"},{name:"Tangale",country:"Nigeria",lang:"Tangale",rol3:"tan",pct_christian:12.5,pop:326e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.81,lng:11.21,code:"PG014122"},{name:"Kambari",country:"Nigeria",lang:"Tsishingini",rol3:"tsw",pct_christian:12.5,pop:318e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.34,lng:5.35,code:"PG013897"},{name:"Marghi Central",country:"Nigeria",lang:"Marghi Central",rol3:"mrt",pct_christian:12.5,pop:279e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.63,lng:13.35,code:"PG013988"},{name:"Kyibaku",country:"Nigeria",lang:"Kibaku",rol3:"ckl",pct_christian:12.5,pop:234e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.98,lng:12.88,code:"PG013953"},{name:"Chamba Daka",country:"Nigeria",lang:"Samba Daka",rol3:"ccg",pct_christian:12.5,pop:186e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:8.62,lng:11.73,code:"PG013719"},{name:"Rukuba",country:"Nigeria",lang:"Kuce",rol3:"ruk",pct_christian:12.5,pop:18e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.18,lng:8.24,code:"PG014093"},{name:"Kuteb",country:"Nigeria",lang:"Kutep",rol3:"kub",pct_christian:12.5,pop:84500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.24,lng:10.06,code:"PG013946"},{name:"Bitare",country:"Nigeria",lang:"Bitare",rol3:"brt",pct_christian:12.5,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.11,lng:10.74,code:"PG013691"},{name:"Glavda",country:"Nigeria",lang:"Glavda",rol3:"glw",pct_christian:12.5,pop:57500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:11.15,lng:13.81,code:"PG013803"},{name:"Kulung",country:"Nigeria",lang:"Kulung (Nigeria)",rol3:"bbu",pct_christian:12.5,pop:56e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.34,lng:11,code:"PG013941"},{name:"Chawai",country:"Nigeria",lang:"Atsam",rol3:"cch",pct_christian:12.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.26,lng:8.29,code:"PG013722"},{name:"Montol",country:"Nigeria",lang:"Tehl",rol3:"mtl",pct_christian:12.5,pop:46500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9,lng:9.64,code:"PG014003"},{name:"Fali",country:"Nigeria",lang:"Fali Muchella",rol3:"fli",pct_christian:12.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.32,lng:13.39,code:"PG013781"},{name:"Passam",country:"Nigeria",lang:"Kpasham",rol3:"pbn",pct_christian:12.5,pop:34500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.27,lng:11.76,code:"PG014079"},{name:"Epinmi",country:"Nigeria",lang:"Ukue",rol3:"uku",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.43,lng:5.78,code:"PG014146"},{name:"Yiwom",country:"Nigeria",lang:"Ywom",rol3:"gek",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:8.91,lng:9.75,code:"PG014192"},{name:"Magu",country:"Nigeria",lang:"Mvanip",rol3:"mcj",pct_christian:12.5,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.95,lng:11.02,code:"PG013979"},{name:"Lelau",country:"Nigeria",lang:"Leelau",rol3:"ldk",pct_christian:12.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.33,lng:11.1,code:"PG013964"},{name:"Kam",country:"Nigeria",lang:"Kam",rol3:"kdx",pct_christian:12.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:8.35,lng:11.06,code:"PG013895"},{name:"Tapshin",country:"Nigeria",lang:"Kusur-Myet",rol3:"tdl",pct_christian:12.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.55,lng:9.64,code:"PG014123"},{name:"Hedi",country:"Nigeria",lang:"Hdi",rol3:"xed",pct_christian:12.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.94,lng:13.69,code:"PG013829"},{name:"Lamja",country:"Nigeria",lang:"Lamja-Dengsa-Tola",rol3:"ldh",pct_christian:12.5,pop:7200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:8.87,lng:12.06,code:"PG013959"},{name:"Kumba",country:"Nigeria",lang:"Kumba",rol3:"ksm",pct_christian:12.5,pop:6900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.05,lng:12.04,code:"PG013943"},{name:"Pai",country:"Nigeria",lang:"Pye",rol3:"pai",pct_christian:12.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.55,lng:9.29,code:"PG014077"},{name:"Cara",country:"Nigeria",lang:"Cara",rol3:"cfd",pct_christian:12.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.09,lng:8.78,code:"PG012312"},{name:"Bali",country:"Nigeria",lang:"Bali (Nigeria)",rol3:"bcn",pct_christian:12.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.29,lng:11.81,code:"PG013660"},{name:"Aduge",country:"Nigeria",lang:"Aduge",rol3:"adu",pct_christian:12.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.61,lng:6.07,code:"PG013624"},{name:"Kapya",country:"Nigeria",lang:"Kapya",rol3:"klo",pct_christian:12.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.05,lng:9.93,code:"PG014375"},{name:"Mangas",country:"Nigeria",lang:"Mansi (Nigeria)",rol3:"zns",pct_christian:12.5,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.16,lng:9.82,code:"PG013986"},{name:"Igbo",country:"Nigeria",lang:"Igbo",rol3:"ibo",pct_christian:7.5,pop:3486e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.82,lng:7.31,code:"PG013844"},{name:"Ibibio",country:"Nigeria",lang:"Ibibio",rol3:"ibb",pct_christian:7.5,pop:697e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.13,lng:7.76,code:"PG013837"},{name:"Egba",country:"Nigeria",lang:"Yoruba",rol3:"yor",pct_christian:7.5,pop:6085e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:6.98,lng:3.48,code:"PG013759"},{name:"Tiv",country:"Nigeria",lang:"Tiv",rol3:"tiv",pct_christian:7.5,pop:52e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.58,lng:8.92,code:"PG014132"},{name:"Efik",country:"Nigeria",lang:"Efik",rol3:"efi",pct_christian:7.5,pop:289e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.26,lng:8.32,code:"PG013757"},{name:"Egbira",country:"Nigeria",lang:"Ebira",rol3:"igb",pct_christian:7.5,pop:2365e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8,lng:7.12,code:"PG013314"},{name:"Urhobo",country:"Nigeria",lang:"Urhobo",rol3:"urh",pct_christian:7.5,pop:1245e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.78,lng:5.78,code:"PG014152"},{name:"Isekiri",country:"Nigeria",lang:"Isekiri",rol3:"its",pct_christian:7.5,pop:1075e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.23,lng:5.42,code:"PG013858"},{name:"Ezaa",country:"Nigeria",lang:"Ezaa",rol3:"eza",pct_christian:7.5,pop:829e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.42,lng:7.87,code:"PG013780"},{name:"Kerang",country:"Nigeria",lang:"Ngas",rol3:"anc",pct_christian:7.5,pop:772e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.27,lng:9.56,code:"PG013642"},{name:"Isoko",country:"Nigeria",lang:"Isoko",rol3:"iso",pct_christian:7.5,pop:765e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.66,lng:6.09,code:"PG013859"},{name:"Ewe",country:"Nigeria",lang:"Éwé",rol3:"ewe",pct_christian:7.5,pop:696e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.76,lng:3.42,code:"PG013779"},{name:"Kamwe",country:"Nigeria",lang:"Kamwe",rol3:"hig",pct_christian:7.5,pop:683e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.57,lng:13.41,code:"PG013901"},{name:"Kalabari",country:"Nigeria",lang:"Kalabari",rol3:"ijn",pct_christian:7.5,pop:579e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.57,lng:6.83,code:"PG013754"},{name:"Yekhee",country:"Nigeria",lang:"Etsako",rol3:"ets",pct_christian:7.5,pop:574e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.2,lng:6.48,code:"PG014187"},{name:"Okrika",country:"Nigeria",lang:"Kirike",rol3:"okr",pct_christian:7.5,pop:52e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.69,lng:7.08,code:"PG014067"},{name:"Kana",country:"Nigeria",lang:"Khana",rol3:"ogo",pct_christian:7.5,pop:488e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.7,lng:7.47,code:"PG013902"},{name:"Ogbia",country:"Nigeria",lang:"Ogbia",rol3:"ogb",pct_christian:7.5,pop:45e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.81,lng:6.38,code:"PG014056"},{name:"Saya",country:"Nigeria",lang:"Saya",rol3:"say",pct_christian:7.5,pop:41e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.84,lng:9.64,code:"PG014099"},{name:"Ikwo",country:"Nigeria",lang:"Ikwo",rol3:"iqw",pct_christian:7.5,pop:366e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.99,lng:8.25,code:"PG013856"},{name:"Ukwuani-Aboh",country:"Nigeria",lang:"Ukwuani-Aboh-Ndoni",rol3:"ukw",pct_christian:7.5,pop:354e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.62,lng:6.57,code:"PG014147"},{name:"Bokyi",country:"Nigeria",lang:"Bokyi",rol3:"bky",pct_christian:7.5,pop:31e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.26,lng:8.99,code:"PG013695"},{name:"Yala",country:"Nigeria",lang:"Yala",rol3:"yba",pct_christian:7.5,pop:31e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.36,lng:8.5,code:"PG014182"},{name:"Mo Egon",country:"Nigeria",lang:"Eggon",rol3:"ego",pct_christian:7.5,pop:305e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.74,lng:8.46,code:"PG013760"},{name:"Bokkos",country:"Nigeria",lang:"Ron",rol3:"cla",pct_christian:7.5,pop:287e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.29,lng:8.98,code:"PG013693"},{name:"Yako",country:"Nigeria",lang:"Lokaa",rol3:"yaz",pct_christian:7.5,pop:273e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.9,lng:8.13,code:"PG014181"},{name:"Southeast Ijaw",country:"Nigeria",lang:"Ijo, Southeast",rol3:"ijs",pct_christian:7.5,pop:232e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.59,lng:6.21,code:"PG014113"},{name:"Mada",country:"Nigeria",lang:"Mada (Nigeria)",rol3:"mda",pct_christian:7.5,pop:223e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.01,lng:8.31,code:"PG014403"},{name:"Gokana",country:"Nigeria",lang:"Gokana",rol3:"gkn",pct_christian:7.5,pop:195e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.65,lng:7.29,code:"PG013806"},{name:"Lela",country:"Nigeria",lang:"C’Lela",rol3:"dri",pct_christian:7.5,pop:195e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:11.46,lng:5.28,code:"PG013963"},{name:"Adara",country:"Nigeria",lang:"Adara",rol3:"kad",pct_christian:7.5,pop:149e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.83,lng:7.41,code:"PG013886"},{name:"Obanliku",country:"Nigeria",lang:"Abanglekuo",rol3:"bzy",pct_christian:7.5,pop:141e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.57,lng:9.23,code:"PG014050"},{name:"Mbula-Bwazza",country:"Nigeria",lang:"Mbula-Bwazza",rol3:"mbu",pct_christian:7.5,pop:14e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.59,lng:12.36,code:"PG013994"},{name:"Dza",country:"Nigeria",lang:"Dza",rol3:"jen",pct_christian:7.5,pop:133e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.95,lng:10.93,code:"PG013311"},{name:"Yandang",country:"Nigeria",lang:"Yendang",rol3:"ynq",pct_christian:7.5,pop:127e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:8.95,lng:11.81,code:"PG014184"},{name:"Nungu",country:"Nigeria",lang:"Nungu",rol3:"rin",pct_christian:7.5,pop:108e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.18,lng:8.5,code:"PG014043"},{name:"Amo",country:"Nigeria",lang:"Amo",rol3:"amo",pct_christian:7.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.23,lng:8.64,code:"PG013640"},{name:"Irigwe",country:"Nigeria",lang:"Rigwe",rol3:"iri",pct_christian:7.5,pop:96e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.88,lng:8.83,code:"PG013857"},{name:"Mama",country:"Nigeria",lang:"Mama",rol3:"mma",pct_christian:7.5,pop:72500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9,lng:8.62,code:"PG013982"},{name:"Hwana",country:"Nigeria",lang:"Hwana",rol3:"hwo",pct_christian:7.5,pop:72e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.22,lng:12.67,code:"PG013832"},{name:"Koma",country:"Nigeria",lang:"Koma",rol3:"kmy",pct_christian:7.5,pop:7e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.67,lng:12.43,code:"PG013942"},{name:"Cham-Mwana",country:"Nigeria",lang:"Cham",rol3:"cfa",pct_christian:7.5,pop:55e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.77,lng:11.69,code:"PG013716"},{name:"Tigon Mbembe",country:"Nigeria",lang:"Mbembe, Tigon",rol3:"nza",pct_christian:7.5,pop:52e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.16,lng:10.68,code:"PG014130"},{name:"Mboi",country:"Nigeria",lang:"Mboi",rol3:"moi",pct_christian:7.5,pop:42500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.48,lng:12.67,code:"PG013992"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Etebi",country:"Nigeria",lang:"Etebi",rol3:"etb",pct_christian:7.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.63,lng:8.07,code:"PG013775"},{name:"Sukur",country:"Nigeria",lang:"Sukur",rol3:"syk",pct_christian:7.5,pop:33e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.88,lng:13.64,code:"PG014114"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Nandu-Tari",country:"Nigeria",lang:"Ahwai",rol3:"nfd",pct_christian:7.5,pop:28e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.26,lng:8.56,code:"PG014011"},{name:"Sasaru",country:"Nigeria",lang:"Sasaru",rol3:"sxs",pct_christian:7.5,pop:26e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.16,lng:6.17,code:"PG014098"},{name:"Yamba",country:"Nigeria",lang:"Yamba",rol3:"yam",pct_christian:7.5,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.62,lng:11.1,code:"PG014183"},{name:"Otwa",country:"Nigeria",lang:"Ghotuo",rol3:"aaa",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.18,lng:5.98,code:"PG013800"},{name:"Ngwaba",country:"Nigeria",lang:"Ngwaba",rol3:"ngw",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.17,lng:12.85,code:"PG014022"},{name:"Akpet",country:"Nigeria",lang:"Ukpet-Ehom",rol3:"akd",pct_christian:7.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.57,lng:8.17,code:"PG013636"},{name:"Bumaji",country:"Nigeria",lang:"Bumaji",rol3:"byp",pct_christian:7.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.48,lng:9.31,code:"PG013702"},{name:"Lubila",country:"Nigeria",lang:"Lubila",rol3:"kcc",pct_christian:7.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.41,lng:8.29,code:"PG013971"},{name:"Lo",country:"Nigeria",lang:"Loo",rol3:"ldo",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.35,lng:11.11,code:"PG013967"},{name:"Sara Mbai",country:"Nigeria",lang:"Mbay",rol3:"myb",pct_christian:7.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:11.84,lng:13.14,code:"PG014097"},{name:"Shal",country:"Nigeria",lang:"Shall-Zwall",rol3:"sha",pct_christian:7.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.26,lng:8.75,code:"PG014103"},{name:"Korop",country:"Nigeria",lang:"Durop",rol3:"krp",pct_christian:7.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.25,lng:8.66,code:"PG013931"},{name:"Kwa",country:"Nigeria",lang:"Kwa",rol3:"kwb",pct_christian:7.5,pop:15e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.5,lng:11.62,code:"PG013949"},{name:"Banwinji",country:"Nigeria",lang:"Bangwinji",rol3:"bsj",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.64,lng:11.33,code:"PG013667"},{name:"Ito",country:"Nigeria",lang:"Ito",rol3:"itw",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.06,lng:8,code:"PG013860"},{name:"Ebughu",country:"Nigeria",lang:"Ebughu",rol3:"ebg",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.68,lng:8.25,code:"PG013755"},{name:"Itu Mbon Uzo",country:"Nigeria",lang:"Itu Mbon Uzo",rol3:"itm",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.5,lng:7.81,code:"PG013861"},{name:"Idere",country:"Nigeria",lang:"Idere",rol3:"ide",pct_christian:7.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.22,lng:8.04,code:"PG013839"},{name:"Kyak",country:"Nigeria",lang:"Kyak",rol3:"bka",pct_christian:7.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.53,lng:11.35,code:"PG014393"},{name:"Arum-Chessu",country:"Nigeria",lang:"Arum",rol3:"aab",pct_christian:7.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.97,lng:8.7,code:"PG013643"},{name:"Ilue",country:"Nigeria",lang:"Ilue",rol3:"ilv",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.78,lng:8.25,code:"PG033351"},{name:"Mboa",country:"Nigeria",lang:"Mbonga",rol3:"xmb",pct_christian:7.5,pop:9900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:11.15,lng:13.75,code:"PG013993"},{name:"Turkwam",country:"Nigeria",lang:"Atoro",rol3:"tdv",pct_christian:7.5,pop:8e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.17,lng:8.65,code:"PG014136"},{name:"Duguza",country:"Nigeria",lang:"Tunzuii",rol3:"dza",pct_christian:7.5,pop:7400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.03,lng:9.12,code:"PG013308"},{name:"Idon",country:"Nigeria",lang:"Ajiya",rol3:"idc",pct_christian:7.5,pop:7300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.17,lng:7.87,code:"PG013841"},{name:"Kugama",country:"Nigeria",lang:"Kugama",rol3:"kow",pct_christian:7.5,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.14,lng:12.06,code:"PG013937"},{name:"Lam-nso",country:"Nigeria",lang:"Lamnso'",rol3:"lns",pct_christian:7.5,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.61,lng:11.16,code:"PG014395"},{name:"Bete",country:"Nigeria",lang:"Jukun Takum",rol3:"jbu",pct_christian:7.5,pop:6900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.02,lng:9.75,code:"PG013684"},{name:"Obulom",country:"Nigeria",lang:"Obulom",rol3:"obu",pct_christian:7.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.79,lng:7.05,code:"PG014052"},{name:"Teme",country:"Nigeria",lang:"Teme",rol3:"tdo",pct_christian:7.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:8.99,lng:11.97,code:"PG014126"},{name:"Mini",country:"Nigeria",lang:"Abureni",rol3:"mgj",pct_christian:7.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.61,lng:6.45,code:"PG013999"},{name:"Gyanzi",country:"Nigeria",lang:"Gyaazi",rol3:"gyz",pct_christian:7.5,pop:5900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.35,lng:9.62,code:"PG013826"},{name:"Bakpinka",country:"Nigeria",lang:"Iyongiyong",rol3:"bbs",pct_christian:7.5,pop:5400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.25,lng:8.27,code:"PG013658"},{name:"Firan",country:"Nigeria",lang:"Firan",rol3:"fir",pct_christian:7.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.6,lng:8.72,code:"PG013321"},{name:"Surubu",country:"Nigeria",lang:"Vori",rol3:"sde",pct_christian:7.5,pop:3800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.17,lng:8.32,code:"PG014116"},{name:"Zeem",country:"Nigeria",lang:"Zeem",rol3:"zem",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.95,lng:9.29,code:"PG014204"},{name:"Ambo",country:"Nigeria",lang:"Ambo",rol3:"amb",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.08,lng:10.77,code:"PG014310"},{name:"Tala",country:"Nigeria",lang:"Tala",rol3:"tak",pct_christian:7.5,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.23,lng:9.86,code:"PG014119"}]},Thailand:{target_upg:76,target_pop:61274800,target_top_langs:["Thai","Thai, Northeastern","Thai, Northern","Thai, Southern"],target_top_religion:"Buddhism",neighbors:[{name:"Lahu",country:"Thailand",lang:"Lahu",rol3:"lhu",pct_christian:35,pop:82e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.46,lng:99.05,code:"PG010877"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Sgaw Karen",country:"Thailand",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:25,pop:204e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:17.09,lng:98.79,code:"PG010917"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Red Karen",country:"Thailand",lang:"Kayah, Eastern",rol3:"eky",pct_christian:25,pop:11e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.47,lng:97.98,code:"PG010911"},{name:"Akha",country:"Thailand",lang:"Akha",rol3:"ahk",pct_christian:17.5,pop:58e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:20.08,lng:99.66,code:"PG010820"},{name:"Lahu Shi",country:"Thailand",lang:"Lahu Shi",rol3:"lhi",pct_christian:17.5,pop:15500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.98,lng:99.39,code:"PG010939"},{name:"Padaung Karen",country:"Thailand",lang:"Kayan (Myanmar)",rol3:"pdu",pct_christian:17.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.79,lng:98.99,code:"PG010902"},{name:"Bghai Karen",country:"Thailand",lang:"Karen, Bwe",rol3:"bwe",pct_christian:17.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.53,lng:97.93,code:"PG010827"},{name:"Black Karen",country:"Thailand",lang:"Pa’o",rol3:"blk",pct_christian:17.5,pop:850,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.74,lng:98.06,code:"PG010829"},{name:"Flowery/Southern Lisu",country:"Thailand",lang:"Lisu",rol3:"lis",pct_christian:12.5,pop:42e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.96,lng:98.82,code:"PG010847"},{name:"Western Lawa",country:"Thailand",lang:"Lawa, Western",rol3:"lcp",pct_christian:12.5,pop:8600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.36,lng:98.06,code:"PG010935"},{name:"Karen, Pwo Northern",country:"Thailand",lang:"Karen, Pwo Northern",rol3:"pww",pct_christian:7.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.22,lng:98.03,code:"PG010936"},{name:"Kensiu",country:"Thailand",lang:"Kensiu",rol3:"kns",pct_christian:7.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.02,lng:101.16,code:"PG010869"},{name:"Han Chinese",country:"Thailand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:5785e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:14.64,lng:101.07,code:"PG010849"},{name:"So",country:"Thailand",lang:"So (Laos)",rol3:"sss",pct_christian:3.5,pop:105e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Folk",lat:17.39,lng:104.05,code:"PG010920"},{name:"Mien",country:"Thailand",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:46500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:19.13,lng:100.45,code:"PG010890"},{name:"Tamil",country:"Thailand",lang:"Tamil",rol3:"tam",pct_christian:3.5,pop:35e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:13.76,lng:100.56,code:"PG010925"},{name:"Black Tai",country:"Thailand",lang:"Tai Dam",rol3:"blt",pct_christian:3.5,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.92,lng:99.84,code:"PG010830"},{name:"Western Bru",country:"Thailand",lang:"Bru, Western",rol3:"brv",pct_christian:3.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:17.21,lng:104.15,code:"PG010934"},{name:"Yoy",country:"Thailand",lang:"Yoy",rol3:"yoy",pct_christian:3.5,pop:6300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:17.71,lng:104.01,code:"PG010940"},{name:"Urak Lawoi Aborigine",country:"Thailand",lang:"Urak Lawoi’",rol3:"urk",pct_christian:3.5,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.44,lng:99.09,code:"PG010931"},{name:"Tonga",country:"Thailand",lang:"Ten’edn",rol3:"tnz",pct_christian:3.5,pop:200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.03,lng:101.16,code:"PG010894"},{name:"Khamet",country:"Thailand",lang:"Rmeet",rol3:"lbn",pct_christian:3.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.92,lng:99.84,code:"PG010870"},{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Indian - Christian",country:"South Africa",lang:"English",rol3:"eng",pct_christian:62.5,pop:31e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-29.84,lng:30.93,code:"PG048045"},{name:"Euronesian",country:"Samoa",lang:"English",rol3:"eng",pct_christian:62.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.85,lng:-171.8,code:"PG018323"},{name:"British",country:"Tanzania",lang:"English",rol3:"eng",pct_christian:62.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-6.83,lng:39.25,code:"PG014914"},{name:"British",country:"Zimbabwe",lang:"English",rol3:"eng",pct_christian:62.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-17.83,lng:31.03,code:"PG015650"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"American",country:"Singapore",lang:"English",rol3:"eng",pct_christian:45,pop:9800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.36,lng:103.82,code:"PG018447"},{name:"British",country:"Barbados",lang:"English",rol3:"eng",pct_christian:45,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:13.12,lng:-59.6,code:"PG016197"},{name:"British",country:"Venezuela",lang:"English",rol3:"eng",pct_christian:45,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:10.48,lng:-66.88,code:"PG016461"},{name:"British",country:"Botswana",lang:"English",rol3:"eng",pct_christian:45,pop:7100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-24.65,lng:25.91,code:"PG015217"},{name:"Pitcairn Islander",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:45,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018502"},{name:"American",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:95500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.52,lng:142.46,code:"PG020268"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Caribbean Hindi",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:4.91,lng:-52.3,code:"PG022284"},{name:"Southwest Aborigine Creol",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-32.54,lng:115.99,code:"PG008068"},{name:"Anglo-Australian",country:"Singapore",lang:"English",rol3:"eng",pct_christian:35,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:1.36,lng:103.82,code:"PG010684"},{name:"American",country:"Iceland",lang:"English",rol3:"eng",pct_christian:35,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.14,lng:-21.89,code:"PG000293"},{name:"American",country:"Marshall Islands",lang:"English",rol3:"eng",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:7.1,lng:171.22,code:"PG009376"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Detribalized Aborigine",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:58e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG007863"},{name:"Jamaican",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:33e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047381"},{name:"Barbadian",country:"Barbados",lang:"English",rol3:"eng",pct_christian:25,pop:269e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.17,lng:-59.56,code:"PG016195"},{name:"American",country:"Panama",lang:"English",rol3:"eng",pct_christian:25,pop:186e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.06,lng:-79.38,code:"PG050309"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Barbadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047394"},{name:"Bay Islands Creole",country:"Honduras",lang:"English",rol3:"eng",pct_christian:25,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.34,lng:-86.39,code:"PG024758"},{name:"American",country:"Virgin Islands",lang:"English",rol3:"eng",pct_christian:25,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.96,lng:-64.8,code:"PG050296"},{name:"American",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:25,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018513"},{name:"American",country:"Guam",lang:"English",rol3:"eng",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.44,lng:144.78,code:"PG050299"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"American",country:"Fiji",lang:"English",rol3:"eng",pct_christian:25,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-18.13,lng:178.44,code:"PG018421"},{name:"American",country:"Greenland",lang:"English",rol3:"eng",pct_christian:25,pop:3400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.18,lng:-51.7,code:"PG000286"},{name:"Maori",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050518"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Wik-Ngathan",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.84,lng:141.57,code:"PG008118"},{name:"Polynesian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050519"},{name:"Yankuntatjara",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-27.14,lng:133.83,code:"PG008134"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Bermudians",country:"Bermuda",lang:"English",rol3:"eng",pct_christian:17.5,pop:66e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.31,lng:-64.77,code:"PG016210"},{name:"Caymanian",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:17.5,pop:60500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:19.42,lng:-80.89,code:"PG016216"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Kenyan",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:43.83,lng:-79.46,code:"PG047469"},{name:"American",country:"Haiti",lang:"English",rol3:"eng",pct_christian:17.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.55,lng:-72.32,code:"PG016382"},{name:"Ghanaian",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:49.22,lng:-122.99,code:"PG047407"},{name:"Passamaquoddy",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.36,lng:-67.46,code:"PG043437"},{name:"Tlingit",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:60.48,lng:-132.29,code:"PG043489"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Onondaga",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.05,lng:-80.11,code:"PG043451"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"K’ómoks",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-124.96,code:"PG043374"},{name:"Rembarunga",country:"Australia",lang:"English",rol3:"eng",pct_christian:17.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-12.96,lng:134.58,code:"PG008058"},{name:"Irish, Northern",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:166e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:54.61,lng:-6.69,code:"PG022219"},{name:"Afro-Trinidadian",country:"Trinidad and Tobago",lang:"English",rol3:"eng",pct_christian:12.5,pop:725e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.42,lng:-61.3,code:"PG016442"},{name:"Metis",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:704e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.13,lng:-97.19,code:"PG043455"},{name:"American",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:402e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.97,lng:-107.63,code:"PG043500"},{name:"English Caribbean",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:394e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.73,lng:-90.31,code:"PG049256"},{name:"Han Chinese",country:"Singapore",lang:"English",rol3:"eng",pct_christian:12.5,pop:358e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020724"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Detribalized Amerindian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.64,lng:-115.72,code:"PG043384"},{name:"Sub-Saharan Africans, English-Speaking",country:"Belgium",lang:"English",rol3:"eng",pct_christian:12.5,pop:123e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.85,lng:4.38,code:"PG047833"},{name:"Fijian",country:"Australia",lang:"English",rol3:"eng",pct_christian:12.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG050451"},{name:"Cree, Woodland",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.6,lng:-106.15,code:"PG043378"},{name:"Dominican",country:"Dominica",lang:"English",rol3:"eng",pct_christian:12.5,pop:67e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.43,lng:-61.35,code:"PG016306"},{name:"Welsh",country:"Argentina",lang:"English",rol3:"eng",pct_christian:12.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-43.27,lng:-65.44,code:"PG017376"},{name:"Mohawk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:44.18,lng:-77.77,code:"PG043441"},{name:"Barbadian",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.5,lng:-.17,code:"PG048436"},{name:"Euronesian",country:"Fiji",lang:"English",rol3:"eng",pct_christian:12.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-17.95,lng:178.24,code:"PG018419"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"Hmong Njua",country:"Myanmar",lang:"Hmong Njua",rol3:"hnj",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Polytheism",lat:23.63,lng:97.65,code:"PG022056"},{name:"American",country:"Costa Rica",lang:"English",rol3:"eng",pct_christian:12.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:10.22,lng:-85.24,code:"PG025025"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Tsimshian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.42,lng:-130.3,code:"PG043490"},{name:"Lillooet",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.68,lng:-121.92,code:"PG043432"},{name:"Nakota (Assiniboine)",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:52.17,lng:-107.03,code:"PG043354"},{name:"Kwakwakaʼwakw",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.72,lng:-127.5,code:"PG043427"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Dakota",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:5500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.52,lng:-102.88,code:"PG043381"},{name:"American",country:"Micronesia",lang:"English",rol3:"eng",pct_christian:12.5,pop:5400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.95,lng:158.2,code:"PG018394"},{name:"Straits Salish",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.49,lng:-123.46,code:"PG043479"},{name:"Bahamian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.9,lng:-79.58,code:"PG050486"},{name:"Cree, Southern East",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.77,lng:-75.81,code:"PG043411"},{name:"Heiltsuk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:52.3,lng:-128.28,code:"PG043406"},{name:"Tolowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.9,lng:-124.16,code:"PG050627"},{name:"Sac & Fox Tribe of the Mississippi in Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.98,lng:-92.65,code:"PG043616"},{name:"Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.99,lng:-95.39,code:"PG043277"},{name:"Central Africans",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047190"},{name:"Jamaican",country:"Germany",lang:"English",rol3:"eng",pct_christian:12.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.13,lng:11.56,code:"PG048546"},{name:"American",country:"Curacao",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.19,lng:-68.97,code:"PG016406"},{name:"Saint Lucian",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:4.91,lng:-52.3,code:"PG022286"},{name:"Tubatulabal",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:36.07,lng:-118.31,code:"PG043660"},{name:"Euronesian",country:"Cook Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-21.23,lng:-159.78,code:"PG018317"},{name:"Nez Perce",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-116.41,code:"PG043560"},{name:"Salinan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:35.83,lng:-120.77,code:"PG050637"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Kaska",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:58.79,lng:-126.96,code:"PG043421"},{name:"Anuta",country:"Solomon Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-11.61,lng:169.85,code:"PG010725"},{name:"Sac & Fox Nation of Missouri in Kansas and Nebraska",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:450,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.01,lng:-95.52,code:"PG050671"},{name:"British",country:"Lesotho",lang:"English",rol3:"eng",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-29.33,lng:27.51,code:"PG015281"},{name:"Haida",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:55.19,lng:-132.88,code:"PG043257"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Chinuk Wawa",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.37,lng:-123.2,code:"PG043372"},{name:"Cayuga",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:60,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.55,lng:-79,code:"PG043191"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Upper Tanana",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:62.07,lng:-140.22,code:"PG043497"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Chinese American",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:175e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG050453"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Khmu, Ou",country:"Laos",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:817e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:102.58,code:"PG020913"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Jamaican",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:588e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.14,lng:-77.63,code:"PG043284"},{name:"Han Chinese, Mandarin",country:"Singapore",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020728"},{name:"Detribalized Amerindian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:454e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.9,lng:-111.06,code:"PG043225"},{name:"Cape Verdean",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:309e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.42,lng:-74.94,code:"PG047254"},{name:"Han Chinese",country:"Brazil",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-23.17,lng:-45.54,code:"PG016864"}]},Sudan:{target_upg:170,target_pop:48623100,target_top_langs:["Arabic, Sudanese","Bedawiyet","Fur","Nobiin"],target_top_religion:"Islam",neighbors:[{name:"Turum",country:"Sudan",lang:"Tagoi",rol3:"tag",pct_christian:45,pop:3200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:11.6,lng:31.08,code:"PG042842"},{name:"Acheron",country:"Sudan",lang:"Acheron",rol3:"acz",pct_christian:25,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.81,lng:30.25,code:"PG011958"},{name:"Heiban Nuba",country:"Sudan",lang:"Heiban",rol3:"hbn",pct_christian:25,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11.25,lng:30.48,code:"PG012038"},{name:"Moro",country:"Sudan",lang:"Moro",rol3:"mor",pct_christian:12.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.94,lng:30.18,code:"PG012112"},{name:"Katcha-Kadugli",country:"Sudan",lang:"Katcha-Kadugli-Miri",rol3:"xtc",pct_christian:7.5,pop:97e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.96,lng:29.69,code:"PG012053"},{name:"Dgik, Ruwa",country:"Sudan",lang:"Dagik",rol3:"dec",pct_christian:7.5,pop:72e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.66,lng:30,code:"PG012102"},{name:"Krongo",country:"Sudan",lang:"Krongo",rol3:"kgo",pct_christian:7.5,pop:66e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.55,lng:29.96,code:"PG012074"},{name:"Miri",country:"Sudan",lang:"Katcha-Kadugli-Miri",rol3:"xtc",pct_christian:7.5,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11,lng:29.5,code:"PG012105"},{name:"Tulishi",country:"Sudan",lang:"Tulishi",rol3:"tey",pct_christian:7.5,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11.47,lng:29.11,code:"PG012165"},{name:"Koalib",country:"Sudan",lang:"Koalib",rol3:"kib",pct_christian:3.5,pop:139e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:11.67,lng:30.4,code:"PG012071"},{name:"Laro",country:"Sudan",lang:"Laro",rol3:"lro",pct_christian:3.5,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11.35,lng:30.54,code:"PG012079"},{name:"Shatt",country:"Sudan",lang:"Shatt",rol3:"shj",pct_christian:3.5,pop:37500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.82,lng:29.76,code:"PG012132"},{name:"Komo",country:"Sudan",lang:"Komo (Sudan)",rol3:"xom",pct_christian:3.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:9.82,lng:34.09,code:"PG012072"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Indian - Christian",country:"South Africa",lang:"English",rol3:"eng",pct_christian:62.5,pop:31e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-29.84,lng:30.93,code:"PG048045"},{name:"Euronesian",country:"Samoa",lang:"English",rol3:"eng",pct_christian:62.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.85,lng:-171.8,code:"PG018323"},{name:"British",country:"Tanzania",lang:"English",rol3:"eng",pct_christian:62.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-6.83,lng:39.25,code:"PG014914"},{name:"British",country:"Zimbabwe",lang:"English",rol3:"eng",pct_christian:62.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-17.83,lng:31.03,code:"PG015650"},{name:"American",country:"Singapore",lang:"English",rol3:"eng",pct_christian:45,pop:9800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.36,lng:103.82,code:"PG018447"},{name:"British",country:"Barbados",lang:"English",rol3:"eng",pct_christian:45,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:13.12,lng:-59.6,code:"PG016197"},{name:"British",country:"Venezuela",lang:"English",rol3:"eng",pct_christian:45,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:10.48,lng:-66.88,code:"PG016461"},{name:"British",country:"Botswana",lang:"English",rol3:"eng",pct_christian:45,pop:7100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-24.65,lng:25.91,code:"PG015217"},{name:"Pitcairn Islander",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:45,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018502"},{name:"American",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:95500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.52,lng:142.46,code:"PG020268"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Caribbean Hindi",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:4.91,lng:-52.3,code:"PG022284"},{name:"Southwest Aborigine Creol",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-32.54,lng:115.99,code:"PG008068"},{name:"Anglo-Australian",country:"Singapore",lang:"English",rol3:"eng",pct_christian:35,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:1.36,lng:103.82,code:"PG010684"},{name:"American",country:"Iceland",lang:"English",rol3:"eng",pct_christian:35,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.14,lng:-21.89,code:"PG000293"},{name:"American",country:"Marshall Islands",lang:"English",rol3:"eng",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:7.1,lng:171.22,code:"PG009376"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Detribalized Aborigine",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:58e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG007863"},{name:"Jamaican",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:33e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047381"},{name:"Barbadian",country:"Barbados",lang:"English",rol3:"eng",pct_christian:25,pop:269e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.17,lng:-59.56,code:"PG016195"},{name:"American",country:"Panama",lang:"English",rol3:"eng",pct_christian:25,pop:186e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.06,lng:-79.38,code:"PG050309"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Barbadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047394"},{name:"Bay Islands Creole",country:"Honduras",lang:"English",rol3:"eng",pct_christian:25,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.34,lng:-86.39,code:"PG024758"},{name:"American",country:"Virgin Islands",lang:"English",rol3:"eng",pct_christian:25,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.96,lng:-64.8,code:"PG050296"},{name:"American",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:25,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018513"},{name:"American",country:"Guam",lang:"English",rol3:"eng",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.44,lng:144.78,code:"PG050299"},{name:"American",country:"Fiji",lang:"English",rol3:"eng",pct_christian:25,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-18.13,lng:178.44,code:"PG018421"},{name:"Mono",country:"Cameroon",lang:"Fulfulde, Adamawa",rol3:"fub",pct_christian:25,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:8.77,lng:14.12,code:"PG012705"},{name:"American",country:"Greenland",lang:"English",rol3:"eng",pct_christian:25,pop:3400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.18,lng:-51.7,code:"PG000286"},{name:"Maori",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050518"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Wik-Ngathan",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.84,lng:141.57,code:"PG008118"},{name:"Polynesian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050519"},{name:"Yankuntatjara",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-27.14,lng:133.83,code:"PG008134"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Bermudians",country:"Bermuda",lang:"English",rol3:"eng",pct_christian:17.5,pop:66e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.31,lng:-64.77,code:"PG016210"},{name:"Caymanian",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:17.5,pop:60500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:19.42,lng:-80.89,code:"PG016216"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Kenyan",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:43.83,lng:-79.46,code:"PG047469"},{name:"American",country:"Haiti",lang:"English",rol3:"eng",pct_christian:17.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.55,lng:-72.32,code:"PG016382"},{name:"Ghanaian",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:49.22,lng:-122.99,code:"PG047407"},{name:"Passamaquoddy",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.36,lng:-67.46,code:"PG043437"},{name:"Tlingit",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:60.48,lng:-132.29,code:"PG043489"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Onondaga",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.05,lng:-80.11,code:"PG043451"},{name:"K’ómoks",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-124.96,code:"PG043374"},{name:"Rembarunga",country:"Australia",lang:"English",rol3:"eng",pct_christian:17.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-12.96,lng:134.58,code:"PG008058"},{name:"Irish, Northern",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:166e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:54.61,lng:-6.69,code:"PG022219"},{name:"Afro-Trinidadian",country:"Trinidad and Tobago",lang:"English",rol3:"eng",pct_christian:12.5,pop:725e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.42,lng:-61.3,code:"PG016442"},{name:"Metis",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:704e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.13,lng:-97.19,code:"PG043455"},{name:"Gbaya",country:"Cameroon",lang:"Gbaya, Northwest",rol3:"gya",pct_christian:12.5,pop:442e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.26,lng:13.47,code:"PG012601"},{name:"American",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:402e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.97,lng:-107.63,code:"PG043500"},{name:"English Caribbean",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:394e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.73,lng:-90.31,code:"PG049256"},{name:"Han Chinese",country:"Singapore",lang:"English",rol3:"eng",pct_christian:12.5,pop:358e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020724"},{name:"Detribalized Amerindian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.64,lng:-115.72,code:"PG043384"},{name:"Sub-Saharan Africans, English-Speaking",country:"Belgium",lang:"English",rol3:"eng",pct_christian:12.5,pop:123e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.85,lng:4.38,code:"PG047833"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Fijian",country:"Australia",lang:"English",rol3:"eng",pct_christian:12.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG050451"},{name:"Cree, Woodland",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.6,lng:-106.15,code:"PG043378"},{name:"Dominican",country:"Dominica",lang:"English",rol3:"eng",pct_christian:12.5,pop:67e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.43,lng:-61.35,code:"PG016306"},{name:"Welsh",country:"Argentina",lang:"English",rol3:"eng",pct_christian:12.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-43.27,lng:-65.44,code:"PG017376"},{name:"Mohawk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:44.18,lng:-77.77,code:"PG043441"},{name:"Barbadian",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.5,lng:-.17,code:"PG048436"},{name:"Euronesian",country:"Fiji",lang:"English",rol3:"eng",pct_christian:12.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-17.95,lng:178.24,code:"PG018419"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"American",country:"Costa Rica",lang:"English",rol3:"eng",pct_christian:12.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:10.22,lng:-85.24,code:"PG025025"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Tsimshian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.42,lng:-130.3,code:"PG043490"},{name:"Lillooet",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.68,lng:-121.92,code:"PG043432"},{name:"Nakota (Assiniboine)",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:52.17,lng:-107.03,code:"PG043354"},{name:"Kwakwakaʼwakw",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.72,lng:-127.5,code:"PG043427"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Dakota",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:5500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.52,lng:-102.88,code:"PG043381"},{name:"American",country:"Micronesia",lang:"English",rol3:"eng",pct_christian:12.5,pop:5400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.95,lng:158.2,code:"PG018394"},{name:"Straits Salish",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.49,lng:-123.46,code:"PG043479"},{name:"Bahamian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.9,lng:-79.58,code:"PG050486"},{name:"Cree, Southern East",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.77,lng:-75.81,code:"PG043411"},{name:"Heiltsuk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:52.3,lng:-128.28,code:"PG043406"},{name:"Tolowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.9,lng:-124.16,code:"PG050627"},{name:"Sac & Fox Tribe of the Mississippi in Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.98,lng:-92.65,code:"PG043616"},{name:"Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.99,lng:-95.39,code:"PG043277"},{name:"Central Africans",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047190"},{name:"Jamaican",country:"Germany",lang:"English",rol3:"eng",pct_christian:12.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.13,lng:11.56,code:"PG048546"},{name:"American",country:"Curacao",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.19,lng:-68.97,code:"PG016406"},{name:"Saint Lucian",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:4.91,lng:-52.3,code:"PG022286"},{name:"Tubatulabal",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:36.07,lng:-118.31,code:"PG043660"},{name:"Euronesian",country:"Cook Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-21.23,lng:-159.78,code:"PG018317"},{name:"Nez Perce",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-116.41,code:"PG043560"},{name:"Salinan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:35.83,lng:-120.77,code:"PG050637"},{name:"Kaska",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:58.79,lng:-126.96,code:"PG043421"},{name:"Anuta",country:"Solomon Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-11.61,lng:169.85,code:"PG010725"},{name:"Sac & Fox Nation of Missouri in Kansas and Nebraska",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:450,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.01,lng:-95.52,code:"PG050671"},{name:"British",country:"Lesotho",lang:"English",rol3:"eng",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-29.33,lng:27.51,code:"PG015281"},{name:"Haida",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:55.19,lng:-132.88,code:"PG043257"},{name:"Chinuk Wawa",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.37,lng:-123.2,code:"PG043372"},{name:"Cayuga",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:60,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.55,lng:-79,code:"PG043191"},{name:"Upper Tanana",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:62.07,lng:-140.22,code:"PG043497"},{name:"Chinese American",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:175e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG050453"},{name:"Jamaican",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:588e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.14,lng:-77.63,code:"PG043284"},{name:"Detribalized Amerindian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:454e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.9,lng:-111.06,code:"PG043225"},{name:"Cape Verdean",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:309e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.42,lng:-74.94,code:"PG047254"},{name:"Ghanaian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:204e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG046500"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Trinidadian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.69,lng:-73.86,code:"PG046512"},{name:"Choctaw",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:121e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.5,lng:-95.33,code:"PG043202"},{name:"Liberian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:107e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG047273"},{name:"American",country:"Dominican Republic",lang:"English",rol3:"eng",pct_christian:7.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.48,lng:-69.91,code:"PG016327"},{name:"Kenyan",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:96e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:33.32,lng:-92.72,code:"PG050473"},{name:"Anglo-Australian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:84e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:35.02,lng:-98.4,code:"PG043519"},{name:"Trinidadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:84e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047383"},{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Channel Islanders",country:"Guernsey",lang:"English",rol3:"eng",pct_christian:7.5,pop:65e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.48,lng:-2.52,code:"PG048818"},{name:"South African",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:44e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:47.85,lng:-102.06,code:"PG050480"},{name:"Cree, Plains",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:43e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:53.8,lng:-109.54,code:"PG043505"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"British",country:"Zambia",lang:"English",rol3:"eng",pct_christian:7.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-15.4,lng:28.31,code:"PG015570"},{name:"Blackfoot, Siksika",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.66,lng:-112.87,code:"PG043538"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"American",country:"Ecuador",lang:"English",rol3:"eng",pct_christian:7.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.18,lng:-78.49,code:"PG017483"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Potawatomi",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.34,lng:-95.84,code:"PG043601"},{name:"Euronesian",country:"Solomon Islands",lang:"English",rol3:"eng",pct_christian:7.5,pop:23500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-9.43,lng:159.96,code:"PG018398"},{name:"Halkomelem",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:21e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.22,lng:-121.97,code:"PG043403"},{name:"Tlingit",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:57.16,lng:-133.75,code:"PG043653"},{name:"Filipino",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-36.89,lng:174.78,code:"PG047593"},{name:"Comanche",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.56,lng:-98.43,code:"PG043209"},{name:"British",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:7.5,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:19.33,lng:-81.38,code:"PG016215"},{name:"Cheyenne",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.53,lng:-106.68,code:"PG043198"},{name:"American",country:"Papua New Guinea",lang:"English",rol3:"eng",pct_christian:7.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-9.45,lng:147.18,code:"PG022038"},{name:"Pueblo, Santa Clara",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Native American religions",lat:35.98,lng:-106.22,code:"PG050653"},{name:"Shuswap",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.26,lng:-120.93,code:"PG043468"}]},Algeria:{target_upg:38,target_pop:47320600,target_top_langs:["Arabic, Algerian","Kabyle","Tachawit","Tamazight, Central Atlas"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Algeria",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:55e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:36.73,lng:3.13,code:"PG049244"},{name:"Bakole",country:"Cameroon",lang:"French",rol3:"fra",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:4.43,lng:8.97,code:"PG012493"},{name:"PoaPoa",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:25,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.87,lng:164.66,code:"PG018370"},{name:"Romani, Vlax",country:"Belgium",lang:"Romani, Vlax",rol3:"rmy",pct_christian:17.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.85,lng:4.38,code:"PG000068"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Euronesian",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:12.5,pop:58500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-17.56,lng:-149.57,code:"PG018408"},{name:"Euronesian",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-22.27,lng:166.45,code:"PG018406"},{name:"Aeke",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.07,lng:164.88,code:"PG009564"},{name:"French",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:7.5,pop:93500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.33,lng:165.49,code:"PG018389"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Sake",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:.07,lng:11.63,code:"PG013210"},{name:"Burundi",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050494"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Kande",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.09,lng:11.75,code:"PG013189"},{name:"Chadian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.58,lng:-73.7,code:"PG050504"},{name:"New Caledonian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.22,lng:-122.99,code:"PG047444"},{name:"Gabonese",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.9,lng:-77.19,code:"PG047191"},{name:"Chinese-Tahitian Creole",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:7.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.56,lng:-149.57,code:"PG018407"},{name:"Chadian",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:38.02,lng:-84.5,code:"PG047189"},{name:"Walloon",country:"Belgium",lang:"French",rol3:"fra",pct_christian:3.5,pop:3755e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.32,lng:4.95,code:"PG000076"},{name:"Swiss",country:"Switzerland",lang:"French",rol3:"fra",pct_christian:3.5,pop:2015e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.6,lng:6.93,code:"PG000585"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Franco-Mauritian",country:"Mauritius",lang:"French",rol3:"fra",pct_christian:3.5,pop:72500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.25,lng:57.51,code:"PG015346"},{name:"Romani, Vlax, Kalderash",country:"Argentina",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:61e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-34.65,lng:-58.56,code:"PG017346"},{name:"Romani, Vlax",country:"Colombia",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:4.64,lng:-74.11,code:"PG016290"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Romanian",country:"France",lang:"French",rol3:"fra",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000192"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"French Caribbean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.5,lng:-73.81,code:"PG047395"},{name:"Togolese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.52,lng:-73.68,code:"PG050478"},{name:"Congolese",country:"Spain",lang:"French",rol3:"fra",pct_christian:3.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.41,lng:-3.69,code:"PG042340"},{name:"Abenaki",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.07,lng:-72.82,code:"PG043348"},{name:"Ivorian",country:"United States",lang:"French",rol3:"fra",pct_christian:3.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047266"},{name:"Guinean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.5,lng:-73.81,code:"PG047454"},{name:"Sighu",country:"Gabon",lang:"French",rol3:"fra",pct_christian:3.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.84,lng:12.69,code:"PG013213"},{name:"Rwandan",country:"Netherlands",lang:"French",rol3:"fra",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:51.9,lng:4.47,code:"PG000430"},{name:"Gabonese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050505"}]},Iraq:{target_upg:31,target_pop:46011e3,target_top_langs:["Arabic, Mesopotamian","Arabic, North Mesopotamian","Kurdish, Central","Kurdish, Northern"],target_top_religion:"Islam",neighbors:[{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},"Myanmar (Burma)":{target_upg:58,target_pop:44445100,target_top_langs:["Burmese","Shan","Rakhine","Chinese, Mandarin"],target_top_religion:"Buddhism",neighbors:[{name:"Kayaw",country:"Myanmar",lang:"Kayaw",rol3:"kvl",pct_christian:75,pop:26e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.26,lng:96.85,code:"PG009414"},{name:"Zanniat Chin",country:"Myanmar",lang:"Chin, Falam",rol3:"cfm",pct_christian:75,pop:2e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23,lng:93.84,code:"PG009549"},{name:"Lushai",country:"Myanmar",lang:"Mizo",rol3:"lus",pct_christian:75,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.44,lng:93.63,code:"PG009473"},{name:"Siyin Chin",country:"Myanmar",lang:"Chin, Siyin",rol3:"csy",pct_christian:75,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.41,lng:93.63,code:"PG009521"},{name:"Anal",country:"Myanmar",lang:"Anal",rol3:"anm",pct_christian:75,pop:50,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.21,lng:94.31,code:"PG022039"},{name:"Karen, S'gaw",country:"Myanmar",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:62.5,pop:201e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:17.51,lng:96.16,code:"PG009518"},{name:"Tiddim Chin",country:"Myanmar",lang:"Chin, Tedim",rol3:"ctd",pct_christian:62.5,pop:256e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.5,lng:94.06,code:"PG009534"},{name:"Falam Chin",country:"Myanmar",lang:"Chin, Falam",rol3:"cfm",pct_christian:62.5,pop:147e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.02,lng:93.67,code:"PG022048"},{name:"Haka Chin",country:"Myanmar",lang:"Chin, Hakha",rol3:"cnh",pct_christian:62.5,pop:133e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.45,lng:93.8,code:"PG009431"},{name:"Rawang",country:"Myanmar",lang:"Rawang",rol3:"raw",pct_christian:62.5,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.25,lng:97.97,code:"PG009509"},{name:"Kuki Chin",country:"Myanmar",lang:"Chin, Thado",rol3:"tcz",pct_christian:62.5,pop:41e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.9,lng:94.73,code:"PG009461"},{name:"K'cho Chin",country:"Myanmar",lang:"Chin, Müün",rol3:"mwq",pct_christian:62.5,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:20.29,lng:94.3,code:"PG022045"},{name:"Ngawn Chin",country:"Myanmar",lang:"Chin, Ngawn",rol3:"cnw",pct_christian:62.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.09,lng:93.85,code:"PG009493"},{name:"Bawm",country:"Myanmar",lang:"Chin, Bawm",rol3:"bgr",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.59,lng:92.9,code:"PG009408"},{name:"Pyen",country:"Myanmar",lang:"Pyen",rol3:"pyy",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.03,lng:99.65,code:"PG009506"},{name:"Lahu",country:"Myanmar",lang:"Lahu",rol3:"lhu",pct_christian:45,pop:2e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.58,lng:99.59,code:"PG009463"},{name:"Zome",country:"Myanmar",lang:"Zo",rol3:"zom",pct_christian:45,pop:61e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.53,lng:94.12,code:"PG009551"},{name:"Zotung Chin",country:"Myanmar",lang:"Chin, Zotung",rol3:"czt",pct_christian:45,pop:54e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.55,lng:93.32,code:"PG009552"},{name:"Chin, Mara",country:"Myanmar",lang:"Mara",rol3:"mrh",pct_christian:45,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.05,lng:93.12,code:"PG009481"},{name:"Karen, Gheko",country:"Myanmar",lang:"Karen, Geko",rol3:"ghk",pct_christian:45,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.51,lng:96.75,code:"PG009428"},{name:"Kawyaw",country:"Myanmar",lang:"Kawyaw",rol3:"kxf",pct_christian:45,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.28,lng:97.08,code:"PG009479"},{name:"Naga, Konyak",country:"Myanmar",lang:"Naga, Konyak",rol3:"nbe",pct_christian:45,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.56,lng:95.18,code:"PG009460"},{name:"Kachin",country:"Myanmar",lang:"Jingpho",rol3:"kac",pct_christian:35,pop:1065e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.05,lng:97.44,code:"PG009448"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Lashi",country:"Myanmar",lang:"Lacid",rol3:"lsi",pct_christian:35,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.83,lng:98.25,code:"PG009469"},{name:"Rawngtu Chin",country:"Myanmar",lang:"Chin, Rawngtu",rol3:"weu",pct_christian:35,pop:5e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:21.55,lng:93.73,code:"PG009539"},{name:"Mro-Khimi",country:"Myanmar",lang:"Mro-Khimi",rol3:"cmr",pct_christian:25,pop:75e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:20.7,lng:92.98,code:"PG009456"},{name:"Karen, Geba",country:"Myanmar",lang:"Karen, Geba",rol3:"kvq",pct_christian:25,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:19.5,lng:96.62,code:"PG009427"},{name:"Karen, Bghai",country:"Myanmar",lang:"Karen, Bwe",rol3:"bwe",pct_christian:25,pop:21e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.09,lng:96.72,code:"PG009510"},{name:"Karen, Yinbaw",country:"Myanmar",lang:"Yinbaw",rol3:"kvu",pct_christian:25,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:18.96,lng:97.21,code:"PG009546"},{name:"Anu",country:"Myanmar",lang:"Chin, Anu-Khongso",rol3:"anl",pct_christian:25,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:21.31,lng:92.84,code:"PG009405"},{name:"Drung",country:"Myanmar",lang:"Drung",rol3:"duu",pct_christian:25,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:28.1,lng:97.69,code:"PG009535"},{name:"Achang",country:"Myanmar",lang:"Achang",rol3:"acn",pct_christian:17.5,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:24.31,lng:97.54,code:"PG009475"},{name:"Karen, Zayein",country:"Myanmar",lang:"Zayein",rol3:"kxk",pct_christian:17.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:97.06,code:"PG009550"},{name:"Chin, Asho",country:"Myanmar",lang:"Chin, Asho",rol3:"csh",pct_christian:12.5,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:20.4,lng:94.79,code:"PG009406"},{name:"Blang",country:"Myanmar",lang:"Blang",rol3:"blr",pct_christian:12.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:21.5,lng:100.17,code:"PG022041"},{name:"Hmong Njua",country:"Myanmar",lang:"Hmong Njua",rol3:"hnj",pct_christian:12.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:23.63,lng:97.65,code:"PG022056"},{name:"Hsifan",country:"Myanmar",lang:"Tibetan, Central",rol3:"bod",pct_christian:12.5,pop:5600,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:27.24,lng:97.64,code:"PG009445"},{name:"Karen, Mobwa",country:"Myanmar",lang:"Karen, Mobwa",rol3:"jkm",pct_christian:12.5,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:18.98,lng:96.63,code:"PG048772"},{name:"Tawr Chin",country:"Myanmar",lang:"Chin, Tawr",rol3:"tcp",pct_christian:12.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.5,lng:93.78,code:"PG009532"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Karen, Kayan",country:"Myanmar",lang:"Kayan (Myanmar)",rol3:"pdu",pct_christian:7.5,pop:133e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.56,lng:96.82,code:"PG009497"},{name:"Tai Mao",country:"Myanmar",lang:"Tai Long",rol3:"thi",pct_christian:7.5,pop:12e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:23.89,lng:97.73,code:"PG047888"},{name:"Chin, Daai",country:"Myanmar",lang:"Chin, Daai",rol3:"dao",pct_christian:7.5,pop:41e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:21.05,lng:93.67,code:"PG009421"},{name:"Senthang",country:"Myanmar",lang:"Chin, Senthang",rol3:"sez",pct_christian:7.5,pop:33e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.46,lng:93.85,code:"PG009516"},{name:"Uppu",country:"Myanmar",lang:"Chin, Uppu",rol3:"cnb",pct_christian:7.5,pop:30500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Folk",lat:19.9,lng:94.08,code:"PG009419"},{name:"Hrangkhol",country:"Myanmar",lang:"Hrangkhol",rol3:"hra",pct_christian:7.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:23.75,lng:93.78,code:"PG009444"},{name:"Karen, Paku",country:"Myanmar",lang:"Karen, Paku",rol3:"jkp",pct_christian:7.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.94,lng:96.86,code:"PG009499"},{name:"Lisu",country:"Myanmar",lang:"Lisu",rol3:"lis",pct_christian:3.5,pop:327e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.78,lng:97.17,code:"PG009523"},{name:"Akha",country:"Myanmar",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:23e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:21.71,lng:99.8,code:"PG009402"},{name:"Karen, Pow Western",country:"Myanmar",lang:"Karen, Pwo Western",rol3:"pwo",pct_christian:3.5,pop:21e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.46,lng:97.72,code:"PG046602"},{name:"Khumi Chin",country:"Myanmar",lang:"Chin, Khumi",rol3:"cnk",pct_christian:3.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.17,lng:92.98,code:"PG009457"},{name:"Naga, Tase",country:"Myanmar",lang:"Naga, Tangshang",rol3:"nst",pct_christian:3.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.71,lng:96.23,code:"PG009528"},{name:"Riang",country:"Myanmar",lang:"Riang Lang",rol3:"ril",pct_christian:3.5,pop:57500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:23.22,lng:98.73,code:"PG009511"},{name:"Zaiwa",country:"Myanmar",lang:"Zaiwa",rol3:"atb",pct_christian:3.5,pop:38500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:24.47,lng:97.99,code:"PG009407"},{name:"Lao",country:"Myanmar",lang:"Lao",rol3:"lao",pct_christian:3.5,pop:26e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:16.85,lng:96.15,code:"PG009467"},{name:"Anong",country:"Myanmar",lang:"Lisu",rol3:"lis",pct_christian:3.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.29,lng:98.68,code:"PG009495"},{name:"Karen, Lahta",country:"Myanmar",lang:"Lahta",rol3:"kvt",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:20.32,lng:96.89,code:"PG009462"},{name:"Karen, Yintale",country:"Myanmar",lang:"Yintale",rol3:"kvy",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:18.84,lng:97.26,code:"PG009547"},{name:"Samtao",country:"Myanmar",lang:"Samtao",rol3:"stu",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:21.3,lng:99.63,code:"PG022054"},{name:"Naga, Yimchungru",country:"Myanmar",lang:"Naga, Yimchungru",rol3:"yim",pct_christian:3.5,pop:5600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.38,lng:94.8,code:"PG009545"},{name:"Tailoi",country:"Myanmar",lang:"Tai Loi",rol3:"tlq",pct_christian:3.5,pop:5100,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:21.52,lng:100.94,code:"PG009525"},{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Syrian Christian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:62.5,pop:4495e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:12.35,lng:76.09,code:"PG041308"},{name:"Naga, Tangkhul",country:"India",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:25.07,lng:94.38,code:"PG041697"},{name:"Soria",country:"India",lang:"Hindi",rol3:"hin",pct_christian:62.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.2,lng:77.09,code:"PG048955"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Naga, Tangkhul",country:"United States",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.85,lng:-96.97,code:"PG050369"},{name:"Pulayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:45,pop:154e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.06,lng:76.53,code:"PG041344"},{name:"Meghval",country:"India",lang:"Hindi",rol3:"hin",pct_christian:45,pop:377e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.87,lng:73.03,code:"PG041328"},{name:"Santal (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:45,pop:176e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.8,lng:87.48,code:"PG046353"},{name:"Naga, Khiamngan",country:"India",lang:"Naga, Khiamniungan",rol3:"kix",pct_christian:45,pop:56e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:26.17,lng:94.89,code:"PG042023"},{name:"Hmong",country:"Vietnam",lang:"Hmong Daw",rol3:"mww",pct_christian:35,pop:133e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.86,lng:103.59,code:"PG011142"},{name:"Malai Arayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:35,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:9.65,lng:76.66,code:"PG041952"},{name:"Paravar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:8.62,lng:77,code:"PG041743"},{name:"Madgi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:76500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.17,lng:79.45,code:"PG041802"},{name:"Gounder",country:"India",lang:"Tamil",rol3:"tam",pct_christian:25,pop:6e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.68,lng:78.22,code:"PG041906"},{name:"Maru",country:"China",lang:"Lhao Vo",rol3:"mhx",pct_christian:25,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.33,lng:98.43,code:"PG007279"},{name:"Kerala Mudali",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.44,lng:78.7,code:"PG049672"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"Godari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.69,lng:83.22,code:"PG049205"},{name:"Chamail",country:"India",lang:"Hindi",rol3:"hin",pct_christian:25,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:25.48,lng:85.95,code:"PG049469"},{name:"Ghogia",country:"India",lang:"Odia",rol3:"ory",pct_christian:25,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.15,lng:84.09,code:"PG049008"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"Arakala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:375,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.11,lng:83.4,code:"PG049160"},{name:"Mala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:7615e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.36,lng:79.51,code:"PG041263"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Ojha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:46e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.74,lng:78.25,code:"PG041974"},{name:"Badhi",country:"India",lang:"Hindi",rol3:"hin",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:29.95,lng:77.55,code:"PG041480"},{name:"Lahu Shi",country:"Thailand",lang:"Lahu Shi",rol3:"lhi",pct_christian:17.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:18.98,lng:99.39,code:"PG010939"},{name:"Goudu",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.71,lng:83.25,code:"PG042158"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Black Karen",country:"Thailand",lang:"Pa’o",rol3:"blk",pct_christian:17.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.74,lng:98.06,code:"PG010829"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Bari (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.86,lng:84.8,code:"PG048204"},{name:"Candhai Maru",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.48,lng:83.97,code:"PG049648"},{name:"Madiga",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:9445e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.51,lng:79.06,code:"PG041253"},{name:"Chakkiliyan",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1205e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:77.71,code:"PG041373"},{name:"Nadua Shabar",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:659e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:19.9,lng:85.17,code:"PG049502"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Mannan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:145e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.8,lng:76.55,code:"PG041756"},{name:"Chakravar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.62,lng:77,code:"PG041956"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Samban",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.7,lng:77.49,code:"PG041752"},{name:"Mehtar",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:16.22,lng:75.63,code:"PG042116"},{name:"Panchama",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:7800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.01,lng:81.79,code:"PG042086"},{name:"Peranakan",country:"Malaysia",lang:"Malay",rol3:"zlm",pct_christian:12.5,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.4,lng:101.64,code:"PG018232"},{name:"Palliyan",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.89,lng:77.09,code:"PG049215"},{name:"Padigarajulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.58,lng:79.51,code:"PG049165"},{name:"Malayali",country:"Maldives",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:4.17,lng:73.51,code:"PG006163"},{name:"Kuda",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.83,lng:85.53,code:"PG049016"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Tharua",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.49,lng:86.93,code:"PG049031"},{name:"Gharrami",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:28.64,lng:77.12,code:"PG049392"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Nadar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:6365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.17,lng:77.82,code:"PG041309"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Vellalar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:308e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.78,lng:77.78,code:"PG041493"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Pano",country:"India",lang:"Odia",rol3:"ory",pct_christian:7.5,pop:1735e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:21.04,lng:85.14,code:"PG041345"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Indian - Hindu",country:"South Africa",lang:"Hindi",rol3:"hin",pct_christian:7.5,pop:1365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:-28.9,lng:26.75,code:"PG042180"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"},{name:"Cheruman",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:76.25,code:"PG041452"},{name:"Han Chinese, Mandarin",country:"Singapore",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020728"},{name:"Han Chinese",country:"Brazil",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-23.17,lng:-45.54,code:"PG016864"},{name:"Malayali",country:"Malaysia",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:206e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.64,code:"PG020224"},{name:"Han Chinese, Mandarin",country:"United Arab Emirates",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:202e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.67,lng:55.14,code:"PG049240"},{name:"Han Chinese, Mandarin",country:"North Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:184e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:39,lng:125.92,code:"PG007584"},{name:"Han Chinese",country:"France",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:172e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:48.2,lng:2.3,code:"PG023131"},{name:"Malayali",country:"United States",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:165e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:40.72,lng:-73.97,code:"PG043340"},{name:"Han Chinese, Mandarin",country:"Hong Kong",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:163e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050605"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Telugu",country:"Malaysia",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:137e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.62,code:"PG009356"},{name:"Ghanchi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:129e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.02,lng:73.03,code:"PG041585"},{name:"Han Chinese, Mandarin",country:"Saudi Arabia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.68,lng:46.74,code:"PG049246"},{name:"Han Chinese",country:"Tanzania",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:106e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-6.83,lng:39.25,code:"PG014935"},{name:"Han Chinese",country:"Italy",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:44.22,lng:10.5,code:"PG000330"},{name:"Han Chinese",country:"South Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:94500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.58,lng:127.64,code:"PG007589"},{name:"Han Chinese, Mandarin",country:"Tajikistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.57,lng:68.77,code:"PG049245"},{name:"Bharathar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:81e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:8.94,lng:76.82,code:"PG049578"}]},Afghanistan:{target_upg:68,target_pop:43626100,target_top_langs:["Pashto, Southern","Dari","Pashto, Northern","Hazaragi"],target_top_religion:"Islam",neighbors:[{name:"Romani, Balkan",country:"Italy",lang:"Romani, Balkan",rol3:"rmn",pct_christian:62.5,pop:2500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:45.54,lng:9.19,code:"PG000312"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Romani, Balkan",country:"Bulgaria",lang:"Romani, Balkan",rol3:"rmn",pct_christian:7.5,pop:267e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:42.86,lng:23.79,code:"PG000737"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"},{name:"Romani, Balkan",country:"France",lang:"Romani, Balkan",rol3:"rmn",pct_christian:3.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.84,lng:2.35,code:"PG000134"}]},Yemen:{target_upg:20,target_pop:41244500,target_top_langs:["Arabic, Sanaani","Arabic, Ta'izzi-Adeni","Arabic, Hadrami","Somali"],target_top_religion:"Islam",neighbors:[{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Hasidim",country:"United Kingdom",lang:"Hebrew",rol3:"heb",pct_christian:7.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:51.5,lng:-.17,code:"PG000648"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},Morocco:{target_upg:29,target_pop:38094500,target_top_langs:["Arabic, Moroccan","Tachelhit","Tamazight, Central Atlas","Tarifit"],target_top_religion:"Islam",neighbors:[]},Uzbekistan:{target_upg:34,target_pop:35401700,target_top_langs:["Uzbek, Northern","Tajik","Kazakh","Karakalpak"],target_top_religion:"Islam",neighbors:[{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Pole",country:"Uzbekistan",lang:"Polish",rol3:"pol",pct_christian:7.5,pop:3700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:41.31,lng:69.26,code:"PG024310"},{name:"Han Chinese",country:"Uzbekistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.33,lng:69.29,code:"PG024675"},{name:"Ukrainian",country:"Uzbekistan",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:47e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:41.31,lng:69.26,code:"PG024323"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Romanian",country:"Czech Republic",lang:"Romanian",rol3:"ron",pct_christian:25,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.07,lng:14.47,code:"PG050033"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Estonian",country:"Estonia",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:9e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:58.67,lng:25.55,code:"PG000779"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Estonian",country:"Canada",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043392"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Romanian",country:"Romania",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1637e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:45.84,lng:24.98,code:"PG000899"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Romanian",country:"Italy",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:13e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:44.5,lng:9.8,code:"PG048833"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Romanian",country:"Hungary",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.8,lng:20.84,code:"PG000835"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Romanian ",country:"Austria",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.18,lng:16.35,code:"PG049963"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Romanian",country:"Ireland",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:53.39,lng:-6.28,code:"PG048049"},{name:"Moldovan",country:"Canada",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.72,lng:-95.67,code:"PG047364"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Karakalpak",country:"Kazakhstan",lang:"Karakalpak",rol3:"kaa",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.62,lng:62.06,code:"PG024276"},{name:"Romanian",country:"Venezuela",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.48,lng:-66.88,code:"PG016490"}]},"Saudi Arabia":{target_upg:44,target_pop:31109500,target_top_langs:["Arabic, Najdi","Arabic, Hijazi","Bengali","Urdu"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Saudi Arabia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:24.68,lng:46.74,code:"PG049246"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Kela",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:20.46,lng:85.67,code:"PG042031"},{name:"Baiti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:23.24,lng:88.24,code:"PG042100"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Chhetri",country:"India",lang:"Nepali",rol3:"npi",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.34,lng:89.24,code:"PG041565"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Chagga",country:"Tanzania",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1185e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-3.29,lng:37.08,code:"PG014916"},{name:"Bhangi (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:699e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.15,lng:87.53,code:"PG048219"},{name:"Kora",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:279e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.29,lng:86.43,code:"PG041592"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Gurung",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:147e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.84,lng:90.63,code:"PG041693"},{name:"Nepali",country:"Bhutan",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.13,lng:89.79,code:"PG042388"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Damai (Nepali)",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:66500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.66,lng:89.08,code:"PG041874"},{name:"Koch",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.68,lng:88.93,code:"PG042084"},{name:"Kotal",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:42500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.42,lng:87.79,code:"PG041946"},{name:"Swahili",country:"Zambia",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-15.4,lng:28.31,code:"PG015634"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Doai",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.05,lng:88.57,code:"PG042134"},{name:"Sarki",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.96,lng:88.33,code:"PG042059"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Paharia",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.37,lng:86.02,code:"PG049049"},{name:"Behera",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.44,code:"PG041569"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Zanzibari",country:"South Africa",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-29.84,lng:30.93,code:"PG015550"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"},{name:"Kusunda",country:"Nepal",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.17,lng:85.13,code:"PG049141"}]},Ethiopia:{target_upg:33,target_pop:30668900,target_top_langs:["Somali","Amharic","Oromo, West Central","Oromo, Borana-Arsi-Guji"],target_top_religion:"Islam",neighbors:[{name:"Sidama",country:"Ethiopia",lang:"Sidamo",rol3:"sid",pct_christian:62.5,pop:524e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.66,lng:38.54,code:"PG011635"},{name:"Koorete",country:"Ethiopia",lang:"Koorete",rol3:"kqy",pct_christian:62.5,pop:252e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.79,lng:37.83,code:"PG011608"},{name:"Basketo",country:"Ethiopia",lang:"Basketo",rol3:"bst",pct_christian:62.5,pop:127e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.26,lng:36.56,code:"PG011552"},{name:"Konso",country:"Ethiopia",lang:"Konso",rol3:"kxc",pct_christian:45,pop:407e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:5.35,lng:37.39,code:"PG011607"},{name:"Naath",country:"Ethiopia",lang:"Nuer",rol3:"nus",pct_christian:45,pop:25e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:8.29,lng:34.17,code:"PG011572"},{name:"Oyda",country:"Ethiopia",lang:"Oyda",rol3:"oyd",pct_christian:45,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.18,lng:36.81,code:"PG011629"},{name:"Bussa",country:"Ethiopia",lang:"Mositacha",rol3:"dox",pct_christian:45,pop:31e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.75,lng:37.22,code:"PG042702"},{name:"Wolaitta",country:"Ethiopia",lang:"Wolaytta",rol3:"wal",pct_christian:35,pop:305e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.68,lng:37.63,code:"PG011653"},{name:"Hadiyya",country:"Ethiopia",lang:"Hadiyya",rol3:"hdy",pct_christian:35,pop:2255e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.48,lng:37.77,code:"PG011591"},{name:"Gedeo",country:"Ethiopia",lang:"Gedeo",rol3:"drs",pct_christian:35,pop:158e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.15,lng:38.28,code:"PG011567"},{name:"Kambata",country:"Ethiopia",lang:"Kambaata",rol3:"ktb",pct_christian:35,pop:1025e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.29,lng:37.83,code:"PG011602"},{name:"Meen",country:"Ethiopia",lang:"Me’en",rol3:"mym",pct_christian:35,pop:242e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:6.86,lng:35.75,code:"PG011617"},{name:"Melo",country:"Ethiopia",lang:"Melo",rol3:"mfx",pct_christian:35,pop:168e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.51,lng:36.68,code:"PG011618"},{name:"Gidole",country:"Ethiopia",lang:"Dirasha",rol3:"gdl",pct_christian:35,pop:67e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.63,lng:37.38,code:"PG011583"},{name:"Tambaro",country:"Ethiopia",lang:"Kambaata",rol3:"ktb",pct_christian:25,pop:158e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.26,lng:37.48,code:"PG011648"},{name:"Guji",country:"Ethiopia",lang:"Oromo, Borana-Arsi-Guji",rol3:"gax",pct_christian:17.5,pop:938e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:6.17,lng:39.39,code:"PG011557"},{name:"Dawro",country:"Ethiopia",lang:"Dawro",rol3:"dwr",pct_christian:17.5,pop:88e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:6.97,lng:37.1,code:"PG011568"},{name:"Gofa",country:"Ethiopia",lang:"Gofa",rol3:"gof",pct_christian:17.5,pop:59e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.27,lng:37.17,code:"PG011587"},{name:"Gamo",country:"Ethiopia",lang:"Gamo",rol3:"gmv",pct_christian:12.5,pop:18e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.26,lng:37.18,code:"PG011579"},{name:"Chara",country:"Ethiopia",lang:"Tsaara",rol3:"cra",pct_christian:12.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.35,lng:36.16,code:"PG011565"},{name:"Dache",country:"Ethiopia",lang:"Gamo",rol3:"gmv",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:5.96,lng:37.53,code:"PG042703"},{name:"Kachama",country:"Ethiopia",lang:"Kachama-Ganjule",rol3:"kcx",pct_christian:7.5,pop:4100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.88,lng:37.48,code:"PG011600"},{name:"Borana",country:"Ethiopia",lang:"Oromo, Borana-Arsi-Guji",rol3:"gax",pct_christian:3.5,pop:965e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:4.91,lng:38.51,code:"PG011558"},{name:"Ari",country:"Ethiopia",lang:"Aari",rol3:"aiw",pct_christian:3.5,pop:472e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:5.88,lng:36.5,code:"PG011548"},{name:"Mesqan",country:"Ethiopia",lang:"Mesqan",rol3:"mvz",pct_christian:3.5,pop:317e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:8.12,lng:38.39,code:"PG050130"},{name:"Zayse",country:"Ethiopia",lang:"Zayse",rol3:"zay",pct_christian:3.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.78,lng:37.38,code:"PG011659"},{name:"Gorose",country:"Ethiopia",lang:"Ale",rol3:"gwd",pct_christian:3.5,pop:7200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.46,lng:37.44,code:"PG042713"},{name:"Amhara",country:"Canada",lang:"Amharic",rol3:"amh",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG047403"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Eritreans",country:"Kenya",lang:"Tigrigna",rol3:"tir",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-1.3,lng:36.86,code:"PG050216"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Komo",country:"Sudan",lang:"Komo (Sudan)",rol3:"xom",pct_christian:3.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.82,lng:34.09,code:"PG012072"},{name:"Eritreans",country:"Uganda",lang:"Tigrigna",rol3:"tir",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:.34,lng:32.6,code:"PG050217"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Ethiopian, Oromo",country:"United States",lang:"Oromo, West Central",rol3:"gaz",pct_christian:3.5,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.9,lng:-77.19,code:"PG047338"}]},Niger:{target_upg:30,target_pop:27011e3,target_top_langs:["Hausa","Zarma","Fulfulde, Western Niger","Tamajaq, Tawallammat"],target_top_religion:"Islam",neighbors:[{name:"Gurma",country:"Niger",lang:"Gourmanchéma",rol3:"gux",pct_christian:3.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:12.86,lng:1.82,code:"PG013599"},{name:"Yoruba",country:"Niger",lang:"Yoruba",rol3:"yor",pct_christian:3.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:13.51,lng:2.12,code:"PG013615"},{name:"Burkina Faso",country:"Canada",lang:"Moore",rol3:"mos",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:43.83,lng:-79.46,code:"PG047453"},{name:"Mossi",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:8335e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.73,lng:-1.3,code:"PG012424"},{name:"Mossi",country:"Ghana",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:526e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:5.57,lng:-.22,code:"PG013360"},{name:"Zaore",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:68e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.36,lng:-1.52,code:"PG012427"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mossi",country:"United States",lang:"Moore",rol3:"mos",pct_christian:3.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.74,lng:-73.72,code:"PG047647"}]},"Korea, North":{target_upg:2,target_pop:263e5,target_top_langs:["Korean","Language unknown"],target_top_religion:"Non-Religious",neighbors:[{name:"Han Chinese, Mandarin",country:"North Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:184e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:39,lng:125.92,code:"PG007584"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Korean",country:"Argentina",lang:"Korean",rol3:"kor",pct_christian:25,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG046918"},{name:"Korean",country:"Singapore",lang:"Korean",rol3:"kor",pct_christian:25,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:1.36,lng:103.82,code:"PG010710"},{name:"Korean",country:"Taiwan",lang:"Korean",rol3:"kor",pct_christian:25,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.63,lng:120.33,code:"PG007526"},{name:"Korean",country:"Northern Mariana Islands",lang:"Korean",rol3:"kor",pct_christian:25,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:15.91,lng:145.61,code:"PG050228"},{name:"Korean",country:"Australia",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:167e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-33.85,lng:151.03,code:"PG021625"},{name:"Korean",country:"Canada",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:46.93,lng:-92.67,code:"PG043424"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"United Kingdom",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.5,lng:-.17,code:"PG000650"},{name:"Korean",country:"New Zealand",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-36.89,lng:174.78,code:"PG047592"},{name:"Korean",country:"Hong Kong",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.38,lng:114.13,code:"PG050601"},{name:"Korean",country:"Paraguay",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.3,lng:-57.56,code:"PG017246"},{name:"Korean",country:"Guam",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.44,lng:144.78,code:"PG050301"},{name:"Korean",country:"Dominican Republic",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:18.48,lng:-69.91,code:"PG022409"},{name:"Korean",country:"South Korea",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:5025e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.38,lng:127.82,code:"PG048088"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Korean",country:"Mozambique",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.89,lng:32.57,code:"PG015382"},{name:"Korean",country:"Madagascar",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-18.91,lng:47.53,code:"PG015310"},{name:"Korean",country:"Honduras",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:14.08,lng:-87.2,code:"PG024788"},{name:"Korean",country:"Brazil",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:48500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-23.57,lng:-46.57,code:"PG016974"},{name:"Korean",country:"Germany",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.12,lng:8.67,code:"PG000249"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Korean",country:"Kyrgyzstan",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:19500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:42.88,lng:74.63,code:"PG024358"},{name:"Korean",country:"Iran",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:17500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.7,lng:51.38,code:"PG024174"},{name:"Korean",country:"Guatemala",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:14.6,lng:-90.55,code:"PG024719"},{name:"Korean",country:"Turkmenistan",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:5200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:37.94,lng:58.39,code:"PG024622"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Korean",country:"France",lang:"Korean",rol3:"kor",pct_christian:3.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:48.84,lng:2.35,code:"PG000171"},{name:"Korean",country:"Spain",lang:"Korean",rol3:"kor",pct_christian:3.5,pop:2900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:40.41,lng:-3.69,code:"PG042347"},{name:"Korean",country:"Panama",lang:"Korean",rol3:"kor",pct_christian:3.5,pop:325,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:9.02,lng:-79.5,code:"PG024842"}]},Nepal:{target_upg:214,target_pop:26044700,target_top_langs:["Nepali","Maithili","Tharu, Dangaura","Newar"],target_top_religion:"Hinduism",neighbors:[{name:"Rai, Chamlinge",country:"Nepal",lang:"Chamling",rol3:"rab",pct_christian:25,pop:15e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.06,lng:86.49,code:"PG006185"},{name:"Chepang",country:"Nepal",lang:"Chepang",rol3:"cdm",pct_christian:7.5,pop:68500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:27.58,lng:84.79,code:"PG006189"},{name:"Rai, Sampange",country:"Nepal",lang:"Sampang",rol3:"rav",pct_christian:7.5,pop:14e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.57,lng:85.77,code:"PG006288"},{name:"Munda",country:"Nepal",lang:"Munda",rol3:"unx",pct_christian:7.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:26.75,lng:87.41,code:"PG006260"},{name:"Jirel",country:"Nepal",lang:"Jirel",rol3:"jul",pct_christian:7.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.8,lng:85.63,code:"PG006224"},{name:"Lepcha",country:"Nepal",lang:"Lepcha",rol3:"lep",pct_christian:7.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:26.86,lng:87.66,code:"PG006247"},{name:"Koi",country:"Nepal",lang:"Koyee",rol3:"kkt",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.15,lng:86.8,code:"PG006235"},{name:"Nawa Sherpa",country:"Nepal",lang:"Naaba",rol3:"nao",pct_christian:7.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.7,lng:87.34,code:"PG006265"},{name:"Danuwar",country:"Nepal",lang:"Danuwar",rol3:"dhw",pct_christian:3.5,pop:7e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.04,lng:86.13,code:"PG006196"},{name:"Santal",country:"Nepal",lang:"Santhali",rol3:"sat",pct_christian:3.5,pop:55500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:26.77,lng:86.99,code:"PG006289"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Han Chinese",country:"Nepal",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.71,lng:85.32,code:"PG006216"},{name:"Yakha",country:"Nepal",lang:"Yakkha",rol3:"ybh",pct_christian:3.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Other - Kirati",lat:27.08,lng:86.54,code:"PG006317"},{name:"Brahman (Hindi)",country:"Nepal",lang:"Hindi",rol3:"hin",pct_christian:3.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.43,lng:85.17,code:"PG045937"},{name:"Badhi",country:"Nepal",lang:"Jumli",rol3:"jml",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:28.3,lng:82.82,code:"PG049104"},{name:"Lhomi",country:"Nepal",lang:"Lhomi",rol3:"lhm",pct_christian:3.5,pop:7300,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:27.75,lng:86.08,code:"PG006248"},{name:"British",country:"Nepal",lang:"English",rol3:"eng",pct_christian:3.5,pop:3300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.71,lng:85.32,code:"PG006183"},{name:"Raji",country:"Nepal",lang:"Raji",rol3:"rji",pct_christian:3.5,pop:3100,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:28.61,lng:81.28,code:"PG006282"},{name:"Syuba",country:"Nepal",lang:"Syuba",rol3:"syw",pct_christian:3.5,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:27.45,lng:86.19,code:"PG006226"},{name:"Kusunda",country:"Nepal",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:275,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:27.17,lng:85.13,code:"PG049141"},{name:"Koirao",country:"India",lang:"Boro (India)",rol3:"brx",pct_christian:75,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:25.2,lng:94.05,code:"PG049766"},{name:"Majhi",country:"India",lang:"Majhi",rol3:"mjz",pct_christian:75,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.11,lng:88.35,code:"PG049075"},{name:"Ansari-Momin (Sadri)",country:"India",lang:"Sadri",rol3:"sck",pct_christian:75,pop:225,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.63,lng:85.55,code:"PG048700"},{name:"Hkauri",country:"China",lang:"Tibetan, Central",rol3:"bod",pct_christian:62.5,pop:40,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.55,lng:97.6,code:"PG022169"},{name:"Kharia",country:"India",lang:"Kharia",rol3:"khr",pct_christian:25,pop:889e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.47,lng:84.55,code:"PG041457"},{name:"Oraon",country:"Bhutan",lang:"Kurux",rol3:"kru",pct_christian:25,pop:4200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.88,lng:89.21,code:"PG001235"},{name:"Balmiki (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:17.5,pop:172e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.93,lng:78.08,code:"PG041289"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Domar",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:12.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:25.45,lng:80.38,code:"PG049077"},{name:"Hsifan",country:"Myanmar",lang:"Tibetan, Central",rol3:"bod",pct_christian:12.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Tibetan",lat:27.24,lng:97.64,code:"PG009445"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Dusadh",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:7.5,pop:691e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:25.23,lng:85.31,code:"PG041266"},{name:"Oraon",country:"India",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:551e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:24.4,lng:86.87,code:"PG041304"},{name:"Chamar (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:7.5,pop:1275e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.07,lng:80.62,code:"PG046031"},{name:"Amant",country:"India",lang:"Maithili",rol3:"mai",pct_christian:7.5,pop:244e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.04,lng:86.5,code:"PG042053"},{name:"Oraon",country:"Bangladesh",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.86,lng:88.88,code:"PG001195"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Badaik",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:47500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.23,lng:84.86,code:"PG042092"},{name:"Parhaiya",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.97,lng:84.3,code:"PG041928"},{name:"Chhetri",country:"India",lang:"Nepali",rol3:"npi",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.34,lng:89.24,code:"PG041565"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Kharwar (Khotta)",country:"India",lang:"Maithili",rol3:"mai",pct_christian:7.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.85,lng:87.96,code:"PG048298"},{name:"Yadava (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:8465e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.05,lng:84.06,code:"PG046313"},{name:"Chamar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:455e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.65,lng:84.13,code:"PG046025"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Boro",country:"India",lang:"Boro (India)",rol3:"brx",pct_christian:3.5,pop:1545e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.71,lng:89.29,code:"PG041371"},{name:"Kisan (Kurukh)",country:"India",lang:"Kurux",rol3:"kru",pct_christian:3.5,pop:544e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.1,lng:84.53,code:"PG041504"},{name:"Chamar (Maithili)",country:"India",lang:"Maithili",rol3:"mai",pct_christian:3.5,pop:43e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.09,lng:85.94,code:"PG046040"},{name:"Lohara",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:324e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:25.14,lng:87.24,code:"PG041542"},{name:"Gurung",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:147e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.84,lng:90.63,code:"PG041693"},{name:"Nepali",country:"Bhutan",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.13,lng:89.79,code:"PG042388"},{name:"Beldar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:115e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.35,lng:83.71,code:"PG048209"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Rajbhar",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:89e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.68,lng:80.47,code:"PG042085"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Damai (Nepali)",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:66500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.66,lng:89.08,code:"PG041874"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Binjhia",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22,lng:82.34,code:"PG042025"},{name:"Gond (Sadri) ",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.17,lng:85,code:"PG048262"},{name:"Sarki",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.96,lng:88.33,code:"PG042059"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Gorait",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.21,lng:85.33,code:"PG042169"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Boria",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:3.5,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.09,lng:82.01,code:"PG049076"},{name:"Sherpa",country:"Bhutan",lang:"Sherpa",rol3:"xsr",pct_christian:3.5,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Tibetan",lat:27.49,lng:89.64,code:"PG048796"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"},{name:"Dhamin",country:"India",lang:"Maithili",rol3:"mai",pct_christian:3.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.82,lng:87.13,code:"PG049396"}]},Mali:{target_upg:44,target_pop:22708100,target_top_langs:["Bamanankan","Soninke","Senoufo, Mamara","Fulfulde, Maasina"],target_top_religion:"Islam",neighbors:[{name:"Dogon",country:"Mali",lang:"Dogon, Toro So",rol3:"dts",pct_christian:3.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:14.21,lng:-3.27,code:"PG013545"},{name:"Bobo, Black",country:"Mali",lang:"Konabéré",rol3:"bbo",pct_christian:3.5,pop:48500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.6,lng:-4.54,code:"PG013536"},{name:"Burkina Faso",country:"Canada",lang:"Moore",rol3:"mos",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:43.83,lng:-79.46,code:"PG047453"},{name:"Mossi",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:8335e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.73,lng:-1.3,code:"PG012424"},{name:"Mossi",country:"Ghana",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:526e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:5.57,lng:-.22,code:"PG013360"},{name:"Zaore",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:68e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.36,lng:-1.52,code:"PG012427"},{name:"Fulfulde Masina",country:"Burkina Faso",lang:"Fulfulde, Maasina",rol3:"ffm",pct_christian:7.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:13.38,lng:-3.94,code:"PG012397"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mossi",country:"United States",lang:"Moore",rol3:"mos",pct_christian:3.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.74,lng:-73.72,code:"PG047647"}]},Somalia:{target_upg:20,target_pop:19407100,target_top_langs:["Somali","Maay","Swahili","Garre"],target_top_religion:"Islam",neighbors:[{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Chagga",country:"Tanzania",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1185e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-3.29,lng:37.08,code:"PG014916"},{name:"Swahili",country:"Zambia",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-15.4,lng:28.31,code:"PG015634"},{name:"Zanzibari",country:"South Africa",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-29.84,lng:30.93,code:"PG015550"}]},Malaysia:{target_upg:80,target_pop:18071880,target_top_langs:["Malay","Negeri Sembilan Malay","Bengali","Bajau, West Coast"],target_top_religion:"Islam",neighbors:[{name:"Chavacano",country:"Malaysia",lang:"Chavacano",rol3:"cbk",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:4.47,lng:118.57,code:"PG009226"},{name:"Bundu Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:45,pop:82e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.2,lng:116.43,code:"PG018481"},{name:"Tutoh Kenyah",country:"Malaysia",lang:"Long Wat",rol3:"ttw",pct_christian:45,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.86,lng:114.62,code:"PG019323"},{name:"Beketan",country:"Malaysia",lang:"Bukitan",rol3:"bkn",pct_christian:45,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:2.31,lng:113.01,code:"PG009208"},{name:"Central Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:35,pop:263e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:5.99,lng:116.62,code:"PG018484"},{name:"Tagal Murut",country:"Malaysia",lang:"Murut, Tahol",rol3:"mvv",pct_christian:35,pop:71e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:4.64,lng:116.14,code:"PG009348"},{name:"Southern Murut",country:"Malaysia",lang:"Lundayeh",rol3:"lnd",pct_christian:35,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.42,lng:115.51,code:"PG019277"},{name:"Tambunan Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:35,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.68,lng:116.39,code:"PG019283"},{name:"Madang",country:"Malaysia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:35,pop:23500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:3.5,lng:114.32,code:"PG009289"},{name:"Upper Kinabatangan",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:35,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.42,lng:116.97,code:"PG019329"},{name:"Central Murut",country:"Malaysia",lang:"Murut, Keningau",rol3:"kxi",pct_christian:35,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.35,lng:116.23,code:"PG018486"},{name:"Kalabit",country:"Malaysia",lang:"Kelabit",rol3:"kzi",pct_christian:35,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:3.76,lng:115.3,code:"PG009259"},{name:"Western Kenyah",country:"Malaysia",lang:"Uma’ Lasan",rol3:"xky",pct_christian:35,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:2.06,lng:114.21,code:"PG019333"},{name:"Sekapan",country:"Malaysia",lang:"Sekapan",rol3:"skp",pct_christian:35,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.6,lng:113.74,code:"PG018249"},{name:"Tungara",country:"Malaysia",lang:"Murut, Bookan",rol3:"bnb",pct_christian:35,pop:650,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:5.28,lng:116.53,code:"PG019322"},{name:"Bukar Sadong",country:"Malaysia",lang:"Bidayuh Serian",rol3:"sdo",pct_christian:25,pop:72500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.07,lng:110.62,code:"PG009221"},{name:"Sungai Dusun",country:"Malaysia",lang:"Kadazan, Labuk-Kinabatangan",rol3:"dtb",pct_christian:25,pop:62e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:5.68,lng:116.42,code:"PG019280"},{name:"Sugut Kadazan",country:"Malaysia",lang:"Sugut Dusun",rol3:"kzs",pct_christian:25,pop:19e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.13,lng:117.18,code:"PG019279"},{name:"Tobilang",country:"Malaysia",lang:"Tobilung",rol3:"tgb",pct_christian:25,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.56,lng:116.64,code:"PG009362"},{name:"Baram Kayan",country:"Malaysia",lang:"Kayan, Baram",rol3:"kys",pct_christian:25,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.53,lng:114.46,code:"PG009203"},{name:"Sinabu",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:25,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.3,lng:116.96,code:"PG019271"},{name:"Minokok Dusun",country:"Malaysia",lang:"Minokok",rol3:"mqq",pct_christian:25,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.46,lng:116.8,code:"PG018523"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Kimaragan",country:"Malaysia",lang:"Kimaragang",rol3:"kqr",pct_christian:17.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.53,lng:117.02,code:"PG009265"},{name:"Eastern Kadazan",country:"Malaysia",lang:"Kadazan, Labuk-Kinabatangan",rol3:"dtb",pct_christian:17.5,pop:31500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.58,lng:117.41,code:"PG020232"},{name:"Tidung",country:"Malaysia",lang:"Tidung, Northern",rol3:"ntd",pct_christian:17.5,pop:24500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.34,lng:117.7,code:"PG019289"},{name:"Tudan Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:17.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.01,lng:116.16,code:"PG019321"},{name:"Tambanua",country:"Malaysia",lang:"Tombonuo",rol3:"txa",pct_christian:17.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:6.39,lng:117.23,code:"PG019282"},{name:"Tempasuk Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:17.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.36,lng:116.55,code:"PG009358"},{name:"Balau",country:"Malaysia",lang:"Iban",rol3:"iba",pct_christian:17.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.32,lng:110.85,code:"PG009199"},{name:"Kwijau Dusun",country:"Malaysia",lang:"Kuijau",rol3:"dkr",pct_christian:17.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.43,lng:116.24,code:"PG009274"},{name:"Dusun Segama",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:17.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.16,lng:118.34,code:"PG020229"},{name:"Filipino",country:"Malaysia",lang:"Tagalog",rol3:"tgl",pct_christian:12.5,pop:874e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG018269"},{name:"Sea Dayak",country:"Malaysia",lang:"Iban",rol3:"iba",pct_christian:12.5,pop:68e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:2.27,lng:112.58,code:"PG009325"},{name:"Biatah",country:"Malaysia",lang:"Bidayuh, Biatah",rol3:"bth",pct_christian:12.5,pop:91e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:1.41,lng:110.32,code:"PG009211"},{name:"Rungus Dusun",country:"Malaysia",lang:"Rungus",rol3:"drg",pct_christian:12.5,pop:68e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.84,lng:116.91,code:"PG009320"},{name:"Sarawak Dayak",country:"Malaysia",lang:"Bidayuh, Bau",rol3:"sne",pct_christian:12.5,pop:31500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.46,lng:110.08,code:"PG009324"},{name:"Tutong",country:"Malaysia",lang:"Bisaya, Brunei",rol3:"bsb",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.35,lng:114.68,code:"PG019324"},{name:"Tuaran Dusun",country:"Malaysia",lang:"Lotud",rol3:"dtr",pct_christian:12.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.11,lng:116.24,code:"PG019320"},{name:"Lanas Lobu",country:"Malaysia",lang:"Lobu, Lanas",rol3:"ruu",pct_christian:12.5,pop:6100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.44,lng:116.54,code:"PG009276"},{name:"Millikin",country:"Malaysia",lang:"Remun",rol3:"lkj",pct_christian:12.5,pop:5500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.08,lng:110.66,code:"PG009300"},{name:"Peranakan",country:"Malaysia",lang:"Malay",rol3:"zlm",pct_christian:12.5,pop:5e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.4,lng:101.64,code:"PG018232"},{name:"Keningau Dusun",country:"Malaysia",lang:"Malay, Sabah",rol3:"msi",pct_christian:12.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.4,lng:116.19,code:"PG019337"},{name:"Baokan",country:"Malaysia",lang:"Murut, Bookan",rol3:"bnb",pct_christian:12.5,pop:4200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.28,lng:116.54,code:"PG009202"},{name:"Tampias Lobu",country:"Malaysia",lang:"Lobu, Tampias",rol3:"low",pct_christian:12.5,pop:4e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.74,lng:116.8,code:"PG019284"},{name:"Southern Kota Marudu",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:12.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.46,lng:116.83,code:"PG019276"},{name:"Dusun - Murut",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:12.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.34,lng:116.17,code:"PG020231"},{name:"Klias River Kadazan",country:"Malaysia",lang:"Kadazan, Klias River",rol3:"kqt",pct_christian:12.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.44,lng:115.63,code:"PG009270"},{name:"Han Chinese, Min Nan",country:"Malaysia",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:2375e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.94,lng:102.06,code:"PG046598"},{name:"Han Chinese, Cantonese",country:"Malaysia",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:19e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.65,lng:101.56,code:"PG046594"},{name:"Malayali",country:"Malaysia",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:206e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:3.07,lng:101.64,code:"PG020224"},{name:"Telugu",country:"Malaysia",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:137e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:3.07,lng:101.62,code:"PG009356"},{name:"Han Chinese, Hainanese",country:"Malaysia",lang:"Hainanese",rol3:"hnm",pct_christian:7.5,pop:79e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.07,lng:101.64,code:"PG046595"},{name:"Idahan Dusun",country:"Malaysia",lang:"Ida’an",rol3:"dbj",pct_christian:7.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.38,lng:118.38,code:"PG009252"},{name:"Timogun Murut",country:"Malaysia",lang:"Murut, Timugon",rol3:"tih",pct_christian:7.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.22,lng:115.85,code:"PG009361"},{name:"Kinabatangan Sungai",country:"Malaysia",lang:"Kadazan, Labuk-Kinabatangan",rol3:"dtb",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.54,lng:117.88,code:"PG019338"},{name:"Lara",country:"Malaysia",lang:"Bakati’, Rara",rol3:"lra",pct_christian:7.5,pop:17500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.59,lng:109.77,code:"PG009280"},{name:"Penan",country:"Malaysia",lang:"Penan, Eastern",rol3:"pez",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:3.59,lng:114.98,code:"PG018231"},{name:"Tatana",country:"Malaysia",lang:"Tatana",rol3:"txx",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.47,lng:115.52,code:"PG019285"},{name:"Kalabuan",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:7.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.4,lng:117.02,code:"PG009260"},{name:"Sembakung Murut",country:"Malaysia",lang:"Murut, Sembakung",rol3:"sbr",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.38,lng:116.43,code:"PG009334"},{name:"Sebuyau",country:"Malaysia",lang:"Iban",rol3:"iba",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.45,lng:110.55,code:"PG018247"},{name:"Bintulu",country:"Malaysia",lang:"Vaie",rol3:"bny",pct_christian:7.5,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.23,lng:112.98,code:"PG009212"},{name:"Selekau",country:"Malaysia",lang:"Kendayan",rol3:"knx",pct_christian:7.5,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:1.71,lng:109.77,code:"PG018250"},{name:"Rejang Kayan",country:"Malaysia",lang:"Kayan, Rejang",rol3:"ree",pct_christian:7.5,pop:7400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.55,lng:113.9,code:"PG018236"},{name:"Sonsogon",country:"Malaysia",lang:"Kimaragang",rol3:"kqr",pct_christian:7.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.5,lng:116.86,code:"PG019275"},{name:"Sibop Kenyah",country:"Malaysia",lang:"Sebop",rol3:"sib",pct_christian:7.5,pop:4200,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:3.35,lng:114.3,code:"PG019270"},{name:"Kalabakan Murut",country:"Malaysia",lang:"Murut, Kalabakan",rol3:"kve",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:4.53,lng:117.34,code:"PG009258"},{name:"Serudung Murut",country:"Malaysia",lang:"Murut, Serudung",rol3:"srk",pct_christian:7.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.37,lng:117.31,code:"PG009338"},{name:"Saban",country:"Malaysia",lang:"Sa’ban",rol3:"snv",pct_christian:7.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.22,lng:115.4,code:"PG009321"},{name:"Dumpas",country:"Malaysia",lang:"Dumpas",rol3:"dmv",pct_christian:7.5,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.97,lng:117.35,code:"PG009244"},{name:"Rejang Punan",country:"Malaysia",lang:"Punan Bah-Biau",rol3:"pna",pct_christian:7.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.09,lng:113.39,code:"PG009319"},{name:"Tring",country:"Malaysia",lang:"Tring",rol3:"tgq",pct_christian:7.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:3.98,lng:114.64,code:"PG019319"},{name:"Selungai Murut",country:"Malaysia",lang:"Murut, Selungai",rol3:"slg",pct_christian:7.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.52,lng:116.43,code:"PG009330"},{name:"Tamil",country:"Malaysia",lang:"Tamil",rol3:"tam",pct_christian:3.5,pop:26e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:3.9,lng:104.29,code:"PG009351"},{name:"Han Chinese, English",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:3.5,pop:2395e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.04,lng:102.22,code:"PG046932"},{name:"Han Chinese, Mandarin",country:"Malaysia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:1015e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:4.14,lng:101.06,code:"PG046597"},{name:"Indonesian",country:"Malaysia",lang:"Indonesian",rol3:"ind",pct_christian:3.5,pop:343e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:3.07,lng:101.64,code:"PG020239"},{name:"Melanau",country:"Malaysia",lang:"Melanau, Central",rol3:"mel",pct_christian:3.5,pop:159e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:2.54,lng:111.89,code:"PG018518"},{name:"Coastal Kadazan",country:"Malaysia",lang:"Papar",rol3:"dpp",pct_christian:3.5,pop:137e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.43,lng:115.5,code:"PG020225"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Kanarese",country:"Malaysia",lang:"Kannada",rol3:"kan",pct_christian:3.5,pop:72e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:1.51,lng:103.76,code:"PG019334"},{name:"Semai",country:"Malaysia",lang:"Semai",rol3:"sea",pct_christian:3.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.11,lng:101.3,code:"PG009331"},{name:"Sinhalese",country:"Malaysia",lang:"Sinhala",rol3:"sin",pct_christian:3.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018261"},{name:"Burmese",country:"Malaysia",lang:"Burmese",rol3:"mya",pct_christian:3.5,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018483"},{name:"Temuan",country:"Malaysia",lang:"Temuan",rol3:"tmw",pct_christian:3.5,pop:22500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.56,lng:101.72,code:"PG009359"},{name:"Daro - Matu",country:"Malaysia",lang:"Melanau, Daro-Matu",rol3:"dro",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:2.62,lng:111.54,code:"PG020227"},{name:"British",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:3.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:3.07,lng:101.62,code:"PG009217"},{name:"Japanese",country:"Malaysia",lang:"Japanese",rol3:"jpn",pct_christian:3.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:3.07,lng:101.64,code:"PG020241"},{name:"Semelai",country:"Malaysia",lang:"Semelai",rol3:"sza",pct_christian:3.5,pop:8e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.05,lng:102.62,code:"PG009335"},{name:"Peluan",country:"Malaysia",lang:"Murut, Paluan",rol3:"plz",pct_christian:3.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.12,lng:116.24,code:"PG009313"},{name:"Jah Hut",country:"Malaysia",lang:"Jah Hut",rol3:"jah",pct_christian:3.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.59,lng:102.33,code:"PG009254"},{name:"Semoq Beri",country:"Malaysia",lang:"Semaq Beri",rol3:"szc",pct_christian:3.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.06,lng:102.85,code:"PG009333"},{name:"Narom",country:"Malaysia",lang:"Narom",rol3:"nrm",pct_christian:3.5,pop:5200,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:4.21,lng:113.93,code:"PG009306"},{name:"Lower Murut",country:"Malaysia",lang:"Murut, Timugon",rol3:"tih",pct_christian:3.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.18,lng:115.93,code:"PG020131"},{name:"Pandewan Murut",country:"Malaysia",lang:"Murut, Paluan",rol3:"plz",pct_christian:3.5,pop:2900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.13,lng:116.22,code:"PG018226"},{name:"Murik Kayan",country:"Malaysia",lang:"Murik (Malaysia)",rol3:"mxr",pct_christian:3.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.6,lng:114.41,code:"PG009305"},{name:"Bakong Kenyah",country:"Malaysia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:3.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:1.48,lng:114.55,code:"PG009198"},{name:"Bateq",country:"Malaysia",lang:"Batek",rol3:"btq",pct_christian:3.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.68,lng:102.47,code:"PG009204"},{name:"Bajau Bukit",country:"Malaysia",lang:"Papar",rol3:"dpp",pct_christian:3.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.6,lng:115.6,code:"PG018466"},{name:"Berawan",country:"Malaysia",lang:"Berawan, West",rol3:"zbw",pct_christian:3.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4,lng:114.71,code:"PG009210"},{name:"Orang Seletar",country:"Malaysia",lang:"Orang Seletar",rol3:"ors",pct_christian:3.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.6,lng:104.13,code:"PG018223"},{name:"Kayaman",country:"Malaysia",lang:"Kajaman",rol3:"kag",pct_christian:3.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.7,lng:114.06,code:"PG009262"},{name:"Siduan",country:"Malaysia",lang:"Melanau, Sibu",rol3:"sdx",pct_christian:3.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:2.33,lng:111.76,code:"PG009341"},{name:"Kanowit",country:"Malaysia",lang:"Melanau, Kanowit-Tanjong",rol3:"kxn",pct_christian:3.5,pop:425,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.06,lng:112.25,code:"PG009261"},{name:"Lanoh",country:"Malaysia",lang:"Lanoh",rol3:"lnh",pct_christian:3.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.1,lng:101.03,code:"PG009279"},{name:"Ukit",country:"Malaysia",lang:"Ukit",rol3:"umi",pct_christian:3.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.71,lng:113.04,code:"PG019326"},{name:"Tanjong",country:"Malaysia",lang:"Melanau, Kanowit-Tanjong",rol3:"kxn",pct_christian:3.5,pop:250,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.06,lng:112.25,code:"PG009353"},{name:"Sian",country:"Malaysia",lang:"Sihan (Malaysia)",rol3:"spg",pct_christian:3.5,pop:175,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.7,lng:113.83,code:"PG009339"},{name:"Batu Punan",country:"Malaysia",lang:"Punan Batu",rol3:"pnm",pct_christian:3.5,pop:125,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.21,lng:114.35,code:"PG018470"},{name:"Orang Kanaq",country:"Malaysia",lang:"Malay",rol3:"zlm",pct_christian:3.5,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.88,lng:104.03,code:"PG018222"},{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Soria",country:"India",lang:"Hindi",rol3:"hin",pct_christian:62.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.2,lng:77.09,code:"PG048955"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Meghval",country:"India",lang:"Hindi",rol3:"hin",pct_christian:45,pop:377e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.87,lng:73.03,code:"PG041328"},{name:"Gounder",country:"India",lang:"Tamil",rol3:"tam",pct_christian:25,pop:6e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.68,lng:78.22,code:"PG041906"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"Chamail",country:"India",lang:"Hindi",rol3:"hin",pct_christian:25,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:25.48,lng:85.95,code:"PG049469"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Badhi",country:"India",lang:"Hindi",rol3:"hin",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:29.95,lng:77.55,code:"PG041480"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Chakravar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.62,lng:77,code:"PG041956"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Han Chinese, Min Nan",country:"Canada",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:12.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:45.42,lng:-75.69,code:"PG047427"},{name:"Samban",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.7,lng:77.49,code:"PG041752"},{name:"Mehtar",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:16.22,lng:75.63,code:"PG042116"},{name:"Palliyan",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.89,lng:77.09,code:"PG049215"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Gharrami",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:28.64,lng:77.12,code:"PG049392"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Han Chinese, Min Nan",country:"China",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:3555e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:23.42,lng:115.05,code:"PG006805"},{name:"Nadar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:6365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.17,lng:77.82,code:"PG041309"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Vellalar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:308e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.78,lng:77.78,code:"PG041493"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Han Chinese, Min Nan",country:"Singapore",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:1785e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020729"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Indian - Hindu",country:"South Africa",lang:"Hindi",rol3:"hin",pct_christian:7.5,pop:1365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:-28.9,lng:26.75,code:"PG042180"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"}]},Russia:{target_upg:120,target_pop:17727020,target_top_langs:["Tatar","Chechen","Bashkort","Avar"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Russian Federation",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:62e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:51.07,lng:119.29,code:"PG048686"},{name:"Ukrainian",country:"Russian Federation",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:112e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:51.59,lng:82.8,code:"PG048814"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Finn",country:"Canada",lang:"Finnish",rol3:"fin",pct_christian:12.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:47.13,lng:-83.66,code:"PG043394"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Saami, Aanaar",country:"Finland",lang:"Finnish",rol3:"fin",pct_christian:12.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:69.11,lng:27.17,code:"PG000110"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Finn",country:"Finland",lang:"Finnish",rol3:"fin",pct_christian:3.5,pop:4975e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:64.5,lng:26.27,code:"PG000109"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Finn",country:"Sweden",lang:"Finnish",rol3:"fin",pct_christian:3.5,pop:223e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:58.52,lng:14.92,code:"PG000553"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Finn",country:"United States",lang:"Finnish",rol3:"fin",pct_christian:3.5,pop:39e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:46.89,lng:-88.69,code:"PG043240"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"}]},Cambodia:{target_upg:19,target_pop:17466400,target_top_langs:["Khmer","Vietnamese","Cham, Western","Chinese, Min Nan"],target_top_religion:"Buddhism",neighbors:[{name:"Thmaun",country:"Cambodia",lang:"Undetermined",rol3:"und",pct_christian:45,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:13.12,lng:106.43,code:"PG022376"},{name:"Stieng",country:"Cambodia",lang:"Stieng, Bulo",rol3:"sti",pct_christian:17.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.11,lng:106.45,code:"PG008194"},{name:"Jarai",country:"Cambodia",lang:"Jarai",rol3:"jra",pct_christian:7.5,pop:21e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:13.64,lng:107.44,code:"PG020437"},{name:"Kachok",country:"Cambodia",lang:"Kachok",rol3:"xkk",pct_christian:7.5,pop:3900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:13.93,lng:107.31,code:"PG020439"},{name:"Tamil",country:"Cambodia",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:11.55,lng:104.91,code:"PG008196"},{name:"Han Chinese",country:"Cambodia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:519e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:11.55,lng:104.87,code:"PG033445"},{name:"Phnong",country:"Cambodia",lang:"Mnong, Central",rol3:"cmo",pct_christian:3.5,pop:47500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.77,lng:106.83,code:"PG020443"},{name:"Brao",country:"Cambodia",lang:"Brao",rol3:"brb",pct_christian:3.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.32,lng:107.24,code:"PG018251"},{name:"Khmer Keh",country:"Cambodia",lang:"Khmer, Northern",rol3:"kxm",pct_christian:3.5,pop:5200,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Folk",lat:14.12,lng:106.34,code:"PG047854"},{name:"Rhade",country:"United States",lang:"Rade",rol3:"rad",pct_christian:62.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.17,lng:-80.8,code:"PG050362"},{name:"Rhade",country:"Vietnam",lang:"Rade",rol3:"rad",pct_christian:45,pop:331e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.96,lng:108.31,code:"PG011211"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Sin",country:"Laos",lang:"Lao",rol3:"lao",pct_christian:12.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:18.06,lng:105.09,code:"PG050561"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Burmese",country:"Malaysia",lang:"Burmese",rol3:"mya",pct_christian:3.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018483"},{name:"Lao",country:"Myanmar",lang:"Lao",rol3:"lao",pct_christian:3.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:16.85,lng:96.15,code:"PG009467"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"}]},Kazakhstan:{target_upg:39,target_pop:16547800,target_top_langs:["Kazakh","Uzbek, Northern","Uyghur","Tatar"],target_top_religion:"Islam",neighbors:[{name:"Latvian",country:"Kazakhstan",lang:"Latvian, Standard",rol3:"lvs",pct_christian:17.5,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:43.29,lng:76.91,code:"PG024285"},{name:"Ukrainian",country:"Kazakhstan",lang:"Ukrainian",rol3:"ukr",pct_christian:12.5,pop:415e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:48.48,lng:71.3,code:"PG024330"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Pole",country:"Kazakhstan",lang:"Polish",rol3:"pol",pct_christian:12.5,pop:62e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:43.29,lng:76.91,code:"PG024292"},{name:"Han Chinese, Mandarin",country:"Kazakhstan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:51.17,lng:71.45,code:"PG049243"},{name:"Karakalpak",country:"Kazakhstan",lang:"Karakalpak",rol3:"kaa",pct_christian:3.5,pop:1900,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:45.62,lng:62.06,code:"PG024276"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Romani, Sinte",country:"Canada",lang:"Romani, Sinte",rol3:"rmo",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.52,lng:-73.68,code:"PG043471"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Estonian",country:"Estonia",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:9e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:58.67,lng:25.55,code:"PG000779"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Estonian",country:"Canada",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043392"},{name:"Greek",country:"Czech Republic",lang:"Greek",rol3:"ell",pct_christian:7.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.82,lng:17.98,code:"PG048862"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"}]},Senegal:{target_upg:30,target_pop:15310200,target_top_langs:["Wolof","Pulaar","Maninkakan, Western","Mandinka"],target_top_religion:"Islam",neighbors:[{name:"Caboverdian Mestico",country:"Senegal",lang:"Kabuverdianu",rol3:"kea",pct_christian:12.5,pop:54e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:14.73,lng:-17.44,code:"PG014223"},{name:"English Creole",country:"Senegal",lang:"Krio",rol3:"kri",pct_christian:3.5,pop:9600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:14.73,lng:-17.44,code:"PG014225"},{name:"Papel",country:"Senegal",lang:"Papel",rol3:"pbo",pct_christian:3.5,pop:9600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.57,lng:-16.27,code:"PG014254"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mandyak",country:"Gambia",lang:"Mandjak",rol3:"mfv",pct_christian:3.5,pop:47e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:13.39,lng:-16.69,code:"PG013238"},{name:"Badyara",country:"Guinea-Bissau",lang:"Badyara",rol3:"pbp",pct_christian:3.5,pop:7300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.59,lng:-13.77,code:"PG013442"}]},"United States":{target_upg:98,target_pop:14806100,target_top_langs:["English","Hindi","Gujarati","Russian"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Mennonite",country:"United States",lang:"Plautdietsch",rol3:"pdt",pct_christian:62.5,pop:15500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.43,lng:-97.5,code:"PG043327"},{name:"Kachin, Rawang",country:"United States",lang:"Rawang",rol3:"raw",pct_christian:62.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.85,lng:-96.97,code:"PG050380"},{name:"Bunong",country:"United States",lang:"Mnong, Central",rol3:"cmo",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.28,lng:-80.21,code:"PG050338"},{name:"Rhade",country:"United States",lang:"Rade",rol3:"rad",pct_christian:62.5,pop:250,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.17,lng:-80.8,code:"PG050362"},{name:"Chin, Zomi",country:"United States",lang:"Zo",rol3:"zom",pct_christian:62.5,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:36.03,lng:-85.61,code:"PG050344"},{name:"Chin, Zotung",country:"United States",lang:"Chin, Zotung",rol3:"czt",pct_christian:62.5,pop:175,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:36.28,lng:-89.53,code:"PG050345"},{name:"Chin, Haka",country:"United States",lang:"Chin, Hakha",rol3:"cnh",pct_christian:62.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:37.35,lng:-90.04,code:"PG050340"},{name:"Naga, Tangkhul",country:"United States",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.85,lng:-96.97,code:"PG050369"},{name:"Niuean",country:"United States",lang:"Niue",rol3:"niu",pct_christian:62.5,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047289"},{name:"Chin, Falam",country:"United States",lang:"Chin, Falam",rol3:"cfm",pct_christian:62.5,pop:30,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.09,lng:-81.04,code:"PG050339"},{name:"Chin, Mara",country:"United States",lang:"Mara",rol3:"mrh",pct_christian:62.5,pop:30,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.09,lng:-81.04,code:"PG050341"},{name:"Chin, Tiddim",country:"United States",lang:"Chin, Tedim",rol3:"ctd",pct_christian:62.5,pop:30,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.09,lng:-81.04,code:"PG050342"},{name:"Kuripako",country:"United States",lang:"Curripaco",rol3:"kpc",pct_christian:45,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG043219"},{name:"Lisu",country:"United States",lang:"Lisu",rol3:"lis",pct_christian:45,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.05,lng:-112.65,code:"PG050353"},{name:"Koho",country:"United States",lang:"Koho",rol3:"kpm",pct_christian:35,pop:3100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.17,lng:-80.8,code:"PG050364"},{name:"French Polynesian",country:"United States",lang:"Tahitian",rol3:"tah",pct_christian:35,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047193"},{name:"Karen S'gaw",country:"United States",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:35,pop:325,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.35,lng:-119.02,code:"PG047263"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Yoruba",country:"United States",lang:"Yoruba",rol3:"yor",pct_christian:25,pop:152e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - African Traditional Religion",lat:38.9,lng:-77.19,code:"PG047644"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Bahamian",country:"United States",lang:"Bahamas English Creole",rol3:"bah",pct_christian:25,pop:33e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.18,lng:-80.23,code:"PG043531"},{name:"Marshallese",country:"United States",lang:"Marshallese",rol3:"mah",pct_christian:25,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047281"},{name:"Jarai",country:"United States",lang:"Jarai",rol3:"jra",pct_christian:25,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:35.17,lng:-80.8,code:"PG050355"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Rwandan",country:"United States",lang:"Kinyarwanda",rol3:"kin",pct_christian:25,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:40.74,lng:-73.72,code:"PG047295"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Motilon, Bari",country:"United States",lang:"Barí",rol3:"mot",pct_christian:25,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG043532"},{name:"Madi",country:"United States",lang:"Ma’di",rol3:"mhi",pct_christian:25,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:29.79,lng:-95.4,code:"PG050386"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"Zapotec, Cajonos",country:"United States",lang:"Zapotec, Cajonos",rol3:"zad",pct_christian:25,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.22,lng:-118.15,code:"PG049292"},{name:"Kachin, Jingpho",country:"United States",lang:"Jingpho",rol3:"kac",pct_christian:25,pop:175,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:31.43,lng:-96.28,code:"PG047264"},{name:"Marquesan",country:"United States",lang:"Marquesan, North",rol3:"mrq",pct_christian:25,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:21.46,lng:-157.97,code:"PG047282"},{name:"Rarotongan",country:"United States",lang:"Cook Islands Maori",rol3:"rar",pct_christian:25,pop:100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047297"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Tzeltal",country:"United States",lang:"Tzeltal",rol3:"tzh",pct_christian:17.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.17,lng:-119.44,code:"PG049313"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Hutterite",country:"United States",lang:"Hutterisch",rol3:"geh",pct_christian:17.5,pop:7e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-104.13,code:"PG043273"},{name:"Montserratian",country:"United States",lang:"Leeward Caribbean English Creole",rol3:"aig",pct_christian:17.5,pop:5100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.18,lng:-80.23,code:"PG047292"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Melanesian",country:"United States",lang:"Tok Pisin",rol3:"tpi",pct_christian:17.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.78,lng:-121,code:"PG046504"},{name:"Mokilese",country:"United States",lang:"Mokilese",rol3:"mkj",pct_christian:17.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047278"},{name:"Kikuyu",country:"United States",lang:"Gikuyu",rol3:"kik",pct_christian:17.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:38.94,lng:-94.44,code:"PG050382"},{name:"Zapotec, Southern Rincon",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.36,lng:-109.45,code:"PG049308"},{name:"Puerto Rican",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:4035e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.35,lng:-95.96,code:"PG043603"},{name:"Filipino, Tagalog",country:"United States",lang:"Tagalog",rol3:"tgl",pct_christian:12.5,pop:252e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.26,lng:-104.56,code:"PG043239"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Latvian",country:"United States",lang:"Latvian, Standard",rol3:"lvs",pct_christian:12.5,pop:111e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:38.9,lng:-77.19,code:"PG043321"},{name:"Garifuna",country:"United States",lang:"Garifuna",rol3:"cab",pct_christian:12.5,pop:71500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:26.18,lng:-80.23,code:"PG047649"},{name:"American Samoan",country:"United States",lang:"Samoan",rol3:"smo",pct_christian:12.5,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:33.98,lng:-118.1,code:"PG043514"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Belizean",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:43500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:33.94,lng:-118.12,code:"PG047184"},{name:"Chol",country:"United States",lang:"Chol",rol3:"ctu",pct_christian:12.5,pop:39e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.17,lng:-119.44,code:"PG049314"},{name:"Tongan",country:"United States",lang:"Tongan",rol3:"ton",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:37.74,lng:-122.29,code:"PG043655"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Nahuatl, Isthmus",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:31.63,lng:-89.16,code:"PG049280"},{name:"Krio",country:"United States",lang:"Krio",rol3:"kri",pct_christian:12.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047260"},{name:"Trukese",country:"United States",lang:"Chuukese",rol3:"chk",pct_christian:12.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:21.46,lng:-157.97,code:"PG046505"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Palauan",country:"United States",lang:"Palauan",rol3:"pau",pct_christian:12.5,pop:4700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047310"},{name:"Fijian",country:"United States",lang:"Fijian",rol3:"fij",pct_christian:12.5,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.73,lng:-120.56,code:"PG043238"},{name:"Ewe",country:"United States",lang:"Éwé",rol3:"ewe",pct_christian:12.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:32.85,lng:-96.97,code:"PG050366"},{name:"Pueblo, Jemez",country:"United States",lang:"Jemez",rol3:"tow",pct_christian:12.5,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.68,lng:-106.79,code:"PG043288"},{name:"Mohawk",country:"United States",lang:"Mohawk",rol3:"moh",pct_christian:12.5,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:44.97,lng:-74.54,code:"PG043551"},{name:"Tolowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:41.9,lng:-124.16,code:"PG050627"},{name:"Sac & Fox Tribe of the Mississippi in Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:41.98,lng:-92.65,code:"PG043616"},{name:"Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.99,lng:-95.39,code:"PG043277"},{name:"Central Africans",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047190"},{name:"Kusaiean",country:"United States",lang:"Kosraean",rol3:"kos",pct_christian:12.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047209"},{name:"Tubatulabal",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:36.07,lng:-118.31,code:"PG043660"},{name:"Nez Perce",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-116.41,code:"PG043560"},{name:"Salinan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Folk Catholicism",lat:35.83,lng:-120.77,code:"PG050637"},{name:"Swazi",country:"United States",lang:"Swati",rol3:"ssw",pct_christian:12.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047227"},{name:"Chuj",country:"United States",lang:"Chuj",rol3:"cac",pct_christian:12.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:34.88,lng:-82.36,code:"PG049269"},{name:"Sac & Fox Nation of Missouri in Kansas and Nebraska",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.01,lng:-95.52,code:"PG050671"},{name:"Kwakwakaʼwakw",country:"United States",lang:"Kwakwala",rol3:"kwk",pct_christian:12.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.1,lng:-123.12,code:"PG047208"},{name:"Puinave",country:"United States",lang:"Puinave",rol3:"pui",pct_christian:12.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG043604"},{name:"Basotho",country:"United States",lang:"Sotho, Southern",rol3:"sot",pct_christian:12.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047274"},{name:"Bahnar",country:"United States",lang:"Bahnar",rol3:"bdq",pct_christian:12.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:35.17,lng:-80.8,code:"PG050336"},{name:"Haida",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:55.19,lng:-132.88,code:"PG043257"},{name:"Tokelauan",country:"United States",lang:"Tokelauan",rol3:"tkl",pct_christian:12.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047304"},{name:"Embu-Mbeere",country:"United States",lang:"Kiembu",rol3:"ebu",pct_christian:12.5,pop:100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.85,lng:-96.97,code:"PG050365"},{name:"Cayuga",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:60,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:42.55,lng:-79,code:"PG043191"},{name:"American, Spanish Speaking",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:2056e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.62,lng:-106.27,code:"PG043518"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Salvadoran",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:1915e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.62,lng:-108.3,code:"PG046515"},{name:"Chinese American",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:175e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG050453"},{name:"Dominican",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:1465e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.36,lng:-86.45,code:"PG046509"},{name:"Guatemalan",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:125e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.99,lng:-105.58,code:"PG046516"},{name:"Honduran",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:1105e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.51,lng:-104,code:"PG046517"},{name:"Haitian",country:"United States",lang:"Haitian Creole",rol3:"hat",pct_christian:7.5,pop:716e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:31.04,lng:-78.18,code:"PG046510"},{name:"Jamaican",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:588e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.14,lng:-77.63,code:"PG043284"},{name:"Detribalized Amerindian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:454e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.9,lng:-111.06,code:"PG043225"},{name:"Ecuadorian",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:432e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.55,lng:-86.97,code:"PG046525"},{name:"Brazilian",country:"United States",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:32e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.44,lng:-97.31,code:"PG046522"},{name:"Cape Verdean",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:309e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:37.42,lng:-74.94,code:"PG047254"},{name:"Nicaraguan",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:259e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:33.99,lng:-111.48,code:"PG046518"},{name:"Guyanese",country:"United States",lang:"Guyanese English Creole",rol3:"gyn",pct_christian:7.5,pop:245e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:40.72,lng:-73.86,code:"PG046526"},{name:"Igbo",country:"United States",lang:"Igbo",rol3:"ibo",pct_christian:7.5,pop:234e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.21,lng:-76.75,code:"PG047202"},{name:"Argentine",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:223e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.49,lng:-103.74,code:"PG046520"},{name:"Ghanaian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:204e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG046500"},{name:"Yucatec",country:"United States",lang:"Maya, Yucatec",rol3:"yua",pct_christian:7.5,pop:201e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:34.58,lng:-118.81,code:"PG047279"},{name:"Trinidadian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:174e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.69,lng:-73.86,code:"PG046512"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Malayali",country:"United States",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:165e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:40.72,lng:-73.97,code:"PG043340"},{name:"Chilean",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:147e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.62,lng:-116.39,code:"PG046523"},{name:"Pennsylvania Dutch",country:"United States",lang:"German, Pennsylvania",rol3:"pdc",pct_christian:7.5,pop:139e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.34,lng:-75.87,code:"PG043593"},{name:"Choctaw",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:121e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.5,lng:-95.33,code:"PG043202"},{name:"Bolivian",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:115e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.67,lng:-99.44,code:"PG046521"},{name:"Liberian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG047273"},{name:"Kenyan",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:96e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:33.32,lng:-92.72,code:"PG050473"},{name:"Ilocano",country:"United States",lang:"Ilocano",rol3:"ilo",pct_christian:7.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:21.46,lng:-157.97,code:"PG043275"},{name:"Nahuatl, Huasteca",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:87e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:33.97,lng:-84.02,code:"PG049279"},{name:"Anglo-Australian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:84e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.02,lng:-98.4,code:"PG043519"},{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Mam",country:"United States",lang:"Mam",rol3:"mam",pct_christian:7.5,pop:78500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:33.98,lng:-118.1,code:"PG047319"},{name:"Tzotzil",country:"United States",lang:"Tzotzil",rol3:"tzo",pct_christian:7.5,pop:76500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:37.59,lng:-122.17,code:"PG049309"},{name:"Swede",country:"United States",lang:"Swedish",rol3:"swe",pct_christian:7.5,pop:63e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:33.94,lng:-118.12,code:"PG043643"},{name:"Creek, Muskogee",country:"United States",lang:"Muskogee",rol3:"mus",pct_christian:7.5,pop:56500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.65,lng:-96.02,code:"PG043554"},{name:"Norwegian",country:"United States",lang:"Norwegian",rol3:"nor",pct_christian:7.5,pop:44500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:44.96,lng:-93.28,code:"PG043575"},{name:"Iu Mien",country:"United States",lang:"Iu Mien",rol3:"ium",pct_christian:7.5,pop:38500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:38.75,lng:-111.78,code:"PG043283"},{name:"Saint Lucian",country:"United States",lang:"Lesser Antillean French Creole",rol3:"acf",pct_christian:7.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:40.72,lng:-73.97,code:"PG047284"},{name:"Cree, Plains",country:"United States",lang:"Cree, Plains",rol3:"crk",pct_christian:7.5,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.71,lng:-102.69,code:"PG043683"},{name:"Blackfoot, Siksika",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:32e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.66,lng:-112.87,code:"PG043538"},{name:"O'odham, Tohono",country:"United States",lang:"Tohono O’odham",rol3:"ood",pct_christian:7.5,pop:30500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.15,lng:-112.07,code:"PG043670"},{name:"Potawatomi",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.34,lng:-95.84,code:"PG043601"},{name:"Chamorro",country:"United States",lang:"Chamorro",rol3:"cha",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:33.94,lng:-118.12,code:"PG047251"},{name:"Hopi, Hopitu-Shinumu",country:"United States",lang:"Hopi",rol3:"hop",pct_christian:7.5,pop:21e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.9,lng:-110.58,code:"PG043269"},{name:"Popti",country:"United States",lang:"Jakalteko",rol3:"jac",pct_christian:7.5,pop:20500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.61,lng:-80.17,code:"PG049284"},{name:"Tlingit",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:57.16,lng:-133.75,code:"PG043653"},{name:"Nahuatl, Northern Puebla",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:36.03,lng:-78.88,code:"PG049281"},{name:"Apache, Western",country:"United States",lang:"Apache, Western",rol3:"apw",pct_christian:7.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:33.88,lng:-110.16,code:"PG043682"},{name:"Nuer",country:"United States",lang:"Nuer",rol3:"nus",pct_christian:7.5,pop:15e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.82,lng:-96.97,code:"PG046705"},{name:"Comanche",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.56,lng:-98.43,code:"PG043209"},{name:"Cheyenne",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:45.53,lng:-106.68,code:"PG043198"},{name:"Azande",country:"United States",lang:"Zande",rol3:"zne",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:33.59,lng:-96.89,code:"PG046709"},{name:"Crow",country:"United States",lang:"Crow",rol3:"cro",pct_christian:7.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:45.4,lng:-107.76,code:"PG043215"},{name:"Afro-Grenadian",country:"United States",lang:"Grenadian English Creole",rol3:"gcl",pct_christian:7.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:41.29,lng:-75.74,code:"PG050350"},{name:"Pueblo, Santa Clara",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Native American religions",lat:35.98,lng:-106.22,code:"PG050653"},{name:"Zuni Pueblo",country:"United States",lang:"Zuni",rol3:"zun",pct_christian:7.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Native American religions",lat:35.09,lng:-108.74,code:"PG043703"},{name:"Shoshoni",country:"United States",lang:"Shoshoni",rol3:"shh",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:41.35,lng:-109.85,code:"PG043624"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Houma, Half-Choctaw",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:9500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:29.78,lng:-90.59,code:"PG043270"},{name:"Arapaho",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:9300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.15,lng:-102.16,code:"PG043524"},{name:"Flathead-Kalispel",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:47.5,lng:-114.28,code:"PG043241"},{name:"Han Chinese, Wu",country:"United States",lang:"Chinese, Wu",rol3:"wuu",pct_christian:7.5,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:40.74,lng:-73.72,code:"PG047187"},{name:"Zapotec, Loxicha",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:8e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Folk Catholicism",lat:32.79,lng:-117.08,code:"PG049324"},{name:"Paiute, Southern",country:"United States",lang:"Ute-Southern Paiute",rol3:"ute",pct_christian:7.5,pop:7600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.9,lng:-110.13,code:"PG043634"},{name:"Paiute, Northern",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:7400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.69,lng:-119.19,code:"PG043570"},{name:"Kiowa",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:7200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.01,lng:-98.78,code:"PG043305"}]},Guinea:{target_upg:30,target_pop:13009200,target_top_langs:["Pular","Maninkakan, Eastern","Susu","Konyanka"],target_top_religion:"Islam",neighbors:[{name:"Kissi",country:"Guinea",lang:"Kissi, Northern",rol3:"kqs",pct_christian:7.5,pop:646e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:8.89,lng:-10.2,code:"PG013412"},{name:"Baga Binari",country:"Guinea",lang:"Baga Pokur",rol3:"bcg",pct_christian:7.5,pop:4900,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.53,lng:-14.62,code:"PG042197"},{name:"Loko",country:"Guinea",lang:"Loko",rol3:"lok",pct_christian:7.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.34,lng:-12.86,code:"PG013423"},{name:"Kpelle",country:"Guinea",lang:"Kpelle, Guinea",rol3:"gkp",pct_christian:3.5,pop:6e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:7.83,lng:-8.89,code:"PG013413"},{name:"Toma",country:"Guinea",lang:"Toma",rol3:"tod",pct_christian:3.5,pop:331e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.8,lng:-9.82,code:"PG013433"},{name:"Dan Yakuba",country:"Liberia",lang:"Dan",rol3:"dnj",pct_christian:12.5,pop:245e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:6.83,lng:-8.77,code:"PG013483"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Dan Yakuba",country:"Cote d’Ivoire",lang:"Dan",rol3:"dnj",pct_christian:3.5,pop:1945e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:7.48,lng:-7.86,code:"PG013066"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mano",country:"Liberia",lang:"Maan",rol3:"mev",pct_christian:3.5,pop:44e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:6.87,lng:-8.98,code:"PG013517"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Badyara",country:"Guinea-Bissau",lang:"Badyara",rol3:"pbp",pct_christian:3.5,pop:7300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.59,lng:-13.77,code:"PG013442"}]},Tunisia:{target_upg:17,target_pop:12220300,target_top_langs:["Arabic, Tunisian","Arabic, Libyan","Arabic, Algerian","Arabic, Algerian Saharan"],target_top_religion:"Islam",neighbors:[{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"}]},Chad:{target_upg:82,target_pop:11754900,target_top_langs:["Arabic, Chadian","Kanembu","Dazaga","Maba (Chad)"],target_top_religion:"Islam",neighbors:[{name:"Goundo",country:"Chad",lang:"Kabalai",rol3:"kvf",pct_christian:45,pop:50,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:9.55,lng:16.2,code:"PG011355"},{name:"Nzakmbay",country:"Chad",lang:"Nzakambay",rol3:"nzy",pct_christian:25,pop:45500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.77,lng:15.86,code:"PG011438"},{name:"Ruto",country:"Chad",lang:"Luto",rol3:"ndy",pct_christian:25,pop:6400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.22,lng:18.44,code:"PG011443"},{name:"Besme",country:"Chad",lang:"Besme",rol3:"bes",pct_christian:25,pop:4e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.59,lng:16.09,code:"PG011321"},{name:"Mesme",country:"Chad",lang:"Mesme",rol3:"zim",pct_christian:17.5,pop:39e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.32,lng:15.53,code:"PG011414"},{name:"Mangbai",country:"Chad",lang:"Mambai",rol3:"mcs",pct_christian:12.5,pop:6400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.63,lng:14.06,code:"PG011400"},{name:"Pana",country:"Chad",lang:"Pana (Central African Republic)",rol3:"pnz",pct_christian:12.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.54,lng:15.7,code:"PG011439"},{name:"Nancere",country:"Chad",lang:"Nancere",rol3:"nnc",pct_christian:7.5,pop:231e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.28,lng:16.12,code:"PG011432"},{name:"Gabere",country:"Chad",lang:"Gabri",rol3:"gab",pct_christian:7.5,pop:84e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.35,lng:16.66,code:"PG042668"},{name:"Kaba-Lai",country:"Chad",lang:"Kabalai",rol3:"kvf",pct_christian:7.5,pop:58e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.41,lng:16.31,code:"PG011370"},{name:"Kaba",country:"Chad",lang:"Kabba",rol3:"ksp",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.85,lng:16.74,code:"PG011366"},{name:"Sara Gambai",country:"Chad",lang:"Ngambay",rol3:"sba",pct_christian:3.5,pop:2095e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.7,lng:15.82,code:"PG011447"},{name:"Musey",country:"Chad",lang:"Musey",rol3:"mse",pct_christian:3.5,pop:535e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.69,lng:15.3,code:"PG011312"},{name:"Mundang",country:"Chad",lang:"Mundang",rol3:"mua",pct_christian:3.5,pop:517e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.67,lng:14.62,code:"PG011430"},{name:"Marba",country:"Chad",lang:"Marba",rol3:"mpg",pct_christian:3.5,pop:397e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.52,lng:15.92,code:"PG042679"},{name:"Masa",country:"Chad",lang:"Masana",rol3:"mcn",pct_christian:3.5,pop:352e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.33,lng:15.61,code:"PG011403"},{name:"Sara Mbai",country:"Chad",lang:"Mbay",rol3:"myb",pct_christian:3.5,pop:267e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.29,lng:17.75,code:"PG011449"},{name:"Bediondo Mbai",country:"Chad",lang:"Bedjond",rol3:"bjv",pct_christian:3.5,pop:192e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.65,lng:17.28,code:"PG011318"},{name:"Karang Laka",country:"Chad",lang:"Laka",rol3:"lap",pct_christian:3.5,pop:188e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.02,lng:16.2,code:"PG011376"},{name:"Gor",country:"Chad",lang:"Kabba",rol3:"ksp",pct_christian:3.5,pop:163e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.8,lng:16.72,code:"PG042670"},{name:"Dai",country:"Chad",lang:"Day",rol3:"dai",pct_christian:3.5,pop:161e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.52,lng:17.55,code:"PG011334"},{name:"Kera",country:"Chad",lang:"Kera",rol3:"ker",pct_christian:3.5,pop:144e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.78,lng:15.18,code:"PG011382"},{name:"Ngama",country:"Chad",lang:"Ngam",rol3:"nmc",pct_christian:3.5,pop:135e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:8.52,lng:18.59,code:"PG011434"},{name:"Kaba Na",country:"Chad",lang:"Kaba Naa, Sara",rol3:"kwv",pct_christian:3.5,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.58,lng:18.93,code:"PG011369"},{name:"Kado",country:"Chad",lang:"Herdé",rol3:"hed",pct_christian:3.5,pop:104e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.36,lng:14.71,code:"PG011371"},{name:"Gulfe",country:"Chad",lang:"Malgbe",rol3:"mxf",pct_christian:3.5,pop:96e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:12.48,lng:14.92,code:"PG011359"},{name:"Lele",country:"Chad",lang:"Lele (Chad)",rol3:"lln",pct_christian:3.5,pop:89e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.15,lng:15.73,code:"PG011395"},{name:"Peve",country:"Chad",lang:"Pévé",rol3:"lme",pct_christian:3.5,pop:78e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.3,lng:14.58,code:"PG011441"},{name:"Sango",country:"Chad",lang:"Sango",rol3:"sag",pct_christian:3.5,pop:58e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.57,lng:16.07,code:"PG011446"},{name:"Gidar",country:"Chad",lang:"Gidar",rol3:"gid",pct_christian:3.5,pop:38e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.85,lng:14.2,code:"PG011351"},{name:"Kimre",country:"Chad",lang:"Kimré",rol3:"kqp",pct_christian:3.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.3,lng:16.88,code:"PG011385"},{name:"Mbum",country:"Chad",lang:"Mbum",rol3:"mdd",pct_christian:3.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.64,lng:15.64,code:"PG011412"},{name:"Kuo",country:"Chad",lang:"Kuo",rol3:"xuo",pct_christian:3.5,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.75,lng:15.75,code:"PG011393"},{name:"Mire",country:"Chad",lang:"Mulgi",rol3:"mvh",pct_christian:3.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.43,lng:16.3,code:"PG011419"},{name:"Kotoko-Kuseri",country:"Chad",lang:"Mser",rol3:"kqx",pct_christian:3.5,pop:3900,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:11.93,lng:15.11,code:"PG011388"},{name:"Gori",country:"Chad",lang:"Laal",rol3:"gdm",pct_christian:3.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:9.98,lng:17.62,code:"PG011353"},{name:"Miltu",country:"Chad",lang:"Miltu",rol3:"mlj",pct_christian:3.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.23,lng:17.41,code:"PG011416"},{name:"Bakole",country:"Cameroon",lang:"French",rol3:"fra",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:4.43,lng:8.97,code:"PG012493"},{name:"Mono",country:"Cameroon",lang:"Fulfulde, Adamawa",rol3:"fub",pct_christian:25,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:8.77,lng:14.12,code:"PG012705"},{name:"PoaPoa",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:25,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.87,lng:164.66,code:"PG018370"},{name:"Kotoko",country:"Cameroon",lang:"Lagwan",rol3:"kot",pct_christian:17.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:11.86,lng:14.9,code:"PG012650"},{name:"Euronesian",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:12.5,pop:58500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-17.56,lng:-149.57,code:"PG018408"},{name:"Euronesian",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-22.27,lng:166.45,code:"PG018406"},{name:"Aeke",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.07,lng:164.88,code:"PG009564"},{name:"French",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:7.5,pop:93500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.33,lng:165.49,code:"PG018389"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Sake",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:.07,lng:11.63,code:"PG013210"},{name:"Burundi",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050494"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Kaba Dunjo",country:"Central African Republic",lang:"Kaba Naa, Sara",rol3:"kwv",pct_christian:7.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:9.03,lng:19.98,code:"PG012874"},{name:"Kande",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.09,lng:11.75,code:"PG013189"},{name:"Chadian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.58,lng:-73.7,code:"PG050504"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"New Caledonian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.22,lng:-122.99,code:"PG047444"},{name:"Gabonese",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.9,lng:-77.19,code:"PG047191"},{name:"Chinese-Tahitian Creole",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:7.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.56,lng:-149.57,code:"PG018407"},{name:"Chadian",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:38.02,lng:-84.5,code:"PG047189"},{name:"Walloon",country:"Belgium",lang:"French",rol3:"fra",pct_christian:3.5,pop:3755e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.32,lng:4.95,code:"PG000076"},{name:"Swiss",country:"Switzerland",lang:"French",rol3:"fra",pct_christian:3.5,pop:2015e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.6,lng:6.93,code:"PG000585"},{name:"Tuburi",country:"Cameroon",lang:"Tupuri",rol3:"tui",pct_christian:3.5,pop:345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:10.27,lng:14.75,code:"PG012796"},{name:"Masa",country:"Cameroon",lang:"Masana",rol3:"mcn",pct_christian:3.5,pop:345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:10.29,lng:15.19,code:"PG012678"},{name:"Musgum",country:"Cameroon",lang:"Musgu",rol3:"mug",pct_christian:3.5,pop:239e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:10.9,lng:14.93,code:"PG012718"},{name:"Dakpa",country:"Central African Republic",lang:"Banda, West Central",rol3:"bbp",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:5.98,lng:20,code:"PG012849"},{name:"Franco-Mauritian",country:"Mauritius",lang:"French",rol3:"fra",pct_christian:3.5,pop:72500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.25,lng:57.51,code:"PG015346"},{name:"Romanian",country:"France",lang:"French",rol3:"fra",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000192"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"French Caribbean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.5,lng:-73.81,code:"PG047395"},{name:"Togolese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.52,lng:-73.68,code:"PG050478"},{name:"Congolese",country:"Spain",lang:"French",rol3:"fra",pct_christian:3.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.41,lng:-3.69,code:"PG042340"},{name:"Abenaki",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.07,lng:-72.82,code:"PG043348"},{name:"Ivorian",country:"United States",lang:"French",rol3:"fra",pct_christian:3.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047266"},{name:"Guinean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.5,lng:-73.81,code:"PG047454"},{name:"Sighu",country:"Gabon",lang:"French",rol3:"fra",pct_christian:3.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.84,lng:12.69,code:"PG013213"},{name:"Rwandan",country:"Netherlands",lang:"French",rol3:"fra",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:51.9,lng:4.47,code:"PG000430"},{name:"Gabonese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050505"},{name:"Maslam",country:"Cameroon",lang:"Maslam",rol3:"msv",pct_christian:3.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.22,lng:14.83,code:"PG012681"}]},Tajikistan:{target_upg:31,target_pop:10692e3,target_top_langs:["Tajik","Uzbek, Northern","Shughni","Language unknown"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Tajikistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:89500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:38.57,lng:68.77,code:"PG049245"},{name:"Ukrainian",country:"Tajikistan",lang:"Ukrainian",rol3:"ukr",pct_christian:7.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:38.57,lng:68.77,code:"PG024536"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"}]},Jordan:{target_upg:21,target_pop:10660500,target_top_langs:["Arabic, Levantine","Arabic, Eastern Egyptian Bedawi","Arabic, North Mesopotamian","Kabardian"],target_top_religion:"Islam",neighbors:[{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},Azerbaijan:{target_upg:26,target_pop:9953800,target_top_langs:["Azerbaijani, North","Talysh","Lezgi","Azerbaijani, South"],target_top_religion:"Islam",neighbors:[{name:"Ukrainian",country:"Kyrgyzstan",lang:"Ukrainian",rol3:"ukr",pct_christian:35,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:42.88,lng:74.63,code:"PG024375"},{name:"Ukrainian",country:"Turkmenistan",lang:"Ukrainian",rol3:"ukr",pct_christian:35,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.94,lng:58.39,code:"PG024648"},{name:"Romanian",country:"Czech Republic",lang:"Romanian",rol3:"ron",pct_christian:25,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.07,lng:14.47,code:"PG050033"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Ukrainian",country:"Kazakhstan",lang:"Ukrainian",rol3:"ukr",pct_christian:12.5,pop:415e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.48,lng:71.3,code:"PG024330"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Ukrainian",country:"United Kingdom",lang:"Ukrainian",rol3:"ukr",pct_christian:7.5,pop:33e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000692"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Ukrainian",country:"Tajikistan",lang:"Ukrainian",rol3:"ukr",pct_christian:7.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.57,lng:68.77,code:"PG024536"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Romanian",country:"Romania",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1637e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:45.84,lng:24.98,code:"PG000899"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Romanian",country:"Italy",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:13e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:44.5,lng:9.8,code:"PG048833"},{name:"Ukrainian",country:"Russian Federation",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:112e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.59,lng:82.8,code:"PG048814"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Ukrainian",country:"Canada",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:253e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.93,lng:-92.67,code:"PG043496"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Ukrainian",country:"Germany",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:145e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.72,lng:11.84,code:"PG000275"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Romanian",country:"Hungary",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.8,lng:20.84,code:"PG000835"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Romanian ",country:"Austria",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.18,lng:16.35,code:"PG049963"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Ukrainian",country:"Latvia",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:48500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:56.93,lng:24.12,code:"PG000850"},{name:"Ukrainian",country:"Uzbekistan",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:47e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.31,lng:69.26,code:"PG024323"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Ukrainian",country:"Poland",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:19.47,code:"PG000887"},{name:"Ukrainian",country:"Argentina",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017373"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Ukrainian",country:"Estonia",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:33500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:59.31,lng:24.93,code:"PG050308"},{name:"Romanian",country:"Ireland",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:53.39,lng:-6.28,code:"PG048049"},{name:"Ukrainian",country:"France",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:23e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000205"},{name:"Moldovan",country:"Canada",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.72,lng:-95.67,code:"PG047364"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Romanian",country:"Venezuela",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.48,lng:-66.88,code:"PG016490"}]},Vietnam:{target_upg:70,target_pop:9637e3,target_top_langs:["Tay","Muong","Khmer","Nung"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Central Mnong",country:"Vietnam",lang:"Mnong, Central",rol3:"cmo",pct_christian:62.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.5,lng:107.57,code:"PG011118"},{name:"Southern Mnong",country:"Vietnam",lang:"Mnong, Southern",rol3:"mnn",pct_christian:62.5,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:11.99,lng:107.56,code:"PG011224"},{name:"Rhade",country:"Vietnam",lang:"Rade",rol3:"rad",pct_christian:45,pop:331e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.96,lng:108.31,code:"PG011211"},{name:"Stieng",country:"Vietnam",lang:"Stieng, Bulo",rol3:"sti",pct_christian:45,pop:85500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:11.87,lng:107.08,code:"PG011226"},{name:"Maa",country:"Vietnam",lang:"Maa",rol3:"cma",pct_christian:45,pop:41500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:11.61,lng:107.49,code:"PG011179"},{name:"Chru",country:"Vietnam",lang:"Chru",rol3:"cje",pct_christian:45,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:11.69,lng:108.54,code:"PG011123"},{name:"Hmong",country:"Vietnam",lang:"Hmong Daw",rol3:"mww",pct_christian:35,pop:133e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.86,lng:103.59,code:"PG011142"},{name:"Koho",country:"Vietnam",lang:"Koho",rol3:"kpm",pct_christian:35,pop:166e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:11.63,lng:108.01,code:"PG011167"},{name:"Chrau",country:"Vietnam",lang:"Chrau",rol3:"crw",pct_christian:35,pop:27e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.91,lng:107.29,code:"PG011122"},{name:"Jarai",country:"Vietnam",lang:"Jarai",rol3:"jra",pct_christian:25,pop:411e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:13.93,lng:108.21,code:"PG011149"},{name:"Jeh",country:"Vietnam",lang:"Jeh",rol3:"jeh",pct_christian:25,pop:51e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.19,lng:107.91,code:"PG011150"},{name:"Eastern Mnong",country:"Vietnam",lang:"Mnong, Eastern",rol3:"mng",pct_christian:25,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.31,lng:108.34,code:"PG011128"},{name:"Trieng",country:"Vietnam",lang:"Trieng",rol3:"stg",pct_christian:25,pop:19e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.48,lng:107.55,code:"PG011239"},{name:"Halang",country:"Vietnam",lang:"Halang",rol3:"hal",pct_christian:25,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.62,lng:107.64,code:"PG011135"},{name:"O-du",country:"Vietnam",lang:"O’du",rol3:"tyh",pct_christian:17.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.48,lng:104.58,code:"PG020927"},{name:"Northern Roglai",country:"Vietnam",lang:"Roglai, Northern",rol3:"rog",pct_christian:12.5,pop:65e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.16,lng:108.85,code:"PG011190"},{name:"Brao",country:"Vietnam",lang:"Brao",rol3:"brb",pct_christian:12.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.17,lng:107.43,code:"PG011112"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Han Chinese, Cantonese",country:"Vietnam",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:784e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.03,lng:105.82,code:"PG046444"},{name:"Bahnar",country:"Vietnam",lang:"Bahnar",rol3:"bdq",pct_christian:7.5,pop:228e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.05,lng:108.45,code:"PG011108"},{name:"San Chay",country:"Vietnam",lang:"Cao Lan",rol3:"mlc",pct_christian:7.5,pop:17e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.86,lng:105.77,code:"PG011217"},{name:"Hre",country:"Vietnam",lang:"Hre",rol3:"hre",pct_christian:7.5,pop:127e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.7,lng:108.66,code:"PG011143"},{name:"Eastern Bru",country:"Vietnam",lang:"Bru, Eastern",rol3:"bru",pct_christian:7.5,pop:74500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:16.94,lng:106.67,code:"PG011126"},{name:"Lahu",country:"Vietnam",lang:"Lahu",rol3:"lhu",pct_christian:7.5,pop:9700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.56,lng:102.66,code:"PG011172"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Iu Mien",country:"Vietnam",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:433e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:22.01,lng:105.54,code:"PG011148"},{name:"Eastern Cham",country:"Vietnam",lang:"Cham, Eastern",rol3:"cjm",pct_christian:3.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:10.94,lng:107.68,code:"PG011127"},{name:"Cua",country:"Vietnam",lang:"Cua",rol3:"cua",pct_christian:3.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.15,lng:108.39,code:"PG011125"},{name:"Khao",country:"Vietnam",lang:"Khao",rol3:"xao",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:21.44,lng:103.48,code:"PG011159"},{name:"Romam",country:"Vietnam",lang:"Romam",rol3:"rmx",pct_christian:3.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.42,lng:107.55,code:"PG011212"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Akha",country:"Thailand",lang:"Akha",rol3:"ahk",pct_christian:17.5,pop:58e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:20.08,lng:99.66,code:"PG010820"},{name:"Sin",country:"Laos",lang:"Lao",rol3:"lao",pct_christian:12.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:18.06,lng:105.09,code:"PG050561"},{name:"Han Chinese, Cantonese",country:"China",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6477e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.94,lng:111.32,code:"PG006808"},{name:"Han Chinese, Cantonese",country:"Hong Kong",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6255e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050587"},{name:"Han Chinese, Cantonese",country:"Malaysia",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:19e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.65,lng:101.56,code:"PG046594"},{name:"Khmu, Ou",country:"Laos",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:817e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:102.58,code:"PG020913"},{name:"Han Chinese, Cantonese",country:"Macao",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:663e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.16,lng:113.56,code:"PG050584"},{name:"Han Chinese, Cantonese",country:"Singapore",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:511e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020725"},{name:"Han Chinese",country:"United Kingdom",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:196e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:51.5,lng:-.17,code:"PG043796"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Han Chinese, Cantonese",country:"Peru",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:117e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-12.05,lng:-77.02,code:"PG017533"},{name:"Han Chinese",country:"Panama",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:8.5,lng:-82.42,code:"PG024831"},{name:"Han Chinese",country:"Trinidad and Tobago",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:44500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.68,lng:-61.38,code:"PG016447"},{name:"Iu Mien",country:"United States",lang:"Iu Mien",rol3:"ium",pct_christian:7.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.75,lng:-111.78,code:"PG043283"},{name:"Han Chinese",country:"Laos",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:17.97,lng:102.64,code:"PG009111"},{name:"Han Chinese, Cantonese",country:"Venezuela",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.48,lng:-66.88,code:"PG016472"},{name:"Han Chinese",country:"Mexico",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:20.65,lng:-101.28,code:"PG024949"},{name:"Han Chinese, Cantonese",country:"Dominican Republic",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:18.48,lng:-69.91,code:"PG016322"},{name:"Han Chinese, Cantonese",country:"Ecuador",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:9600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-.18,lng:-78.49,code:"PG042924"},{name:"Han Chinese, Cantonese",country:"Belgium",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.85,lng:4.38,code:"PG000058"},{name:"Pako Kado",country:"Laos",lang:"Pacoh",rol3:"pac",pct_christian:7.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:16.41,lng:106.8,code:"PG050547"},{name:"Han Chinese, Cantonese",country:"Mauritius",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-20.24,lng:57.49,code:"PG015361"},{name:"Han Chinese",country:"Brunei",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:4.91,lng:114.92,code:"PG033444"},{name:"Han Chinese, Cantonese",country:"Honduras",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:14.08,lng:-87.2,code:"PG024760"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Han Chinese, Cantonese",country:"Guyana",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:6.8,lng:-58.15,code:"PG016362"},{name:"Pako Kanai",country:"Laos",lang:"Pacoh",rol3:"pac",pct_christian:7.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:16.53,lng:106.84,code:"PG050548"},{name:"Khmu",country:"France",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.88,lng:2.37,code:"PG048522"},{name:"Han Chinese, Cantonese",country:"Haiti",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:18.55,lng:-72.32,code:"PG016380"},{name:"Han Chinese, Cantonese",country:"United States",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:103e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.02,lng:-113.16,code:"PG043259"},{name:"Han Chinese, Cantonese",country:"Canada",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:569e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG047426"},{name:"Akha",country:"Myanmar",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:23e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:21.71,lng:99.8,code:"PG009402"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Mien",country:"Thailand",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:46500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:19.13,lng:100.45,code:"PG010890"},{name:"Ta Oi",country:"Laos",lang:"Ta’oih, Upper",rol3:"tth",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:16.08,lng:106.7,code:"PG020964"},{name:"Han Chinese",country:"Reunion",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-20.92,lng:55.51,code:"PG015468"},{name:"Neisu",country:"China",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.17,lng:100.64,code:"PG007334"},{name:"Lao",country:"Myanmar",lang:"Lao",rol3:"lao",pct_christian:3.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:16.85,lng:96.15,code:"PG009467"},{name:"Black Tai",country:"Thailand",lang:"Tai Dam",rol3:"blt",pct_christian:3.5,pop:25e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.92,lng:99.84,code:"PG010830"},{name:"Khmu",country:"United States",lang:"Khmu",rol3:"kjg",pct_christian:3.5,pop:9300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:32.77,lng:-117.08,code:"PG043302"},{name:"Macanese",country:"Macao",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:8900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.16,lng:113.56,code:"PG050585"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"},{name:"Ta-Oy Yin",country:"Laos",lang:"Ta’oih, Upper",rol3:"tth",pct_christian:3.5,pop:8500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:15.72,lng:106.48,code:"PG050569"},{name:"Meng",country:"China",lang:"Hani",rol3:"hni",pct_christian:3.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.89,lng:101.81,code:"PG007280"},{name:"Iu Mien",country:"France",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:43.61,lng:1.41,code:"PG000166"},{name:"Han Chinese, Cantonese",country:"Zimbabwe",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.83,lng:31.03,code:"PG015656"},{name:"Han Chinese",country:"Curacao",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:12.19,lng:-68.97,code:"PG016401"},{name:"Sadang Duan",country:"Laos",lang:"Sedang",rol3:"sed",pct_christian:3.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:14.73,lng:107.51,code:"PG050560"},{name:"Ta-Oy Haang",country:"Laos",lang:"Ta’oih, Upper",rol3:"tth",pct_christian:3.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:15.93,lng:106.55,code:"PG050565"}]},Israel:{target_upg:42,target_pop:9176590,target_top_langs:["Hebrew","Arabic, Levantine","Russian","Yiddish, Eastern"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Syrian Christian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:62.5,pop:4495e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:12.35,lng:76.09,code:"PG041308"},{name:"Pulayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:45,pop:154e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.06,lng:76.53,code:"PG041344"},{name:"Malai Arayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:35,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:9.65,lng:76.66,code:"PG041952"},{name:"Bakole",country:"Cameroon",lang:"French",rol3:"fra",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:4.43,lng:8.97,code:"PG012493"},{name:"Tupari",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:35,pop:175,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-12.09,lng:-63.32,code:"PG017148"},{name:"Paravar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:8.62,lng:77,code:"PG041743"},{name:"Koh",country:"India",lang:"Marathi",rol3:"mar",pct_christian:25,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.29,lng:76.9,code:"PG041285"},{name:"Mozambican",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.77,lng:-9.25,code:"PG000493"},{name:"Amhara",country:"Canada",lang:"Amharic",rol3:"amh",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG047403"},{name:"Romanian",country:"Czech Republic",lang:"Romanian",rol3:"ron",pct_christian:25,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.07,lng:14.47,code:"PG050033"},{name:"Kerala Mudali",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.44,lng:78.7,code:"PG049672"},{name:"PoaPoa",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:25,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.87,lng:164.66,code:"PG018370"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Brazilian",country:"French Guiana",lang:"Portuguese",rol3:"por",pct_christian:17.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:4.92,lng:-52.3,code:"PG016329"},{name:"Machineri",country:"Bolivia",lang:"Portuguese",rol3:"por",pct_christian:17.5,pop:35,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-10.96,lng:-69.48,code:"PG046933"},{name:"Mang",country:"India",lang:"Marathi",rol3:"mar",pct_christian:12.5,pop:304e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:20.38,lng:76.05,code:"PG041315"},{name:"Brazilian",country:"Paraguay",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:461e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-25.3,lng:-57.56,code:"PG046804"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Mannan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:145e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.8,lng:76.55,code:"PG041756"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Pole",country:"Kazakhstan",lang:"Polish",rol3:"pol",pct_christian:12.5,pop:62e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:43.29,lng:76.91,code:"PG024292"},{name:"Euronesian",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:12.5,pop:58500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-17.56,lng:-149.57,code:"PG018408"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Euronesian",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-22.27,lng:166.45,code:"PG018406"},{name:"Sao Tomean",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:8500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.65,lng:-9.1,code:"PG000499"},{name:"Malayali",country:"Maldives",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:4.17,lng:73.51,code:"PG006163"},{name:"Brazilian",country:"Austria",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:48.18,lng:16.35,code:"PG000009"},{name:"Aeke",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.07,lng:164.88,code:"PG009564"},{name:"Kanoe",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:325,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-11.73,lng:-62.68,code:"PG016942"},{name:"Brazilian",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:20624e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-12.63,lng:-48.09,code:"PG016600"},{name:"Cheruman",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:76.25,code:"PG041452"},{name:"Brazilian",country:"United States",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:32e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:34.44,lng:-97.31,code:"PG046522"},{name:"Brazilian",country:"United Kingdom",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:275e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:51.5,lng:-.17,code:"PG048432"},{name:"Malayali",country:"Malaysia",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:206e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.64,code:"PG020224"},{name:"Brazilian",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:182e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.04,lng:-8.79,code:"PG000471"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Malayali",country:"United States",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:165e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:40.72,lng:-73.97,code:"PG043340"},{name:"French",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:7.5,pop:93500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.33,lng:165.49,code:"PG018389"},{name:"Angolan",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:80500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39,lng:-9.17,code:"PG000467"},{name:"Brazilian",country:"Italy",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:46500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:45.54,lng:9.19,code:"PG048554"},{name:"Mang Garodi",country:"India",lang:"Marathi",rol3:"mar",pct_christian:7.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.57,lng:74.08,code:"PG041892"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Hasidim",country:"United Kingdom",lang:"Hebrew",rol3:"heb",pct_christian:7.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:51.5,lng:-.17,code:"PG000648"},{name:"Uraly",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:29500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.85,lng:75.26,code:"PG041815"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Brazilian",country:"Canada",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:43.83,lng:-79.46,code:"PG047367"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Brazilian",country:"Switzerland",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:47.43,lng:8.44,code:"PG048542"},{name:"Malai Vedan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:18500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:9.91,lng:77.99,code:"PG042150"},{name:"Portuguese",country:"Argentina",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-34.65,lng:-58.56,code:"PG017360"},{name:"Brazilian",country:"Belgium",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:50.85,lng:4.38,code:"PG047834"},{name:"Sake",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:.07,lng:11.63,code:"PG013210"},{name:"Burundi",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050494"},{name:"Brazilian",country:"Guyana",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:6.49,lng:-58.12,code:"PG016369"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Kokama",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:9600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-3.43,lng:-64.82,code:"PG016815"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Brazilian",country:"Jamaica",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:6e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.05,lng:-76.95,code:"PG016388"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Pole",country:"Uzbekistan",lang:"Polish",rol3:"pol",pct_christian:7.5,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:41.31,lng:69.26,code:"PG024310"},{name:"Tremembe",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-3.09,lng:-40.02,code:"PG017135"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Kande",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.09,lng:11.75,code:"PG013189"},{name:"Chadian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.58,lng:-73.7,code:"PG050504"},{name:"New Caledonian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.22,lng:-122.99,code:"PG047444"},{name:"Rikbaktsa",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-11.27,lng:-58.27,code:"PG017085"},{name:"Kambeba",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-3.17,lng:-64.85,code:"PG016936"},{name:"Miranha",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-2.86,lng:-64.74,code:"PG017022"},{name:"Gabonese",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.9,lng:-77.19,code:"PG047191"},{name:"Makurap",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:475,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-12.56,lng:-62.57,code:"PG017001"},{name:"Chinese-Tahitian Creole",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:7.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.56,lng:-149.57,code:"PG018407"},{name:"Chadian",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:38.02,lng:-84.5,code:"PG047189"},{name:"Kariri",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-7.27,lng:-39.77,code:"PG016956"},{name:"Romanian",country:"Romania",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1637e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:45.84,lng:24.98,code:"PG000899"},{name:"Variyar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:1417e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:12.13,lng:78.55,code:"PG042083"},{name:"Izhattu Pillaimar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:852e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.6,lng:77.56,code:"PG041254"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Walloon",country:"Belgium",lang:"French",rol3:"fra",pct_christian:3.5,pop:3755e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.32,lng:4.95,code:"PG000076"},{name:"Swiss",country:"Switzerland",lang:"French",rol3:"fra",pct_christian:3.5,pop:2015e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.6,lng:6.93,code:"PG000585"},{name:"Kokna",country:"India",lang:"Marathi",rol3:"mar",pct_christian:3.5,pop:136e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.59,lng:73.8,code:"PG041403"},{name:"Romanian",country:"Italy",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:13e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:44.5,lng:9.8,code:"PG048833"},{name:"Portuguese",country:"France",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:984e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.39,lng:2.44,code:"PG000186"},{name:"Portuguese",country:"United States",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:861e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:39.45,lng:-96.6,code:"PG046462"},{name:"Portuguese",country:"Canada",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:307e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.93,lng:-92.67,code:"PG043365"},{name:"Thandan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:285e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.05,lng:76.86,code:"PG041497"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Portuguese",country:"Venezuela",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.47,lng:-69.1,code:"PG016488"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Romanian",country:"Hungary",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.8,lng:20.84,code:"PG000835"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Romanian ",country:"Austria",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.18,lng:16.35,code:"PG049963"},{name:"Franco-Mauritian",country:"Mauritius",lang:"French",rol3:"fra",pct_christian:3.5,pop:72500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.25,lng:57.51,code:"PG015346"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Hungarian",country:"Austria",lang:"Hungarian",rol3:"hun",pct_christian:3.5,pop:64500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.59,lng:16.37,code:"PG000021"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Kurichian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:52500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:11.72,lng:76.1,code:"PG041910"},{name:"Hungarian",country:"Canada",lang:"Hungarian",rol3:"hun",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:43.83,lng:-79.46,code:"PG043408"},{name:"Sillekyatha",country:"India",lang:"Marathi",rol3:"mar",pct_christian:3.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.11,lng:76.53,code:"PG042138"},{name:"Romanian",country:"Ireland",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:53.39,lng:-6.28,code:"PG048049"},{name:"Bissau-Guineans",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:39,lng:-9.17,code:"PG000482"},{name:"Moldovan",country:"Canada",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.72,lng:-95.67,code:"PG047364"},{name:"Romanian",country:"France",lang:"French",rol3:"fra",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000192"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Portuguese",country:"Macao",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:22.16,lng:113.56,code:"PG050586"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Kummara , Kusuvan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:12.31,lng:75.54,code:"PG048341"},{name:"French Caribbean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.5,lng:-73.81,code:"PG047395"},{name:"Togolese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.52,lng:-73.68,code:"PG050478"},{name:"Congolese",country:"Spain",lang:"French",rol3:"fra",pct_christian:3.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.41,lng:-3.69,code:"PG042340"},{name:"Abenaki",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.07,lng:-72.82,code:"PG043348"},{name:"Ivorian",country:"United States",lang:"French",rol3:"fra",pct_christian:3.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047266"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Guinean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.5,lng:-73.81,code:"PG047454"},{name:"Sighu",country:"Gabon",lang:"French",rol3:"fra",pct_christian:3.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.84,lng:12.69,code:"PG013213"},{name:"Rwandan",country:"Netherlands",lang:"French",rol3:"fra",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:51.9,lng:4.47,code:"PG000430"},{name:"Gabonese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050505"},{name:"Romanian",country:"Venezuela",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.48,lng:-66.88,code:"PG016490"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"},{name:"Chiquitano",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-16.15,lng:-59.48,code:"PG050662"},{name:"Poyanawa",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-7.55,lng:-73.09,code:"PG017081"},{name:"Jabuti",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-12.08,lng:-64.7,code:"PG016889"},{name:"Yuruti",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:40,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:.61,lng:-69.19,code:"PG017210"}]}}},fg={"a-ou":"Guizhou Province",accukattavandlu:"Andhra Pradesh",adi:"Tibet Autonomous Region",adiyan:"Karnātaka",agaria:"Gujarāt",agasa:"Karnātaka",agri:"Gujarāt",aguru:"Andhra Pradesh",ahmadiya:"Uttar Pradesh","ai-cham":"Guizhou Province","ainu-china":"Xinjiang Uyghur Autonomous Region",aiton:"Assam",aiyarakulu:"Andhra Pradesh",akeu:"Yunnan Province",alavan:"Tamil Nādu",aling:"Yunnan Province",allar:"Kerala",alu:"Yunnan Province","alxa-mongols":"Inner Mongolia Autonomous Region",ambalavasi:"Kerala",andamanese:"Andaman and Nicobar Islands","andhra-vaisnawa":"Andhra Pradesh",angarok:"West Bengal",angku:"Yunnan Province",ani:"Yunnan Province",anjana:"Madhya Pradesh","anjana-patel-gujarati":"Gujarāt","ansari-momin-bengali":"West Bengal","ansari-momin-kannada":"Karnātaka","ansari-momin-tamil":"Tamil Nādu","ansari-momin-telugu":"Andhra Pradesh","anthur-nair":"Kerala",anuppan:"Tamil Nādu",anwal:"Uttarākhand",aoka:"Hunan Province",apu:"Yunnan Province","arain-dogri":"Jammu and Kashmīr","arain-kannauji":"Uttar Pradesh","arain-punjabi":"Haryāna",arakala:"Andhra Pradesh",aranadan:"Tamil Nādu",arasu:"Karnātaka",arayavati:"Kerala","are-bondili":"Andhra Pradesh","are-kapu":"Telangāna","are-katika":"Andhra Pradesh",atollu:"Andhra Pradesh",attagara:"Telangāna","attar-saibulu":"Mahārāshtra",ayri:"Karnātaka",ayyanavar:"Kerala","badhai-chhattisgarhi":"Chhattīsgarh",badhik:"Uttar Pradesh",badi:"Uttar Pradesh","badi-marwari":"Rājasthān",bafan:"Gujarāt",bagga:"Karnātaka",bagti:"West Bengal","baha-i":"Odisha",baharupi:"Mahārāshtra",baida:"West Bengal",baig:"Tamil Nādu",baira:"Karnātaka","bairagi-chhattisgarhi":"Chhattīsgarh","bairagi-gujarati":"Gujarāt","bairagi-odia":"Odisha",baisya:"West Bengal",bajandar:"Tripura",bakuda:"Kerala",balahar:"Uttar Pradesh",balasantoshi:"Karnātaka",baloch:"Gujarāt",bamcha:"Gujarāt",banai:"Meghālaya",banchada:"Madhya Pradesh",bandi:"Karnātaka",bandollu:"Andhra Pradesh",bangti:"Odisha","bania-agarwal-telegu":"Andhra Pradesh","bania-dogri":"Jammu and Kashmīr","bania-kannada":"Karnātaka","bania-kashmiri":"Ladākh","bania-konkani":"Goa","bania-malayalam":"Kerala","banik-bania":"Tripura",banjania:"Gujarāt",banka:"Odisha",banpar:"Bihār",baonuo:"Guangxi Zhuang Autonomous Region",baraua:"Madhya Pradesh",barda:"Mahārāshtra",baret:"Rājasthān",bargah:"Chhattīsgarh",bargala:"Uttar Pradesh",bargi:"Rājasthān",bargujar:"Uttar Pradesh","bari-hindi":"Madhya Pradesh","bari-marathi":"Mahārāshtra","bari-odia":"Odisha",barot:"Gujarāt",barthari:"Gujarāt",barua:"Tripura",basudeva:"Madhya Pradesh",batada:"Karnātaka",bauti:"Odisha",bavuri:"Odisha","bayil-kammara":"Karnātaka","bayil-pattar":"Karnātaka","bayita-kammara":"Andhra Pradesh",beidongnuo:"Guizhou Province","beldar-chhattisgarhi":"Chhattīsgarh",bellara:"Karnātaka",berad:"Andhra Pradesh",berar:"Madhya Pradesh",bestha:"Karnātaka",bhakta:"West Bengal",bhalla:"West Bengal","bhand-kashmiri":"Jammu and Kashmīr","bhangi-chhattisgarhi":"Chhattīsgarh",bhanumati:"Madhya Pradesh",bharewa:"Chhattīsgarh","bharia-bhumia-chhattisgarhi":"Chhattīsgarh",bharwad:"Mahārāshtra",bhatrajulu:"Telangāna","bhattra-bhatri":"Chhattīsgarh","bhatu-andamani":"Andaman and Nicobar Islands",bhodala:"Gujarāt","bhoi-marathi":"Mahārāshtra","bhoi-odia":"Odisha",bhojki:"Himāchal Pradesh",bhondari:"Andhra Pradesh",bhopa:"Rājasthān",bhuiyar:"Uttar Pradesh",bhujel:"West Bengal",bhunjia:"Chhattīsgarh",bhurtia:"Madhya Pradesh",bhutta:"Rājasthān",bilaspuri:"Assam",bindla:"Telangāna",bisati:"Uttar Pradesh","bit-china":"Yunnan Province","black-thai":"Yunnan Province","bogar-lhoba":"Tibet Autonomous Region",bogol:"Inner Mongolia Autonomous Region",bolla:"Telangāna",bomba:"Jammu and Kashmīr",bondili:"Tamil Nādu",bondo:"Odisha",borpi:"Gujarāt","bowis-mogeyar":"Kerala","boyu-tibetans":"Gansu Province","brahman-jyoti":"Odisha","brahmin-andamani":"Andaman and Nicobar Islands",brukpa:"Ladākh",budakukkala:"Andhra Pradesh",budhan:"Jammu and Kashmīr",bugan:"Yunnan Province",bunan:"Tibet Autonomous Region",buryat:"Inner Mongolia Autonomous Region","butuo-nosu":"Sichuan Province",buyang:"Yunnan Province",byadh:"West Bengal",cai:"Guizhou Province",caki:"Gujarāt",cakkala:"Kerala",cakketakare:"Andhra Pradesh","cakkyar-nambiyar":"Kerala",camadollu:"Andhra Pradesh",camma:"Bihār",campa:"Ladākh","candhai-maru":"Odisha",cejara:"Rājasthān",cekkala:"Tamil Nādu",chadwa:"Rājasthān",chaikwa:"Chhattīsgarh",chakkiyar:"Kerala","chamar-assamese":"Assam","chamar-muchi-malayalam":"Kerala","chamar-muchi-tamil":"Tamil Nādu",champta:"Gujarāt",changpao:"Guizhou Province",chaptegar:"Karnātaka",chari:"Mahārāshtra",charodi:"Karnātaka",charwaha:"Uttar Pradesh",chatarkheya:"Odisha",chaudangsi:"Uttarākhand",chayakkaran:"Tamil Nādu",cheintz:"Jammu and Kashmīr","chengazhi-nambiar":"Kerala","chenna-dasar":"Karnātaka",cherua:"Odisha",chesu:"Yunnan Province",chheepi:"Rājasthān",chitari:"Mahārāshtra",chobdar:"Rājasthān",chopan:"Jammu and Kashmīr",chunari:"West Bengal",chungar:"Rājasthān",cingatanmar:"Kerala",cippollu:"Telangāna",citrakar:"Odisha",citrakathi:"Mahārāshtra","cona-monba":"Tibet Autonomous Region","coorgi-andamanese":"Andaman and Nicobar Islands",cudigar:"Rājasthān",cunara:"Gujarāt",cundollu:"Andhra Pradesh",dadupanthi:"Rājasthān",dafer:"Gujarāt",daitapati:"Odisha","dalu-india":"Meghālaya",damami:"Rājasthān",damla:"Odisha",dammali:"Andhra Pradesh",dangasiya:"Gujarāt",daoli:"Punjab","darang-deng":"Tibet Autonomous Region","darji-odia":"Odisha","dasa-palanjika":"Tamil Nādu",dasari:"Andhra Pradesh","dasnami-bawa":"Gujarāt",daule:"Himāchal Pradesh",dayare:"Tamil Nādu",depala:"Gujarāt","dhakad-halbi":"Chhattīsgarh",dhaki:"Himāchal Pradesh","dhal-kstriya":"West Bengal",dhamin:"Bihār",dhawad:"Mahārāshtra",dhed:"Madhya Pradesh",dheevara:"Kerala",dhekaro:"Jhārkhand",dhera:"Odisha",dhimal:"West Bengal","dhobi-dogri":"Jammu and Kashmīr","dhobi-tamil":"Tamil Nādu",dhola:"Rājasthān",dhyar:"Jammu and Kashmīr",dianbao:"Yunnan Province",diao:"Guizhou Province",didayi:"Odisha",dokhpa:"Ladākh","dom-chhattisgarhi":"Chhattīsgarh","dom-marathi":"Mahārāshtra",domal:"Jammu and Kashmīr","dombi-dasa":"Karnātaka",dosali:"Himāchal Pradesh",doupo:"Yunnan Province",dudhwala:"Gujarāt","durga-murga":"Karnātaka","eastern-samadu":"Yunnan Province","eastern-xiangxi-miao":"Hunan Province","eneti-dora":"Odisha","enger-yugur":"Gansu Province",erawallan:"Kerala",ersu:"Sichuan Province",ezhavathi:"Kerala","ga-mong":"Guizhou Province",gabit:"Goa",gachha:"Madhya Pradesh",gadhai:"Gujarāt",gadhia:"Uttar Pradesh",gadihar:"Bihār",gagra:"Punjab","galada-kokani":"Karnātaka",galiara:"Gujarāt",galwan:"Jammu and Kashmīr",gandalla:"Andhra Pradesh",gandharv:"Bihār",gandla:"Andhra Pradesh",gangawar:"Tamil Nādu",gangireddula:"Telangāna","ganta-sayebulu":"Andhra Pradesh","ganti-chores":"Karnātaka",ganz:"Jammu and Kashmīr",gao:"Guizhou Province",garadi:"Andhra Pradesh",gardi:"Jammu and Kashmīr",garmatan:"Gujarāt",garodi:"Mahārāshtra",garpagari:"Mahārāshtra",garvi:"Gujarāt",gatti:"Karnātaka",gauli:"Karnātaka",gavara:"Andhra Pradesh",gavli:"Gujarāt",gelao:"Guizhou Province","geman-deng":"Tibet Autonomous Region",ghadi:"Karnātaka",ghadwa:"Chhattīsgarh",ghantarghada:"Odisha",ghantiya:"Gujarāt",ghazi:"West Bengal",ghihara:"Rājasthān",ghogia:"Odisha",ghusuria:"Odisha",godagali:"Andhra Pradesh",godari:"Andhra Pradesh",godda:"Karnātaka",godra:"Odisha",golarana:"Gujarāt","gomantak-maratha":"Goa","gond-kannada":"Karnātaka",gondhali:"Mahārāshtra",gopal:"Mahārāshtra",gorkun:"Jammu and Kashmīr","gosain-chhattisgarhi":"Chhattīsgarh","gosain-gujarati":"Gujarāt","gosain-kangri":"Himāchal Pradesh","gosain-rajasthani":"Rājasthān",gosangi:"Telangāna","great-andamanese":"Andaman and Nicobar Islands",guaigun:"Yunnan Province","guddi-eluguwallu":"Andhra Pradesh",gudikara:"Karnātaka",gudugudupandi:"Tamil Nādu",guna:"Odisha",guraw:"Karnātaka",gurika:"Telangāna",gurru:"Rājasthān",gurukkal:"Tamil Nādu","ha-li":"Hainan Province",habura:"Uttar Pradesh",hadi:"Himāchal Pradesh",hagei:"Guizhou Province","hajjam-assamese":"Assam","hajjam-bengali":"West Bengal","hajjam-gujarati":"Gujarāt","hajjam-haryanvi":"Haryāna","hajjam-hindi":"Madhya Pradesh","hajjam-kannada":"Karnātaka","hajjam-kashmiri":"Jammu and Kashmīr","hajjam-telugu":"Andhra Pradesh",halaypotra:"Gujarāt",halleer:"Karnātaka",haluadas:"Tripura",hardas:"Mahārāshtra",harkantra:"Karnātaka",hasalaru:"Karnātaka",hatgar:"Andhra Pradesh",hatkar:"Mahārāshtra",heishui:"Sichuan Province",helawa:"Karnātaka","henan-mongols":"Qinghai Province",hesi:"Himāchal Pradesh",hijra:"Uttar Pradesh","hindu-santarash":"Bihār",hingora:"Gujarāt",hingorza:"Gujarāt",hiranbaj:"Rājasthān","holeya-dasari":"Karnātaka","hongjin-tai":"Yunnan Province",hu:"Yunnan Province","huishui-miao":"Guizhou Province",ilayatu:"Kerala","indo-french":"Puducherry","indo-vietnamese":"Puducherry",irika:"Odisha",jadam:"Madhya Pradesh",jadupetia:"Jhārkhand","jains-bengali":"West Bengal","jains-hindi":"Madhya Pradesh","jains-maithili":"Bihār","jains-tamil":"Tamil Nādu","jains-telugu":"Telangāna",jakkula:"Andhra Pradesh",jandra:"Andhra Pradesh",janughanta:"Odisha",jarawas:"Andaman and Nicobar Islands","jarkhandi-hajjam":"Jhārkhand","jarkhandi-julaha":"Jhārkhand","jat-muslim":"Gujarāt","jati-pillai":"Tamil Nādu",jatigar:"Karnātaka",jaweri:"Karnātaka",jethi:"Andhra Pradesh",jhadi:"Mahārāshtra","jharkhandi-nai":"Jhārkhand","jiamao-li":"Hainan Province",jiasou:"Yunnan Province",jimdar:"Uttarākhand",jino:"Yunnan Province","jogi-angika":"Bihār","jogi-halbi":"Chhattīsgarh","jogi-odia":"Odisha","jogi-telugu":"Karnātaka","jogi-tulu":"Karnātaka",juneja:"Gujarāt","kachchi-alia":"Odisha","kachchi-kushwaha":"Mahārāshtra","kachera-bagheli":"Madhya Pradesh",kachi:"Telangāna",kadar:"Bihār",kaghzi:"Mahārāshtra","kahar-gujarati":"Gujarāt",kaikali:"Andhra Pradesh",kakkalan:"Kerala",kakmara:"West Bengal","kalal-sadri":"Chhattīsgarh",kalanadies:"Kerala",kalladi:"Kerala","kallattu-kurup":"Kerala",kamalia:"Gujarāt",kambalattan:"Tamil Nādu",kambar:"Tamil Nādu","kambodia-bhagat":"Gujarāt",kamila:"Odisha",kanda:"Tripura",kandera:"Madhya Pradesh",kankali:"Uttar Pradesh","kannada-naicker":"Tamil Nādu","kannada-saineegar":"Tamil Nādu",kapadi:"Gujarāt",kapasiya:"Odisha",kapewar:"Mahārāshtra",kapuria:"West Bengal",karaiyar:"Tamil Nādu",karimpalan:"Kerala",karlar:"Tamil Nādu","karna-sale":"Tamil Nādu",karnam:"Andhra Pradesh",karnibhakthulu:"Andhra Pradesh","kasar-bengali":"West Bengal","kasar-gujarati":"Gujarāt","kasar-hindi":"Madhya Pradesh","kasar-odia":"Odisha",kasbati:"Gujarāt",kasikapadi:"Mahārāshtra",katesar:"Tamil Nādu",kathar:"Mahārāshtra",kathi:"Gujarāt",katipamula:"Telangāna",kattiakaran:"Tamil Nādu",kavara:"Kerala",kavuthiyan:"Kerala",kawoj:"Jammu and Kashmīr",kayalar:"Tamil Nādu",keji:"Tibet Autonomous Region",kepmari:"Tamil Nādu",ker:"Gujarāt",khadim:"Rājasthān",khadura:"Odisha","khairwar-bengali":"West Bengal","khairwar-chhattisgarhi":"Chhattīsgarh",khakar:"Karnātaka",khalifa:"West Bengal",khalpa:"Gujarāt",khamba:"Arunāchal Pradesh",khamyang:"Arunāchal Pradesh",khandwal:"Odisha","khangar-bundeli":"Uttar Pradesh",kharol:"Rājasthān",kharvi:"Mahārāshtra",khaskeli:"Gujarāt",khatbune:"Delhi","khati-odia":"Odisha","khatik-bengali":"West Bengal","khatik-chambeali":"Himāchal Pradesh","khatik-chhattisgarhi":"Chhattīsgarh","khatik-gujarati":"Gujarāt","khatik-marathi":"Mahārāshtra","khatik-punjabi":"Chandīgarh","khatik-telugu":"Telangāna",khmu:"Yunnan Province",khowa:"Arunāchal Pradesh",kidaran:"Kerala",kobari:"Odisha","kocu-wellan":"Kerala",koiren:"Manipur",kokaniz:"Mahārāshtra","kol-chhattisgarhi":"Chhattīsgarh",kolari:"Karnātaka",kolhati:"Mahārāshtra",koliyan:"Tamil Nādu",kollan:"Kerala","komara-panta":"Karnātaka","kommu-dasari":"Andhra Pradesh","konda-kammara":"Andhra Pradesh","kong-ge":"Yunnan Province","kongu-vaisnawa":"Tamil Nādu","kongu-vellala-gounder":"Tamil Nādu",koosa:"Karnātaka",kootan:"Kerala",koraga:"Odisha","koraga-korra":"Karnātaka",kota:"Tamil Nādu",kottari:"Karnātaka",koyava:"Karnātaka",kraal:"Jammu and Kashmīr",krishnavaka:"Tamil Nādu",kriyagar:"Rājasthān",kucband:"Haryāna",kucong:"Yunnan Province",kuda:"Odisha",kudimahan:"Mahārāshtra",kudiya:"Karnātaka",kudubi:"Karnātaka",kudumi:"Tamil Nādu",kuli:"Odisha",kuliya:"Andhra Pradesh",kuluvan:"Tamil Nādu","kumar-kshatriya":"Kerala","kumhar-assamese":"Assam","kummara-kumbara":"Karnātaka","kummara-kummari":"Tamil Nādu","kummara-kusuvan":"Kerala",kunduvadian:"Kerala","kunnuva-vellalar":"Tamil Nādu","kurahina-setti":"Karnātaka",kurakula:"Andhra Pradesh",kurol:"West Bengal",kurukkal:"Kerala",kurunga:"Odisha",kusta:"Odisha","kuthliya-bora":"Uttarākhand",kyrgyz:"Xinjiang Uyghur Autonomous Region",laba:"Guizhou Province",labapo:"Yunnan Province",laccadive:"Lakshadweep",ladar:"Karnātaka",ladia:"Madhya Pradesh",ladsi:"Mahārāshtra",lahangir:"Madhya Pradesh",lajjhar:"Mahārāshtra","lakhera-haryanvi":"Haryāna","lakkamari-kapu":"Telangāna",langa:"Gujarāt",laowu:"Yunnan Province",laskari:"Rājasthān","lati-china":"Yunnan Province",lawu:"Yunnan Province","liang-e":"Yunnan Province",liari:"Odisha",linghua:"Guangxi Zhuang Autonomous Region","liping-baheng":"Guizhou Province",liude:"Yunnan Province",liujia:"Guizhou Province","lodha-marathi":"Mahārāshtra","lohar-dogri":"Jammu and Kashmīr",lois:"Manipur",lonar:"Mahārāshtra",longjia:"Guizhou Province",lu:"Guizhou Province","lupanshui-miao":"Guizhou Province",luzu:"Sichuan Province",machhiyara:"Gujarāt","madiga-dasu":"Andhra Pradesh",maghia:"Odisha",mahisyadas:"Tripura",mahuria:"Odisha",maila:"Karnātaka",majjula:"Andhra Pradesh",majothi:"Gujarāt",makrani:"Gujarāt","mala-masti":"Telangāna","malai-pandaram":"Kerala","malai-vellala":"Tamil Nādu",malaikudi:"Karnātaka",malakar:"Tripura",malaneese:"Himāchal Pradesh",malayalar:"Kerala",maleru:"Karnātaka",maleyan:"Tamil Nādu",malia:"Odisha",malis:"Andhra Pradesh",man:"Assam",mana:"Mahārāshtra",manbhav:"Madhya Pradesh","mandali-muslims":"Gujarāt",mandula:"Andhra Pradesh","mang-china":"Yunnan Province","mangnyar-muslims":"Rājasthān",manhas:"Jammu and Kashmīr",maniyattikkaran:"Tamil Nādu","manjygur-muslims":"Jammu and Kashmīr",mankar:"Madhya Pradesh",manmet:"Yunnan Province","manna-dhora":"Andhra Pradesh",manser:"Karnātaka",manyak:"Sichuan Province","maran-nairs":"Kerala",marasari:"Kerala","maria-muslims":"Assam","markande-kanjia":"Odisha","mashan-miao":"Guizhou Province",masku:"Himāchal Pradesh",matak:"Assam",matangi:"Telangāna",mavilan:"Kerala",meda:"Karnātaka",medari:"Andhra Pradesh","medog-monba":"Tibet Autonomous Region","meifu-li":"Hainan Province",mengwu:"Yunnan Province",mer:"Gujarāt",mhalo:"Goa",miguba:"Tibet Autonomous Region",ming:"Sichuan Province",minyak:"Sichuan Province",mir:"Gujarāt",mirshikar:"West Bengal","mishaba-laluo":"Yunnan Province","mith-gauda":"Goa","mitha-ayyalavar":"Telangāna",mitna:"Mahārāshtra",miyana:"Gujarāt",mo:"Guizhou Province",modaks:"Jhārkhand",mogaveera:"Karnātaka","moger-malayalam":"Kerala","moghal-telugu":"Telangāna","moghol-dogri":"Jammu and Kashmīr","moghol-gujarati":"Gujarāt","moghol-marwari":"Rājasthān",mogia:"Rājasthān",momba:"Arunāchal Pradesh","mon-india":"Ladākh",mondivogula:"Andhra Pradesh",mondiwar:"Mahārāshtra",moothan:"Kerala",mosuo:"Yunnan Province",mozhihei:"Hunan Province","muchi-chamar":"Telangāna",muda:"Yunnan Province",mudugar:"Tamil Nādu",mujavar:"Gujarāt",mujavir:"Uttar Pradesh",mukeri:"Bihār",mukhi:"Assam",mukkari:"Kerala",muli:"Andhra Pradesh",mundala:"Karnātaka",mundapotta:"Odisha",munnewar:"Chhattīsgarh",murhid:"Rājasthān",musari:"Kerala",muskhan:"Madhya Pradesh","muslim-gond":"Madhya Pradesh","muslim-kachera":"Mahārāshtra","muslim-khatri":"Gujarāt","muslim-lakhera":"Gujarāt","muslim-patel":"Gujarāt","musti-chenchu":"Andhra Pradesh",muttatu:"Kerala",mutwa:"Gujarāt",muzi:"Yunnan Province",na:"Arunāchal Pradesh",nadors:"Karnātaka",nagavamsam:"Andhra Pradesh",nagbansi:"Jhārkhand","nagbansi-dogri":"Jammu and Kashmīr",nagda:"Rājasthān",nahal:"Mahārāshtra",naheng:"Yunnan Province","nai-assamese":"Assam","nai-kannada":"Karnātaka","nai-mewari":"Rājasthān","nai-odia":"Odisha",naikpod:"Mahārāshtra",nairy:"Karnātaka",naita:"Madhya Pradesh",najjar:"Jammu and Kashmīr",naju:"Sichuan Province",nakhasa:"Andhra Pradesh",nakkala:"Tamil Nādu",naksia:"Odisha",nalband:"Bihār",nalkadaya:"Kerala","namasudra-assamese":"Assam",nambutiris:"Kerala",namdagur:"Jammu and Kashmīr",namdeo:"Madhya Pradesh","namdeo-maratha":"Tamil Nādu",namuyi:"Sichuan Province",nandiwala:"Mahārāshtra","nanjil-mudali":"Tamil Nādu",nanjingren:"Guizhou Province",naoda:"Madhya Pradesh",naqqas:"Jammu and Kashmīr",nar:"Himāchal Pradesh",narsanna:"Kerala",narsinghpura:"Gujarāt",nasuvan:"Kerala","nat-bagheli":"Madhya Pradesh",natua:"Karnātaka",nawaiyat:"Karnātaka",nayadi:"Kerala","nayak-muslims":"Gujarāt",neeli:"Mahārāshtra",nema:"Madhya Pradesh",neyyala:"Andhra Pradesh","nghari-tibetans":"Tibet Autonomous Region",nicar:"Himāchal Pradesh",nilkanth:"Mahārāshtra",node:"Gujarāt",noliya:"Odisha","northern-awu":"Yunnan Province","northern-dong":"Guizhou Province","northern-muji":"Yunnan Province",numao:"Guizhou Province",nyaria:"Rājasthān",olot:"Heilongjiang Province",onge:"Andaman and Nicobar Islands",ongkor:"Xinjiang Uyghur Autonomous Region",ontaris:"Andhra Pradesh",oriya:"Odisha",otans:"Kerala",padannan:"Kerala",padarthis:"Karnātaka",padhar:"Gujarāt",padigarajulu:"Andhra Pradesh",padiyar:"Karnātaka",pagativeshagallu:"Andhra Pradesh",paharia:"West Bengal",pajabgar:"Rājasthān",pakhimara:"Rājasthān",paky:"Andhra Pradesh","palakad-tandans":"Kerala",palyu:"Guangxi Zhuang Autonomous Region",pambada:"Karnātaka",pambala:"Telangāna",pamidi:"Andhra Pradesh",pamula:"Andhra Pradesh",panar:"Gujarāt",panara:"Chhattīsgarh","pancaratra-srivaisnavas-brahmans":"Andhra Pradesh",pandithar:"Kerala",pando:"Chhattīsgarh",pangans:"Manipur",pangul:"Mahārāshtra","pangwal-buddhists":"Himāchal Pradesh",pangwala:"Himāchal Pradesh","panka-odia":"Odisha",pankhiya:"Uttar Pradesh",pannadi:"Tamil Nādu",panniandi:"Tamil Nādu","panxian-nasu":"Guizhou Province",paradhi:"Gujarāt",parenga:"Odisha","pariki-muggula":"Telangāna",parkavakulam:"Tamil Nādu",parvatarajakulam:"Tamil Nādu",patanwadia:"Gujarāt",patari:"Uttar Pradesh",pathinaickans:"Kerala",pathiyan:"Kerala",patkars:"Telangāna","patni-jamat":"Gujarāt","patni-vankars":"Gujarāt",pattanavan:"Tamil Nādu",pattegar:"Karnātaka",pendar:"Karnātaka",perumkollar:"Tamil Nādu",phularis:"Mahārāshtra","pingdi-yao":"Hunan Province","pinjara-dhunia-bengali":"West Bengal","pinjara-kannada":"Karnātaka","pinjara-marathi":"Mahārāshtra","pinjara-punjabi":"Punjab",pisaroti:"Kerala",pochammalollu:"Mahārāshtra",poduval:"Kerala",pohul:"Jammu and Kashmīr",pomla:"Gujarāt",popei:"Yunnan Province","prabhu-patane":"Mahārāshtra",pubiao:"Yunnan Province",pulisari:"Kerala",puman:"Yunnan Province",puran:"Jhārkhand","purig-pa":"Ladākh",puroik:"Tibet Autonomous Region",pusha:"Guangxi Zhuang Autonomous Region","puspakan-unni":"Kerala",putliwale:"Uttar Pradesh",qanu:"Guizhou Province","qiubei-zhuang":"Yunnan Province",qixingmin:"Guizhou Province",racband:"Punjab",rachavar:"Karnātaka",raddi:"Karnātaka",radhi:"Odisha","rai-bhat-muslims":"Uttar Pradesh",rajannalu:"Telangāna",rajapuri:"Karnātaka",rajdhop:"Bihār","raji-india":"Uttarākhand",rajkumhar:"Rājasthān",rajpurohit:"Rājasthān",rana:"Odisha",raneyar:"Karnātaka",rao:"Guizhou Province",rastogi:"Uttar Pradesh",ratal:"Jammu and Kashmīr",rath:"Rājasthān",rathodia:"Gujarāt",raval:"Karnātaka",rave:"Uttar Pradesh","raya-rawat":"Karnātaka",raysipotra:"Gujarāt",reddi:"Kerala","reddi-dora":"Andhra Pradesh",reddika:"Andhra Pradesh",rehar:"Himāchal Pradesh",royma:"Gujarāt",rujjhar:"Madhya Pradesh","rumai-de-ang":"Yunnan Province",runjalavallu:"Andhra Pradesh",runwalas:"Rājasthān",sabakhia:"Odisha",sabar:"Tripura",sadaru:"Andhra Pradesh","sadhu-chetty":"Andhra Pradesh",sagar:"Gujarāt",sagharias:"Dādra and Nagar Haveli and Damān and Diu",saha:"Tripura",sahi:"Mahārāshtra",sahisia:"Bihār",sain:"Rājasthān",sais:"Madhya Pradesh",sakunapaksollu:"Andhra Pradesh",salivahanam:"Tamil Nādu",saman:"Heilongjiang Province",samanthan:"Kerala",samasi:"Odisha",samayavallu:"Andhra Pradesh",sanchia:"Rājasthān",sanda:"Yunnan Province","sandhai-muslims":"Gujarāt",sanei:"Odisha",sanghar:"Mahārāshtra",sanhai:"Himāchal Pradesh",sanqiao:"Guizhou Province",sansoi:"Himāchal Pradesh",santia:"Rājasthān",sapalyas:"Karnātaka",saradagallu:"Telangāna","saragh-yugur":"Gansu Province",saranias:"Gujarāt",saraogi:"Rājasthān","sarikoli-tajiks":"Xinjiang Uyghur Autonomous Region",sarodi:"Mahārāshtra",savalakkarar:"Tamil Nādu","sayyid-chhattisgarhi":"Chhattīsgarh","sayyid-garhwali":"Uttarākhand","sayyid-gujarati":"Gujarāt","sayyid-kannada":"Karnātaka","sayyid-odia":"Odisha","sayyid-pahari":"Jammu and Kashmīr","sayyid-tamil":"Tamil Nādu",semman:"Tamil Nādu",senaithalaivar:"Tamil Nādu",senapathi:"Andhra Pradesh",sentinelese:"Andaman and Nicobar Islands",seok:"Himāchal Pradesh",serdukpen:"Arunāchal Pradesh",shabdakar:"Tripura",shaksaz:"Jammu and Kashmīr",sheikhzade:"Uttar Pradesh",shenzhou:"Guizhou Province",shershabadia:"Bihār",shikari:"Rājasthān","shina-india":"Jammu and Kashmīr",shixing:"Sichuan Province",shravan:"Gujarāt","sichuan-mongols":"Yunnan Province",siddi:"Gujarāt",sikligar:"Madhya Pradesh",silavantulu:"Andhra Pradesh",sindhollu:"Telangāna",sinduria:"Odisha",singiwala:"Rājasthān",sisgars:"Madhya Pradesh",siviar:"Tamil Nādu",siyalgar:"West Bengal",sofi:"Jammu and Kashmīr",soligaru:"Karnātaka","sompura-salat":"Gujarāt","son-koli":"Chhattīsgarh",sonavar:"Puducherry",sorgars:"Rājasthān",soria:"Madhya Pradesh",suda:"Odisha",sudhan:"Jammu and Kashmīr",sudir:"Karnātaka","sudra-das":"Assam",sukiyar:"Jhārkhand",sunga:"Rājasthān",sunuwar:"West Bengal","suodi-nosu":"Sichuan Province","sutar-mistry":"Mahārāshtra",sutradhar:"West Bengal","swakulasali-koshti":"Andhra Pradesh",swangla:"Himāchal Pradesh","ta-er":"Yunnan Province",tagewale:"Uttarākhand",tagu:"Yunnan Province",tai:"Gujarāt","tai-lu":"Yunnan Province","tai-pong":"Yunnan Province",taiphake:"Assam",tak:"Rājasthān",takari:"Mahārāshtra",tambiran:"Tamil Nādu","tamboli-bengali":"West Bengal","tamboli-telugu":"Andhra Pradesh",targala:"Gujarāt",telengi:"Andaman and Nicobar Islands","teli-assamese":"Assam","thachanad-moopan":"Kerala",thakurai:"Bihār",thammadi:"Karnātaka",thanapati:"Odisha",thanga:"Manipur",tharua:"Odisha",thavi:"Himāchal Pradesh",theba:"Gujarāt","thogataveera-kshatriya":"Andhra Pradesh","tholuva-naicker":"Tamil Nādu",thoraiyar:"Tamil Nādu",tikulhara:"Bihār",tilli:"Bihār",tirgar:"Gujarāt",tirugatigantla:"Andhra Pradesh",tiyattunni:"Kerala",tolakari:"Andhra Pradesh",tondman:"Tamil Nādu","tongren-bonan":"Qinghai Province","tripuri-kumhar":"West Bengal","tripuri-namasudra":"Tripura","tula-vina":"Odisha",tulao:"Yunnan Province","turi-barot":"Gujarāt","turuk-pasi":"Bihār",turun:"Assam",tusu:"Yunnan Province",udupula:"Andhra Pradesh",uppara:"Andhra Pradesh",uppillian:"Tamil Nādu","urikkar-naicker":"Tamil Nādu",urindavan:"Kerala",usta:"Rājasthān",uzbeks:"Xinjiang Uyghur Autonomous Region",vadi:"Gujarāt",vadugan:"Kerala","vahivanca-barot":"Gujarāt","vaikhanasa-brahmans":"Andhra Pradesh",valinjiyar:"Kerala","van-baoriya":"Rājasthān",vayati:"Gujarāt",ved:"Rājasthān",velip:"Mahārāshtra","vellaiyan-kuppam-padaiyaci":"Tamil Nādu","verra-musti":"Telangāna",vetan:"Kerala",vettaikkaran:"Tamil Nādu",vettalaikarans:"Puducherry",vettiyan:"Puducherry",vijabargiya:"Rājasthān",vilkurup:"Kerala",vilyagaras:"Karnātaka",vipravinodulu:"Andhra Pradesh",visavan:"Kerala",vyapari:"Gujarāt",wagheri:"Gujarāt",waidu:"Mahārāshtra","wainadan-cetti":"Kerala","wainadan-kader":"Kerala","wainadan-pulayan":"Kerala","wakhi-china":"Xinjiang Uyghur Autonomous Region",wandharo:"Gujarāt","wayanad-pathiyan":"Kerala",waza:"Jammu and Kashmīr","wenma-zhuang":"Yunnan Province","western-gaisu":"Yunnan Province","western-samadu":"Yunnan Province","western-xibe":"Xinjiang Uyghur Autonomous Region",wopu:"Guizhou Province",wunai:"Hunan Province",wutun:"Qinghai Province",xi:"Guizhou Province",xialusi:"Guizhou Province","xiaoliangshan-nosu":"Yunnan Province",xijima:"Yunnan Province","xinping-lalu":"Yunnan Province","xuzhang-lalu":"Yunnan Province",ya:"Yunnan Province",yakha:"Sikkim",yanghuang:"Guizhou Province",yata:"Andhra Pradesh",yatagiri:"Andhra Pradesh",yatibi:"Manipur",yatla:"Andhra Pradesh",yelmar:"Mahārāshtra",yerong:"Guangxi Zhuang Autonomous Region","yidu-lhoba":"Tibet Autonomous Region","yinuo-nosu":"Sichuan Province",yite:"Andhra Pradesh",yizi:"Guizhou Province",youmai:"Guizhou Province","younuo-bunu":"Guangxi Zhuang Autonomous Region","yunnan-mongol":"Yunnan Province","yunnan-shui":"Yunnan Province",za:"Tibet Autonomous Region",zakhrin:"Arunāchal Pradesh",zamral:"Madhya Pradesh"},ia={RED:"#e11d48",RED_DK:"#9f1239",NAVY:"#002e6e",GOLD:"#f59e0b",WHITE:"#ffffff",GREEN_BINS:["#9bcf9b","#5cb874","#1f9d55","#0f7a3d","#0a5c2e"],RED_RAMP:["#fdba74","#fb923c","#f97316","#ea580c","#c2410c"],CAT:["#002e6e","#1f9d55","#f59e0b","#e11d48","#7c3aed","#0891b2","#65a30d","#be123c","#a16207"]},yr=["2–10%","10–25%","25–50%","50–75%","75–100%"];function $t(a){const n=+a||0;return n<10?0:n<25?1:n<50?2:n<75?3:4}function qe(a){return ia.GREEN_BINS[$t(a)]}function Fi(a){const n=+a||0;return n>=80?ia.RED_RAMP[4]:n>=40?ia.RED_RAMP[3]:n>=15?ia.RED_RAMP[2]:n>=5?ia.RED_RAMP[1]:ia.RED_RAMP[0]}function Ki(a,n=4,e=22){const i=Math.max(1,+a||0),t=Math.min(1,Math.log10(i)/9);return n+(e-n)*t}function br(a){return a==="same-language"?null:a==="related-cluster"?[4,3]:[1,3]}function Pg(a){const n=String(a||"").trim();return n&&n.split(" - ")[0].trim()||"Unknown"}function _e(a){const n=+a||0;return n>=1e9?(n/1e9).toFixed(1)+"B":n>=1e6?(n/1e6).toFixed(1)+"M":n>=1e3?Math.round(n/1e3)+"K":String(Math.round(n))}const Un=a=>String(a||"").trim().toLowerCase(),Cg=a=>a&&typeof a=="object"?a.label??a.value??"":a??"",Ib=a=>a&&typeof a=="object"?a.value??a.label??"":a??"",wb={"People's Republic of China":"China","Lao People’s Democratic Republic":"Laos","Lao People's Democratic Republic":"Laos"},xb=a=>wb[a]||a;function Tb(){const a=ua(null),n=ua({languages:new Set,countries:new Set,religions:new Set,bridges:new Set,reachedMin:null}),e=ua(""),i=ua("pct"),t=ua(null),o=ua(!1),r=ua("map"),l=ua("mobilization"),s=ua(null),g=ua(!1),d=ua(""),_=ua(""),k=ua([]),x=ua([]),D=ua(fg||{}),T=ua((ee==null?void 0:ee.meta)||{});async function $(p){const M=p||{};d.value="",x.value=Nb(ee);const N=Lb(x.value);let U=[];try{U=await Kb(M)}catch(h){d.value="Live unreached API unreachable — "+((h==null?void 0:h.message)||h),k.value=$b(ee,N),_.value=new Date().toISOString(),g.value=!0;return}k.value=Rb(U,N),_.value=new Date().toISOString(),g.value=!0}const w=la(()=>{let p=k.value;const M=n.value;M.countries.size&&(p=p.filter(U=>M.countries.has(U.country))),M.languages.size&&(p=p.filter(U=>U.langs.some(h=>M.languages.has(h))));const N=Un(e.value);if(N&&(p=p.filter(U=>Un(U.label).includes(N)||Un(U.country).includes(N)||U.langs.some(h=>Un(h).includes(N)))),t.value){const U=Un(t.value),h=P(U);p=p.filter(C=>h.has(C.id))}return[...p].sort((U,h)=>h.senderCount-U.senderCount||h.target_pop-U.target_pop||h.count-U.count)}),L=la(()=>a.value&&k.value.find(p=>p.id===a.value)||null),E=la(()=>a.value?x.value.filter(p=>p.targetId===a.value):[]),I=la(()=>{let p=E.value;const M=n.value;M.languages.size&&(p=p.filter(U=>M.languages.has(U.lang))),M.countries.size&&(p=p.filter(U=>M.countries.has(U.country))),M.religions.size&&(p=p.filter(U=>M.religions.has(U.religionFamily))),M.bridges.size&&(p=p.filter(U=>M.bridges.has(U.bridge))),M.reachedMin!=null&&(p=p.filter(U=>U.pct>=M.reachedMin));const N=Un(e.value);return N&&(p=p.filter(U=>Un(U.name).includes(N)||Un(U.lang).includes(N)||Un(U.country).includes(N))),p}),G=la(()=>I.value.filter(p=>isFinite(p.lat)&&isFinite(p.lng)).map(p=>({...p,isPool:!1}))),S=la(()=>{const p=w.value.length;if(a.value){const N=E.value.length,U=I.value.length;return{senders:U,clusters:p,hidden:Math.max(0,N-U)}}return{senders:w.value.reduce((N,U)=>N+U.senderCount,0),clusters:p,hidden:0}}),v=la(()=>{const p=L.value;if(!p)return S.value.clusters+" unreached clusters · "+S.value.senders.toLocaleString()+" reached senders nearby — pick a red to send";const M=I.value,N=t.value||[...n.value.languages][0]||"",U=[...M].sort((y,R)=>R.pct-y.pct||R.pop-y.pop)[0],h=(N?N+" × ":"")+p.country,C=U?" · top "+U.name+" "+Math.round(U.pct)+"%, "+_e(U.pop):"";return h+": "+p.count+" unreached · "+M.length+(N?" nearby "+N+" senders":" nearby senders")+C}),K=la(()=>{const p=[...I.value],M={"same-language":0,"related-cluster":1,"same-country":2};switch(l.value){case"pct":p.sort((N,U)=>U.pct-N.pct||U.pop-N.pop);break;case"pop":p.sort((N,U)=>U.pop-N.pop||U.pct-N.pct);break;case"name":p.sort((N,U)=>N.name.localeCompare(U.name));break;case"bridge":p.sort((N,U)=>(M[N.bridge]??9)-(M[U.bridge]??9)||U.pct-N.pct);break;case"frontier":p.sort((N,U)=>U.pop-N.pop||N.pct-U.pct);break;case"mobilization":default:p.sort((N,U)=>U.pct-N.pct||U.pop-N.pop);break}return p}),O=la(()=>{const p=a.value?I.value:x.value.filter(M=>c().has(M.targetId));return{languageBar:jg(p,M=>M.lang,12),countryBar:jg(p,M=>M.country,12),reachedHist:yr.map((M,N)=>({key:N,label:M,value:p.filter(U=>U.bin===N).length,color:ia.GREEN_BINS[N]})),donut:i.value==="religion"?kg(p,M=>M.religionFamily):kg(p,M=>M.bridge)}}),q=la(()=>{var p,M,N;return{liveTargets:k.value.length,liveUnreached:k.value.reduce((U,h)=>U+h.count,0),loadedAt:_.value,bakedGenerated:((p=T.value)==null?void 0:p.generated)||"",bakedSenders:((M=T.value)==null?void 0:M.total_neighbors)||x.value.length,reachedFilter:((N=T.value)==null?void 0:N.reached_filter)||"",admin1Level:"IN/CN admin1 (point-in-polygon, "+Object.keys(D.value).length+" groups)",apiError:d.value}}),sa=la(()=>{const p=[],M=n.value;a.value&&L.value&&p.push({kind:"focus",value:L.value.country,label:L.value.country});for(const N of M.languages)p.push({kind:"languages",value:N,label:N});for(const N of M.countries)p.push({kind:"countries",value:N,label:N});for(const N of M.religions)p.push({kind:"religions",value:N,label:N});for(const N of M.bridges)p.push({kind:"bridges",value:N,label:N});return M.reachedMin!=null&&p.push({kind:"reachedMin",value:M.reachedMin,label:"reached% ≥ "+M.reachedMin}),t.value&&p.push({kind:"lens",value:t.value,label:"lens: "+t.value}),p});function ea(p){a.value=p}function ga(){a.value=null}function Sa(p,M){const N=n.value[p];N instanceof Set&&(N.has(M)?N.delete(M):N.add(M),n.value={...n.value})}function Ma(p){n.value={...n.value,reachedMin:p==null||p===""?null:+p}}function ma(p){e.value=String(p??"")}function pa(p){i.value=p==="religion"?"religion":"pct"}function Y(p){t.value=p||null}function ta(){o.value=!o.value}function aa(p){r.value=p==="flower"?"flower":"map"}function ba(p){l.value=p||"mobilization"}function na(p){s.value=p||null}function u(p){if(p)return p.kind==="focus"?ga():p.kind==="reachedMin"?Ma(null):p.kind==="lens"?Y(null):Sa(p.kind,p.value)}function A(){n.value={languages:new Set,countries:new Set,religions:new Set,bridges:new Set,reachedMin:null},t.value=null,e.value=""}function j(p){var H,V,oa;const M=Array.isArray(p)?p:K.value,N=["name","country","lang","rol3","pct","pop","bridge","adjacency","religion_bg"],U=Q=>{let m=String(Q??"");return/^[=+\-@]/.test(m)&&(m="'"+m),'"'+m.replace(/"/g,'""')+'"'},h="# BloomField Cockpit — reached neighbors for "+(((H=L.value)==null?void 0:H.country)||"all targets")+" · baked "+(((V=T.value)==null?void 0:V.generated)||"")+" · "+M.length+" rows · "+(_.value||""),C=N.join(","),y=M.map(Q=>N.map(m=>U(Q[m])).join(",")).join(` -`),R=h+` -`+C+` -`+y+` -`;try{const Q=new Blob([R],{type:"text/csv;charset=utf-8;"}),m=URL.createObjectURL(Q),b=document.createElement("a");b.href=m,b.download="send-list-"+(((oa=L.value)==null?void 0:oa.country)||"all").replace(/\W+/g,"-").toLowerCase()+".csv",document.body.appendChild(b),b.click(),b.remove(),setTimeout(()=>URL.revokeObjectURL(m),1e3)}catch{}return R}function c(){return new Set(w.value.map(p=>p.id))}function P(p){const M=new Set;for(const N of x.value)Un(N.lang)===p&&M.add(N.targetId);return M}return{focusedTargetId:a,facets:n,search:e,colorBy:i,languageLens:t,provinceDrill:o,mode:r,sortKey:l,hoveredId:s,hoveredSenderId:s,ready:g,loadError:d,loadedAt:_,meta:T,admin1:D,allClusters:k,allSenders:x,clusters:w,focusedTarget:L,sendersForFocus:E,visibleSenders:I,mapNodes:G,counts:S,headline:v,listRows:K,chartData:O,provenance:q,chips:sa,loadData:$,selectTarget:ea,clearFocus:ga,toggleFacet:Sa,setReachedMin:Ma,setSearch:ma,setColorBy:pa,setLanguageLens:Y,toggleProvince:ta,setMode:aa,setSort:ba,setHover:na,removeChip:u,clearAllFacets:A,exportSelectionCSV:j,quantileBin:$t,reachedColor:qe,redColor:Fi,logRadius:Ki,bridgeDash:br,religionFamily:Pg,fmtPop:_e,COLORS:ia}}function Ft(){const a=Ya("cockpitStore",null);if(!a)throw new Error("[useCockpitStore] no cockpitStore provided — mount inside ");return a}function Nb(a){const n=[],e=(a==null?void 0:a.countries)||{};for(const[i,t]of Object.entries(e))for(const o of t.neighbors||[]){const r=Number(o.lat),l=Number(o.lng);if(!isFinite(r)||!isFinite(l))continue;const s=+o.pct_christian||0;n.push({id:o.code||i+"|"+o.name+"|"+o.country+"|"+(o.rol3||""),targetId:i,name:o.name,country:o.country,lang:o.lang,rol3:o.rol3||"",pct:s,pop:+o.pop||0,bridge:o.bridge||"",adjacency:o.adjacency||"",religion_bg:o.religion_bg||"",religionFamily:Pg(o.religion_bg),lat:r,lng:l,code:o.code||"",bin:$t(s),color:qe(s)})}return n}function Lb(a){const n=new Map;for(const e of a){let i=n.get(e.targetId);i||(i={count:0,pop:0},n.set(e.targetId,i)),i.count++,i.pop+=e.pop}return n}function Rb(a,n){const e=new Map;for(const i of a){const t=Number(i.latitude),o=Number(i.longitude),r=xb(Cg(i.country_code)||"(unknown)"),l=Cg(i.primary_language)||"",s=i.slug||Ib(i.primary_language)+":"+i.name;let g=e.get(r);g||(g={id:r,country:r,label:r,count:0,target_pop:0,_sumLat:0,_sumLng:0,_n:0,langSet:new Set,members:[]},e.set(r,g)),g.count++,l&&g.langSet.add(l),g.members.push({name:i.name,slug:s,lang:l,lat:t,lng:o}),isFinite(t)&&isFinite(o)&&(g._sumLat+=t,g._sumLng+=o,g._n++)}return Fb([...e.values()],n)}function $b(a,n){const e=[];for(const[i,t]of Object.entries((a==null?void 0:a.countries)||{})){const o=n.get(i);e.push({id:i,country:i,label:i,count:+t.target_upg||0,target_pop:+t.target_pop||0,lat:null,lng:null,langs:t.target_top_langs||[],target_top_langs:t.target_top_langs||[],target_top_religion:t.target_top_religion||"",senderCount:o?o.count:0,hasSenders:!!o,color:Fi(+t.target_upg||0)})}return e}function Fb(a,n){const e=[];for(const i of a){i._n?(i.lat=i._sumLat/i._n,i.lng=i._sumLng/i._n):(i.lat=null,i.lng=null);const t=n.get(i.id);e.push({id:i.id,country:i.country,label:i.label,count:i.count,target_pop:i.target_pop,lat:i.lat,lng:i.lng,langs:[...i.langSet],target_top_langs:[...i.langSet].slice(0,4),target_top_religion:"",members:i.members,senderCount:t?t.count:0,hasSenders:!!t,color:Fi(i.count)})}return e.sort((i,t)=>t.count-i.count),e}async function Kb(a){const n=a.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL);if(!n)throw new Error("No API base configured (apiBase / window.MAP_APP_API_URL / VITE_API_BASE_URL) — failing closed, no default host.");const i=n.replace(/\/?$/,"")+"/api/people-groups/list?fields="+"slug,name,latitude,longitude,country_code,primary_language,wagf_block"+"&lang=en",t=await fetch(i,{cache:"no-store"});if(!t.ok)throw new Error("list "+t.status);const o=await t.json();return o.posts||o.data||o.records||o.results||o.items||(Array.isArray(o)?o:[])}function jg(a,n,e){const i=new Map;for(const t of a){const o=n(t)||"—";i.set(o,(i.get(o)||0)+1)}return[...i.entries()].map(([t,o])=>({key:t,label:t,value:o})).sort((t,o)=>o.value-t.value).slice(0,e)}function kg(a,n){const e=new Map;for(const t of a){const o=n(t)||"—";e.set(o,(e.get(o)||0)+1)}return[...e.entries()].sort((t,o)=>o[1]-t[1]).map(([t,o],r)=>({key:t,label:t,value:o,color:ia.CAT[r%ia.CAT.length]}))}const Gg="https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css";async function Bb(a){const n=a.getRootNode();if(!(n instanceof ShadowRoot))return;const e=o=>new Promise(r=>setTimeout(r,o)),i=n.querySelector(`link[href="${Gg}"]`);if(i){if(i.sheet)return;await Promise.race([new Promise(o=>{i.addEventListener("load",o,{once:!0}),i.addEventListener("error",o,{once:!0})}),e(2e3)]);return}const t=document.createElement("link");t.rel="stylesheet",t.href=Gg,await Promise.race([new Promise(o=>{t.addEventListener("load",o,{once:!0}),t.addEventListener("error",o,{once:!0}),n.prepend(t)}),e(2e3)])}const Ob=85.0511,vg=-2,Ub=0,Hb=-60;function Ag(a){return(1-Math.log(Math.tan(Math.PI/4+a*Math.PI/180/2))/Math.PI)/2}function Db(a,n,e,i){if(!a||a<=0||!n||n<=0)return Ub;const t=Math.log2(a/512),o=Ag(i)-Ag(Ob),r=Math.log2(n/(512*o)),l=Math.max(t,r);return Math.max(vg,Math.min(l,(e??18)-1))}function Kt({containerRef:a,accessToken:n,style:e,center:i=[20,10],zoom:t=2,minZoom:o=void 0,maxZoom:r=18,pitch:l=0,bearing:s=0,renderWorldCopies:g=!0,southCutoff:d=Hb,maxBounds:_=void 0}){const k=ua(null),x=ua(!1);let D=null,T=null;async function $(){var O;if(typeof mapboxgl>"u"){console.error("mapboxgl is not available. Add the Mapbox GL JS script to your page.");return}if(!a.value){console.error("containerRef.value is null — call initializeMap() inside onMounted()");return}if(!n){console.error('No Mapbox access token provided. Pass "tk" in profile-config JSON.');return}if(!n.startsWith("pk.")){console.error('Mapbox token looks invalid (expected "pk." prefix). Got:',n.slice(0,10)+"...");return}await Bb(a.value),await new Promise(q=>requestAnimationFrame(q));const L=a.value,E=L.clientWidth,I=L.clientHeight;if(E===0||I===0){console.error(`[useMapInstance] Container has ZERO dimensions (${E}×${I}). Map will be invisible. Check that parent elements have CSS sizing.`);let q=L.parentElement,sa=0;for(;q&&sa<5;)q=q.parentElement,sa++}const G=n;mapboxgl.accessToken=G;const S=()=>typeof window<"u"&&window.innerWidth>=1024,v=(q,sa)=>{if(!S())return vg;const ea=Db(q,sa,r,d);return typeof o=="number"?Math.max(o,ea):ea},K=v(L.clientWidth,L.clientHeight);k.value=new mapboxgl.Map({accessToken:G,container:a.value,style:e,center:i,zoom:t,minZoom:K,maxZoom:r,pitch:l,bearing:s,dragRotate:!1,touchPitch:!1,renderWorldCopies:g,..._?{maxBounds:_}:{},attributionControl:!1}),k.value.touchZoomRotate.disableRotation();{const q=((O=a.value)==null?void 0:O.parentElement)||null,sa=q?Array.from(q.querySelectorAll(".map-scroll-edge")):[];if(sa.length){const ea="rgba(120, 128, 134, 0.28)",ga="36px",Sa=p=>p.classList.contains("map-scroll-edge--left");for(const p of sa)p.style.background=`linear-gradient(${Sa(p)?"to right":"to left"}, ${ea} ${ga}, transparent ${ga})`,p.style.opacity="0",p.style.transition="opacity 0.16s ease",p.style.userSelect="none",p.style.webkitUserSelect="none";const Ma=p=>{p.style.opacity="1"},ma=p=>{p.style.opacity="0"},pa=()=>sa.find(p=>S()?!Sa(p):Sa(p))||null,Y=new Set;let ta=!1,aa=null;const ba=()=>{for(const p of sa)Y.has(p)||ma(p)},na=()=>{const p=pa();p&&(Ma(p),aa&&clearTimeout(aa),aa=setTimeout(ba,250))},u=()=>{S()&&na()},A=p=>{if(!(p.touches&&p.touches.length===1))return;const M=p.target;M&&M.classList&&M.classList.contains("map-scroll-edge")||na()},j=()=>{aa&&clearTimeout(aa),ba()};q.addEventListener("wheel",u,{passive:!0}),q.addEventListener("touchmove",A,{passive:!0}),q.addEventListener("touchend",j,{passive:!0}),q.addEventListener("touchcancel",j,{passive:!0});const c=()=>{ta||na()};typeof window<"u"&&window.addEventListener("scroll",c,{passive:!0});const P=[];for(const p of sa){const M=()=>{Y.add(p),Ma(p)},N=()=>{Y.delete(p),ma(p)},U=()=>{ta=!0,Ma(p)},h=()=>{ta=!1,ma(p)};p.addEventListener("mouseenter",M),p.addEventListener("mouseleave",N),p.addEventListener("touchstart",U,{passive:!0}),p.addEventListener("touchend",h,{passive:!0}),P.push(()=>{p.removeEventListener("mouseenter",M),p.removeEventListener("mouseleave",N),p.removeEventListener("touchstart",U),p.removeEventListener("touchend",h)})}T=()=>{aa&&(clearTimeout(aa),aa=null),q.removeEventListener("wheel",u),q.removeEventListener("touchmove",A),q.removeEventListener("touchend",j),q.removeEventListener("touchcancel",j),typeof window<"u"&&window.removeEventListener("scroll",c);for(const p of P)p();for(const p of sa)ma(p)}}}D=()=>{const q=k.value;if(!q)return;const sa=v(L.clientWidth,L.clientHeight);q.setMinZoom(sa),q.getZoom(){requestAnimationFrame(()=>{var q;(q=k.value)==null||q.resize(),k.value&&k.value.setMinZoom(v(L.clientWidth,L.clientHeight)),x.value=!0})})}function w(){k.value&&(D&&(k.value.off("resize",D),typeof window<"u"&&(window.removeEventListener("resize",D),window.removeEventListener("orientationchange",D)),D=null),T&&(T(),T=null),k.value.remove(),k.value=null,x.value=!1)}return{map:k,isMapReady:x,initializeMap:$,destroy:w}}const zb={key:0,class:"cpt-mc-ctl"},Vb={class:"cpt-mc-seg",role:"group","aria-label":"Green color encoding"},Yb={key:1,class:"cpt-mc-headline"},Wb={key:2,class:"cpt-mc-loading"},Jb={key:0},Zb={key:1},qb=["innerHTML"],_r="cpt-red-src",fr="cpt-green-src",Bt="cpt-arc-src",fe="cpt-red",Sg="cpt-red-lbl",ie="cpt-green",Eg="cpt-green-lbl",Ot="cpt-arc-solid",Ut="cpt-arc-dash",Ht="cpt-arc-dot",Bi="cpt-prov",Xb={__name:"MapCell",setup(a){const n=Ft(),e=Ya("profileConfig"),i=Ya("mapboxToken"),t=la(()=>(e==null?void 0:e.value)||{}),o=la(()=>!(i!=null&&i.value||t.value.tk)),r=ua(null),l=ua(null),s=ua(!1),g=ua({show:!1,pinned:!1,x:0,y:0,html:""}),d=ia.GREEN_BINS[3],{map:_,initializeMap:k,destroy:x}=Kt({containerRef:l,accessToken:(i==null?void 0:i.value)||t.value.tk||"",style:t.value.style??"mapbox://styles/mapbox/light-v11",center:t.value.center??[55,22],zoom:t.value.zoom??1.7,minZoom:t.value.minZoom??1,maxZoom:t.value.maxZoom??12}),D=la(()=>{const u=[...new Set(n.visibleSenders.value.map(j=>j.religionFamily).filter(Boolean))].sort(),A={};return u.forEach((j,c)=>{A[j]=ia.CAT[c%ia.CAT.length]}),A}),T=u=>({type:"FeatureCollection",features:u});function $(u,A,j=48){const c=Math.PI/180,P=180/Math.PI,p=u[1]*c,M=u[0]*c,N=A[1]*c,U=A[0]*c,h=(N-p)/2,C=(U-M)/2,y=Math.sin(h)**2+Math.cos(p)*Math.cos(N)*Math.sin(C)**2,R=2*Math.asin(Math.min(1,Math.sqrt(y)));if(!R)return[u,A];const H=[];for(let V=0;V<=j;V++){const oa=V/j,Q=Math.sin((1-oa)*R)/Math.sin(R),m=Math.sin(oa*R)/Math.sin(R),b=Q*Math.cos(p)*Math.cos(M)+m*Math.cos(N)*Math.cos(U),F=Q*Math.cos(p)*Math.sin(M)+m*Math.cos(N)*Math.sin(U),J=Q*Math.sin(p)+m*Math.sin(N);H.push([Math.atan2(F,b)*P,Math.atan2(J,Math.sqrt(b*b+F*F))*P])}return H}function w(){const u=[];for(const A of n.clusters.value)!isFinite(A.lat)||!isFinite(A.lng)||u.push({type:"Feature",geometry:{type:"Point",coordinates:[A.lng,A.lat]},properties:{id:A.id,count:A.count,hasSenders:!!A.hasSenders,senderCount:A.senderCount||0,color:Fi(A.count),r:Math.min(34,6+Math.sqrt(Math.max(0,A.count))*2.4),label:A.country+" ("+A.count+")",country:A.country,langs:(A.target_top_langs||[]).slice(0,3).join(", ")}});return T(u)}function L(){const u=[],A=n.colorBy.value==="religion";for(const j of n.mapNodes.value){if(!isFinite(j.lng)||!isFinite(j.lat))continue;let c,P,p,M,N;if(j.isPool){const U=j.members||[],h=U.length?U.reduce((y,R)=>y+(R.pct||0),0)/U.length:0,C=U.reduce((y,R)=>y+(R.pop||0),0);c=qe(h),P=Ki(C,7,26),p="",M=_e(C),N=""}else c=A?D.value[j.religionFamily]||ia.GREEN_BINS[2]:j.color||qe(j.pct),P=Ki(j.pop),p=Math.round(j.pct)+"%",M=_e(j.pop),N=j.religionFamily||"";u.push({type:"Feature",geometry:{type:"Point",coordinates:[j.lng,j.lat]},properties:{id:j.id,name:j.name,label:j.name,color:c,r:P,isPool:!!j.isPool,country:j.country||"",lang:j.lang||"",pct:p,pop:M,religion:N,bridge:j.bridge||""}})}return T(u)}function E(){const u=n.focusedTarget.value;if(!u||!isFinite(u.lat)||!isFinite(u.lng))return T([]);const A=[u.lng,u.lat],j=[];for(const c of n.mapNodes.value){if(!isFinite(c.lng)||!isFinite(c.lat))continue;const P=c.isPool?"same-country":c.bridge||"same-country";j.push({type:"Feature",geometry:{type:"LineString",coordinates:$([c.lng,c.lat],A)},properties:{bridge:P}})}return T(j)}function I(u,A,j){const c=u.getSource(A);c?c.setData(j):u.addSource(A,{type:"geojson",data:j})}function G(u){const j=(u.getStyle&&u.getStyle().layers||[]).find(c=>c.type==="symbol");return j?j.id:void 0}function S(u){u.getLayer(Ot)||u.addLayer({id:Ot,type:"line",source:Bt,filter:["==",["get","bridge"],"same-language"],layout:{"line-cap":"round"},paint:{"line-color":ia.NAVY,"line-width":1.4,"line-opacity":.6}}),u.getLayer(Ut)||u.addLayer({id:Ut,type:"line",source:Bt,filter:["==",["get","bridge"],"related-cluster"],layout:{"line-cap":"butt"},paint:{"line-color":ia.NAVY,"line-width":1.4,"line-opacity":.6,"line-dasharray":[4,3]}}),u.getLayer(Ht)||u.addLayer({id:Ht,type:"line",source:Bt,filter:["all",["!=",["get","bridge"],"same-language"],["!=",["get","bridge"],"related-cluster"]],layout:{"line-cap":"round"},paint:{"line-color":ia.NAVY,"line-width":1.6,"line-opacity":.6,"line-dasharray":[1,3]}}),u.getLayer(ie)||u.addLayer({id:ie,type:"circle",source:fr,paint:{"circle-color":["get","color"],"circle-radius":["max",2,["*",["get","r"],.55]],"circle-stroke-width":["case",["get","isPool"],2.5,.8],"circle-stroke-color":["case",["get","isPool"],ia.GOLD,"#ffffff"],"circle-opacity":.92,"circle-opacity-transition":{duration:350}}}),u.getLayer(Eg)||u.addLayer({id:Eg,type:"symbol",source:fr,minzoom:3.4,layout:{"text-field":["get","label"],"text-size":10,"text-offset":[0,1.1],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":"#0b5e33","text-halo-color":"#ffffff","text-halo-width":1.3}}),u.getLayer(fe)||u.addLayer({id:fe,type:"circle",source:_r,paint:{"circle-color":["get","color"],"circle-radius":["get","r"],"circle-opacity":.82,"circle-stroke-width":2,"circle-stroke-color":d,"circle-opacity-transition":{duration:300}}}),u.getLayer(Sg)||u.addLayer({id:Sg,type:"symbol",source:_r,minzoom:2.4,layout:{"text-field":["get","label"],"text-size":11,"text-offset":[0,1.2],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":ia.RED_DK,"text-halo-color":"#ffffff","text-halo-width":1.4}})}function v(u){if(!u.getLayer(fe))return;const A=n.focusedTargetId.value;u.setPaintProperty(fe,"circle-opacity",A?["case",["==",["get","id"],A],.95,.5]:["case",["get","hasSenders"],.82,.14]),u.setPaintProperty(fe,"circle-stroke-color",A?["case",["==",["get","id"],A],ia.GOLD,["case",["get","hasSenders"],d,ia.RED_DK]]:["case",["get","hasSenders"],d,ia.RED_DK]),u.setPaintProperty(fe,"circle-stroke-width",A?["case",["==",["get","id"],A],4,["case",["get","hasSenders"],2.4,1.6]]:["case",["get","hasSenders"],2.4,1.6])}function K(u,A){if(A)if(u.getLayer(Bi))try{u.setLayoutProperty(Bi,"visibility","visible")}catch{}else try{const j=u.getLayer(Ot)?Ot:G(u);u.addLayer({id:Bi,type:"line",source:"composite","source-layer":"admin",filter:["all",["==",["get","admin_level"],1],["==",["get","maritime"],"false"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":ia.NAVY,"line-width":.7,"line-opacity":.45,"line-dasharray":[2,2]}},j)}catch{}else if(u.getLayer(Bi))try{u.setLayoutProperty(Bi,"visibility","none")}catch{}}function O(){var A;const u=_.value;!u||!((A=u.isStyleLoaded)!=null&&A.call(u))||(I(u,Bt,E()),I(u,fr,L()),I(u,_r,w()),S(u),v(u),Y(pa),K(u,n.provinceDrill.value),n.focusedTargetId.value?Ma():ma())}function q(){const u=_.value;if(!u)return;const A=n.focusedTarget.value;if(!A){try{u.stop(),u.easeTo({center:t.value.center??[55,22],zoom:t.value.zoom??1.7,duration:700})}catch{}return}const j=[];isFinite(A.lat)&&isFinite(A.lng)&&j.push([A.lng,A.lat]);for(const N of n.mapNodes.value)isFinite(N.lng)&&isFinite(N.lat)&&j.push([N.lng,N.lat]);if(!j.length)return;let c=j[0][0],P=j[0][0],p=j[0][1],M=j[0][1];for(const N of j)c=Math.min(c,N[0]),P=Math.max(P,N[0]),p=Math.min(p,N[1]),M=Math.max(M,N[1]);try{u.stop(),c===P&&p===M?u.easeTo({center:[c,p],zoom:4.5,duration:800}):u.fitBounds([[c,p],[P,M]],{padding:80,maxZoom:6,duration:800})}catch{}}const sa=[[0,4,3],[.5,4,2.5],[1,4,2],[1.5,4,1.5],[2,4,1],[2.5,4,.5],[3,4,0],[0,.5,4,2.5],[0,1,4,2],[0,1.5,4,1.5],[0,2,4,1],[0,2.5,4,.5]],ea=[[1,3],[0,.75,1,2.25],[0,1.5,1,1.5],[0,2.25,1,.75]];let ga=null,Sa=0;function Ma(){ga||(ga=setInterval(()=>{const u=_.value;if(u){Sa++;try{u.getLayer(Ut)&&u.setPaintProperty(Ut,"line-dasharray",sa[Sa%sa.length]),u.getLayer(Ht)&&u.setPaintProperty(Ht,"line-dasharray",ea[Sa%ea.length])}catch{}}},80))}function ma(){ga&&(clearInterval(ga),ga=null)}let pa=null;function Y(u){pa=u;const A=_.value;!A||!A.getLayer(ie)||(A.setPaintProperty(ie,"circle-stroke-width",u?["case",["==",["get","id"],u],4,["case",["get","isPool"],2.5,1.2]]:["case",["get","isPool"],2.5,1.2]),A.setPaintProperty(ie,"circle-stroke-color",u?["case",["==",["get","id"],u],ia.GOLD,["case",["get","isPool"],ia.GOLD,"#ffffff"]]:["case",["get","isPool"],ia.GOLD,"#ffffff"]))}function ta(u){return String(u??"").replace(/[&<>"']/g,A=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[A])}function aa(u){g.value.show&&!g.value.pinned&&(g.value.x=u.clientX,g.value.y=u.clientY)}function ba(u){return""+ta(u.country)+'
'+ta(u.count)+" unreached groups
"+(u.langs?'
langs '+ta(u.langs)+"
":"")+'
senders '+(u.hasSenders?ta(u.senderCount)+" reached nearby":"frontier — 0 (pray for laborers)")+'
click → SEND view
'}function na(u){return u.isPool?""+ta(u.name)+'
same-country reached pool
pop '+ta(u.pop)+'
spiderfies in the list
':""+ta(u.name)+'
'+ta(u.country)+" · "+ta(u.lang)+'
reached '+ta(u.pct)+' Christian
pop '+ta(u.pop)+"
"+(u.bridge?'
bridge '+ta(u.bridge)+"
":"")+(u.religion?'
religion '+ta(u.religion)+"
":"")+'
click → pin · highlights the list
'}return Rn(async()=>{var c,P,p,M,N,U;await k();const u=_.value;if(!u)return;try{u.setProjection("mercator")}catch{}if(t.value.debugExpose&&typeof window<"u")try{(((p=(P=(c=r.value)==null?void 0:c.getRootNode)==null?void 0:P.call(c))==null?void 0:p.host)||window).__cockpitmap=u}catch{}const A=(h,C)=>{u.on("mouseenter",h,()=>{u.getCanvas().style.cursor="pointer"}),u.on("mouseleave",h,()=>{u.getCanvas().style.cursor="",g.value.pinned||(g.value={...g.value,show:!1})}),u.on("mousemove",h,y=>{var H;const R=(H=y.features)==null?void 0:H[0];R&&(g.value={show:!0,x:y.originalEvent.clientX,y:y.originalEvent.clientY,html:C(R.properties)})})},j=()=>{O(),u.on("click",fe,h=>{var y;const C=(y=h.features)==null?void 0:y[0];C&&(g.value={...g.value,show:!1,pinned:!1},n.selectTarget(C.properties.id))}),A(fe,ba),A(ie,na),u.on("mousemove",ie,h=>{var y;const C=(y=h.features)==null?void 0:y[0];if(C){Y(C.properties.id);try{n.setHover&&n.setHover(C.properties.id)}catch{}}}),u.on("mouseleave",ie,()=>{Y(null);try{n.setHover&&n.setHover(null)}catch{}}),u.on("click",ie,h=>{var R;const C=(R=h.features)==null?void 0:R[0];if(!C)return;const y=h.originalEvent||{};g.value={show:!0,pinned:!0,x:y.clientX||g.value.x,y:y.clientY||g.value.y,html:na(C.properties)};try{n.setHover&&n.setHover(C.properties.id)}catch{}try{u.stop(),u.easeTo({center:C.geometry.coordinates,zoom:Math.max(u.getZoom(),4.5),duration:700})}catch{}}),s.value=!0,n.focusedTargetId.value&&q()};(M=u.isStyleLoaded)!=null&&M.call(u)?j():(N=u.once)==null||N.call(u,"load",j),(U=u.once)==null||U.call(u,"idle",()=>{s.value&&O()})}),cn(()=>[n.ready.value,n.clusters.value,n.mapNodes.value,n.colorBy.value,n.provinceDrill.value],()=>O()),cn(()=>n.focusedTargetId.value,()=>{O(),q()}),cn(()=>n.mode.value,()=>{bi(()=>{var u;try{(u=_.value)==null||u.resize()}catch{}})}),n.hoveredId&&cn(()=>n.hoveredId.value,u=>Y(u)),Ue(()=>{ma(),x()}),On(` - .cpt-mc-root { position:absolute; inset:0; overflow:hidden; background:#eef2f7; isolation:isolate; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - .cpt-mc-map { position:absolute; inset:0; } - .cpt-mc-loading { position:absolute; inset:0; z-index:5; display:flex; align-items:center; justify-content:center; - background:#eef2f7; color:${ia.NAVY}; font:600 12px/1.5 ui-monospace,monospace; text-align:center; padding:18px; } - - /* on-map control cluster (top-left) — color-by + province drill + reset */ - .cpt-mc-ctl { position:absolute; top:8px; left:8px; z-index:30; display:flex; flex-direction:column; gap:6px; align-items:flex-start; } - .cpt-mc-seg { display:inline-flex; background:rgba(255,255,255,.95); border:1px solid #cbd5e1; border-radius:999px; padding:2px; gap:2px; box-shadow:0 2px 8px rgba(0,0,0,.14); } - .cpt-mc-seg button { border:0; background:transparent; color:#475569; cursor:pointer; font:700 10px/1 ui-monospace,monospace; padding:5px 9px; border-radius:999px; } - .cpt-mc-seg button.on { background:${ia.NAVY}; color:#fff; } - .cpt-mc-btn { border:1px solid #cbd5e1; background:rgba(255,255,255,.95); color:${ia.NAVY}; cursor:pointer; - font:700 10px/1 ui-monospace,monospace; padding:6px 10px; border-radius:8px; box-shadow:0 2px 8px rgba(0,0,0,.14); } - .cpt-mc-btn.on { background:${ia.NAVY}; color:#fff; border-color:${ia.NAVY}; } - .cpt-mc-btn.gold { background:${ia.GOLD}; color:#3a2600; border-color:${ia.GOLD}; } - - /* SEND headline (bottom-left) when a target is focused */ - .cpt-mc-headline { position:absolute; left:8px; bottom:8px; right:8px; z-index:28; pointer-events:none; - background:rgba(0,46,110,.92); color:#fff; border-radius:9px; padding:7px 11px; max-width:560px; - font:700 12px/1.35 -apple-system,sans-serif; box-shadow:0 4px 14px rgba(0,0,0,.28); } - - /* hover-pin tooltip */ - .cpt-mc-tip { position:fixed; z-index:60; pointer-events:none; max-width:250px; background:#0e1730; - border:1px solid #34508c; border-radius:9px; padding:9px 11px; box-shadow:0 6px 22px rgba(0,0,0,.5); font-size:11.5px; color:#dbe4f3; } - .cpt-mc-tip strong { font-size:13px; color:#fff; } - .cpt-mc-tsub { color:#fda4af; font:600 10px/1.3 ui-monospace,monospace; margin:2px 0 6px; } - .cpt-mc-trow { display:flex; gap:6px; line-height:1.5; } - .cpt-mc-tk { color:#7e90b6; min-width:62px; } - - @media (max-width:560px){ .cpt-mc-headline{ font-size:11px; } } -`,"cockpit-mapcell"),(u,A)=>(z(),W("div",{ref_key:"mcRoot",ref:r,class:"cpt-mc-root",onMousemove:aa},[f("div",{ref_key:"mapContainer",ref:l,class:"cpt-mc-map"},null,512),s.value?(z(),W("div",zb,[f("div",Vb,[f("button",{class:Ia({on:ha(n).colorBy.value==="pct"}),onClick:A[0]||(A[0]=j=>ha(n).setColorBy("pct"))},"% reached",2),f("button",{class:Ia({on:ha(n).colorBy.value==="religion"}),onClick:A[1]||(A[1]=j=>ha(n).setColorBy("religion"))},"religion",2)]),f("button",{class:Ia(["cpt-mc-btn",{on:ha(n).provinceDrill.value}]),onClick:A[2]||(A[2]=j=>ha(n).toggleProvince()),title:"Overlay IN/CN admin-1 boundaries"},"IN/CN provinces",2),ha(n).focusedTarget.value?(z(),W("button",{key:0,class:"cpt-mc-btn gold",onClick:A[3]||(A[3]=j=>ha(n).clearFocus())},"✕ reset focus")):fa("",!0)])):fa("",!0),s.value&&ha(n).focusedTarget.value?(z(),W("div",Yb,X(ha(n).headline.value),1)):fa("",!0),s.value?fa("",!0):(z(),W("div",Wb,[o.value?(z(),W("span",Jb,"Map needs a Mapbox token (tk in profile-config)…")):(z(),W("span",Zb,"Rendering the harvest field…"))])),g.value.show?(z(),W("div",{key:3,class:"cpt-mc-tip",style:Ka({left:g.value.x+14+"px",top:g.value.y+14+"px"}),innerHTML:g.value.html},null,12,qb)):fa("",!0)],544))}},Qb={class:"cf-bar"},a1={key:0,class:"cf-meta"},n1={class:"cf-stage"},e1={key:0,class:"cf-empty"},i1=["viewBox"],t1={key:0},o1=["cx","cy","fill","opacity","transform"],r1=["d","stroke-dasharray"],l1=["d"],s1=["onClick","onMouseenter"],c1=["cx","cy","r"],g1=["x","y"],u1=["cx","cy","r","fill"],d1=["x","y"],p1={class:"cf-center",style:{"pointer-events":"none"}},m1=["cx","cy","r","fill"],h1=["cx","cy","fill"],y1=["x","y"],b1=["x","y"],_1={key:2,class:"cf-rings"},f1=["innerHTML"],Xe=1e3,P1=212,C1=372,Mg=48,j1=8,k1=16,G1={__name:"FlowerCell",setup(a){const n=Ft(),e=Xe/2,i=Xe/2,t=ua(n.mode.value==="flower"?1:0),o=ua(!1),r=ua(null),l=ua(""),s=ua({show:!1,x:0,y:0,html:""});function g(Y,ta,aa,ba){const na=(ba-90)*Math.PI/180;return[Y+aa*Math.cos(na),ta+aa*Math.sin(na)]}function d(Y){return String(Y&&(Y.rol3||Y.lang)||"").trim().toLowerCase()}function _(Y){return String(Y??"").replace(/[&<>"']/g,ta=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[ta])}const k=la(()=>{const Y=[...new Set(n.visibleSenders.value.map(aa=>aa.religionFamily||"Unknown"))].sort(),ta={};return Y.forEach((aa,ba)=>{ta[aa]=ia.CAT[ba%ia.CAT.length]}),ta}),x=la(()=>{const Y=n.focusedTarget.value;if(!Y)return null;const ta=[...n.visibleSenders.value].sort((Pa,$a)=>$a.pct-Pa.pct||$a.pop-Pa.pop),aa=ta.filter(Pa=>Pa.adjacency==="same-country"),ba=ta.filter(Pa=>Pa.adjacency!=="same-country"),na=o.value?aa:aa.slice(0,j1),u=o.value?ba:ba.slice(0,k1),A=aa.length-na.length+(ba.length-u.length),j=A>0&&!o.value,c=k.value,P=Pa=>n.colorBy.value==="religion"?c[Pa.religionFamily||"Unknown"]||ia.CAT[0]:qe(Pa.pct),p=[],M=[];for(const Pa of na)p.push(Pa.lng),M.push(Pa.lat);for(const Pa of u)p.push(Pa.lng),M.push(Pa.lat);let N=Y.lng,U=Y.lat;(!isFinite(N)||!isFinite(U))&&(N=p.length?p.reduce((Pa,$a)=>Pa+$a,0)/p.length:0,U=M.length?M.reduce((Pa,$a)=>Pa+$a,0)/M.length:0),p.push(N),M.push(U);const h=Math.min(...p),C=Math.max(...p),y=Math.min(...M),R=Math.max(...M),H=Math.max(C-h,.01),V=Math.max(R-y,.01),oa=130;let Q=Math.min((Xe-oa*2)/H,(Xe-oa*2)/V);(!isFinite(Q)||Q<=0)&&(Q=1);const m=(h+C)/2,b=(y+R)/2,F=(Pa,$a)=>[e+(Pa-m)*Q,i-($a-b)*Q],J=[],ca=u.map(Pa=>({kind:"node",s:Pa}));j&&ca.push({kind:"more"});const ra=na.length;na.forEach((Pa,$a)=>{const Ba=ra?($a+.5)/ra*360:0,[dn,Ne]=g(e,i,P1,Ba),[hn,Zi]=F(Pa.lng,Pa.lat);J.push({id:Pa.id,s:Pa,isMore:!1,ring:"inner",ang:Ba,r:Ki(Pa.pop,7,20),color:P(Pa),lang:d(Pa),fx:dn,fy:Ne,gx:hn,gy:Zi})});const B=ca.length,Z=B?180/B:0;ca.forEach((Pa,$a)=>{const Ba=B?($a+.5)/B*360+Z:0,[dn,Ne]=g(e,i,C1,Ba);if(Pa.kind==="more"){const[hn,Zi]=F(N,U);J.push({id:"__more__",isMore:!0,ring:"outer",ang:Ba,r:18,color:ia.NAVY,lang:"",fx:dn,fy:Ne,gx:hn,gy:Zi,hidden:A})}else{const hn=Pa.s,[Zi,Uf]=F(hn.lng,hn.lat);J.push({id:hn.id,s:hn,isMore:!1,ring:"outer",ang:Ba,r:Ki(hn.pop,7,20),color:P(hn),lang:d(hn),fx:dn,fy:Ne,gx:Zi,gy:Uf})}});const[_a,va]=F(N,U),Ra={fx:e,fy:i,gx:_a,gy:va,country:Y.country,count:Y.count,color:Fi(Y.count)},an=new Map;for(const Pa of J){if(Pa.isMore||!Pa.lang)continue;let $a=an.get(Pa.lang);$a||($a=[],an.set(Pa.lang,$a)),$a.push(Pa)}const qa=[];for(const[Pa,$a]of an)if(!($a.length<2))for(let Ba=0;Ba<$a.length-1;Ba++)qa.push({id:"mesh-"+$a[Ba].id+"-"+$a[Ba+1].id,from:$a[Ba].id,to:$a[Ba+1].id,lang:Pa});return{nodes:J,center:Ra,mesh:qa,hidden:A,shown:na.length+u.length,total:ta.length}}),D=la(()=>{const Y={};if(x.value)for(const ta of x.value.nodes)Y[ta.id]=ta;return Y});function T(Y){return!l.value||!Y.isMore&&Y.lang===l.value}function $(Y){return!l.value||Y.lang===l.value}function w(Y){return!Y.isMore&&n.facets.value.languages.has(Y.s.lang)}function L(Y){return Y.gx+(Y.fx-Y.gx)*t.value}function E(Y){return Y.gy+(Y.fy-Y.gy)*t.value}function I(){const Y=x.value.center;return Y.gx+(Y.fx-Y.gx)*t.value}function G(){const Y=x.value.center;return Y.gy+(Y.fy-Y.gy)*t.value}function S(Y){return"M "+I().toFixed(1)+" "+G().toFixed(1)+" L "+L(Y).toFixed(1)+" "+E(Y).toFixed(1)}function v(Y){const ta=D.value[Y.from],aa=D.value[Y.to];if(!ta||!aa)return"";const ba=L(ta),na=E(ta),u=L(aa),A=E(aa),j=(ba+u)/2,c=(na+A)/2,P=j+(e-j)*.45*t.value,p=c+(i-c)*.45*t.value;return"M "+ba.toFixed(1)+" "+na.toFixed(1)+" Q "+P.toFixed(1)+" "+p.toFixed(1)+" "+u.toFixed(1)+" "+A.toFixed(1)}function K(Y){if(Y.isMore)return"4 6";const ta=br(Y.s.bridge);return ta?ta.map(aa=>aa*3).join(" "):"none"}function O(Y){return[L(Y),E(Y)]}function q(Y,ta){if(r.value=Y.id,l.value=Y.isMore?"":Y.lang,!Y.isMore)try{n.setHover&&n.setHover(Y.id)}catch{}if(Y.isMore){s.value={show:!0,x:ta.clientX,y:ta.clientY,html:"+"+Y.hidden+' more senders
click to bloom the full roster
'};return}const aa=Y.s;s.value={show:!0,x:ta.clientX,y:ta.clientY,html:""+_(aa.name)+'
'+_(aa.country)+" · "+_(aa.lang||"—")+'
reached '+Math.round(aa.pct||0)+'% Christian
people '+_e(aa.pop)+'
bridge '+_(aa.bridge||"—")+'
near '+_(aa.adjacency||"—")+"
"}}function sa(Y){s.value.show&&(s.value.x=Y.clientX,s.value.y=Y.clientY)}function ea(){r.value=null,l.value="";try{n.setHover&&n.setHover(null)}catch{}s.value={...s.value,show:!1}}function ga(Y){if(Y.isMore){o.value=!0;return}n.toggleFacet("languages",Y.s.lang)}function Sa(){n.setMode(n.mode.value==="flower"?"map":"flower")}const Ma=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;let ma=0;function pa(Y){if(cancelAnimationFrame(ma),Ma||typeof requestAnimationFrame>"u"){t.value=Y;return}const ta=t.value,aa=performance.now(),ba=720,na=A=>A<.5?2*A*A:1-Math.pow(-2*A+2,2)/2,u=A=>{const j=Math.min(1,(A-aa)/ba);t.value=ta+(Y-ta)*na(j),j<1&&(ma=requestAnimationFrame(u))};ma=requestAnimationFrame(u)}return cn(()=>n.mode.value,Y=>pa(Y==="flower"?1:0)),cn(()=>n.focusedTargetId.value,()=>{o.value=!1}),Ue(()=>cancelAnimationFrame(ma)),On(".cpt-flower{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 50% 44%, #16203a 0%, #0b1020 72%);color:#e5e7eb;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;}.cf-bar{position:absolute;top:10px;left:10px;right:10px;z-index:30;display:flex;gap:8px;align-items:center;flex-wrap:wrap;pointer-events:none;}.cf-bar > *{pointer-events:auto;}.cf-title{background:"+ia.NAVY+";color:#fff;font:700 11px/1 ui-monospace,monospace;letter-spacing:.07em;text-transform:uppercase;padding:8px 12px;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.4);}.cf-meta{font:600 11px/1.4 ui-monospace,monospace;color:#9fb3d9;background:rgba(8,12,24,.7);border:1px solid #1c2742;border-radius:8px;padding:6px 10px;}.cf-meta b{color:#fff;}.cf-bloom{margin-left:auto;background:#13224a;border:1px solid #3f7bd6;color:#fff;cursor:pointer;font:700 11px/1 ui-monospace,monospace;letter-spacing:.04em;padding:8px 13px;border-radius:8px;display:inline-flex;align-items:center;gap:7px;user-select:none;}.cf-bloom:hover{background:#1b2e5e;}.cf-bloom .cf-dot{width:8px;height:8px;border-radius:50%;background:"+ia.GOLD+";}.cf-stage{flex:1 1 0;position:relative;}.cf-svg{position:absolute;inset:0;width:100%;height:100%;display:block;}.cf-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;color:#7e90b6;font:600 12px/1.6 ui-monospace,monospace;padding:24px;}.cf-petal{transition:opacity .15s;}.cf-spoke{fill:none;stroke:"+ia.NAVY+";stroke-width:2;opacity:.45;transition:opacity .15s;}.cf-spoke.lit{opacity:.9;stroke-width:2.6;}.cf-spoke.dim{opacity:.06;}.cf-mesh{fill:none;stroke:"+ia.GOLD+";stroke-width:1.6;opacity:.5;stroke-linecap:round;transition:opacity .15s;}.cf-mesh.lit{opacity:.95;stroke-width:2.6;}.cf-mesh.dim{opacity:.05;}.cf-node{cursor:pointer;transition:opacity .15s;}.cf-node.dim{opacity:.2;}.cf-node circle{stroke:#0b1020;stroke-width:2;}.cf-node.hov circle{stroke:#fff;stroke-width:3;}.cf-node.fac circle{stroke:"+ia.GOLD+";stroke-width:3.5;}.cf-more circle{fill:"+ia.NAVY+";stroke:#3f7bd6;stroke-width:2;stroke-dasharray:4 4;}.cf-more text{fill:#cfe0ff;font:700 13px/1 ui-monospace,monospace;text-anchor:middle;}.cf-label{fill:#cdd9f2;font:600 12px/1 -apple-system,sans-serif;text-anchor:middle;paint-order:stroke;stroke:#0b1020;stroke-width:3px;pointer-events:none;}.cf-center-glow{opacity:.18;}.cf-center circle{stroke:#ffd9bd;stroke-width:3;}.cf-center-name{fill:#fff;font:800 18px/1 -apple-system,sans-serif;text-anchor:middle;paint-order:stroke;stroke:"+ia.RED_DK+";stroke-width:3px;}.cf-center-sub{fill:#ffe1cb;font:600 11px/1 ui-monospace,monospace;text-anchor:middle;}.cf-rings{position:absolute;left:10px;bottom:10px;z-index:25;background:rgba(8,12,24,.8);border:1px solid #1c2742;border-radius:8px;padding:7px 10px;font:600 10px/1.5 ui-monospace,monospace;color:#9fb3d9;}.cf-rings b{color:#dbe4f3;}.cf-tip{position:fixed;z-index:60;pointer-events:none;max-width:240px;background:#0e1730;border:1px solid #34508c;border-radius:9px;padding:9px 11px;box-shadow:0 6px 22px rgba(0,0,0,.55);font-size:11.5px;color:#dbe4f3;}.cf-tip strong{font-size:13px;color:#fff;}.cf-tip-sub{color:"+ia.GOLD+";font:600 10px/1.3 ui-monospace,monospace;margin:2px 0 6px;}.cf-tip-row{display:flex;gap:6px;line-height:1.5;}.cf-tip-k{color:#7e90b6;min-width:54px;}@media (max-width:720px){.cf-meta{display:none;}}","cockpit-flowercell"),(Y,ta)=>(z(),W("div",{class:"cpt-flower",onMousemove:sa},[f("div",Qb,[ta[1]||(ta[1]=f("span",{class:"cf-title"},"Bloom",-1)),x.value?(z(),W("span",a1,[f("b",null,X(x.value.center.country),1),ya(" · "+X(x.value.center.count)+" unreached · ",1),f("b",null,X(x.value.shown),1),ya("/"+X(x.value.total)+" senders ",1)])):fa("",!0),f("button",{class:"cf-bloom",type:"button",onClick:Sa},[ta[0]||(ta[0]=f("span",{class:"cf-dot"},null,-1)),ya(X(ha(n).mode.value==="flower"?"To map":"Bloom")+" ▸ ",1)])]),f("div",n1,[x.value?(z(),W("svg",{key:1,class:"cf-svg",viewBox:"0 0 "+Xe+" "+Xe,preserveAspectRatio:"xMidYMid meet"},[t.value>.05?(z(),W("g",t1,[(z(!0),W(Aa,null,Ua(x.value.nodes,aa=>Ed((z(),W("ellipse",{key:"pt-"+aa.id,class:"cf-petal",cx:O(aa)[0],cy:O(aa)[1],rx:"74",ry:"38",fill:aa.color,opacity:.13*t.value,transform:"rotate("+aa.ang+" "+O(aa)[0]+" "+O(aa)[1]+")"},null,8,o1)),[[Hp,aa.ring==="outer"&&!aa.isMore]])),128))])):fa("",!0),f("g",null,[(z(!0),W(Aa,null,Ua(x.value.nodes,aa=>(z(),W("path",{key:"sp-"+aa.id,class:Ia(["cf-spoke",{lit:l.value&&T(aa),dim:l.value&&!T(aa)}]),d:S(aa),"stroke-dasharray":K(aa)},null,10,r1))),128))]),f("g",null,[(z(!0),W(Aa,null,Ua(x.value.mesh,aa=>(z(),W("path",{key:aa.id,class:Ia(["cf-mesh",{lit:l.value&&$(aa),dim:l.value&&!$(aa)}]),d:v(aa)},null,10,l1))),128))]),f("g",null,[(z(!0),W(Aa,null,Ua(x.value.nodes,aa=>(z(),W("g",{key:"nd-"+aa.id,class:Ia(["cf-node",{dim:l.value&&!T(aa),hov:r.value===aa.id||ha(n).hoveredId.value===aa.id,fac:w(aa),"cf-more":aa.isMore}]),onClick:Xn(ba=>ga(aa),["stop"]),onMouseenter:ba=>q(aa,ba),onMouseleave:ea},[aa.isMore?(z(),W(Aa,{key:0},[f("circle",{cx:L(aa),cy:E(aa),r:aa.r},null,8,c1),f("text",{x:L(aa),y:E(aa)+4},"+"+X(aa.hidden),9,g1)],64)):(z(),W(Aa,{key:1},[f("circle",{cx:L(aa),cy:E(aa),r:aa.r,fill:aa.color},null,8,u1),r.value===aa.id||aa.r>=12?(z(),W("text",{key:0,class:"cf-label",x:L(aa),y:E(aa)+aa.r+14},X(aa.s.name),9,d1)):fa("",!0)],64))],42,s1))),128))]),f("g",p1,[f("circle",{class:"cf-center-glow",cx:I(),cy:G(),r:Mg+26,fill:x.value.center.color},null,8,m1),f("circle",{cx:I(),cy:G(),r:Mg,fill:x.value.center.color},null,8,h1),f("text",{class:"cf-center-name",x:I(),y:G()-1},X(x.value.center.country),9,y1),f("text",{class:"cf-center-sub",x:I(),y:G()+16},X(x.value.center.count)+" unreached",9,b1)])],8,i1)):(z(),W("div",e1,[...ta[2]||(ta[2]=[ya(" Pick a red target on the map —",-1),f("br",null,null,-1),ya("its reached neighbors bloom here as a flower. ",-1)])])),x.value?(z(),W("div",_1,[ta[3]||(ta[3]=f("b",null,"inner",-1)),ta[4]||(ta[4]=ya(" same-country · ",-1)),ta[5]||(ta[5]=f("b",null,"petals",-1)),ta[6]||(ta[6]=ya(" cross-border",-1)),ta[7]||(ta[7]=f("br",null,null,-1)),ta[8]||(ta[8]=ya(" navy = SEND · ",-1)),f("span",{style:Ka({color:ha(ia).GOLD})},"gold",4),ta[9]||(ta[9]=ya(" = same-language mesh ",-1))])):fa("",!0)]),s.value.show?(z(),W("div",{key:0,class:"cf-tip",style:Ka({left:s.value.x+14+"px",top:s.value.y+14+"px"}),innerHTML:s.value.html},null,12,f1)):fa("",!0)],32))}},v1={class:"cpt-list",style:{"container-type":"inline-size"}},A1={class:"cpt-l-head"},S1={class:"cpt-l-title"},E1={key:0,class:"cpt-l-sub"},M1={class:"cpt-l-badge"},I1={key:0,class:"cpt-l-hidden"},w1={key:1,class:"cpt-l-sorts"},x1=["onClick"],T1={key:0,class:"cpt-l-actions"},N1={class:"cpt-l-selall"},L1=["checked"],R1={key:0,class:"cpt-l-selcount"},$1=["disabled"],F1=["disabled"],K1=["data-sid","onMouseenter","onClick"],B1=["checked","onChange"],O1=["title"],U1={class:"cpt-l-body"},H1=["title"],D1={class:"cpt-l-meta"},z1={class:"cpt-l-lang"},V1={key:0,class:"cpt-l-rol3"},Y1=["title"],W1=["title"],J1={class:"cpt-l-right"},Z1={class:"cpt-l-pop"},q1=["onClick"],X1={key:0},Q1={key:0},a3={key:1},n3={key:2,class:"cpt-l-empty"},e3={key:0,class:"sm"},i3={key:1,class:"sm"},t3={key:3,class:"cpt-l-empty"},o3={class:"sm"},r3={__name:"ListCell",setup(a){const n=Ft(),e=la(()=>n.listRows.value),i=la(()=>n.focusedTarget.value),t=la(()=>n.counts.value),o=la(()=>n.sortKey.value),r=la(()=>{const na=i.value;return na&&(na.target_top_langs&&na.target_top_langs.length?na.target_top_langs:na.langs||[])[0]||""}),l=la(()=>{const na=i.value;if(!na)return"Pick a red target to build a send list";const u=e.value.length,A=r.value?" — they speak "+r.value:"";return"Send "+u.toLocaleString()+" reached neighbor"+(u===1?"":"s")+" INTO "+na.country+A}),s=la(()=>i.value&&i.value.senderCount||0),g=la(()=>t.value.hidden||0),d=[{key:"mobilization",label:"Mobilization"},{key:"pct",label:"%Christian"},{key:"pop",label:"Population"},{key:"bridge",label:"Bridge"},{key:"name",label:"Name"},{key:"frontier",label:"Frontier first"}];function _(na){n.setSort(na)}const k=ua(new Set);function x(na){const u=new Set(k.value);u.has(na)?u.delete(na):u.add(na),k.value=u,G.value=""}const D=la(()=>e.value.filter(na=>k.value.has(na.id))),T=la(()=>D.value.length),$=la(()=>e.value.length>0&&e.value.every(na=>k.value.has(na.id)));function w(){k.value=$.value?new Set:new Set(e.value.map(na=>na.id)),G.value=""}function L(){k.value=new Set,G.value=""}const E=la(()=>T.value?D.value:e.value);function I(){E.value.length&&(n.exportSelectionCSV(E.value),G.value="CSV downloaded ("+E.value.length+")",v())}const G=ua("");let S=null;function v(){S&&clearTimeout(S),S=setTimeout(()=>{G.value=""},1900)}function K(na){const u=i.value,A="Send list — "+(u?u.country:"all targets")+(r.value?" ("+r.value+")":"")+" · "+na.length+" senders",j=na.map(c=>c.name+" · "+c.country+" · "+c.lang+(c.rol3?" ("+c.rol3+")":"")+" · "+Math.round(c.pct)+"% Christian · "+_e(c.pop)+" · "+c.bridge);return A+` -`+j.join(` -`)+` -`}function O(na){try{const u=document.createElement("textarea");u.value=na,u.style.position="fixed",u.style.opacity="0",u.style.top="0",document.body.appendChild(u),u.focus(),u.select();const A=document.execCommand&&document.execCommand("copy");return document.body.removeChild(u),!!A}catch{return!1}}async function q(){const na=E.value;if(!na.length)return;const u=K(na);let A=!1;try{navigator.clipboard&&navigator.clipboard.writeText?(await navigator.clipboard.writeText(u),A=!0):A=O(u)}catch{A=O(u)}G.value=A?"Copied ("+na.length+")":"Copy failed — press Ctrl/Cmd-C",v()}function sa(na){typeof n.setHover=="function"&&n.setHover(na)}const ea=la(()=>n.hoveredSenderId&&typeof n.hoveredSenderId=="object"?n.hoveredSenderId.value:null),ga=ua(null);cn(ea,na=>{!na||!ga.value||bi(()=>{const u=ga.value&&ga.value.querySelector('[data-sid="'+Sa(na)+'"]');u&&typeof u.scrollIntoView=="function"&&u.scrollIntoView({block:"nearest"})})});function Sa(na){return String(na).replace(/["\\]/g,"\\$&")}function Ma(na){sa(ea.value===na?null:na)}const ma=ua(null);function pa(na){ma.value=ma.value===na?null:na}function Y(na){return qe(na)}function ta(na){return yr[$t(na)]}function aa(na){const u=br(na);return u===null?"solid":u[0]===4?"dashed":"dotted"}function ba(na){return Math.round(+na||0)+"%"}return On(` -.cpt-list{position:absolute;inset:0;display:flex;flex-direction:column;background:#ffffff; - color:${ia.NAVY};font:400 12px/1.4 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; - overflow:hidden} -.cpt-list *{box-sizing:border-box} - -/* header */ -.cpt-l-head{flex:0 0 auto;padding:8px 10px 6px;border-bottom:1px solid #e6eaf2;background:#fbfcfe} -.cpt-l-title{font-size:12.5px;font-weight:700;color:${ia.NAVY};line-height:1.35} -.cpt-l-sub{margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap; - font-size:10.5px;color:#5b6577} -.cpt-l-badge{display:inline-flex;align-items:center;gap:5px;font-weight:700;font-size:10px; - letter-spacing:.03em;text-transform:uppercase;color:${ia.NAVY}; - background:rgba(0,46,110,.08);border:1px solid rgba(0,46,110,.18); - padding:2px 7px;border-radius:999px} -.cpt-l-badge b{font-size:11px} -.cpt-l-hidden{color:#9aa3b2} - -/* sort row */ -.cpt-l-sorts{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px} -.cpt-l-sort{cursor:pointer;border:1px solid #d6dceb;background:#fff;color:#4a5468; - font:600 10px/1 ui-monospace,monospace;padding:5px 8px;border-radius:7px;white-space:nowrap} -.cpt-l-sort:hover{border-color:${ia.NAVY};color:${ia.NAVY}} -.cpt-l-sort.active{background:${ia.NAVY};border-color:${ia.NAVY};color:#fff} -.cpt-l-sort.frontier.active{background:${ia.GOLD};border-color:${ia.GOLD};color:#3a2a00} - -/* action bar */ -.cpt-l-actions{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap; - padding:6px 10px;border-bottom:1px solid #eef1f7;background:#fff} -.cpt-l-selall{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;color:#5b6577; - cursor:pointer;user-select:none} -.cpt-l-selcount{font-weight:700;color:${ia.NAVY}} -.cpt-l-btn{margin-left:0;cursor:pointer;border:1px solid #cdd5e6;background:#fff; - color:${ia.NAVY};font:600 11px/1 ui-monospace,monospace;padding:7px 10px;border-radius:8px} -.cpt-l-btn:hover{border-color:${ia.NAVY};background:rgba(0,46,110,.06)} -.cpt-l-btn:disabled{opacity:.45;cursor:not-allowed} -.cpt-l-btn.primary{background:${ia.NAVY};border-color:${ia.NAVY};color:#fff} -.cpt-l-btn.primary:hover{background:#013a8a} -.cpt-l-btn.ghost{color:#7b8498;border-color:#e0e5f0} -.cpt-l-spacer{flex:1 1 auto} -.cpt-l-flash{font-size:10px;color:#0f7a3d;min-height:12px;white-space:nowrap} -.cpt-l-flash.warn{color:${ia.RED}} - -/* rows */ -.cpt-l-rows{flex:1 1 auto;overflow:auto;padding:2px 0} -.cpt-l-row{display:grid;grid-template-columns:auto 12px 1fr auto;align-items:center;gap:8px; - padding:6px 10px;border-bottom:1px solid #f1f3f8;cursor:pointer;position:relative} -.cpt-l-row:hover,.cpt-l-row.hovered{background:rgba(245,158,11,.10)} -.cpt-l-row.hovered{box-shadow:inset 3px 0 0 0 ${ia.GOLD}} -.cpt-l-row.picked{background:rgba(0,46,110,.05)} -.cpt-l-chk{width:15px;height:15px;cursor:pointer;accent-color:${ia.NAVY};margin:0} -.cpt-l-swatch{width:12px;height:12px;border-radius:3px;border:1px solid rgba(0,0,0,.18)} -.cpt-l-body{min-width:0} -.cpt-l-name{font-weight:700;font-size:12px;color:${ia.NAVY}; - white-space:nowrap;overflow:hidden;text-overflow:ellipsis} -.cpt-l-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:2px; - font-size:10px;color:#6b7587} -.cpt-l-meta .sep{color:#c4ccda} -.cpt-l-lang{font-family:ui-monospace,monospace} -.cpt-l-rol3{color:#9aa3b2} -.cpt-l-right{display:flex;align-items:center;gap:8px;justify-self:end;white-space:nowrap} -.cpt-l-pct{font-weight:700;font-size:11.5px;font-family:ui-monospace,monospace} -.cpt-l-pop{font-size:10px;color:#6b7587;font-family:ui-monospace,monospace;min-width:34px;text-align:right} - -/* chips */ -.cpt-l-chip{display:inline-flex;align-items:center;gap:4px;font-size:9.5px; - padding:1px 6px;border-radius:999px;border:1px solid #dde3ef;color:#4a5468;background:#f7f9fc; - white-space:nowrap} -.cpt-l-chip.relig{border-color:#e3dcf0;background:#f6f3fc;color:#5b4a86} -.cpt-l-bridgeline{display:inline-block;width:14px;height:0; - border-top:2px solid ${ia.NAVY}} -.cpt-l-info{flex:0 0 auto;width:16px;height:16px;border-radius:50%;cursor:pointer; - border:1px solid #d6dceb;background:#fff;color:#7b8498;font:700 10px/14px ui-monospace,monospace; - text-align:center} -.cpt-l-info:hover,.cpt-l-info.on{border-color:${ia.NAVY};color:${ia.NAVY}} - -/* pinned tooltip */ -.cpt-l-tip{grid-column:1 / -1;margin-top:6px;padding:7px 9px;border-radius:8px; - background:${ia.NAVY};color:#eef3fb;font-size:10px;line-height:1.5} -.cpt-l-tip dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:2px 10px} -.cpt-l-tip dt{color:#9fb6db;font-weight:600} -.cpt-l-tip dd{margin:0;color:#eef3fb;word-break:break-word} - -/* empty / placeholder states */ -.cpt-l-empty{flex:1 1 auto;display:flex;flex-direction:column;align-items:center; - justify-content:center;gap:6px;text-align:center;color:#8a93a5;padding:24px} -.cpt-l-empty .big{font-size:13px;font-weight:700;color:${ia.NAVY}} -.cpt-l-empty .sm{font-size:11px} - -/* container-query polish for narrow frames */ -@container (max-width: 420px){ - .cpt-l-pop{display:none} - .cpt-l-meta .relig{display:none} -} -`,"cockpit-listcell"),(na,u)=>(z(),W("div",v1,[f("div",A1,[f("div",S1,X(l.value),1),i.value?(z(),W("div",E1,[f("span",M1,[f("b",null,X(s.value.toLocaleString()),1),u[3]||(u[3]=ya(" senders available ",-1))]),g.value?(z(),W("span",I1,"· "+X(g.value.toLocaleString())+" hidden by filters",1)):fa("",!0)])):fa("",!0),i.value?(z(),W("div",w1,[(z(),W(Aa,null,Ua(d,A=>f("button",{key:A.key,class:Ia(["cpt-l-sort",{active:o.value===A.key,frontier:A.key==="frontier"}]),type:"button",onClick:j=>_(A.key)},X(A.label),11,x1)),64))])):fa("",!0)]),i.value&&e.value.length?(z(),W("div",T1,[f("label",N1,[f("input",{class:"cpt-l-chk",type:"checkbox",checked:$.value,onChange:w},null,40,L1),u[4]||(u[4]=ya(" Build send list ",-1)),T.value?(z(),W("span",R1,"("+X(T.value)+")",1)):fa("",!0)]),u[5]||(u[5]=f("span",{class:"cpt-l-spacer"},null,-1)),f("span",{class:Ia(["cpt-l-flash",{warn:G.value.indexOf("fail")!==-1}])},X(G.value),3),T.value?(z(),W("button",{key:0,class:"cpt-l-btn ghost",type:"button",onClick:L},"Clear")):fa("",!0),f("button",{class:"cpt-l-btn",type:"button",disabled:!E.value.length,onClick:q},"Copy",8,$1),f("button",{class:"cpt-l-btn primary",type:"button",disabled:!E.value.length,onClick:I}," Export "+X(T.value?"selection":"all")+" · CSV ",9,F1)])):fa("",!0),i.value&&e.value.length?(z(),W("div",{key:1,class:"cpt-l-rows",ref_key:"rowsEl",ref:ga},[(z(!0),W(Aa,null,Ua(e.value,A=>(z(),W("div",{key:A.id,class:Ia(["cpt-l-row",{hovered:ea.value===A.id,picked:k.value.has(A.id)}]),"data-sid":A.id,onMouseenter:j=>sa(A.id),onMouseleave:u[2]||(u[2]=j=>sa(null)),onClick:j=>Ma(A.id)},[f("input",{class:"cpt-l-chk",type:"checkbox",checked:k.value.has(A.id),onClick:u[0]||(u[0]=Xn(()=>{},["stop"])),onChange:j=>x(A.id)},null,40,B1),f("span",{class:"cpt-l-swatch",style:Ka({background:Y(A.pct)}),title:ta(A.pct)},null,12,O1),f("div",U1,[f("div",{class:"cpt-l-name",title:A.name},X(A.name),9,H1),f("div",D1,[f("span",null,X(A.country),1),u[6]||(u[6]=f("span",{class:"sep"},"·",-1)),f("span",z1,[ya(X(A.lang),1),A.rol3?(z(),W("span",V1," ("+X(A.rol3)+")",1)):fa("",!0)]),f("span",{class:"cpt-l-chip",title:"bridge: "+A.bridge},[f("span",{class:"cpt-l-bridgeline",style:Ka({borderTopStyle:aa(A.bridge)})},null,4),ya(" "+X(A.bridge),1)],8,Y1),f("span",{class:"cpt-l-chip relig",title:A.religion_bg},X(A.religionFamily),9,W1)])]),f("div",J1,[f("span",{class:"cpt-l-pct",style:Ka({color:Y(A.pct)})},X(ba(A.pct)),5),f("span",Z1,X(ha(_e)(A.pop)),1),f("button",{class:Ia(["cpt-l-info",{on:ma.value===A.id}]),type:"button",title:"Details",onClick:Xn(j=>pa(A.id),["stop"])},"i",10,q1)]),ma.value===A.id?(z(),W("div",{key:0,class:"cpt-l-tip",onClick:u[1]||(u[1]=Xn(()=>{},["stop"]))},[f("dl",null,[u[7]||(u[7]=f("dt",null,"People group",-1)),f("dd",null,X(A.name),1),u[8]||(u[8]=f("dt",null,"Country",-1)),f("dd",null,X(A.country),1),u[9]||(u[9]=f("dt",null,"Language",-1)),f("dd",null,[ya(X(A.lang),1),A.rol3?(z(),W("span",X1," · "+X(A.rol3),1)):fa("",!0)]),u[10]||(u[10]=f("dt",null,"%Christian",-1)),f("dd",null,X(ba(A.pct))+" · "+X(ta(A.pct)),1),u[11]||(u[11]=f("dt",null,"Population",-1)),f("dd",null,X(ha(_e)(A.pop)),1),u[12]||(u[12]=f("dt",null,"Bridge",-1)),f("dd",null,X(A.bridge),1),u[13]||(u[13]=f("dt",null,"Adjacency",-1)),f("dd",null,X(A.adjacency),1),u[14]||(u[14]=f("dt",null,"Religion",-1)),f("dd",null,X(A.religion_bg||A.religionFamily),1),A.code?(z(),W("dt",Q1,"Code")):fa("",!0),A.code?(z(),W("dd",a3,X(A.code),1)):fa("",!0)])])):fa("",!0)],42,K1))),128))],512)):i.value?(z(),W("div",n3,[u[15]||(u[15]=f("div",{class:"big"},"No senders match the current filters",-1)),g.value?(z(),W("div",e3,X(g.value.toLocaleString())+" senders hidden — clear a facet to see them",1)):(z(),W("div",i3,"This target has no reached neighbors in the baked set yet"))])):(z(),W("div",t3,[u[16]||(u[16]=f("div",{class:"big"},"Pick a red target",-1)),f("div",o3,X(t.value.clusters.toLocaleString())+" unreached clusters · "+X(t.value.senders.toLocaleString())+" reached senders nearby",1),u[17]||(u[17]=f("div",{class:"sm"},"Tap a red bubble on the map to build its send list.",-1))]))]))}},l3={class:"cpt-cs"},s3={class:"cs-controls"},c3={class:"cs-searchwrap"},g3=["value"],u3={key:0,class:"cs-suggest",role:"listbox"},d3=["onMousedown"],p3={class:"cs-tag"},m3={class:"cs-lens"},h3=["value"],y3=["value"],b3={class:"cs-colorby",role:"group","aria-label":"Color reached senders by"},_3={class:"cs-grid"},f3={class:"cs-card"},P3=["viewBox"],C3=["onClick"],j3=["x","y"],k3=["x","y","width","height"],G3=["x","y"],v3={key:1,class:"cs-empty"},A3={class:"cs-card"},S3=["viewBox"],E3=["onClick"],M3=["x","y"],I3=["x","y","width","height"],w3=["x","y"],x3={key:1,class:"cs-empty"},T3={class:"cs-card"},N3=["viewBox"],L3=["x2"],R3=["onClick"],$3=["x","y","width","height","fill"],F3=["x","y"],K3=["x","y"],B3={class:"cs-card"},O3={class:"cs-donutwrap"},U3={key:0,class:"cs-donut",viewBox:"0 0 160 160",preserveAspectRatio:"xMidYMid meet",role:"img","aria-label":"Donut by category"},H3=["d","fill","onClick"],D3={class:"cs-dctr",x:"80",y:"84","text-anchor":"middle"},z3={class:"cs-legend"},V3=["onClick"],Y3={key:0,class:"cs-empty"},Ig=300,Qe=15,Pr=5,Dt=94,W3=150,Cr=230,J3=120,Z3=10,Oi=96,jr=12,q3=80,X3=80,ai=70,ni=42,Q3={__name:"ChartStrip",setup(a){const n=Ft(),e=ua(!1),i=[0,10,25,50,75],t=(G,S)=>{const v=String(G??"");return v.length>S?v.slice(0,S-1)+"…":v},o=la(()=>n.chartData.value),r=la(()=>n.colorBy.value==="religion"?"religions":"bridges"),l=la(()=>{const G=new Map;for(const S of n.allSenders.value){const v=S.lang||"—";G.set(v,(G.get(v)||0)+1)}return[...G.entries()].map(([S,v])=>({lang:S,count:v})).sort((S,v)=>v.count-S.count)}),s=la(()=>{const G=n.search.value.trim().toLowerCase();if(G.length<1)return[];const S=[];for(const v of n.allClusters.value)if(v.country.toLowerCase().includes(G)&&(S.push({type:"target",label:v.country+" · "+v.count+" unreached",value:v.id,targetId:v.id}),S.length>=6))break;for(const v of l.value)if(v.lang.toLowerCase().includes(G)&&(S.push({type:"lang",label:v.lang+" · "+v.count+" senders",value:v.lang}),S.length>=9))break;for(const v of n.allSenders.value)if(v.name.toLowerCase().includes(G)&&(S.push({type:"sender",label:v.name+" → "+v.country,value:v.name,targetId:v.targetId}),S.length>=13))break;return S.slice(0,11)});function g(G,S){const v=n.facets.value[S],K=v&&v.size>0;let O=1;for(const q of G)q.value>O&&(O=q.value);return G.map((q,sa)=>{const ea=Math.max(2,q.value/O*W3),ga=v?v.has(q.key):!1;return{key:q.key,label:q.label,value:q.value,y:sa*(Qe+Pr),h:Qe,x:Dt,w:ea,ty:sa*(Qe+Pr)+Qe-4,vx:Dt+ea+4,active:ga,dim:K&&!ga}})}const d=G=>Math.max(Qe,G.length*(Qe+Pr)),_=la(()=>g(o.value.languageBar,"languages")),k=la(()=>g(o.value.countryBar,"countries")),x=la(()=>{const G=o.value.reachedHist;let S=1;for(const ea of G)ea.value>S&&(S=ea.value);const v=G.length,K=(Cr-jr-8)/v,O=K*.7,q=n.facets.value.reachedMin,sa=Oi-Z3;return G.map((ea,ga)=>{const Sa=ea.value/S*sa,Ma=jr+ga*K+(K-O)/2,ma=i[ga],pa=q!=null&&q===ma;return{key:ga,label:yr[ga],value:ea.value,color:ea.color,x:Ma,w:O,y:Oi-Sa,h:Sa,cx:Ma+O/2,min:ma,active:pa,dim:q!=null&&q!==ma&&ma>0}})});function D(G){G.min<=0||n.facets.value.reachedMin===G.min?n.setReachedMin(null):n.setReachedMin(G.min)}function T(G,S){const v=(q,sa)=>q3+q*Math.cos(sa),K=(q,sa)=>X3+q*Math.sin(sa),O=S-G>Math.PI?1:0;return"M"+v(ai,G)+" "+K(ai,G)+" A"+ai+" "+ai+" 0 "+O+" 1 "+v(ai,S)+" "+K(ai,S)+" L"+v(ni,S)+" "+K(ni,S)+" A"+ni+" "+ni+" 0 "+O+" 0 "+v(ni,G)+" "+K(ni,G)+" Z"}const $=la(()=>{const G=o.value.donut,S=n.facets.value[r.value],v=S&&S.size>0;let K=0;for(const q of G)K+=q.value;K=K||1;let O=-Math.PI/2;return G.map(q=>{let sa=q.value/K*Math.PI*2;sa>=Math.PI*2&&(sa=Math.PI*2-1e-4);const ea=O,ga=O+sa;O=ga;const Sa=S?S.has(q.key):!1;return{key:q.key,label:q.label,value:q.value,color:q.color,path:T(ea,ga),active:Sa,dim:v&&!Sa}})}),w=la(()=>$.value.reduce((G,S)=>G+S.value,0));function L(G){n.setSearch(G.target.value),e.value=!0}function E(G){G.type==="target"?(n.selectTarget(G.targetId),n.setSearch("")):(G.type==="sender"&&G.targetId&&n.selectTarget(G.targetId),n.setSearch(G.value)),e.value=!1}function I(G){n.setLanguageLens(G.target.value||null)}return On(` - .cpt-cs{position:absolute;inset:0;display:flex;flex-direction:column;overflow:auto; - background:#f8fafc;color:${ia.NAVY}; - font:600 11px/1.35 ui-monospace,SFMono-Regular,Menlo,monospace;} - - /* control bar */ - .cs-controls{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center; - gap:8px;padding:8px 10px;background:rgba(248,250,252,.96);border-bottom:1px solid #e2e8f0;} - .cs-searchwrap{position:relative;flex:1 1 180px;min-width:140px;} - .cs-search{width:100%;box-sizing:border-box;padding:6px 9px;border:1px solid #cbd5e1;border-radius:8px; - background:#fff;color:${ia.NAVY};font:600 11px/1.2 ui-monospace,monospace;outline:none;} - .cs-search:focus{border-color:${ia.NAVY};box-shadow:0 0 0 2px rgba(0,46,110,.12);} - .cs-suggest{position:absolute;left:0;right:0;top:calc(100% + 3px);z-index:60;margin:0;padding:4px; - list-style:none;background:#fff;border:1px solid #cbd5e1;border-radius:8px; - box-shadow:0 8px 22px rgba(0,0,0,.16);max-height:230px;overflow:auto;} - .cs-suggest li{display:flex;align-items:center;gap:6px;padding:5px 7px;border-radius:6px;cursor:pointer; - font:600 11px/1.25 ui-monospace,monospace;color:${ia.NAVY};} - .cs-suggest li:hover{background:#eef2f7;} - .cs-tag{flex:0 0 auto;font:700 8px/1 ui-monospace,monospace;letter-spacing:.5px;color:#fff; - padding:2px 4px;border-radius:4px;background:#94a3b8;} - .cs-suggest li.t-target .cs-tag{background:${ia.RED};} - .cs-suggest li.t-lang .cs-tag{background:${ia.GOLD};} - .cs-suggest li.t-sender .cs-tag{background:${ia.NAVY};} - - .cs-lens{display:inline-flex;align-items:center;gap:5px;font:700 10px/1 ui-monospace,monospace;color:#475569;} - .cs-lens select{padding:5px 6px;border:1px solid #cbd5e1;border-radius:7px;background:#fff; - color:${ia.NAVY};font:600 10px/1.1 ui-monospace,monospace;max-width:140px;} - .cs-colorby{display:inline-flex;align-items:center;gap:4px;font:700 10px/1 ui-monospace,monospace;color:#475569;} - .cs-colorby button{border:1px solid #cbd5e1;background:#fff;color:#475569;cursor:pointer; - font:700 10px/1 ui-monospace,monospace;padding:5px 8px;border-radius:7px;} - .cs-colorby button.on{background:${ia.NAVY};color:#fff;border-color:${ia.NAVY};} - - /* charts grid */ - .cs-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 10px 12px;} - @container (max-width:520px){ .cs-grid{grid-template-columns:1fr;} } - .cs-card{display:flex;flex-direction:column;min-width:0;background:#fff;border:1px solid #e2e8f0; - border-radius:10px;padding:7px 8px;} - .cs-card header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;} - .cs-card h4{margin:0;font:700 10px/1.2 ui-monospace,monospace;letter-spacing:.3px; - text-transform:uppercase;color:#475569;} - .cs-clr{border:0;background:transparent;color:${ia.RED};cursor:pointer; - font:700 9px/1 ui-monospace,monospace;padding:2px 4px;} - .cs-clr:hover{text-decoration:underline;} - .cs-svg{width:100%;height:auto;display:block;} - .cs-empty{margin:8px 0;color:#94a3b8;font:600 10px/1 ui-monospace,monospace;text-align:center;} - - /* horizontal bars */ - .cs-barrow{cursor:pointer;} - .cs-bar{fill:${ia.NAVY};transition:opacity .15s;} - .cs-bar--country{fill:#1f5fa8;} - .cs-barrow:hover .cs-bar{fill:${ia.GOLD};} - .cs-barrow.active .cs-bar{fill:${ia.GOLD};} - .cs-barrow.dim{opacity:.4;} - .cs-blabel{fill:#334155;font:600 9px/1 ui-monospace,monospace;} - .cs-bval{fill:#64748b;font:600 8.5px/1 ui-monospace,monospace;dominant-baseline:alphabetic;} - .cs-barrow.active .cs-blabel,.cs-barrow.active .cs-bval{fill:${ia.NAVY};} - - /* histogram */ - .cs-axis{stroke:#cbd5e1;stroke-width:1;} - .cs-histbar{cursor:pointer;transition:opacity .15s;} - .cs-histbar rect{stroke:#fff;stroke-width:.5;} - .cs-histbar:hover rect{stroke:${ia.NAVY};stroke-width:1.5;} - .cs-histbar.active rect{stroke:${ia.GOLD};stroke-width:2;} - .cs-histbar.dim{opacity:.4;} - .cs-hval{fill:#334155;font:700 8px/1 ui-monospace,monospace;} - .cs-hlabel{fill:#64748b;font:600 6.5px/1 ui-monospace,monospace;} - - /* donut */ - .cs-donutwrap{display:flex;align-items:center;gap:8px;} - .cs-donut{flex:0 0 96px;width:96px;height:96px;} - .cs-arc{cursor:pointer;stroke:#fff;stroke-width:1;transition:opacity .15s;} - .cs-arc:hover{stroke:${ia.NAVY};stroke-width:1.5;} - .cs-arc.active{stroke:${ia.GOLD};stroke-width:2.5;} - .cs-arc.dim{opacity:.4;} - .cs-dctr{fill:${ia.NAVY};font:700 16px/1 ui-monospace,monospace;} - .cs-legend{flex:1 1 auto;margin:0;padding:0;list-style:none;max-height:104px;overflow:auto;min-width:0;} - .cs-legend li{display:flex;align-items:center;gap:5px;padding:2px 2px;cursor:pointer;border-radius:4px; - font:600 9.5px/1.3 ui-monospace,monospace;color:#334155;white-space:nowrap;overflow:hidden;} - .cs-legend li:hover{background:#eef2f7;} - .cs-legend li.active{color:${ia.NAVY};font-weight:800;} - .cs-legend li.dim{opacity:.45;} - .cs-legend li i{flex:0 0 auto;width:10px;height:10px;border-radius:3px;border:1px solid rgba(0,0,0,.12);} - .cs-legend li b{margin-left:auto;color:#64748b;} -`,"chartstrip"),(G,S)=>(z(),W("div",l3,[f("div",s3,[f("div",c3,[f("input",{class:"cs-search",type:"search",value:ha(n).search.value,onInput:L,onFocus:S[0]||(S[0]=v=>e.value=!0),onBlur:S[1]||(S[1]=v=>e.value=!1),placeholder:"Search target / language / sender…","aria-label":"Search and brush"},null,40,g3),e.value&&s.value.length?(z(),W("ul",u3,[(z(!0),W(Aa,null,Ua(s.value,(v,K)=>(z(),W("li",{key:K,class:Ia("t-"+v.type),role:"option",onMousedown:Xn(O=>E(v),["prevent"])},[f("span",p3,X(v.type==="target"?"RED":v.type==="lang"?"LANG":"SEND"),1),ya(" "+X(v.label),1)],42,d3))),128))])):fa("",!0)]),f("label",m3,[S[9]||(S[9]=f("span",null,"Lens",-1)),f("select",{value:ha(n).languageLens.value||"",onChange:I,"aria-label":"Language lens"},[S[8]||(S[8]=f("option",{value:""},"— no lens —",-1)),(z(!0),W(Aa,null,Ua(l.value.slice(0,40),v=>(z(),W("option",{key:v.lang,value:v.lang},X(v.lang)+" ("+X(v.count)+") ",9,y3))),128))],40,h3)]),f("div",b3,[S[10]||(S[10]=f("span",null,"Color",-1)),f("button",{class:Ia({on:ha(n).colorBy.value==="pct"}),onClick:S[2]||(S[2]=v=>ha(n).setColorBy("pct"))},"% reached",2),f("button",{class:Ia({on:ha(n).colorBy.value==="religion"}),onClick:S[3]||(S[3]=v=>ha(n).setColorBy("religion"))},"religion",2)])]),f("div",_3,[f("section",f3,[f("header",null,[S[11]||(S[11]=f("h4",null,"Sender language",-1)),ha(n).facets.value.languages.size?(z(),W("button",{key:0,class:"cs-clr",onClick:S[4]||(S[4]=v=>ha(n).facets.value.languages.forEach(K=>ha(n).toggleFacet("languages",K)))},"clear")):fa("",!0)]),_.value.length?(z(),W("svg",{key:0,class:"cs-svg",viewBox:"0 0 "+Ig+" "+d(o.value.languageBar),preserveAspectRatio:"xMinYMin meet",role:"img","aria-label":"Senders by language"},[(z(!0),W(Aa,null,Ua(_.value,v=>(z(),W("g",{key:v.key,class:Ia(["cs-barrow",{active:v.active,dim:v.dim}]),onClick:K=>ha(n).toggleFacet("languages",v.key)},[f("text",{class:"cs-blabel",x:Dt-4,y:v.ty,"text-anchor":"end"},X(t(v.label,13)),9,j3),f("rect",{class:"cs-bar",x:v.x,y:v.y,width:v.w,height:v.h},null,8,k3),f("text",{class:"cs-bval",x:v.vx,y:v.ty},X(v.value),9,G3)],10,C3))),128))],8,P3)):(z(),W("p",v3,"no senders"))]),f("section",A3,[f("header",null,[S[12]||(S[12]=f("h4",null,"Sender country",-1)),ha(n).facets.value.countries.size?(z(),W("button",{key:0,class:"cs-clr",onClick:S[5]||(S[5]=v=>ha(n).facets.value.countries.forEach(K=>ha(n).toggleFacet("countries",K)))},"clear")):fa("",!0)]),k.value.length?(z(),W("svg",{key:0,class:"cs-svg",viewBox:"0 0 "+Ig+" "+d(o.value.countryBar),preserveAspectRatio:"xMinYMin meet",role:"img","aria-label":"Senders by country"},[(z(!0),W(Aa,null,Ua(k.value,v=>(z(),W("g",{key:v.key,class:Ia(["cs-barrow cs-barrow--country",{active:v.active,dim:v.dim}]),onClick:K=>ha(n).toggleFacet("countries",v.key)},[f("text",{class:"cs-blabel",x:Dt-4,y:v.ty,"text-anchor":"end"},X(t(v.label,13)),9,M3),f("rect",{class:"cs-bar cs-bar--country",x:v.x,y:v.y,width:v.w,height:v.h},null,8,I3),f("text",{class:"cs-bval",x:v.vx,y:v.ty},X(v.value),9,w3)],10,E3))),128))],8,S3)):(z(),W("p",x3,"no senders"))]),f("section",T3,[f("header",null,[S[13]||(S[13]=f("h4",null,"% reached (quantile)",-1)),ha(n).facets.value.reachedMin!=null?(z(),W("button",{key:0,class:"cs-clr",onClick:S[6]||(S[6]=v=>ha(n).setReachedMin(null))},"clear")):fa("",!0)]),(z(),W("svg",{class:"cs-svg",viewBox:"0 0 "+Cr+" "+J3,preserveAspectRatio:"xMidYMid meet",role:"img","aria-label":"Reached percent histogram"},[f("line",{class:"cs-axis",x1:jr,y1:Oi,x2:Cr-4,y2:Oi},null,8,L3),(z(!0),W(Aa,null,Ua(x.value,v=>(z(),W("g",{key:v.key,class:Ia(["cs-histbar",{active:v.active,dim:v.dim}]),onClick:K=>D(v)},[f("rect",{x:v.x,y:v.y,width:v.w,height:v.h,fill:v.color},null,8,$3),f("text",{class:"cs-hval",x:v.cx,y:v.y-3,"text-anchor":"middle"},X(v.value),9,F3),f("text",{class:"cs-hlabel",x:v.cx,y:Oi+12,"text-anchor":"middle"},X(v.label),9,K3)],10,R3))),128))],8,N3))]),f("section",B3,[f("header",null,[f("h4",null,X(ha(n).colorBy.value==="religion"?"Religion family":"Bridge type"),1),ha(n).facets.value[r.value].size?(z(),W("button",{key:0,class:"cs-clr",onClick:S[7]||(S[7]=v=>ha(n).facets.value[r.value].forEach(K=>ha(n).toggleFacet(r.value,K)))},"clear")):fa("",!0)]),f("div",O3,[w.value?(z(),W("svg",U3,[(z(!0),W(Aa,null,Ua($.value,v=>(z(),W("path",{key:v.key,class:Ia(["cs-arc",{active:v.active,dim:v.dim}]),d:v.path,fill:v.color,onClick:K=>ha(n).toggleFacet(r.value,v.key)},null,10,H3))),128)),f("text",D3,X(w.value),1)])):fa("",!0),f("ul",z3,[(z(!0),W(Aa,null,Ua($.value,v=>(z(),W("li",{key:v.key,class:Ia({active:v.active,dim:v.dim}),onClick:K=>ha(n).toggleFacet(r.value,v.key)},[f("i",{style:Ka({background:v.color})},null,4),ya(X(t(v.label,16))+" ",1),f("b",null,X(v.value),1)],10,V3))),128))])]),w.value?fa("",!0):(z(),W("p",Y3,"no senders"))])])]))}},a_={class:"cpt-header"},n_={class:"cpt-chips"},e_=["onClick","title"],i_=["value"],t_={class:"cpt-counter"},o_=["title"],r_={class:"cpt-cell map"},l_={class:"cpt-cell flower"},s_={class:"cpt-seg",role:"tablist","aria-label":"Map or flower view"},c_={class:"cpt-lower"},g_={class:"cpt-cell"},u_={class:"cpt-cell"},d_={class:"cpt-legend"},p_={class:"cpt-lg"},m_={class:"cpt-lg"},h_={class:"cpt-ramp"},y_={class:"cpt-lg"},b_={class:"cpt-lg"},__={key:0,class:"cpt-overlay"},f_={key:1,class:"cpt-overlay err"},wg={__name:"bloom-cockpit",setup(a){const n=Ya("profileConfig"),e=Ya("mapboxToken"),i=la(()=>(n==null?void 0:n.value)||{}),t=Tb();vn("cockpitStore",t);const o=ua(null);Rn(()=>{var s,g,d;if(t.loadData({...i.value,tk:(e==null?void 0:e.value)||i.value.tk}),i.value.debugExpose&&typeof window<"u")try{(((d=(g=(s=o.value)==null?void 0:s.getRootNode)==null?void 0:g.call(s))==null?void 0:d.host)||window).__cockpit=t}catch{}});function r(s){t.setSearch(s.target.value)}function l(s){t.setMode(s)}return On(` - .cpt-root { position:absolute; inset:0; display:grid; overflow:hidden; - grid-template-rows: auto minmax(0,1.45fr) minmax(0,1fr) auto; - grid-template-areas: "header" "upper" "lower" "legend"; - background:#eef2f7; color:#1f2937; isolation:isolate; container-type:inline-size; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - - /* ── HEADER ── */ - .cpt-header { grid-area:header; display:flex; flex-wrap:wrap; gap:8px; align-items:center; - padding:8px 12px; background:${ia.NAVY}; color:#fff; border-bottom:1px solid #001b44; } - .cpt-brand { font:800 12px/1 ui-monospace,monospace; letter-spacing:.05em; text-transform:uppercase; - padding:6px 10px; background:rgba(255,255,255,.1); border-radius:7px; } - .cpt-chips { display:flex; flex-wrap:wrap; gap:5px; align-items:center; } - .cpt-chip { display:inline-flex; align-items:center; gap:5px; font:600 11px/1 -apple-system,sans-serif; - padding:4px 8px; border-radius:999px; background:#fff; color:${ia.NAVY}; cursor:pointer; border:0; } - .cpt-chip.focus { background:${ia.GOLD}; color:#3a2600; } - .cpt-chip .x { font-weight:800; opacity:.6; } - .cpt-chip:hover .x { opacity:1; } - .cpt-search { flex:1 1 180px; min-width:120px; max-width:360px; margin-left:auto; - background:#0e1f44; border:1px solid #284a86; color:#dbe4f3; font:600 12px/1 -apple-system,sans-serif; - padding:7px 11px; border-radius:8px; } - .cpt-search::placeholder { color:#7e90b6; } - .cpt-counter { font:700 11px/1.3 ui-monospace,monospace; color:#cdd9f2; text-align:right; white-space:nowrap; } - .cpt-counter b { color:#fff; } - .cpt-prov { font:600 10px/1.3 ui-monospace,monospace; color:#9fb3d9; background:rgba(0,0,0,.25); - border:1px solid #284a86; border-radius:7px; padding:5px 9px; max-width:280px; } - .cpt-prov.err { color:#fecaca; border-color:#9f1239; } - - /* ── UPPER ROW: map + flower ── */ - .cpt-upper { grid-area:upper; display:grid; grid-template-columns: 58fr 42fr; gap:1px; - background:#cbd5e1; position:relative; min-height:0; } - .cpt-cell { position:relative; overflow:hidden; min-height:0; background:#fff; } - .cpt-seg { position:absolute; top:8px; left:50%; transform:translateX(-50%); z-index:40; - display:inline-flex; background:rgba(255,255,255,.95); border:1px solid #cbd5e1; border-radius:999px; - padding:3px; gap:2px; box-shadow:0 2px 10px rgba(0,0,0,.15); } - .cpt-seg button { border:0; background:transparent; color:#475569; cursor:pointer; - font:700 11px/1 ui-monospace,monospace; padding:6px 12px; border-radius:999px; } - .cpt-seg button.on { background:${ia.NAVY}; color:#fff; } - - /* ── LOWER ROW: charts + list ── */ - .cpt-lower { grid-area:lower; display:grid; grid-template-columns: 42fr 58fr; gap:1px; - background:#cbd5e1; min-height:0; } - - /* ── LEGEND RIBBON ── */ - .cpt-legend { grid-area:legend; display:flex; flex-wrap:wrap; gap:6px 16px; align-items:center; - padding:6px 12px; background:#0e1730; color:#cdd9f2; font:600 10px/1.4 ui-monospace,monospace; - border-top:1px solid #1c2742; } - .cpt-lg { display:inline-flex; align-items:center; gap:6px; } - .cpt-sw { width:12px; height:12px; border-radius:50%; flex:0 0 auto; border:1px solid rgba(255,255,255,.3); } - .cpt-line { width:18px; height:0; border-top:2px solid; flex:0 0 auto; } - .cpt-ramp { display:inline-flex; gap:0; } - .cpt-ramp i { width:13px; height:11px; display:inline-block; } - - /* ── loading / error overlay ── */ - .cpt-overlay { position:absolute; inset:0; z-index:80; display:flex; align-items:center; - justify-content:center; background:rgba(238,242,247,.92); color:${ia.NAVY}; - font:600 13px/1.5 ui-monospace,monospace; text-align:center; padding:24px; } - .cpt-overlay.err { color:${ia.RED_DK}; } - - /* ── responsive: stack the two cells per row on narrow frames ── */ - @container (max-width: 720px) { - .cpt-upper { grid-template-columns: 1fr; grid-template-rows: 1fr; } - .cpt-upper .cpt-cell.flower { display:none; } - .cpt-upper.flower-mode .cpt-cell.map { display:none; } - .cpt-upper.flower-mode .cpt-cell.flower { display:block; } - .cpt-lower { grid-template-columns: 1fr; grid-template-rows: 1fr 1fr; } - .cpt-prov { display:none; } - } -`,"cockpit-shell"),(s,g)=>(z(),W("div",{ref_key:"rootEl",ref:o,class:"cpt-root"},[f("div",a_,[g[4]||(g[4]=f("span",{class:"cpt-brand"},"My UPG Neighbor · Overview",-1)),f("div",n_,[(z(!0),W(Aa,null,Ua(ha(t).chips.value,(d,_)=>(z(),W("button",{key:_,class:Ia(["cpt-chip",{focus:d.kind==="focus"}]),onClick:k=>ha(t).removeChip(d),title:"remove "+d.label},[ya(X(d.label)+" ",1),g[2]||(g[2]=f("span",{class:"x"},"×",-1))],10,e_))),128))]),f("input",{class:"cpt-search",type:"search",value:ha(t).search.value,onInput:r,placeholder:"Search target / sender / language…","aria-label":"Search"},null,40,i_),f("span",t_,[f("b",null,X(ha(t).counts.value.senders.toLocaleString()),1),g[3]||(g[3]=ya(" senders → ",-1)),f("b",null,X(ha(t).counts.value.clusters.toLocaleString()),1),ya(" clusters · "+X(ha(t).counts.value.hidden)+" hidden ",1)]),f("span",{class:Ia(["cpt-prov",{err:ha(t).provenance.value.apiError}]),title:ha(t).provenance.value.reachedFilter},[ha(t).provenance.value.apiError?(z(),W(Aa,{key:0},[ya(X(ha(t).provenance.value.apiError),1)],64)):(z(),W(Aa,{key:1},[ya(" LIVE "+X(ha(t).provenance.value.liveUnreached.toLocaleString())+" unreached · baked senders "+X(ha(t).provenance.value.bakedGenerated),1)],64))],10,o_)]),f("div",{class:Ia(["cpt-upper",{"flower-mode":ha(t).mode.value==="flower"}])},[f("div",r_,[Wa(Xb)]),f("div",l_,[Wa(G1)]),f("div",s_,[f("button",{class:Ia({on:ha(t).mode.value==="map"}),onClick:g[0]||(g[0]=d=>l("map"))},"MAP",2),f("button",{class:Ia({on:ha(t).mode.value==="flower"}),onClick:g[1]||(g[1]=d=>l("flower"))},"FLOWER",2)])],2),f("div",c_,[f("div",g_,[Wa(Q3)]),f("div",u_,[Wa(r3)])]),f("div",d_,[f("span",p_,[f("span",{class:"cpt-sw",style:Ka({background:ha(ia).RED})},null,4),g[5]||(g[5]=ya(" unreached target",-1))]),f("span",m_,[g[6]||(g[6]=ya("reached % ",-1)),f("span",h_,[(z(!0),W(Aa,null,Ua(ha(ia).GREEN_BINS,(d,_)=>(z(),W("i",{key:_,style:Ka({background:d})},null,4))),128))])]),f("span",y_,[f("span",{class:"cpt-line",style:Ka({borderColor:ha(ia).NAVY})},null,4),g[7]||(g[7]=ya(" SEND (solid=same-lang · dashed=cluster · dotted=in-country)",-1))]),f("span",b_,[f("span",{class:"cpt-sw",style:Ka({background:ha(ia).GOLD})},null,4),g[8]||(g[8]=ya(" selection · pop = log radius · Luke 10:2",-1))])]),ha(t).ready.value?ha(t).loadError.value&&!ha(t).allClusters.value.length?(z(),W("div",f_,X(ha(t).loadError.value),1)):fa("",!0):(z(),W("div",__,"Loading the harvest field…"))],512))}},P_=Object.freeze(Object.defineProperty({__proto__:null,default:wg},Symbol.toStringTag,{value:"Module"})),C_={class:"fm-top"},j_=["value"],k_=["value"],G_=["aria-checked"],v_={key:1,class:"fm-stats"},A_={class:"fm-stage"},S_={key:0,class:"fm-loading"},E_={key:1,class:"fm-loading"},M_=["viewBox"],I_=["cx","cy","fill","transform"],w_=["x1","y1","x2","y2","stroke-dasharray"],x_=["d"],T_=["onClick","onMouseenter"],N_=["cx","cy","r","fill"],L_=["x","y"],R_=["r"],$_=["y"],F_=["y"],K_=["y"],B_={key:3,class:"fm-legend"},O_={class:"fm-lrow"},U_={class:"fm-lrow"},H_={class:"fm-footer"},D_=["innerHTML"],kr="#FF6600",z_="#002e6e",V_="#0b1020",zt=1e3,xg=205,Gr=360,Tg=46,Ng={__name:"flower-mesh",setup(a){function n(c){const P=+c||0;return P>=80?"#0f7a3d":P>=40?"#1f9d55":P>=15?"#5cb874":"#9bcf9b"}const e=Ya("profileConfig");Ya("dataSource",null);const i=la(()=>(e==null?void 0:e.value)||{}),t=ua(null),o=ua(!1),r=ua(""),l=ua(i.value.target??"India"),s=ua(!0),g=ua(null),d=ua(null),_=ua({show:!1,x:0,y:0,html:""}),k=zt/2,x=zt/2;function D(c,P,p,M){const N=(M-90)*Math.PI/180;return[c+p*Math.cos(N),P+p*Math.sin(N)]}function T(c){const P=Math.max(0,+c||0);return Math.max(7,Math.min(22,6+Math.sqrt(P)/320))}function $(c){return String(c||"").trim().toLowerCase()}const w=la(()=>t.value?Object.keys(t.value.countries):[]),L=la(()=>{var c,P;return((P=(c=t.value)==null?void 0:c.countries)==null?void 0:P[l.value])??null}),E=la(()=>{const c=L.value;return c?(c.neighbors||[]).map((P,p)=>({...P,_i:p})):[]}),I=la(()=>E.value.filter(c=>c.adjacency==="same-country")),G=la(()=>E.value.filter(c=>c.adjacency!=="same-country")),S=la(()=>{const c=[],P=(p,M,N)=>{const U=p.length;p.forEach((h,C)=>{const y=U?(C+.5)/U*360+N:0,[R,H]=D(k,x,M,y);c.push({id:"n"+h._i,node:h,x:R,y:H,ang:y,r:T(h.pop),color:n(h.pct_christian),ring:M===xg?"inner":"outer"})})};return P(I.value,xg,0),P(G.value,Gr,G.value.length?180/G.value.length:0),c}),v=la(()=>S.value.map(c=>({id:"s-"+c.id,x1:k,y1:x,x2:c.x,y2:c.y,strong:c.node.bridge==="same-language",to:c.id}))),K=la(()=>{if(!s.value)return[];const c=S.value,P=[];for(let p=0;pS.value.filter(c=>c.ring==="outer").map(c=>({id:"p-"+c.id,cx:D(k,x,Gr-6,c.ang)[0],cy:D(k,x,Gr-6,c.ang)[1],rot:c.ang,color:c.color}))),q=la(()=>{const c=L.value,P=d.value;return{name:l.value,upg:(P==null?void 0:P.upg)??(c==null?void 0:c.target_upg)??0,pop:(P==null?void 0:P.pop)??(c==null?void 0:c.target_pop)??0,religion:(c==null?void 0:c.target_top_religion)??"",langs:(c==null?void 0:c.target_top_langs)??[]}}),sa=la(()=>({total:E.value.length,inner:I.value.length,outer:G.value.length,countries:new Set(E.value.map(c=>c.country)).size,meshes:K.value.length}));function ea(c){return g.value?c.from===g.value||c.to===g.value:!0}function ga(c){return g.value?c.to===g.value:!0}function Sa(c){return!g.value||c.id===g.value?!0:K.value.some(P=>P.from===g.value&&P.to===c.id||P.to===g.value&&P.from===c.id)}const Ma=c=>(+c||0).toLocaleString();function ma(c){const P=+c||0;return P>=1e9?(P/1e9).toFixed(1)+"B":P>=1e6?(P/1e6).toFixed(1)+"M":P>=1e3?(P/1e3).toFixed(0)+"K":String(P)}function pa(c,P){const p=c.node,M=p.province||p.segment;_.value={show:!0,x:P.clientX,y:P.clientY,html:`${u(p.name)}
${u(p.country)}${M?" · "+u(M):""}
reached ${Math.round(p.pct_christian||0)}% Christian
language ${u(p.lang||"—")}
people ${ma(p.pop)}
bridge ${u(p.bridge||"—")}
near ${u(p.adjacency||"—")}
`}}function Y(c){_.value.show&&(_.value.x=c.clientX,_.value.y=c.clientY)}function ta(){_.value={..._.value,show:!1}}function aa(c){g.value=g.value===c.id?null:c.id}function ba(){g.value=null}function na(c){l.value=c.target.value,g.value=null}function u(c){return String(c??"").replace(/[&<>"']/g,P=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[P])}async function A(){const c=i.value.dataUrl;if(c)try{const P=await fetch(c);if(P.ok)return await P.json()}catch{}return ee}async function j(){const c=i.value.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL);if(c)try{const P=await fetch(c.replace(/\/?$/,"")+"/api/people-groups/statistics");if(P.ok){const p=await P.json();p&&typeof p.total=="number"&&(d.value=null)}}catch{}}return Rn(async()=>{if(t.value=await A(),!t.value){r.value="Could not load reached-neighbors.json",o.value=!0;return}w.value.includes(l.value)||(l.value=w.value[0]||l.value),o.value=!0,j()}),On(` - .fm-root { position:absolute; inset:0; display:flex; flex-direction:column; overflow:hidden; - background:radial-gradient(circle at 50% 42%, #16203a 0%, ${V_} 70%); color:#e5e7eb; - isolation:isolate; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - - /* top bar */ - .fm-top { position:absolute; top:12px; left:12px; right:12px; z-index:30; - display:flex; flex-wrap:wrap; gap:8px; align-items:center; pointer-events:none; } - .fm-top > * { pointer-events:auto; } - .fm-title { background:${z_}; color:#fff; font:700 12px/1 ui-monospace,monospace; - letter-spacing:.05em; text-transform:uppercase; padding:9px 13px; border-radius:9px; - box-shadow:0 2px 10px rgba(0,0,0,.4); } - .fm-select { background:#0e1730; border:1px solid #2b3b63; color:#dbe4f3; - font:600 12px/1 -apple-system,sans-serif; padding:8px 11px; border-radius:9px; cursor:pointer; max-width:240px; } - .fm-toggle { background:#0e1730; border:1px solid #2b3b63; color:#9fb3d9; - font:600 11px/1 ui-monospace,monospace; padding:8px 11px; border-radius:9px; cursor:pointer; - display:inline-flex; align-items:center; gap:7px; user-select:none; } - .fm-toggle.on { color:#fff; border-color:#3f7bd6; background:#13224a; } - .fm-toggle .fm-sw { width:9px; height:9px; border-radius:50%; background:#3f7bd6; opacity:.35; } - .fm-toggle.on .fm-sw { opacity:1; } - .fm-stats { margin-left:auto; font:600 11px/1.5 ui-monospace,monospace; color:#9fb3d9; - background:rgba(8,12,24,.7); border:1px solid #1c2742; border-radius:9px; padding:7px 11px; text-align:right; } - .fm-stats b { color:#fff; } - - /* canvas */ - .fm-stage { flex:1 1 0; position:relative; } - .fm-svg { position:absolute; inset:0; width:100%; height:100%; display:block; } - - .fm-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; - color:#9fb3d9; font:13px/1 ui-monospace,monospace; z-index:5; } - - /* svg node + link styling driven by classes */ - .fm-spoke { stroke:#3a4f86; stroke-width:1.4; fill:none; opacity:.5; transition:opacity .15s; } - .fm-spoke.strong { stroke:#5b7fd0; stroke-width:2; opacity:.7; } - .fm-spoke.dim { opacity:.06; } - .fm-mesh { stroke:#ffae66; stroke-width:1.3; fill:none; opacity:.5; stroke-linecap:round; transition:opacity .15s; } - .fm-mesh.lit { opacity:.92; stroke-width:2; } - .fm-mesh.dim { opacity:.05; } - .fm-petal { opacity:.13; transition:opacity .15s; } - .fm-petal.dim { opacity:.04; } - .fm-node { cursor:pointer; transition:opacity .15s; } - .fm-node.dim { opacity:.18; } - .fm-node circle { stroke:#0b1020; stroke-width:2; } - .fm-node.sel circle { stroke:#ffffff; stroke-width:3; } - .fm-node-label { fill:#cdd9f2; font:600 12px/1 -apple-system,sans-serif; paint-order:stroke; - stroke:#0b1020; stroke-width:3px; text-anchor:middle; pointer-events:none; } - .fm-center-glow { fill:${kr}; opacity:.16; } - .fm-center circle { fill:${kr}; stroke:#ffd9bd; stroke-width:3; } - .fm-center-name { fill:#fff; font:800 19px/1 -apple-system,sans-serif; text-anchor:middle; - paint-order:stroke; stroke:#7a2e00; stroke-width:3px; } - .fm-center-sub { fill:#ffe1cb; font:600 11px/1 ui-monospace,monospace; text-anchor:middle; } - - /* legend */ - .fm-legend { position:absolute; left:12px; bottom:38px; z-index:25; background:rgba(8,12,24,.82); - border:1px solid #1c2742; border-radius:10px; padding:10px 12px; max-width:230px; - box-shadow:0 4px 16px rgba(0,0,0,.45); } - .fm-legend h4 { font:700 9px/1 ui-monospace,monospace; letter-spacing:.12em; text-transform:uppercase; - color:#7e90b6; margin-bottom:8px; } - .fm-lrow { display:flex; align-items:center; gap:8px; padding:3px 0; font-size:11px; color:#c4d0e8; } - .fm-dot { width:12px; height:12px; border-radius:50%; flex:0 0 auto; } - .fm-line { width:18px; height:0; border-top:2px solid; flex:0 0 auto; } - - /* footer provenance (honesty contract) */ - .fm-footer { position:absolute; left:0; right:0; bottom:0; z-index:20; background:rgba(8,12,24,.86); - color:#8fa2c8; font:10px/1.4 ui-monospace,monospace; padding:6px 12px; - display:flex; flex-wrap:wrap; gap:3px 14px; align-items:center; border-top:1px solid #1c2742; } - .fm-footer b { color:#dbe4f3; } - - /* tooltip */ - .fm-tip { position:fixed; z-index:60; pointer-events:none; max-width:240px; - background:#0e1730; border:1px solid #34508c; border-radius:9px; padding:9px 11px; - box-shadow:0 6px 22px rgba(0,0,0,.55); font-size:11.5px; color:#dbe4f3; } - .fm-tip strong { font-size:13px; color:#fff; } - .fm-tip-sub { color:#ffae66; font:600 10px/1.3 ui-monospace,monospace; margin:2px 0 6px; } - .fm-tip-row { display:flex; gap:6px; line-height:1.5; } - .fm-tip-k { color:#7e90b6; min-width:56px; } - - @media (max-width:720px) { - .fm-stats { display:none; } - .fm-legend { max-width:170px; } - } -`,"flower-mesh"),(c,P)=>{var p,M,N,U,h,C;return z(),W("div",{class:"fm-root",onMousemove:Y},[f("div",C_,[P[9]||(P[9]=f("span",{class:"fm-title"},"My UPG Neighbor · Flower-Mesh",-1)),w.value.length?(z(),W("select",{key:0,class:"fm-select",value:l.value,onChange:na,"aria-label":"Select unreached target country"},[(z(!0),W(Aa,null,Ua(w.value,y=>(z(),W("option",{key:y,value:y},X(y),9,k_))),128))],40,j_)):fa("",!0),f("span",{class:Ia(["fm-toggle",{on:s.value}]),role:"switch","aria-checked":s.value,tabindex:"0",onClick:P[0]||(P[0]=y=>s.value=!s.value),onKeydown:[P[1]||(P[1]=Ys(Xn(y=>s.value=!s.value,["prevent"]),["enter"])),P[2]||(P[2]=Ys(Xn(y=>s.value=!s.value,["prevent"]),["space"]))]},[...P[3]||(P[3]=[f("span",{class:"fm-sw"},null,-1),ya(" language mesh ",-1)])],42,G_),L.value?(z(),W("span",v_,[f("b",null,X(sa.value.total),1),P[4]||(P[4]=ya(" reached neighbors · ",-1)),f("b",null,X(sa.value.countries),1),P[5]||(P[5]=ya(" countries",-1)),P[6]||(P[6]=f("br",null,null,-1)),f("b",null,X(Ma(q.value.upg)),1),P[7]||(P[7]=ya(" UPGs in center · ",-1)),f("b",null,X(sa.value.meshes),1),P[8]||(P[8]=ya(" mesh links ",-1))])):fa("",!0)]),f("div",A_,[o.value?r.value?(z(),W("div",E_,X(r.value),1)):(z(),W("svg",{key:2,class:"fm-svg",viewBox:`0 0 ${zt} ${zt}`,preserveAspectRatio:"xMidYMid meet",onClick:ba},[f("g",null,[(z(!0),W(Aa,null,Ua(O.value,y=>(z(),W("ellipse",{key:y.id,class:Ia(["fm-petal",{dim:g.value}]),cx:y.cx,cy:y.cy,rx:"78",ry:"40",fill:y.color,transform:`rotate(${y.rot} ${y.cx} ${y.cy})`},null,10,I_))),128))]),f("g",null,[(z(!0),W(Aa,null,Ua(v.value,y=>(z(),W("line",{key:y.id,class:Ia(["fm-spoke",{strong:y.strong,dim:!ga(y)}]),x1:y.x1,y1:y.y1,x2:y.x2,y2:y.y2,"stroke-dasharray":y.strong?"0":"5 5"},null,10,w_))),128))]),f("g",null,[(z(!0),W(Aa,null,Ua(K.value,y=>(z(),W("path",{key:y.id,class:Ia(["fm-mesh",{lit:ea(y)&&g.value,dim:g.value&&!ea(y)}]),d:y.d},null,10,x_))),128))]),f("g",null,[(z(!0),W(Aa,null,Ua(S.value,y=>(z(),W("g",{key:y.id,class:Ia(["fm-node",{dim:!Sa(y),sel:y.id===g.value}]),onClick:Xn(R=>aa(y),["stop"]),onMouseenter:R=>pa(y,R),onMouseleave:ta},[f("title",null,X(y.node.name)+" — "+X(Math.round(y.node.pct_christian||0))+"% Christian, "+X(y.node.lang),1),f("circle",{cx:y.x,cy:y.y,r:y.r,fill:y.color},null,8,N_),y.r>=9||y.id===g.value?(z(),W("text",{key:0,class:"fm-node-label",x:y.x,y:y.y+y.r+14},X(y.node.name),9,L_)):fa("",!0)],42,T_))),128))]),f("g",{class:"fm-center",onClick:Xn(ba,["stop"]),style:{cursor:"default"}},[f("circle",{class:"fm-center-glow",cx:k,cy:x,r:Tg+26},null,8,R_),f("circle",{cx:k,cy:x,r:Tg}),f("text",{class:"fm-center-name",x:k,y:x-2},X(q.value.name),9,$_),f("text",{class:"fm-center-sub",x:k,y:x+16},X(Ma(q.value.upg))+" UPGs",9,F_),f("text",{class:"fm-center-sub",x:k,y:x+30,style:{opacity:".85"}},X(ma(q.value.pop))+" people",9,K_)])],8,M_)):(z(),W("div",S_,"Growing the flower…")),o.value&&!r.value?(z(),W("div",B_,[P[12]||(P[12]=f("h4",null,"The flower",-1)),f("div",O_,[f("span",{class:"fm-dot",style:Ka({background:kr})},null,4),P[10]||(P[10]=ya(" Unreached target (unreached-2000)",-1))]),f("div",U_,[f("span",{class:"fm-dot",style:Ka({background:n(90)})},null,4),P[11]||(P[11]=ya(" Reached neighbor (deeper = more Christian)",-1))]),P[13]||(P[13]=As('
SEND path → into the unreached
via related language cluster
Same-language collaboration mesh
inner whorl = same country · petals = surrounding countries
',4))])):fa("",!0)]),f("div",H_,[P[14]||(P[14]=f("span",null,[f("b",null,"Flower-Mesh"),ya(" reached neighbor → unreached center")],-1)),P[15]||(P[15]=f("span",null,"center = unreached-2000 (live UPG data)",-1)),f("span",null,"neighbors = baked "+X(((M=(p=t.value)==null?void 0:p.meta)==null?void 0:M.generated)||"2026-06-12")+" (≥"+X(((U=(N=t.value)==null?void 0:N.meta)==null?void 0:U.threshold_pct_christian)||10)+"% Christian, "+X(((C=(h=t.value)==null?void 0:h.meta)==null?void 0:C.adjacency_km)||1500)+" km)",1),P[16]||(P[16]=f("span",null,"province N/A in source — finest grain = country (see RE)",-1)),P[17]||(P[17]=f("span",null,"Luke 10:2 · send laborers into the harvest",-1))]),_.value.show?(z(),W("div",{key:0,class:"fm-tip",style:Ka({left:_.value.x+14+"px",top:_.value.y+14+"px"}),innerHTML:_.value.html},null,12,D_)):fa("",!0)],32)}}},Y_=Object.freeze(Object.defineProperty({__proto__:null,default:Ng},Symbol.toStringTag,{value:"Module"})),W_={key:0,class:"lc-loading"},J_={class:"lc-top"},Z_={key:0,class:"lc-stats"},q_={key:1,class:"lc-legend"},X_={class:"lc-lrow"},Q_={class:"lc-lrow"},a5={key:2,class:"lc-panel"},n5={class:"lc-panel-head"},e5={class:"lc-h-lang"},i5={class:"lc-h-sub"},t5={class:"lc-panel-body"},o5={class:"lc-sec"},r5={key:0,class:"lc-chip"},l5={class:"lc-sec",style:{"margin-top":"10px"}},s5={key:1,class:"lc-muted"},c5={class:"lc-re-name"},g5={class:"lc-re-meta"},u5={key:3,class:"lc-footer"},d5=["innerHTML"],Vt="#e11d48",Ui="#9f1239",Yt="#002e6e",vr="#f59e0b",Ar="lc-clusters-src",Lg="lc-pins-src",Sr="lc-reached-src",Er="lc-links-src",xe="lc-clusters",Rg="lc-cluster-labels",$g="lc-pins",Mr="lc-reached",Fg="lc-links",Kg={__name:"lang-cluster",setup(a){function n(c){const P=+c||0;return P>=80?"#0f7a3d":P>=40?"#1f9d55":P>=15?"#5cb874":"#9bcf9b"}const e=Ya("profileConfig"),i=Ya("mapboxToken"),t=Ya("instanceId",null),o=la(()=>(e==null?void 0:e.value)||{});t!=null&&t.value||t||""+Date.now().toString(36)+Math.random().toString(36).slice(2,8);const r=ua(null),l=ua(null),s=ua(!1),g=ua("Loading people groups…"),d=ua([]),_=ua([]),k=ua(null),x=ua({show:!1,x:0,y:0,html:""}),D={India:[79,22],Pakistan:[69.3,30],Indonesia:[113,-1],Bangladesh:[90.3,23.7],China:[104,35],Japan:[138,37],Iran:[53,32],"Türkiye (Turkey)":[35,39],Egypt:[30,26.5],Nigeria:[8,9.5],Thailand:[101,15],Sudan:[30,15.5],Algeria:[3,28],Iraq:[44,33],"Myanmar (Burma)":[96,21],Afghanistan:[66,34],Yemen:[47.5,15.5],Morocco:[-6,32],Uzbekistan:[64,41.5],"Saudi Arabia":[45,24],Ethiopia:[39.5,9],Niger:[9,17.5],"Korea, North":[127,40],Nepal:[84,28.2],Mali:[-3.5,17],Somalia:[46.5,5.5],Malaysia:[108,3.5],Russia:[90,60],Cambodia:[105,12.7],Kazakhstan:[67,48],Senegal:[-14.5,14.5],"United States":[-98,39],Guinea:[-11,10.5],Tunisia:[9.5,34],Chad:[19,15.5],Tajikistan:[71,38.7],Jordan:[36.5,31],Azerbaijan:[47.5,40.3],Vietnam:[106,16],Israel:[35,31.3],Armenia:[45,40.2],Austria:[14.5,47.5],Bahrain:[50.6,26],Brunei:[114.7,4.5],Bulgaria:[25.5,42.7],"Burkina Faso":[-1.7,12.3],Cameroon:[12.5,6],Canada:[-106,56],"Cape Verde":[-23.6,16],"China, Hong Kong":[114.2,22.3],"China, Macau":[113.5,22.2],Cyprus:[33.2,35.1],"Côte d'Ivoire":[-5.5,7.5],Eritrea:[39,15.3],France:[2.5,47],Georgia:[43.5,42],Ghana:[-1,7.9],Greece:[22,39],"Guinea-Bissau":[-15,12],Italy:[12.5,42.5],Kenya:[38,.2],"Korea, South":[128,36.5],Kuwait:[47.7,29.3],Kyrgyzstan:[74.5,41.3],Lebanon:[35.8,33.9],Liberia:[-9.4,6.5],Moldova:[28.5,47.2],Oman:[56,21],Portugal:[-8,39.5],Qatar:[51.2,25.3],Serbia:[21,44],"Sierra Leone":[-11.8,8.5],Singapore:[103.8,1.35],"South Sudan":[31,7.5],Spain:[-3.7,40.3],Switzerland:[8.2,46.8],Syria:[38,35],Tanzania:[35,-6.3],Togo:[1,8.6],Turkmenistan:[59,39],Uganda:[32.5,1.4],Ukraine:[31,49],"United Arab Emirates":[54,24]};function T(c,P){const p=D[c];if(!p)return null;let M=0;const N=String(P||"");for(let U=0;U>8&255)/255-.5)*4]}const $=c=>String(c||"").trim().toLowerCase(),{map:w,initializeMap:L,destroy:E}=Kt({containerRef:l,accessToken:(i==null?void 0:i.value)||o.value.tk||"",style:o.value.style??"mapbox://styles/mapbox/light-v11",center:o.value.center??[55,22],zoom:o.value.zoom??1.7,minZoom:o.value.minZoom??1,maxZoom:o.value.maxZoom??12}),I=la(()=>{const c=d.value,P=new Set(c.filter(M=>M.scope==="province").map(M=>M.province)),p=new Set(c.map(M=>M.lang));return{clusters:c.length,pgs:c.reduce((M,N)=>M+N.count,0),provinces:P.size,langs:p.size,withReach:c.filter(M=>M.reached.length).length}}),G=la(()=>d.value.find(c=>c.key===k.value)||null);function S(c){return c&&typeof c=="object"?c.label??c.value??"":c??""}function v(c){return c&&typeof c=="object"?c.value??c.label??"":c??""}const K={"People's Republic of China":"China","Lao People’s Democratic Republic":"Laos","Lao People's Democratic Republic":"Laos"};function O(c){return K[c]||c}function q(c,P){const p=new Map;for(const N of c){const U=Number(N.latitude),h=Number(N.longitude),C=S(N.primary_language)||"(unknown language)",y=O(S(N.country_code)||"(unknown)"),R=N.slug||v(N.primary_language)+":"+N.name,H=P[R]||null,V=H?"province":"country",oa=H||y,Q=C+" · "+oa+(H?" ("+y+")":"");let m=p.get(Q);m||(m={key:Q,lang:C,rol3:v(N.primary_language)||"",country:y,province:H,scope:V,scopeName:oa,count:0,_sumLat:0,_sumLng:0,_n:0,members:[],reached:[]},p.set(Q,m)),m.count++,m.members.push({name:N.name,slug:R,lang:C,country:y}),isFinite(U)&&isFinite(h)&&(m._sumLat+=U,m._sumLng+=h,m._n++)}const M=[];for(const N of p.values())N._n&&(N.lat=N._sumLat/N._n,N.lng=N._sumLng/N._n,delete N._sumLat,delete N._sumLng,delete N._n,M.push(N));return M.sort((N,U)=>U.count-N.count),M}function sa(c,P){const p=new Set(P.map(y=>y.rol3).filter(Boolean)),M=new Set(P.map(y=>$(y.lang))),N=new Set,U=[],h=new Map,C=new Map;for(const y of Object.values(c.countries||{}))for(const R of y.neighbors||[]){const H=$(R.lang),V=R.rol3||"";if(!(V&&p.has(V))&&!M.has(H))continue;const Q=R.name+"|"+R.country+"|"+(V||H);if(N.has(Q))continue;N.add(Q);const m=Number(R.lng)&&Number(R.lat)?[Number(R.lng),Number(R.lat)]:T(R.country,Q);if(!m)continue;const b={name:R.name,country:R.country,lang:R.lang,rol3:V,lk:H,pct:R.pct_christian||0,pop:R.pop||0,lng:m[0],lat:m[1]};U.push(b),V&&(h.has(V)||h.set(V,[]),h.get(V).push(b)),C.has(H)||C.set(H,[]),C.get(H).push(b)}for(const y of P){const R=y.rol3?h.get(y.rol3)||[]:[],H=C.get($(y.lang))||[];y.reached=R.length&&H.length?[...new Set([...R,...H])]:R.length?R:H}return U}const ea=c=>({type:"FeatureCollection",features:c});function ga(){return ea(d.value.map(c=>({type:"Feature",geometry:{type:"Point",coordinates:[c.lng,c.lat]},properties:{key:c.key,lang:c.lang,count:c.count,scope:c.scope,hasReach:c.reached.length>0,label:c.lang+" ("+c.count+")"}})))}function Sa(){var P;const c=[];for(const p of d.value)for(const M of p.members){const U=T(p.country,M.slug)||[p.lng,p.lat];c.push({type:"Feature",geometry:{type:"Point",coordinates:[p.lng+(U[0]-(((P=D[p.country])==null?void 0:P[0])??U[0]))*.15,p.lat]},properties:{key:p.key}})}return ea(c)}function Ma(){const c=G.value,P=c&&c.rol3||"",p=c?$(c.lang):null;return ea(_.value.map(M=>({type:"Feature",geometry:{type:"Point",coordinates:[M.lng,M.lat]},properties:{name:M.name,country:M.country,lang:M.lang,pct:M.pct,color:n(M.pct),matched:c?P&&M.rol3===P||!!p&&M.lk===p:!1}})))}function ma(){const c=G.value;return ea(c?c.reached.map(P=>({type:"Feature",geometry:{type:"LineString",coordinates:[[c.lng,c.lat],[P.lng,P.lat]]},properties:{}})):[])}function pa(c,P,p){const M=c.getSource(P);M?M.setData(p):c.addSource(P,{type:"geojson",data:p})}function Y(){var P;const c=w.value;!c||!((P=c.isStyleLoaded)!=null&&P.call(c))||(pa(c,Er,ma()),pa(c,Lg,Sa()),pa(c,Sr,Ma()),pa(c,Ar,ga()),c.getLayer(Fg)||c.addLayer({id:Fg,type:"line",source:Er,paint:{"line-color":vr,"line-width":1.1,"line-opacity":.5,"line-dasharray":[2,2]}}),c.getLayer($g)||c.addLayer({id:$g,type:"circle",source:Lg,minzoom:3.6,paint:{"circle-radius":["interpolate",["linear"],["zoom"],3.6,1.6,8,4],"circle-color":Vt,"circle-opacity":.5}}),c.getLayer(Mr)||c.addLayer({id:Mr,type:"circle",source:Sr,paint:{"circle-radius":["case",["get","matched"],4.5,["interpolate",["linear"],["zoom"],1,2,6,3.5]],"circle-color":["get","color"],"circle-stroke-width":["case",["get","matched"],1.5,.5],"circle-stroke-color":["case",["get","matched"],vr,"#ffffff"],"circle-opacity":["case",["boolean",["feature-state","dim"],!1],.15,["case",["get","matched"],.95,.6]]}}),c.getLayer(xe)||c.addLayer({id:xe,type:"circle",source:Ar,paint:{"circle-radius":["interpolate",["linear"],["get","count"],1,7,25,16,80,26,130,34],"circle-color":Vt,"circle-opacity":["case",["==",["get","key"],["literal",""]],.6,.55],"circle-stroke-width":["case",["get","hasReach"],2.4,1],"circle-stroke-color":["case",["get","hasReach"],n(80),Ui]}}),c.getLayer(Rg)||c.addLayer({id:Rg,type:"symbol",source:Ar,minzoom:2.6,layout:{"text-field":["get","label"],"text-size":11,"text-offset":[0,1.3],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":Ui,"text-halo-color":"#ffffff","text-halo-width":1.4}}),ta())}function ta(){const c=w.value;!c||!c.getLayer(xe)||(c.setPaintProperty(xe,"circle-stroke-color",k.value?["case",["==",["get","key"],k.value],vr,["case",["get","hasReach"],n(80),Ui]]:["case",["get","hasReach"],n(80),Ui]),c.setPaintProperty(xe,"circle-stroke-width",k.value?["case",["==",["get","key"],k.value],4,["case",["get","hasReach"],2.4,1]]:["case",["get","hasReach"],2.4,1]))}function aa(c){k.value=k.value===c?null:c;const P=w.value;P&&(pa(P,Sr,Ma()),pa(P,Er,ma()),ta());const p=G.value;if(p&&P)try{let M=p.lng,N=p.lng,U=p.lat,h=p.lat;for(const C of p.reached)M=Math.min(M,C.lng),N=Math.max(N,C.lng),U=Math.min(U,C.lat),h=Math.max(h,C.lat);P.stop(),M===N&&U===h?P.easeTo({center:[p.lng,p.lat],zoom:4,duration:800}):P.fitBounds([[M,U],[N,h]],{padding:110,maxZoom:5.5,duration:800})}catch{}}function ba(){const c=G.value;if(!c)return;const P={target:c.country,language:c.lang,province:c.province||null,scope:c.scope,clusterKey:c.key};try{const M=r.value&&r.value.getRootNode&&r.value.getRootNode().host||r.value;M&&M.dispatchEvent(new CustomEvent("upgn:drill-flower",{bubbles:!0,composed:!0,detail:P}))}catch{}}function na(c){return String(c??"").replace(/[&<>"']/g,P=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[P])}function u(c){x.value.show&&(x.value.x=c.clientX,x.value.y=c.clientY)}async function A(c){for(const P of c)try{const p=await fetch(P);if(p.ok)return await p.json()}catch{}return null}async function j(){const c=o.value.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL);if(!c)throw new Error("No API base configured (apiBase / window.MAP_APP_API_URL / VITE_API_BASE_URL) — failing closed, no default host.");const p=c.replace(/\/?$/,"")+"/api/people-groups/list?fields="+"slug,name,latitude,longitude,country_code,primary_language,wagf_block,population"+"&lang=en",M=await fetch(p,{cache:"no-store"});if(!M.ok)throw new Error("list "+M.status);const N=await M.json();return N.posts||N.data||N.records||N.results||N.items||(Array.isArray(N)?N:[])}return Rn(async()=>{var C,y,R;await L();const c=w.value;try{c&&c.setProjection("mercator")}catch{}const P=o.value.dataBase||typeof window<"u"&&window.MAP_APP_BASE_URL||"",p=H=>P?P.replace(/\/?$/,"/")+"data/"+H:null,M=await A([o.value.adminUrl,p("admin1-membership.json")].filter(Boolean))||fg||{},N=await A([o.value.dataUrl,p("reached-neighbors.json")].filter(Boolean))||ee||{countries:{}};let U=[];try{U=await j()}catch(H){g.value="Live API unreachable — "+H.message,s.value=!0;return}d.value=q(U,M),_.value=sa(N,d.value),s.value=!0;try{window.__lcStats={reachedPins:_.value.length,matchedClusters:d.value.filter(H=>H.reached&&H.reached.length).length,totalClusters:d.value.length,matchedByRol3:_.value.filter(H=>H.rol3).length}}catch{}const h=()=>{Y(),c.on("click",xe,V=>{var Q;const oa=(Q=V.features)==null?void 0:Q[0];oa&&aa(oa.properties.key)});const H=(V,oa)=>{c.on("mouseenter",V,()=>{c.getCanvas().style.cursor="pointer"}),c.on("mouseleave",V,()=>{c.getCanvas().style.cursor="",x.value={...x.value,show:!1}}),c.on("mousemove",V,Q=>{var b;const m=(b=Q.features)==null?void 0:b[0];m&&(x.value={show:!0,x:Q.originalEvent.clientX,y:Q.originalEvent.clientY,html:oa(m.properties)})})};H(xe,V=>`${na(V.lang)}
${na(V.key)}
unreached ${V.count} groups
reached ${V.hasReach?"matching neighbors ✓":"none found"}
click → bounded set + flower
`),H(Mr,V=>`${na(V.name)}
${na(V.country)} · ${na(V.lang)}
reached ${Math.round(V.pct)}% Christian
`)};(C=c==null?void 0:c.isStyleLoaded)!=null&&C.call(c)?h():(y=c==null?void 0:c.once)==null||y.call(c,"load",h),(R=c==null?void 0:c.once)==null||R.call(c,"idle",()=>{s.value&&Y()})}),Ue(()=>{E()}),On(` - .lc-root { position:absolute; inset:0; display:flex; flex-direction:column; overflow:hidden; - background:#ffffff; color:#1f2937; isolation:isolate; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - .lc-map { position:absolute; inset:0; } - .lc-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; - background:#ffffff; color:${Yt}; font:13px/1 ui-monospace,monospace; z-index:5; } - - .lc-top { position:absolute; top:10px; left:10px; right:10px; z-index:30; display:flex; - flex-wrap:wrap; gap:8px; align-items:center; pointer-events:none; } - .lc-top > * { pointer-events:auto; } - .lc-title { background:${Yt}; color:#fff; font:700 12px/1 ui-monospace,monospace; - letter-spacing:.04em; text-transform:uppercase; padding:8px 12px; border-radius:8px; } - .lc-stats { margin-left:auto; background:rgba(255,255,255,.94); border:1px solid #d1d5db; - border-radius:8px; padding:7px 11px; font:600 11px/1.5 ui-monospace,monospace; color:#374151; text-align:right; } - .lc-stats b { color:${Ui}; } - - .lc-legend { position:absolute; left:10px; bottom:34px; z-index:25; background:rgba(255,255,255,.95); - border:1px solid #d1d5db; border-radius:10px; padding:9px 12px; max-width:240px; box-shadow:0 4px 14px rgba(0,0,0,.12); } - .lc-legend h4 { font:700 9px/1 ui-monospace,monospace; letter-spacing:.1em; text-transform:uppercase; color:#6b7280; margin-bottom:8px; } - .lc-lrow { display:flex; align-items:center; gap:8px; padding:3px 0; font-size:11px; color:#374151; } - .lc-dot { width:12px; height:12px; border-radius:50%; flex:0 0 auto; border:1px solid rgba(0,0,0,.25); } - - .lc-panel { position:absolute; top:52px; right:10px; bottom:34px; z-index:26; width:290px; max-width:48vw; - background:rgba(255,255,255,.98); border:1px solid #d1d5db; border-radius:10px; box-shadow:0 4px 16px rgba(0,0,0,.16); - display:flex; flex-direction:column; overflow:hidden; } - .lc-panel-head { padding:11px 13px; background:${Vt}; color:#fff; } - .lc-panel-head .lc-h-lang { font:800 15px/1.2 -apple-system,sans-serif; } - .lc-panel-head .lc-h-sub { margin-top:3px; font:600 11px/1.3 ui-monospace,monospace; color:#ffe4e6; } - .lc-panel-body { flex:1 1 0; overflow-y:auto; padding:9px 11px; } - .lc-sec { font:700 9px/1 ui-monospace,monospace; letter-spacing:.1em; text-transform:uppercase; color:#6b7280; margin:6px 0 6px; } - .lc-chip { display:inline-block; font:600 10px/1 ui-monospace,monospace; padding:3px 7px; border-radius:999px; - border:1px solid #d1d5db; color:#374151; background:#f9fafb; margin:0 4px 4px 0; } - .lc-re { border:1px solid #e5e7eb; border-radius:8px; padding:6px 8px; margin-bottom:5px; } - .lc-re-name { font:700 12px/1.2 -apple-system,sans-serif; color:#111827; display:flex; align-items:center; gap:6px; } - .lc-re-meta { margin-top:3px; font:11px/1.3 ui-monospace,monospace; color:#4b5563; } - .lc-drill { display:block; width:100%; margin-top:8px; padding:9px; border:0; border-radius:8px; cursor:pointer; - background:${Yt}; color:#fff; font:700 12px/1 -apple-system,sans-serif; } - .lc-drill:hover { background:#013a8a; } - .lc-muted { color:#6b7280; font-size:11px; padding:8px 2px; } - - .lc-footer { position:absolute; left:0; right:0; bottom:0; z-index:20; background:${Yt}; color:#dbe4f3; - font:10px/1.4 ui-monospace,monospace; padding:5px 12px; display:flex; flex-wrap:wrap; gap:3px 14px; align-items:center; } - .lc-footer b { color:#fff; } - - .lc-tip { position:fixed; z-index:60; pointer-events:none; max-width:240px; background:#0e1730; - border:1px solid #34508c; border-radius:9px; padding:9px 11px; box-shadow:0 6px 22px rgba(0,0,0,.5); font-size:11.5px; color:#dbe4f3; } - .lc-tip strong { font-size:13px; color:#fff; } - .lc-tip-sub { color:#fda4af; font:600 10px/1.3 ui-monospace,monospace; margin:2px 0 6px; } - .lc-tip-row { display:flex; gap:6px; line-height:1.5; } - .lc-tip-k { color:#7e90b6; min-width:64px; } - - @media (max-width:720px){ .lc-stats{ display:none; } .lc-panel{ width:210px; } .lc-legend{ max-width:160px; } } -`,"lang-cluster"),(c,P)=>(z(),W("div",{ref_key:"lcRoot",ref:r,class:"lc-root",onMousemove:u},[f("div",{ref_key:"mapContainer",ref:l,class:"lc-map"},null,512),s.value?fa("",!0):(z(),W("div",W_,X(g.value),1)),f("div",J_,[P[5]||(P[5]=f("span",{class:"lc-title"},"My UPG Neighbor · Language Clusters",-1)),s.value?(z(),W("span",Z_,[f("b",null,X(I.value.clusters),1),P[0]||(P[0]=ya(" language clusters · ",-1)),f("b",null,X(I.value.pgs),1),P[1]||(P[1]=ya(" unreached",-1)),P[2]||(P[2]=f("br",null,null,-1)),f("b",null,X(I.value.provinces),1),P[3]||(P[3]=ya(" IN/CN provinces · ",-1)),f("b",null,X(I.value.withReach),1),P[4]||(P[4]=ya(" with reached match ",-1))])):fa("",!0)]),s.value?(z(),W("div",q_,[P[8]||(P[8]=f("h4",null,"Bounded sets",-1)),f("div",X_,[f("span",{class:"lc-dot",style:Ka({background:Vt})},null,4),P[6]||(P[6]=ya(" Unreached language cluster (size = #groups)",-1))]),f("div",Q_,[f("span",{class:"lc-dot",style:Ka({background:n(80)})},null,4),P[7]||(P[7]=ya(" Reached neighbor (matched by language)",-1))]),P[9]||(P[9]=f("div",{class:"lc-lrow",style:{color:"#6b7280","font-size":"10px","margin-top":"4px"}},"green ring = cluster has a reached match · click a cluster to drill",-1))])):fa("",!0),s.value&&G.value?(z(),W("div",a5,[f("div",n5,[f("div",e5,X(G.value.lang),1),f("div",i5,X(G.value.scope==="province"?G.value.province+" · "+G.value.country:G.value.country),1)]),f("div",t5,[f("div",o5,"Bounded set — "+X(G.value.count)+" unreached groups",1),(z(!0),W(Aa,null,Ua(G.value.members.slice(0,18),(p,M)=>(z(),W("span",{key:M,class:"lc-chip"},X(p.name),1))),128)),G.value.members.length>18?(z(),W("span",r5,"+"+X(G.value.members.length-18)+" more",1)):fa("",!0),f("div",l5,"Reached neighbors (same language) — "+X(G.value.reached.length),1),G.value.reached.length?fa("",!0):(z(),W("div",s5,"No reached people-group shares this language in the baked set. A frontier — pray for laborers (Luke 10:2).")),(z(!0),W(Aa,null,Ua(G.value.reached,(p,M)=>(z(),W("div",{key:"r"+M,class:"lc-re"},[f("div",c5,[f("span",{class:"lc-dot",style:Ka({background:n(p.pct)})},null,4),ya(X(p.name),1)]),f("div",g5,X(p.country)+" · "+X(Math.round(p.pct))+"% Christian · "+X(p.lang),1)]))),128)),f("button",{class:"lc-drill",onClick:ba},"Open flower view ▸")])])):fa("",!0),s.value?(z(),W("div",u5,[P[10]||(P[10]=f("span",null,[f("b",null,"Language clusters"),ya(" red unreached · green reached-by-language")],-1)),f("span",null,"unreached = LIVE UPG data ("+X(I.value.pgs)+")",1),P[11]||(P[11]=f("span",null,"IN/CN province = real ADM1 (my-upg-100-list point-in-polygon)",-1)),P[12]||(P[12]=f("span",null,"reached = baked reached-neighbors",-1)),P[13]||(P[13]=f("span",null,"Luke 10:2 · bounded sets → flowers",-1))])):fa("",!0),x.value.show?(z(),W("div",{key:4,class:"lc-tip",style:Ka({left:x.value.x+14+"px",top:x.value.y+14+"px"}),innerHTML:x.value.html},null,12,d5)):fa("",!0)],544))}},p5=Object.freeze(Object.defineProperty({__proto__:null,default:Kg},Symbol.toStringTag,{value:"Module"})),Wt={churches:[{name:"Antioch Fellowship",lat:13.08,lng:80.27,region:"Chennai, India",network:"South Asia Partners"},{name:"Cornerstone Church",lat:-1.29,lng:36.82,region:"Nairobi, Kenya",network:"East Africa Network"},{name:"Living Hope Church",lat:14.6,lng:120.98,region:"Manila, Philippines",network:"Southeast Asia Partners"},{name:"Grace Harbor Church",lat:34.05,lng:-118.24,region:"Los Angeles, USA",network:"North America Sending"},{name:"Redeemer Fellowship",lat:51.51,lng:-.13,region:"London, United Kingdom",network:"Europe Partners"},{name:"New Life Church",lat:-23.55,lng:-46.63,region:"Sao Paulo, Brazil",network:"Latin America Network"},{name:"Emmanuel Church",lat:37.57,lng:126.98,region:"Seoul, South Korea",network:"East Asia Sending"},{name:"Bethel Community",lat:6.52,lng:3.38,region:"Lagos, Nigeria",network:"West Africa Network"}]},m5={class:"sn-map-area"},h5={key:0,class:"sn-loading"},y5={class:"sn-top"},b5=["value"],_5=["value"],f5=["aria-pressed"],P5={class:"sn-legend"},C5={class:"sn-legend-row"},j5={class:"sn-legend-row"},k5={class:"sn-legend-row"},G5={key:1,class:"sn-panel"},v5={class:"sn-panel-head"},A5={class:"sn-target"},S5={class:"sn-sub"},E5={class:"sn-panel-body"},M5=["onClick"],I5={class:"sn-sender-name"},w5={class:"sn-sender-meta"},x5={class:"sn-chip pct"},T5={class:"sn-chip bridge"},N5={class:"sn-chip adj"},L5={class:"sn-chip"},R5={key:0,style:{padding:"14px","font-size":"12px",color:"#6b7280"}},$5={class:"sn-footer"},Jt="#FF6600",te="#002e6e",Bg="#1f9d55",F5="#9bcf9b",Hi="#7c3aed",Og="sn-arrows-src",Ir="sn-senders-src",wr="sn-target-src",Ug="sn-targets-all-src",Hg="sn-arrows",Di="sn-senders",Dg="sn-sender-labels",zg="sn-target",Vg="sn-target-label",Pe="sn-targets-all",Zt="sn-churches-src",ei="sn-churches",qt="sn-church-labels",Yg={__name:"send-map",setup(a){var ta,aa,ba,na,u,A;On(` - .sn-root { position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;background:#ffffff;color:#1f2937;isolation:isolate; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - .sn-map-area { flex:1 1 0;position:relative;overflow:hidden; } - .sn-map-canvas { position:absolute;inset:0; } - .sn-loading { position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#ffffff;color:${te};font-size:13px;z-index:5; } - - /* ── Top bar: title + target selector ── */ - .sn-top { position:absolute;top:10px;left:10px;z-index:30;display:flex;flex-wrap:wrap;gap:8px;align-items:center; } - .sn-title { background:${te};color:#fff;font:700 12px/1 ui-monospace,monospace;letter-spacing:.04em;text-transform:uppercase;padding:8px 12px;border-radius:8px; } - .sn-select { background:#fff;border:1px solid ${te};color:${te};font:600 12px/1 -apple-system,sans-serif;padding:7px 10px;border-radius:8px;cursor:pointer;max-width:240px; } - .sn-toggle { background:${Hi};border:1px solid ${Hi};color:#fff;font:700 11px/1 ui-monospace,monospace;letter-spacing:.03em;padding:8px 11px;border-radius:8px;cursor:pointer; } - .sn-toggle.off { background:#fff;color:${Hi}; } - - /* ── Left: 4-D JOIN legend (the gate the connectors pass through) ── */ - .sn-legend { position:absolute;top:58px;left:10px;z-index:25;background:rgba(255,255,255,0.95);border:1px solid #d1d5db;border-radius:10px;padding:9px 12px;box-shadow:0 4px 14px rgba(0,0,0,0.12);max-width:230px; } - .sn-legend h4 { font:700 9px/1 ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;color:#6b7280;margin-bottom:8px; } - .sn-legend-row { display:flex;align-items:flex-start;gap:7px;padding:3px 0;font-size:11px;color:#374151;line-height:1.3; } - .sn-dot { width:11px;height:11px;border-radius:50%;flex:0 0 auto;border:1px solid rgba(0,0,0,0.35);margin-top:1px; } - .sn-legend .sn-num { font-weight:700;color:${te};flex:0 0 auto; } - - /* ── Right: worked sender table for the selected target ── */ - .sn-panel { position:absolute;top:10px;right:10px;bottom:42px;z-index:25;width:280px;max-width:46vw;background:rgba(255,255,255,0.97);border:1px solid #d1d5db;border-radius:10px;box-shadow:0 4px 14px rgba(0,0,0,0.12);display:flex;flex-direction:column;overflow:hidden; } - .sn-panel-head { padding:10px 12px;border-bottom:1px solid #e5e7eb;background:${te};color:#fff; } - .sn-panel-head .sn-target { font:700 13px/1.2 -apple-system,sans-serif; } - .sn-panel-head .sn-sub { margin-top:4px;font:11px/1.3 ui-monospace,monospace;color:#c7d2fe; } - .sn-panel-body { flex:1 1 0;overflow-y:auto;padding:6px 8px; } - .sn-sender { border:1px solid #e5e7eb;border-radius:8px;padding:7px 9px;margin-bottom:6px;cursor:pointer;transition:border-color .12s,box-shadow .12s; } - .sn-sender:hover { border-color:${Jt};box-shadow:0 2px 8px rgba(255,102,0,0.18); } - .sn-sender-name { font:700 12px/1.2 -apple-system,sans-serif;color:#111827;display:flex;align-items:center;gap:6px; } - .sn-sender-meta { margin-top:4px;display:flex;flex-wrap:wrap;gap:4px; } - .sn-chip { font:600 10px/1 ui-monospace,monospace;padding:3px 6px;border-radius:999px;border:1px solid #d1d5db;color:#374151;background:#f9fafb; } - .sn-chip.pct { color:#0b5e33;background:#e7f6ec;border-color:#b7e0c4; } - .sn-chip.bridge { color:${te};background:#e7edf8;border-color:#c2d2ee; } - .sn-chip.adj { color:#7a3e00;background:#fdeedd;border-color:#f3d4ac; } - - /* ── Footer: provenance (honesty contract, spec §3 + §5) ── */ - .sn-footer { flex:0 0 auto;background:${te};color:#dbe4f3;font:10px/1.4 ui-monospace,monospace;padding:6px 12px;display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center; } - .sn-footer strong { color:#fff; } - - @media(max-width:760px){ - .sn-panel { width:200px; } - .sn-legend { max-width:180px; } - } -`,"send-map");const n=Ya("profileConfig"),e=Ya("mapboxToken"),i=Ya("instanceId",null);i!=null&&i.value||i||""+Date.now().toString(36)+Math.random().toString(36).slice(2,8);const t=ua(null),o=ua(null),r=ua(!1),l=ua(null),s=ua(((ta=n==null?void 0:n.value)==null?void 0:ta.target)??"India"),g=ua(!0),d={India:[79,22],Pakistan:[69.3,30],Indonesia:[113,-1],Bangladesh:[90.3,23.7],China:[104,35],Japan:[138,37],Iran:[53,32],"Türkiye (Turkey)":[35,39],Egypt:[30,26.5],Nigeria:[8,9.5],Thailand:[101,15],Sudan:[30,15.5],Algeria:[3,28],Iraq:[44,33],"Myanmar (Burma)":[96,21],Afghanistan:[66,34],Yemen:[47.5,15.5],Morocco:[-6,32],Uzbekistan:[64,41.5],"Saudi Arabia":[45,24],Ethiopia:[39.5,9],Niger:[9,17.5],"Korea, North":[127,40],Nepal:[84,28.2],Mali:[-3.5,17],Somalia:[46.5,5.5],Malaysia:[108,3.5],Russia:[90,60],Cambodia:[105,12.7],Kazakhstan:[67,48],Senegal:[-14.5,14.5],"United States":[-98,39],Guinea:[-11,10.5],Tunisia:[9.5,34],Chad:[19,15.5],Tajikistan:[71,38.7],Jordan:[36.5,31],Azerbaijan:[47.5,40.3],Vietnam:[106,16],Israel:[35,31.3],Armenia:[45,40.2],Austria:[14.5,47.5],Bahrain:[50.6,26],Brunei:[114.7,4.5],Bulgaria:[25.5,42.7],"Burkina Faso":[-1.7,12.3],Cameroon:[12.5,6],Canada:[-106,56],"Cape Verde":[-23.6,16],"China, Hong Kong":[114.2,22.3],"China, Macau":[113.5,22.2],Cyprus:[33.2,35.1],"Côte d'Ivoire":[-5.5,7.5],Eritrea:[39,15.3],France:[2.5,47],Georgia:[43.5,42],Ghana:[-1,7.9],Greece:[22,39],"Guinea-Bissau":[-15,12],Italy:[12.5,42.5],Kenya:[38,.2],"Korea, South":[128,36.5],Kuwait:[47.7,29.3],Kyrgyzstan:[74.5,41.3],Lebanon:[35.8,33.9],Liberia:[-9.4,6.5],Moldova:[28.5,47.2],Oman:[56,21],Portugal:[-8,39.5],Qatar:[51.2,25.3],Serbia:[21,44],"Sierra Leone":[-11.8,8.5],Singapore:[103.8,1.35],"South Sudan":[31,7.5],Spain:[-3.7,40.3],Syria:[38,35],Tanzania:[35,-6.3],Togo:[1,8.6],Turkmenistan:[59,39],Uganda:[32.5,1.4],Ukraine:[31,49],"United Arab Emirates":[54,24]};function _(j,c){const P=d[j];if(!P)return null;let p=0;const M=String(c||"");for(let h=0;h>8&255)/255-.5)*3.2;return[P[0]+N,P[1]+U]}const{map:k,initializeMap:x,destroy:D}=Kt({containerRef:o,accessToken:e.value,style:((aa=n==null?void 0:n.value)==null?void 0:aa.style)??"mapbox://styles/mapbox/light-v11",center:((ba=n==null?void 0:n.value)==null?void 0:ba.center)??[60,25],zoom:((na=n==null?void 0:n.value)==null?void 0:na.zoom)??2.4,minZoom:((u=n==null?void 0:n.value)==null?void 0:u.minZoom)??1,maxZoom:((A=n==null?void 0:n.value)==null?void 0:A.maxZoom)??12}),T=la(()=>l.value?Object.keys(l.value.countries):[]),$=la(()=>{var j,c;return((c=(j=l.value)==null?void 0:j.countries)==null?void 0:c[s.value])??null}),w=la(()=>{const j=$.value;return j?[...j.neighbors||[]].filter(c=>d[c.country]).sort((c,P)=>(P.pct_christian||0)-(c.pct_christian||0)):[]});function L(j){return j>=50?Bg:F5}function E(){var P;const j=l.value;if(!j)return G([]);const c=[];for(const p of Object.keys(j.countries)){const M=d[p];M&&c.push({type:"Feature",geometry:{type:"Point",coordinates:M},properties:{name:p,kind:"target",upg:((P=j.countries[p])==null?void 0:P.target_upg)||0}})}return G(c)}function I(){if(!$.value)return{arrows:G([]),senders:G([]),target:G([])};const c=d[s.value]||[60,25],P={type:"Feature",geometry:{type:"Point",coordinates:c},properties:{name:s.value,kind:"target"}},p=[],M=[];for(const N of w.value){const U=_(N.country,N.name+N.lang);U&&(p.push({type:"Feature",geometry:{type:"Point",coordinates:U},properties:{name:N.name,country:N.country,pct:N.pct_christian||0,color:L(N.pct_christian||0)}}),M.push({type:"Feature",geometry:{type:"LineString",coordinates:[U,c]},properties:{bridge:N.bridge,adjacency:N.adjacency}}))}return{arrows:G(M),senders:G(p),target:G([P])}}function G(j){return{type:"FeatureCollection",features:j}}function S(){const j=Array.isArray(Wt==null?void 0:Wt.churches)?Wt.churches:[],c=[];for(const P of j){const p=Number(P.lng),M=Number(P.lat);!Number.isFinite(p)||!Number.isFinite(M)||c.push({type:"Feature",geometry:{type:"Point",coordinates:[p,M]},properties:{name:P.name||"Church",region:P.region||"",network:P.network||""}})}return G(c)}function v(j){if(!j||j.getLayer(ei))return;ga(j,Zt,S()),j.addLayer({id:ei,type:"circle",source:Zt,paint:{"circle-color":Hi,"circle-radius":["interpolate",["linear"],["zoom"],1,5,5,8,9,12],"circle-stroke-width":2,"circle-stroke-color":"#ffffff","circle-opacity":.95}}),j.addLayer({id:qt,type:"symbol",source:Zt,layout:{"text-field":"✝","text-size":["interpolate",["linear"],["zoom"],1,8,9,14],"text-allow-overlap":!0,"text-offset":[0,.05]},paint:{"text-color":"#ffffff"}}),j.addLayer({id:qt+"-name",type:"symbol",source:Zt,minzoom:3,layout:{"text-field":["get","name"],"text-size":11,"text-offset":[0,1.3],"text-anchor":"top","text-allow-overlap":!1},paint:{"text-color":"#4c1d95","text-halo-color":"#ffffff","text-halo-width":1.4}});const c=typeof window<"u"?window.mapboxgl:null;j.on("click",ei,P=>{var U;const p=(U=P.features)==null?void 0:U[0];if(!p||!c)return;const M=p.properties||{},N='
✝ '+K(M.name)+"
"+(M.network?'
'+K(M.network)+"
":"")+(M.region?'
'+K(M.region)+"
":"")+"
";new c.Popup({maxWidth:"260px",offset:10}).setLngLat(p.geometry.coordinates).setHTML(N).addTo(j)}),j.on("mouseenter",ei,()=>{j.getCanvas().style.cursor="pointer"}),j.on("mouseleave",ei,()=>{j.getCanvas().style.cursor=""}),O(j)}function K(j){return String(j??"").replace(/[&<>"]/g,c=>({"&":"&","<":"<",">":">",'"':"""})[c])}function O(j){if(!j)return;const c=g.value?"visible":"none";for(const P of[ei,qt,qt+"-name"])j.getLayer(P)&&j.setLayoutProperty(P,"visibility",c)}function q(){g.value=!g.value,O(k.value)}function sa(){var M;const j=k.value;if(!j||!((M=j.isStyleLoaded)!=null&&M.call(j)))return;const{arrows:c,senders:P,target:p}=I();ga(j,Og,c),ga(j,Ir,P),ga(j,wr,p),ga(j,Ug,E()),j.getLayer(Pe)||j.addLayer({id:Pe,type:"circle",source:Ug,paint:{"circle-color":Jt,"circle-radius":["interpolate",["linear"],["zoom"],1,5,5,9,9,13],"circle-stroke-width":1.5,"circle-stroke-color":"#ffffff"}}),j.getLayer(Hg)||j.addLayer({id:Hg,type:"line",source:Og,layout:{"line-cap":"round"},paint:{"line-color":te,"line-width":1.4,"line-opacity":.55,"line-dasharray":[2,2]}}),j.getLayer(Di)||j.addLayer({id:Di,type:"circle",source:Ir,paint:{"circle-color":["get","color"],"circle-radius":["interpolate",["linear"],["zoom"],1,2.5,5,4,9,6],"circle-stroke-width":.8,"circle-stroke-color":"#ffffff","circle-opacity":.92}}),j.getLayer(Dg)||j.addLayer({id:Dg,type:"symbol",source:Ir,minzoom:3.4,layout:{"text-field":["get","name"],"text-size":10,"text-offset":[0,1.1],"text-anchor":"top","text-allow-overlap":!1},paint:{"text-color":"#0b5e33","text-halo-color":"#ffffff","text-halo-width":1.3}}),j.getLayer(zg)||j.addLayer({id:zg,type:"circle",source:wr,paint:{"circle-color":Jt,"circle-radius":["interpolate",["linear"],["zoom"],1,8,5,13,9,18],"circle-stroke-width":2.5,"circle-stroke-color":"#ffffff","circle-opacity":.95}}),j.getLayer(Vg)||j.addLayer({id:Vg,type:"symbol",source:wr,layout:{"text-field":["get","name"],"text-size":13,"text-font":["DIN Offc Pro Bold","Arial Unicode MS Bold"],"text-offset":[0,-1.4],"text-anchor":"bottom","text-allow-overlap":!0},paint:{"text-color":"#8a3800","text-halo-color":"#ffffff","text-halo-width":1.6}}),ea(j)}function ea(j){if(!j||!j.getLayer(Pe))return;const c=s.value;j.setPaintProperty(Pe,"circle-opacity",c?["case",["==",["get","name"],c],0,.28]:.9),j.setPaintProperty(Pe,"circle-stroke-opacity",c?["case",["==",["get","name"],c],0,.5]:.9)}function ga(j,c,P){j.getSource(c)?j.getSource(c).setData(P):j.addSource(c,{type:"geojson",data:P})}function Sa(){const j=k.value;if(!j)return;const c=d[s.value];if(!c)return;let P=c[0],p=c[0],M=c[1],N=c[1];for(const U of w.value){const h=d[U.country];h&&(P=Math.min(P,h[0]),p=Math.max(p,h[0]),M=Math.min(M,h[1]),N=Math.max(N,h[1]))}try{j.stop(),P===p&&M===N?j.easeTo({center:c,zoom:4,duration:900}):j.fitBounds([[P,M],[p,N]],{padding:90,maxZoom:5.5,duration:900})}catch{}}function Ma(j){!j||!d[j]||(s.value=j,sa(),Sa())}function ma(j){Ma(j.target.value)}function pa(j){const c=k.value,P=d[j.country];if(!(!c||!P))try{c.stop(),c.easeTo({center:P,zoom:4.5,duration:800})}catch{}}async function Y(){var c;const j=(c=n==null?void 0:n.value)==null?void 0:c.dataUrl;if(j)try{const P=await fetch(j);if(P.ok)return await P.json()}catch{}return ee}return Rn(async()=>{var P,p,M,N,U,h;await x();const j=k.value;try{j&&j.setProjection("mercator")}catch{}if((P=n==null?void 0:n.value)!=null&&P.debugExpose&&typeof window<"u")try{(((N=(M=(p=t.value)==null?void 0:p.getRootNode)==null?void 0:M.call(p))==null?void 0:N.host)||window).__sendmap=j}catch{}if(l.value=await Y(),!l.value){r.value=!0;return}T.value.includes(s.value)||(s.value=T.value[0]||s.value);const c=()=>{sa(),v(j),j.on("click",Pe,C=>{var R;const y=(R=C.features)==null?void 0:R[0];y&&Ma(y.properties.name)}),j.on("mouseenter",Pe,()=>{j.getCanvas().style.cursor="pointer"}),j.on("mouseleave",Pe,()=>{j.getCanvas().style.cursor=""}),j.on("click",Di,C=>{var R;const y=(R=C.features)==null?void 0:R[0];if(y)try{j.stop(),j.easeTo({center:y.geometry.coordinates,zoom:4.5,duration:800})}catch{}}),j.on("mouseenter",Di,()=>{j.getCanvas().style.cursor="pointer"}),j.on("mouseleave",Di,()=>{j.getCanvas().style.cursor=""}),Sa(),r.value=!0};(U=j==null?void 0:j.isStyleLoaded)!=null&&U.call(j)?c():(h=j==null?void 0:j.once)==null||h.call(j,"load",c)}),Ue(()=>{D()}),(j,c)=>{var P,p,M,N,U,h;return z(),W("div",{ref_key:"snRoot",ref:t,class:"sn-root"},[f("div",m5,[f("div",{ref_key:"mapContainer",ref:o,class:"sn-map-canvas"},null,512),r.value?fa("",!0):(z(),W("div",h5,"Loading SEND map…")),f("div",y5,[c[0]||(c[0]=f("span",{class:"sn-title"},"Church Map · My UPG Neighbor",-1)),T.value.length?(z(),W("select",{key:0,class:"sn-select",value:s.value,onChange:ma,"aria-label":"Select unreached target country"},[(z(!0),W(Aa,null,Ua(T.value,C=>(z(),W("option",{key:C,value:C},X(C),9,_5))),128))],40,b5)):fa("",!0),f("button",{class:Ia(["sn-toggle",{off:!g.value}]),onClick:q,"aria-pressed":g.value,"aria-label":"Toggle partnering churches layer"}," ✝ Churches "+X(g.value?"on":"off"),11,f5)]),f("div",P5,[c[4]||(c[4]=As('

4-D SEND join

1·Adjacency — same-country, else neighbor ≤1500 km
2·Language pair — same language (strong) / cluster (soft)
3·Reached % — sender ≥10% Christian (more = more laborers)
4·Lower pressure — sender from a freer place
',6)),f("div",C5,[f("span",{class:"sn-dot",style:Ka({background:Jt})},null,4),c[1]||(c[1]=f("span",null,[ya("Unreached target — "),f("strong",null,"click one"),ya(" to SEND-focus")],-1))]),f("div",j5,[f("span",{class:"sn-dot",style:Ka({background:Bg})},null,4),c[2]||(c[2]=f("span",null,"Reached sender (SEND →) — who we mobilize",-1))]),f("div",k5,[f("span",{class:"sn-dot",style:Ka({background:Hi})},null,4),c[3]||(c[3]=f("span",null,[f("strong",null,"Partnering church"),ya(" — the network (click for details)")],-1))])]),$.value?(z(),W("div",G5,[f("div",v5,[f("div",A5,X(s.value),1),f("div",S5,X(($.value.target_upg||0).toLocaleString())+" UPGs · "+X(w.value.length)+" reached senders ",1)]),f("div",E5,[(z(!0),W(Aa,null,Ua(w.value,(C,y)=>(z(),W("div",{key:C.name+y,class:"sn-sender",onClick:R=>pa(C)},[f("div",I5,[f("span",{class:"sn-dot",style:Ka({background:L(C.pct_christian||0)})},null,4),ya(" "+X(C.name),1)]),f("div",w5,[f("span",x5,X(Math.round(C.pct_christian||0))+"% Christian",1),f("span",T5,X(C.bridge),1),f("span",N5,X(C.adjacency),1),f("span",L5,X(C.lang),1)])],8,M5))),128)),w.value.length?fa("",!0):(z(),W("div",R5," No qualifying reached senders with a known country centroid for this target. "))])])):fa("",!0),f("div",$5,[c[5]||(c[5]=f("span",null,[f("strong",null,"SEND"),ya(" reached neighbor → unreached target")],-1)),c[6]||(c[6]=f("span",null,"target = LIVE (JP UnreachedPeoplesByCountry)",-1)),f("span",null,"senders = baked "+X(((p=(P=l.value)==null?void 0:P.meta)==null?void 0:p.generated)||"2026-06-12")+" (≥"+X(((N=(M=l.value)==null?void 0:M.meta)==null?void 0:N.threshold_pct_christian)||10)+"% Christian, "+X(((h=(U=l.value)==null?void 0:U.meta)==null?void 0:h.adjacency_km)||1500)+" km)",1),c[7]||(c[7]=f("span",null,"Hab 2:2 · mobilize existing laborers",-1)),c[8]||(c[8]=f("span",null,"chain: UPG-100 → FPG base → My UPG Neighbor",-1))])])],512)}}},K5=Object.freeze(Object.defineProperty({__proto__:null,default:Yg},Symbol.toStringTag,{value:"Module"})),Wg="adoptionStatus",oe={notAdopted:"#e74c3c",hasAdoption:"#22c55e"},B5=oe,xr={notAdopted:"Needs Adoption",hasAdopted:"Has Adoption"},O5=xr;function Jg(a){var i;const n=a.adoptionStatus??((i=a._raw)==null?void 0:i.adopted_by_churches);return n===!0||n===1||typeof n=="number"&&n>0||typeof n=="object"&&(n==null?void 0:n.value)?oe.hasAdoption:oe.notAdopted}function Tr({colorSource:a="properties"}={}){const n=a==="feature-state"?["feature-state","adoptionStatus"]:["get","adoptionStatus"];return["case",["==",n,!0],oe.hasAdoption,["==",n,1],oe.hasAdoption,oe.notAdopted]}const Zg=Tr,U5=Object.freeze(Object.defineProperty({__proto__:null,ADOPTION_COLORS:B5,ADOPTION_LABELS:O5,LABELS:xr,PALETTE:oe,PROPERTY_KEY:Wg,applyColor:Tr,buildColorExpression:Zg,default:{name:"Adoption Progress",propertyKey:Wg,palette:oe,colors:oe,labels:xr,getColor:Jg,applyColor:Tr,buildColorExpression:Zg},getColor:Jg},Symbol.toStringTag,{value:"Module"})),Nr="affinityBlock",ii="#95a5a6",re={A001:"Arab World",A002:"East Asian Peoples",A003:"Eurasian Peoples",A004:"Horn of Africa Peoples",A005:"Jewish",A006:"Malay Peoples",A007:"Persian-Median Peoples",A008:"South Asian Peoples",A009:"North American Peoples",A010:"Pacific Islanders",A011:"Southeast Asian Peoples",A012:"Sub-Saharan Peoples",A013:"Tibetan-Himalayan Peoples",A014:"Turkic Peoples",A015:"Latin-Caribbean Americans",A017:"Deaf"},Xt={A001:"#E74C3C",A002:"#3498DB",A003:"#2ECC71",A004:"#F39C12",A005:"#9B59B6",A006:"#1ABC9C",A007:"#E67E22",A008:"#34495E",A009:"#95A5A6",A010:"#5DADE2",A011:"#16A085",A012:"#C0392B",A013:"#8E44AD",A014:"#D35400",A015:"#27AE60",A017:"#000000"},Ce=Xt,qg=Object.entries(re).reduce((a,[n,e])=>(a[e]=n,a),{}),Lr=Object.entries(re).reduce((a,[n,e])=>(a[e]=Ce[n],a),{}),Xg=re;function Rr(a){return re[a]||"Unknown"}function $r(a){return Ce[a]||ii}function Qg(a){return a?typeof a=="string"&&/^A\d{3}$/.test(a)?Ce[a]||ii:Lr[a]||ii:ii}function au(){return Object.entries(re).map(([a,n])=>({code:a,name:n,color:Ce[a]}))}function nu(a){return{code:a,name:re[a]||"Unknown",color:Ce[a]||ii}}function eu(a){var e;const n=a.affinityBlock||((e=a._raw)==null?void 0:e.ROP1);return $r(n)}function iu(a){var e;const n=a.affinityBlock||((e=a._raw)==null?void 0:e.ROP1);return Rr(n)}function Fr(){const a=["match",["get",Nr]];return Object.entries(Ce).forEach(([n,e])=>{a.push(n,e)}),a.push(ii),a}const tu=Fr,H5=Object.freeze(Object.defineProperty({__proto__:null,AFFINITY_BLOCK_COLORS:Ce,AFFINITY_BLOCK_COLORS_BY_NAME:Lr,AFFINITY_BLOCK_NAMES:re,AFFINITY_BLOCK_NAME_TO_CODE:qg,NAMES:Xg,PALETTE:Xt,PROPERTY_KEY:Nr,affinityBlockCodeLookup:re,affinityBlockCodeToColor:Ce,affinityBlockCodeToName:re,affinityBlockColors:Lr,affinityBlockNameToCode:qg,applyColor:Fr,buildColorExpression:tu,default:{name:"Affinity Block",propertyKey:Nr,palette:Xt,colors:Xt,names:Xg,getColor:eu,applyColor:Fr,buildColorExpression:tu,getName:iu,getAffinityBlockName:Rr,getAffinityBlockColor:Qg,getAffinityBlockColorByCode:$r,getAffinityBlocksArray:au,getAffinityBlockData:nu},getAffinityBlockColor:Qg,getAffinityBlockColorByCode:$r,getAffinityBlockData:nu,getAffinityBlockName:Rr,getAffinityBlocksArray:au,getColor:eu,getName:iu},Symbol.toStringTag,{value:"Module"})),ou="engagementStatus",le={notEngaged:"#e74c3c",hasEngagement:"#22c55e"},D5=le,Kr={notEngaged:"Unengaged",hasEngagement:"Engaged"},z5=Kr;function ru(a){var i;const n=a.engagementStatus??((i=a._raw)==null?void 0:i.people_committed);return n===!0||n===1||typeof n=="number"&&n>0||typeof n=="object"&&(n==null?void 0:n.value)?le.hasEngagement:le.notEngaged}function Br({colorSource:a="properties"}={}){const n=a==="feature-state"?["feature-state","engagementStatus"]:["get","engagementStatus"];return["case",["==",n,!0],le.hasEngagement,["==",n,1],le.hasEngagement,le.notEngaged]}const lu=Br,V5=Object.freeze(Object.defineProperty({__proto__:null,ENGAGEMENT_COLORS:D5,ENGAGEMENT_LABELS:z5,LABELS:Kr,PALETTE:le,PROPERTY_KEY:ou,applyColor:Br,buildColorExpression:lu,default:{name:"Engagement Progress",propertyKey:ou,palette:le,colors:le,labels:Kr,getColor:ru,applyColor:Br,buildColorExpression:lu},getColor:ru},Symbol.toStringTag,{value:"Module"}));function Y5(a){if(!a)return"hsl(0, 60%, 50%)";let n=0;for(let i=0;i{a.push(n,e)}),a.push(Ur),a}const uu=zr,J5=Object.freeze(Object.defineProperty({__proto__:null,GEO_REGION_COLORS:W5,PALETTE:Qt,PROPERTY_KEY:Or,REGION_COLOR_ALIASES:Dr,SLUG_PALETTE:ao,applyColor:zr,buildColorExpression:uu,default:{name:"DOXA Region",propertyKey:Or,palette:Qt,colors:Qt,slugColors:ao,aliases:Dr,fallback:Ur,getColor:gu,applyColor:zr,buildColorExpression:uu,getRegionColor:cu,getRegionColorBySlug:Hr},getColor:gu,getRegionColor:cu,getRegionColorBySlug:Hr},Symbol.toStringTag,{value:"Module"})),Vr="languageFamily",Z5="#000000",se={"Indo-European":"#e74c3c",Dravidian:"#ff9800","Afro-Asiatic":"#27ae60","Sino-Tibetan":"#3498db","Niger-Congo":"#9b59b6",Unclassified:"#95a5a6","Nilo-Saharan":"#e91e63","Khoe-Kwadi":"#00bcd4","Austro-Asiatic":"#00bcd4","Kra-Dai":"#8e44ad",Austronesian:"#ff69b4","Hmong-Mien":"#f44336",Turkic:"#ffc107","Nakh-Daghestanian":"#009688",Mongolic:"#795548",Uralic:"#607d8b",Tungusic:"#4caf50",Japonic:"#ff5722",Cariban:"#673ab7",Tupian:"#03a9f4",Tucanoan:"#8bc34a",Maipurean:"#ffc107",Panoan:"#cddc39",Guajiboan:"#9e9e9e",Chibchan:"#ff7043",Quechuan:"#ab47bc",Jean:"#26a69a",Harákmbut:"#7e57c2",Nambikwara:"#42a5f5",Muran:"#66bb6a",Karajá:"#ffa726",Bororoan:"#ef5350",Arauan:"#5c6bc0",Yanomaman:"#26c6da",Yaguan:"#d4e157",Witotoan:"#78909c",Zamucoan:"#8d6e63",Puinavean:"#aed581",Barbacoan:"#4db6ac","Eyak-Athabaskan":"#7986cb","Trans-New Guinea":"#ba68c8",Andamanese:"#4dd0e1","Sign Language":"#212121",Creole:"#9575cd","Mixed language":"#a1887f","Language isolate":"#90a4ae",Unknown:"#000000"},q5=se;function Hn(a){return se[a]||Z5}const X5=(()=>{const a=e=>String(e||"").toLowerCase().trim(),n={};for(const e of Object.keys(se))n[a(e)]=e;return n})();function Yr(a){if(!a)return"Unknown";const n=String(a).trim();return X5[n.toLowerCase()]||n}function du(a){var n;return Hn(a.languageFamily||((n=a._normalized)==null?void 0:n.languageFamily))}function Wr(){const a=["match",["get",Vr]];return Object.entries(se).forEach(([n,e])=>{a.push(n,e)}),a.push("#95a5a6"),a}const pu=Wr,Q5=Object.freeze(Object.defineProperty({__proto__:null,LANGUAGE_FAMILY_COLORS:q5,PALETTE:se,PROPERTY_KEY:Vr,applyColor:Wr,buildColorExpression:pu,canonicalFamilyName:Yr,default:{name:"Language Family",propertyKey:Vr,palette:se,colors:se,getColor:du,applyColor:Wr,buildColorExpression:pu,getLanguageFamilyColor:Hn,canonicalFamilyName:Yr},defaultFamilyColor:"#95a5a6",getColor:du,getLanguageFamilyColor:Hn,languageFamilyColors:se},Symbol.toStringTag,{value:"Module"})),mu="peoplePraying",no=144,je={noPrayer:"#e74c3c",hasPrayer:"#f39c12",fullPrayer:"#22c55e"},af=je,Jr={noPrayer:"Needs Prayer",hasPrayer:"Has Prayer",fullPrayer:"Has Full Prayer Coverage"},nf=Jr;function eo(a){var i;const n=(a==null?void 0:a.peoplePraying)??((i=a==null?void 0:a._raw)==null?void 0:i.people_praying)??null,e=Number(n)||0;return e>=no?"fullPrayer":e>0?"hasPrayer":"noPrayer"}function Zr(a){return je[eo(a)]}function hu(a){var e;const n=(a==null?void 0:a.peoplePraying)??((e=a==null?void 0:a._raw)==null?void 0:e.people_praying)??null;return n!==null&&n>0}function yu(a){return eo(a)==="fullPrayer"}function bu(a){return Zr(a)}function qr({colorSource:a="properties"}={}){const n=a==="feature-state"?["feature-state","peoplePraying"]:["get","peoplePraying"];return["case",[">=",n,no],je.fullPrayer,[">",n,0],je.hasPrayer,je.noPrayer]}const _u=qr,ef=Object.freeze(Object.defineProperty({__proto__:null,FULL_PRAYER_THRESHOLD:no,LABELS:Jr,PALETTE:je,PRAYER_COLORS:af,PRAYER_LABELS:nf,PROPERTY_KEY:mu,applyColor:qr,buildColorExpression:_u,checkHasFullPrayer:yu,checkHasPrayer:hu,default:{name:"Prayer Progress",propertyKey:mu,palette:je,colors:je,labels:Jr,threshold:no,getColor:bu,applyColor:qr,buildColorExpression:_u,getPrayerLevel:eo,getPrayerColor:Zr,checkHasPrayer:hu,checkHasFullPrayer:yu},getColor:bu,getPrayerColor:Zr,getPrayerLevel:eo},Symbol.toStringTag,{value:"Module"})),fu="religion",Xr="#94a3b8",Qr={C:"Christianity",M:"Islam",H:"Hinduism",B:"Buddhism",E:"Ethnoreligion",J:"Judaism",S:"Sikhism",N:"Unaffiliated",O:"Other",U:"Unknown"},jn={C:"#3b82f6",M:"#ef4444",H:"#f59e0b",B:"#facc15",E:"#84cc16",J:"#a855f7",S:"#ec4899",N:"#71717a",O:"#ff6b2b",U:"#94a3b8"};function Pu(a){if(!a||typeof a!="string")return"U";const n=a.charAt(0).toUpperCase();return Qr[n]?n:"U"}function Cu(a){var e,i,t;const n=(a==null?void 0:a.religion)||((i=(e=a==null?void 0:a._raw)==null?void 0:e.religion)==null?void 0:i.value)||((t=a==null?void 0:a._raw)==null?void 0:t.religion);return jn[Pu(n)]||Xr}function al(){return["match",["slice",["coalesce",["get","religion"],""],0,1],"C",jn.C,"M",jn.M,"H",jn.H,"B",jn.B,"E",jn.E,"J",jn.J,"S",jn.S,"N",jn.N,"O",jn.O,Xr]}const ju=al,tf=Object.freeze(Object.defineProperty({__proto__:null,PALETTE:jn,PROPERTY_KEY:fu,RELIGION_FAMILIES:Qr,applyColor:al,buildColorExpression:ju,default:{name:"Religion",propertyKey:fu,palette:jn,families:Qr,getColor:Cu,applyColor:al,buildColorExpression:ju,fallback:Xr},getColor:Cu,getReligionFamily:Pu},Symbol.toStringTag,{value:"Module"})),ku="resourceType",ke={bible:"#3498db",jesusFilm:"#20c997",radio:"#9b59b6",gospel:"#f39c12",audio:"#1abc9c",stories:"#e74c3c",hasResources:"#27ae60",noResources:"#2c3e50"},of=ke,zi=["bible","jesusFilm","radio","gospel","audio","stories"],nl={bible:"Bible",jesusFilm:"Jesus Film",radio:"Radio",gospel:"Gospel",audio:"Audio",stories:"Stories",hasResources:"Has Resources",noResources:"No Resources"},rf=nl;function Vi(a){return{bible:"Bible",jesusFilm:"Jesus",radio:"Radio",gospel:"Gospel",audio:"Audio",stories:"Stories"}[a]}function Gu(a){var n;for(const e of zi)if((a[e]||((n=a._raw)==null?void 0:n[Vi(e)]))==="Available")return ke.hasResources;return ke.noResources}function vu(a){var n;for(const e of zi)if((a[e]||((n=a._raw)==null?void 0:n[Vi(e)]))==="Available")return!0;return!1}function Au(a){var n;for(const e of zi)if((a[e]||((n=a._raw)==null?void 0:n[Vi(e)]))==="Available")return e;return"noResources"}function el(){return["case",["any",["==",["get","bible"],"Available"],["==",["get","jesusFilm"],"Available"],["==",["get","radio"],"Available"],["==",["get","gospel"],"Available"],["==",["get","audio"],"Available"],["==",["get","stories"],"Available"]],ke.hasResources,ke.noResources]}const Su=el,Eu=Object.assign({"./adoption.js":U5,"./affinity-block.js":H5,"./engagement.js":V5,"./geo-region.js":J5,"./language-family.js":Q5,"./prayer-progress.js":ef,"./religion.js":tf,"./resource.js":Object.freeze(Object.defineProperty({__proto__:null,NAMES:nl,PALETTE:ke,PROPERTY_KEY:ku,RESOURCE_COLORS:of,RESOURCE_NAMES:rf,RESOURCE_PRIORITY:zi,applyColor:el,buildColorExpression:Su,default:{name:"Gospel Resources",propertyKey:ku,palette:ke,colors:ke,names:nl,priority:zi,getColor:Gu,applyColor:el,buildColorExpression:Su,hasAnyResource:vu,getResourceType:Au,getCSVColumn:Vi},getCSVColumn:Vi,getColor:Gu,getResourceType:Au,hasAnyResource:vu},Symbol.toStringTag,{value:"Module"}))}),lf=a=>a.replace(/-([a-z0-9])/g,(n,e)=>e.toUpperCase()),sf=a=>a.replace(/-/g,"_").toUpperCase(),cf={...{STATUS:"status",CUSTOM:"custom"}};for(const a of Object.keys(Eu).sort()){const n=a.split("/").pop().replace(/\.js$/,"");if(n.startsWith("_")||n.startsWith(".")||!Eu[a].default)continue;const i=lf(n);cf[sf(n)]=i}const ln={Chamacoco:"Zamucoan",Ninam:"Yanomaman",Yagua:"Yaguan",Muinane:"Witotoan",Finnish:"Uralic","Hill Mari":"Uralic",Mansi:"Uralic","Meadow Mari":"Uralic","North Saami":"Uralic",Carabayo:"Unclassified",Kujarge:"Unclassified",Shabo:"Unclassified",Ainu:"Turkic",Kazakh:"Turkic","Khorasani Turkish":"Turkic",Kyrgyz:"Turkic","Northern Uzbek":"Turkic","South Azerbaijani":"Turkic",Turkish:"Turkic",Tuvan:"Turkic",Uyghur:"Turkic",Amundava:"Tupian",Araweté:"Tupian","Asurini of Xingú":"Tupian","Avá-Canoeiro":"Tupian",Awetí:"Tupian",Kamayurá:"Tupian",Karo:"Tupian",Morerebi:"Tupian",Tenharim:"Tupian","Uru-Eu-Wau-Wau":"Tupian","Uru-Pa-In":"Tupian",Wayampi:"Tupian","Zo’é":"Tupian",Evenki:"Tungusic",Xibe:"Tungusic",Carapana:"Tucanoan",Cubeo:"Tucanoan",Desano:"Tucanoan",Macuna:"Tucanoan",Piratapuyo:"Tucanoan",Siona:"Tucanoan",Siriano:"Tucanoan",Tucano:"Tucanoan",Tuyuca:"Tucanoan",Waimaha:"Tucanoan",Tay:"Trans-New Guinea",Adi:"Sino-Tibetan",Akha:"Sino-Tibetan","Amdo Tibetan":"Sino-Tibetan",Axi:"Sino-Tibetan",Biyo:"Sino-Tibetan","Boro (India)":"Sino-Tibetan",Brokkat:"Sino-Tibetan",Bugun:"Sino-Tibetan",Byangsi:"Sino-Tibetan","Central Lalo":"Sino-Tibetan","Central Tibetan":"Sino-Tibetan",Chak:"Sino-Tibetan",Chalikha:"Sino-Tibetan",Chaudangsi:"Sino-Tibetan",Chocangacakha:"Sino-Tibetan",Darlong:"Sino-Tibetan",Dhimal:"Sino-Tibetan","Digaro-Mishmi":"Sino-Tibetan",Dzalakha:"Sino-Tibetan","Eastern Nisu":"Sino-Tibetan",Ersu:"Sino-Tibetan",Gahri:"Sino-Tibetan",Gongduk:"Sino-Tibetan",Gyalsumdo:"Sino-Tibetan",Hani:"Sino-Tibetan","Idu-Mishmi":"Sino-Tibetan",Kaike:"Sino-Tibetan",Kanashi:"Sino-Tibetan",Katso:"Sino-Tibetan",Khamba:"Sino-Tibetan",Koireng:"Sino-Tibetan",Kucong:"Sino-Tibetan",Kurtokha:"Sino-Tibetan",Ladakhi:"Sino-Tibetan",Lakha:"Sino-Tibetan","Lang’e":"Sino-Tibetan",Lhokpu:"Sino-Tibetan",Lolopo:"Sino-Tibetan",Lunanakha:"Sino-Tibetan","Mandarin Chinese":"Sino-Tibetan",Meitei:"Sino-Tibetan","Miju-Mishmi":"Sino-Tibetan",Mpi:"Sino-Tibetan",Na:"Sino-Tibetan",Namuyi:"Sino-Tibetan",Narua:"Sino-Tibetan",Naxi:"Sino-Tibetan","Northern Muji":"Sino-Tibetan",Nuosu:"Sino-Tibetan",Nupbikha:"Sino-Tibetan",Nyenkha:"Sino-Tibetan",Olekha:"Sino-Tibetan",Pahari:"Sino-Tibetan",Pattani:"Sino-Tibetan","Phana’":"Sino-Tibetan",Phula:"Sino-Tibetan",Phunoi:"Sino-Tibetan",Puma:"Sino-Tibetan",Puroik:"Sino-Tibetan",Raji:"Sino-Tibetan",Rawat:"Sino-Tibetan",Sani:"Sino-Tibetan",Sherdukpen:"Sino-Tibetan",Sherpa:"Sino-Tibetan",Shuhi:"Sino-Tibetan",Sila:"Sino-Tibetan",Singpho:"Sino-Tibetan",Sunwar:"Sino-Tibetan","Tawang Monpa":"Sino-Tibetan",Tseku:"Sino-Tibetan",Tshangla:"Sino-Tibetan",Usoi:"Sino-Tibetan","Western Minyag":"Sino-Tibetan","Wusa Nasu":"Sino-Tibetan","Xiang Chinese":"Sino-Tibetan",Yakkha:"Sino-Tibetan","Youle Jinuo":"Sino-Tibetan","Yue Chinese":"Sino-Tibetan",Zakhring:"Sino-Tibetan","Afghan Sign Language":"Sign Language","Albanian Sign Language":"Sign Language","Algerian Sign Language":"Sign Language","American Sign Language":"Sign Language","Armenian Sign Language":"Sign Language","British Sign Language":"Sign Language","Bulgarian Sign Language":"Sign Language","Cambodian Sign Language":"Sign language","Cuban Sign Language":"Sign Language","Egyptian Sign Language":"Sign Language","Greek Sign Language":"Sign Language","Guinean Sign Language":"Sign Language","Hong Kong Sign Language":"Sign Language","Icelandic Sign Language":"Sign Language","Iranian Sign Language":"Sign Language","Israeli Sign Language":"Sign Language","Jamaican Sign Language":"Sign Language","Jordanian Sign Language":"Sign Language","Laos Sign Language":"Sign Language","Libyan Sign Language":"Sign Language","Maltese Sign Language":"Sign Language","Mauritian Sign Language":"Sign Language","Moroccan Sign Language":"Sign Language","Mozambican Sign Language":"Sign Language","Myanmar Sign Language":"Sign language","Natural Sign Language":"Sign Language","Pakistan Sign Language":"Sign Language","Papua New Guinean Sign Language":"Sign language","Russian Sign Language":"Sign Language","Saudi Arabian Sign Language":"Sign Language","Sign Language of the Netherlands":"Sign Language","Solomon Islands Sign Language":"Sign Language","Sri Lankan Sign Language":"Sign Language","Swedish Sign Language":"Sign Language","Turkish Sign Language":"Sign Language","Northern Conchucos Ancash Quechua":"Quechuan","Northern Pastaza Quichua":"Quechuan",Hupdë:"Puinavean",Amahuaca:"Panoan",Korubo:"Panoan",Sharanahua:"Panoan","Shipibo-Conibo":"Panoan",Yaminahua:"Panoan",Yawanawa:"Panoan",Afitti:"Nilo-Saharan",Assangori:"Nilo-Saharan","Beli (South Sudan)":"Nilo-Saharan",Berta:"Nilo-Saharan",Burun:"Nilo-Saharan","Dar Daju Daju":"Nilo-Saharan","Dar Fur Daju":"Nilo-Saharan","Dar Sila Daju":"Nilo-Saharan",Dazaga:"Nilo-Saharan","Dendi (Benin)":"Nilo-Saharan",Dilling:"Nilo-Saharan",Fur:"Nilo-Saharan",Gbaya:"Nilo-Saharan",Ghulfan:"Nilo-Saharan",Gwama:"Nilo-Saharan","Humburi Senni Songhay":"Nilo-Saharan",Jopadhola:"Nilo-Saharan",Kadaru:"Nilo-Saharan",Kanga:"Nilo-Saharan",Karanga:"Nilo-Saharan",Karko:"Nilo-Saharan",Kebu:"Nilo-Saharan",Keiga:"Nilo-Saharan",Keliko:"Nilo-Saharan",Kendeje:"Nilo-Saharan",Kibet:"Nilo-Saharan","Komo (Sudan)":"Nilo-Saharan",Korandje:"Nilo-Saharan",Kulfa:"Nilo-Saharan",Kwegu:"Nilo-Saharan",Laarim:"Nilo-Saharan",Logorik:"Nilo-Saharan",Majang:"Nilo-Saharan","Manga Kanuri":"Nilo-Saharan",Mango:"Nilo-Saharan",Mararit:"Nilo-Saharan",Marfa:"Nilo-Saharan",Midob:"Nilo-Saharan","Mo’da":"Nilo-Saharan",Morom:"Nilo-Saharan",Moru:"Nilo-Saharan",Naba:"Nilo-Saharan",Nara:"Nilo-Saharan",Njalgulgule:"Nilo-Saharan",Nuer:"Nilo-Saharan","Nyamusa-Molo":"Nilo-Saharan",Nyangatom:"Nilo-Saharan","Olu’bo":"Nilo-Saharan",Opo:"Nilo-Saharan",Päri:"Nilo-Saharan","Sara Kaba Naa":"Nilo-Saharan",Surbakhal:"Nilo-Saharan",Tadaksahak:"Nilo-Saharan","Tama (Chad)":"Nilo-Saharan",Temein:"Nilo-Saharan",Thuri:"Nilo-Saharan","Tirmaga-Chai Suri":"Nilo-Saharan",Toposa:"Nilo-Saharan",Tumtum:"Nilo-Saharan","Wali (Sudan)":"Nilo-Saharan","Yerwa Kanuri":"Nilo-Saharan",Yulu:"Nilo-Saharan",Zaghawa:"Nilo-Saharan","Adamawa Fulfulde":"Niger-Congo",Akaselem:"Niger-Congo","Amba (Uganda)":"Niger-Congo",Anii:"Niger-Congo",Baangi:"Niger-Congo",Badyara:"Niger-Congo","Bago-Kusuntu":"Niger-Congo",Bai:"Niger-Congo","Bainouk-Gunyaamolo":"Niger-Congo",Bamanankan:"Niger-Congo","Banda-Mbrès":"Niger-Congo",Bandial:"Niger-Congo",Bankagooma:"Niger-Congo","Belanda Viri":"Niger-Congo",Bemba:"Niger-Congo",Bolgo:"Niger-Congo","Bon Gula":"Niger-Congo",Bua:"Niger-Congo",Chichewa:"Niger-Congo","Chung (Cameroon)":"Niger-Congo","Ci Gbe":"Niger-Congo",Degema:"Niger-Congo",Dek:"Niger-Congo",Dhimba:"Niger-Congo",Dogoso:"Niger-Congo","East Limba":"Niger-Congo",Engenni:"Niger-Congo",Epie:"Niger-Congo",Éwé:"Niger-Congo",Fania:"Niger-Congo",Foodo:"Niger-Congo",Fwe:"Niger-Congo",Gciriku:"Niger-Congo",Gwa:"Niger-Congo",Herero:"Niger-Congo",Ibuoro:"Niger-Congo","Jenaama Bozo":"Niger-Congo",Jita:"Niger-Congo",Jula:"Niger-Congo",Kabiyè:"Niger-Congo",Kadung:"Niger-Congo",Kakabe:"Niger-Congo",Kalamsé:"Niger-Congo","Kami (Tanzania)":"Niger-Congo","Kango (Bas-Uélé District)":"Niger-Congo",Kasem:"Niger-Congo","Kelengaxo Bozo":"Niger-Congo",Khe:"Niger-Congo",Khisa:"Niger-Congo",Kim:"Niger-Congo",Kinyarwanda:"Niger-Congo",Kipfokomu:"Niger-Congo",Kitharaka:"Niger-Congo",Kiyombe:"Niger-Congo",Ko:"Niger-Congo",Koalib:"Niger-Congo",Koke:"Niger-Congo",Konongo:"Niger-Congo","Koro Nulu":"Niger-Congo","Koro Zuba":"Niger-Congo",Kuhane:"Niger-Congo",Kunda:"Niger-Congo",Kuranko:"Niger-Congo",Kuria:"Niger-Congo",Kwangali:"Niger-Congo",Lame:"Niger-Congo",Laru:"Niger-Congo",Lopa:"Niger-Congo","Makhuwa-Meetto":"Niger-Congo","Makhuwa-Shirima":"Niger-Congo","Malawi Nyiha":"Niger-Congo",Mandinka:"Niger-Congo",Mankanya:"Niger-Congo",Mansoanka:"Niger-Congo",Mbukushu:"Niger-Congo","Mende (Sierra Leone)":"Niger-Congo",Miyobe:"Niger-Congo",Mushungulu:"Niger-Congo","Mwali Comorian":"Niger-Congo","Mwera (Chimwera)":"Niger-Congo",Ndemli:"Niger-Congo",Ndengereko:"Niger-Congo",Ndumu:"Niger-Congo",Ndunga:"Niger-Congo","Ndzwani Comorian":"Niger-Congo",Ngile:"Niger-Congo","Northwest Gbaya":"Niger-Congo",Notre:"Niger-Congo",Nyamwanga:"Niger-Congo",Nyankore:"Niger-Congo",Nyengo:"Niger-Congo",Okpamheri:"Niger-Congo",Osatu:"Niger-Congo","Pana (Burkina Faso)":"Niger-Congo",Pulaar:"Niger-Congo",Pular:"Niger-Congo",Rufiji:"Niger-Congo","Sankaran Maninka":"Niger-Congo",Sapo:"Niger-Congo","Senara Sénoufo":"Niger-Congo",Shanga:"Niger-Congo",Sininkere:"Niger-Congo","Southern Ngbandi":"Niger-Congo",Swahili:"Niger-Congo","Syenara Sénoufo":"Niger-Congo",Tagbu:"Niger-Congo",Tagoi:"Niger-Congo",Tegali:"Niger-Congo",Tem:"Niger-Congo","Tiéyaxo Bozo":"Niger-Congo",Tiyaa:"Niger-Congo",Tocho:"Niger-Congo","Tonga (Zambia)":"Niger-Congo",Totela:"Niger-Congo","Toura (Côte d’Ivoire)":"Niger-Congo",Tswa:"Niger-Congo",Tumbuka:"Niger-Congo",Ukaan:"Niger-Congo",Uneme:"Niger-Congo",Vai:"Niger-Congo",Vute:"Niger-Congo",Waama:"Niger-Congo",Warnang:"Niger-Congo",Wolof:"Niger-Congo",Yao:"Niger-Congo",Yauma:"Niger-Congo",Yom:"Niger-Congo","Zan Gula":"Niger-Congo",Zande:"Niger-Congo",Zigula:"Niger-Congo",Mamaindê:"Nambikwara",Aghul:"Nakh-Daghestanian",Akhvakh:"Nakh-Daghestanian",Andi:"Nakh-Daghestanian",Avar:"Nakh-Daghestanian",Bagvalal:"Nakh-Daghestanian",Botlikh:"Nakh-Daghestanian",Chamalal:"Nakh-Daghestanian",Chechen:"Nakh-Daghestanian",Dargwa:"Nakh-Daghestanian",Kaitag:"Nakh-Daghestanian",Karata:"Nakh-Daghestanian",Khvarshi:"Nakh-Daghestanian",Tindi:"Nakh-Daghestanian",Pirahã:"Muran",Bonan:"Mongolic","China Buriat":"Mongolic",Daur:"Mongolic","Kalmyk-Oirat":"Mongolic","Peripheral Mongolian":"Mongolic","Russia Buriat":"Mongolic",Tagdal:"Mixed language",Wutunhua:"Mixed language","Ashéninka Perené":"Maipurean",Baniwa:"Maipurean",Cabiyarí:"Maipurean",Curripaco:"Maipurean","Enawené-Nawé":"Maipurean",Kanamarí:"Maipurean",Mehináku:"Maipurean","Pichis Ashéninka":"Maipurean",Waurá:"Maipurean",Bangime:"Language isolate",Burushaski:"Language isolate","Ai-Cham":"Kra-Dai",Aiton:"Kra-Dai","Dai Zhuang":"Kra-Dai",Duoluo:"Kra-Dai","Green Gelao":"Kra-Dai","Guibian Zhuang":"Kra-Dai",Hlai:"Kra-Dai",Jiamao:"Kra-Dai",Kang:"Kra-Dai",Khün:"Kra-Dai",Kuan:"Kra-Dai",Lachi:"Kra-Dai","Laha (Viet Nam)":"Kra-Dai",Lao:"Kra-Dai",Lü:"Kra-Dai","Mak (China)":"Kra-Dai","Northeastern Thai":"Kra-Dai","Northern Dong":"Kra-Dai","Northern Thai":"Kra-Dai",Nyaw:"Kra-Dai",Phake:"Kra-Dai","Phu Thai":"Kra-Dai",Qabiao:"Kra-Dai",Qau:"Kra-Dai","Qiubei Zhuang":"Kra-Dai",Shan:"Kra-Dai","Southern Dong":"Kra-Dai",Sui:"Kra-Dai","T’en":"Kra-Dai","Tai Daeng":"Kra-Dai","Tai Dam":"Kra-Dai","Tai Hongjin":"Kra-Dai","Tai Nüa":"Kra-Dai","Tai Ya":"Kra-Dai","Tai Yo":"Kra-Dai","Ts’ün-Lao":"Kra-Dai","Yang Zhuang":"Kra-Dai",Yerong:"Kra-Dai",Yong:"Kra-Dai",Yoy:"Kra-Dai",Khoekhoe:"Khoe-Kwadi",Karajá:"Karajá","Pará Gavião":"Jean",Suyá:"Jean",Japanese:"Japonic","Oki-No-Erabu":"Japonic","Toku-No-Shima":"Japonic",Yaeyama:"Japonic",Yoron:"Japonic","Adivasi Oriya":"Indo-European",Afrikaans:"Indo-European","Alviri-Vidari":"Indo-European",Angika:"Indo-European",Assamese:"Indo-European",Bagheli:"Indo-European",Bagri:"Indo-European",Bashkardi:"Indo-European",Bateri:"Indo-European",Bengali:"Indo-European",Bhojpuri:"Indo-European",Bhunjia:"Indo-European",Bilaspuri:"Indo-European",Bosnian:"Indo-European","Braj Bhasha":"Indo-European",Brokskat:"Indo-European",Bundeli:"Indo-European",Catalan:"Indo-European",Chambeali:"Indo-European",Chhattisgarhi:"Indo-European",Dameli:"Indo-European",Dari:"Indo-European",Dhundari:"Indo-European",Dogri:"Indo-European",Domari:"Indo-European",Dutch:"Indo-European","Eastern Balochi":"Indo-European","Eastern Panjabi":"Indo-European","Eastern Yiddish":"Indo-European",English:"Indo-European",French:"Indo-European",Gaddi:"Indo-European",Garhwali:"Indo-European",Gawri:"Indo-European",Gowro:"Indo-European",Gujarati:"Indo-European",Gujari:"Indo-European",Halbi:"Indo-European",Haroti:"Indo-European",Haryanvi:"Indo-European",Hindi:"Indo-European","Indus Kohistani":"Indo-European","Iranian Persian":"Indo-European",Ishkashimi:"Indo-European",Kacchi:"Indo-European",Kalkoti:"Indo-European",Kanauji:"Indo-European",Kangri:"Indo-European",Karingani:"Indo-European",Kashmiri:"Indo-European",Kati:"Indo-European",Khunsari:"Indo-European",Konkani:"Indo-European",Kudmali:"Indo-European",Kumaoni:"Indo-European",Kumzari:"Indo-European",Laki:"Indo-European",Lasi:"Indo-European",Luwati:"Indo-European",Magahi:"Indo-European",Maithili:"Indo-European",Maldivian:"Indo-European",Malvi:"Indo-European",Marathi:"Indo-European","Marwari (India)":"Indo-European",Mewari:"Indo-European",Munji:"Indo-European",Nepali:"Indo-European",Nimadi:"Indo-European","Northern Kurdish":"Indo-European",Odia:"Indo-European","Pahari-Potwari":"Indo-European",Palula:"Indo-European",Panchpargania:"Indo-European",Pangwali:"Indo-European",Parachi:"Indo-European",Portuguese:"Indo-European",Russian:"Indo-European",Sadri:"Indo-European",Sanglechi:"Indo-European",Sarikoli:"Indo-European",Savi:"Indo-European",Semnani:"Indo-European",Serbian:"Indo-European",Shabak:"Indo-European",Shahrudi:"Indo-European",Shekhawati:"Indo-European",Shina:"Indo-European",Shughni:"Indo-European",Shumashti:"Indo-European",Sindhi:"Indo-European",Sivandi:"Indo-European",Soi:"Indo-European","Southern Balochi":"Indo-European",Spanish:"Indo-European",Tajik:"Indo-European",Talysh:"Indo-European",Urdu:"Indo-European",Ushojo:"Indo-European",Vaghri:"Indo-European","Vlax Romani":"Indo-European",Wagdi:"Indo-European",Wakhi:"Indo-European",Waneci:"Indo-European","Western Balochi":"Indo-European",Yadgha:"Indo-European","Bu-Nao Bunu":"Hmong-Mien","Central Mashan Miao":"Hmong-Mien","Chuanqiandian Cluster Miao":"Hmong-Mien","Eastern Xiangxi Miao":"Hmong-Mien","Iu Mien":"Hmong-Mien","Luopohe Miao":"Hmong-Mien","Northern Qiandong Miao":"Hmong-Mien","Pa-Hng":"Hmong-Mien","Southwestern Huishui Miao":"Hmong-Mien","Wunai Bunu":"Hmong-Mien","Younuo Bunu":"Hmong-Mien",Amarakaeri:"Harákmbut",Huachipaeri:"Harákmbut",Cuiba:"Guajiboan",Macaguán:"Guajiboan",Tlicho:"Eyak-Athabaskan",Kannada:"Dravidian",Kodava:"Dravidian","Korra Koraga":"Dravidian","Kota (India)":"Dravidian",Kudiya:"Dravidian",Malapandaram:"Dravidian",Malayalam:"Dravidian",Muthuvan:"Dravidian",Ravula:"Dravidian",Sholaga:"Dravidian",Tamil:"Dravidian",Telugu:"Dravidian",Tulu:"Dravidian",Vishavan:"Dravidian","Andaman Hindi Creole":"Creole","Cocos Islands Malay":"Creole","Juba Arabic":"Creole",Nubi:"Creole",Barí:"Chibchan","Barro Negro Tunebo":"Chibchan","Western Tunebo":"Chibchan",Ikpeng:"Cariban","Kuikúro-Kalapálo":"Cariban",Pemon:"Cariban",Trió:"Cariban","Waimiri-Atroarí":"Cariban",Waiwai:"Cariban",Yukpa:"Cariban",Borôro:"Bororoan",Chachi:"Barbacoan","Abai Sungai":"Austronesian",Ambelau:"Austronesian",Asilulu:"Austronesian",Balaesang:"Austronesian","Batak Alas-Kluet":"Austronesian","Batak Dairi":"Austronesian","Batak Karo":"Austronesian",Bonerate:"Austronesian",Bonggi:"Austronesian",Brunei:"Austronesian","Brunei Bisaya":"Austronesian",Buol:"Austronesian","Central Malay":"Austronesian","Central Sama":"Austronesian","Coastal Konjo":"Austronesian",Dampelas:"Austronesian","Dibabawon Manobo":"Austronesian",Dondo:"Austronesian",Gane:"Austronesian","Geser-Gorom":"Austronesian","Highland Konjo":"Austronesian",Hitu:"Austronesian",Iban:"Austronesian",Indonesian:"Austronesian","Kadazan Dusun":"Austronesian",Kiput:"Austronesian",Komodo:"Austronesian",Kompane:"Austronesian",Lahanan:"Austronesian","Lampung Nyo":"Austronesian","Larike-Wakasihu":"Austronesian",Lola:"Austronesian",Luhu:"Austronesian",Malay:"Austronesian",Mariri:"Austronesian",Moronene:"Austronesian",Rukai:"Austronesian","Sabah Bisaya":"Austronesian","Seit-Kaitetu":"Austronesian",Sula:"Austronesian","Tae’":"Austronesian",Tajio:"Austronesian",Tomini:"Austronesian",Tutong:"Austronesian",Ujir:"Austronesian",Aheu:"Austro-Asiatic",Alak:"Austro-Asiatic",Bit:"Austro-Asiatic","Bo (Laos)":"Austro-Asiatic",Bondo:"Austro-Asiatic",Brao:"Austro-Asiatic",Bugan:"Austro-Asiatic",Chong:"Austro-Asiatic",Chut:"Austro-Asiatic",Danau:"Austro-Asiatic",Halang:"Austro-Asiatic","Halang Doan":"Austro-Asiatic",Hu:"Austro-Asiatic",Hung:"Austro-Asiatic",Ir:"Austro-Asiatic",Kensiu:"Austro-Asiatic",Khmu:"Austro-Asiatic",Khua:"Austro-Asiatic",Khuen:"Austro-Asiatic",Koda:"Austro-Asiatic","Kon Keu":"Austro-Asiatic",Kriang:"Austro-Asiatic",Kuay:"Austro-Asiatic",Laven:"Austro-Asiatic",Maleng:"Austro-Asiatic","Man Met":"Austro-Asiatic",Mang:"Austro-Asiatic",Minriq:"Austro-Asiatic",Mlabri:"Austro-Asiatic",Nguôn:"Austro-Asiatic",Nyaheun:"Austro-Asiatic",Nyahkur:"Austro-Asiatic","O’du":"Austro-Asiatic",Ong:"Austro-Asiatic",Oy:"Austro-Asiatic",Pacoh:"Austro-Asiatic","Phong-Kniang":"Austro-Asiatic",Prai:"Austro-Asiatic",Puoc:"Austro-Asiatic",Rengao:"Austro-Asiatic",Rmeet:"Austro-Asiatic","Rumai Palaung":"Austro-Asiatic",Sapuan:"Austro-Asiatic","Shwe Palaung":"Austro-Asiatic","So (Laos)":"Austro-Asiatic",Sou:"Austro-Asiatic","Tai Loi":"Austro-Asiatic",Talieng:"Austro-Asiatic",Tareng:"Austro-Asiatic",Tho:"Austro-Asiatic",U:"Austro-Asiatic","Upper Ta’oih":"Austro-Asiatic",Vietnamese:"Austro-Asiatic","Western Katu":"Austro-Asiatic",Suruahá:"Arauan",Jarawa:"Andamanese",Öñge:"Andamanese",Sentinel:"Andamanese",Afar:"Afro-Asiatic","Alaba-K’abeena":"Afro-Asiatic",Alagwa:"Afro-Asiatic",Ale:"Afro-Asiatic","Algerian Arabic":"Afro-Asiatic",Amharic:"Afro-Asiatic",Arbore:"Afro-Asiatic","Baharna Arabic":"Afro-Asiatic",Barein:"Afro-Asiatic",Bedawiyet:"Afro-Asiatic",Bidiyo:"Afro-Asiatic",Bilen:"Afro-Asiatic",Birgit:"Afro-Asiatic",Boor:"Afro-Asiatic","Borana-Arsi-Guji Oromo":"Afro-Asiatic",Buduma:"Afro-Asiatic","Central Atlas Tamazight":"Afro-Asiatic","Chadian Arabic":"Afro-Asiatic",Chenoua:"Afro-Asiatic",Ciwogai:"Afro-Asiatic",Daasanach:"Afro-Asiatic",Dabarre:"Afro-Asiatic",Dangaléat:"Afro-Asiatic",Deno:"Afro-Asiatic",Diri:"Afro-Asiatic",Duwai:"Afro-Asiatic","Eastern Egyptian Bedawi Arabic":"Afro-Asiatic","Eastern Oromo":"Afro-Asiatic",Garre:"Afro-Asiatic",Geruma:"Afro-Asiatic",Giiwo:"Afro-Asiatic",Gorowa:"Afro-Asiatic","Gulf Arabic":"Afro-Asiatic","Hadrami Arabic":"Afro-Asiatic",Harsusi:"Afro-Asiatic",Hassaniyya:"Afro-Asiatic",Hausa:"Afro-Asiatic",Hebrew:"Afro-Asiatic","Hijazi Arabic":"Afro-Asiatic",Hobyót:"Afro-Asiatic",Hozo:"Afro-Asiatic",Jiiddu:"Afro-Asiatic",Jimi:"Afro-Asiatic",Jina:"Afro-Asiatic","Jonkor Bourmataguil":"Afro-Asiatic","Judeo-Iraqi Arabic":"Afro-Asiatic","Judeo-Moroccan Arabic":"Afro-Asiatic",Kabalai:"Afro-Asiatic",Kajakse:"Afro-Asiatic",Kariya:"Afro-Asiatic","Karo (Ethiopia)":"Afro-Asiatic",Kutto:"Afro-Asiatic","Levantine Arabic":"Afro-Asiatic",Libido:"Afro-Asiatic","Libyan Arabic":"Afro-Asiatic","Lishana Deni":"Afro-Asiatic",Maaka:"Afro-Asiatic",Maay:"Afro-Asiatic",Majera:"Afro-Asiatic",Male:"Afro-Asiatic",Maslam:"Afro-Asiatic",Masmaje:"Afro-Asiatic",Mburku:"Afro-Asiatic",Mehri:"Afro-Asiatic","Mesopotamian Arabic":"Afro-Asiatic",Migaama:"Afro-Asiatic",Mogum:"Afro-Asiatic","Moroccan Arabic":"Afro-Asiatic",Mositacha:"Afro-Asiatic",Mubi:"Afro-Asiatic",Mukulu:"Afro-Asiatic",Nafusi:"Afro-Asiatic","Najdi Arabic":"Afro-Asiatic",Nyam:"Afro-Asiatic","Omani Arabic":"Afro-Asiatic","Pa’a":"Afro-Asiatic",Saba:"Afro-Asiatic",Saho:"Afro-Asiatic","Sanaani Arabic":"Afro-Asiatic",Seze:"Afro-Asiatic",Shehri:"Afro-Asiatic",Shekkacho:"Afro-Asiatic",Sheko:"Afro-Asiatic","Shihhi Arabic":"Afro-Asiatic",Siwi:"Afro-Asiatic",Sokoro:"Afro-Asiatic",Soqotri:"Afro-Asiatic","South Levantine Arabic":"Afro-Asiatic","Standard Arabic":"Afro-Asiatic","Sudanese Arabic":"Afro-Asiatic","Ta’izzi-Adeni Arabic":"Afro-Asiatic","Tahaggart Tamahaq":"Afro-Asiatic",Taznatit:"Afro-Asiatic",Tigré:"Afro-Asiatic",Toram:"Afro-Asiatic",Tsamai:"Afro-Asiatic",Tumzabt:"Afro-Asiatic",Tunni:"Afro-Asiatic",Waata:"Afro-Asiatic","West Central Oromo":"Afro-Asiatic",Xamtanga:"Afro-Asiatic",Zumbun:"Afro-Asiatic"};function gf(a){return(a==null?void 0:a.properties)||a||{}}function io(a){return a&&typeof a=="object"&&"label"in a?a.label||a.value||"":a}function uf(a){if(!a||typeof a!="string")return null;const n=a.split(",").map(i=>i.trim()).filter(Boolean);if(n.length>=2){const i=[...n].reverse().join(" ");if(ln[i])return ln[i];if(n.length>=3){const t=[n[1],n[0]].join(" ");if(ln[t])return ln[t]}}if(ln[a])return ln[a];const e=a.replace(/\s*\(.*?\)\s*$/,"").trim();return e!==a&&ln[e]?ln[e]:null}const df=[[/ sign language$/i,"Sign Language"]];function pf(a){if(!a||typeof a!="string")return"— Unknown —";const n=a.indexOf(",");return n>0?a.slice(0,n).trim():a.trim()}function mf(a){if(!a||typeof a!="string")return null;const n=a.indexOf(",");return n>=0&&a.slice(n+1).trim()||null}function hf(a){var r,l,s,g;const n=a.language_family??a.languageFamily??((r=a._raw)==null?void 0:r.LanguageFamily)??((l=a._raw)==null?void 0:l.language_family),e=io(n),i=Yr(e);if(i&&i!=="Unknown")return i;const t=a.primary_language??a.primaryLanguage??((s=a._raw)==null?void 0:s.PrimaryLanguage)??((g=a._raw)==null?void 0:g.primary_language),o=io(t);if(o){const d=String(o).trim(),_=uf(d);if(_)return _;for(const[k,x]of df)if(k.test(d))return x}return"Unknown"}function yf(a){var t,o;const n=((t=a._raw)==null?void 0:t.primary_language)??((o=a._raw)==null?void 0:o.PrimaryLanguage);if(n){const r=io(n);if(r)return String(r).trim()}const e=a.primary_language??a.primaryLanguage??a.language,i=io(e);return i&&String(i).trim()||"— Unknown —"}function bf(a){var e,i;const n=a.population??((e=a._raw)==null?void 0:e.Population)??((i=a._raw)==null?void 0:i.population)??0;return parseInt(n,10)||0}function _f(a,n){var e,i;return(a==null?void 0:a.id)??n.id??n.peopleGroupId??((e=n._raw)==null?void 0:e.PeopleID3)??((i=n._raw)==null?void 0:i.PeopleID)??null}function ff(a,n){return(a==null?void 0:a.clusterId)??n.clusterId??null}function Pf(a,n){var t,o,r,l;const e=parseFloat(n.latitude??n.lat??((t=n._raw)==null?void 0:t.Latitude)??((o=n._raw)==null?void 0:o.latitude)),i=parseFloat(n.longitude??n.lng??((r=n._raw)==null?void 0:r.Longitude)??((l=n._raw)==null?void 0:l.longitude));return!isFinite(e)||!isFinite(i)?null:[i,e]}function Cf(a,n){return n.peopleGroupCount!==a.peopleGroupCount?n.peopleGroupCount-a.peopleGroupCount:(n.population||0)-(a.population||0)}function to(a,n){return(n.population||0)!==(a.population||0)?(n.population||0)-(a.population||0):n.peopleGroupCount-a.peopleGroupCount}function jf(a,n={}){n.aggregator;const e=pi({});function i(T){return!!e[T]}function t(T){e[T]=!e[T]}function o(T){const $=new Set(Array.isArray(T)?T:[]);for(const w of Object.keys(e))$.has(w)||(e[w]=!1);for(const w of $)e[w]=!0}const r=la(()=>{const T=(a==null?void 0:a.value)||[],$=new Map;for(const w of T){const L=gf(w),E=hf(L),I=yf(L),G=pf(I),S=mf(I),v=bf(L),K=_f(w,L),O=ff(w,L),q=Pf(w,L);let sa=$.get(E);sa||(sa={key:E,peopleGroupCount:0,population:0,pinIds:[],coords:[],clusterId:null,languages:new Map},$.set(E,sa)),sa.peopleGroupCount+=1,sa.population+=v,K!=null&&sa.pinIds.push(K),q&&sa.coords.push(q),O&&!sa.clusterId&&(sa.clusterId=O);let ea=sa.languages.get(G);if(ea||(ea={key:G,peopleGroupCount:0,population:0,pinIds:[],coords:[],clusterId:null,dialects:new Map},sa.languages.set(G,ea)),ea.peopleGroupCount+=1,ea.population+=v,K!=null&&ea.pinIds.push(K),q&&ea.coords.push(q),O&&!ea.clusterId&&(ea.clusterId=O),S){let ga=ea.dialects.get(S);ga?ga.originalLabels.add(I):(ga={key:S,peopleGroupCount:0,population:0,pinIds:[],coords:[],originalLabels:new Set([I])},ea.dialects.set(S,ga)),ga.peopleGroupCount+=1,ga.population+=v,K!=null&&ga.pinIds.push(K),q&&ga.coords.push(q)}}return $}),l=n.showAllKnown!==!1,s=la(()=>{const T=r.value,$=[],w=new Set;for(const L of T.values())$.push({key:L.key,label:L.key,color:Hn(L.key),peopleGroupCount:L.peopleGroupCount,population:L.population,kind:L.clusterId?"cluster":"family",clusterId:L.clusterId||void 0,pinIds:L.pinIds,coords:L.coords}),w.add(L.key);if(l)for(const L of Object.keys(se))w.has(L)||$.push({key:L,label:L,color:Hn(L),peopleGroupCount:0,population:0,kind:"family",pinIds:[],coords:[]});return $.sort(Cf),$});function g(T){const $=r.value.get(T);if(!$)return[];const w=[];for(const L of $.languages.values())w.push({key:`${T}__${L.key}`,label:L.key,color:Hn(T),peopleGroupCount:L.peopleGroupCount,population:L.population,kind:L.clusterId?"cluster":"language",familyKey:T,clusterId:L.clusterId||void 0,pinIds:L.pinIds,coords:L.coords,hasDialects:L.dialects.size>0});return w.sort(to),w}function d(T){const $=T.indexOf("__");if($<0)return[];const w=T.slice(0,$),L=T.slice($+2),E=r.value.get(w);if(!E)return[];const I=E.languages.get(L);if(!I)return[];const G=[];for(const S of I.dialects.values())G.push({key:`${T}__${S.key}`,label:`${L}, ${S.key}`,dialectOnly:S.key,color:Hn(w),peopleGroupCount:S.peopleGroupCount,population:S.population,kind:"dialect",languageKey:L,familyKey:w,pinIds:S.pinIds,coords:S.coords,originalLabels:Array.from(S.originalLabels)});return G.sort(to),G}const _=la(()=>{const T=r.value,$=[];for(const w of T.values())for(const L of w.languages.values())$.push({key:`${w.key}__${L.key}`,label:L.key,color:Hn(w.key),peopleGroupCount:L.peopleGroupCount,population:L.population,kind:L.clusterId?"cluster":"language",familyKey:w.key,clusterId:L.clusterId||void 0,pinIds:L.pinIds,coords:L.coords,hasDialects:L.dialects.size>0});return $.sort(to),$}),k=la(()=>{const T=r.value,$=[];for(const w of T.values())for(const L of w.languages.values())for(const E of L.dialects.values())$.push({key:`${w.key}__${L.key}__${E.key}`,label:`${L.key}, ${E.key}`,dialectOnly:E.key,color:Hn(w.key),peopleGroupCount:E.peopleGroupCount,population:E.population,kind:"dialect",languageKey:L.key,familyKey:w.key,pinIds:E.pinIds,coords:E.coords,originalLabels:Array.from(E.originalLabels)});return $.sort(to),$});function x(T){let $=T;if(typeof T=="string"&&($=s.value.find(L=>L.key===T),!$))return;const w={kind:$.kind,pinIds:$.pinIds||[],coords:$.coords||[]};$.kind==="family"&&(w.familyKey=$.label),$.kind==="language"&&(w.languageKey=$.label,w.familyKey=$.familyKey),$.kind==="dialect"&&(w.dialectKey=$.key,w.dialectOnly=$.dialectOnly||$.label,w.languageKey=$.languageKey,w.familyKey=$.familyKey,w.originalLabels=$.originalLabels||[]),$.kind==="cluster"&&(w.clusterId=$.clusterId),typeof window<"u"&&typeof window.CustomEvent=="function"&&window.dispatchEvent(new CustomEvent("legend:highlight",{detail:w}))}const D=la(()=>{const T=r.value,$=[];for(const w of T.values()){const L=Hn(w.key),E=[];for(const G of w.languages.values()){G.key&&G.key!=="— Unknown —"&&E.push(G.key);for(const S of G.dialects.values())for(const v of S.originalLabels)v&&E.push(v)}const I={id:`fam:${w.key}`,label:w.key,color:L,count:w.peopleGroupCount,pop:w.population,filter:E.length>0?["any",["==",["get","languageFamily"],w.key],["in",["get","language"],["literal",Array.from(new Set(E))]]]:["==",["get","languageFamily"],w.key],children:[]};for(const G of w.languages.values()){const S=G.key,v={id:`lang:${w.key}__${S}`,label:S,color:L,count:G.peopleGroupCount,pop:G.population,filter:["any",["==",["get","language"],S],["==",["slice",["get","language"],0,S.length+1],S+","],["in"," "+S,["get","language"]]],children:[]};for(const K of G.dialects.values()){const O=Array.from(K.originalLabels);v.children.push({id:`dial:${w.key}__${S}__${K.key}`,label:`${S}, ${K.key}`,color:L,count:K.peopleGroupCount,pop:K.population,filter:O.length===1?["==",["get","language"],O[0]]:["in",["get","language"],["literal",O]],originalLabels:O,children:[]})}I.children.push(v)}$.push(I)}return $.sort((w,L)=>L.pop-w.pop||L.count-w.count),$});return{rows:s,languageRows:_,dialectRows:k,langTree:D,toggle:t,isExpanded:i,setExpansionToOnly:o,childRowsFor:g,dialectRowsFor:d,highlight:x}}const kf={key:0,class:"fc-loading"},Gf={class:"fc-modes",role:"tablist","aria-label":"Cluster by"},vf=["aria-selected","onClick"],Af={class:"fc-circle"},Sf={class:"fc-mode-lbl"},Ef={class:"fc-mode-sz"},Mf={key:1,class:"fc-stats"},If={key:2,class:"fc-legend"},wf={class:"fc-lrow"},xf={class:"fc-lrow"},Tf={key:3,class:"fc-footer"},ti="#e11d48",Yi="#9f1239",Wi="#002e6e",Nf="#f59e0b",il="fc-core-src",Mu="fc-green-src",Iu="fc-link-src",Te="fc-core",wu="fc-core-lbl",oo="fc-green",Ji="fc-link",Lf={__name:"FlowerClusters",setup(a){function n(u){const A=+u||0;return A>=80?"#0f7a3d":A>=40?"#1f9d55":A>=15?"#5cb874":"#9bcf9b"}const e=Ya("profileConfig"),i=Ya("mapboxToken"),t=la(()=>(e==null?void 0:e.value)||{}),o=ua(null),r=ua(null),l=ua(!1),s=ua("Clustering the harvest by language…"),g=ua("language"),d=ua(null),_=ua([]),{rows:k,languageRows:x}=jf(_,{showAllKnown:!1});function D(u){return u&&typeof u=="object"?u.label||u.value||"":u||""}const T=la(()=>{const u=new Map;for(const A of _.value){const j=(D(A.primary_language)||"— Unknown —").trim(),c=parseFloat(A.latitude),P=parseFloat(A.longitude);let p=u.get(j);p||(p={key:"full:"+j,label:j,color:ti,peopleGroupCount:0,population:0,coords:[],originalLabels:[j]},u.set(j,p)),p.peopleGroupCount++,p.population+=parseInt(A.population,10)||0,isFinite(c)&&isFinite(P)&&p.coords.push([P,c])}return[...u.values()].sort((A,j)=>j.peopleGroupCount-A.peopleGroupCount)});function $(u){if(!u||typeof u!="string")return"";const A=u.indexOf(",");return(A>0?u.slice(0,A):u).trim()}function w(u){return(u||"").trim()}function L(u){if(!u||typeof u!="string")return"Unknown";const A=u.split(",").map(c=>c.trim()).filter(Boolean);if(A.length>=2){const c=[...A].reverse().join(" ");if(ln[c])return ln[c];if(A.length>=3){const P=[A[1],A[0]].join(" ");if(ln[P])return ln[P]}}if(ln[u])return ln[u];const j=u.replace(/\s*\(.*?\)\s*$/,"").trim();return j!==u&&ln[j]?ln[j]:/ sign language$/i.test(u)?"Sign Language":"Unknown"}const E=la(()=>{const u=[],A=new Set;for(const j of Object.values(ee.countries||{}))for(const c of j.neighbors||[]){const P=Number(c.lat),p=Number(c.lng);if(!isFinite(P)||!isFinite(p))continue;const M=(c.code||c.name)+"|"+c.country;A.has(M)||(A.add(M),u.push({id:M,name:c.name,country:c.country,lang:c.lang,pct:c.pct_christian||0,pop:c.pop||0,lat:P,lng:p,family:L(c.lang),base:$(c.lang),full:w(c.lang)}))}return u});function I(u){let A=0,j=0,c=0;for(const P of u||[])Array.isArray(P)&&(A+=P[0],j+=P[1],c++);return c?[A/c,j/c]:null}const G=la(()=>{const u=g.value,A=u==="family"?k.value:u==="dialect"?T.value:x.value,j=[];for(const c of A){if(!c.peopleGroupCount)continue;const P=I(c.coords);if(!P)continue;let p;u==="family"?p={kind:"family",set:new Set([c.label])}:u==="dialect"?p={kind:"full",set:new Set(c.originalLabels||[c.label])}:p={kind:"base",set:new Set([c.label])},j.push({key:c.key||c.label,label:c.label,level:u,count:c.peopleGroupCount,pop:c.population||0,lng:P[0],lat:P[1],color:c.color||ti,match:p})}return j.sort((c,P)=>P.count-c.count),j}),S=la(()=>{const u=[],A=[],j=E.value;for(const c of G.value){const{kind:P,set:p}=c.match;for(const M of j){const N=P==="family"?M.family:P==="full"?M.full:M.base;p.has(N)&&(u.push({...M,coreKey:c.key,color:n(M.pct)}),A.push({coreKey:c.key,from:[M.lng,M.lat],to:[c.lng,c.lat]}))}}return{greens:u,links:A}}),v=la(()=>({cores:G.value.length,unreached:G.value.reduce((u,A)=>u+A.count,0),petals:S.value.greens.length})),K=la(()=>G.value.find(u=>u.key===d.value)||null),{map:O,initializeMap:q,destroy:sa}=Kt({containerRef:r,accessToken:(i==null?void 0:i.value)||t.value.tk||"",style:t.value.style??"mapbox://styles/mapbox/light-v11",center:t.value.center??[55,22],zoom:t.value.zoom??1.7,minZoom:1,maxZoom:12}),ea=u=>({type:"FeatureCollection",features:u});function ga(){return ea(G.value.map(u=>({type:"Feature",geometry:{type:"Point",coordinates:[u.lng,u.lat]},properties:{key:u.key,label:u.label+" ("+u.count+")",count:u.count,color:u.color}})))}function Sa(){return ea(S.value.greens.map(u=>({type:"Feature",geometry:{type:"Point",coordinates:[u.lng,u.lat]},properties:{name:u.name,country:u.country,lang:u.lang,pct:u.pct,color:u.color,coreKey:u.coreKey}})))}function Ma(){return ea(S.value.links.map(u=>({type:"Feature",geometry:{type:"LineString",coordinates:[u.from,u.to]},properties:{coreKey:u.coreKey}})))}function ma(u,A,j){const c=u.getSource(A);c?c.setData(j):u.addSource(A,{type:"geojson",data:j})}function pa(){var A;const u=O.value;!u||!((A=u.isStyleLoaded)!=null&&A.call(u))||(ma(u,Iu,Ma()),ma(u,Mu,Sa()),ma(u,il,ga()),u.getLayer(Ji)||u.addLayer({id:Ji,type:"line",source:Iu,paint:{"line-color":Wi,"line-width":.6,"line-opacity":.12}}),u.getLayer(oo)||u.addLayer({id:oo,type:"circle",source:Mu,paint:{"circle-radius":["interpolate",["linear"],["zoom"],1,1.4,6,3],"circle-color":["get","color"],"circle-stroke-width":.4,"circle-stroke-color":"#fff","circle-opacity":.82}}),u.getLayer(Te)||u.addLayer({id:Te,type:"circle",source:il,paint:{"circle-radius":["interpolate",["linear"],["get","count"],1,8,25,18,120,30],"circle-color":ti,"circle-opacity":.5,"circle-stroke-width":2,"circle-stroke-color":Yi}}),u.getLayer(wu)||u.addLayer({id:wu,type:"symbol",source:il,minzoom:2.2,layout:{"text-field":["get","label"],"text-size":11,"text-offset":[0,1.4],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":Yi,"text-halo-color":"#fff","text-halo-width":1.4}}),Y())}function Y(){const u=O.value;if(!u||!u.getLayer(Ji))return;const A=d.value;u.setPaintProperty(Ji,"line-opacity",A?["case",["==",["get","coreKey"],A],.7,.04]:.12),u.setPaintProperty(Ji,"line-color",A?["case",["==",["get","coreKey"],A],Nf,Wi]:Wi),u.getLayer(oo)&&u.setPaintProperty(oo,"circle-opacity",A?["case",["==",["get","coreKey"],A],.95,.18]:.82),u.getLayer(Te)&&u.setPaintProperty(Te,"circle-opacity",A?["case",["==",["get","key"],A],.9,.4]:.5)}function ta(u){d.value=d.value===u?null:u,Y();const A=K.value,j=O.value;if(A&&j){const c=S.value.links.filter(U=>U.coreKey===A.key).map(U=>U.from).concat([[A.lng,A.lat]]);let P=A.lng,p=A.lng,M=A.lat,N=A.lat;for(const U of c)P=Math.min(P,U[0]),p=Math.max(p,U[0]),M=Math.min(M,U[1]),N=Math.max(N,U[1]);try{j.stop(),j.fitBounds([[P,M],[p,N]],{padding:90,maxZoom:5.5,duration:700})}catch{}}}function aa(u){g.value!==u&&(g.value=u,d.value=null)}cn([g,()=>_.value.length],()=>{l.value&&pa()});async function ba(){const u=t.value.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL);if(!u)throw new Error("No API base configured (apiBase / window.MAP_APP_API_URL / VITE_API_BASE_URL) — failing closed, no default host.");const j=await fetch(u.replace(/\/?$/,"")+"/api/people-groups/list?fields="+"slug,name,latitude,longitude,country_code,primary_language,wagf_block"+"&lang=en",{cache:"no-store"});if(!j.ok)throw new Error("list "+j.status);const c=await j.json();return(c.posts||c.data||c.records||c.results||(Array.isArray(c)?c:[])).map(p=>({...p,id:p.slug}))}Rn(async()=>{var j,c,P,p,M,N;await q();const u=O.value;try{u&&u.setProjection("mercator")}catch{}try{_.value=await ba()}catch(U){s.value="Live API unreachable — "+U.message,l.value=!0;return}if(l.value=!0,t.value.debugExpose&&typeof window<"u")try{(((P=(c=(j=o.value)==null?void 0:j.getRootNode)==null?void 0:c.call(j))==null?void 0:P.host)||window).__flowers={get mode(){return g.value},setMode:aa,get stats(){return v.value},selectCore:ta}}catch{}const A=()=>{pa(),u.on("click",Te,U=>{var C;const h=(C=U.features)==null?void 0:C[0];h&&ta(h.properties.key)}),u.on("mouseenter",Te,()=>{u.getCanvas().style.cursor="pointer"}),u.on("mouseleave",Te,()=>{u.getCanvas().style.cursor=""})};(p=u==null?void 0:u.isStyleLoaded)!=null&&p.call(u)?A():(M=u==null?void 0:u.once)==null||M.call(u,"load",A),(N=u==null?void 0:u.once)==null||N.call(u,"idle",()=>{l.value&&pa()})}),Ue(()=>{sa()}),On(` - .fc-root { position:absolute; inset:0; overflow:hidden; background:#ffffff; color:#1f2937; isolation:isolate; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - .fc-map { position:absolute; inset:0; } - .fc-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:${Wi}; font:13px/1 ui-monospace,monospace; z-index:5; } - /* the 3 MODE CIRCLES at the top */ - .fc-modes { position:absolute; top:12px; left:50%; transform:translateX(-50%); z-index:30; display:flex; gap:14px; align-items:flex-start; } - .fc-mode { display:flex; flex-direction:column; align-items:center; gap:5px; cursor:pointer; background:none; border:0; } - .fc-circle { width:54px; height:54px; border-radius:50%; background:#fff; border:3px solid #d1d5db; display:flex; - align-items:center; justify-content:center; font:800 11px/1 ui-monospace,monospace; color:#9ca3af; box-shadow:0 2px 10px rgba(0,0,0,.12); transition:all .15s; } - .fc-mode.on .fc-circle { border-color:${ti}; color:${Yi}; transform:scale(1.08); box-shadow:0 4px 16px rgba(225,29,72,.3); } - .fc-mode:hover .fc-circle { border-color:${ti}; } - .fc-mode-lbl { font:700 10px/1 ui-monospace,monospace; letter-spacing:.04em; text-transform:uppercase; color:#6b7280; } - .fc-mode.on .fc-mode-lbl { color:${Yi}; } - .fc-mode-sz { font:600 9px/1 ui-monospace,monospace; color:#9ca3af; } - .fc-stats { position:absolute; top:14px; right:12px; z-index:30; background:rgba(255,255,255,.95); border:1px solid #d1d5db; - border-radius:8px; padding:7px 11px; font:600 11px/1.5 ui-monospace,monospace; color:#374151; text-align:right; } - .fc-stats b { color:${Yi}; } - .fc-legend { position:absolute; left:12px; bottom:30px; z-index:25; background:rgba(255,255,255,.95); border:1px solid #d1d5db; - border-radius:10px; padding:9px 12px; max-width:250px; box-shadow:0 4px 14px rgba(0,0,0,.12); font-size:11px; color:#374151; } - .fc-legend h4 { font:700 9px/1 ui-monospace,monospace; letter-spacing:.1em; text-transform:uppercase; color:#6b7280; margin-bottom:6px; } - .fc-lrow { display:flex; align-items:center; gap:8px; padding:2px 0; } - .fc-dot { width:12px; height:12px; border-radius:50%; border:1px solid rgba(0,0,0,.25); flex:0 0 auto; } - .fc-footer { position:absolute; left:0; right:0; bottom:0; z-index:20; background:${Wi}; color:#dbe4f3; - font:10px/1.4 ui-monospace,monospace; padding:5px 12px; display:flex; flex-wrap:wrap; gap:3px 14px; } - .fc-footer b { color:#fff; } -`,"flower-clusters");const na=[{key:"family",label:"Family",sz:"fewer · bigger"},{key:"language",label:"Language",sz:"more"},{key:"dialect",label:"Dialect",sz:"most"}];return(u,A)=>(z(),W("div",{ref_key:"fcRoot",ref:o,class:"fc-root"},[f("div",{ref_key:"mapContainer",ref:r,class:"fc-map"},null,512),l.value?fa("",!0):(z(),W("div",kf,X(s.value),1)),f("div",Gf,[(z(),W(Aa,null,Ua(na,j=>f("button",{key:j.key,class:Ia(["fc-mode",{on:g.value===j.key}]),role:"tab","aria-selected":g.value===j.key,onClick:c=>aa(j.key)},[f("span",Af,X(j.label.slice(0,3).toUpperCase()),1),f("span",Sf,X(j.label),1),f("span",Ef,X(j.sz),1)],10,vf)),64))]),l.value?(z(),W("div",Mf,[f("b",null,X(v.value.cores),1),A[0]||(A[0]=ya(" flowers · ",-1)),f("b",null,X(v.value.unreached.toLocaleString()),1),A[1]||(A[1]=ya(" unreached",-1)),A[2]||(A[2]=f("br",null,null,-1)),f("b",null,X(v.value.petals.toLocaleString()),1),ya(" reached petals · by "+X(g.value),1)])):fa("",!0),l.value?(z(),W("div",If,[A[5]||(A[5]=f("h4",null,"Flower clusters",-1)),f("div",wf,[f("span",{class:"fc-dot",style:Ka({background:ti})},null,4),A[3]||(A[3]=ya(" Unreached language cluster (core, size = #PGs)",-1))]),f("div",xf,[f("span",{class:"fc-dot",style:Ka({background:n(80)})},null,4),A[4]||(A[4]=ya(" Reached neighbor (granular, real coord)",-1))]),A[6]||(A[6]=f("div",{class:"fc-lrow",style:{color:"#6b7280","font-size":"10px","margin-top":"4px"}},"click a top circle to re-cluster · click a core to bloom its petals",-1))])):fa("",!0),l.value?(z(),W("div",Tf,[...A[7]||(A[7]=[f("span",null,[f("b",null,"Flower-clusters"),ya(" red cores (clustered) → granular green reached petals (same language)")],-1),f("span",null,"taxonomy = research-map semantic tree (family→language→dialect)",-1),f("span",null,"unreached = LIVE UPG data · reached = baked PPLR",-1),f("span",null,"Luke 10:2",-1)])])):fa("",!0)],512))}},Rf={class:"dun-bar"},$f={class:"dun-seg",role:"tablist","aria-label":"Choose a view"},Ff=["aria-selected","onClick"],Kf={class:"dun-hint"},Bf={class:"dun-stage"},Of=Object.freeze(Object.defineProperty({__proto__:null,default:{__name:"upg-neighbors",setup(a){const n=Ya("profileConfig"),e=la(()=>(n==null?void 0:n.value)||{}),i=[{key:"cockpit",label:"Overview",hint:"crossfilter hub"},{key:"send-map",label:"Send Map",hint:"reached → unreached arcs"},{key:"flower-mesh",label:"Flower Mesh",hint:"radial bloom"},{key:"lang-cluster",label:"Lang Cluster",hint:"language bounded-sets"},{key:"flowers",label:"Flowers",hint:"family · language · dialect cores + granular petals"}],t=new Set(i.map(g=>g.key)),o=ua("cockpit"),r=ua(null);function l(g){t.has(g)&&(o.value=g)}Rn(()=>{var d,_,k;const g=e.value.view;if(g&&t.has(g)&&(o.value=g),e.value.debugExpose&&typeof window<"u")try{const x=((k=(_=(d=r.value)==null?void 0:d.getRootNode)==null?void 0:_.call(d))==null?void 0:k.host)||window;x.__neighbors={get view(){return o.value},setView:l}}catch{}}),On(` - .dun-root { position:absolute; inset:0; display:flex; flex-direction:column; overflow:hidden; - background:#0e1730; isolation:isolate; - font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } - .dun-bar { flex:0 0 auto; display:flex; align-items:center; gap:10px; padding:7px 12px; - background:#001b44; border-bottom:1px solid #002e6e; z-index:50; } - .dun-brand { font:800 11px/1 ui-monospace,monospace; letter-spacing:.06em; text-transform:uppercase; - color:#fff; background:rgba(255,255,255,.1); padding:6px 10px; border-radius:7px; white-space:nowrap; } - .dun-seg { display:inline-flex; background:#0e1730; border:1px solid #284a86; border-radius:999px; - padding:3px; gap:2px; flex-wrap:wrap; } - .dun-seg button { border:0; background:transparent; color:#9fb3d9; cursor:pointer; - font:700 11px/1 ui-monospace,monospace; padding:6px 12px; border-radius:999px; } - .dun-seg button.on { background:#002e6e; color:#fff; } - .dun-seg button:hover:not(.on) { color:#dbe4f3; } - .dun-hint { margin-left:auto; font:600 10px/1.3 ui-monospace,monospace; color:#7e90b6; white-space:nowrap; } - .dun-stage { flex:1 1 0; position:relative; min-height:0; background:#fff; } - /* each child view root is position:absolute;inset:0 → fills the stage */ - @media (max-width:640px){ .dun-hint{ display:none; } .dun-brand{ display:none; } } -`,"upg-neighbors");const s=la(()=>{var g;return((g=i.find(d=>d.key===o.value))==null?void 0:g.hint)||""});return(g,d)=>(z(),W("div",{ref_key:"rootEl",ref:r,class:"dun-root"},[f("div",Rf,[d[0]||(d[0]=f("span",{class:"dun-brand"},"My UPG Neighbors",-1)),f("div",$f,[(z(),W(Aa,null,Ua(i,_=>f("button",{key:_.key,role:"tab","aria-selected":o.value===_.key,class:Ia({on:o.value===_.key}),onClick:k=>l(_.key)},X(_.label),11,Ff)),64))]),f("span",Kf,X(s.value),1)]),f("div",Bf,[o.value==="cockpit"?(z(),Me(wg,{key:0})):o.value==="send-map"?(z(),Me(Yg,{key:1})):o.value==="flower-mesh"?(z(),Me(Ng,{key:2})):o.value==="lang-cluster"?(z(),Me(Kg,{key:3})):o.value==="flowers"?(z(),Me(Lf,{key:4})):fa("",!0)])],512))}}},Symbol.toStringTag,{value:"Module"}))})(); diff --git a/public/doxa-maps/index.html b/public/doxa-maps/index.html index caeb837f9..e50cb690d 100644 --- a/public/doxa-maps/index.html +++ b/public/doxa-maps/index.html @@ -130,7 +130,7 @@ header.top .sub { margin-top: 3px; font: 12px/1.4 var(--sans); color: var(--mut) + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":22,"profileCount":35,"bundles":[{"bundle":"all-people-groups","scriptUrl":"./all-people-groups/all-people-groups.js","output":"doxa-maps/all-people-groups/all-people-groups.js","integrity":"sha384-3kskcN7GLnCNNOrJINJt4n5ERXa0qpwyRNcuVuw4++2KzU0LwGYnLW3aepEu8jDg","elements":["all-people-groups"],"profiles":[{"profile":"all-people-groups","file":"all-people-groups.vue","description":"All 12,379 people groups (peoplegroups.org) in four colors — reached,","element":"all-people-groups","type":"single","isMap":true,"iframeUrl":"./all-people-groups/all-people-groups/index.html","scriptUrl":"./all-people-groups/all-people-groups.js","embed":{"iframe":"\u003ciframe src=\"./all-people-groups/all-people-groups/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-3kskcN7GLnCNNOrJINJt4n5ERXa0qpwyRNcuVuw4++2KzU0LwGYnLW3aepEu8jDg\" crossorigin=\"anonymous\">\u003c/script>\n\u003call-people-groups profile-config='{\"profile\":\"all-people-groups\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/all-people-groups>"},"bundle":"all-people-groups"}]},{"bundle":"big-picture","scriptUrl":"./big-picture/big-picture.js","output":"doxa-maps/big-picture/big-picture.js","integrity":"sha384-3I1mBK8C0GOMsEJyYTyztMqFnvn4EGg3F2KFhYSVie+o2YKplcSFcOxWI4L2+cmr","elements":["bp-big-picture","bp-research-header","people-groups-grid"],"composes":["bp-research-header","people-groups-grid"],"profiles":[{"profile":"big-picture","file":"big-picture.vue","description":"The Cat-4 composite that PAIRS the two real capability elements of the","element":"bp-big-picture","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./big-picture/big-picture/index.html","scriptUrl":"./big-picture/big-picture.js","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./big-picture/big-picture.js\" integrity=\"sha384-3I1mBK8C0GOMsEJyYTyztMqFnvn4EGg3F2KFhYSVie+o2YKplcSFcOxWI4L2+cmr\" crossorigin=\"anonymous\">\u003c/script>\n\u003cbp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/bp-big-picture>"},"instances":[{"id":"big-picture","title":"Big Picture — research header ↔ people-groups grid (composite)","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/big-picture/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Big Picture — frontier accent","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture-frontier","accent":"#22d3ee","title":"Big Picture — Frontier Focus"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"big-picture"}]},{"bundle":"cities-internet","scriptUrl":"./cities-internet/cities-internet.js","output":"doxa-maps/cities-internet/cities-internet.js","integrity":"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr","elements":["cities-internet-map"],"profiles":[{"profile":"connectivity-list","file":"connectivity-list.vue","description":"Countries where DX people groups live, grouped by region, showing measured internet penetration","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/connectivity-list/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"connectivity-map","file":"connectivity-map.vue","description":"Every country shaded by measured internet penetration, with its named carriers and dominant","element":"cities-internet-map","type":"single","isMap":true,"iframeUrl":"./cities-internet/connectivity-map/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Four validated research tables, one tab each, with sortable and filterable columns, CSV and JSON","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/data-tables/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}}]},{"bundle":"country-posters","scriptUrl":"./country-posters/country-posters.js","output":"doxa-maps/country-posters/country-posters.js","integrity":"sha384-amheyqep13c83pKspBiNh8x4DIm5S/L7ifL34zSxsAe+LbpB0YW7DPH+a30ba6Xc","elements":["country-posters-map"],"composes":["country-posters/country-poster-wall","country-posters/countries-map"],"profiles":[{"profile":"countries-map","file":"countries-map.vue","description":"The researcher's workbench retargeted from people groups to COUNTRIES — region","element":"country-posters-map","type":"single","isMap":true,"iframeUrl":"./country-posters/countries-map/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/countries-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-amheyqep13c83pKspBiNh8x4DIm5S/L7ifL34zSxsAe+LbpB0YW7DPH+a30ba6Xc\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}},{"profile":"country-poster-wall","file":"country-poster-wall.vue","description":"One printable card per country, grouped into COLLAPSIBLE regional sections so the","element":"country-posters-map","type":"single","isMap":false,"iframeUrl":"./country-posters/country-poster-wall/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/country-poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-amheyqep13c83pKspBiNh8x4DIm5S/L7ifL34zSxsAe+LbpB0YW7DPH+a30ba6Xc\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}},{"profile":"country-posters-mfe","file":"country-posters-mfe.vue","description":"Country Posters as ONE two-tab element — the countries map and the printable","element":"country-posters-mfe","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./country-posters/country-posters-mfe/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/country-posters-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-amheyqep13c83pKspBiNh8x4DIm5S/L7ifL34zSxsAe+LbpB0YW7DPH+a30ba6Xc\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}}]},{"bundle":"dashboard-plus-grid","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","output":"doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js","integrity":"sha384-VOkoTUw4VURBoPSbk3YnU3Wc/JuN+ywf1eF9D6RHBI2Be/8N8FlY3WX/2CkNk5NS","elements":["dashboard-plus-grid"],"composes":["research-dashboard","people-groups-grid"],"profiles":[{"profile":"dashboard-plus-grid","file":"dashboard-plus-grid.vue","description":"Both children are IMPORTED DIRECTLY (compiled into this ONE bundle — no runtime bundle","element":"dashboard-plus-grid","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./dashboard-plus-grid/dashboard-plus-grid/index.html","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","embed":{"iframe":"\u003ciframe src=\"./dashboard-plus-grid/dashboard-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-VOkoTUw4VURBoPSbk3YnU3Wc/JuN+ywf1eF9D6RHBI2Be/8N8FlY3WX/2CkNk5NS\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/dashboard-plus-grid>"},"instances":[{"id":"default","title":"default","apiBaseUrl":"","props":{"profile":"dashboard-plus-grid"},"element":"dashboard-plus-grid","iframeUrl":"./dashboard-plus-grid/dashboard-plus-grid/default/index.html","embed":{"iframe":"\u003ciframe src=\"./dashboard-plus-grid/dashboard-plus-grid/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"demo-map","scriptUrl":"./demo-map/demo-map.js","output":"doxa-maps/demo-map/demo-map.js","integrity":"sha384-WLB+/GTY8u9CWAKt72vKJroKi26oGzzjlGdA0iA3DSSP9oWHnUb8r6jtjAWSw0ee","elements":["demo-map"],"profiles":[{"profile":"demo-map","file":"demo-map.vue","description":"Simple two-tab demo map. Tab 1 colors pins by religion (shared","element":"demo-map","type":"parameterized","isMap":true,"iframeUrl":"./demo-map/demo-map/index.html","scriptUrl":"./demo-map/demo-map.js","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./demo-map/demo-map.js\" integrity=\"sha384-WLB+/GTY8u9CWAKt72vKJroKi26oGzzjlGdA0iA3DSSP9oWHnUb8r6jtjAWSw0ee\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdemo-map profile-config='{\"profile\":\"demo-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/demo-map>"},"instances":[{"id":"maplibre","title":"Demo map — MapLibre (token-free)","apiBaseUrl":"","props":{"profile":"demo-map","provider":"maplibre","instanceId":"demo-maplibre"},"element":"demo-map","iframeUrl":"./demo-map/demo-map/maplibre/index.html","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"demo-map"}]},{"bundle":"doxa-maps-spa","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","output":"doxa-maps/doxa-maps-spa/doxa-maps-spa.js","integrity":"sha384-1f+/rBSGo/1jyUmRmGg34CIU/PcGkB7M3jah1DO0ocb5O0zj81wpUemXcz4WAFz8","elements":["doxa-maps-spa"],"composes":["bp-big-picture","doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map"],"profiles":[{"profile":"doxa-maps-spa","file":"doxa-maps-spa.vue","description":"The DX-maps app itself: one element whose vertical-tab rail nests every other","element":"doxa-maps-spa","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./doxa-maps-spa/doxa-maps-spa/index.html","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-1f+/rBSGo/1jyUmRmGg34CIU/PcGkB7M3jah1DO0ocb5O0zj81wpUemXcz4WAFz8\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-maps-spa>"},"instances":[{"id":"app","title":"Research Gallery — Big Picture + every research map (app-shell)","apiBaseUrl":"","props":{"profile":"doxa-maps-spa","provider":"maplibre","instanceId":"doxa-maps-spa-app","title":"Research Gallery"},"element":"doxa-maps-spa","iframeUrl":"./doxa-maps-spa/doxa-maps-spa/app/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/app/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-research-map","scriptUrl":"./doxa-research-map/doxa-research-map.js","output":"doxa-maps/doxa-research-map/doxa-research-map.js","integrity":"sha384-LyIs0sqdkyJcj3DESqefXc7jsD96o+H+YVcOIq2kCdwaS+ZeBLqcn//06n1W1blE","elements":["doxa-research-map"],"profiles":[{"profile":"research-map","file":"research-map.vue","description":"The researcher's workbench: every piece a missiologist, demographer or","element":"doxa-research-map","type":"monolithic","isMap":true,"iframeUrl":"./doxa-research-map/research-map/index.html","scriptUrl":"./doxa-research-map/doxa-research-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-LyIs0sqdkyJcj3DESqefXc7jsD96o+H+YVcOIq2kCdwaS+ZeBLqcn//06n1W1blE\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-research-map>"},"instances":[{"id":"maplibre","title":"Research map — MapLibre (token-free, no search bar)","apiBaseUrl":"","props":{"profile":"research-map","provider":"maplibre","instanceId":"research-map-maplibre"},"element":"doxa-research-map","iframeUrl":"./doxa-research-map/research-map/maplibre/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-research-map/research-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-simple-map","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","output":"doxa-maps/doxa-simple-map/doxa-simple-map.js","integrity":"sha384-FtEGLeSRNfBCdmK26IURIxCldSnfKphxRT74XgjftFGzNpvube+ov/EVBFi2gXjo","elements":["doxa-map","doxa-simple-map"],"profiles":[{"profile":"doxa-simple-map","file":"doxa-simple-map.vue","description":"The simple world map, shipped as three presets off ONE prop table —","element":"doxa-map","type":"parameterized","isMap":true,"iframeUrl":"./doxa-simple-map/doxa-simple-map/index.html","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-FtEGLeSRNfBCdmK26IURIxCldSnfKphxRT74XgjftFGzNpvube+ov/EVBFi2gXjo\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-map>"},"instances":[{"id":"prayer","title":"Prayer Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-prayer","dataSource":"pray-tools","tabs":[{"id":"prayer","colorStrategy":"prayer","legend":"prayer","popup":"prayer"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/prayer/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/prayer/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"engagement","title":"Engagement Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-engagement","dataSource":"pray-tools","tabs":[{"id":"engagement","colorStrategy":"engagement","legend":"engagement","popup":"engagement"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/engagement/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/engagement/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"adoption","title":"Adoption Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-adoption","dataSource":"pray-tools","tabs":[{"id":"adoption","colorStrategy":"adoption","legend":"adoption","popup":"adoption"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/adoption/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/adoption/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-vision-card","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","output":"doxa-maps/doxa-vision-card/doxa-vision-card.js","integrity":"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn","elements":["doxa-vision-card"],"profiles":[{"profile":"doxa-vision-card","file":"doxa-vision-card.vue","description":"The Capability-1 example: ONE folder -> ONE bundle -> ONE element.","element":"doxa-vision-card","type":"parameterized","isMap":false,"iframeUrl":"./doxa-vision-card/doxa-vision-card/index.html","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-vision-card/doxa-vision-card.js\" integrity=\"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-vision-card profile-config='{\"profile\":\"doxa-vision-card\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-vision-card>"},"instances":[{"id":"default","title":"Vision card — reach at a glance","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-default"},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/default/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Vision card — frontier accent","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-frontier","accent":"#22d3ee","title":"The last frontier of the gospel.","tagline":"Frontier people groups — where fewer than one in a thousand follow Jesus.","stats":[{"value":"1,910","label":"Frontier groups","note":"under 0.1% believers"},{"value":"2.1B","label":"People","note":"living in frontier settings"},{"value":"0.1%","label":"Christian","note":"or fewer, in each group"}]},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"doxa-vision-card"}]},{"bundle":"golden-path-check","scriptUrl":"./golden-path-check/golden-path-check.js","output":"doxa-maps/golden-path-check/golden-path-check.js","integrity":"sha384-1V/sT5SkV0U9yTCK9ELIOFfU1ZIJkInIF6nG3UllJ4dxax3RsEAupSGLJEFK6e14","elements":["golden-path-check"],"profiles":[{"profile":"golden-path-check","file":"golden-path-check.vue","description":"A live self-test of the develop-a-plugin-and-see-it-live path: it reads the built","element":"golden-path-check","type":"single","isMap":false,"iframeUrl":"./golden-path-check/golden-path-check/index.html","scriptUrl":"./golden-path-check/golden-path-check.js","embed":{"iframe":"\u003ciframe src=\"./golden-path-check/golden-path-check/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./golden-path-check/golden-path-check.js\" integrity=\"sha384-1V/sT5SkV0U9yTCK9ELIOFfU1ZIJkInIF6nG3UllJ4dxax3RsEAupSGLJEFK6e14\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgolden-path-check profile-config='{\"profile\":\"golden-path-check\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/golden-path-check>"}}]},{"bundle":"gospel-resources","scriptUrl":"./gospel-resources/gospel-resources.js","output":"doxa-maps/gospel-resources/gospel-resources.js","integrity":"sha384-DLpCR/4TKWn/tY/3M4MYKfBcueIKSL1WhSTGSWs49t6raFYF5vJit++4TpmCdNJ2","elements":["gospel-resources-map"],"composes":["resources-map","data-tables"],"profiles":[{"profile":"charts","file":"charts.vue","description":"The gap measured by LANGUAGE (ISO 639-3) rather than by people group, because one translation serves every group that speaks it, so counting by group overstates how much work remains.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/charts/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/charts/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-DLpCR/4TKWn/tY/3M4MYKfBcueIKSL1WhSTGSWs49t6raFYF5vJit++4TpmCdNJ2\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Eight tables covering both halves of one question: every gospel resource with its real URL and how much Scripture it is, and the 3,457 people groups where nothing was found with the pools searched recorded per row, plus bridge languages, city bridges, the deaf gap and access against population growth.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/data-tables/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-DLpCR/4TKWn/tY/3M4MYKfBcueIKSL1WhSTGSWs49t6raFYF5vJit++4TpmCdNJ2\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"gospel-dashboard","file":"gospel-dashboard.vue","description":"The gospel map and its tables as one scrolling element: 12,379 people-group pins with the real Scripture, film and Bible-story links for each group's own language, above every resource with its URL and the 3,457 groups where nothing was found, exportable as CSV.","element":"gospel-resources-dashboard","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./gospel-resources/gospel-dashboard/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/gospel-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-DLpCR/4TKWn/tY/3M4MYKfBcueIKSL1WhSTGSWs49t6raFYF5vJit++4TpmCdNJ2\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-list","file":"resources-list.vue","description":"Which people groups have Scripture in their own language and which have none, zero-resource languages first, with every link the verification pass proved and Open Bible Stories labelled as stories rather than as Scripture.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/resources-list/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-DLpCR/4TKWn/tY/3M4MYKfBcueIKSL1WhSTGSWs49t6raFYF5vJit++4TpmCdNJ2\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-map","file":"resources-map.vue","description":"12,379 people-group pins over a country choropleth: tap a pin for the Scripture, audio, film, Bible-story and training links that exist in that group's own language with real URLs, tap a country for every group in it, search by group, language or ISO 639-3 code, and filter to the groups where nothing was found.","element":"gospel-resources-map","type":"single","isMap":true,"iframeUrl":"./gospel-resources/resources-map/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-DLpCR/4TKWn/tY/3M4MYKfBcueIKSL1WhSTGSWs49t6raFYF5vJit++4TpmCdNJ2\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}}]},{"bundle":"my-upg-100-list","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","output":"doxa-maps/my-upg-100-list/my-upg-100-list.js","integrity":"sha384-jGD6GdGzjAWNQ/APgKvUZDcXvryVdhvFXGLWNVENRfjZMurTwcMGmOUXDGF3wvnh","elements":["my-upg-100-list-map"],"composes":["my-upg-100-list/upg-100-list","my-upg-100-list/poster-wall"],"profiles":[{"profile":"poster-wall","file":"poster-wall.vue","description":"A wall of printable poster cards, one per 100-list entry, each with a \"Show on map\"","element":"my-upg-100-list-map","type":"single","isMap":false,"iframeUrl":"./my-upg-100-list/poster-wall/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-jGD6GdGzjAWNQ/APgKvUZDcXvryVdhvFXGLWNVENRfjZMurTwcMGmOUXDGF3wvnh\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-list","file":"upg-100-list.vue","description":"A personal unreached-people-groups list painted as true boundary polygons —","element":"my-upg-100-list-map","type":"single","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-list/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-jGD6GdGzjAWNQ/APgKvUZDcXvryVdhvFXGLWNVENRfjZMurTwcMGmOUXDGF3wvnh\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-mfe","file":"upg-100-mfe.vue","description":"The standalone, shareable and embeddable composite of the my-upg-100-list family — it nests the map","element":"my-upg-100-list-map","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-mfe/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-jGD6GdGzjAWNQ/APgKvUZDcXvryVdhvFXGLWNVENRfjZMurTwcMGmOUXDGF3wvnh\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}}]},{"bundle":"people-groups-grid","scriptUrl":"./people-groups-grid/people-groups-grid.js","output":"doxa-maps/people-groups-grid/people-groups-grid.js","integrity":"sha384-8B2T2ckH+v8p2hEnkGruUg4Do5ZFsh31QSxYJYMj4/PN/ccHdgaIyK4dyW2GlUAR","elements":["people-groups-grid"],"profiles":[{"profile":"people-groups-grid","file":"people-groups-grid.vue","description":"The people-groups grid as an owned custom element: card list, search and four","element":"people-groups-grid","type":"parameterized","isMap":false,"iframeUrl":"./people-groups-grid/people-groups-grid/index.html","scriptUrl":"./people-groups-grid/people-groups-grid.js","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-8B2T2ckH+v8p2hEnkGruUg4Do5ZFsh31QSxYJYMj4/PN/ccHdgaIyK4dyW2GlUAR\" crossorigin=\"anonymous\">\u003c/script>\n\u003cpeople-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/people-groups-grid>"},"instances":[{"id":"people-groups-grid","title":"People Groups Grid — standalone (own search + 4 dropdowns)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid","pray-base-url":"https://pray.doxa.life"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/people-groups-grid/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"driven","title":"People Groups Grid — externally driven (controls off, props/events)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid-driven","pray-base-url":"https://pray.doxa.life","show-search":"false","show-filters":"false"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/driven/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/driven/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"plugin-studio","scriptUrl":"./plugin-studio/plugin-studio.js","output":"doxa-maps/plugin-studio/plugin-studio.js","integrity":"sha384-2RlLFRU2XdjBN7w+FPguj8INgj57JFg4IFT2AmdefGnR9QQLehbiiAffV45LcsFH","elements":["plugin-studio"],"composes":["bp-big-picture","people-groups-grid","doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-vision-card","all-people-groups","research-dashboard"],"profiles":[{"profile":"plugin-studio","file":"plugin-studio.vue","description":"The developer's viewing surface: a sidebar that is the composability ladder","element":"plugin-studio","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./plugin-studio/plugin-studio/index.html","scriptUrl":"./plugin-studio/plugin-studio.js","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-2RlLFRU2XdjBN7w+FPguj8INgj57JFg4IFT2AmdefGnR9QQLehbiiAffV45LcsFH\" crossorigin=\"anonymous\">\u003c/script>\n\u003cplugin-studio profile-config='{\"profile\":\"plugin-studio\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/plugin-studio>"},"instances":[{"id":"studio","title":"Plugin Studio — every element by capability 5 -> 1 (developer studio)","apiBaseUrl":"","props":{"profile":"plugin-studio","provider":"maplibre","instanceId":"plugin-studio","title":"Plugin Studio"},"element":"plugin-studio","iframeUrl":"./plugin-studio/plugin-studio/studio/index.html","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"prayer-walk-planner","scriptUrl":"./prayer-walk-planner/prayer-walk-planner.js","output":"doxa-maps/prayer-walk-planner/prayer-walk-planner.js","integrity":"sha384-VZxxlIqmR6mKdB1Dx6143LxEyI3POl9ks045yApFu4M4ZlLxsRH3+dCdEMpJb2Vw","elements":["prayer-walk-planner"],"profiles":[{"profile":"prayer-walk-planner","file":"prayer-walk-planner.vue","description":"A simple polygon-drawing tool for planning prayer-walking routes.","element":"prayer-walk-planner","type":"single","isMap":true,"iframeUrl":"./prayer-walk-planner/prayer-walk-planner/index.html","scriptUrl":"./prayer-walk-planner/prayer-walk-planner.js","embed":{"iframe":"\u003ciframe src=\"./prayer-walk-planner/prayer-walk-planner/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-VZxxlIqmR6mKdB1Dx6143LxEyI3POl9ks045yApFu4M4ZlLxsRH3+dCdEMpJb2Vw\" crossorigin=\"anonymous\">\u003c/script>\n\u003cprayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/prayer-walk-planner>"}}]},{"bundle":"regions-dashboard","scriptUrl":"./regions-dashboard/regions-dashboard.js","output":"doxa-maps/regions-dashboard/regions-dashboard.js","integrity":"sha384-O40pHPHtm3m7NB1gcHoLNFy9irG10y4JlEJzt7/KVsJB1KpeDv3mbdzxx4QWZWUA","elements":["regions-dashboard"],"composes":["regions-dashboard/regions-list","regions-dashboard/region-dashboards"],"profiles":[{"profile":"region-dashboards","file":"region-dashboards.vue","description":"The dashboard half of the Driver's 2-tab Regions element: given a region (or a","element":"regions-dashboard","type":"single","isMap":true,"iframeUrl":"./regions-dashboard/region-dashboards/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-O40pHPHtm3m7NB1gcHoLNFy9irG10y4JlEJzt7/KVsJB1KpeDv3mbdzxx4QWZWUA\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}},{"profile":"regions-list","file":"regions-list.vue","description":"A refactor of DX-life's /regions index page (app/pages/regions/index.vue) into","element":"regions-dashboard","type":"single","isMap":true,"iframeUrl":"./regions-dashboard/regions-list/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-O40pHPHtm3m7NB1gcHoLNFy9irG10y4JlEJzt7/KVsJB1KpeDv3mbdzxx4QWZWUA\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}},{"profile":"regions-mfe","file":"regions-mfe.vue","description":"The composite the Driver asked for: ONE element carrying the SELECT VIEW switcher","element":"regions-dashboard","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./regions-dashboard/regions-mfe/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-O40pHPHtm3m7NB1gcHoLNFy9irG10y4JlEJzt7/KVsJB1KpeDv3mbdzxx4QWZWUA\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}}]},{"bundle":"research-dashboard","scriptUrl":"./research-dashboard/research-dashboard.js","output":"doxa-maps/research-dashboard/research-dashboard.js","integrity":"sha384-tAUIe2wERKg/ZRvINilfjrgfNYZeix7iSXYTJI1iSvf3eRtafkVt1a8cHIGyyRTF","elements":["research-dashboard-map"],"profiles":[{"profile":"research-dashboard","file":"research-dashboard.vue","description":"Coordinated-Multiple-Views research dashboard for 10/40-window UPGs (live pray.doxa.life): docked facet rail + map-as-hero + linked table/charts, brushing-and-linking over one in-memory store.","element":"research-dashboard-map","type":"monolithic","isMap":true,"iframeUrl":"./research-dashboard/research-dashboard/index.html","scriptUrl":"./research-dashboard/research-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./research-dashboard/research-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-tAUIe2wERKg/ZRvINilfjrgfNYZeix7iSXYTJI1iSvf3eRtafkVt1a8cHIGyyRTF\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-dashboard-map>"},"bundle":"research-dashboard"}]},{"bundle":"research-map-plus-grid","scriptUrl":"./research-map-plus-grid/research-map-plus-grid.js","output":"doxa-maps/research-map-plus-grid/research-map-plus-grid.js","integrity":"sha384-sOkaMV0UFr2uNXfoJpRvaD+gHD6xFlkmpR7MzEwwFdarYdid8aN9Nj1Y8TqQJuFo","elements":["research-map-plus-grid"],"composes":["doxa-research-map","people-groups-grid"],"profiles":[{"profile":"research-map-plus-grid","file":"research-map-plus-grid.vue","description":"The monolithic 7-tab research map (cap-3) on top, the People Groups grid beneath,","element":"research-map-plus-grid","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./research-map-plus-grid/research-map-plus-grid/index.html","scriptUrl":"./research-map-plus-grid/research-map-plus-grid.js","embed":{"iframe":"\u003ciframe src=\"./research-map-plus-grid/research-map-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-map-plus-grid/research-map-plus-grid.js\" integrity=\"sha384-sOkaMV0UFr2uNXfoJpRvaD+gHD6xFlkmpR7MzEwwFdarYdid8aN9Nj1Y8TqQJuFo\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-map-plus-grid>"},"instances":[{"id":"default","title":"default","apiBaseUrl":"","props":{"profile":"research-map-plus-grid"},"element":"research-map-plus-grid","iframeUrl":"./research-map-plus-grid/research-map-plus-grid/default/index.html","embed":{"iframe":"\u003ciframe src=\"./research-map-plus-grid/research-map-plus-grid/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"stack-demo","scriptUrl":"./stack-demo/stack-demo.js","output":"doxa-maps/stack-demo/stack-demo.js","integrity":"sha384-gnwM6s+puf1K60Nl7crQcC2QC+9BxwpkaTx4OepLZ8VUCraZc+aRlWpsb6nj6Gyf","elements":["stack-demo"],"composes":["research-dashboard-map","people-groups-grid"],"profiles":[{"profile":"stack-demo","file":"stack-demo.vue","description":"Groups TWO independent elements TOP-TO-BOTTOM so you can embed the pair on a page and","element":"stack-demo","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./stack-demo/stack-demo/index.html","scriptUrl":"./stack-demo/stack-demo.js","embed":{"iframe":"\u003ciframe src=\"./stack-demo/stack-demo/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./stack-demo/stack-demo.js\" integrity=\"sha384-gnwM6s+puf1K60Nl7crQcC2QC+9BxwpkaTx4OepLZ8VUCraZc+aRlWpsb6nj6Gyf\" crossorigin=\"anonymous\">\u003c/script>\n\u003cstack-demo profile-config='{\"profile\":\"stack-demo\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/stack-demo>"},"instances":[{"id":"pair","title":"pair","apiBaseUrl":"","props":{"profile":"stack-demo"},"element":"stack-demo","iframeUrl":"./stack-demo/stack-demo/pair/index.html","embed":{"iframe":"\u003ciframe src=\"./stack-demo/stack-demo/pair/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"template-bundle","scriptUrl":"./template-bundle/template-bundle.js","output":"doxa-maps/template-bundle/template-bundle.js","integrity":"sha384-Arx3XL5Mhdv0VcU7RX9gwggLBjx3SH4WFltOaoEJ6mW/jw/E6wgGQHIOkFyRtBRd","elements":["template-bundle"],"profiles":[{"profile":"template-map-a","file":"template-map-a.vue","description":"Minimal example profile A — a colored placeholder, no Mapbox or data.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-a/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-a/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-Arx3XL5Mhdv0VcU7RX9gwggLBjx3SH4WFltOaoEJ6mW/jw/E6wgGQHIOkFyRtBRd\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-a\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"},{"profile":"template-map-b","file":"template-map-b.vue","description":"Minimal example profile B — a second profile in the same bundle.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-b/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-b/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-Arx3XL5Mhdv0VcU7RX9gwggLBjx3SH4WFltOaoEJ6mW/jw/E6wgGQHIOkFyRtBRd\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-b\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"}]},{"bundle":"upg-neighbor","scriptUrl":"./upg-neighbor/upg-neighbor.js","output":"doxa-maps/upg-neighbor/upg-neighbor.js","integrity":"sha384-nhreYhnnIGRgIkQXr3h0xmwX71B2Yhd47erUuAOAqAYgTyNw/IvXaO/FjR09wvKz","elements":["upg-neighbor"],"profiles":[{"profile":"upg-neighbor","file":"upg-neighbor.vue","description":"Who goes to whom: reached neighbors matched to unreached people groups, five lenses","element":"upg-neighbor","type":"monolithic","isMap":true,"iframeUrl":"./upg-neighbor/upg-neighbor/index.html","scriptUrl":"./upg-neighbor/upg-neighbor.js","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-nhreYhnnIGRgIkQXr3h0xmwX71B2Yhd47erUuAOAqAYgTyNw/IvXaO/FjR09wvKz\" crossorigin=\"anonymous\">\u003c/script>\n\u003cupg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/upg-neighbor>"},"instances":[{"id":"send-map","title":"Send Map","apiBaseUrl":"","props":{"profile":"upg-neighbor","view":"send-map"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/send-map/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/send-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"upg-neighbors","title":"UPG Neighbors","apiBaseUrl":"","props":{"profile":"upg-neighbor","view":"cockpit"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/upg-neighbors/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/upg-neighbors/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"lang-cluster","title":"Language Clusters","apiBaseUrl":"","props":{"profile":"upg-neighbor","view":"lang-cluster"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/lang-cluster/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/lang-cluster/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"bloom-cockpit","title":"Bloom Cockpit","apiBaseUrl":"","props":{"profile":"upg-neighbor","view":"cockpit"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/bloom-cockpit/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/bloom-cockpit/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"flower-mesh","title":"Flower Mesh","apiBaseUrl":"","props":{"profile":"upg-neighbor","view":"flower-mesh"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/flower-mesh/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/flower-mesh/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"upg-neighbor"}]}]}; \n\n" + "script": "\n\n" }, "instances": [ { "id": "send-map", - "title": "Send Map (legacy)", + "title": "Send Map", "apiBaseUrl": "", "props": { "profile": "upg-neighbor", - "legacyElement": "send-map", - "legacyTitle": "Send Map" + "view": "send-map" }, "element": "upg-neighbor", "iframeUrl": "./upg-neighbor/upg-neighbor/send-map/index.html", @@ -1122,12 +1121,11 @@ }, { "id": "upg-neighbors", - "title": "UPG Neighbors (legacy)", + "title": "UPG Neighbors", "apiBaseUrl": "", "props": { "profile": "upg-neighbor", - "legacyElement": "upg-neighbors", - "legacyTitle": "UPG Neighbors" + "view": "cockpit" }, "element": "upg-neighbor", "iframeUrl": "./upg-neighbor/upg-neighbor/upg-neighbors/index.html", @@ -1137,12 +1135,11 @@ }, { "id": "lang-cluster", - "title": "Language Clusters (legacy)", + "title": "Language Clusters", "apiBaseUrl": "", "props": { "profile": "upg-neighbor", - "legacyElement": "lang-cluster", - "legacyTitle": "Language Clusters" + "view": "lang-cluster" }, "element": "upg-neighbor", "iframeUrl": "./upg-neighbor/upg-neighbor/lang-cluster/index.html", @@ -1152,12 +1149,11 @@ }, { "id": "bloom-cockpit", - "title": "Bloom Cockpit (legacy)", + "title": "Bloom Cockpit", "apiBaseUrl": "", "props": { "profile": "upg-neighbor", - "legacyElement": "bloom-cockpit", - "legacyTitle": "Bloom Cockpit" + "view": "cockpit" }, "element": "upg-neighbor", "iframeUrl": "./upg-neighbor/upg-neighbor/bloom-cockpit/index.html", @@ -1167,12 +1163,11 @@ }, { "id": "flower-mesh", - "title": "Flower Mesh (legacy)", + "title": "Flower Mesh", "apiBaseUrl": "", "props": { "profile": "upg-neighbor", - "legacyElement": "flower-mesh", - "legacyTitle": "Flower Mesh" + "view": "flower-mesh" }, "element": "upg-neighbor", "iframeUrl": "./upg-neighbor/upg-neighbor/flower-mesh/index.html", @@ -1180,7 +1175,8 @@ "iframe": "" } } - ] + ], + "bundle": "upg-neighbor" } ] } diff --git a/public/doxa-maps/upg-neighbor/upg-neighbor.js b/public/doxa-maps/upg-neighbor/upg-neighbor.js index fef58dfb7..14c42eae5 100644 --- a/public/doxa-maps/upg-neighbor/upg-neighbor.js +++ b/public/doxa-maps/upg-neighbor/upg-neighbor.js @@ -1,20 +1,573 @@ -(function(){"use strict";var cs=typeof document<"u"?document.currentScript:null;/** +(function(){"use strict";var hg;const Y5="modulepreload",J5=function(a){return"/"+a},Z5={},yg=function(e,n,t){let i=Promise.resolve();function o(r){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=r,window.dispatchEvent(l),!l.defaultPrevented)throw r}return i.then(r=>{for(const l of r||[])l.status==="rejected"&&o(l.reason);return e().catch(o)})};/** * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function fs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const V={},Ze=[],he=()=>{},en=()=>!1,Mt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),It=e=>e.startsWith("onUpdate:"),J=Object.assign,us=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Yi=Object.prototype.hasOwnProperty,N=(e,t)=>Yi.call(e,t),O=Array.isArray,$e=e=>rt(e)==="[object Map]",as=e=>rt(e)==="[object Set]",tn=e=>rt(e)==="[object Date]",R=e=>typeof e=="function",G=e=>typeof e=="string",Ne=e=>typeof e=="symbol",B=e=>e!==null&&typeof e=="object",sn=e=>(B(e)||R(e))&&R(e.then)&&R(e.catch),Xi=Object.prototype.toString,rt=e=>Xi.call(e),Zi=e=>rt(e).slice(8,-1),hs=e=>rt(e)==="[object Object]",ds=e=>G(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ot=fs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ft=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Qi=/-\w/g,re=Ft(e=>e.replace(Qi,t=>t.slice(1).toUpperCase())),ki=/\B([A-Z])/g,fe=Ft(e=>e.replace(ki,"-$1").toLowerCase()),nn=Ft(e=>e.charAt(0).toUpperCase()+e.slice(1)),ps=Ft(e=>e?`on${nn(e)}`:""),Ee=(e,t)=>!Object.is(e,t),gs=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},er=e=>{const t=parseFloat(e);return isNaN(t)?e:t},on=e=>{const t=G(e)?Number(e):NaN;return isNaN(t)?e:t};let ln;const Nt=()=>ln||(ln=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function _s(e){if(O(e)){const t={};for(let s=0;s{if(s){const n=s.split(sr);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function ms(e){let t="";if(G(e))t=e;else if(O(e))for(let s=0;sn in e}const Ba={},Mn=[],Me=()=>{},jr=()=>!1,Bt=a=>a.charCodeAt(0)===111&&a.charCodeAt(1)===110&&(a.charCodeAt(2)>122||a.charCodeAt(2)<97),Kt=a=>a.startsWith("onUpdate:"),Ja=Object.assign,Yi=(a,e)=>{const n=a.indexOf(e);n>-1&&a.splice(n,1)},bg=Object.prototype.hasOwnProperty,xa=(a,e)=>bg.call(a,e),Ca=Array.isArray,rn=a=>Qn(a)==="[object Map]",Ot=a=>Qn(a)==="[object Set]",Gr=a=>Qn(a)==="[object Date]",ja=a=>typeof a=="function",za=a=>typeof a=="string",fe=a=>typeof a=="symbol",Ta=a=>a!==null&&typeof a=="object",vr=a=>(Ta(a)||ja(a))&&ja(a.then)&&ja(a.catch),Ar=Object.prototype.toString,Qn=a=>Ar.call(a),_g=a=>Qn(a).slice(8,-1),Ut=a=>Qn(a)==="[object Object]",Dt=a=>za(a)&&a!=="NaN"&&a[0]!=="-"&&""+parseInt(a,10)===a,at=Wi(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ht=a=>{const e=Object.create(null);return n=>e[n]||(e[n]=a(n))},fg=/-\w/g,ee=Ht(a=>a.replace(fg,e=>e.slice(1).toUpperCase())),Pg=/\B([A-Z])/g,he=Ht(a=>a.replace(Pg,"-$1").toLowerCase()),zt=Ht(a=>a.charAt(0).toUpperCase()+a.slice(1)),Ji=Ht(a=>a?`on${zt(a)}`:""),we=(a,e)=>!Object.is(a,e),Zi=(a,...e)=>{for(let n=0;n{Object.defineProperty(a,e,{configurable:!0,enumerable:!1,writable:t,value:n})},Cg=a=>{const e=parseFloat(a);return isNaN(e)?a:e},Er=a=>{const e=za(a)?Number(a):NaN;return isNaN(e)?a:e};let $r;const Vt=()=>$r||($r=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Oa(a){if(Ca(a)){const e={};for(let n=0;n{if(n){const t=n.split(jg);t.length>1&&(e[t[0].trim()]=t[1].trim())}}),e}function Ma(a){let e="";if(za(a))e=a;else if(Ca(a))for(let n=0;n!!(a&&a.__v_isRef===!0),aa=a=>za(a)?a:a==null?"":Ca(a)||Ta(a)&&(a.toString===Ar||!ja(a.toString))?Ir(a)?aa(a.value):JSON.stringify(a,xr,2):String(a),xr=(a,e)=>Ir(e)?xr(a,e.value):rn(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((n,[t,i],o)=>(n[qi(t,o)+" =>"]=i,n),{})}:Ot(e)?{[`Set(${e.size})`]:[...e.values()].map(n=>qi(n))}:fe(e)?qi(e):Ta(e)&&!Ca(e)&&!Ut(e)?String(e):e,qi=(a,e="")=>{var n;return fe(a)?`Symbol(${(n=a.description)!=null?n:e})`:a};/** * @vue/reactivity v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let Z;class lr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Z&&(Z.active?(this.parent=Z,this.index=(Z.scopes||(Z.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes){const n=this.scopes.slice();for(t=0,s=n.length;t0&&--this._on===0){if(Z===this)Z=this.prevScope;else{let t=Z;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s0)return;if(ct){let t=ct;for(ct=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;lt;){let t=lt;for(lt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function dn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function pn(e){let t,s=e.depsTail,n=s;for(;n;){const i=n.prevDep;n.version===-1?(n===s&&(s=i),Ss(n),fr(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}e.deps=t,e.depsTail=s}function xs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(gn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function gn(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===ft)||(e.globalVersion=ft,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!xs(e))))return;e.flags|=2;const t=e.dep,s=U,n=ue;U=e,ue=!0;try{dn(e);const i=e.fn(e._value);(t.version===0||Ee(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{U=s,ue=n,pn(e),e.flags&=-3}}function Ss(e,t=!1){const{dep:s,prevSub:n,nextSub:i}=e;if(n&&(n.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)Ss(r,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function fr(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let ue=!0;const _n=[];function de(){_n.push(ue),ue=!1}function pe(){const e=_n.pop();ue=e===void 0?!0:e}function mn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=U;U=void 0;try{t()}finally{U=s}}}let ft=0;class ur{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class bn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!U||!ue||U===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==U)s=this.activeLink=new ur(U,this),U.deps?(s.prevDep=U.depsTail,U.depsTail.nextDep=s,U.depsTail=s):U.deps=U.depsTail=s,yn(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=U.depsTail,s.nextDep=void 0,U.depsTail.nextDep=s,U.depsTail=s,U.deps===s&&(U.deps=n)}return s}trigger(t){this.version++,ft++,this.notify(t)}notify(t){ys();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{vs()}}}function yn(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)yn(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const ws=new WeakMap,Ve=Symbol(""),Cs=Symbol(""),ut=Symbol("");function k(e,t,s){if(ue&&U){let n=ws.get(e);n||ws.set(e,n=new Map);let i=n.get(s);i||(n.set(s,i=new bn),i.map=n,i.key=s),i.track()}}function Pe(e,t,s,n,i,r){const o=ws.get(e);if(!o){ft++;return}const l=f=>{f&&f.trigger()};if(ys(),t==="clear")o.forEach(l);else{const f=O(e),h=f&&ds(s);if(f&&s==="length"){const a=Number(n);o.forEach((p,w)=>{(w==="length"||w===ut||!Ne(w)&&w>=a)&&l(p)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),h&&l(o.get(ut)),t){case"add":f?h&&l(o.get("length")):(l(o.get(Ve)),$e(e)&&l(o.get(Cs)));break;case"delete":f||(l(o.get(Ve)),$e(e)&&l(o.get(Cs)));break;case"set":$e(e)&&l(o.get(Ve));break}}vs()}function Qe(e){const t=j(e);return t===e?t:(k(t,"iterate",ut),_e(e)?t:t.map(Ke))}function Ts(e){return k(e=j(e),"iterate",ut),e}function ge(e,t){return Ue(e)?ht(ke(e)?Ke(t):t):Ke(t)}const ar={__proto__:null,[Symbol.iterator](){return As(this,Symbol.iterator,e=>ge(this,e))},concat(...e){return Qe(this).concat(...e.map(t=>O(t)?Qe(t):t))},entries(){return As(this,"entries",e=>(e[1]=ge(this,e[1]),e))},every(e,t){return Oe(this,"every",e,t,void 0,arguments)},filter(e,t){return Oe(this,"filter",e,t,s=>s.map(n=>ge(this,n)),arguments)},find(e,t){return Oe(this,"find",e,t,s=>ge(this,s),arguments)},findIndex(e,t){return Oe(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Oe(this,"findLast",e,t,s=>ge(this,s),arguments)},findLastIndex(e,t){return Oe(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Oe(this,"forEach",e,t,void 0,arguments)},includes(...e){return Es(this,"includes",e)},indexOf(...e){return Es(this,"indexOf",e)},join(e){return Qe(this).join(e)},lastIndexOf(...e){return Es(this,"lastIndexOf",e)},map(e,t){return Oe(this,"map",e,t,void 0,arguments)},pop(){return at(this,"pop")},push(...e){return at(this,"push",e)},reduce(e,...t){return vn(this,"reduce",e,t)},reduceRight(e,...t){return vn(this,"reduceRight",e,t)},shift(){return at(this,"shift")},some(e,t){return Oe(this,"some",e,t,void 0,arguments)},splice(...e){return at(this,"splice",e)},toReversed(){return Qe(this).toReversed()},toSorted(e){return Qe(this).toSorted(e)},toSpliced(...e){return Qe(this).toSpliced(...e)},unshift(...e){return at(this,"unshift",e)},values(){return As(this,"values",e=>ge(this,e))}};function As(e,t,s){const n=Ts(e),i=n[t]();return n!==e&&!_e(e)&&(i._next=i.next,i.next=()=>{const r=i._next();return r.done||(r.value=s(r.value)),r}),i}const hr=Array.prototype;function Oe(e,t,s,n,i,r){const o=Ts(e),l=o!==e&&!_e(e),f=o[t];if(f!==hr[t]){const p=f.apply(e,r);return l?Ke(p):p}let h=s;o!==e&&(l?h=function(p,w){return s.call(this,ge(e,p),w,e)}:s.length>2&&(h=function(p,w){return s.call(this,p,w,e)}));const a=f.call(o,h,n);return l&&i?i(a):a}function vn(e,t,s,n){const i=Ts(e),r=i!==e&&!_e(e);let o=s,l=!1;i!==e&&(r?(l=n.length===0,o=function(h,a,p){return l&&(l=!1,h=ge(e,h)),s.call(this,h,ge(e,a),p,e)}):s.length>3&&(o=function(h,a,p){return s.call(this,h,a,p,e)}));const f=i[t](o,...n);return l?ge(e,f):f}function Es(e,t,s){const n=j(e);k(n,"iterate",ut);const i=n[t](...s);return(i===-1||i===!1)&&Ms(s[0])?(s[0]=j(s[0]),n[t](...s)):i}function at(e,t,s=[]){de(),ys();const n=j(e)[t].apply(e,s);return vs(),pe(),n}const dr=fs("__proto__,__v_isRef,__isVue"),xn=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ne));function pr(e){Ne(e)||(e=String(e));const t=j(this);return k(t,"has",e),t.hasOwnProperty(e)}class Sn{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const i=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!i;if(s==="__v_isReadonly")return i;if(s==="__v_isShallow")return r;if(s==="__v_raw")return n===(i?r?Pn:En:r?An:Tn).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=O(t);if(!i){let f;if(o&&(f=ar[s]))return f;if(s==="hasOwnProperty")return pr}const l=Reflect.get(t,s,ee(t)?t:n);if((Ne(s)?xn.has(s):dr(s))||(i||k(t,"get",s),r))return l;if(ee(l)){const f=o&&ds(s)?l:l.value;return i&&B(f)?Rs(f):f}return B(l)?i?Rs(l):Os(l):l}}class wn extends Sn{constructor(t=!1){super(!1,t)}set(t,s,n,i){let r=t[s];const o=O(t)&&ds(s);if(!this._isShallow){const h=Ue(r);if(!_e(n)&&!Ue(n)&&(r=j(r),n=j(n)),!o&&ee(r)&&!ee(n))return h||(r.value=n),!0}const l=o?Number(s)e,Dt=e=>Reflect.getPrototypeOf(e);function yr(e,t,s){return function(...n){const i=this.__v_raw,r=j(i),o=$e(r),l=e==="entries"||e===Symbol.iterator&&o,f=e==="keys"&&o,h=i[e](...n),a=s?Ps:t?ht:Ke;return!t&&k(r,"iterate",f?Cs:Ve),J(Object.create(h),{next(){const{value:p,done:w}=h.next();return w?{value:p,done:w}:{value:l?[a(p[0]),a(p[1])]:a(p),done:w}}})}}function Ht(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function vr(e,t){const s={get(i){const r=this.__v_raw,o=j(r),l=j(i);e||(Ee(i,l)&&k(o,"get",i),k(o,"get",l));const{has:f}=Dt(o),h=t?Ps:e?ht:Ke;if(f.call(o,i))return h(r.get(i));if(f.call(o,l))return h(r.get(l));r!==o&&r.get(i)},get size(){const i=this.__v_raw;return!e&&k(j(i),"iterate",Ve),i.size},has(i){const r=this.__v_raw,o=j(r),l=j(i);return e||(Ee(i,l)&&k(o,"has",i),k(o,"has",l)),i===l?r.has(i):r.has(i)||r.has(l)},forEach(i,r){const o=this,l=o.__v_raw,f=j(l),h=t?Ps:e?ht:Ke;return!e&&k(f,"iterate",Ve),l.forEach((a,p)=>i.call(r,h(a),h(p),o))}};return J(s,e?{add:Ht("add"),set:Ht("set"),delete:Ht("delete"),clear:Ht("clear")}:{add(i){const r=j(this),o=Dt(r),l=j(i),f=!t&&!_e(i)&&!Ue(i)?l:i;return o.has.call(r,f)||Ee(i,f)&&o.has.call(r,i)||Ee(l,f)&&o.has.call(r,l)||(r.add(f),Pe(r,"add",f,f)),this},set(i,r){!t&&!_e(r)&&!Ue(r)&&(r=j(r));const o=j(this),{has:l,get:f}=Dt(o);let h=l.call(o,i);h||(i=j(i),h=l.call(o,i));const a=f.call(o,i);return o.set(i,r),h?Ee(r,a)&&Pe(o,"set",i,r):Pe(o,"add",i,r),this},delete(i){const r=j(this),{has:o,get:l}=Dt(r);let f=o.call(r,i);f||(i=j(i),f=o.call(r,i)),l&&l.call(r,i);const h=r.delete(i);return f&&Pe(r,"delete",i,void 0),h},clear(){const i=j(this),r=i.size!==0,o=i.clear();return r&&Pe(i,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(i=>{s[i]=yr(i,e,t)}),s}function Lt(e,t){const s=vr(e,t);return(n,i,r)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?n:Reflect.get(N(s,i)&&i in n?s:n,i,r)}const xr={get:Lt(!1,!1)},Sr={get:Lt(!1,!0)},wr={get:Lt(!0,!1)},Cr={get:Lt(!0,!0)},Tn=new WeakMap,An=new WeakMap,En=new WeakMap,Pn=new WeakMap;function Tr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Os(e){return Ue(e)?e:$t(e,!1,gr,xr,Tn)}function Ar(e){return $t(e,!1,mr,Sr,An)}function Rs(e){return $t(e,!0,_r,wr,En)}function Hl(e){return $t(e,!0,br,Cr,Pn)}function $t(e,t,s,n,i){if(!B(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const r=i.get(e);if(r)return r;const o=Tr(Zi(e));if(o===0)return e;const l=new Proxy(e,o===2?n:s);return i.set(e,l),l}function ke(e){return Ue(e)?ke(e.__v_raw):!!(e&&e.__v_isReactive)}function Ue(e){return!!(e&&e.__v_isReadonly)}function _e(e){return!!(e&&e.__v_isShallow)}function Ms(e){return e?!!e.__v_raw:!1}function j(e){const t=e&&e.__v_raw;return t?j(t):e}function Er(e){return!N(e,"__v_skip")&&Object.isExtensible(e)&&rn(e,"__v_skip",!0),e}const Ke=e=>B(e)?Os(e):e,ht=e=>B(e)?Rs(e):e;function ee(e){return e?e.__v_isRef===!0:!1}function On(e){return ee(e)?e.value:e}const Pr={get:(e,t,s)=>t==="__v_raw"?e:On(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const i=e[t];return ee(i)&&!ee(s)?(i.value=s,!0):Reflect.set(e,t,s,n)}};function Rn(e){return ke(e)?e:new Proxy(e,Pr)}class Or{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new bn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=ft-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&U!==this)return hn(this,!0),!0}get value(){const t=this.dep.track();return gn(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Rr(e,t,s=!1){let n,i;return R(e)?n=e:(n=e.get,i=e.set),new Or(n,i,s)}const Vt={},Ut=new WeakMap;let Be;function Mr(e,t=!1,s=Be){if(s){let n=Ut.get(s);n||Ut.set(s,n=[]),n.push(e)}}function Ir(e,t,s=V){const{immediate:n,deep:i,once:r,scheduler:o,augmentJob:l,call:f}=s,h=E=>i?E:_e(E)||i===!1||i===0?je(E,1):je(E);let a,p,w,C,D=!1,M=!1;if(ee(e)?(p=()=>e.value,D=_e(e)):ke(e)?(p=()=>h(e),D=!0):O(e)?(M=!0,D=e.some(E=>ke(E)||_e(E)),p=()=>e.map(E=>{if(ee(E))return E.value;if(ke(E))return h(E);if(R(E))return f?f(E,2):E()})):R(e)?t?p=f?()=>f(e,2):e:p=()=>{if(w){de();try{w()}finally{pe()}}const E=Be;Be=a;try{return f?f(e,3,[C]):e(C)}finally{Be=E}}:p=he,t&&i){const E=p,X=i===!0?1/0:i;p=()=>je(E(),X)}const z=cr(),W=()=>{a.stop(),z&&z.active&&us(z.effects,a)};if(r&&t){const E=t;t=(...X)=>{const xe=E(...X);return W(),xe}}let F=M?new Array(e.length).fill(Vt):Vt;const H=E=>{if(!(!(a.flags&1)||!a.dirty&&!E))if(t){const X=a.run();if(E||i||D||(M?X.some((xe,Se)=>Ee(xe,F[Se])):Ee(X,F))){w&&w();const xe=Be;Be=a;try{const Se=[X,F===Vt?void 0:M&&F[0]===Vt?[]:F,C];F=X,f?f(t,3,Se):t(...Se)}finally{Be=xe}}}else a.run()};return l&&l(H),a=new un(p),a.scheduler=o?()=>o(H,!1):H,C=E=>Mr(E,!1,a),w=a.onStop=()=>{const E=Ut.get(a);if(E){if(f)f(E,4);else for(const X of E)X();Ut.delete(a)}},t?n?H(!0):F=a.run():o?o(H.bind(null,!0),!0):a.run(),W.pause=a.pause.bind(a),W.resume=a.resume.bind(a),W.stop=W,W}function je(e,t=1/0,s){if(t<=0||!B(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,ee(e))je(e.value,t,s);else if(O(e))for(let n=0;n{je(n,t,s)});else if(hs(e)){for(const n in e)je(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&je(e[n],t,s)}return e}/** +**/let Xa;class Tr{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&Xa&&(Xa.active?(this.parent=Xa,this.index=(Xa.scopes||(Xa.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,n;if(this.scopes){const t=this.scopes.slice();for(e=0,n=t.length;e0&&--this._on===0){if(Xa===this)Xa=this.prevScope;else{let e=Xa;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let n,t;for(n=0,t=this.effects.length;n0)return;if(nt){let e=nt;for(nt=void 0;e;){const n=e.next;e.next=void 0,e.flags&=-9,e=n}}let a;for(;et;){let e=et;for(et=void 0;e;){const n=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(t){a||(a=t)}e=n}}if(a)throw a}function Br(a){for(let e=a.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Kr(a){let e,n=a.depsTail,t=n;for(;t;){const i=t.prevDep;t.version===-1?(t===n&&(n=i),to(t),$g(t)):e=t,t.dep.activeLink=t.prevActiveLink,t.prevActiveLink=void 0,t=i}a.deps=e,a.depsTail=n}function no(a){for(let e=a.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Or(e.dep.computed)||e.dep.version!==e.version))return!0;return!!a._dirty}function Or(a){if(a.flags&4&&!(a.flags&16)||(a.flags&=-17,a.globalVersion===tt)||(a.globalVersion=tt,!a.isSSR&&a.flags&128&&(!a.deps&&!a._dirty||!no(a))))return;a.flags|=2;const e=a.dep,n=Ua,t=Ce;Ua=a,Ce=!0;try{Br(a);const i=a.fn(a._value);(e.version===0||we(i,a._value))&&(a.flags|=128,a._value=i,e.version++)}catch(i){throw e.version++,i}finally{Ua=n,Ce=t,Kr(a),a.flags&=-3}}function to(a,e=!1){const{dep:n,prevSub:t,nextSub:i}=a;if(t&&(t.nextSub=i,a.prevSub=void 0),i&&(i.prevSub=t,a.nextSub=void 0),n.subs===a&&(n.subs=t,!t&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)to(o,!0)}!e&&!--n.sc&&n.map&&n.map.delete(n.key)}function $g(a){const{prevDep:e,nextDep:n}=a;e&&(e.nextDep=n,a.prevDep=void 0),n&&(n.prevDep=e,a.nextDep=void 0)}let Ce=!0;const Ur=[];function Ie(){Ur.push(Ce),Ce=!1}function xe(){const a=Ur.pop();Ce=a===void 0?!0:a}function Dr(a){const{cleanup:e}=a;if(a.cleanup=void 0,e){const n=Ua;Ua=void 0;try{e()}finally{Ua=n}}}let tt=0;class Mg{constructor(e,n){this.sub=e,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class io{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!Ua||!Ce||Ua===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Ua)n=this.activeLink=new Mg(Ua,this),Ua.deps?(n.prevDep=Ua.depsTail,Ua.depsTail.nextDep=n,Ua.depsTail=n):Ua.deps=Ua.depsTail=n,Hr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const t=n.nextDep;t.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=t),n.prevDep=Ua.depsTail,n.nextDep=void 0,Ua.depsTail.nextDep=n,Ua.depsTail=n,Ua.deps===n&&(Ua.deps=t)}return n}trigger(e){this.version++,tt++,this.notify(e)}notify(e){ao();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{eo()}}}function Hr(a){if(a.dep.sc++,a.sub.flags&4){const e=a.dep.computed;if(e&&!a.dep.subs){e.flags|=20;for(let t=e.deps;t;t=t.nextDep)Hr(t)}const n=a.dep.subs;n!==a&&(a.prevSub=n,n&&(n.nextSub=a)),a.dep.subs=a}}const Yt=new WeakMap,_n=Symbol(""),oo=Symbol(""),it=Symbol("");function oe(a,e,n){if(Ce&&Ua){let t=Yt.get(a);t||Yt.set(a,t=new Map);let i=t.get(n);i||(t.set(n,i=new io),i.map=t,i.key=n),i.track()}}function Oe(a,e,n,t,i,o){const r=Yt.get(a);if(!r){tt++;return}const l=s=>{s&&s.trigger()};if(ao(),e==="clear")r.forEach(l);else{const s=Ca(a),g=s&&Dt(n);if(s&&n==="length"){const d=Number(t);r.forEach((_,v)=>{(v==="length"||v===it||!fe(v)&&v>=d)&&l(_)})}else switch((n!==void 0||r.has(void 0))&&l(r.get(n)),g&&l(r.get(it)),e){case"add":s?g&&l(r.get("length")):(l(r.get(_n)),rn(a)&&l(r.get(oo)));break;case"delete":s||(l(r.get(_n)),rn(a)&&l(r.get(oo)));break;case"set":rn(a)&&l(r.get(_n));break}}eo()}function wg(a,e){const n=Yt.get(a);return n&&n.get(e)}function wn(a){const e=wa(a);return e===a?e:(oe(e,"iterate",it),ye(a)?e:e.map(ke))}function Jt(a){return oe(a=wa(a),"iterate",it),a}function Te(a,e){return He(a)?In(De(a)?ke(e):e):ke(e)}const Ig={__proto__:null,[Symbol.iterator](){return ro(this,Symbol.iterator,a=>Te(this,a))},concat(...a){return wn(this).concat(...a.map(e=>Ca(e)?wn(e):e))},entries(){return ro(this,"entries",a=>(a[1]=Te(this,a[1]),a))},every(a,e){return Ue(this,"every",a,e,void 0,arguments)},filter(a,e){return Ue(this,"filter",a,e,n=>n.map(t=>Te(this,t)),arguments)},find(a,e){return Ue(this,"find",a,e,n=>Te(this,n),arguments)},findIndex(a,e){return Ue(this,"findIndex",a,e,void 0,arguments)},findLast(a,e){return Ue(this,"findLast",a,e,n=>Te(this,n),arguments)},findLastIndex(a,e){return Ue(this,"findLastIndex",a,e,void 0,arguments)},forEach(a,e){return Ue(this,"forEach",a,e,void 0,arguments)},includes(...a){return lo(this,"includes",a)},indexOf(...a){return lo(this,"indexOf",a)},join(a){return wn(this).join(a)},lastIndexOf(...a){return lo(this,"lastIndexOf",a)},map(a,e){return Ue(this,"map",a,e,void 0,arguments)},pop(){return ot(this,"pop")},push(...a){return ot(this,"push",a)},reduce(a,...e){return zr(this,"reduce",a,e)},reduceRight(a,...e){return zr(this,"reduceRight",a,e)},shift(){return ot(this,"shift")},some(a,e){return Ue(this,"some",a,e,void 0,arguments)},splice(...a){return ot(this,"splice",a)},toReversed(){return wn(this).toReversed()},toSorted(a){return wn(this).toSorted(a)},toSpliced(...a){return wn(this).toSpliced(...a)},unshift(...a){return ot(this,"unshift",a)},values(){return ro(this,"values",a=>Te(this,a))}};function ro(a,e,n){const t=Jt(a),i=t[e]();return t!==a&&!ye(a)&&(i._next=i.next,i.next=()=>{const o=i._next();return o.done||(o.value=n(o.value)),o}),i}const xg=Array.prototype;function Ue(a,e,n,t,i,o){const r=Jt(a),l=r!==a&&!ye(a),s=r[e];if(s!==xg[e]){const _=s.apply(a,o);return l?ke(_):_}let g=n;r!==a&&(l?g=function(_,v){return n.call(this,Te(a,_),v,a)}:n.length>2&&(g=function(_,v){return n.call(this,_,v,a)}));const d=s.call(r,g,t);return l&&i?i(d):d}function zr(a,e,n,t){const i=Jt(a),o=i!==a&&!ye(a);let r=n,l=!1;i!==a&&(o?(l=t.length===0,r=function(g,d,_){return l&&(l=!1,g=Te(a,g)),n.call(this,g,Te(a,d),_,a)}):n.length>3&&(r=function(g,d,_){return n.call(this,g,d,_,a)}));const s=i[e](r,...t);return l?Te(a,s):s}function lo(a,e,n){const t=wa(a);oe(t,"iterate",it);const i=t[e](...n);return(i===-1||i===!1)&&ai(n[0])?(n[0]=wa(n[0]),t[e](...n)):i}function ot(a,e,n=[]){Ie(),ao();const t=wa(a)[e].apply(a,n);return eo(),xe(),t}const Tg=Wi("__proto__,__v_isRef,__isVue"),Vr=new Set(Object.getOwnPropertyNames(Symbol).filter(a=>a!=="arguments"&&a!=="caller").map(a=>Symbol[a]).filter(fe));function Ng(a){fe(a)||(a=String(a));const e=wa(this);return oe(e,"has",a),e.hasOwnProperty(a)}class Wr{constructor(e=!1,n=!1){this._isReadonly=e,this._isShallow=n}get(e,n,t){if(n==="__v_skip")return e.__v_skip;const i=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!i;if(n==="__v_isReadonly")return i;if(n==="__v_isShallow")return o;if(n==="__v_raw")return t===(i?o?Qr:Xr:o?qr:Zr).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(t)?e:void 0;const r=Ca(e);if(!i){let s;if(r&&(s=Ig[n]))return s;if(n==="hasOwnProperty")return Ng}const l=Reflect.get(e,n,Wa(e)?e:t);if((fe(n)?Vr.has(n):Tg(n))||(i||oe(e,"get",n),o))return l;if(Wa(l)){const s=r&&Dt(n)?l:l.value;return i&&Ta(s)?co(s):s}return Ta(l)?i?co(l):rt(l):l}}class Yr extends Wr{constructor(e=!1){super(!1,e)}set(e,n,t,i){let o=e[n];const r=Ca(e)&&Dt(n);if(!this._isShallow){const g=He(o);if(!ye(t)&&!He(t)&&(o=wa(o),t=wa(t)),!r&&Wa(o)&&!Wa(t))return g||(o.value=t),!0}const l=r?Number(n)a,Zt=a=>Reflect.getPrototypeOf(a);function Kg(a,e,n){return function(...t){const i=this.__v_raw,o=wa(i),r=rn(o),l=a==="entries"||a===Symbol.iterator&&r,s=a==="keys"&&r,g=i[a](...t),d=n?so:e?In:ke;return!e&&oe(o,"iterate",s?oo:_n),Ja(Object.create(g),{next(){const{value:_,done:v}=g.next();return v?{value:_,done:v}:{value:l?[d(_[0]),d(_[1])]:d(_),done:v}}})}}function qt(a){return function(...e){return a==="delete"?!1:a==="clear"?void 0:this}}function Og(a,e){const n={get(i){const o=this.__v_raw,r=wa(o),l=wa(i);a||(we(i,l)&&oe(r,"get",i),oe(r,"get",l));const{has:s}=Zt(r),g=e?so:a?In:ke;if(s.call(r,i))return g(o.get(i));if(s.call(r,l))return g(o.get(l));o!==r&&o.get(i)},get size(){const i=this.__v_raw;return!a&&oe(wa(i),"iterate",_n),i.size},has(i){const o=this.__v_raw,r=wa(o),l=wa(i);return a||(we(i,l)&&oe(r,"has",i),oe(r,"has",l)),i===l?o.has(i):o.has(i)||o.has(l)},forEach(i,o){const r=this,l=r.__v_raw,s=wa(l),g=e?so:a?In:ke;return!a&&oe(s,"iterate",_n),l.forEach((d,_)=>i.call(o,g(d),g(_),r))}};return Ja(n,a?{add:qt("add"),set:qt("set"),delete:qt("delete"),clear:qt("clear")}:{add(i){const o=wa(this),r=Zt(o),l=wa(i),s=!e&&!ye(i)&&!He(i)?l:i;return r.has.call(o,s)||we(i,s)&&r.has.call(o,i)||we(l,s)&&r.has.call(o,l)||(o.add(s),Oe(o,"add",s,s)),this},set(i,o){!e&&!ye(o)&&!He(o)&&(o=wa(o));const r=wa(this),{has:l,get:s}=Zt(r);let g=l.call(r,i);g||(i=wa(i),g=l.call(r,i));const d=s.call(r,i);return r.set(i,o),g?we(o,d)&&Oe(r,"set",i,o):Oe(r,"add",i,o),this},delete(i){const o=wa(this),{has:r,get:l}=Zt(o);let s=r.call(o,i);s||(i=wa(i),s=r.call(o,i)),l&&l.call(o,i);const g=o.delete(i);return s&&Oe(o,"delete",i,void 0),g},clear(){const i=wa(this),o=i.size!==0,r=i.clear();return o&&Oe(i,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(i=>{n[i]=Kg(i,a,e)}),n}function Xt(a,e){const n=Og(a,e);return(t,i,o)=>i==="__v_isReactive"?!a:i==="__v_isReadonly"?a:i==="__v_raw"?t:Reflect.get(xa(n,i)&&i in t?n:t,i,o)}const Ug={get:Xt(!1,!1)},Dg={get:Xt(!1,!0)},Hg={get:Xt(!0,!1)},zg={get:Xt(!0,!0)},Zr=new WeakMap,qr=new WeakMap,Xr=new WeakMap,Qr=new WeakMap;function Vg(a){switch(a){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function rt(a){return He(a)?a:Qt(a,!1,Lg,Ug,Zr)}function Wg(a){return Qt(a,!1,Fg,Dg,qr)}function co(a){return Qt(a,!0,Rg,Hg,Xr)}function X5(a){return Qt(a,!0,Bg,zg,Qr)}function Qt(a,e,n,t,i){if(!Ta(a)||a.__v_raw&&!(e&&a.__v_isReactive)||a.__v_skip||!Object.isExtensible(a))return a;const o=i.get(a);if(o)return o;const r=Vg(_g(a));if(r===0)return a;const l=new Proxy(a,r===2?t:n);return i.set(a,l),l}function De(a){return He(a)?De(a.__v_raw):!!(a&&a.__v_isReactive)}function He(a){return!!(a&&a.__v_isReadonly)}function ye(a){return!!(a&&a.__v_isShallow)}function ai(a){return a?!!a.__v_raw:!1}function wa(a){const e=a&&a.__v_raw;return e?wa(e):a}function lt(a){return!xa(a,"__v_skip")&&Object.isExtensible(a)&&Sr(a,"__v_skip",!0),a}const ke=a=>Ta(a)?rt(a):a,In=a=>Ta(a)?co(a):a;function Wa(a){return a?a.__v_isRef===!0:!1}function ua(a){return al(a,!1)}function go(a){return al(a,!0)}function al(a,e){return Wa(a)?a:new Yg(a,e)}class Yg{constructor(e,n){this.dep=new io,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?e:wa(e),this._value=n?e:ke(e),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(e){const n=this._rawValue,t=this.__v_isShallow||ye(e)||He(e);e=t?e:wa(e),we(e,n)&&(this._rawValue=e,this._value=t?e:ke(e),this.dep.trigger())}}function ya(a){return Wa(a)?a.value:a}const Jg={get:(a,e,n)=>e==="__v_raw"?a:ya(Reflect.get(a,e,n)),set:(a,e,n,t)=>{const i=a[e];return Wa(i)&&!Wa(n)?(i.value=n,!0):Reflect.set(a,e,n,t)}};function el(a){return De(a)?a:new Proxy(a,Jg)}function Zg(a){const e=Ca(a)?new Array(a.length):{};for(const n in a)e[n]=Xg(a,n);return e}class qg{constructor(e,n,t){this._object=e,this._defaultValue=t,this.__v_isRef=!0,this._value=void 0,this._key=fe(n)?n:String(n),this._raw=wa(e);let i=!0,o=e;if(!Ca(e)||fe(this._key)||!Dt(this._key))do i=!ai(o)||ye(o);while(i&&(o=o.__v_raw));this._shallow=i}get value(){let e=this._object[this._key];return this._shallow&&(e=ya(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&Wa(this._raw[this._key])){const n=this._object[this._key];if(Wa(n)){n.value=e;return}}this._object[this._key]=e}get dep(){return wg(this._raw,this._key)}}function Xg(a,e,n){return new qg(a,e,n)}class Qg{constructor(e,n,t){this.fn=e,this.setter=n,this._value=void 0,this.dep=new io(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=tt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=t}notify(){if(this.flags|=16,!(this.flags&8)&&Ua!==this)return Fr(this,!0),!0}get value(){const e=this.dep.track();return Or(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function au(a,e,n=!1){let t,i;return ja(a)?t=a:(t=a.get,i=a.set),new Qg(t,i,n)}const ei={},ni=new WeakMap;let fn;function eu(a,e=!1,n=fn){if(n){let t=ni.get(n);t||ni.set(n,t=[]),t.push(a)}}function nu(a,e,n=Ba){const{immediate:t,deep:i,once:o,scheduler:r,augmentJob:l,call:s}=n,g=S=>i?S:ye(S)||i===!1||i===0?ze(S,1):ze(S);let d,_,v,w,H=!1,I=!1;if(Wa(a)?(_=()=>a.value,H=ye(a)):De(a)?(_=()=>g(a),H=!0):Ca(a)?(I=!0,H=a.some(S=>De(S)||ye(S)),_=()=>a.map(S=>{if(Wa(S))return S.value;if(De(S))return g(S);if(ja(S))return s?s(S,2):S()})):ja(a)?e?_=s?()=>s(a,2):a:_=()=>{if(v){Ie();try{v()}finally{xe()}}const S=fn;fn=d;try{return s?s(a,3,[w]):a(w)}finally{fn=S}}:_=Me,e&&i){const S=_,j=i===!0?1/0:i;_=()=>ze(S(),j)}const M=Nr(),x=()=>{d.stop(),M&&M.active&&Yi(M.effects,d)};if(o&&e){const S=e;e=(...j)=>{const b=S(...j);return x(),b}}let A=I?new Array(a.length).fill(ei):ei;const $=S=>{if(!(!(d.flags&1)||!d.dirty&&!S))if(e){const j=d.run();if(S||i||H||(I?j.some((b,C)=>we(b,A[C])):we(j,A))){v&&v();const b=fn;fn=d;try{const C=[j,A===ei?void 0:I&&A[0]===ei?[]:A,w];A=j,s?s(e,3,C):e(...C)}finally{fn=b}}}else d.run()};return l&&l($),d=new Lr(_),d.scheduler=r?()=>r($,!1):$,w=S=>eu(S,!1,d),v=d.onStop=()=>{const S=ni.get(d);if(S){if(s)s(S,4);else for(const j of S)j();ni.delete(d)}},e?t?$(!0):A=d.run():r?r($.bind(null,!0),!0):d.run(),x.pause=d.pause.bind(d),x.resume=d.resume.bind(d),x.stop=x,x}function ze(a,e=1/0,n){if(e<=0||!Ta(a)||a.__v_skip||(n=n||new Map,(n.get(a)||0)>=e))return a;if(n.set(a,e),e--,Wa(a))ze(a.value,e,n);else if(Ca(a))for(let t=0;t{ze(t,e,n)});else if(Ut(a)){for(const t in a)ze(a[t],e,n);for(const t of Object.getOwnPropertySymbols(a))Object.prototype.propertyIsEnumerable.call(a,t)&&ze(a[t],e,n)}return a}/** * @vue/runtime-core v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/const dt=[];let Is=!1;function Ll(e,...t){if(Is)return;Is=!0,de();const s=dt.length?dt[dt.length-1].component:null,n=s&&s.appContext.config.warnHandler,i=Fr();if(n)et(n,s,11,[e+t.map(r=>{var o,l;return(l=(o=r.toString)==null?void 0:o.call(r))!=null?l:JSON.stringify(r)}).join(""),s&&s.proxy,i.map(({vnode:r})=>`at <${Pi(s,r.type)}>`).join(` -`),i]);else{const r=[`[Vue warn]: ${e}`,...t];i.length&&r.push(` -`,...Nr(i)),console.warn(...r)}pe(),Is=!1}function Fr(){let e=dt[dt.length-1];if(!e)return[];const t=[];for(;e;){const s=t[0];s&&s.vnode===e?s.recurseCount++:t.push({vnode:e,recurseCount:0});const n=e.component&&e.component.parent;e=n&&n.vnode}return t}function Nr(e){const t=[];return e.forEach((s,n)=>{t.push(...n===0?[]:[` -`],...jr(s))}),t}function jr({vnode:e,recurseCount:t}){const s=t>0?`... (${t} recursive calls)`:"",n=e.component?e.component.parent==null:!1,i=` at <${Pi(e.component,e.type,n)}`,r=">"+s;return e.props?[i,...Dr(e.props),r]:[i+r]}function Dr(e){const t=[],s=Object.keys(e);return s.slice(0,3).forEach(n=>{t.push(...Mn(n,e[n]))}),s.length>3&&t.push(" ..."),t}function Mn(e,t,s){return G(t)?(t=JSON.stringify(t),s?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?s?t:[`${e}=${t}`]:ee(t)?(t=Mn(e,j(t.value),!0),s?t:[`${e}=Ref<`,t,">"]):R(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=j(t),s?t:[`${e}=`,t])}function et(e,t,s,n){try{return n?e(...n):e()}catch(i){Kt(i,t,s)}}function ae(e,t,s,n){if(R(e)){const i=et(e,t,s,n);return i&&sn(i)&&i.catch(r=>{Kt(r,t,s)}),i}if(O(e)){const i=[];for(let r=0;r>>1,i=te[n],r=pt(i);r=pt(s)?te.push(e):te.splice(Lr(t),0,e),e.flags|=1,Nn()}}function Nn(){Bt||(Bt=In.then(Hn))}function $r(e){if(!O(e))De&&e.id===-1?De.splice(st+1,0,e):e.flags&1||(tt.push(e),e.flags|=1);else for(let t=0;tpt(s)-pt(n));if(tt.length=0,De){for(let s=0;se.id==null?e.flags&2?-1:1/0:e.id;function Hn(e){try{for(me=0;me{n._d&&vi(-1);const r=Wt(t),o=Je.length;let l;try{l=e(...i)}finally{for(let f=Je.length;f>o;f--)yi();Wt(r),n._d&&vi(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function We(e,t,s,n){const i=e.dirs,r=t&&t.dirs;for(let o=0;o1)return s&&R(t)?t.call(n&&n.proxy):t}}const Kr=Symbol.for("v-scx"),Br=()=>qt(Kr);function Ns(e,t,s){return $n(e,t,s)}function $n(e,t,s=V){const{immediate:n,deep:i,flush:r,once:o}=s,l=J({},s),f=t&&n||!t&&r!=="post";let h;if(wt){if(r==="sync"){const C=Br();h=C.__watcherHandles||(C.__watcherHandles=[])}else if(!f){const C=()=>{};return C.stop=he,C.resume=he,C.pause=he,C}}const a=ne;l.call=(C,D,M)=>ae(C,a,D,M);let p=!1;r==="post"?l.scheduler=C=>{oe(C,a&&a.suspense)}:r!=="sync"&&(p=!0,l.scheduler=(C,D)=>{D?C():Fs(C)}),l.augmentJob=C=>{t&&(C.flags|=4),p&&(C.flags|=2,a&&(C.id=a.uid,C.i=a))};const w=Ir(e,t,l);return wt&&(h?h.push(w):f&&w()),w}function Wr(e,t,s){const n=this.proxy,i=G(e)?e.includes(".")?Vn(n,e):()=>n[e]:e.bind(n,n);let r;R(t)?r=t:(r=t.handler,s=t);const o=St(this),l=$n(i,r.bind(n),s);return o(),l}function Vn(e,t){const s=t.split(".");return()=>{let n=e;for(let i=0;ie.__isTeleport,js=Symbol("_leaveCb");function Gr(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==Ge){t=s;break}}return t}function Un(e){if(!Hs(e))return Gt(e.type)&&e.children?Gr(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:s}=e;if(s){if(t&16)return s[0];if(t&32&&R(s.default))return s.default()}}function Ds(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const s=e.component.subTree;Ds(Gt(s.type)&&Un(s)||s,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Jr(e,t){return R(e)?J({name:e.name},t,{setup:e}):e}function Kn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Bn(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const Jt=new WeakMap;function gt(e,t,s,n,i=!1){if(O(e)){e.forEach((M,z)=>gt(M,t&&(O(t)?t[z]:t),s,n,i));return}if(_t(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&>(e,t,s,n.component.subTree);return}const r=n.shapeFlag&4?Js(n.component):n.el,o=i?null:r,{i:l,r:f}=e,h=t&&t.r,a=l.refs===V?l.refs={}:l.refs,p=l.setupState,w=j(p),C=p===V?en:M=>Bn(a,M)?!1:N(w,M),D=(M,z)=>!(z&&Bn(a,z));if(h!=null&&h!==f){if(Wn(t),G(h))a[h]=null,C(h)&&(p[h]=null);else if(ee(h)){const M=t;D(h,M.k)&&(h.value=null),M.k&&(a[M.k]=null)}}if(R(f))et(f,l,12,[o,a]);else{const M=G(f),z=ee(f);if(M||z){const W=()=>{if(e.f){const F=M?C(f)?p[f]:a[f]:D()||!e.k?f.value:a[e.k];if(i)O(F)&&us(F,r);else if(O(F))F.includes(r)||F.push(r);else if(M)a[f]=[r],C(f)&&(p[f]=a[f]);else{const H=[r];D(f,e.k)&&(f.value=H),e.k&&(a[e.k]=H)}}else M?(a[f]=o,C(f)&&(p[f]=o)):z&&(D(f,e.k)&&(f.value=o),e.k&&(a[e.k]=o))};if(o){const F=()=>{W(),Jt.delete(e)};F.id=-1,Jt.set(e,F),oe(F,s)}else Wn(e),W()}}}function Wn(e){const t=Jt.get(e);t&&(t.flags|=8,Jt.delete(e))}Nt().requestIdleCallback,Nt().cancelIdleCallback;const _t=e=>!!e.type.__asyncLoader,Hs=e=>e.type.__isKeepAlive;function zr(e,t){qn(e,"a",t)}function Yr(e,t){qn(e,"da",t)}function qn(e,t,s=ne){const n=e.__wdc||(e.__wdc=()=>{let i=s;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(zt(t,n,s),s){let i=s.parent;for(;i&&i.parent;)Hs(i.parent.vnode)&&Xr(n,t,s,i),i=i.parent}}function Xr(e,t,s,n){const i=zt(t,e,n,!0);Jn(()=>{us(n[t],i)},s)}function zt(e,t,s=ne,n=!1){if(s){const i=s[e]||(s[e]=[]),r=t.__weh||(t.__weh=(...o)=>{de();const l=St(s),f=ae(t,s,e,o);return l(),pe(),f});return n?i.unshift(r):i.push(r),r}}const Re=e=>(t,s=ne)=>{(!wt||e==="sp")&&zt(e,(...n)=>t(...n),s)},Zr=Re("bm"),Gn=Re("m"),Qr=Re("bu"),kr=Re("u"),eo=Re("bum"),Jn=Re("um"),to=Re("sp"),so=Re("rtg"),no=Re("rtc");function io(e,t=ne){zt("ec",e,t)}const ro=Symbol.for("v-ndc"),Ls=e=>e?Ti(e)?Js(e):Ls(e.parent):null,mt=J(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ls(e.parent),$root:e=>Ls(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Zn(e),$forceUpdate:e=>e.f||(e.f=()=>{Fs(e.update)}),$nextTick:e=>e.n||(e.n=Fn.bind(e.proxy)),$watch:e=>Wr.bind(e)}),$s=(e,t)=>e!==V&&!e.__isScriptSetup&&N(e,t),oo={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:i,props:r,accessCache:o,type:l,appContext:f}=e;if(t[0]!=="$"){const w=o[t];if(w!==void 0)switch(w){case 1:return n[t];case 2:return i[t];case 4:return s[t];case 3:return r[t]}else{if($s(n,t))return o[t]=1,n[t];if(i!==V&&N(i,t))return o[t]=2,i[t];if(N(r,t))return o[t]=3,r[t];if(s!==V&&N(s,t))return o[t]=4,s[t];Vs&&(o[t]=0)}}const h=mt[t];let a,p;if(h)return t==="$attrs"&&k(e.attrs,"get",""),h(e);if((a=l.__cssModules)&&(a=a[t]))return a;if(s!==V&&N(s,t))return o[t]=4,s[t];if(p=f.config.globalProperties,N(p,t))return p[t]},set({_:e},t,s){const{data:n,setupState:i,ctx:r}=e;return $s(i,t)?(i[t]=s,!0):n!==V&&N(n,t)?(n[t]=s,!0):N(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:i,props:r,type:o}},l){let f;return!!(s[l]||e!==V&&l[0]!=="$"&&N(e,l)||$s(t,l)||N(r,l)||N(n,l)||N(mt,l)||N(i.config.globalProperties,l)||(f=o.__cssModules)&&f[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:N(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function zn(e){return O(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Vs=!0;function lo(e){const t=Zn(e),s=e.proxy,n=e.ctx;Vs=!1,t.beforeCreate&&Yn(t.beforeCreate,e,"bc");const{data:i,computed:r,methods:o,watch:l,provide:f,inject:h,created:a,beforeMount:p,mounted:w,beforeUpdate:C,updated:D,activated:M,deactivated:z,beforeDestroy:W,beforeUnmount:F,destroyed:H,unmounted:E,render:X,renderTracked:xe,renderTriggered:Se,errorCaptured:Le,serverPrefetch:ns,expose:ze,inheritAttrs:Et,components:is,directives:rs,filters:Qs}=t;if(h&&co(h,n,null),o)for(const q in o){const K=o[q];R(K)&&(n[q]=K.bind(s))}if(i){const q=i.call(s,s);B(q)&&(e.data=Os(q))}if(Vs=!0,r)for(const q in r){const K=r[q],Ye=R(K)?K.bind(s,s):R(K.get)?K.get.bind(s,s):he,os=!R(K)&&R(K.set)?K.set.bind(s):he,Xe=Ct({get:Ye,set:os});Object.defineProperty(n,q,{enumerable:!0,configurable:!0,get:()=>Xe.value,set:we=>Xe.value=we})}if(l)for(const q in l)Xn(l[q],n,s,q);if(f){const q=R(f)?f.call(s):f;Reflect.ownKeys(q).forEach(K=>{Ur(K,q[K])})}a&&Yn(a,e,"c");function ie(q,K){O(K)?K.forEach(Ye=>q(Ye.bind(s))):K&&q(K.bind(s))}if(ie(Zr,p),ie(Gn,w),ie(Qr,C),ie(kr,D),ie(zr,M),ie(Yr,z),ie(io,Le),ie(no,xe),ie(so,Se),ie(eo,F),ie(Jn,E),ie(to,ns),O(ze))if(ze.length){const q=e.exposed||(e.exposed={});ze.forEach(K=>{Object.defineProperty(q,K,{get:()=>s[K],set:Ye=>s[K]=Ye,enumerable:!0})})}else e.exposed||(e.exposed={});X&&e.render===he&&(e.render=X),Et!=null&&(e.inheritAttrs=Et),is&&(e.components=is),rs&&(e.directives=rs),ns&&Kn(e)}function co(e,t,s=he){O(e)&&(e=Us(e));for(const n in e){const i=e[n];let r;B(i)?"default"in i?r=qt(i.from||n,i.default,!0):r=qt(i.from||n):r=qt(i),ee(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):t[n]=r}}function Yn(e,t,s){ae(O(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function Xn(e,t,s,n){let i=n.includes(".")?Vn(s,n):()=>s[n];if(G(e)){const r=t[e];R(r)&&Ns(i,r)}else if(R(e))Ns(i,e.bind(s));else if(B(e))if(O(e))e.forEach(r=>Xn(r,t,s,n));else{const r=R(e.handler)?e.handler.bind(s):t[e.handler];R(r)&&Ns(i,r,e)}}function Zn(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:i,optionsCache:r,config:{optionMergeStrategies:o}}=e.appContext,l=r.get(t);let f;return l?f=l:!i.length&&!s&&!n?f=t:(f={},i.length&&i.forEach(h=>Yt(f,h,o,!0)),Yt(f,t,o)),B(t)&&r.set(t,f),f}function Yt(e,t,s,n=!1){const{mixins:i,extends:r}=t;r&&Yt(e,r,s,!0),i&&i.forEach(o=>Yt(e,o,s,!0));for(const o in t)if(!(n&&o==="expose")){const l=fo[o]||s&&s[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const fo={data:Qn,props:kn,emits:kn,methods:bt,computed:bt,beforeCreate:se,created:se,beforeMount:se,mounted:se,beforeUpdate:se,updated:se,beforeDestroy:se,beforeUnmount:se,destroyed:se,unmounted:se,activated:se,deactivated:se,errorCaptured:se,serverPrefetch:se,components:bt,directives:bt,watch:ao,provide:Qn,inject:uo};function Qn(e,t){return t?e?function(){return J(R(e)?e.call(this,this):e,R(t)?t.call(this,this):t)}:t:e}function uo(e,t){return bt(Us(e),Us(t))}function Us(e){if(O(e)){const t={};for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${re(t)}Modifiers`]||e[`${fe(t)}Modifiers`];function _o(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||V;let i=s;const r=t.startsWith("update:"),o=r&&go(n,t.slice(7));o&&(o.trim&&(i=s.map(a=>G(a)?a.trim():a)),o.number&&(i=i.map(er)));let l,f=n[l=ps(t)]||n[l=ps(re(t))];!f&&r&&(f=n[l=ps(fe(t))]),f&&ae(f,e,6,i);const h=n[l+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,ae(h,e,6,i)}}const mo=new WeakMap;function ti(e,t,s=!1){const n=s?mo:t.emitsCache,i=n.get(e);if(i!==void 0)return i;const r=e.emits;let o={},l=!1;if(!R(e)){const f=h=>{const a=ti(h,t,!0);a&&(l=!0,J(o,a))};!s&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!r&&!l?(B(e)&&n.set(e,null),null):(O(r)?r.forEach(f=>o[f]=null):J(o,r),B(e)&&n.set(e,o),o)}function Xt(e,t){return!e||!Mt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),N(e,t[0].toLowerCase()+t.slice(1))||N(e,fe(t))||N(e,t))}function $l(){}function si(e){const{type:t,vnode:s,proxy:n,withProxy:i,propsOptions:[r],slots:o,attrs:l,emit:f,render:h,renderCache:a,props:p,data:w,setupState:C,ctx:D,inheritAttrs:M}=e,z=Wt(e);let W,F;try{if(s.shapeFlag&4){const E=i||n,X=E;W=ye(h.call(X,E,a,p,C,w,D)),F=l}else{const E=t;W=ye(E.length>1?E(p,{attrs:l,slots:o,emit:f}):E(p,null)),F=t.props?l:bo(l)}}catch(E){Je.length=0,Kt(E,e,1),W=He(Ge)}let H=W;if(F&&M!==!1){const E=Object.keys(F),{shapeFlag:X}=H;E.length&&X&7&&(r&&E.some(It)&&(F=yo(F,r)),H=it(H,F,!1,!0))}if(s.dirs&&(H=it(H,null,!1,!0),H.dirs=H.dirs?H.dirs.concat(s.dirs):s.dirs),s.transition){const E=Gt(H.type)&&Un(H)||H;Ds(E,s.transition)}return W=H,Wt(z),W}const bo=e=>{let t;for(const s in e)(s==="class"||s==="style"||Mt(s))&&((t||(t={}))[s]=e[s]);return t},yo=(e,t)=>{const s={};for(const n in e)(!It(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function vo(e,t,s){const{props:n,children:i,component:r}=e,{props:o,children:l,patchFlag:f}=t,h=r.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&f>=0){if(f&1024)return!0;if(f&16)return n?ni(n,o,h):!!o;if(f&8){const a=t.dynamicProps;for(let p=0;pObject.create(ri),li=e=>Object.getPrototypeOf(e)===ri;function So(e,t,s,n=!1){const i={},r=oi();e.propsDefaults=Object.create(null),ci(e,t,i,r);for(const o in e.propsOptions[0])o in i||(i[o]=void 0);s?e.props=n?i:Ar(i):e.type.props?e.props=i:e.props=r,e.attrs=r}function wo(e,t,s,n){const{props:i,attrs:r,vnode:{patchFlag:o}}=e,l=j(i),[f]=e.propsOptions;let h=!1;if((n||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let p=0;p{f=!0;const[w,C]=fi(p,t,!0);J(o,w),C&&l.push(...C)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!r&&!f)return B(e)&&n.set(e,Ze),Ze;if(O(r))for(let a=0;ae==="_"||e==="_ctx"||e==="$stable",Ws=e=>O(e)?e.map(ye):[ye(e)],To=(e,t,s)=>{if(t._n)return t;const n=Vr((...i)=>Ws(t(...i)),s);return n._c=!1,n},ai=(e,t,s)=>{const n=e._ctx;for(const i in e){if(Bs(i))continue;const r=e[i];if(R(r))t[i]=To(i,r,n);else if(r!=null){const o=Ws(r);t[i]=()=>o}}},hi=(e,t)=>{const s=Ws(t);e.slots.default=()=>s},di=(e,t,s)=>{for(const n in t)(s||!Bs(n))&&(e[n]=t[n])},Ao=(e,t,s)=>{const n=e.slots=oi();if(e.vnode.shapeFlag&32){const i=t._;i?(di(n,t,s),s&&rn(n,"_",i,!0)):ai(t,n)}else t&&hi(e,t)},Eo=(e,t,s)=>{const{vnode:n,slots:i}=e;let r=!0,o=V;if(n.shapeFlag&32){const l=t._;l?s&&l===1?r=!1:di(i,t,s):(r=!t.$stable,ai(t,i)),o=t}else t&&(hi(e,t),o={default:1});if(r)for(const l in i)!Bs(l)&&o[l]==null&&delete i[l]},oe=Io;function Po(e){return Oo(e)}function Oo(e,t){const s=Nt();s.__VUE__=!0;const{insert:n,remove:i,patchProp:r,createElement:o,createText:l,createComment:f,setText:h,setElementText:a,parentNode:p,nextSibling:w,setScopeId:C=he,insertStaticContent:D}=e,M=(c,u,d,b=null,m=null,g=null,x=void 0,v=null,y=!!u.dynamicChildren)=>{if(c===u)return;c&&!vt(c,u)&&(b=ls(c),we(c,m,g,!0),c=null),u.patchFlag===-2&&(y=!1,u.dynamicChildren=null);const{type:_,ref:A,shapeFlag:S}=u;switch(_){case Zt:z(c,u,d,b);break;case Ge:W(c,u,d,b);break;case Gs:c==null&&F(u,d,b,x);break;case Me:is(c,u,d,b,m,g,x,v,y);break;default:S&1?X(c,u,d,b,m,g,x,v,y):S&6?rs(c,u,d,b,m,g,x,v,y):(S&64||S&128)&&_.process(c,u,d,b,m,g,x,v,y,Ot)}A!=null&&m?gt(A,c&&c.ref,g,u||c,!u):A==null&&c&&c.ref!=null&>(c.ref,null,g,c,!0)},z=(c,u,d,b)=>{if(c==null)n(u.el=l(u.children),d,b);else{const m=u.el=c.el;u.children!==c.children&&h(m,u.children)}},W=(c,u,d,b)=>{c==null?n(u.el=f(u.children||""),d,b):u.el=c.el},F=(c,u,d,b)=>{[c.el,c.anchor]=D(c.children,u,d,b,c.el,c.anchor)},H=({el:c,anchor:u},d,b)=>{let m;for(;c&&c!==u;)m=w(c),n(c,d,b),c=m;n(u,d,b)},E=({el:c,anchor:u})=>{let d;for(;c&&c!==u;)d=w(c),i(c),c=d;i(u)},X=(c,u,d,b,m,g,x,v,y)=>{if(u.type==="svg"?x="svg":u.type==="math"&&(x="mathml"),c==null)xe(u,d,b,m,g,x,v,y);else{const _=c.el&&c.el._isVueCE?c.el:null;try{_&&_._beginPatch(),ns(c,u,m,g,x,v,y)}finally{_&&_._endPatch()}}},xe=(c,u,d,b,m,g,x,v)=>{let y,_;const{props:A,shapeFlag:S,transition:T,dirs:P}=c;if(y=c.el=o(c.type,g,A&&A.is,A),S&8?a(y,c.children):S&16&&Le(c.children,y,null,b,m,qs(c,g),x,v),P&&We(c,null,b,"created"),Se(y,c,c.scopeId,x,b),A){for(const $ in A)$!=="value"&&!ot($)&&r(y,$,null,A[$],g,b);"value"in A&&r(y,"value",null,A.value,g),(_=A.onVnodeBeforeMount)&&ve(_,b,c)}P&&We(c,null,b,"beforeMount");const I=Ro(m,T);I&&T.beforeEnter(y),n(y,u,d),((_=A&&A.onVnodeMounted)||I||P)&&oe(()=>{try{_&&ve(_,b,c),I&&T.enter(y),P&&We(c,null,b,"mounted")}finally{}},m)},Se=(c,u,d,b,m)=>{if(d&&C(c,d),b)for(let g=0;g{for(let _=y;_{const v=u.el=c.el;let{patchFlag:y,dynamicChildren:_,dirs:A}=u;y|=c.patchFlag&16;const S=c.props||V,T=u.props||V;let P;if(d&&qe(d,!1),(P=T.onVnodeBeforeUpdate)&&ve(P,d,u,c),A&&We(u,c,d,"beforeUpdate"),d&&qe(d,!0),_&&(!c.dynamicChildren||c.dynamicChildren.length!==_.length)&&(y=0,x=!1,_=null),(S.innerHTML&&T.innerHTML==null||S.textContent&&T.textContent==null)&&a(v,""),_?ze(c.dynamicChildren,_,v,d,b,qs(u,m),g):x||K(c,u,v,null,d,b,qs(u,m),g,!1),y>0){if(y&16)Et(v,S,T,d,m);else if(y&2&&S.class!==T.class&&r(v,"class",null,T.class,m),y&4&&r(v,"style",S.style,T.style,m),y&8){const I=u.dynamicProps;for(let $=0;${P&&ve(P,d,u,c),A&&We(u,c,d,"updated")},b)},ze=(c,u,d,b,m,g,x)=>{for(let v=0;v{if(u!==d){if(u!==V)for(const g in u)!ot(g)&&!(g in d)&&r(c,g,u[g],null,m,b);for(const g in d){if(ot(g))continue;const x=d[g],v=u[g];x!==v&&g!=="value"&&r(c,g,v,x,m,b)}"value"in d&&r(c,"value",u.value,d.value,m)}},is=(c,u,d,b,m,g,x,v,y)=>{const _=u.el=c?c.el:l(""),A=u.anchor=c?c.anchor:l("");let{patchFlag:S,dynamicChildren:T,slotScopeIds:P}=u;P&&(v=v?v.concat(P):P),c==null?(n(_,d,b),n(A,d,b),Le(u.children||[],d,A,m,g,x,v,y)):S>0&&S&64&&T&&c.dynamicChildren&&c.dynamicChildren.length===T.length?(ze(c.dynamicChildren,T,d,m,g,x,v),(u.key!=null||m&&u===m.subTree)&&pi(c,u,!0)):K(c,u,d,A,m,g,x,v,y)},rs=(c,u,d,b,m,g,x,v,y)=>{u.slotScopeIds=v,c==null?u.shapeFlag&512?m.ctx.activate(u,d,b,x,y):Qs(u,d,b,m,g,x,y):Bi(c,u,y)},Qs=(c,u,d,b,m,g,x)=>{const v=c.component=Ko(c,b,m);if(Hs(c)&&(v.ctx.renderer=Ot),Bo(v,!1,x),v.asyncDep){if(m&&m.registerDep(v,ie,x),!c.el){const y=v.subTree=He(Ge);W(null,y,u,d),c.placeholder=y.el}}else ie(v,c,u,d,m,g,x)},Bi=(c,u,d)=>{const b=u.component=c.component;if(vo(c,u,d))if(b.asyncDep&&!b.asyncResolved){q(b,u,d);return}else b.next=u,b.update();else u.el=c.el,b.vnode=u},ie=(c,u,d,b,m,g,x)=>{const v=()=>{if(c.isMounted){let{next:S,bu:T,u:P,parent:I,vnode:$}=c;{const Te=gi(c);if(Te){S&&(S.el=$.el,q(c,S,x)),Te.asyncDep.then(()=>{oe(()=>{c.isUnmounted||_()},m)});return}}let L=S,Y;qe(c,!1),S?(S.el=$.el,q(c,S,x)):S=$,T&&gs(T),(Y=S.props&&S.props.onVnodeBeforeUpdate)&&ve(Y,I,S,$),qe(c,!0);const Q=si(c),Ce=c.subTree;c.subTree=Q,M(Ce,Q,p(Ce.el),ls(Ce),c,m,g),S.el=Q.el,L===null&&xo(c,Q.el),P&&oe(P,m),(Y=S.props&&S.props.onVnodeUpdated)&&oe(()=>ve(Y,I,S,$),m)}else{let S;const{el:T,props:P}=u,{bm:I,m:$,parent:L,root:Y,type:Q}=c,Ce=_t(u);qe(c,!1),I&&gs(I),!Ce&&(S=P&&P.onVnodeBeforeMount)&&ve(S,L,u),qe(c,!0);{Y.ce&&Y.ce._hasShadowRoot()&&Y.ce._injectChildStyle(Q,c.parent?c.parent.type:void 0);const Te=c.subTree=si(c);M(null,Te,d,b,c,m,g),u.el=Te.el}if($&&oe($,m),!Ce&&(S=P&&P.onVnodeMounted)){const Te=u;oe(()=>ve(S,L,Te),m)}(u.shapeFlag&256||L&&_t(L.vnode)&&L.vnode.shapeFlag&256)&&c.a&&oe(c.a,m),c.isMounted=!0,u=d=b=null}};c.scope.on();const y=c.effect=new un(v);c.scope.off();const _=c.update=y.run.bind(y),A=c.job=y.runIfDirty.bind(y);A.i=c,A.id=c.uid,y.scheduler=()=>Fs(A),qe(c,!0),_()},q=(c,u,d)=>{u.component=c;const b=c.vnode.props;c.vnode=u,c.next=null,wo(c,u.props,b,d),Eo(c,u.children,d),de(),jn(c),pe()},K=(c,u,d,b,m,g,x,v,y=!1)=>{const _=c&&c.children,A=c?c.shapeFlag:0,S=u.children,{patchFlag:T,shapeFlag:P}=u;if(T>0){if(T&128){os(_,S,d,b,m,g,x,v,y);return}else if(T&256){Ye(_,S,d,b,m,g,x,v,y);return}}P&8?(A&16&&Pt(_,m,g),S!==_&&a(d,S)):A&16?P&16?os(_,S,d,b,m,g,x,v,y):Pt(_,m,g,!0):(A&8&&a(d,""),P&16&&Le(S,d,b,m,g,x,v,y))},Ye=(c,u,d,b,m,g,x,v,y)=>{c=c||Ze,u=u||Ze;const _=c.length,A=u.length,S=Math.min(_,A);let T;for(T=0;TA?Pt(c,m,g,!0,!1,S):Le(u,d,b,m,g,x,v,y,S)},os=(c,u,d,b,m,g,x,v,y)=>{let _=0;const A=u.length;let S=c.length-1,T=A-1;for(;_<=S&&_<=T;){const P=c[_],I=u[_]=y?Ie(u[_]):ye(u[_]);if(vt(P,I))M(P,I,d,null,m,g,x,v,y);else break;_++}for(;_<=S&&_<=T;){const P=c[S],I=u[T]=y?Ie(u[T]):ye(u[T]);if(vt(P,I))M(P,I,d,null,m,g,x,v,y);else break;S--,T--}if(_>S){if(_<=T){const P=T+1,I=PT)for(;_<=S;)we(c[_],m,g,!0),_++;else{const P=_,I=_,$=new Map;for(_=I;_<=T;_++){const ce=u[_]=y?Ie(u[_]):ye(u[_]);ce.key!=null&&$.set(ce.key,_)}let L,Y=0;const Q=T-I+1;let Ce=!1,Te=0;const Rt=new Array(Q);for(_=0;_=Q){we(ce,m,g,!0);continue}let Ae;if(ce.key!=null)Ae=$.get(ce.key);else for(L=I;L<=T;L++)if(Rt[L-I]===0&&vt(ce,u[L])){Ae=L;break}Ae===void 0?we(ce,m,g,!0):(Rt[Ae-I]=_+1,Ae>=Te?Te=Ae:Ce=!0,M(ce,u[Ae],d,null,m,g,x,v,y),Y++)}const Gi=Ce?Mo(Rt):Ze;for(L=Gi.length-1,_=Q-1;_>=0;_--){const ce=I+_,Ae=u[ce],Ji=u[ce+1],zi=ce+1{const{el:g,type:x,transition:v,children:y,shapeFlag:_}=c;if(_&6){Xe(c.component.subTree,u,d,b);return}if(_&128){c.suspense.move(u,d,b);return}if(_&64){x.move(c,u,d,Ot);return}if(x===Me){n(g,u,d);for(let S=0;Sv.enter(g),m));else{const{leave:S,delayLeave:T,afterLeave:P}=v,I=()=>{c.ctx.isUnmounted?i(g):n(g,u,d)},$=()=>{const L=g._isLeaving||!!g[js];g._isLeaving&&g[js](!0),v.persisted&&!L?I():S(g,()=>{I(),P&&P()})};T?T(g,I,$):$()}else n(g,u,d)},we=(c,u,d,b=!1,m=!1)=>{const{type:g,props:x,ref:v,children:y,dynamicChildren:_,shapeFlag:A,patchFlag:S,dirs:T,cacheIndex:P,memo:I}=c;if(S===-2&&(m=!1),v!=null&&(de(),gt(v,null,d,c,!0),pe()),P!=null&&(u.renderCache[P]=void 0),A&256){u.ctx.deactivate(c);return}const $=A&1&&T,L=!_t(c);let Y;if(L&&(Y=x&&x.onVnodeBeforeUnmount)&&ve(Y,u,c),A&6)jl(c.component,d,b);else{if(A&128){c.suspense.unmount(d,b);return}$&&We(c,null,u,"beforeUnmount"),A&64?c.type.remove(c,u,d,Ot,b):_&&!_.hasOnce&&(g!==Me||S>0&&S&64)?Pt(_,u,d,!1,!0):(g===Me&&S&384||!m&&A&16)&&Pt(y,u,d),b&&Wi(c)}const Q=I!=null&&P==null;(L&&(Y=x&&x.onVnodeUnmounted)||$||Q)&&oe(()=>{Y&&ve(Y,u,c),$&&We(c,null,u,"unmounted"),Q&&(c.el=null)},d)},Wi=c=>{const{type:u,el:d,anchor:b,transition:m}=c;if(u===Me){Nl(d,b);return}if(u===Gs){E(c);return}const g=()=>{i(d),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(c.shapeFlag&1&&m&&!m.persisted){const{leave:x,delayLeave:v}=m,y=()=>x(d,g);v?v(c.el,g,y):y()}else g()},Nl=(c,u)=>{let d;for(;c!==u;)d=w(c),i(c),c=d;i(u)},jl=(c,u,d)=>{const{bum:b,scope:m,job:g,subTree:x,um:v,m:y,a:_}=c;_i(y),_i(_),b&&gs(b),m.stop(),g&&(g.flags|=8,we(x,c,u,d)),v&&oe(v,u),oe(()=>{c.isUnmounted=!0},u)},Pt=(c,u,d,b=!1,m=!1,g=0)=>{for(let x=g;x{if(c.shapeFlag&6)return ls(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const u=w(c.anchor||c.el),d=u&&u[qr];return d?w(d):u};let ks=!1;const qi=(c,u,d)=>{let b;c==null?u._vnode&&(we(u._vnode,null,null,!0),b=u._vnode.component):M(u._vnode||null,c,u,null,null,null,d),u._vnode=c,ks||(ks=!0,jn(b),Dn(),ks=!1)},Ot={p:M,um:we,m:Xe,r:Wi,mt:Qs,mc:Le,pc:K,pbc:ze,n:ls,o:e};return{render:qi,hydrate:void 0,createApp:po(qi)}}function qs({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function qe({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ro(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function pi(e,t,s=!1){const n=e.children,i=t.children;if(O(n)&&O(i))for(let r=0;r>1,e[s[l]]0&&(t[n]=s[r-1]),s[r]=n)}}for(r=s.length,o=s[r-1];r-- >0;)s[r]=o,o=t[o];return s}function gi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:gi(t)}function _i(e){if(e)for(let t=0;te.__isSuspense;function Io(e,t){t&&t.pendingBranch?O(e)?t.effects.push(...e):t.effects.push(e):$r(e)}const Me=Symbol.for("v-fgt"),Zt=Symbol.for("v-txt"),Ge=Symbol.for("v-cmt"),Gs=Symbol.for("v-stc"),Je=[];let le=null;function Fo(e=!1){Je.push(le=e?null:[])}function yi(){Je.pop(),le=Je[Je.length-1]||null}let yt=1;function vi(e,t=!1){yt+=e,e<0&&le&&t&&(le.hasOnce=!0)}function No(e){return e.dynamicChildren=yt>0?le||Ze:null,yi(),yt>0&&le&&le.push(e),e}function jo(e,t,s,n,i,r){return No(kt(e,t,s,n,i,r,!0))}function xi(e){return e?e.__v_isVNode===!0:!1}function vt(e,t){return e.type===t.type&&e.key===t.key}const Si=({key:e})=>e??null,Qt=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?G(e)||ee(e)||R(e)?{i:be,r:e,k:t,f:!!s}:e:null);function kt(e,t=null,s=null,n=0,i=null,r=e===Me?0:1,o=!1,l=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Si(t),ref:t&&Qt(t),scopeId:Ln,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:be};return l?(es(f,s),r&128&&e.normalize(f)):s&&(f.shapeFlag|=G(s)?8:16),yt>0&&!o&&le&&(f.patchFlag>0||r&6)&&f.patchFlag!==32&&le.push(f),f}const He=Do;function Do(e,t=null,s=null,n=0,i=null,r=!1){if((!e||e===ro)&&(e=Ge),xi(e)){const l=it(e,t,!0);return s&&es(l,s),yt>0&&!r&&le&&(l.shapeFlag&6?le[le.indexOf(e)]=l:le.push(l)),l.patchFlag=-2,l}if(Xo(e)&&(e=e.__vccOpts),t){t=Ho(t);let{class:l,style:f}=t;l&&!G(l)&&(t.class=ms(l)),B(f)&&(Ms(f)&&!O(f)&&(f=J({},f)),t.style=_s(f))}const o=G(e)?1:bi(e)?128:Gt(e)?64:B(e)?4:R(e)?2:0;return kt(e,t,s,n,i,o,r,!0)}function Ho(e){return e?Ms(e)||li(e)?J({},e):e:null}function it(e,t,s=!1,n=!1){const{props:i,ref:r,patchFlag:o,children:l,transition:f}=e,h=t?$o(i||{},t):i,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&Si(h),ref:t&&t.ref?s&&r?O(r)?r.concat(Qt(t)):[r,Qt(t)]:Qt(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Me?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:f,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&it(e.ssContent),ssFallback:e.ssFallback&&it(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return f&&n&&Ds(a,f.clone(a)),a}function Lo(e=" ",t=0){return He(Zt,null,e,t)}function ye(e){return e==null||typeof e=="boolean"?He(Ge):O(e)?He(Me,null,e.slice()):xi(e)?Ie(e):He(Zt,null,String(e))}function Ie(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:it(e)}function es(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(O(t))s=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),es(e,i()),i._c&&(i._d=!0));return}else{s=32;const i=t._;!i&&!li(t)?t._ctx=be:i===3&&be&&(be.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(R(t)){if(n&65){es(e,{default:t});return}t={default:t,_ctx:be},s=32}else t=String(t),n&64?(s=16,t=[Lo(t)]):s=8;e.children=t,e.shapeFlag|=s}function $o(...e){const t={};for(let s=0;sne||be;let ts,xt;{const e=Nt(),t=(s,n)=>{let i;return(i=e[s])||(i=e[s]=[]),i.push(n),r=>{i.length>1?i.forEach(o=>o(r)):i[0](r)}};ts=t("__VUE_INSTANCE_SETTERS__",s=>ne=s),xt=t("__VUE_SSR_SETTERS__",s=>wt=s)}const St=e=>{const t=ne;return ts(e),e.scope.on(),()=>{e.scope.off(),ts(t)}},Ci=()=>{ne&&ne.scope.off(),ts(null)};function Ti(e){return e.vnode.shapeFlag&4}let wt=!1;function Bo(e,t=!1,s=!1){t&&xt(t);const{props:n,children:i}=e.vnode,r=Ti(e);So(e,n,r,t),Ao(e,i,s||t);const o=r?Wo(e,t):void 0;return t&&xt(!1),o}function Wo(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,oo);const{setup:n}=s;if(n){de();const i=e.setupContext=n.length>1?Go(e):null,r=St(e),o=et(n,e,0,[e.props,i]),l=sn(o);if(pe(),r(),(l||e.sp)&&!_t(e)&&Kn(e),l){if(o.then(Ci,Ci),t)return o.then(f=>{xt(!0);try{Ai(e,f,t)}finally{xt(!1)}}).catch(f=>{Kt(f,e,0)});e.asyncDep=o}else Ai(e,o)}else Ei(e)}function Ai(e,t,s){R(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:B(t)&&(e.setupState=Rn(t)),Ei(e)}function Ei(e,t,s){const n=e.type;e.render||(e.render=n.render||he);{const i=St(e);de();try{lo(e)}finally{pe(),i()}}}const qo={get(e,t){return k(e,"get",""),e[t]}};function Go(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,qo),slots:e.slots,emit:e.emit,expose:t}}function Js(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Rn(Er(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in mt)return mt[s](e)},has(t,s){return s in t||s in mt}})):e.proxy}const Jo=/(?:^|[-_])\w/g,zo=e=>e.replace(Jo,t=>t.toUpperCase()).replace(/[-_]/g,"");function Yo(e,t=!0){return R(e)?e.displayName||e.name:e.name||t&&e.__name}function Pi(e,t,s=!1){let n=Yo(t);if(!n&&t.__file){const i=t.__file.match(/([^/\\]+)\.\w+$/);i&&(n=i[1])}if(!n&&e){const i=r=>{for(const o in r)if(r[o]===t)return o};n=i(e.components)||e.parent&&i(e.parent.type.components)||i(e.appContext.components)}return n?zo(n):s?"App":"Anonymous"}function Xo(e){return R(e)&&"__vccOpts"in e}const Ct=(e,t)=>Rr(e,t,wt),Zo="3.5.42";/** +**/const st=[];let uo=!1;function Q5(a,...e){if(uo)return;uo=!0,Ie();const n=st.length?st[st.length-1].component:null,t=n&&n.appContext.config.warnHandler,i=tu();if(t)xn(t,n,11,[a+e.map(o=>{var r,l;return(l=(r=o.toString)==null?void 0:r.call(o))!=null?l:JSON.stringify(o)}).join(""),n&&n.proxy,i.map(({vnode:o})=>`at <${Ql(n,o.type)}>`).join(` +`),i]);else{const o=[`[Vue warn]: ${a}`,...e];i.length&&o.push(` +`,...iu(i)),console.warn(...o)}xe(),uo=!1}function tu(){let a=st[st.length-1];if(!a)return[];const e=[];for(;a;){const n=e[0];n&&n.vnode===a?n.recurseCount++:e.push({vnode:a,recurseCount:0});const t=a.component&&a.component.parent;a=t&&t.vnode}return e}function iu(a){const e=[];return a.forEach((n,t)=>{e.push(...t===0?[]:[` +`],...ou(n))}),e}function ou({vnode:a,recurseCount:e}){const n=e>0?`... (${e} recursive calls)`:"",t=a.component?a.component.parent==null:!1,i=` at <${Ql(a.component,a.type,t)}`,o=">"+n;return a.props?[i,...ru(a.props),o]:[i+o]}function ru(a){const e=[],n=Object.keys(a);return n.slice(0,3).forEach(t=>{e.push(...nl(t,a[t]))}),n.length>3&&e.push(" ..."),e}function nl(a,e,n){return za(e)?(e=JSON.stringify(e),n?e:[`${a}=${e}`]):typeof e=="number"||typeof e=="boolean"||e==null?n?e:[`${a}=${e}`]:Wa(e)?(e=nl(a,wa(e.value),!0),n?e:[`${a}=Ref<`,e,">"]):ja(e)?[`${a}=fn${e.name?`<${e.name}>`:""}`]:(e=wa(e),n?e:[`${a}=`,e])}function xn(a,e,n,t){try{return t?a(...t):a()}catch(i){ct(i,e,n)}}function je(a,e,n,t){if(ja(a)){const i=xn(a,e,n,t);return i&&vr(i)&&i.catch(o=>{ct(o,e,n)}),i}if(Ca(a)){const i=[];for(let o=0;o>>1,i=se[t],o=gt(i);o=gt(n)?se.push(a):se.splice(su(e),0,a),a.flags|=1,il()}}function il(){ti||(ti=tl.then(ll))}function cu(a){if(!Ca(a))ln&&a.id===-1?ln.splice(Nn+1,0,a):a.flags&1||(Tn.push(a),a.flags|=1);else for(let e=0;egt(n)-gt(t));if(Tn.length=0,ln){for(let n=0;na.id==null?a.flags&2?-1:1/0:a.id;function ll(a){try{for(Ne=0;Ne{t._d&&mi(-1);const o=ii(e),r=jn.length;let l;try{l=a(...i)}finally{for(let s=jn.length;s>r;s--)Hl();ii(o),t._d&&mi(1)}return l};return t._n=!0,t._c=!0,t._d=!0,t}function uu(a,e){if(be===null)return a;const n=fi(be),t=a.dirs||(a.dirs=[]);for(let i=0;i1)return n&&ja(e)?e.call(t&&t.proxy):e}}function du(){return!!(Ze()||Cn)}const pu=Symbol.for("v-scx"),mu=()=>Na(pu);function hu(a,e){return mo(a,null,e)}function re(a,e,n){return mo(a,e,n)}function mo(a,e,n=Ba){const{immediate:t,deep:i,flush:o,once:r}=n,l=Ja({},n),s=e&&t||!e&&o!=="post";let g;if(Fn){if(o==="sync"){const w=mu();g=w.__watcherHandles||(w.__watcherHandles=[])}else if(!s){const w=()=>{};return w.stop=Me,w.resume=Me,w.pause=Me,w}}const d=te;l.call=(w,H,I)=>je(w,d,H,I);let _=!1;o==="post"?l.scheduler=w=>{de(w,d&&d.suspense)}:o!=="sync"&&(_=!0,l.scheduler=(w,H)=>{H?w():po(w)}),l.augmentJob=w=>{e&&(w.flags|=4),_&&(w.flags|=2,d&&(w.id=d.uid,w.i=d))};const v=nu(a,e,l);return Fn&&(g?g.push(v):s&&v()),v}function yu(a,e,n){const t=this.proxy,i=za(a)?a.includes(".")?cl(t,a):()=>t[a]:a.bind(t,t);let o;ja(e)?o=e:(o=e.handler,n=e);const r=Pt(this),l=mo(i,o.bind(t),n);return r(),l}function cl(a,e){const n=e.split(".");return()=>{let t=a;for(let i=0;ia.__isTeleport,ho=Symbol("_leaveCb");function _u(a){let e=a[0];if(a.length>1){for(const n of a)if(n.type!==We){e=n;break}}return e}function gl(a){if(!si(a))return oi(a.type)&&a.children?_u(a.children):a;if(a.component)return a.component.subTree;const{shapeFlag:e,children:n}=a;if(n){if(e&16)return n[0];if(e&32&&ja(n.default))return n.default()}}function yo(a,e){if(a.shapeFlag&6&&a.component){a.transition=e;const n=a.component.subTree;yo(oi(n.type)&&gl(n)||n,e)}else a.shapeFlag&128?(a.ssContent.transition=e.clone(a.ssContent),a.ssFallback.transition=e.clone(a.ssFallback)):a.transition=e}function ut(a,e){return ja(a)?Ja({name:a.name},e,{setup:a}):a}function bo(a){a.ids=[a.ids[0]+a.ids[2]+++"-",0,0]}function ul(a,e){let n;return!!((n=Object.getOwnPropertyDescriptor(a,e))&&!n.configurable)}const ri=new WeakMap;function dt(a,e,n,t,i=!1){if(Ca(a)){a.forEach((I,M)=>dt(I,e&&(Ca(e)?e[M]:e),n,t,i));return}if(pt(t)&&!i){t.shapeFlag&512&&t.type.__asyncResolved&&t.component.subTree.component&&dt(a,e,n,t.component.subTree);return}const o=t.shapeFlag&4?fi(t.component):t.el,r=i?null:o,{i:l,r:s}=a,g=e&&e.r,d=l.refs===Ba?l.refs={}:l.refs,_=l.setupState,v=wa(_),w=_===Ba?jr:I=>ul(d,I)?!1:xa(v,I),H=(I,M)=>!(M&&ul(d,M));if(g!=null&&g!==s){if(dl(e),za(g))d[g]=null,w(g)&&(_[g]=null);else if(Wa(g)){const I=e;H(g,I.k)&&(g.value=null),I.k&&(d[I.k]=null)}}if(ja(s))xn(s,l,12,[r,d]);else{const I=za(s),M=Wa(s);if(I||M){const x=()=>{if(a.f){const A=I?w(s)?_[s]:d[s]:H()||!a.k?s.value:d[a.k];if(i)Ca(A)&&Yi(A,o);else if(Ca(A))A.includes(o)||A.push(o);else if(I)d[s]=[o],w(s)&&(_[s]=d[s]);else{const $=[o];H(s,a.k)&&(s.value=$),a.k&&(d[a.k]=$)}}else I?(d[s]=r,w(s)&&(_[s]=r)):M&&(H(s,a.k)&&(s.value=r),a.k&&(d[a.k]=r))};if(r){const A=()=>{x(),ri.delete(a)};A.id=-1,ri.set(a,A),de(A,n)}else dl(a),x()}}}function dl(a){const e=ri.get(a);e&&(e.flags|=8,ri.delete(a))}const pl=a=>a.nodeType===8;Vt().requestIdleCallback,Vt().cancelIdleCallback;function fu(a,e){if(pl(a)&&a.data==="["){let n=1,t=a.nextSibling;for(;t;){if(t.nodeType===1){if(e(t)===!1)break}else if(pl(t))if(t.data==="]"){if(--n===0)break}else t.data==="["&&n++;t=t.nextSibling}}else e(a)}const pt=a=>!!a.type.__asyncLoader;function Pu(a){ja(a)&&(a={loader:a});const{loader:e,loadingComponent:n,errorComponent:t,delay:i=200,hydrate:o,timeout:r,suspensible:l=!0,onError:s}=a;let g=null,d,_=0;const v=()=>(_++,g=null,w()),w=()=>{let H;return g||(H=g=e().catch(I=>{if(I=I instanceof Error?I:new Error(String(I)),s)return new Promise((M,x)=>{s(I,()=>M(v()),()=>x(I),_+1)});throw I}).then(I=>H!==g&&g?g:(I&&(I.__esModule||I[Symbol.toStringTag]==="Module")&&(I=I.default),d=I,I)))};return ut({name:"AsyncComponentWrapper",__asyncLoader:w,__asyncHydrate(H,I,M){const x=H.isConnected;let A=!1;(I.bu||(I.bu=[])).push(()=>A=!0);const $=()=>{A||!H.parentNode||x&&!H.isConnected||M()},S=o?()=>{const j=o($,b=>fu(H,b));j&&(I.bum||(I.bum=[])).push(j)}:$;d?S():w().then(()=>!I.isUnmounted&&S())},get __asyncResolved(){return d},setup(){const H=te;if(bo(H),d)return()=>li(d,H);const I=j=>{g=null,ct(j,H,13,!t)};if(l&&H.suspense||Fn)return w().then(j=>()=>li(j,H)).catch(j=>(I(j),()=>t?Ya(t,{error:j}):null));const M=ua(!1),x=ua(),A=ua(!!i);let $,S;return gi(()=>{$!=null&&clearTimeout($),S!=null&&clearTimeout(S)}),i&&(S=setTimeout(()=>{H.isUnmounted||(A.value=!1)},i)),r!=null&&($=setTimeout(()=>{if(!H.isUnmounted&&!M.value&&!x.value){const j=new Error(`Async component timed out after ${r}ms.`);I(j),x.value=j}},r)),w().then(()=>{H.isUnmounted||(M.value=!0,H.parent&&si(H.parent.vnode)&&H.parent.update())}).catch(j=>{if(H.isUnmounted){g=null;return}I(j),x.value=j}),()=>{if(M.value&&d)return li(d,H);if(x.value&&t)return Ya(t,{error:x.value});if(n&&!A.value)return li(n,H)}}})}function li(a,e){const{ref:n,props:t,children:i,ce:o}=e.vnode,r=Ya(a,t,i);return r.ref=n,r.ce=o,delete e.vnode.ce,r}const si=a=>a.type.__isKeepAlive;function Cu(a,e){ml(a,"a",e)}function ku(a,e){ml(a,"da",e)}function ml(a,e,n=te){const t=a.__wdc||(a.__wdc=()=>{let i=n;for(;i;){if(i.isDeactivated)return;i=i.parent}return a()});if(ci(e,t,n),n){let i=n.parent;for(;i&&i.parent;)si(i.parent.vnode)&&ju(t,e,n,i),i=i.parent}}function ju(a,e,n,t){const i=ci(e,a,t,!0);gi(()=>{Yi(t[e],i)},n)}function ci(a,e,n=te,t=!1){if(n){const i=n[a]||(n[a]=[]),o=e.__weh||(e.__weh=(...r)=>{Ie();const l=Pt(n),s=je(e,n,a,r);return l(),xe(),s});return t?i.unshift(o):i.push(o),o}}const Ve=a=>(e,n=te)=>{(!Fn||a==="sp")&&ci(a,(...t)=>e(...t),n)},hl=Ve("bm"),ve=Ve("m"),Gu=Ve("bu"),vu=Ve("u"),sn=Ve("bum"),gi=Ve("um"),Au=Ve("sp"),Su=Ve("rtg"),Eu=Ve("rtc");function $u(a,e=te){ci("ec",a,e)}const Mu="components",yl=Symbol.for("v-ndc");function bl(a){return za(a)?wu(Mu,a,!1)||a:a||yl}function wu(a,e,n=!0,t=!1){const i=be||te;if(i){const o=i.type;{const l=Xl(o,!1);if(l&&(l===e||l===ee(e)||l===zt(ee(e))))return o}const r=_l(i[a]||o[a],e)||_l(i.appContext[a],e);return!r&&t?o:r}}function _l(a,e){return a&&(a[e]||a[ee(e)]||a[zt(ee(e))])}function Da(a,e,n,t){let i;const o=n,r=Ca(a);if(r||za(a)){const l=r&&De(a);let s=!1,g=!1;l&&(s=!ye(a),g=He(a),a=Jt(a)),i=new Array(a.length);for(let d=0,_=a.length;d<_;d++)i[d]=e(s?g?In(ke(a[d])):ke(a[d]):a[d],d,void 0,o)}else if(typeof a=="number"){i=new Array(a);for(let l=0;le(l,s,void 0,o));else{const l=Object.keys(a);i=new Array(l.length);for(let s=0,g=l.length;sa?Jl(a)?fi(a):_o(a.parent):null,mt=Ja(Object.create(null),{$:a=>a,$el:a=>a.vnode.el,$data:a=>a.data,$props:a=>a.props,$attrs:a=>a.attrs,$slots:a=>a.slots,$refs:a=>a.refs,$parent:a=>_o(a.parent),$root:a=>_o(a.root),$host:a=>a.ce,$emit:a=>a.emit,$options:a=>kl(a),$forceUpdate:a=>a.f||(a.f=()=>{po(a.update)}),$nextTick:a=>a.n||(a.n=Ln.bind(a.proxy)),$watch:a=>yu.bind(a)}),fo=(a,e)=>a!==Ba&&!a.__isScriptSetup&&xa(a,e),Iu={get({_:a},e){if(e==="__v_skip")return!0;const{ctx:n,setupState:t,data:i,props:o,accessCache:r,type:l,appContext:s}=a;if(e[0]!=="$"){const v=r[e];if(v!==void 0)switch(v){case 1:return t[e];case 2:return i[e];case 4:return n[e];case 3:return o[e]}else{if(fo(t,e))return r[e]=1,t[e];if(i!==Ba&&xa(i,e))return r[e]=2,i[e];if(xa(o,e))return r[e]=3,o[e];if(n!==Ba&&xa(n,e))return r[e]=4,n[e];Po&&(r[e]=0)}}const g=mt[e];let d,_;if(g)return e==="$attrs"&&oe(a.attrs,"get",""),g(a);if((d=l.__cssModules)&&(d=d[e]))return d;if(n!==Ba&&xa(n,e))return r[e]=4,n[e];if(_=s.config.globalProperties,xa(_,e))return _[e]},set({_:a},e,n){const{data:t,setupState:i,ctx:o}=a;return fo(i,e)?(i[e]=n,!0):t!==Ba&&xa(t,e)?(t[e]=n,!0):xa(a.props,e)||e[0]==="$"&&e.slice(1)in a?!1:(o[e]=n,!0)},has({_:{data:a,setupState:e,accessCache:n,ctx:t,appContext:i,props:o,type:r}},l){let s;return!!(n[l]||a!==Ba&&l[0]!=="$"&&xa(a,l)||fo(e,l)||xa(o,l)||xa(t,l)||xa(mt,l)||xa(i.config.globalProperties,l)||(s=r.__cssModules)&&s[l])},defineProperty(a,e,n){return n.get!=null?a._.accessCache[e]=0:xa(n,"value")&&this.set(a,e,n.value,null),Reflect.defineProperty(a,e,n)}};function fl(a){return Ca(a)?a.reduce((e,n)=>(e[n]=null,e),{}):a}let Po=!0;function xu(a){const e=kl(a),n=a.proxy,t=a.ctx;Po=!1,e.beforeCreate&&Pl(e.beforeCreate,a,"bc");const{data:i,computed:o,methods:r,watch:l,provide:s,inject:g,created:d,beforeMount:_,mounted:v,beforeUpdate:w,updated:H,activated:I,deactivated:M,beforeDestroy:x,beforeUnmount:A,destroyed:$,unmounted:S,render:j,renderTracked:b,renderTriggered:C,errorCaptured:F,serverPrefetch:B,expose:ia,inheritAttrs:ga,components:na,directives:ma,filters:Sa}=e;if(g&&Tu(g,t,null),r)for(const pa in r){const Y=r[pa];ja(Y)&&(t[pa]=Y.bind(n))}if(i){const pa=i.call(n,n);Ta(pa)&&(a.data=rt(pa))}if(Po=!0,o)for(const pa in o){const Y=o[pa],L=ja(Y)?Y.bind(n,n):ja(Y.get)?Y.get.bind(n,n):Me,D=!ja(Y)&&ja(Y.set)?Y.set.bind(n):Me,la=ra({get:L,set:D});Object.defineProperty(t,pa,{enumerable:!0,configurable:!0,get:()=>la.value,set:X=>la.value=X})}if(l)for(const pa in l)Cl(l[pa],t,n,pa);if(s){const pa=ja(s)?s.call(n):s;Reflect.ownKeys(pa).forEach(Y=>{Ge(Y,pa[Y])})}d&&Pl(d,a,"c");function ha(pa,Y){Ca(Y)?Y.forEach(L=>pa(L.bind(n))):Y&&pa(Y.bind(n))}if(ha(hl,_),ha(ve,v),ha(Gu,w),ha(vu,H),ha(Cu,I),ha(ku,M),ha($u,F),ha(Eu,b),ha(Su,C),ha(sn,A),ha(gi,S),ha(Au,B),Ca(ia))if(ia.length){const pa=a.exposed||(a.exposed={});ia.forEach(Y=>{Object.defineProperty(pa,Y,{get:()=>n[Y],set:L=>n[Y]=L,enumerable:!0})})}else a.exposed||(a.exposed={});j&&a.render===Me&&(a.render=j),ga!=null&&(a.inheritAttrs=ga),na&&(a.components=na),ma&&(a.directives=ma),B&&bo(a)}function Tu(a,e,n=Me){Ca(a)&&(a=Co(a));for(const t in a){const i=a[t];let o;Ta(i)?"default"in i?o=Na(i.from||t,i.default,!0):o=Na(i.from||t):o=Na(i),Wa(o)?Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):e[t]=o}}function Pl(a,e,n){je(Ca(a)?a.map(t=>t.bind(e.proxy)):a.bind(e.proxy),e,n)}function Cl(a,e,n,t){let i=t.includes(".")?cl(n,t):()=>n[t];if(za(a)){const o=e[a];ja(o)&&re(i,o)}else if(ja(a))re(i,a.bind(n));else if(Ta(a))if(Ca(a))a.forEach(o=>Cl(o,e,n,t));else{const o=ja(a.handler)?a.handler.bind(n):e[a.handler];ja(o)&&re(i,o,a)}}function kl(a){const e=a.type,{mixins:n,extends:t}=e,{mixins:i,optionsCache:o,config:{optionMergeStrategies:r}}=a.appContext,l=o.get(e);let s;return l?s=l:!i.length&&!n&&!t?s=e:(s={},i.length&&i.forEach(g=>ui(s,g,r,!0)),ui(s,e,r)),Ta(e)&&o.set(e,s),s}function ui(a,e,n,t=!1){const{mixins:i,extends:o}=e;o&&ui(a,o,n,!0),i&&i.forEach(r=>ui(a,r,n,!0));for(const r in e)if(!(t&&r==="expose")){const l=Nu[r]||n&&n[r];a[r]=l?l(a[r],e[r]):e[r]}return a}const Nu={data:jl,props:Gl,emits:Gl,methods:ht,computed:ht,beforeCreate:ce,created:ce,beforeMount:ce,mounted:ce,beforeUpdate:ce,updated:ce,beforeDestroy:ce,beforeUnmount:ce,destroyed:ce,unmounted:ce,activated:ce,deactivated:ce,errorCaptured:ce,serverPrefetch:ce,components:ht,directives:ht,watch:Ru,provide:jl,inject:Lu};function jl(a,e){return e?a?function(){return Ja(ja(a)?a.call(this,this):a,ja(e)?e.call(this,this):e)}:e:a}function Lu(a,e){return ht(Co(a),Co(e))}function Co(a){if(Ca(a)){const e={};for(let n=0;ne==="modelValue"||e==="model-value"?a.modelModifiers:a[`${e}Modifiers`]||a[`${ee(e)}Modifiers`]||a[`${he(e)}Modifiers`];function Ou(a,e,...n){if(a.isUnmounted)return;const t=a.vnode.props||Ba;let i=n;const o=e.startsWith("update:"),r=o&&Ku(t,e.slice(7));r&&(r.trim&&(i=n.map(d=>za(d)?d.trim():d)),r.number&&(i=i.map(Cg)));let l,s=t[l=Ji(e)]||t[l=Ji(ee(e))];!s&&o&&(s=t[l=Ji(he(e))]),s&&je(s,a,6,i);const g=t[l+"Once"];if(g){if(!a.emitted)a.emitted={};else if(a.emitted[l])return;a.emitted[l]=!0,je(g,a,6,i)}}const Uu=new WeakMap;function Al(a,e,n=!1){const t=n?Uu:e.emitsCache,i=t.get(a);if(i!==void 0)return i;const o=a.emits;let r={},l=!1;if(!ja(a)){const s=g=>{const d=Al(g,e,!0);d&&(l=!0,Ja(r,d))};!n&&e.mixins.length&&e.mixins.forEach(s),a.extends&&s(a.extends),a.mixins&&a.mixins.forEach(s)}return!o&&!l?(Ta(a)&&t.set(a,null),null):(Ca(o)?o.forEach(s=>r[s]=null):Ja(r,o),Ta(a)&&t.set(a,r),r)}function di(a,e){return!a||!Bt(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),xa(a,e[0].toLowerCase()+e.slice(1))||xa(a,he(e))||xa(a,e))}function af(){}function Sl(a){const{type:e,vnode:n,proxy:t,withProxy:i,propsOptions:[o],slots:r,attrs:l,emit:s,render:g,renderCache:d,props:_,data:v,setupState:w,ctx:H,inheritAttrs:I}=a,M=ii(a);let x,A;try{if(n.shapeFlag&4){const S=i||t,j=S;x=Le(g.call(j,S,d,_,w,v,H)),A=l}else{const S=e;x=Le(S.length>1?S(_,{attrs:l,slots:r,emit:s}):S(_,null)),A=e.props?l:Du(l)}}catch(S){jn.length=0,ct(S,a,1),x=Ya(We)}let $=x;if(A&&I!==!1){const S=Object.keys(A),{shapeFlag:j}=$;S.length&&j&7&&(o&&S.some(Kt)&&(A=Hu(A,o)),$=Rn($,A,!1,!0))}if(n.dirs&&($=Rn($,null,!1,!0),$.dirs=$.dirs?$.dirs.concat(n.dirs):n.dirs),n.transition){const S=oi($.type)&&gl($)||$;yo(S,n.transition)}return x=$,ii(M),x}const Du=a=>{let e;for(const n in a)(n==="class"||n==="style"||Bt(n))&&((e||(e={}))[n]=a[n]);return e},Hu=(a,e)=>{const n={};for(const t in a)(!Kt(t)||!(t.slice(9)in e))&&(n[t]=a[t]);return n};function zu(a,e,n){const{props:t,children:i,component:o}=a,{props:r,children:l,patchFlag:s}=e,g=o.emitsOptions;if(e.dirs||e.transition)return!0;if(n&&s>=0){if(s&1024)return!0;if(s&16)return t?El(t,r,g):!!r;if(s&8){const d=e.dynamicProps;for(let _=0;_Object.create(Ml),Il=a=>Object.getPrototypeOf(a)===Ml;function Wu(a,e,n,t=!1){const i={},o=wl();a.propsDefaults=Object.create(null),xl(a,e,i,o);for(const r in a.propsOptions[0])r in i||(i[r]=void 0);n?a.props=t?i:Wg(i):a.type.props?a.props=i:a.props=o,a.attrs=o}function Yu(a,e,n,t){const{props:i,attrs:o,vnode:{patchFlag:r}}=a,l=wa(i),[s]=a.propsOptions;let g=!1;if((t||r>0)&&!(r&16)){if(r&8){const d=a.vnode.dynamicProps;for(let _=0;_{s=!0;const[v,w]=Tl(_,e,!0);Ja(r,v),w&&l.push(...w)};!n&&e.mixins.length&&e.mixins.forEach(d),a.extends&&d(a.extends),a.mixins&&a.mixins.forEach(d)}if(!o&&!s)return Ta(a)&&t.set(a,Mn),Mn;if(Ca(o))for(let d=0;da==="_"||a==="_ctx"||a==="$stable",Go=a=>Ca(a)?a.map(Le):[Le(a)],Zu=(a,e,n)=>{if(e._n)return e;const t=gu((...i)=>Go(e(...i)),n);return t._c=!1,t},Ll=(a,e,n)=>{const t=a._ctx;for(const i in a){if(jo(i))continue;const o=a[i];if(ja(o))e[i]=Zu(i,o,t);else if(o!=null){const r=Go(o);e[i]=()=>r}}},Rl=(a,e)=>{const n=Go(e);a.slots.default=()=>n},Fl=(a,e,n)=>{for(const t in e)(n||!jo(t))&&(a[t]=e[t])},qu=(a,e,n)=>{const t=a.slots=wl();if(a.vnode.shapeFlag&32){const i=e._;i?(Fl(t,e,n),n&&Sr(t,"_",i,!0)):Ll(e,t)}else e&&Rl(a,e)},Xu=(a,e,n)=>{const{vnode:t,slots:i}=a;let o=!0,r=Ba;if(t.shapeFlag&32){const l=e._;l?n&&l===1?o=!1:Fl(i,e,n):(o=!e.$stable,Ll(e,i)),r=e}else e&&(Rl(a,e),r={default:1});if(o)for(const l in i)!jo(l)&&r[l]==null&&delete i[l]},de=td;function Qu(a){return ad(a)}function ad(a,e){const n=Vt();n.__VUE__=!0;const{insert:t,remove:i,patchProp:o,createElement:r,createText:l,createComment:s,setText:g,setElementText:d,parentNode:_,nextSibling:v,setScopeId:w=Me,insertStaticContent:H}=a,I=(y,E,h,N=null,z=null,V=null,oa=void 0,ea=null,p=!!E.dynamicChildren)=>{if(y===E)return;y&&!_t(y,E)&&(N=G(y),X(y,z,V,!0),y=null),E.patchFlag===-2&&(p=!1,E.dynamicChildren=null);const{type:m,ref:K,shapeFlag:q}=E;switch(m){case yt:M(y,E,h,N);break;case We:x(y,E,h,N);break;case pi:y==null&&A(E,h,N,oa);break;case Aa:na(y,E,h,N,z,V,oa,ea,p);break;default:q&1?j(y,E,h,N,z,V,oa,ea,p):q&6?ma(y,E,h,N,z,V,oa,ea,p):(q&64||q&128)&&m.process(y,E,h,N,z,V,oa,ea,p,R)}K!=null&&z?dt(K,y&&y.ref,V,E||y,!E):K==null&&y&&y.ref!=null&&dt(y.ref,null,V,y,!0)},M=(y,E,h,N)=>{if(y==null)t(E.el=l(E.children),h,N);else{const z=E.el=y.el;E.children!==y.children&&g(z,E.children)}},x=(y,E,h,N)=>{y==null?t(E.el=s(E.children||""),h,N):E.el=y.el},A=(y,E,h,N)=>{[y.el,y.anchor]=H(y.children,E,h,N,y.el,y.anchor)},$=({el:y,anchor:E},h,N)=>{let z;for(;y&&y!==E;)z=v(y),t(y,h,N),y=z;t(E,h,N)},S=({el:y,anchor:E})=>{let h;for(;y&&y!==E;)h=v(y),i(y),y=h;i(E)},j=(y,E,h,N,z,V,oa,ea,p)=>{if(E.type==="svg"?oa="svg":E.type==="math"&&(oa="mathml"),y==null)b(E,h,N,z,V,oa,ea,p);else{const m=y.el&&y.el._isVueCE?y.el:null;try{m&&m._beginPatch(),B(y,E,z,V,oa,ea,p)}finally{m&&m._endPatch()}}},b=(y,E,h,N,z,V,oa,ea)=>{let p,m;const{props:K,shapeFlag:q,transition:ca,dirs:sa}=y;if(p=y.el=r(y.type,V,K&&K.is,K),q&8?d(p,y.children):q&16&&F(y.children,p,null,N,z,vo(y,V),oa,ea),sa&&Pn(y,null,N,"created"),C(p,y,y.scopeId,oa,N),K){for(const Q in K)Q!=="value"&&!at(Q)&&o(p,Q,null,K[Q],V,N);"value"in K&&o(p,"value",null,K.value,V),(m=K.onVnodeBeforeMount)&&Re(m,N,y)}sa&&Pn(y,null,N,"beforeMount");const U=ed(z,ca);U&&ca.beforeEnter(p),t(p,E,h),((m=K&&K.onVnodeMounted)||U||sa)&&de(()=>{try{m&&Re(m,N,y),U&&ca.enter(p),sa&&Pn(y,null,N,"mounted")}finally{}},z)},C=(y,E,h,N,z)=>{if(h&&w(y,h),N)for(let V=0;V{for(let m=p;m{const ea=E.el=y.el;let{patchFlag:p,dynamicChildren:m,dirs:K}=E;p|=y.patchFlag&16;const q=y.props||Ba,ca=E.props||Ba;let sa;if(h&&kn(h,!1),(sa=ca.onVnodeBeforeUpdate)&&Re(sa,h,E,y),K&&Pn(E,y,h,"beforeUpdate"),h&&kn(h,!0),m&&(!y.dynamicChildren||y.dynamicChildren.length!==m.length)&&(p=0,oa=!1,m=null),(q.innerHTML&&ca.innerHTML==null||q.textContent&&ca.textContent==null)&&d(ea,""),m?ia(y.dynamicChildren,m,ea,h,N,vo(E,z),V):oa||Y(y,E,ea,null,h,N,vo(E,z),V,!1),p>0){if(p&16)ga(ea,q,ca,h,z);else if(p&2&&q.class!==ca.class&&o(ea,"class",null,ca.class,z),p&4&&o(ea,"style",q.style,ca.style,z),p&8){const U=E.dynamicProps;for(let Q=0;Q{sa&&Re(sa,h,E,y),K&&Pn(E,y,h,"updated")},N)},ia=(y,E,h,N,z,V,oa)=>{for(let ea=0;ea{if(E!==h){if(E!==Ba)for(const V in E)!at(V)&&!(V in h)&&o(y,V,E[V],null,z,N);for(const V in h){if(at(V))continue;const oa=h[V],ea=E[V];oa!==ea&&V!=="value"&&o(y,V,ea,oa,z,N)}"value"in h&&o(y,"value",E.value,h.value,z)}},na=(y,E,h,N,z,V,oa,ea,p)=>{const m=E.el=y?y.el:l(""),K=E.anchor=y?y.anchor:l("");let{patchFlag:q,dynamicChildren:ca,slotScopeIds:sa}=E;sa&&(ea=ea?ea.concat(sa):sa),y==null?(t(m,h,N),t(K,h,N),F(E.children||[],h,K,z,V,oa,ea,p)):q>0&&q&64&&ca&&y.dynamicChildren&&y.dynamicChildren.length===ca.length?(ia(y.dynamicChildren,ca,h,z,V,oa,ea),(E.key!=null||z&&E===z.subTree)&&Bl(y,E,!0)):Y(y,E,h,K,z,V,oa,ea,p)},ma=(y,E,h,N,z,V,oa,ea,p)=>{E.slotScopeIds=ea,y==null?E.shapeFlag&512?z.ctx.activate(E,h,N,oa,p):Sa(E,h,N,z,V,oa,p):$a(y,E,p)},Sa=(y,E,h,N,z,V,oa)=>{const ea=y.component=cd(y,N,z);if(si(y)&&(ea.ctx.renderer=R),gd(ea,!1,oa),ea.asyncDep){if(z&&z.registerDep(ea,ha,oa),!y.el){const p=ea.subTree=Ya(We);x(null,p,E,h),y.placeholder=p.el}}else ha(ea,y,E,h,z,V,oa)},$a=(y,E,h)=>{const N=E.component=y.component;if(zu(y,E,h))if(N.asyncDep&&!N.asyncResolved){pa(N,E,h);return}else N.next=E,N.update();else E.el=y.el,N.vnode=E},ha=(y,E,h,N,z,V,oa)=>{const ea=()=>{if(y.isMounted){let{next:q,bu:ca,u:sa,parent:U,vnode:Q}=y;{const qa=Kl(y);if(qa){q&&(q.el=Q.el,pa(y,q,oa)),qa.asyncDep.then(()=>{de(()=>{y.isUnmounted||m()},z)});return}}let _a=q,va;kn(y,!1),q?(q.el=Q.el,pa(y,q,oa)):q=Q,ca&&Zi(ca),(va=q.props&&q.props.onVnodeBeforeUpdate)&&Re(va,U,q,Q),kn(y,!0);const Ra=Sl(y),ae=y.subTree;y.subTree=Ra,I(ae,Ra,_(ae.el),G(ae),y,z,V),q.el=Ra.el,_a===null&&Vu(y,Ra.el),sa&&de(sa,z),(va=q.props&&q.props.onVnodeUpdated)&&de(()=>Re(va,U,q,Q),z)}else{let q;const{el:ca,props:sa}=E,{bm:U,m:Q,parent:_a,root:va,type:Ra}=y,ae=pt(E);kn(y,!1),U&&Zi(U),!ae&&(q=sa&&sa.onVnodeBeforeMount)&&Re(q,_a,E),kn(y,!0);{va.ce&&va.ce._hasShadowRoot()&&va.ce._injectChildStyle(Ra,y.parent?y.parent.type:void 0);const qa=y.subTree=Sl(y);I(null,qa,h,N,y,z,V),E.el=qa.el}if(Q&&de(Q,z),!ae&&(q=sa&&sa.onVnodeMounted)){const qa=E;de(()=>Re(q,_a,qa),z)}(E.shapeFlag&256||_a&&pt(_a.vnode)&&_a.vnode.shapeFlag&256)&&y.a&&de(y.a,z),y.isMounted=!0,E=h=N=null}};y.scope.on();const p=y.effect=new Lr(ea);y.scope.off();const m=y.update=p.run.bind(p),K=y.job=p.runIfDirty.bind(p);K.i=y,K.id=y.uid,p.scheduler=()=>po(K),kn(y,!0),m()},pa=(y,E,h)=>{E.component=y;const N=y.vnode.props;y.vnode=E,y.next=null,Yu(y,E.props,N,h),Xu(y,E.children,h),Ie(),ol(y),xe()},Y=(y,E,h,N,z,V,oa,ea,p=!1)=>{const m=y&&y.children,K=y?y.shapeFlag:0,q=E.children,{patchFlag:ca,shapeFlag:sa}=E;if(ca>0){if(ca&128){D(m,q,h,N,z,V,oa,ea,p);return}else if(ca&256){L(m,q,h,N,z,V,oa,ea,p);return}}sa&8?(K&16&&u(m,z,V),q!==m&&d(h,q)):K&16?sa&16?D(m,q,h,N,z,V,oa,ea,p):u(m,z,V,!0):(K&8&&d(h,""),sa&16&&F(q,h,N,z,V,oa,ea,p))},L=(y,E,h,N,z,V,oa,ea,p)=>{y=y||Mn,E=E||Mn;const m=y.length,K=E.length,q=Math.min(m,K);let ca;for(ca=0;caK?u(y,z,V,!0,!1,q):F(E,h,N,z,V,oa,ea,p,q)},D=(y,E,h,N,z,V,oa,ea,p)=>{let m=0;const K=E.length;let q=y.length-1,ca=K-1;for(;m<=q&&m<=ca;){const sa=y[m],U=E[m]=p?Je(E[m]):Le(E[m]);if(_t(sa,U))I(sa,U,h,null,z,V,oa,ea,p);else break;m++}for(;m<=q&&m<=ca;){const sa=y[q],U=E[ca]=p?Je(E[ca]):Le(E[ca]);if(_t(sa,U))I(sa,U,h,null,z,V,oa,ea,p);else break;q--,ca--}if(m>q){if(m<=ca){const sa=ca+1,U=saca)for(;m<=q;)X(y[m],z,V,!0),m++;else{const sa=m,U=m,Q=new Map;for(m=U;m<=ca;m++){const Ka=E[m]=p?Je(E[m]):Le(E[m]);Ka.key!=null&&Q.set(Ka.key,m)}let _a,va=0;const Ra=ca-U+1;let ae=!1,qa=0;const Pa=new Array(Ra);for(m=0;m=Ra){X(Ka,z,V,!0);continue}let ue;if(Ka.key!=null)ue=Q.get(Ka.key);else for(_a=U;_a<=ca;_a++)if(Pa[_a-U]===0&&_t(Ka,E[_a])){ue=_a;break}ue===void 0?X(Ka,z,V,!0):(Pa[ue-U]=m+1,ue>=qa?qa=ue:ae=!0,I(Ka,E[ue],h,null,z,V,oa,ea,p),va++)}const Fa=ae?nd(Pa):Mn;for(_a=Fa.length-1,m=Ra-1;m>=0;m--){const Ka=U+m,ue=E[Ka],$n=E[Ka+1],me=Ka+1{const{el:V,type:oa,transition:ea,children:p,shapeFlag:m}=y;if(m&6){la(y.component.subTree,E,h,N);return}if(m&128){y.suspense.move(E,h,N);return}if(m&64){oa.move(y,E,h,R);return}if(oa===Aa){t(V,E,h);for(let q=0;qea.enter(V),z));else{const{leave:q,delayLeave:ca,afterLeave:sa}=ea,U=()=>{y.ctx.isUnmounted?i(V):t(V,E,h)},Q=()=>{const _a=V._isLeaving||!!V[ho];V._isLeaving&&V[ho](!0),ea.persisted&&!_a?U():q(V,()=>{U(),sa&&sa()})};ca?ca(V,U,Q):Q()}else t(V,E,h)},X=(y,E,h,N=!1,z=!1)=>{const{type:V,props:oa,ref:ea,children:p,dynamicChildren:m,shapeFlag:K,patchFlag:q,dirs:ca,cacheIndex:sa,memo:U}=y;if(q===-2&&(z=!1),ea!=null&&(Ie(),dt(ea,null,h,y,!0),xe()),sa!=null&&(E.renderCache[sa]=void 0),K&256){E.ctx.deactivate(y);return}const Q=K&1&&ca,_a=!pt(y);let va;if(_a&&(va=oa&&oa.onVnodeBeforeUnmount)&&Re(va,E,y),K&6)O(y.component,h,N);else{if(K&128){y.suspense.unmount(h,N);return}Q&&Pn(y,null,E,"beforeUnmount"),K&64?y.type.remove(y,E,h,R,N):m&&!m.hasOnce&&(V!==Aa||q>0&&q&64)?u(m,E,h,!1,!0):(V===Aa&&q&384||!z&&K&16)&&u(p,E,h),N&&c(y)}const Ra=U!=null&&sa==null;(_a&&(va=oa&&oa.onVnodeUnmounted)||Q||Ra)&&de(()=>{va&&Re(va,E,y),Q&&Pn(y,null,E,"unmounted"),Ra&&(y.el=null)},h)},c=y=>{const{type:E,el:h,anchor:N,transition:z}=y;if(E===Aa){f(h,N);return}if(E===pi){S(y);return}const V=()=>{i(h),z&&!z.persisted&&z.afterLeave&&z.afterLeave()};if(y.shapeFlag&1&&z&&!z.persisted){const{leave:oa,delayLeave:ea}=z,p=()=>oa(h,V);ea?ea(y.el,V,p):p()}else V()},f=(y,E)=>{let h;for(;y!==E;)h=v(y),i(y),y=h;i(E)},O=(y,E,h)=>{const{bum:N,scope:z,job:V,subTree:oa,um:ea,m:p,a:m}=y;Ol(p),Ol(m),N&&Zi(N),z.stop(),V&&(V.flags|=8,X(oa,y,E,h)),ea&&de(ea,E),de(()=>{y.isUnmounted=!0},E)},u=(y,E,h,N=!1,z=!1,V=0)=>{for(let oa=V;oa{if(y.shapeFlag&6)return G(y.component.subTree);if(y.shapeFlag&128)return y.suspense.next();const E=v(y.anchor||y.el),h=E&&E[bu];return h?v(h):E};let k=!1;const T=(y,E,h)=>{let N;y==null?E._vnode&&(X(E._vnode,null,null,!0),N=E._vnode.component):I(E._vnode||null,y,E,null,null,null,h),E._vnode=y,k||(k=!0,ol(N),rl(),k=!1)},R={p:I,um:X,m:la,r:c,mt:Sa,mc:F,pc:Y,pbc:ia,n:G,o:a};return{render:T,hydrate:void 0,createApp:Bu(T)}}function vo({type:a,props:e},n){return n==="svg"&&a==="foreignObject"||n==="mathml"&&a==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:n}function kn({effect:a,job:e},n){n?(a.flags|=32,e.flags|=4):(a.flags&=-33,e.flags&=-5)}function ed(a,e){return(!a||a&&!a.pendingBranch)&&e&&!e.persisted}function Bl(a,e,n=!1){const t=a.children,i=e.children;if(Ca(t)&&Ca(i))for(let o=0;o>1,a[n[l]]0&&(e[t]=n[o-1]),n[o]=t)}}for(o=n.length,r=n[o-1];o-- >0;)n[o]=r,r=e[r];return n}function Kl(a){const e=a.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Kl(e)}function Ol(a){if(a)for(let e=0;ea.__isSuspense;function td(a,e){e&&e.pendingBranch?Ca(a)?e.effects.push(...a):e.effects.push(a):cu(a)}const Aa=Symbol.for("v-fgt"),yt=Symbol.for("v-txt"),We=Symbol.for("v-cmt"),pi=Symbol.for("v-stc"),jn=[];let _e=null;function W(a=!1){jn.push(_e=a?null:[])}function Hl(){jn.pop(),_e=jn[jn.length-1]||null}let bt=1;function mi(a,e=!1){bt+=a,a<0&&_e&&e&&(_e.hasOnce=!0)}function zl(a){return a.dynamicChildren=bt>0?_e||Mn:null,Hl(),bt>0&&_e&&_e.push(a),a}function Z(a,e,n,t,i,o){return zl(P(a,e,n,t,i,o,!0))}function Ye(a,e,n,t,i){return zl(Ya(a,e,n,t,i,!0))}function hi(a){return a?a.__v_isVNode===!0:!1}function _t(a,e){return a.type===e.type&&a.key===e.key}const Vl=({key:a})=>a??null,yi=({ref:a,ref_key:e,ref_for:n})=>(typeof a=="number"&&(a=""+a),a!=null?za(a)||Wa(a)||ja(a)?{i:be,r:a,k:e,f:!!n}:a:null);function P(a,e=null,n=null,t=0,i=null,o=a===Aa?0:1,r=!1,l=!1){const s={__v_isVNode:!0,__v_skip:!0,type:a,props:e,key:e&&Vl(e),ref:e&&yi(e),scopeId:sl,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:t,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:be};return l?(bi(s,n),o&128&&a.normalize(s)):n&&(s.shapeFlag|=za(n)?8:16),bt>0&&!r&&_e&&(s.patchFlag>0||o&6)&&s.patchFlag!==32&&_e.push(s),s}const Ya=id;function id(a,e=null,n=null,t=0,i=null,o=!1){if((!a||a===yl)&&(a=We),hi(a)){const l=Rn(a,e,!0);return n&&bi(l,n),bt>0&&!o&&_e&&(l.shapeFlag&6?_e[_e.indexOf(a)]=l:_e.push(l)),l.patchFlag=-2,l}if(yd(a)&&(a=a.__vccOpts),e){e=od(e);let{class:l,style:s}=e;l&&!za(l)&&(e.class=Ma(l)),Ta(s)&&(ai(s)&&!Ca(s)&&(s=Ja({},s)),e.style=Oa(s))}const r=za(a)?1:Dl(a)?128:oi(a)?64:Ta(a)?4:ja(a)?2:0;return P(a,e,n,t,i,r,o,!0)}function od(a){return a?ai(a)||Il(a)?Ja({},a):a:null}function Rn(a,e,n=!1,t=!1){const{props:i,ref:o,patchFlag:r,children:l,transition:s}=a,g=e?rd(i||{},e):i,d={__v_isVNode:!0,__v_skip:!0,type:a.type,props:g,key:g&&Vl(g),ref:e&&e.ref?n&&o?Ca(o)?o.concat(yi(e)):[o,yi(e)]:yi(e):o,scopeId:a.scopeId,slotScopeIds:a.slotScopeIds,children:l,target:a.target,targetStart:a.targetStart,targetAnchor:a.targetAnchor,staticCount:a.staticCount,shapeFlag:a.shapeFlag,patchFlag:e&&a.type!==Aa?r===-1?16:r|16:r,dynamicProps:a.dynamicProps,dynamicChildren:a.dynamicChildren,appContext:a.appContext,dirs:a.dirs,transition:s,component:a.component,suspense:a.suspense,ssContent:a.ssContent&&Rn(a.ssContent),ssFallback:a.ssFallback&&Rn(a.ssFallback),placeholder:a.placeholder,el:a.el,anchor:a.anchor,ctx:a.ctx,ce:a.ce};return s&&t&&yo(d,s.clone(d)),d}function ba(a=" ",e=0){return Ya(yt,null,a,e)}function Wl(a,e){const n=Ya(pi,null,a);return n.staticCount=e,n}function fa(a="",e=!1){return e?(W(),Ye(We,null,a)):Ya(We,null,a)}function Le(a){return a==null||typeof a=="boolean"?Ya(We):Ca(a)?Ya(Aa,null,a.slice()):hi(a)?Je(a):Ya(yt,null,String(a))}function Je(a){return a.el===null&&a.patchFlag!==-1||a.memo?a:Rn(a)}function bi(a,e){let n=0;const{shapeFlag:t}=a;if(e==null)e=null;else if(Ca(e))n=16;else if(typeof e=="object")if(t&65){const i=e.default;i&&(i._c&&(i._d=!1),bi(a,i()),i._c&&(i._d=!0));return}else{n=32;const i=e._;!i&&!Il(e)?e._ctx=be:i===3&&be&&(be.slots._===1?e._=1:(e._=2,a.patchFlag|=1024))}else if(ja(e)){if(t&65){bi(a,{default:e});return}e={default:e,_ctx:be},n=32}else e=String(e),t&64?(n=16,e=[ba(e)]):n=8;a.children=e,a.shapeFlag|=n}function rd(...a){const e={};for(let n=0;nte||be;let _i,ft;{const a=Vt(),e=(n,t)=>{let i;return(i=a[n])||(i=a[n]=[]),i.push(t),o=>{i.length>1?i.forEach(r=>r(o)):i[0](o)}};_i=e("__VUE_INSTANCE_SETTERS__",n=>te=n),ft=e("__VUE_SSR_SETTERS__",n=>Fn=n)}const Pt=a=>{const e=te;return _i(a),a.scope.on(),()=>{a.scope.off(),_i(e)}},Yl=()=>{te&&te.scope.off(),_i(null)};function Jl(a){return a.vnode.shapeFlag&4}let Fn=!1;function gd(a,e=!1,n=!1){e&&ft(e);const{props:t,children:i}=a.vnode,o=Jl(a);Wu(a,t,o,e),qu(a,i,n||e);const r=o?ud(a,e):void 0;return e&&ft(!1),r}function ud(a,e){const n=a.type;a.accessCache=Object.create(null),a.proxy=new Proxy(a.ctx,Iu);const{setup:t}=n;if(t){Ie();const i=a.setupContext=t.length>1?pd(a):null,o=Pt(a),r=xn(t,a,0,[a.props,i]),l=vr(r);if(xe(),o(),(l||a.sp)&&!pt(a)&&bo(a),l){if(r.then(Yl,Yl),e)return r.then(s=>{ft(!0);try{Zl(a,s,e)}finally{ft(!1)}}).catch(s=>{ct(s,a,0)});a.asyncDep=r}else Zl(a,r)}else ql(a)}function Zl(a,e,n){ja(e)?a.type.__ssrInlineRender?a.ssrRender=e:a.render=e:Ta(e)&&(a.setupState=el(e)),ql(a)}function ql(a,e,n){const t=a.type;a.render||(a.render=t.render||Me);{const i=Pt(a);Ie();try{xu(a)}finally{xe(),i()}}}const dd={get(a,e){return oe(a,"get",""),a[e]}};function pd(a){const e=n=>{a.exposed=n||{}};return{attrs:new Proxy(a.attrs,dd),slots:a.slots,emit:a.emit,expose:e}}function fi(a){return a.exposed?a.exposeProxy||(a.exposeProxy=new Proxy(el(lt(a.exposed)),{get(e,n){if(n in e)return e[n];if(n in mt)return mt[n](a)},has(e,n){return n in e||n in mt}})):a.proxy}const md=/(?:^|[-_])\w/g,hd=a=>a.replace(md,e=>e.toUpperCase()).replace(/[-_]/g,"");function Xl(a,e=!0){return ja(a)?a.displayName||a.name:a.name||e&&a.__name}function Ql(a,e,n=!1){let t=Xl(e);if(!t&&e.__file){const i=e.__file.match(/([^/\\]+)\.\w+$/);i&&(t=i[1])}if(!t&&a){const i=o=>{for(const r in o)if(o[r]===e)return r};t=i(a.components)||a.parent&&i(a.parent.type.components)||i(a.appContext.components)}return t?hd(t):n?"App":"Anonymous"}function yd(a){return ja(a)&&"__vccOpts"in a}const ra=(a,e)=>au(a,e,Fn);function as(a,e,n){try{mi(-1);const t=arguments.length;return t===2?Ta(e)&&!Ca(e)?hi(e)?Ya(a,null,[e]):Ya(a,e):Ya(a,null,e):(t>3?n=Array.prototype.slice.call(arguments,2):t===3&&hi(n)&&(n=[n]),Ya(a,e,n))}finally{mi(1)}}const bd="3.5.42";/** * @vue/runtime-dom v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let zs;const Oi=typeof window<"u"&&window.trustedTypes;if(Oi)try{zs=Oi.createPolicy("vue",{createHTML:e=>e})}catch{}const Ri=zs?e=>zs.createHTML(e):e=>e,Qo="http://www.w3.org/2000/svg",ko="http://www.w3.org/1998/Math/MathML",Fe=typeof document<"u"?document:null,Mi=Fe&&Fe.createElement("template"),el={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const i=t==="svg"?Fe.createElementNS(Qo,e):t==="mathml"?Fe.createElementNS(ko,e):s?Fe.createElement(e,{is:s}):Fe.createElement(e);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Fe.createTextNode(e),createComment:e=>Fe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Fe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,i,r){const o=s?s.previousSibling:t.lastChild;if(i&&(i===r||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{Mi.innerHTML=Ri(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const l=Mi.content;if(n==="svg"||n==="mathml"){const f=l.firstChild;for(;f.firstChild;)l.appendChild(f.firstChild);l.removeChild(f)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},tl=Symbol("_vtc");function sl(e,t,s){const n=e[tl];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Ii=Symbol("_vod"),nl=Symbol("_vsh"),il=Symbol(""),rl=/(?:^|;)\s*display\s*:/;function ol(e,t,s){const n=e.style,i=G(s);let r=!1;if(s&&!i){if(t)if(G(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Tt(n,l,"")}else for(const o in t)s[o]==null&&Tt(n,o,"");for(const o in s){o==="display"&&(r=!0);const l=s[o];l!=null?cl(e,o,!G(t)&&t?t[o]:void 0,l)||Tt(n,o,l):Tt(n,o,"")}}else if(i){if(t!==s){const o=n[il];o&&(s+=";"+o),n.cssText=s,r=rl.test(s)}}else t&&e.removeAttribute("style");Ii in e&&(e[Ii]=r?n.display:"",e[nl]&&(n.display="none"))}const ss=/\s*!important$/;function Tt(e,t,s){if(O(s))s.forEach(n=>Tt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))ss.test(s)?e.setProperty(t,s.replace(ss,""),"important"):e.setProperty(t,s);else{const n=ll(e,t);ss.test(s)?e.setProperty(fe(n),s.replace(ss,""),"important"):e[n]=s}}const Fi=["Webkit","Moz","ms"],Ys={};function ll(e,t){const s=Ys[t];if(s)return s;let n=re(t);if(n!=="filter"&&n in e)return Ys[t]=n;n=nn(n);for(let i=0;iXs||(gl.then(()=>Xs=0),Xs=Date.now());function ml(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;const i=s.value;if(O(i)){const r=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{r.call(n),n._stopped=!0};const o=i.slice(),l=[n];for(let f=0;fe.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,bl=(e,t,s,n,i,r)=>{const o=i==="svg";t==="class"?sl(e,n,o):t==="style"?ol(e,s,n):Mt(t)?It(t)||al(e,t,s,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):yl(e,t,n,o))?(Di(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ji(e,t,n,o,r,t!=="value")):e._isVueCE&&(vl(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!G(n)))?Di(e,re(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),ji(e,t,n,o))};function yl(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Li(t)&&R(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Li(t)&&G(s)?!1:t in e}function vl(e,t){const s=e._def.props;if(!s)return!1;const n=re(t);return Array.isArray(s)?s.some(i=>re(i)===n):Object.keys(s).some(i=>re(i)===n)}const $i={};function xl(e,t,s){let n=Jr(e,t);hs(n)&&(n=J({},n,t));class i extends Zs{constructor(o){super(n,o,s)}}return i.def=n,i}const Sl=typeof HTMLElement<"u"?HTMLElement:class{};class Zs extends Sl{constructor(t,s={},n=Ki){super(),this._def=t,this._props=s,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&n!==Ki?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(J({},t.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof Zs){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,Fn(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(t){for(const s of t)this._setAttr(s.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let n=0;n{this._resolved=!0,this._pendingResolve=void 0;const{props:r,styles:o}=n;let l;if(r&&!O(r))for(const f in r){const h=r[f];(h===Number||h&&h.type===Number)&&(f in this._props&&(this._props[f]=on(this._props[f])),(l||(l=Object.create(null)))[re(f)]=!0)}this._numberProps=l,this._resolveProps(n),this.shadowRoot&&this._applyStyles(o),this._mount(n)},s=this._def.__asyncLoader;if(s)return this._pendingResolve=s().then(n=>{n.configureApp=this._def.configureApp,t(this._def=n,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const s=this._instance&&this._instance.exposed;if(s)for(const n in s)N(this,n)||Object.defineProperty(this,n,{get:()=>On(s[n])})}_resolveProps(t){const{props:s}=t,n=O(s)?s:Object.keys(s||{});for(const i of Object.keys(this))i[0]!=="_"&&n.includes(i)&&this._setProp(i,this[i]);for(const i of n.map(re))Object.defineProperty(this,i,{get(){return this._getProp(i)},set(r){this._setProp(i,r,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const s=this.hasAttribute(t);let n=s?this.getAttribute(t):$i;const i=re(t);s&&this._numberProps&&this._numberProps[i]&&(n=on(n)),this._setProp(i,n,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,s,n=!0,i=!1){if(s!==this._props[t]&&(this._dirty=!0,s===$i?delete this._props[t]:(this._props[t]=s,t==="key"&&this._app&&(this._app._ceVNode.key=s)),i&&this._instance&&this._update(),n)){const r=this._ob;r&&(this._processMutations(r.takeRecords()),r.disconnect()),s===!0?this.setAttribute(fe(t),""):typeof s=="string"||typeof s=="number"?this.setAttribute(fe(t),s+""):s||this.removeAttribute(fe(t)),r&&r.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),Cl(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const s=He(this._def,J(t,this._props));return this._instance||(s.ce=n=>{this._instance=n,n.ce=this,n.isCE=!0;const i=(r,o)=>{this.dispatchEvent(new CustomEvent(r,hs(o[0])?J({detail:o},o[0]):{detail:o}))};n.emit=(r,...o)=>{i(r,o),fe(r)!==r&&i(fe(r),o)},this._setParent()}),s}_applyStyles(t,s,n){if(!t)return;if(s){if(s===this._def||this._styleChildren.has(s))return;this._styleChildren.add(s)}const i=this._nonce,r=this.shadowRoot,o=n?this._getStyleAnchor(n)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(r);let l=null;for(let f=t.length-1;f>=0;f--){const h=document.createElement("style");i&&h.setAttribute("nonce",i),h.textContent=t[f],r.insertBefore(h,l||o),l=h,f===0&&(n||this._styleAnchors.set(this._def,h),s&&this._styleAnchors.set(s,h))}}_getStyleAnchor(t){if(!t)return null;const s=this._styleAnchors.get(t);return s&&s.parentNode===this.shadowRoot?s:(s&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let s=0;s{Ui().render(...e)},Ki=(...e)=>{const t=Ui().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=Al(n);if(!i)return;const r=t._component;!R(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const o=s(i,!1,Tl(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t};function Tl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Al(e){return G(e)?document.querySelector(e):e}function El(e,t){const s=t;Gn(()=>{var l;const n=wi();if(!n)return;const i=(l=n.proxy)==null?void 0:l.$el;if(!i)return;const r=i.getRootNode();if(!(r instanceof ShadowRoot)||r.querySelector(`style[data-shadow-styles="${s}"]`))return;const o=document.createElement("style");o.setAttribute("data-shadow-styles",s),o.textContent=e,r.appendChild(o)})}const Pl=cs&&cs.tagName.toUpperCase()==="SCRIPT"&&cs.src||new URL("upg-neighbor.js",document.baseURI).href,At=e=>String(e||"").trim().replace(/\/+$/,"");function Ol(){try{const t=String(Pl||"").split(/[?#]/)[0].match(/^(.*)\/([^/]+)\/([^/]+)\.js$/);return!t||t[2]!==t[3]?null:t[1]||null}catch{return null}}function Rl(e){const t=e==null?void 0:e.assetsBase;if(typeof t=="string"&&t.trim()){const n=At(t);if(/^https?:\/\//i.test(n)||n.startsWith("/"))return n}const s=At((e==null?void 0:e.treeBase)||"")||At(Ol()||"");if(s)try{const n=typeof document<"u"?document.baseURI:void 0;return At(new URL(s+"/../assets",n).href)}catch{return At(s.replace(/\/[^/]*$/,"")+"/assets")}return"./assets"}const Ml={class:"unw"},Il=["src","title"],Fl=xl({__name:"upg-neighbor",props:{profileConfig:{type:String,default:""}},setup(e){const t=e,s=Ct(()=>{try{return t.profileConfig?JSON.parse(t.profileConfig):{}}catch{return{}}}),n=Ct(()=>String(s.value.legacyElement||"send-map").replace(/[^a-z0-9-]/g,"")),i=Ct(()=>s.value.legacyTitle||n.value),r=Ct(()=>{const o=String(Rl({value:s.value})||s.value.assetsBase||"./assets").replace(/\/+$/,""),l=s.value.tk||typeof window<"u"&&window.MAP_TOKEN||"";return o+"/legacy/upg-neighbor/index.html?el="+n.value+(l?"&tk="+encodeURIComponent(l):"")});return El(".unw{position:relative;width:100%;height:100%;min-height:520px;background:#f3f3f1}.unw iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.unw .tag{position:absolute;top:8px;right:8px;z-index:2;font:600 10px ui-monospace,monospace;letter-spacing:.06em;text-transform:uppercase;color:#6d766e;background:#fff;border:1px solid #d1d4cd;border-radius:100px;padding:3px 8px}","upg-neighbor-wrapper"),(o,l)=>(Fo(),jo("div",Ml,[l[0]||(l[0]=kt("span",{class:"tag"},"experimental · legacy",-1)),kt("iframe",{src:r.value,title:i.value,loading:"lazy"},null,8,Il)]))}});customElements.get("upg-neighbor")||customElements.define("upg-neighbor",Fl)})(); +**/let Ao;const es=typeof window<"u"&&window.trustedTypes;if(es)try{Ao=es.createPolicy("vue",{createHTML:a=>a})}catch{}const ns=Ao?a=>Ao.createHTML(a):a=>a,_d="http://www.w3.org/2000/svg",fd="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,ts=qe&&qe.createElement("template"),Pd={insert:(a,e,n)=>{e.insertBefore(a,n||null)},remove:a=>{const e=a.parentNode;e&&e.removeChild(a)},createElement:(a,e,n,t)=>{const i=e==="svg"?qe.createElementNS(_d,a):e==="mathml"?qe.createElementNS(fd,a):n?qe.createElement(a,{is:n}):qe.createElement(a);return a==="select"&&t&&t.multiple!=null&&i.setAttribute("multiple",t.multiple),i},createText:a=>qe.createTextNode(a),createComment:a=>qe.createComment(a),setText:(a,e)=>{a.nodeValue=e},setElementText:(a,e)=>{a.textContent=e},parentNode:a=>a.parentNode,nextSibling:a=>a.nextSibling,querySelector:a=>qe.querySelector(a),setScopeId(a,e){a.setAttribute(e,"")},insertStaticContent(a,e,n,t,i,o){const r=n?n.previousSibling:e.lastChild;if(i&&(i===o||i.nextSibling))for(;e.insertBefore(i.cloneNode(!0),n),!(i===o||!(i=i.nextSibling)););else{ts.innerHTML=ns(t==="svg"?`${a}`:t==="mathml"?`${a}`:a);const l=ts.content;if(t==="svg"||t==="mathml"){const s=l.firstChild;for(;s.firstChild;)l.appendChild(s.firstChild);l.removeChild(s)}e.insertBefore(l,n)}return[r?r.nextSibling:e.firstChild,n?n.previousSibling:e.lastChild]}},Cd=Symbol("_vtc");function kd(a,e,n){const t=a[Cd];t&&(e=(e?[e,...t]:[...t]).join(" ")),e==null?a.removeAttribute("class"):n?a.setAttribute("class",e):a.className=e}const Pi=Symbol("_vod"),is=Symbol("_vsh"),jd={name:"show",beforeMount(a,{value:e},{transition:n}){a[Pi]=a.style.display==="none"?"":a.style.display,n&&e?n.beforeEnter(a):Ct(a,e)},mounted(a,{value:e},{transition:n}){n&&e&&n.enter(a)},updated(a,{value:e,oldValue:n},{transition:t}){!e!=!n&&(t?e?(t.beforeEnter(a),Ct(a,!0),t.enter(a)):t.leave(a,()=>{Ct(a,!1)}):Ct(a,e))},beforeUnmount(a,{value:e}){Ct(a,e)}};function Ct(a,e){a.style.display=e?a[Pi]:"none",a[is]=!e}const Gd=Symbol(""),vd=/(?:^|;)\s*display\s*:/;function Ad(a,e,n){const t=a.style,i=za(n);let o=!1;if(n&&!i){if(e)if(za(e))for(const r of e.split(";")){const l=r.slice(0,r.indexOf(":")).trim();n[l]==null&&kt(t,l,"")}else for(const r in e)n[r]==null&&kt(t,r,"");for(const r in n){r==="display"&&(o=!0);const l=n[r];l!=null?Ed(a,r,!za(e)&&e?e[r]:void 0,l)||kt(t,r,l):kt(t,r,"")}}else if(i){if(e!==n){const r=t[Gd];r&&(n+=";"+r),t.cssText=n,o=vd.test(n)}}else e&&a.removeAttribute("style");Pi in a&&(a[Pi]=o?t.display:"",a[is]&&(t.display="none"))}const Ci=/\s*!important$/;function kt(a,e,n){if(Ca(n))n.forEach(t=>kt(a,e,t));else if(n==null&&(n=""),e.startsWith("--"))Ci.test(n)?a.setProperty(e,n.replace(Ci,""),"important"):a.setProperty(e,n);else{const t=Sd(a,e);Ci.test(n)?a.setProperty(he(t),n.replace(Ci,""),"important"):a[t]=n}}const os=["Webkit","Moz","ms"],So={};function Sd(a,e){const n=So[e];if(n)return n;let t=ee(e);if(t!=="filter"&&t in a)return So[e]=t;t=zt(t);for(let i=0;iEo||(Nd.then(()=>Eo=0),Eo=Date.now());function Rd(a,e){const n=t=>{if(!t._vts)t._vts=Date.now();else if(t._vts<=n.attached)return;const i=n.value;if(Ca(i)){const o=t.stopImmediatePropagation;t.stopImmediatePropagation=()=>{o.call(t),t._stopped=!0};const r=i.slice(),l=[t];for(let s=0;sa.charCodeAt(0)===111&&a.charCodeAt(1)===110&&a.charCodeAt(2)>96&&a.charCodeAt(2)<123,Fd=(a,e,n,t,i,o)=>{const r=i==="svg";e==="class"?kd(a,t,r):e==="style"?Ad(a,n,t):Bt(e)?Kt(e)||wd(a,e,n,t,o):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):Bd(a,e,t,r))?(ss(a,e,t),!a.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&ls(a,e,t,r,o,e!=="value")):a._isVueCE&&(Kd(a,e)||a._def.__asyncLoader&&(/[A-Z]/.test(e)||!za(t)))?ss(a,ee(e),t,o,e):(e==="true-value"?a._trueValue=t:e==="false-value"&&(a._falseValue=t),ls(a,e,t,r))};function Bd(a,e,n,t){if(t)return!!(e==="innerHTML"||e==="textContent"||e in a&&gs(e)&&ja(n));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&a.tagName==="IFRAME"||e==="form"||e==="list"&&a.tagName==="INPUT"||e==="type"&&a.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const i=a.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return gs(e)&&za(n)?!1:e in a}function Kd(a,e){const n=a._def.props;if(!n)return!1;const t=ee(e);return Array.isArray(n)?n.some(i=>ee(i)===t):Object.keys(n).some(i=>ee(i)===t)}const us={};function Od(a,e,n){let t=ut(a,e);Ut(t)&&(t=Ja({},t,e));class i extends $o{constructor(r){super(t,r,n)}}return i.def=t,i}const Ud=typeof HTMLElement<"u"?HTMLElement:class{};class $o extends Ud{constructor(e,n={},t=hs){super(),this._def=e,this._props=n,this._createApp=t,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&t!==hs?this._root=this.shadowRoot:e.shadowRoot!==!1?(this.attachShadow(Ja({},e.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let e=this;for(;e=e&&(e.assignedSlot||e.parentNode||e.host);)if(e instanceof $o){this._parent=e;break}this._instance||(this._resolved?this._mount(this._def):e&&e._pendingResolve?this._pendingResolve=e._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(e=this._parent){e&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}disconnectedCallback(){this._connected=!1,Ln(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(e){for(const n of e)this._setAttr(n.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let t=0;t{this._resolved=!0,this._pendingResolve=void 0;const{props:o,styles:r}=t;let l;if(o&&!Ca(o))for(const s in o){const g=o[s];(g===Number||g&&g.type===Number)&&(s in this._props&&(this._props[s]=Er(this._props[s])),(l||(l=Object.create(null)))[ee(s)]=!0)}this._numberProps=l,this._resolveProps(t),this.shadowRoot&&this._applyStyles(r),this._mount(t)},n=this._def.__asyncLoader;if(n)return this._pendingResolve=n().then(t=>{t.configureApp=this._def.configureApp,e(this._def=t,!0)}),this._pendingResolve;e(this._def)}_mount(e){this._app=this._createApp(e),this._inheritParentContext(),e.configureApp&&e.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const n=this._instance&&this._instance.exposed;if(n)for(const t in n)xa(this,t)||Object.defineProperty(this,t,{get:()=>ya(n[t])})}_resolveProps(e){const{props:n}=e,t=Ca(n)?n:Object.keys(n||{});for(const i of Object.keys(this))i[0]!=="_"&&t.includes(i)&&this._setProp(i,this[i]);for(const i of t.map(ee))Object.defineProperty(this,i,{get(){return this._getProp(i)},set(o){this._setProp(i,o,!0,!this._patching)}})}_setAttr(e){if(e.startsWith("data-v-"))return;const n=this.hasAttribute(e);let t=n?this.getAttribute(e):us;const i=ee(e);n&&this._numberProps&&this._numberProps[i]&&(t=Er(t)),this._setProp(i,t,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,n,t=!0,i=!1){if(n!==this._props[e]&&(this._dirty=!0,n===us?delete this._props[e]:(this._props[e]=n,e==="key"&&this._app&&(this._app._ceVNode.key=n)),i&&this._instance&&this._update(),t)){const o=this._ob;o&&(this._processMutations(o.takeRecords()),o.disconnect()),n===!0?this.setAttribute(he(e),""):typeof n=="string"||typeof n=="number"?this.setAttribute(he(e),n+""):n||this.removeAttribute(he(e)),o&&o.observe(this,{attributes:!0})}}_update(){const e=this._createVNode();this._app&&(e.appContext=this._app._context),Wd(e,this._root)}_createVNode(){const e={};this.shadowRoot||(e.onVnodeMounted=e.onVnodeUpdated=this._renderSlots.bind(this));const n=Ya(this._def,Ja(e,this._props));return this._instance||(n.ce=t=>{this._instance=t,t.ce=this,t.isCE=!0;const i=(o,r)=>{this.dispatchEvent(new CustomEvent(o,Ut(r[0])?Ja({detail:r},r[0]):{detail:r}))};t.emit=(o,...r)=>{i(o,r),he(o)!==o&&i(he(o),r)},this._setParent()}),n}_applyStyles(e,n,t){if(!e)return;if(n){if(n===this._def||this._styleChildren.has(n))return;this._styleChildren.add(n)}const i=this._nonce,o=this.shadowRoot,r=t?this._getStyleAnchor(t)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(o);let l=null;for(let s=e.length-1;s>=0;s--){const g=document.createElement("style");i&&g.setAttribute("nonce",i),g.textContent=e[s],o.insertBefore(g,l||r),l=g,s===0&&(t||this._styleAnchors.set(this._def,g),n&&this._styleAnchors.set(n,g))}}_getStyleAnchor(e){if(!e)return null;const n=this._styleAnchors.get(e);return n&&n.parentNode===this.shadowRoot?n:(n&&this._styleAnchors.delete(e),null)}_getRootStyleInsertionAnchor(e){for(let n=0;na.stopPropagation(),prevent:a=>a.preventDefault(),self:a=>a.target!==a.currentTarget,ctrl:a=>!a.ctrlKey,shift:a=>!a.shiftKey,alt:a=>!a.altKey,meta:a=>!a.metaKey,left:a=>"button"in a&&a.button!==0,middle:a=>"button"in a&&a.button!==1,right:a=>"button"in a&&a.button!==2,exact:(a,e)=>Dd.some(n=>a[`${n}Key`]&&!e.includes(n))},Xe=(a,e)=>{if(!a)return a;const n=a._withMods||(a._withMods={}),t=e.join(".");return n[t]||(n[t]=(i,...o)=>{for(let r=0;r{const n=a._withKeys||(a._withKeys={}),t=e.join(".");return n[t]||(n[t]=i=>{if(!("key"in i))return;const o=he(i.key);if(e.some(r=>r===o||zd[r]===o))return a(i)})},Vd=Ja({patchProp:Fd},Pd);let ps;function ms(){return ps||(ps=Qu(Vd))}const Wd=(...a)=>{ms().render(...a)},hs=(...a)=>{const e=ms().createApp(...a),{mount:n}=e;return e.mount=t=>{const i=Jd(t);if(!i)return;const o=e._component;!ja(o)&&!o.render&&!o.template&&(o.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const r=n(i,!1,Yd(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),r},e};function Yd(a){if(a instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&a instanceof MathMLElement)return"mathml"}function Jd(a){return za(a)?document.querySelector(a):a}/*! + * pinia v2.3.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let ys;const ki=a=>ys=a,bs=Symbol();function Mo(a){return a&&typeof a=="object"&&Object.prototype.toString.call(a)==="[object Object]"&&typeof a.toJSON!="function"}var jt;(function(a){a.direct="direct",a.patchObject="patch object",a.patchFunction="patch function"})(jt||(jt={}));function Zd(){const a=Xi(!0),e=a.run(()=>ua({}));let n=[],t=[];const i=lt({install(o){ki(i),i._a=o,o.provide(bs,i),o.config.globalProperties.$pinia=i,t.forEach(r=>n.push(r)),t=[]},use(o){return this._a?n.push(o):t.push(o),this},_p:n,_a:null,_e:a,_s:new Map,state:e});return i}const _s=()=>{};function fs(a,e,n,t=_s){a.push(e);const i=()=>{const o=a.indexOf(e);o>-1&&(a.splice(o,1),t())};return!n&&Nr()&&Eg(i),i}function Bn(a,...e){a.slice().forEach(n=>{n(...e)})}const qd=a=>a(),Ps=Symbol(),wo=Symbol();function Io(a,e){a instanceof Map&&e instanceof Map?e.forEach((n,t)=>a.set(t,n)):a instanceof Set&&e instanceof Set&&e.forEach(a.add,a);for(const n in e){if(!e.hasOwnProperty(n))continue;const t=e[n],i=a[n];Mo(i)&&Mo(t)&&a.hasOwnProperty(n)&&!Wa(t)&&!De(t)?a[n]=Io(i,t):a[n]=t}return a}const Xd=Symbol();function Qd(a){return!Mo(a)||!a.hasOwnProperty(Xd)}const{assign:cn}=Object;function ap(a){return!!(Wa(a)&&a.effect)}function ep(a,e,n,t){const{state:i,actions:o,getters:r}=e,l=n.state.value[a];let s;function g(){l||(n.state.value[a]=i?i():{});const d=Zg(n.state.value[a]);return cn(d,o,Object.keys(r||{}).reduce((_,v)=>(_[v]=lt(ra(()=>{ki(n);const w=n._s.get(a);return r[v].call(w,w)})),_),{}))}return s=Cs(a,g,e,n,t,!0),s}function Cs(a,e,n={},t,i,o){let r;const l=cn({actions:{}},n),s={deep:!0};let g,d,_=[],v=[],w;const H=t.state.value[a];!o&&!H&&(t.state.value[a]={});let I;function M(F){let B;g=d=!1,typeof F=="function"?(F(t.state.value[a]),B={type:jt.patchFunction,storeId:a,events:w}):(Io(t.state.value[a],F),B={type:jt.patchObject,payload:F,storeId:a,events:w});const ia=I=Symbol();Ln().then(()=>{I===ia&&(g=!0)}),d=!0,Bn(_,B,t.state.value[a])}const x=o?function(){const{state:B}=n,ia=B?B():{};this.$patch(ga=>{cn(ga,ia)})}:_s;function A(){r.stop(),_=[],v=[],t._s.delete(a)}const $=(F,B="")=>{if(Ps in F)return F[wo]=B,F;const ia=function(){ki(t);const ga=Array.from(arguments),na=[],ma=[];function Sa(pa){na.push(pa)}function $a(pa){ma.push(pa)}Bn(v,{args:ga,name:ia[wo],store:j,after:Sa,onError:$a});let ha;try{ha=F.apply(this&&this.$id===a?this:j,ga)}catch(pa){throw Bn(ma,pa),pa}return ha instanceof Promise?ha.then(pa=>(Bn(na,pa),pa)).catch(pa=>(Bn(ma,pa),Promise.reject(pa))):(Bn(na,ha),ha)};return ia[Ps]=!0,ia[wo]=B,ia},S={_p:t,$id:a,$onAction:fs.bind(null,v),$patch:M,$reset:x,$subscribe(F,B={}){const ia=fs(_,F,B.detached,()=>ga()),ga=r.run(()=>re(()=>t.state.value[a],na=>{(B.flush==="sync"?d:g)&&F({storeId:a,type:jt.direct,events:w},na)},cn({},s,B)));return ia},$dispose:A},j=rt(S);t._s.set(a,j);const C=(t._a&&t._a.runWithContext||qd)(()=>t._e.run(()=>(r=Xi()).run(()=>e({action:$}))));for(const F in C){const B=C[F];if(Wa(B)&&!ap(B)||De(B))o||(H&&Qd(B)&&(Wa(B)?B.value=H[F]:Io(B,H[F])),t.state.value[a][F]=B);else if(typeof B=="function"){const ia=$(B,F);C[F]=ia,l.actions[F]=B}}return cn(j,C),cn(wa(j),C),Object.defineProperty(j,"$state",{get:()=>t.state.value[a],set:F=>{M(B=>{cn(B,F)})}}),t._p.forEach(F=>{cn(j,r.run(()=>F({store:j,app:t._a,pinia:t,options:l})))}),H&&o&&n.hydrate&&n.hydrate(j.$state,H),g=!0,d=!0,j}/*! #__NO_SIDE_EFFECTS__ */function xo(a,e,n){let t,i;const o=typeof e=="function";typeof a=="string"?(t=a,i=o?n:e):(i=a,t=a.id);function r(l,s){const g=du();return l=l||(g?Na(bs,null):null),l&&ki(l),l=ys,l._s.has(t)||(o?Cs(t,e,i,l):ep(t,i,l)),l._s.get(t)}return r.$id=t,r}const To="__doxaMapToken",No="doxa:map-token",ks="__doxaMapTokenBridge",Kn=()=>{if(typeof window>"u")return"";const a=window[To];return typeof a=="string"?a:""};function js(a){if(typeof window>"u")return"";const e=typeof a=="string"?a.trim():"";if(!e||e===Kn())return Kn();window[To]=e;try{window.dispatchEvent(new CustomEvent(No,{detail:e}))}catch{}return e}function np(){if(typeof window>"u"||window[ks])return;const a=typeof window.MAP_TOKEN=="string"?window.MAP_TOKEN:"";a&&!Kn()&&(window[To]=a);try{Object.defineProperty(window,"MAP_TOKEN",{configurable:!0,get(){return Kn()},set(e){js(e)}}),window[ks]=!0}catch{}}function tp(){np();const a=ua(Kn());if(typeof window<"u"){const e=()=>{a.value=Kn()};window.addEventListener(No,e);try{sn(()=>window.removeEventListener(No,e))}catch{}}return a}function ip(a){return Pu({loader:a,onError(e,n,t,i){i<=3?setTimeout(n,i*500):t()}})}const op={backToLegend:"العودة إلى المفتاح",closeDetailView:"إغلاق عرض التفاصيل",collapseLegend:"طيّ وسيلة الإيضاح",expandLegend:"توسيع وسيلة الإيضاح",toggleLegend:"إظهار وسيلة الإيضاح أو إخفاؤها"},rp={prayForThem:"صلِّ من أجلهم",adoptThem:"تبنَّهم",moreInfo:"مزيد من المعلومات",zoomIn:"تكبير",zoomOut:"تصغير",switchToLightMode:"التبديل إلى الوضع الفاتح",switchToDarkMode:"التبديل إلى الوضع الداكن",resetView:"إعادة تعيين العرض",toggleFullscreen:"تبديل ملء الشاشة",aboutThisMap:"حول هذه الخريطة",closeMenu:"إغلاق القائمة",reloadMap:"إعادة تحميل الخريطة",showClusters:"إظهار المجموعات",clusterSettings:"إعدادات المجموعات",startAutoFly:"بدء الطيران التلقائي",stopFlight:"إيقاف الطيران",speedLabel:"السرعة:",speedOption:{slow:"بطيء",normal:"عادي",fast:"سريع"},shareEmbed:"مشاركة وتضمين",posterMap:"خريطة الملصق",prayerList:"قائمة الصلاة",cardDeck:"مجموعة البطاقات",printOptions:"خيارات الطباعة",showOnMap:"أظهر على الخريطة",close:"إغلاق",showOnMapAria:"أظهر {label} على الخريطة",cardStockAria:"حجم بطاقة الصلاة",previewPrintPoster:"معاينة وطباعة ملصق {label}",share:"مشاركة",shareSteps:["ضع هذه الخريطة على موقعك","أعدّ قائمة بمواقع الويب في مدينتك","علّمهم أن يضعوها أيضًا","علّمهم أن يعلّموا غيرهم وضعها","لنكثر الخرائط في كل مكان ليسوع!"]},lp={labels:{country:"الدولة:",population:"السكان:",language:"اللغة:",religion:"الديانة:",languageFamily:"العائلة اللغوية:",peopleCommitted:"ملتزمون بالصلاة:"},messages:{noDescription:"لا يوجد وصف متاح."}},sp={title:{prayer:"تقدم الصلاة",engagement:"تقدم الانخراط",adoption:"تقدم التبني",languageFamilies:"العائلات اللغوية",doxaRegions:"مناطق Doxa",affinityBlocs:"كتل القرابة",gospelResources:"موارد الإنجيل"},header:{collapsed:"وسيلة الإيضاح",peopleGroupFallback:"مجموعة الشعب",default:"مفتاح الخريطة"},prayer:{needsPrayer:"يحتاج إلى صلاة",hasPrayer:"لديه صلاة",fullPrayerCoverage:"تغطية صلاة كاملة"},progress:{title:"التقدم",covered:"{covered} من {total} مجموعة شعبية مغطاة بالصلاة · {pct}%",short:"{covered} من {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"يحتاج إلى انخراط",hasEngagement:"لديه انخراط"},adoption:{needsAdoption:"يحتاج إلى تبني",hasAdoption:"لديه تبني"},columns:{upgs:"UUPGs",population:"السكان",name:"الاسم"},footer:{total:"الإجمالي"},sortByUpgs:"ترتيب حسب UUPG",sortByPop:"ترتيب حسب السكان",colLabel:{religion:"ديانات UUPG",prayer:"حالة الصلاة",engagement:"حالة المشاركة",adoption:"حالة التبني",status:"الحالة"},titleBar:{legend:"مفتاح الخريطة",peopleGroups:"الشعوب",wagfRegions:"مناطق WAGF",languages:"اللغات"},tabInfo:{upg100Region:"المنطقة — ترتّب قوائم UPG-100 حسب منطقة العالم (أفريقيا، الهند، الشرق الأوسط، الصمّ، …). الأعداد هي مجموع UUPG والسكان لكل قائمة تحتها.",upg100Zone:"قوائم UPG-100 — كل واحدة هي قائمة صلاة للشعوب غير الموصول إليها في منطقة ما، وهي ما ترسمه الخريطة وتلوّنه. تُطبع كل قائمة ككُتيّب خاص بها.",upg100Group:"مجموعة شعبية — المجموعات غير الموصول إليها داخل القائمة، الأكثر حاجة للصلاة أولاً. كل نقطة على الخريطة هي واحدة منها."}},cp={menuComingSoon:"القائمة قادمة قريباً"},gp={clusterByRegion:"حسب منطقة Doxa",clusterByLanguageFamily:"حسب العائلة اللغوية",clusterByGospelResource:"حسب مورد الإنجيل"},up={country:{wagfRegion:"منطقة WAGF",wagfBlock:"كتلة WAGF",country:"الدولة",uupgCount:"عدد UUPG"}},dp={header:"دورة الصلاة الحالية",lap:"الدورة",upgs:"UUPGs",separator:" من "},pp={"%count% people groups in %countries% countries":"%count% مجموعة بشرية في %countries% دولة","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"تضم %region% %count% مجموعة بشرية في %countries% دولة. يشير لون كل نقطة إلى عدد الأشخاص الذين يصلّون من أجل تلك المجموعة البشرية.","1+ People Praying":"شخص واحد أو أكثر يصلّي","100+ People Praying":"أكثر من 100 شخص يصلّون",Adopted:"تم انتماؤه","Adoption Progress":"تقدُّم الإنتماء","All Regions":"جميع المناطق","Alternate Names":"الأسماء البديلة","Clear All":"مسح الكل",Countries:"الدول","Countries in this region":"الدول في هذه المنطقة",Country:"الدولة",Engaged:"مُنخرَط","Engagement Progress":"تقدُّم الانخراط","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"كل مجموعة بشرية غير مبشرة تتبناها كنيسة ملتزمة بالصلاة والعطاء والإرسال","Exact Search":"بحث دقيق","Find unreached people groups by region and country.":"ابحث عن المجموعات البشرية غير المُبلَّغة حسب المنطقة والدولة.","Full Profile":"الملف الشخصي الكامل",Goal:"الهدف","Hide Filters":"إخفاء المرشحات",Intercessors:"المتشفعين","Load More":"تحميل المزيد","Loading results...":"النتائج قيد التحميل...","Mobilize 100+ people praying daily for each DOXA people group":"حشد أكثر من 100 شخص للصلاة يوميًا من أجل كل مجموعة بشرية من مجموعات دوكسا","No One Praying":"لا أحد يصلّي","No options found":"لم يتم العثور على أي خيارات","No unengaged people groups by 2033":"الهدف هو القضاء على جميع الشعوب الغير مخدومة روحيا بحلول عام 2033","Not Adopted":"لم يتم انتماؤه",Other:"أخرى","Page Not Found":"الصفحة غير موجودة","People Group":"مجموعة بشرية","People Groups":"مجموعات بشرية","People committed to praying":"الأشخاص الذين التزموا بالصلاة",Population:"عدد السكان","Prayer Coverage":"التغطية المستمرة بالصلاة","Prayer coverage progress":"تقدم تغطية الصلاة",Regions:"المناطق",Religion:"الدين","Search names, country/continent, religions...":"إبحث عن الأسماء، الدولة/القارة، الأديان...","See %region% dashboard":"عرض لوحة معلومات %region%","See All":"عرض جميع العناصر",Select:"اختر","Show Filters":"إظهار عوامل التصفية","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"توجد %count% مجموعات بشرية في %country%. تحقق من الخريطة لمعرفة المجموعات البشرية الواقعة على حدود هذه الدولة أيضًا.",Total:"المجموع","Type to search...":"اكتب ما تريد البحث عنه...","Unengaged people groups":"الشعوب الغير متفاعلة","WAGF Block":"كتلة WAGF","WAGF Region":"منطقة WAGF","people groups adopted":"الشعوب المنتمية","people groups engaged":"مجموعات بشرية مُنخرِطة","View country posters":"عرض ملصقات الدولة","Hide country posters":"إخفاء ملصقات الدولة","No poster has been generated for this country yet.":"لم يُنشأ أي ملصق لهذه الدولة بعد."},mp={placeholder:"شعب، مكان، لغة، ديانة",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"},sections:{within:"ضمن {selection}",allData:"كل بيانات DOXA"}},hp={prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة",upg100Region:"المنطقة",upg100Zone:"قوائم UPG-100",upg100Group:"مجموعة شعبية"},yp={backToLegend:"Zurück zur Legende",closeDetailView:"Detailansicht schließen",collapseLegend:"Legende einklappen",expandLegend:"Legende ausklappen",toggleLegend:"Legende ein- oder ausblenden"},bp={prayForThem:"Für sie beten",adoptThem:"Sie adoptieren",moreInfo:"Mehr Infos",zoomIn:"Vergrößern",zoomOut:"Verkleinern",switchToLightMode:"Zum hellen Modus wechseln",switchToDarkMode:"Zum dunklen Modus wechseln",resetView:"Ansicht zurücksetzen",toggleFullscreen:"Vollbild umschalten",aboutThisMap:"Über diese Karte",closeMenu:"Menü schließen",reloadMap:"Karte neu laden",showClusters:"Cluster anzeigen",clusterSettings:"Cluster-Einstellungen",startAutoFly:"Auto-Flug starten",stopFlight:"Flug stoppen",speedLabel:"Geschwindigkeit:",speedOption:{slow:"Langsam",normal:"Normal",fast:"Schnell"},shareEmbed:"Teilen und einbetten",posterMap:"Posterkarte",prayerList:"Gebetsliste",cardDeck:"Kartenset",printOptions:"Druckoptionen",showOnMap:"Auf der Karte zeigen",close:"Schließen",showOnMapAria:"{label} auf der Karte zeigen",cardStockAria:"Größe der Gebetskarte",previewPrintPoster:"Vorschau und Druck des Posters {label}",share:"Teilen",shareSteps:["Binde diese Karte auf deiner Website ein","Erstelle eine Liste der Websites in deiner Stadt","Zeige ihnen, wie sie sie ebenfalls einbinden","Zeige ihnen, wie sie es anderen beibringen","Lasst uns Karten überall vermehren – für Jesus!"]},_p={labels:{country:"Land:",population:"Bevölkerung:",language:"Sprache:",religion:"Religion:",languageFamily:"Sprachfamilie:",peopleCommitted:"Zum Gebet verpflichtet:"},messages:{noDescription:"Keine Beschreibung verfügbar."}},fp={title:{prayer:"Gebetsfortschritt",engagement:"Engagement-Fortschritt",adoption:"Adoptionsfortschritt",languageFamilies:"Sprachfamilien",doxaRegions:"Doxa-Regionen",affinityBlocs:"Affinitätsblöcke",gospelResources:"Evangeliumsressourcen"},header:{collapsed:"Legende",peopleGroupFallback:"Volksgruppe",default:"Legende"},prayer:{needsPrayer:"Braucht Gebet",hasPrayer:"Hat Gebet",fullPrayerCoverage:"Vollständige Gebetsabdeckung"},progress:{title:"Fortschritt",covered:"{covered} von {total} Volksgruppen im Gebet abgedeckt · {pct}%",short:"{covered} von {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Braucht Engagement",hasEngagement:"Hat Engagement"},adoption:{needsAdoption:"Braucht Adoption",hasAdoption:"Hat Adoption"},columns:{upgs:"UUPGs",population:"Bevölkerung",name:"Name"},footer:{total:"Gesamt"},sortByUpgs:"Nach UUPGs sortieren",sortByPop:"Nach Bevölkerung sortieren",colLabel:{religion:"UUPG-Religionen",prayer:"Gebetsstatus",engagement:"Engagement-Status",adoption:"Adoptionsstatus",status:"Status"},titleBar:{legend:"Legende",peopleGroups:"Völker",wagfRegions:"WAGF-Regionen",languages:"Sprachen"},tabInfo:{upg100Region:"Region — sortiert die UPG-100-Listen nach Weltgegend (Afrika, Indien, Naher Osten, Gehörlose, …). Die Zahlen sind die UUPGs und die Bevölkerung aller darunterliegenden Listen zusammen.",upg100Zone:"UPG-100-Listen — jede ist eine Gebetsliste der unerreichten Volksgruppen eines Gebiets und das, was die Karte zeichnet und einfärbt. Jede Liste wird als eigenes Heft gedruckt.",upg100Group:"Volksgruppe — die einzelnen unerreichten Gruppen innerhalb einer Liste, größter Gebetsbedarf zuerst. Jeder Kartenpunkt ist eine davon."}},Pp={menuComingSoon:"Menü folgt in Kürze"},Cp={clusterByRegion:"Nach Doxa-Region",clusterByLanguageFamily:"Nach Sprachfamilie",clusterByGospelResource:"Nach Evangeliumsressource"},kp={country:{wagfRegion:"WAGF-Region",wagfBlock:"WAGF-Block",country:"Land",uupgCount:"Anzahl UUPG"}},jp={header:"AKTUELLE GEBETSRUNDE",lap:"Runde",upgs:"UUPGs",separator:" von "},Gp={"%count% people groups in %countries% countries":"%count% Volksgruppen in %countries% Ländern","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% hat %count% Volksgruppen in %countries% Ländern. Die Farbe jedes Punktes zeigt, wie viele Menschen für diese Volksgruppe beten.","1+ People Praying":"1+ Menschen beten","100+ People Praying":"100+ Menschen beten",Adopted:"Angenommen","Adoption Progress":"Adoptionsfortschritt","All Regions":"Alle Regionen","Alternate Names":"Alternative Namen","Clear All":"Alle löschen",Countries:"Länder","Countries in this region":"Länder in dieser Region",Country:"Land",Engaged:"Engagiert","Engagement Progress":"Engagement-Fortschritt","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Jede einzelne der völlig unerreichten Volksgruppen soll von einer Ortsgemeinde adoptiert werden, durch Beten, Geben und Senden","Exact Search":"Exakte Suche","Find unreached people groups by region and country.":"Finde unerreichte Volksgruppen nach Region und Land.","Full Profile":"Vollständiges Profil",Goal:"Ziel","Hide Filters":"Filter ausblenden",Intercessors:"Fürbitter","Load More":"Mehr laden","Loading results...":"Ergebnisse werden geladen...","Mobilize 100+ people praying daily for each DOXA people group":"Mobilisiere 100+ Menschen, die täglich für jede DOXA-Volksgruppe beten","No One Praying":"Niemand betet","No options found":"Keine Standorte gefunden","No unengaged people groups by 2033":"Dass es bis 2033 keine völlig unerreichte Volksgruppe mehr gibt","Not Adopted":"noch nicht adoptiert",Other:"Andere","Page Not Found":"Seite nicht gefunden","People Group":"Personengruppe","People Groups":"Volksgruppen","People committed to praying":"Menschen, die sich dem Beten verpflichtet haben",Population:"Bevölkerung","Prayer Coverage":"Gebetsabdeckung","Prayer coverage progress":"Fortschritt der Gebetsabdeckung",Regions:"Regionen",Religion:"Primäre Religion","Search names, country/continent, religions...":"Suche nach Namen, Land/Kontinent, Religionen...","See %region% dashboard":"Dashboard anzeigen: %region%","See All":"Alle anzeigen",Select:"Auswählen","Show Filters":"Filter anzeigen","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"In %country% gibt es %count% Volksgruppen. Sieh auch auf der Karte nach den Volksgruppen an der Grenze dieses Landes.",Total:"Gesamt","Type to search...":"Geben Sie etwas ein, um danach zu suchen","Unengaged people groups":"Völlig unerreichte Volksgruppen","WAGF Block":"WAGF-Block","WAGF Region":"WAGF-Region","people groups adopted":"adoptierte Volksgruppen","people groups engaged":"engagierte Volksgruppen","View country posters":"Länderposter ansehen","Hide country posters":"Länderposter ausblenden","No poster has been generated for this country yet.":"Für dieses Land wurde noch kein Poster erstellt."},vp={placeholder:"Volk, Ort, Sprache, Religion",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle DOXA-Daten"},kinds:{people:"Volk + Land",peopleGroup:"Volk",bloc:"Affinitätsblock",cluster:"Völkercluster",country:"Land",region:"Region",family:"Sprachfamilie",languageKind:"Sprache",dialect:"Dialekt",religionKind:"Religion"}},Ap={prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land",upg100Region:"Region",upg100Zone:"UPG-100-Listen",upg100Group:"Volksgruppe"},Sp={backToLegend:"Back to Legend",closeDetailView:"Close detail view",collapseLegend:"Collapse legend",expandLegend:"Expand legend",toggleLegend:"Show or hide the legend"},Ep={prayForThem:"Pray for them",adoptThem:"Adopt",moreInfo:"More info",zoomIn:"Zoom in",zoomOut:"Zoom out",switchToLightMode:"Switch to light mode",switchToDarkMode:"Switch to dark mode",resetView:"Reset view",toggleFullscreen:"Toggle fullscreen",aboutThisMap:"About this map",closeMenu:"Close menu",reloadMap:"Reload Map",showClusters:"Show Clusters",clusterSettings:"Cluster Settings",startAutoFly:"Start Auto Fly",stopFlight:"Stop Flight",speedLabel:"Speed:",speedOption:{slow:"Slow",normal:"Normal",fast:"Fast"},shareEmbed:"Share & embed",shareSteps:["Embed this map on your site","Create a list of the websites in your city","Train them to embed it too","Train them to train others to embed it too","Multiply maps everywhere for Jesus!"],share:"Share",posterMap:"Poster Map",prayerList:"Prayer List",cardDeck:"Card Deck",printOptions:"Print Options",showOnMap:"Show on map",close:"Close",showOnMapAria:"Show {label} on the map",cardStockAria:"Prayer card size",previewPrintPoster:"Preview & print the {label} poster"},$p={labels:{country:"Country:",population:"Population:",language:"Language:",religion:"Religion:",languageFamily:"Language Family:",peopleCommitted:"Committed to pray:"},messages:{noDescription:"No description available."}},Mp={title:{prayer:"Prayer Progress",engagement:"Engagement Progress",adoption:"Adoption Progress",languageFamilies:"Language Families",doxaRegions:"Doxa Regions",affinityBlocs:"Affinity Blocks",gospelResources:"Gospel Resources"},header:{default:"Legend",collapsed:"Legend",peopleGroupFallback:"People Group"},prayer:{needsPrayer:"Needs Prayer",hasPrayer:"Has Prayer",fullPrayerCoverage:"Full Prayer Coverage"},progress:{title:"Progress",covered:"{covered} of {total} people groups covered in prayer · {pct}%",short:"{covered} of {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Unengaged",hasEngagement:"Engaged"},adoption:{needsAdoption:"Needs Adoption",hasAdoption:"Has Adoption"},columns:{upgs:"UUPGs",population:"Population",name:"Name"},footer:{total:"Total"},sortByUpgs:"Sort by UUPGs",sortByPop:"Sort by Population",colLabel:{religion:"UUPG Religions",prayer:"Prayer Status",engagement:"Engagement Status",adoption:"Adoption Status",status:"Status"},titleBar:{legend:"Legend",peopleGroups:"People Groups",wagfRegions:"WAGF Regions",languages:"Languages"},tabInfo:{upg100Region:"Region — sort the UPG-100 lists by world area (Africa, India, Middle East, Deaf, …). Counts are the UUPGs and population summed across every list beneath it.",upg100Zone:"UPG-100 Lists — each one is a prayer list of the unreached people groups in an area, and is what the map paints and colours. Every list prints as its own packet.",upg100Group:"People Group — the individual unreached groups inside a list, largest prayer need first. Each map dot is one of these."}},wp={menuComingSoon:"Menu coming soon"},Ip={clusterByRegion:"By Doxa Region",clusterByLanguageFamily:"By Language Family",clusterByGospelResource:"By Gospel Resource"},xp={country:{wagfRegion:"WAGF Region",wagfBlock:"WAGF Bloc",country:"Country",uupgCount:"UUPG Count"}},Tp={header:"CURRENT PRAYER LAP",lap:"Lap",upgs:"UUPGs",separator:" of "},Np={"%count% people groups in %countries% countries":"%count% people groups in %countries% countries","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.","1+ People Praying":"1+ People Praying","100+ People Praying":"100+ People Praying",Adopted:"Adopted","Adoption Progress":"Adoption Progress","All Regions":"All Regions","Alternate Names":"Alternate Names","Clear All":"Clear All",Countries:"Countries","Countries in this region":"Countries in this region",Country:"Country",Engaged:"Engaged","Engagement Progress":"Engagement Progress","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Every unengaged people group adopted by a church committed to prayer, giving, and sending","Exact Search":"Exact Search","Find unreached people groups by region and country.":"Find unreached people groups by region and country.","Full Profile":"Full Profile",Goal:"Goal","Hide Filters":"Hide Filters",Intercessors:"Intercessors","Load More":"Load More","Loading results...":"Loading results...","Mobilize 100+ people praying daily for each DOXA people group":"Mobilize 100+ people praying daily for each DOXA people group","No One Praying":"No One Praying","No options found":"No options found","No unengaged people groups by 2033":"No unengaged people groups by 2033","Not Adopted":"Not Adopted",Other:"Other","Page Not Found":"Page Not Found","People Group":"People Group","People Groups":"People Groups","People committed to praying":"People committed to praying",Population:"Population","Prayer Coverage":"Prayer Coverage","Prayer coverage progress":"Prayer coverage progress",Regions:"Regions",Religion:"Religion","Search names, country/continent, religions...":"Search names, country/continent, religions...","See %region% dashboard":"See %region% dashboard","See All":"See All",Select:"Select","Show Filters":"Show Filters","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.",Total:"Total","Type to search...":"Type to search...","Unengaged people groups":"Unengaged people groups","WAGF Block":"WAGF Block","WAGF Region":"WAGF Region","people groups adopted":"people groups adopted","people groups engaged":"people groups engaged","View country posters":"View country posters","Hide country posters":"Hide country posters","No poster has been generated for this country yet.":"No poster has been generated for this country yet."},Lp={placeholder:"People, place, language, religion",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All DOXA Data"}},Rp={prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups (Affinity)",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country",upg100Region:"Region",upg100Zone:"UPG-100 Lists",upg100Group:"People Group"},Fp={backToLegend:"Volver a la leyenda",closeDetailView:"Cerrar vista de detalle",collapseLegend:"Contraer la leyenda",expandLegend:"Expandir la leyenda",toggleLegend:"Mostrar u ocultar la leyenda"},Bp={prayForThem:"Ora por ellos",adoptThem:"Adóptalos",moreInfo:"Más información",zoomIn:"Acercar",zoomOut:"Alejar",switchToLightMode:"Cambiar a modo claro",switchToDarkMode:"Cambiar a modo oscuro",resetView:"Restablecer vista",toggleFullscreen:"Alternar pantalla completa",aboutThisMap:"Acerca de este mapa",closeMenu:"Cerrar menú",reloadMap:"Recargar mapa",showClusters:"Mostrar clústeres",clusterSettings:"Ajustes de clústeres",startAutoFly:"Iniciar vuelo automático",stopFlight:"Detener vuelo",speedLabel:"Velocidad:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Compartir e incrustar",posterMap:"Mapa del cartel",prayerList:"Lista de oración",cardDeck:"Baraja de tarjetas",printOptions:"Opciones de impresión",showOnMap:"Ver en el mapa",close:"Cerrar",showOnMapAria:"Ver {label} en el mapa",cardStockAria:"Tamaño de la tarjeta de oración",previewPrintPoster:"Previsualizar e imprimir el cartel de {label}",share:"Compartir",shareSteps:["Inserta este mapa en tu sitio","Haz una lista de los sitios web de tu ciudad","Enséñales a insertarlo también","Enséñales a enseñar a otros a insertarlo","¡Multiplica los mapas por todas partes para Jesús!"]},Kp={labels:{country:"País:",population:"Población:",language:"Idioma:",religion:"Religión:",languageFamily:"Familia lingüística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"No hay descripción disponible."}},Op={title:{prayer:"Progreso de oración",engagement:"Progreso de implicación",adoption:"Progreso de adopción",languageFamilies:"Familias lingüísticas",doxaRegions:"Regiones Doxa",affinityBlocs:"Bloques de afinidad",gospelResources:"Recursos del Evangelio"},header:{collapsed:"Leyenda",peopleGroupFallback:"Grupo de personas",default:"Leyenda"},prayer:{needsPrayer:"Necesita oración",hasPrayer:"Tiene oración",fullPrayerCoverage:"Cobertura de oración completa"},progress:{title:"Progreso",covered:"{covered} de {total} grupos de personas cubiertos en oración · {pct}%",short:"{covered} de {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necesita implicación",hasEngagement:"Tiene implicación"},adoption:{needsAdoption:"Necesita adopción",hasAdoption:"Tiene adopción"},columns:{upgs:"UUPGs",population:"Población",name:"Nombre"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por población",colLabel:{religion:"Religiones UUPG",prayer:"Estado de oración",engagement:"Estado de compromiso",adoption:"Estado de adopción",status:"Estado"},titleBar:{legend:"Leyenda",peopleGroups:"Pueblos",wagfRegions:"Regiones WAGF",languages:"Idiomas"},tabInfo:{upg100Region:"Región — ordena las listas UPG-100 por área mundial (África, India, Oriente Medio, Sordos, …). Los totales son los UUPG y la población sumados de todas las listas que contiene.",upg100Zone:"Listas UPG-100 — cada una es una lista de oración de los grupos étnicos no alcanzados de un área, y es lo que el mapa pinta y colorea. Cada lista se imprime como su propio paquete.",upg100Group:"Grupo étnico — los grupos no alcanzados dentro de una lista, primero los de mayor necesidad de oración. Cada punto del mapa es uno de ellos."}},Up={menuComingSoon:"Menú próximamente"},Dp={clusterByRegion:"Por región Doxa",clusterByLanguageFamily:"Por familia lingüística",clusterByGospelResource:"Por recurso del Evangelio"},Hp={country:{wagfRegion:"Región WAGF",wagfBlock:"Bloque WAGF",country:"País",uupgCount:"Número de UUPG"}},zp={header:"VUELTA DE ORACIÓN ACTUAL",lap:"Vuelta",upgs:"UUPGs",separator:" de "},Vp={"%count% people groups in %countries% countries":"%count% grupos étnicos en %countries% países","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% tiene %count% grupos étnicos en %countries% países. El color de cada punto indica cuántas personas oran por ese grupo étnico.","1+ People Praying":"1+ personas orando","100+ People Praying":"100+ personas orando",Adopted:"Aprobado","Adoption Progress":"Progreso de la adopción","All Regions":"Todas las regiones","Alternate Names":"Nombres alternativos","Clear All":"Borrar todo",Countries:"Países","Countries in this region":"Países de esta región",Country:"País",Engaged:"Comprometido","Engagement Progress":"Progreso del compromiso","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Cada grupo étnico no evangelizado adoptado por una iglesia comprometida con la oración, la ofrenda y el envío.","Exact Search":"Búsqueda exacta","Find unreached people groups by region and country.":"Encuentra grupos étnicos no alcanzados por región y país.","Full Profile":"Perfil completo",Goal:"Meta","Hide Filters":"Ocultar filtros",Intercessors:"Intercesores","Load More":"Cargar más","Loading results...":"Cargando resultados...","Mobilize 100+ people praying daily for each DOXA people group":"Movilizar a más de 100 personas que oren diariamente por cada grupo étnico DOXA.","No One Praying":"Nadie orando","No options found":"No se han encontrado opciones","No unengaged people groups by 2033":"No habrá grupos étnicos sin evangelizar para 2033","Not Adopted":"No adoptado",Other:"Otros","Page Not Found":"Página no encontrada","People Group":"Grupo Étnico","People Groups":"Grupos Étnicos","People committed to praying":"Personas comprometidas con la oración",Population:"Población","Prayer Coverage":"Cobertura de oración","Prayer coverage progress":"Progreso de la cobertura de oración",Regions:"Regiones",Religion:"Religión","Search names, country/continent, religions...":"Buscar nombres, país/continente, religiones...","See %region% dashboard":"Ver el panel de %region%","See All":"Ver todo",Select:"Seleccionar","Show Filters":"Mostrar filtros","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Hay %count% grupos étnicos en %country%. Consulta también el mapa para ver los grupos étnicos en la frontera de este país.",Total:"Total","Type to search...":"Escribe para buscar...","Unengaged people groups":"Grupos étnicos no comprometidos","WAGF Block":"Bloque WAGF","WAGF Region":"Región de la WAGF","people groups adopted":"grupos de personas adoptados","people groups engaged":"grupos étnicos comprometidos","View country posters":"Ver los carteles del país","Hide country posters":"Ocultar los carteles del país","No poster has been generated for this country yet.":"Todavía no se ha generado ningún cartel para este país."},Wp={placeholder:"Pueblo, lugar, idioma, religión",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"},sections:{within:"Dentro de {selection}",allData:"Todos los datos DOXA"}},Yp={prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País",upg100Region:"Región",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico"},Jp={backToLegend:"Retour à la légende",closeDetailView:"Fermer la vue détaillée",collapseLegend:"Réduire la légende",expandLegend:"Développer la légende",toggleLegend:"Afficher ou masquer la légende"},Zp={prayForThem:"Priez pour eux",adoptThem:"Adoptez-les",moreInfo:"Plus d'infos",zoomIn:"Zoom avant",zoomOut:"Zoom arrière",switchToLightMode:"Passer au mode clair",switchToDarkMode:"Passer au mode sombre",resetView:"Réinitialiser la vue",toggleFullscreen:"Basculer en plein écran",aboutThisMap:"À propos de cette carte",closeMenu:"Fermer le menu",reloadMap:"Recharger la carte",showClusters:"Afficher les clusters",clusterSettings:"Paramètres des clusters",startAutoFly:"Démarrer le vol auto",stopFlight:"Arrêter le vol",speedLabel:"Vitesse :",speedOption:{slow:"Lente",normal:"Normale",fast:"Rapide"},shareEmbed:"Partager et intégrer",posterMap:"Carte de l'affiche",prayerList:"Liste de prière",cardDeck:"Jeu de cartes",printOptions:"Options d'impression",showOnMap:"Voir sur la carte",close:"Fermer",showOnMapAria:"Voir {label} sur la carte",cardStockAria:"Taille de la carte de prière",previewPrintPoster:"Aperçu et impression de l’affiche {label}",share:"Partager",shareSteps:["Intégrez cette carte à votre site","Dressez la liste des sites web de votre ville","Apprenez-leur à l’intégrer aussi","Apprenez-leur à former d’autres personnes à l’intégrer","Multiplions les cartes partout pour Jésus !"]},qp={labels:{country:"Pays :",population:"Population :",language:"Langue :",religion:"Religion :",languageFamily:"Famille de langues :",peopleCommitted:"Engagés à prier :"},messages:{noDescription:"Aucune description disponible."}},Xp={title:{prayer:"Progression de la prière",engagement:"Progression de l'engagement",adoption:"Progression de l'adoption",languageFamilies:"Familles de langues",doxaRegions:"Régions Doxa",affinityBlocs:"Blocs d'affinité",gospelResources:"Ressources de l'Évangile"},header:{collapsed:"Légende",peopleGroupFallback:"Groupe de personnes",default:"Légende"},prayer:{needsPrayer:"Besoin de prière",hasPrayer:"Prière en cours",fullPrayerCoverage:"Couverture de prière complète"},progress:{title:"Progression",covered:"{covered} sur {total} groupes de personnes couverts par la prière · {pct}%",short:"{covered} sur {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Besoin d'engagement",hasEngagement:"Engagement en cours"},adoption:{needsAdoption:"Besoin d'adoption",hasAdoption:"Adoption en cours"},columns:{upgs:"UUPGs",population:"Population",name:"Nom"},footer:{total:"Total"},sortByUpgs:"Trier par UUPG",sortByPop:"Trier par population",colLabel:{religion:"Religions UUPG",prayer:"Statut de prière",engagement:"Statut d'engagement",adoption:"Statut d'adoption",status:"Statut"},titleBar:{legend:"Légende",peopleGroups:"Peuples",wagfRegions:"Régions WAGF",languages:"Langues"},tabInfo:{upg100Region:"Région — trie les listes UPG-100 par zone du monde (Afrique, Inde, Moyen-Orient, Sourds, …). Les totaux sont les UUPG et la population additionnés sur toutes les listes qu’elle contient.",upg100Zone:"Listes UPG-100 — chacune est une liste de prière des groupes de peuples non atteints d’une zone, et c’est ce que la carte dessine et colore. Chaque liste s’imprime comme son propre livret.",upg100Group:"Groupe de peuples — les groupes non atteints au sein d’une liste, les plus grands besoins de prière en premier. Chaque point de la carte en est un."}},Qp={menuComingSoon:"Menu bientôt disponible"},am={clusterByRegion:"Par région Doxa",clusterByLanguageFamily:"Par famille de langues",clusterByGospelResource:"Par ressource de l'Évangile"},em={country:{wagfRegion:"Région WAGF",wagfBlock:"Bloc WAGF",country:"Pays",uupgCount:"Nombre d'UUPG"}},nm={header:"TOUR DE PRIÈRE ACTUEL",lap:"Tour",upgs:"UUPGs",separator:" sur "},tm={"%count% people groups in %countries% countries":"%count% peuples dans %countries% pays","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% compte %count% peuples répartis dans %countries% pays. La couleur de chaque point indique combien de personnes prient pour ce peuple.","1+ People Praying":"1+ personnes en prière","100+ People Praying":"100+ personnes en prière",Adopted:"Adopté","Adoption Progress":"Progrès de l'adoption","All Regions":"Toutes les régions","Alternate Names":"Autres noms","Clear All":"Tout effacer",Countries:"Pays","Countries in this region":"Pays de cette région",Country:"Pays",Engaged:"Engagé","Engagement Progress":"Progrès de l'engagement","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Chaque peuple non engagé adopté par une église locale engagée dans la prière, le don et l'envoi","Exact Search":"Recherche exacte","Find unreached people groups by region and country.":"Trouvez des peuples non atteints par région et par pays.","Full Profile":"Profil complet",Goal:"Objectif","Hide Filters":"Masquer les filtres",Intercessors:"Intercesseurs","Load More":"Afficher plus","Loading results...":"Chargement des résultats...","Mobilize 100+ people praying daily for each DOXA people group":"Mobiliser plus de 100 personnes priant chaque jour pour chaque peuple DOXA","No One Praying":"Personne ne prie","No options found":"Aucun lieu trouvé","No unengaged people groups by 2033":"Plus aucun peuple non engagé d'ici 2033","Not Adopted":"Non adopté",Other:"Autre","Page Not Found":"Page introuvable","People Group":"Peuple","People Groups":"Peuples","People committed to praying":"Personnes engagées dans la prière",Population:"Population","Prayer Coverage":"Couverture de prière","Prayer coverage progress":"Progression de la couverture de prière",Regions:"Régions",Religion:"Religion","Search names, country/continent, religions...":"Rechercher des noms, pays/continent, religions...","See %region% dashboard":"Voir le tableau de bord : %region%","See All":"Tout afficher",Select:"Sélectionner","Show Filters":"Afficher les filtres","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Il y a %count% peuples en %country%. Consultez la carte pour découvrir également les peuples situés à la frontière de ce pays.",Total:"Total","Type to search...":"Entrer votre recherche","Unengaged people groups":"Peuples non engagés","WAGF Block":"Bloc WAGF","WAGF Region":"Région WAGF","people groups adopted":"peuples adoptés","people groups engaged":"peuples engagés","View country posters":"Voir les affiches du pays","Hide country posters":"Masquer les affiches du pays","No poster has been generated for this country yet.":"Aucune affiche n'a encore été générée pour ce pays."},im={placeholder:"Peuple, lieu, langue, religion",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"},sections:{within:"Dans {selection}",allData:"Toutes les données DOXA"}},om={prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays",upg100Region:"Région",upg100Zone:"Listes UPG-100",upg100Group:"Groupe de peuples"},rm={backToLegend:"लेजेंड पर वापस जाएं",closeDetailView:"विवरण दृश्य बंद करें",collapseLegend:"लेजेंड संक्षिप्त करें",expandLegend:"लेजेंड विस्तृत करें",toggleLegend:"लेजेंड दिखाएँ या छिपाएँ"},lm={prayForThem:"उनके लिए प्रार्थना करें",adoptThem:"उन्हें गोद लें",moreInfo:"अधिक जानकारी",zoomIn:"ज़ूम इन",zoomOut:"ज़ूम आउट",switchToLightMode:"लाइट मोड पर जाएं",switchToDarkMode:"डार्क मोड पर जाएं",resetView:"दृश्य रीसेट करें",toggleFullscreen:"फ़ुलस्क्रीन टॉगल करें",aboutThisMap:"इस मानचित्र के बारे में",closeMenu:"मेनू बंद करें",reloadMap:"मानचित्र पुनः लोड करें",showClusters:"क्लस्टर दिखाएं",clusterSettings:"क्लस्टर सेटिंग्स",startAutoFly:"ऑटो फ्लाई शुरू करें",stopFlight:"उड़ान रोकें",speedLabel:"गति:",speedOption:{slow:"धीमी",normal:"सामान्य",fast:"तेज़"},shareEmbed:"साझा करें और एम्बेड करें",posterMap:"पोस्टर मानचित्र",prayerList:"प्रार्थना सूची",cardDeck:"कार्ड सेट",printOptions:"छपाई विकल्प",showOnMap:"मानचित्र पर देखें",close:"बंद करें",showOnMapAria:"{label} को मानचित्र पर देखें",cardStockAria:"प्रार्थना कार्ड का आकार",previewPrintPoster:"{label} पोस्टर देखें और प्रिंट करें",share:"साझा करें",shareSteps:["इस मानचित्र को अपनी वेबसाइट पर लगाएँ","अपने शहर की वेबसाइटों की सूची बनाएँ","उन्हें भी इसे लगाना सिखाएँ","उन्हें सिखाएँ कि वे औरों को लगाना सिखाएँ","यीशु के लिए हर जगह मानचित्र बढ़ाएँ!"]},sm={labels:{country:"देश:",population:"जनसंख्या:",language:"भाषा:",religion:"धर्म:",languageFamily:"भाषा परिवार:",peopleCommitted:"प्रार्थना के लिए प्रतिबद्ध:"},messages:{noDescription:"कोई विवरण उपलब्ध नहीं है।"}},cm={title:{prayer:"प्रार्थना प्रगति",engagement:"सहभागिता प्रगति",adoption:"गोद लेने की प्रगति",languageFamilies:"भाषा परिवार",doxaRegions:"Doxa क्षेत्र",affinityBlocs:"समानता समूह",gospelResources:"सुसमाचार संसाधन"},header:{collapsed:"किंवदंती",peopleGroupFallback:"जनजाति समूह",default:"सूचकांक"},prayer:{needsPrayer:"प्रार्थना चाहिए",hasPrayer:"प्रार्थना है",fullPrayerCoverage:"पूर्ण प्रार्थना कवरेज"},progress:{title:"प्रगति",covered:"{total} में से {covered} जनजाति समूह प्रार्थना में कवर · {pct}%",short:"{total} में से {covered} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"सहभागिता चाहिए",hasEngagement:"सहभागिता है"},adoption:{needsAdoption:"गोद लेना चाहिए",hasAdoption:"गोद लिया गया"},columns:{upgs:"UUPGs",population:"जनसंख्या",name:"नाम"},footer:{total:"कुल"},sortByUpgs:"UUPG के अनुसार क्रमबद्ध करें",sortByPop:"जनसंख्या के अनुसार क्रमबद्ध करें",colLabel:{religion:"UUPG धर्म",prayer:"प्रार्थना स्थिति",engagement:"सहभागिता स्थिति",adoption:"गोद लेने की स्थिति",status:"स्थिति"},titleBar:{legend:"सूचकांक",peopleGroups:"जनसमूह",wagfRegions:"WAGF क्षेत्र",languages:"भाषाएँ"},tabInfo:{upg100Region:"क्षेत्र — UPG-100 सूचियों को विश्व क्षेत्र के अनुसार क्रमित करता है (अफ़्रीका, भारत, मध्य पूर्व, बधिर, …)। संख्याएँ उसके नीचे की हर सूची के UUPG और जनसंख्या का योग हैं।",upg100Zone:"UPG-100 सूचियाँ — हर एक किसी क्षेत्र के अनपहुँचे जनसमूहों की प्रार्थना सूची है, और यही मानचित्र बनाता और रंगता है। हर सूची अपने अलग पैकेट के रूप में छपती है।",upg100Group:"जनसमूह — किसी सूची के भीतर के अलग-अलग अनपहुँचे समूह, सबसे बड़ी प्रार्थना आवश्यकता पहले। मानचित्र का हर बिंदु इनमें से एक है।"}},gm={menuComingSoon:"मेनू शीघ्र आ रहा है"},um={clusterByRegion:"Doxa क्षेत्र के अनुसार",clusterByLanguageFamily:"भाषा परिवार के अनुसार",clusterByGospelResource:"सुसमाचार संसाधन के अनुसार"},dm={country:{wagfRegion:"WAGF क्षेत्र",wagfBlock:"WAGF ब्लॉक",country:"देश",uupgCount:"UUPG संख्या"}},pm={header:"वर्तमान प्रार्थना चक्र",lap:"चक्र",upgs:"UUPGs",separator:" में से "},mm={"%count% people groups in %countries% countries":"%countries% देशों में %count% लोगों के समूह","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% में %countries% देशों में %count% लोगों के समूह हैं। प्रत्येक बिंदु का रंग दर्शाता है कि उस लोगों के समूह के लिए कितने लोग प्रार्थना कर रहे हैं।","1+ People Praying":"1+ लोग प्रार्थना कर रहे हैं","100+ People Praying":"100+ लोग प्रार्थना कर रहे हैं",Adopted:"दत्तक लिया गया","Adoption Progress":"दत्तक ग्रहण की प्रगति","All Regions":"सभी क्षेत्र","Alternate Names":"वैकल्पिक नाम","Clear All":"सभी साफ़ करें",Countries:"देश","Countries in this region":"इस क्षेत्र के देश",Country:"देश",Engaged:"प्रवेशित","Engagement Progress":"प्रवेश की प्रगति","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"प्रत्येक असंलग्न जनसमूह जिसे प्रार्थना, दान और भेजने के लिए प्रतिबद्ध एक चर्च ने अपनाया है।","Exact Search":"सटीक खोज","Find unreached people groups by region and country.":"क्षेत्र और देश के अनुसार अगम्य लोगों के समूह खोजें।","Full Profile":"पूर्ण प्रोफ़ाइल",Goal:"लक्ष्य","Hide Filters":"फ़िल्टर छिपाएँ",Intercessors:"मध्यस्थ","Load More":"और लोड करें","Loading results...":"परिणाम लोड हो रहे हैं..।","Mobilize 100+ people praying daily for each DOXA people group":"प्रत्येक DOXA जनसमूह के लिए प्रतिदिन प्रार्थना करने हेतु 100+ लोगों को सक्रिय करें।","No One Praying":"कोई प्रार्थना नहीं कर रहा","No options found":"कोई विकल्प नहीं मिला","No unengaged people groups by 2033":"2033 तक कोई भी संलग्न न किया गया जनसमूह नहीं रहेगा।","Not Adopted":"दत्तक नहीं लिया गया",Other:"अन्य","Page Not Found":"पृष्ठ नहीं मिला","People Group":"लोगों का समूह","People Groups":"लोगों के समूह","People committed to praying":"प्रार्थना के लिए प्रतिबद्ध लोग",Population:"जनसँख्या","Prayer Coverage":"प्रार्थना कवरेज","Prayer coverage progress":"प्रार्थना कवरेज की प्रगति",Regions:"क्षेत्र",Religion:"धर्म","Search names, country/continent, religions...":"नाम, देश/महाद्वीप, धर्म खोजें..।","See %region% dashboard":"%region% डैशबोर्ड देखें","See All":"सभी देखें",Select:"चयन/छंटनी","Show Filters":"फ़िल्टर दिखाएँ","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"%country% में %count% लोगों के समूह हैं। इस देश की सीमा पर स्थित लोगों के समूहों के लिए मानचित्र भी देखें।",Total:"संपूर्ण","Type to search...":"खोजने के लिए टाइप करें..।","Unengaged people groups":"अनलग्न लोगों के समूह","WAGF Block":"WAGF ब्लॉक","WAGF Region":"डब्ल्यूएजीएफ क्षेत्र","people groups adopted":"लोगों के समूहों ने अपनाया","people groups engaged":"प्रवेशित लोगों के समूह","View country posters":"देश के पोस्टर देखें","Hide country posters":"देश के पोस्टर छिपाएँ","No poster has been generated for this country yet.":"इस देश के लिए अभी तक कोई पोस्टर नहीं बना है।"},hm={placeholder:"लोग, स्थान, भाषा, धर्म",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"},sections:{within:"{selection} के भीतर",allData:"सभी DOXA डेटा"},kinds:{people:"जनसमूह + देश",peopleGroup:"जनसमूह",bloc:"समानता समूह",cluster:"जनसमूह क्लस्टर",country:"देश",region:"क्षेत्र",family:"भाषा परिवार",languageKind:"भाषा",dialect:"बोली",religionKind:"धर्म"}},ym={prayer:"प्रार्थना",adoption:"गोद लेना",engagement:"सहभागिता","affinity-blocks":"जनसमूह",regions:"क्षेत्र",countries:"देश","language-families":"भाषाएँ",religion:"धर्म",family:"भाषा परिवार",language:"भाषा",dialect:"बोली/रूप",bloc:"समानता समूह",cluster:"क्लस्टर",group:"जनसमूह",pgic:"देश में जनसमूह",region:"WAGF क्षेत्र",block:"WAGF ब्लॉक",country:"देश",upg100Region:"क्षेत्र",upg100Zone:"UPG-100 सूचियाँ",upg100Group:"जनसमूह"},bm={backToLegend:"Torna alla legenda",closeDetailView:"Chiudi vista dettaglio",collapseLegend:"Comprimi la legenda",expandLegend:"Espandi la legenda",toggleLegend:"Mostra o nascondi la legenda"},_m={prayForThem:"Prega per loro",adoptThem:"Adottali",moreInfo:"Più informazioni",zoomIn:"Ingrandisci",zoomOut:"Riduci",switchToLightMode:"Passa alla modalità chiara",switchToDarkMode:"Passa alla modalità scura",resetView:"Reimposta vista",toggleFullscreen:"Attiva/disattiva schermo intero",aboutThisMap:"Informazioni su questa mappa",closeMenu:"Chiudi menu",reloadMap:"Ricarica mappa",showClusters:"Mostra cluster",clusterSettings:"Impostazioni cluster",startAutoFly:"Avvia volo automatico",stopFlight:"Ferma volo",speedLabel:"Velocità:",speedOption:{slow:"Lenta",normal:"Normale",fast:"Veloce"},shareEmbed:"Condividi e incorpora",posterMap:"Mappa del poster",prayerList:"Lista di preghiera",cardDeck:"Mazzo di carte",printOptions:"Opzioni di stampa",showOnMap:"Mostra sulla mappa",close:"Chiudi",showOnMapAria:"Mostra {label} sulla mappa",cardStockAria:"Formato della scheda di preghiera",previewPrintPoster:"Anteprima e stampa del poster {label}",share:"Condividi",shareSteps:["Incorpora questa mappa nel tuo sito","Fai un elenco dei siti web della tua città","Insegna loro a incorporarla a loro volta","Insegna loro a formare altri a incorporarla","Moltiplichiamo le mappe ovunque per Gesù!"]},fm={labels:{country:"Paese:",population:"Popolazione:",language:"Lingua:",religion:"Religione:",languageFamily:"Famiglia linguistica:",peopleCommitted:"Impegnati a pregare:"},messages:{noDescription:"Nessuna descrizione disponibile."}},Pm={title:{prayer:"Avanzamento della preghiera",engagement:"Avanzamento dell'impegno",adoption:"Avanzamento dell'adozione",languageFamilies:"Famiglie linguistiche",doxaRegions:"Regioni Doxa",affinityBlocs:"Blocchi di affinità",gospelResources:"Risorse del Vangelo"},header:{collapsed:"Legenda",peopleGroupFallback:"Gruppo di persone",default:"Legenda"},prayer:{needsPrayer:"Necessita preghiera",hasPrayer:"Ha preghiera",fullPrayerCoverage:"Copertura di preghiera completa"},progress:{title:"Avanzamento",covered:"{covered} di {total} gruppi di persone coperti dalla preghiera · {pct}%",short:"{covered} di {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necessita impegno",hasEngagement:"Ha impegno"},adoption:{needsAdoption:"Necessita adozione",hasAdoption:"Ha adozione"},columns:{upgs:"UUPGs",population:"Popolazione",name:"Nome"},footer:{total:"Totale"},sortByUpgs:"Ordina per UUPG",sortByPop:"Ordina per popolazione",colLabel:{religion:"Religioni UUPG",prayer:"Stato della preghiera",engagement:"Stato dell'impegno",adoption:"Stato dell'adozione",status:"Stato"},titleBar:{legend:"Legenda",peopleGroups:"Popoli",wagfRegions:"Regioni WAGF",languages:"Lingue"},tabInfo:{upg100Region:"Regione — ordina le liste UPG-100 per area del mondo (Africa, India, Medio Oriente, Sordi, …). I totali sono gli UUPG e la popolazione sommati di ogni lista sottostante.",upg100Zone:"Liste UPG-100 — ognuna è una lista di preghiera dei gruppi etnici non raggiunti di un’area, ed è ciò che la mappa disegna e colora. Ogni lista si stampa come il proprio fascicolo.",upg100Group:"Gruppo etnico — i singoli gruppi non raggiunti dentro una lista, prima quelli con maggiore bisogno di preghiera. Ogni punto della mappa è uno di questi."}},Cm={menuComingSoon:"Menu in arrivo"},km={clusterByRegion:"Per regione Doxa",clusterByLanguageFamily:"Per famiglia linguistica",clusterByGospelResource:"Per risorsa del Vangelo"},jm={country:{wagfRegion:"Regione WAGF",wagfBlock:"Blocco WAGF",country:"Paese",uupgCount:"Numero di UUPG"}},Gm={header:"GIRO DI PREGHIERA ATTUALE",lap:"Giro",upgs:"UUPGs",separator:" di "},vm={"%count% people groups in %countries% countries":"%count% popoli in %countries% paesi","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% conta %count% popoli in %countries% paesi. Il colore di ogni punto indica quante persone pregano per quel popolo.","1+ People Praying":"1+ persone in preghiera","100+ People Praying":"100+ persone in preghiera",Adopted:"Adottato","Adoption Progress":"Avanzamento dell'adozione","All Regions":"Tutte le regioni","Alternate Names":"Nomi alternativi","Clear All":"Cancella tutto",Countries:"Paesi","Countries in this region":"Paesi di questa regione",Country:"Paese",Engaged:"Coinvolto","Engagement Progress":"Avanzamento dell'impegno","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Ogni popolo non ancora raggiunto adottato da una chiesa impegnata nella preghiera, nel dare e nell'inviare","Exact Search":"Ricerca esatta","Find unreached people groups by region and country.":"Trova i popoli non raggiunti per regione e paese.","Full Profile":"Profilo completo",Goal:"Obiettivo","Hide Filters":"Nascondi i filtri",Intercessors:"Intercessori","Load More":"Carica altri","Loading results...":"Caricamento dei risultati…","Mobilize 100+ people praying daily for each DOXA people group":"Mobilitare oltre 100 persone che pregano ogni giorno per ciascun popolo DOXA","No One Praying":"Nessuno prega","No options found":"Nessuna opzione trovata","No unengaged people groups by 2033":"Nessun popolo senza impegno entro il 2033","Not Adopted":"Non adottato",Other:"Altro","Page Not Found":"Pagina non trovata","People Group":"Popolo","People Groups":"Popoli","People committed to praying":"Persone impegnate a pregare",Population:"Popolazione","Prayer Coverage":"Copertura della preghiera","Prayer coverage progress":"Avanzamento della copertura di preghiera",Regions:"Regioni",Religion:"Religione","Search names, country/continent, religions...":"Cerca nomi, paese/continente, religioni…","See %region% dashboard":"Vedi il cruscotto di %region%","See All":"Vedi tutto",Select:"Seleziona","Show Filters":"Mostra i filtri","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"In %country% ci sono %count% popoli. Controlla sulla mappa anche i popoli ai confini di questo paese.",Total:"Totale","Type to search...":"Digita per cercare…","Unengaged people groups":"Popoli senza impegno","WAGF Block":"Blocco WAGF","WAGF Region":"Regione WAGF","people groups adopted":"popoli adottati","people groups engaged":"popoli coinvolti","View country posters":"Vedi i poster del paese","Hide country posters":"Nascondi i poster del paese","No poster has been generated for this country yet.":"Per questo paese non è ancora stato generato alcun poster."},Am={placeholder:"Popolo, luogo, lingua, religione",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"},sections:{within:"In {selection}",allData:"Tutti i dati DOXA"},kinds:{people:"Popolo + paese",peopleGroup:"Popolo",bloc:"Blocco di affinità",cluster:"Cluster di popoli",country:"Paese",region:"Regione",family:"Famiglia linguistica",languageKind:"Lingua",dialect:"Dialetto",religionKind:"Religione"}},Sm={prayer:"Preghiera",adoption:"Adozione",engagement:"Impegno","affinity-blocks":"Popoli",regions:"Regioni",countries:"Paesi","language-families":"Lingue",religion:"Religioni",family:"Famiglia ling.",language:"Lingua",dialect:"Dialetto/Variante",bloc:"Blocco di affinità",cluster:"Cluster",group:"Popolo",pgic:"Popolo nel paese",region:"Regione WAGF",block:"Blocco WAGF",country:"Paese",upg100Region:"Regione",upg100Zone:"Liste UPG-100",upg100Group:"Gruppo etnico"},Em={backToLegend:"Voltar à legenda",closeDetailView:"Fechar vista de detalhe",collapseLegend:"Recolher a legenda",expandLegend:"Expandir a legenda",toggleLegend:"Mostrar ou ocultar a legenda"},$m={prayForThem:"Ore por eles",adoptThem:"Adote-os",moreInfo:"Mais informações",zoomIn:"Ampliar",zoomOut:"Reduzir",switchToLightMode:"Mudar para modo claro",switchToDarkMode:"Mudar para modo escuro",resetView:"Repor vista",toggleFullscreen:"Alternar ecrã inteiro",aboutThisMap:"Sobre este mapa",closeMenu:"Fechar menu",reloadMap:"Recarregar mapa",showClusters:"Mostrar clusters",clusterSettings:"Definições de clusters",startAutoFly:"Iniciar voo automático",stopFlight:"Parar voo",speedLabel:"Velocidade:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Partilhar e incorporar",posterMap:"Mapa do cartaz",prayerList:"Lista de oração",cardDeck:"Baralho de cartões",printOptions:"Opções de impressão",showOnMap:"Ver no mapa",close:"Fechar",showOnMapAria:"Ver {label} no mapa",cardStockAria:"Tamanho do cartão de oração",previewPrintPoster:"Pré-visualizar e imprimir o cartaz de {label}",share:"Partilhar",shareSteps:["Incorpore este mapa no seu site","Faça uma lista dos sites da sua cidade","Ensine-os a incorporá-lo também","Ensine-os a ensinar outros a incorporá-lo","Multipliquemos mapas por toda a parte para Jesus!"]},Mm={labels:{country:"País:",population:"População:",language:"Língua:",religion:"Religião:",languageFamily:"Família linguística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"Sem descrição disponível."}},wm={title:{prayer:"Progresso da oração",engagement:"Progresso do envolvimento",adoption:"Progresso da adoção",languageFamilies:"Famílias linguísticas",doxaRegions:"Regiões Doxa",affinityBlocs:"Blocos de afinidade",gospelResources:"Recursos do Evangelho"},header:{collapsed:"Legenda",peopleGroupFallback:"Grupo de pessoas",default:"Legenda"},prayer:{needsPrayer:"Precisa de oração",hasPrayer:"Tem oração",fullPrayerCoverage:"Cobertura de oração completa"},progress:{title:"Progresso",covered:"{covered} de {total} grupos de pessoas cobertos em oração · {pct}%",short:"{covered} de {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Precisa de envolvimento",hasEngagement:"Tem envolvimento"},adoption:{needsAdoption:"Precisa de adoção",hasAdoption:"Tem adoção"},columns:{upgs:"UUPGs",population:"População",name:"Nome"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por população",colLabel:{religion:"Religiões UUPG",prayer:"Status de oração",engagement:"Status de engajamento",adoption:"Status de adoção",status:"Status"},titleBar:{legend:"Legenda",peopleGroups:"Povos",wagfRegions:"Regiões WAGF",languages:"Idiomas"},tabInfo:{upg100Region:"Região — ordena as listas UPG-100 por área do mundo (África, Índia, Oriente Médio, Surdos, …). Os totais são os UUPG e a população somados de todas as listas abaixo dela.",upg100Zone:"Listas UPG-100 — cada uma é uma lista de oração dos grupos étnicos não alcançados de uma área, e é o que o mapa pinta e colore. Cada lista é impressa como seu próprio pacote.",upg100Group:"Grupo étnico — os grupos não alcançados dentro de uma lista, primeiro os de maior necessidade de oração. Cada ponto do mapa é um deles."}},Im={menuComingSoon:"Menu em breve"},xm={clusterByRegion:"Por região Doxa",clusterByLanguageFamily:"Por família linguística",clusterByGospelResource:"Por recurso do Evangelho"},Tm={country:{wagfRegion:"Região WAGF",wagfBlock:"Bloco WAGF",country:"País",uupgCount:"Número de UUPG"}},Nm={header:"VOLTA DE ORAÇÃO ATUAL",lap:"Volta",upgs:"UUPGs",separator:" de "},Lm={"%count% people groups in %countries% countries":"%count% grupos étnicos em %countries% países","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% tem %count% grupos étnicos em %countries% países. A cor de cada ponto indica quantas pessoas oram por esse grupo étnico.","1+ People Praying":"1+ pessoas orando","100+ People Praying":"100+ pessoas orando",Adopted:"Aprovado","Adoption Progress":"Progresso da adoção","All Regions":"Todas as regiões","Alternate Names":"Nomes alternativos","Clear All":"Limpar tudo",Countries:"Países","Countries in this region":"Países desta região",Country:"País",Engaged:"Engajado","Engagement Progress":"Progresso do engajamento","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Cada grupo étnico não engajado adotado por uma igreja comprometida com a oração, contribuição e o envio","Exact Search":"Pesquisa exata","Find unreached people groups by region and country.":"Encontre grupos étnicos não alcançados por região e país.","Full Profile":"Perfil completo",Goal:"Meta","Hide Filters":"Ocultar filtros",Intercessors:"Intercessores","Load More":"Carregar mais","Loading results...":"A carregar resultados...","Mobilize 100+ people praying daily for each DOXA people group":"Mobilizar mais de 100 pessoas para orar diariamente por cada grupo étnico DOXA","No One Praying":"Ninguém orando","No options found":"Não foram encontradas opções","No unengaged people groups by 2033":"Nenhum grupo étnico não engajado até 2033","Not Adopted":"Não adotado",Other:"Outros","Page Not Found":"Página não encontrada","People Group":"Grupo étnico","People Groups":"Grupos étnicos","People committed to praying":"Pessoas comprometidas com a oração",Population:"Aplicação","Prayer Coverage":"Cobertura de oração","Prayer coverage progress":"Progresso da cobertura de oração",Regions:"Regiões",Religion:"Religião","Search names, country/continent, religions...":"Busque nomes, país/continente, religiões...","See %region% dashboard":"Ver o painel: %region%","See All":"Ver tudo",Select:"Selecionar","Show Filters":"Mostrar filtros","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Existem %count% grupos étnicos em %country%. Verifique no mapa também os grupos étnicos na fronteira deste país.",Total:"Total","Type to search...":"Digite para pesquisar...","Unengaged people groups":"Grupos étnicos não engajados","WAGF Block":"Bloco WAGF","WAGF Region":"Região da WAGF","people groups adopted":"grupos étnicos adotados","people groups engaged":"grupos étnicos engajados","View country posters":"Ver os cartazes do país","Hide country posters":"Ocultar os cartazes do país","No poster has been generated for this country yet.":"Ainda não foi gerado nenhum cartaz para este país."},Rm={placeholder:"Povo, local, língua, religião",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"},sections:{within:"Dentro de {selection}",allData:"Todos os dados DOXA"}},Fm={prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País",upg100Region:"Região",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico"},Bm={backToLegend:"Înapoi la legendă",closeDetailView:"Închide vizualizarea detaliată",collapseLegend:"Restrânge legenda",expandLegend:"Extinde legenda",toggleLegend:"Afișează sau ascunde legenda"},Km={prayForThem:"Roagă-te pentru ei",adoptThem:"Adoptă-i",moreInfo:"Mai multe informații",zoomIn:"Mărește",zoomOut:"Micșorează",switchToLightMode:"Comută la modul luminos",switchToDarkMode:"Comută la modul întunecat",resetView:"Resetează vizualizarea",toggleFullscreen:"Comută ecran complet",aboutThisMap:"Despre această hartă",closeMenu:"Închide meniul",reloadMap:"Reîncarcă harta",showClusters:"Arată clusterele",clusterSettings:"Setări clustere",startAutoFly:"Pornește zborul automat",stopFlight:"Oprește zborul",speedLabel:"Viteză:",speedOption:{slow:"Lent",normal:"Normal",fast:"Rapid"},shareEmbed:"Partajează și încorporează",posterMap:"Harta afișului",prayerList:"Listă de rugăciune",cardDeck:"Pachet de cartonașe",printOptions:"Opțiuni de tipărire",showOnMap:"Arată pe hartă",close:"Închide",showOnMapAria:"Arată {label} pe hartă",cardStockAria:"Dimensiunea cardului de rugăciune",previewPrintPoster:"Previzualizează și tipărește posterul {label}",share:"Distribuie",shareSteps:["Încorporează această hartă pe site-ul tău","Fă o listă cu site-urile din orașul tău","Învață-i să o încorporeze și ei","Învață-i să îi formeze pe alții să o încorporeze","Să multiplicăm hărți pretutindeni pentru Isus!"]},Om={labels:{country:"Țară:",population:"Populație:",language:"Limbă:",religion:"Religie:",languageFamily:"Familie de limbi:",peopleCommitted:"Angajați să se roage:"},messages:{noDescription:"Nicio descriere disponibilă."}},Um={title:{prayer:"Progresul rugăciunii",engagement:"Progresul implicării",adoption:"Progresul adopției",languageFamilies:"Familii de limbi",doxaRegions:"Regiuni Doxa",affinityBlocs:"Blocuri de afinitate",gospelResources:"Resurse ale Evangheliei"},header:{collapsed:"Legendă",peopleGroupFallback:"Grup de popoare",default:"Legendă"},prayer:{needsPrayer:"Necesită rugăciune",hasPrayer:"Are rugăciune",fullPrayerCoverage:"Acoperire completă de rugăciune"},progress:{title:"Progres",covered:"{covered} din {total} grupuri de popoare acoperite în rugăciune · {pct}%",short:"{covered} din {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necesită implicare",hasEngagement:"Are implicare"},adoption:{needsAdoption:"Necesită adopție",hasAdoption:"Are adopție"},columns:{upgs:"UUPGs",population:"Populație",name:"Nume"},footer:{total:"Total"},sortByUpgs:"Sortează după UUPG",sortByPop:"Sortează după populație",colLabel:{religion:"Religii UUPG",prayer:"Starea rugăciunii",engagement:"Starea implicării",adoption:"Starea adopției",status:"Stare"},titleBar:{legend:"Legendă",peopleGroups:"Popoare",wagfRegions:"Regiuni WAGF",languages:"Limbi"},tabInfo:{upg100Region:"Regiune — sortează listele UPG-100 după zona lumii (Africa, India, Orientul Mijlociu, Surzi, …). Totalurile sunt UUPG-urile și populația însumate din fiecare listă de dedesubt.",upg100Zone:"Liste UPG-100 — fiecare este o listă de rugăciune a grupurilor etnice neatinse dintr-o zonă și este ceea ce harta desenează și colorează. Fiecare listă se tipărește ca propriul pachet.",upg100Group:"Grup etnic — grupurile neatinse dintr-o listă, mai întâi cele cu cea mai mare nevoie de rugăciune. Fiecare punct de pe hartă este unul dintre ele."}},Dm={menuComingSoon:"Meniu în curând"},Hm={clusterByRegion:"După regiune Doxa",clusterByLanguageFamily:"După familia de limbi",clusterByGospelResource:"După resursa Evangheliei"},zm={country:{wagfRegion:"Regiunea WAGF",wagfBlock:"Blocul WAGF",country:"Țară",uupgCount:"Număr de UUPG"}},Vm={header:"TURUL DE RUGĂCIUNE CURENT",lap:"Tur",upgs:"UUPGs",separator:" din "},Wm={"%count% people groups in %countries% countries":"%count% popoare în %countries% țări","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% are %count% popoare în %countries% țări. Culoarea fiecărui punct arată câți oameni se roagă pentru acel popor.","1+ People Praying":"1+ persoane se roagă","100+ People Praying":"100+ persoane se roagă",Adopted:"Adoptat","Adoption Progress":"Progresul adopției","All Regions":"Toate regiunile","Alternate Names":"Denumiri alternative","Clear All":"Șterge tot",Countries:"Țări","Countries in this region":"Țările din această regiune",Country:"Țară",Engaged:"Implicat","Engagement Progress":"Progresul implicării","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Fiecare popor neimplicat adoptat de o biserică dedicată rugăciunii, dăruirii și trimiterii","Exact Search":"Căutare exactă","Find unreached people groups by region and country.":"Găsește popoarele neatinse după regiune și țară.","Full Profile":"Profil complet",Goal:"Obiectiv","Hide Filters":"Ascunde filtrele",Intercessors:"Mijlocitori","Load More":"Încarcă mai multe","Loading results...":"Se încarcă rezultatele…","Mobilize 100+ people praying daily for each DOXA people group":"Mobilizarea a peste 100 de persoane care se roagă zilnic pentru fiecare popor DOXA","No One Praying":"Nimeni nu se roagă","No options found":"Nu s-a găsit nicio opțiune","No unengaged people groups by 2033":"Niciun popor neimplicat până în 2033","Not Adopted":"Neadoptat",Other:"Altele","Page Not Found":"Pagina nu a fost găsită","People Group":"Popor","People Groups":"Popoare","People committed to praying":"Persoane dedicate rugăciunii",Population:"Populație","Prayer Coverage":"Acoperirea prin rugăciune","Prayer coverage progress":"Progresul acoperirii prin rugăciune",Regions:"Regiuni",Religion:"Religie","Search names, country/continent, religions...":"Caută nume, țară/continent, religii…","See %region% dashboard":"Vezi panoul %region%","See All":"Vezi tot",Select:"Selectează","Show Filters":"Arată filtrele","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"În %country% există %count% popoare. Verifică pe hartă și popoarele de la granițele acestei țări.",Total:"Total","Type to search...":"Scrie pentru a căuta…","Unengaged people groups":"Popoare neimplicate","WAGF Block":"Bloc WAGF","WAGF Region":"Regiune WAGF","people groups adopted":"popoare adoptate","people groups engaged":"popoare implicate","View country posters":"Vezi posterele țării","Hide country posters":"Ascunde posterele țării","No poster has been generated for this country yet.":"Pentru această țară nu a fost generat încă niciun poster."},Ym={placeholder:"Popor, loc, limbă, religie",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"},sections:{within:"În {selection}",allData:"Toate datele DOXA"},kinds:{people:"Popor + țară",peopleGroup:"Popor",bloc:"Bloc de afinitate",cluster:"Grup de popoare",country:"Țară",region:"Regiune",family:"Familie de limbi",languageKind:"Limbă",dialect:"Dialect",religionKind:"Religie"}},Jm={prayer:"Rugăciune",adoption:"Adopție",engagement:"Implicare","affinity-blocks":"Popoare",regions:"Regiuni",countries:"Țări","language-families":"Limbi",religion:"Religii",family:"Familie de limbi",language:"Limbă",dialect:"Dialect/Variantă",bloc:"Bloc de afinitate",cluster:"Grup",group:"Popor",pgic:"Popor în țară",region:"Regiune WAGF",block:"Bloc WAGF",country:"Țară",upg100Region:"Regiune",upg100Zone:"Liste UPG-100",upg100Group:"Grup etnic"},Zm={backToLegend:"Назад к легенде",closeDetailView:"Закрыть подробный вид",collapseLegend:"Свернуть легенду",expandLegend:"Развернуть легенду",toggleLegend:"Показать или скрыть легенду"},qm={prayForThem:"Молитесь о них",adoptThem:"Усыновите их",moreInfo:"Подробнее",zoomIn:"Приблизить",zoomOut:"Отдалить",switchToLightMode:"Переключить на светлый режим",switchToDarkMode:"Переключить на тёмный режим",resetView:"Сбросить вид",toggleFullscreen:"Полноэкранный режим",aboutThisMap:"Об этой карте",closeMenu:"Закрыть меню",reloadMap:"Перезагрузить карту",showClusters:"Показать кластеры",clusterSettings:"Настройки кластеров",startAutoFly:"Начать авто-полёт",stopFlight:"Остановить полёт",speedLabel:"Скорость:",speedOption:{slow:"Медленно",normal:"Нормально",fast:"Быстро"},shareEmbed:"Поделиться и встроить",posterMap:"Карта плаката",prayerList:"Молитвенный список",cardDeck:"Набор карточек",printOptions:"Параметры печати",showOnMap:"Показать на карте",close:"Закрыть",showOnMapAria:"Показать {label} на карте",cardStockAria:"Размер молитвенной карточки",previewPrintPoster:"Просмотр и печать плаката {label}",share:"Поделиться",shareSteps:["Разместите эту карту на своём сайте","Составьте список сайтов вашего города","Научите их тоже размещать её","Научите их учить других размещать её","Умножим карты повсюду для Иисуса!"]},Xm={labels:{country:"Страна:",population:"Население:",language:"Язык:",religion:"Религия:",languageFamily:"Языковая семья:",peopleCommitted:"Обязались молиться:"},messages:{noDescription:"Описание недоступно."}},Qm={title:{prayer:"Прогресс молитвы",engagement:"Прогресс вовлечённости",adoption:"Прогресс усыновления",languageFamilies:"Языковые семьи",doxaRegions:"Регионы Doxa",affinityBlocs:"Блоки родства",gospelResources:"Евангельские ресурсы"},header:{collapsed:"Условные обозначения",peopleGroupFallback:"Народная группа",default:"Легенда"},prayer:{needsPrayer:"Нуждается в молитве",hasPrayer:"Есть молитва",fullPrayerCoverage:"Полное молитвенное покрытие"},progress:{title:"Прогресс",covered:"{covered} из {total} народных групп охвачены молитвой · {pct}%",short:"{covered} из {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Нуждается в вовлечённости",hasEngagement:"Есть вовлечённость"},adoption:{needsAdoption:"Нуждается в усыновлении",hasAdoption:"Есть усыновление"},columns:{upgs:"UUPGs",population:"Население",name:"Название"},footer:{total:"Всего"},sortByUpgs:"Сортировать по UUPG",sortByPop:"Сортировать по населению",colLabel:{religion:"Религии UUPG",prayer:"Статус молитвы",engagement:"Статус вовлечённости",adoption:"Статус усыновления",status:"Статус"},titleBar:{legend:"Легенда",peopleGroups:"Народы",wagfRegions:"Регионы WAGF",languages:"Языки"},tabInfo:{upg100Region:"Регион — сортирует списки UPG-100 по частям света (Африка, Индия, Ближний Восток, Глухие, …). Числа — это UUPG и население, просуммированные по всем спискам внутри.",upg100Zone:"Списки UPG-100 — каждый представляет собой молитвенный список непросвещённых народов области и именно он отображается и раскрашивается на карте. Каждый список печатается отдельным буклетом.",upg100Group:"Народ — отдельные непросвещённые народы внутри списка, сначала с наибольшей нуждой в молитве. Каждая точка на карте — один из них."}},ah={menuComingSoon:"Меню скоро появится"},eh={clusterByRegion:"По региону Doxa",clusterByLanguageFamily:"По языковой семье",clusterByGospelResource:"По евангельскому ресурсу"},nh={country:{wagfRegion:"Регион WAGF",wagfBlock:"Блок WAGF",country:"Страна",uupgCount:"Число UUPG"}},th={header:"ТЕКУЩИЙ КРУГ МОЛИТВЫ",lap:"Круг",upgs:"UUPGs",separator:" из "},ih={"%count% people groups in %countries% countries":"%count% групп людей в %countries% странах","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"В регионе %region% — %count% групп людей в %countries% странах. Цвет каждой точки показывает, сколько человек молится за эту группу людей.","1+ People Praying":"1+ человек молится","100+ People Praying":"100+ человек молятся",Adopted:"Принято","Adoption Progress":"Прогресс принятия","All Regions":"Все регионы","Alternate Names":"Альтернативные названия","Clear All":"Очистить всё",Countries:"Страны","Countries in this region":"Страны этого региона",Country:"Страна",Engaged:"Вовлечённый","Engagement Progress":"Прогресс вовлечения","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Каждая незадействованная народность принята церковью, приверженной молитве, пожертвованиям и посылке миссионеров","Exact Search":"Точный поиск","Find unreached people groups by region and country.":"Найдите недостигнутые группы людей по регионам и странам.","Full Profile":"Полный профиль",Goal:"Цель","Hide Filters":"Скрыть фильтры",Intercessors:"Ходатаи","Load More":"Загрузить еще","Loading results...":"Загрузка результатов...","Mobilize 100+ people praying daily for each DOXA people group":"Мобилизуйте 100+ человек для ежедневной молитвы за каждую народность DOXA","No One Praying":"Никто не молится","No options found":"Вариантов не найдено","No unengaged people groups by 2033":"К 2033 году не останется незадействованных народов","Not Adopted":"Не принято",Other:"Другое","Page Not Found":"Страница не найдена","People Group":"Группа людей","People Groups":"Группы людей","People committed to praying":"Люди, посвятившие себя молитве",Population:"Население","Prayer Coverage":"Молитвенное покрытие","Prayer coverage progress":"Прогресс молитвенного покрытия",Regions:"Регионы",Religion:"Религия","Search names, country/continent, religions...":"Поиск по именам, странам/континентам, религиям...","See %region% dashboard":"Открыть панель: %region%","See All":"Смотреть все",Select:"Выбрать","Show Filters":"Показать фильтры","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Страна %country% насчитывает %count% групп людей. Проверьте также на карте группы людей, расположенные вдоль границ этой страны.",Total:"Итого","Type to search...":"Введите текст для поиска...","Unengaged people groups":"Невовлечённые группы людей","WAGF Block":"Блок WAGF","WAGF Region":"Регион WAGF","people groups adopted":"принятые группы людей","people groups engaged":"вовлечённые группы людей","View country posters":"Показать плакаты страны","Hide country posters":"Скрыть плакаты страны","No poster has been generated for this country yet.":"Для этой страны плакат ещё не создан."},oh={placeholder:"Народ, место, язык, религия",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"},sections:{within:"В пределах {selection}",allData:"Все данные DOXA"}},rh={prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна",upg100Region:"Регион",upg100Zone:"Списки UPG-100",upg100Group:"Народ"},lh={backToLegend:"返回图例",closeDetailView:"关闭详情视图",collapseLegend:"收起图例",expandLegend:"展开图例",toggleLegend:"显示或隐藏图例"},sh={prayForThem:"为他们祷告",adoptThem:"认领他们",moreInfo:"更多信息",zoomIn:"放大",zoomOut:"缩小",switchToLightMode:"切换至浅色模式",switchToDarkMode:"切换至深色模式",resetView:"重置视图",toggleFullscreen:"切换全屏",aboutThisMap:"关于此地图",closeMenu:"关闭菜单",reloadMap:"重新加载地图",showClusters:"显示聚类",clusterSettings:"聚类设置",startAutoFly:"开始自动飞行",stopFlight:"停止飞行",speedLabel:"速度:",speedOption:{slow:"慢",normal:"正常",fast:"快"},shareEmbed:"分享与嵌入",posterMap:"海报地图",prayerList:"禱告名單",cardDeck:"禱告卡組",printOptions:"列印選項",showOnMap:"在地圖上顯示",close:"關閉",showOnMapAria:"在地圖上顯示 {label}",cardStockAria:"祷告卡片尺寸",previewPrintPoster:"预览并打印 {label} 海报",share:"分享",shareSteps:["把這張地圖嵌入你的網站","列出你城市裡的網站","教他們也嵌入這張地圖","教他們去教別人嵌入","為耶穌讓地圖遍地繁增!"]},ch={labels:{country:"国家:",population:"人口:",language:"语言:",religion:"宗教:",languageFamily:"语系:",peopleCommitted:"承诺祷告人数:"},messages:{noDescription:"暂无描述。"}},gh={title:{prayer:"祷告进度",engagement:"参与进度",adoption:"认领进度",languageFamilies:"语系",doxaRegions:"Doxa 区域",affinityBlocs:"亲缘板块",gospelResources:"福音资源"},header:{collapsed:"图例",peopleGroupFallback:"民族群体",default:"圖例"},prayer:{needsPrayer:"需要祷告",hasPrayer:"已有祷告",fullPrayerCoverage:"全面祷告覆盖"},progress:{title:"进度",covered:"{total} 个民族群体中已有 {covered} 个被祷告覆盖 · {pct}%",short:"{covered} / {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"需要参与",hasEngagement:"已有参与"},adoption:{needsAdoption:"需要认领",hasAdoption:"已有认领"},columns:{upgs:"UUPGs",population:"人口",name:"名称"},footer:{total:"总计"},sortByUpgs:"按 UUPG 排序",sortByPop:"按人口排序",colLabel:{religion:"UUPG 宗教",prayer:"祷告状态",engagement:"参与状态",adoption:"认领状态",status:"状态"},titleBar:{legend:"图例",peopleGroups:"民族",wagfRegions:"WAGF 区域",languages:"语言"},tabInfo:{upg100Region:"区域 — 按世界区域排列 UPG-100 名单(非洲、印度、中东、聋人……)。数字是其下每份名单的 UUPG 与人口总和。",upg100Zone:"UPG-100 名单 — 每一份都是某地区未得之民的祷告名单,也是地图所绘制和上色的内容。每份名单印成独立的祷告册。",upg100Group:"族群 — 名单内各个未得之民群体,祷告需要最大的排在前面。地图上每个点就是其中之一。"}},uh={menuComingSoon:"菜单即将推出"},dh={clusterByRegion:"按 Doxa 区域",clusterByLanguageFamily:"按语系",clusterByGospelResource:"按福音资源"},ph={country:{wagfRegion:"WAGF 地區",wagfBlock:"WAGF 區塊",country:"國家",uupgCount:"UUPG 數量"}},mh={header:"当前祷告轮次",lap:"第",upgs:"UUPGs",separator:" / "},hh={"%count% people groups in %countries% countries":"%countries% 个国家中的 %count% 个民族","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% 在 %countries% 个国家中有 %count% 个民族。每个标记的颜色表示有多少人在为该民族祷告。","1+ People Praying":"1 人以上祷告","100+ People Praying":"100 人以上祷告",Adopted:"已认领","Adoption Progress":"认领进度","All Regions":"所有区域","Alternate Names":"其他名称","Clear All":"全部清除",Countries:"国家","Countries in this region":"本区域的国家",Country:"国家",Engaged:"已参与","Engagement Progress":"参与进度","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"每一个尚无人参与的民族,都由一间委身于祷告、奉献与差派的教会认领","Exact Search":"精确搜索","Find unreached people groups by region and country.":"按区域和国家查找未得之民。","Full Profile":"完整档案",Goal:"目标","Hide Filters":"隐藏筛选",Intercessors:"代祷者","Load More":"加载更多","Loading results...":"正在加载结果…","Mobilize 100+ people praying daily for each DOXA people group":"为每个 DOXA 民族动员 100 人以上每日祷告","No One Praying":"无人祷告","No options found":"未找到选项","No unengaged people groups by 2033":"到 2033 年不再有无人参与的民族","Not Adopted":"未认领",Other:"其他","Page Not Found":"未找到页面","People Group":"民族","People Groups":"民族","People committed to praying":"委身祷告的人数",Population:"人口","Prayer Coverage":"祷告覆盖","Prayer coverage progress":"祷告覆盖进度",Regions:"区域",Religion:"宗教","Search names, country/continent, religions...":"搜索名称、国家/大洲、宗教…","See %region% dashboard":"查看 %region% 仪表板","See All":"查看全部",Select:"选择","Show Filters":"显示筛选","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"%country% 有 %count% 个民族。也请在地图上查看该国边境地区的民族。",Total:"总计","Type to search...":"输入以搜索…","Unengaged people groups":"无人参与的民族","WAGF Block":"WAGF 板块","WAGF Region":"WAGF 区域","people groups adopted":"已认领的民族","people groups engaged":"已参与的民族","View country posters":"查看国家海报","Hide country posters":"隐藏国家海报","No poster has been generated for this country yet.":"尚未为该国家生成海报。"},yh={placeholder:"民族、地点、语言、宗教",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"},sections:{within:"在 {selection} 之內",allData:"所有 DOXA 資料"},kinds:{people:"民族 + 国家",peopleGroup:"民族",bloc:"亲缘板块",cluster:"民族群",country:"国家",region:"区域",family:"语系",languageKind:"语言",dialect:"方言",religionKind:"宗教"}},bh={prayer:"祷告",adoption:"认领",engagement:"参与","affinity-blocks":"民族",regions:"区域",countries:"国家","language-families":"语言",religion:"宗教",family:"语系",language:"语言",dialect:"方言/变体",bloc:"亲缘板块",cluster:"民族群",group:"民族",pgic:"国内民族",region:"WAGF 区域",block:"WAGF 板块",country:"国家",upg100Region:"区域",upg100Zone:"UPG-100 名单",upg100Group:"族群"};/*! + * shared v9.14.5 + * (c) 2025 kazuya kawaguchi + * Released under the MIT License. + */function _h(a,e){typeof console<"u"&&(console.warn("[intlify] "+a),e&&console.warn(e.stack))}const ji=typeof window<"u",gn=(a,e=!1)=>e?Symbol.for(a):Symbol(a),fh=(a,e,n)=>Ph({l:a,k:e,s:n}),Ph=a=>JSON.stringify(a).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Za=a=>typeof a=="number"&&isFinite(a),Ch=a=>Es(a)==="[object Date]",un=a=>Es(a)==="[object RegExp]",Gi=a=>Ga(a)&&Object.keys(a).length===0,ie=Object.assign,kh=Object.create,La=(a=null)=>kh(a);let Gs;const Qe=()=>Gs||(Gs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:La());function vs(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/=/g,"=")}function As(a){return a.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function jh(a){return a=a.replace(/(\w+)\s*=\s*"([^"]*)"/g,(t,i,o)=>`${i}="${As(o)}"`),a=a.replace(/(\w+)\s*=\s*'([^']*)'/g,(t,i,o)=>`${i}='${As(o)}'`),/\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi.test(a)&&(a=a.replace(/(\s+)(on)(\w+\s*=)/gi,"$1on$3")),[/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi].forEach(t=>{a=a.replace(t,"$1javascript:")}),a}const Gh=Object.prototype.hasOwnProperty;function Ae(a,e){return Gh.call(a,e)}const Va=Array.isArray,Ha=a=>typeof a=="function",da=a=>typeof a=="string",Ea=a=>typeof a=="boolean",Ia=a=>a!==null&&typeof a=="object",vh=a=>Ia(a)&&Ha(a.then)&&Ha(a.catch),Ss=Object.prototype.toString,Es=a=>Ss.call(a),Ga=a=>{if(!Ia(a))return!1;const e=Object.getPrototypeOf(a);return e===null||e.constructor===Object},Ah=a=>a==null?"":Va(a)||Ga(a)&&a.toString===Ss?JSON.stringify(a,null,2):String(a);function Sh(a,e=""){return a.reduce((n,t,i)=>i===0?n+t:n+e+t,"")}function vi(a){let e=a;return()=>++e}const Ai=a=>!Ia(a)||Va(a);function Si(a,e){if(Ai(a)||Ai(e))throw new Error("Invalid value");const n=[{src:a,des:e}];for(;n.length;){const{src:t,des:i}=n.pop();Object.keys(t).forEach(o=>{o!=="__proto__"&&(Ia(t[o])&&!Ia(i[o])&&(i[o]=Array.isArray(t[o])?[]:La()),Ai(i[o])||Ai(t[o])?i[o]=t[o]:n.push({src:t[o],des:i[o]}))})}}/*! + * message-compiler v9.14.5 + * (c) 2025 kazuya kawaguchi + * Released under the MIT License. + */function Eh(a,e,n){return{line:a,column:e,offset:n}}function Ei(a,e,n){return{start:a,end:e}}const $h=/\{([0-9a-zA-Z]+)\}/g;function $s(a,...e){return e.length===1&&Mh(e[0])&&(e=e[0]),(!e||!e.hasOwnProperty)&&(e={}),a.replace($h,(n,t)=>e.hasOwnProperty(t)?e[t]:"")}const Ms=Object.assign,ws=a=>typeof a=="string",Mh=a=>a!==null&&typeof a=="object";function Is(a,e=""){return a.reduce((n,t,i)=>i===0?n+t:n+e+t,"")}const Lo={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},wh={[Lo.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function Ih(a,e,...n){const t=$s(wh[a],...n||[]),i={message:String(t),code:a};return e&&(i.location=e),i}const ka={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},xh={[ka.EXPECTED_TOKEN]:"Expected token: '{0}'",[ka.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[ka.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[ka.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[ka.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[ka.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[ka.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[ka.EMPTY_PLACEHOLDER]:"Empty placeholder",[ka.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[ka.INVALID_LINKED_FORMAT]:"Invalid linked format",[ka.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[ka.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[ka.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[ka.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[ka.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[ka.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function On(a,e,n={}){const{domain:t,messages:i,args:o}=n,r=$s((i||xh)[a]||"",...o||[]),l=new SyntaxError(String(r));return l.code=a,e&&(l.location=e),l.domain=t,l}function Th(a){throw a}const an=" ",Nh="\r",ge=` +`,Lh="\u2028",Rh="\u2029";function Fh(a){const e=a;let n=0,t=1,i=1,o=0;const r=C=>e[C]===Nh&&e[C+1]===ge,l=C=>e[C]===ge,s=C=>e[C]===Rh,g=C=>e[C]===Lh,d=C=>r(C)||l(C)||s(C)||g(C),_=()=>n,v=()=>t,w=()=>i,H=()=>o,I=C=>r(C)||s(C)||g(C)?ge:e[C],M=()=>I(n),x=()=>I(n+o);function A(){return o=0,d(n)&&(t++,i=0),r(n)&&n++,n++,i++,e[n]}function $(){return r(n+o)&&o++,o++,e[n+o]}function S(){n=0,t=1,i=1,o=0}function j(C=0){o=C}function b(){const C=n+o;for(;C!==n;)A();o=0}return{index:_,line:v,column:w,peekOffset:H,charAt:I,currentChar:M,currentPeek:x,next:A,peek:$,reset:S,resetPeek:j,skipToPeek:b}}const dn=void 0,Bh=".",xs="'",Kh="tokenizer";function Oh(a,e={}){const n=e.location!==!1,t=Fh(a),i=()=>t.index(),o=()=>Eh(t.line(),t.column(),t.index()),r=o(),l=i(),s={currentType:14,offset:l,startLoc:r,endLoc:r,lastType:14,lastOffset:l,lastStartLoc:r,lastEndLoc:r,braceNest:0,inLinked:!1,text:""},g=()=>s,{onError:d}=e;function _(p,m,K,...q){const ca=g();if(m.column+=K,m.offset+=K,d){const sa=n?Ei(ca.startLoc,m):null,U=On(p,sa,{domain:Kh,args:q});d(U)}}function v(p,m,K){p.endLoc=o(),p.currentType=m;const q={type:m};return n&&(q.loc=Ei(p.startLoc,p.endLoc)),K!=null&&(q.value=K),q}const w=p=>v(p,14);function H(p,m){return p.currentChar()===m?(p.next(),m):(_(ka.EXPECTED_TOKEN,o(),0,m),"")}function I(p){let m="";for(;p.currentPeek()===an||p.currentPeek()===ge;)m+=p.currentPeek(),p.peek();return m}function M(p){const m=I(p);return p.skipToPeek(),m}function x(p){if(p===dn)return!1;const m=p.charCodeAt(0);return m>=97&&m<=122||m>=65&&m<=90||m===95}function A(p){if(p===dn)return!1;const m=p.charCodeAt(0);return m>=48&&m<=57}function $(p,m){const{currentType:K}=m;if(K!==2)return!1;I(p);const q=x(p.currentPeek());return p.resetPeek(),q}function S(p,m){const{currentType:K}=m;if(K!==2)return!1;I(p);const q=p.currentPeek()==="-"?p.peek():p.currentPeek(),ca=A(q);return p.resetPeek(),ca}function j(p,m){const{currentType:K}=m;if(K!==2)return!1;I(p);const q=p.currentPeek()===xs;return p.resetPeek(),q}function b(p,m){const{currentType:K}=m;if(K!==8)return!1;I(p);const q=p.currentPeek()===".";return p.resetPeek(),q}function C(p,m){const{currentType:K}=m;if(K!==9)return!1;I(p);const q=x(p.currentPeek());return p.resetPeek(),q}function F(p,m){const{currentType:K}=m;if(!(K===8||K===12))return!1;I(p);const q=p.currentPeek()===":";return p.resetPeek(),q}function B(p,m){const{currentType:K}=m;if(K!==10)return!1;const q=()=>{const sa=p.currentPeek();return sa==="{"?x(p.peek()):sa==="@"||sa==="%"||sa==="|"||sa===":"||sa==="."||sa===an||!sa?!1:sa===ge?(p.peek(),q()):na(p,!1)},ca=q();return p.resetPeek(),ca}function ia(p){I(p);const m=p.currentPeek()==="|";return p.resetPeek(),m}function ga(p){const m=I(p),K=p.currentPeek()==="%"&&p.peek()==="{";return p.resetPeek(),{isModulo:K,hasSpace:m.length>0}}function na(p,m=!0){const K=(ca=!1,sa="",U=!1)=>{const Q=p.currentPeek();return Q==="{"?sa==="%"?!1:ca:Q==="@"||!Q?sa==="%"?!0:ca:Q==="%"?(p.peek(),K(ca,"%",!0)):Q==="|"?sa==="%"||U?!0:!(sa===an||sa===ge):Q===an?(p.peek(),K(!0,an,U)):Q===ge?(p.peek(),K(!0,ge,U)):!0},q=K();return m&&p.resetPeek(),q}function ma(p,m){const K=p.currentChar();return K===dn?dn:m(K)?(p.next(),K):null}function Sa(p){const m=p.charCodeAt(0);return m>=97&&m<=122||m>=65&&m<=90||m>=48&&m<=57||m===95||m===36}function $a(p){return ma(p,Sa)}function ha(p){const m=p.charCodeAt(0);return m>=97&&m<=122||m>=65&&m<=90||m>=48&&m<=57||m===95||m===36||m===45}function pa(p){return ma(p,ha)}function Y(p){const m=p.charCodeAt(0);return m>=48&&m<=57}function L(p){return ma(p,Y)}function D(p){const m=p.charCodeAt(0);return m>=48&&m<=57||m>=65&&m<=70||m>=97&&m<=102}function la(p){return ma(p,D)}function X(p){let m="",K="";for(;m=L(p);)K+=m;return K}function c(p){M(p);const m=p.currentChar();return m!=="%"&&_(ka.EXPECTED_TOKEN,o(),0,m),p.next(),"%"}function f(p){let m="";for(;;){const K=p.currentChar();if(K==="{"||K==="}"||K==="@"||K==="|"||!K)break;if(K==="%")if(na(p))m+=K,p.next();else break;else if(K===an||K===ge)if(na(p))m+=K,p.next();else{if(ia(p))break;m+=K,p.next()}else m+=K,p.next()}return m}function O(p){M(p);let m="",K="";for(;m=pa(p);)K+=m;return p.currentChar()===dn&&_(ka.UNTERMINATED_CLOSING_BRACE,o(),0),K}function u(p){M(p);let m="";return p.currentChar()==="-"?(p.next(),m+=`-${X(p)}`):m+=X(p),p.currentChar()===dn&&_(ka.UNTERMINATED_CLOSING_BRACE,o(),0),m}function G(p){return p!==xs&&p!==ge}function k(p){M(p),H(p,"'");let m="",K="";for(;m=ma(p,G);)m==="\\"?K+=T(p):K+=m;const q=p.currentChar();return q===ge||q===dn?(_(ka.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,o(),0),q===ge&&(p.next(),H(p,"'")),K):(H(p,"'"),K)}function T(p){const m=p.currentChar();switch(m){case"\\":case"'":return p.next(),`\\${m}`;case"u":return R(p,m,4);case"U":return R(p,m,6);default:return _(ka.UNKNOWN_ESCAPE_SEQUENCE,o(),0,m),""}}function R(p,m,K){H(p,m);let q="";for(let ca=0;ca{const q=p.currentChar();return q==="{"||q==="%"||q==="@"||q==="|"||q==="("||q===")"||!q||q===an?K:(K+=q,p.next(),m(K))};return m("")}function N(p){M(p);const m=H(p,"|");return M(p),m}function z(p,m){let K=null;switch(p.currentChar()){case"{":return m.braceNest>=1&&_(ka.NOT_ALLOW_NEST_PLACEHOLDER,o(),0),p.next(),K=v(m,2,"{"),M(p),m.braceNest++,K;case"}":return m.braceNest>0&&m.currentType===2&&_(ka.EMPTY_PLACEHOLDER,o(),0),p.next(),K=v(m,3,"}"),m.braceNest--,m.braceNest>0&&M(p),m.inLinked&&m.braceNest===0&&(m.inLinked=!1),K;case"@":return m.braceNest>0&&_(ka.UNTERMINATED_CLOSING_BRACE,o(),0),K=V(p,m)||w(m),m.braceNest=0,K;default:{let ca=!0,sa=!0,U=!0;if(ia(p))return m.braceNest>0&&_(ka.UNTERMINATED_CLOSING_BRACE,o(),0),K=v(m,1,N(p)),m.braceNest=0,m.inLinked=!1,K;if(m.braceNest>0&&(m.currentType===5||m.currentType===6||m.currentType===7))return _(ka.UNTERMINATED_CLOSING_BRACE,o(),0),m.braceNest=0,oa(p,m);if(ca=$(p,m))return K=v(m,5,O(p)),M(p),K;if(sa=S(p,m))return K=v(m,6,u(p)),M(p),K;if(U=j(p,m))return K=v(m,7,k(p)),M(p),K;if(!ca&&!sa&&!U)return K=v(m,13,y(p)),_(ka.INVALID_TOKEN_IN_PLACEHOLDER,o(),0,K.value),M(p),K;break}}return K}function V(p,m){const{currentType:K}=m;let q=null;const ca=p.currentChar();switch((K===8||K===9||K===12||K===10)&&(ca===ge||ca===an)&&_(ka.INVALID_LINKED_FORMAT,o(),0),ca){case"@":return p.next(),q=v(m,8,"@"),m.inLinked=!0,q;case".":return M(p),p.next(),v(m,9,".");case":":return M(p),p.next(),v(m,10,":");default:return ia(p)?(q=v(m,1,N(p)),m.braceNest=0,m.inLinked=!1,q):b(p,m)||F(p,m)?(M(p),V(p,m)):C(p,m)?(M(p),v(m,12,E(p))):B(p,m)?(M(p),ca==="{"?z(p,m)||q:v(m,11,h(p))):(K===8&&_(ka.INVALID_LINKED_FORMAT,o(),0),m.braceNest=0,m.inLinked=!1,oa(p,m))}}function oa(p,m){let K={type:14};if(m.braceNest>0)return z(p,m)||w(m);if(m.inLinked)return V(p,m)||w(m);switch(p.currentChar()){case"{":return z(p,m)||w(m);case"}":return _(ka.UNBALANCED_CLOSING_BRACE,o(),0),p.next(),v(m,3,"}");case"@":return V(p,m)||w(m);default:{if(ia(p))return K=v(m,1,N(p)),m.braceNest=0,m.inLinked=!1,K;const{isModulo:ca,hasSpace:sa}=ga(p);if(ca)return sa?v(m,0,f(p)):v(m,4,c(p));if(na(p))return v(m,0,f(p));break}}return K}function ea(){const{currentType:p,offset:m,startLoc:K,endLoc:q}=s;return s.lastType=p,s.lastOffset=m,s.lastStartLoc=K,s.lastEndLoc=q,s.offset=i(),s.startLoc=o(),t.currentChar()===dn?v(s,14):oa(t,s)}return{nextToken:ea,currentOffset:i,currentPosition:o,context:g}}const Uh="parser",Dh=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function Hh(a,e,n){switch(a){case"\\\\":return"\\";case"\\'":return"'";default:{const t=parseInt(e||n,16);return t<=55295||t>=57344?String.fromCodePoint(t):"�"}}}function zh(a={}){const e=a.location!==!1,{onError:n,onWarn:t}=a;function i($,S,j,b,...C){const F=$.currentPosition();if(F.offset+=b,F.column+=b,n){const B=e?Ei(j,F):null,ia=On(S,B,{domain:Uh,args:C});n(ia)}}function o($,S,j,b,...C){const F=$.currentPosition();if(F.offset+=b,F.column+=b,t){const B=e?Ei(j,F):null;t(Ih(S,B,C))}}function r($,S,j){const b={type:$};return e&&(b.start=S,b.end=S,b.loc={start:j,end:j}),b}function l($,S,j,b){e&&($.end=S,$.loc&&($.loc.end=j))}function s($,S){const j=$.context(),b=r(3,j.offset,j.startLoc);return b.value=S,l(b,$.currentOffset(),$.currentPosition()),b}function g($,S){const j=$.context(),{lastOffset:b,lastStartLoc:C}=j,F=r(5,b,C);return F.index=parseInt(S,10),$.nextToken(),l(F,$.currentOffset(),$.currentPosition()),F}function d($,S,j){const b=$.context(),{lastOffset:C,lastStartLoc:F}=b,B=r(4,C,F);return B.key=S,j===!0&&(B.modulo=!0),$.nextToken(),l(B,$.currentOffset(),$.currentPosition()),B}function _($,S){const j=$.context(),{lastOffset:b,lastStartLoc:C}=j,F=r(9,b,C);return F.value=S.replace(Dh,Hh),$.nextToken(),l(F,$.currentOffset(),$.currentPosition()),F}function v($){const S=$.nextToken(),j=$.context(),{lastOffset:b,lastStartLoc:C}=j,F=r(8,b,C);return S.type!==12?(i($,ka.UNEXPECTED_EMPTY_LINKED_MODIFIER,j.lastStartLoc,0),F.value="",l(F,b,C),{nextConsumeToken:S,node:F}):(S.value==null&&i($,ka.UNEXPECTED_LEXICAL_ANALYSIS,j.lastStartLoc,0,Se(S)),F.value=S.value||"",l(F,$.currentOffset(),$.currentPosition()),{node:F})}function w($,S){const j=$.context(),b=r(7,j.offset,j.startLoc);return b.value=S,l(b,$.currentOffset(),$.currentPosition()),b}function H($){const S=$.context(),j=r(6,S.offset,S.startLoc);let b=$.nextToken();if(b.type===9){const C=v($);j.modifier=C.node,b=C.nextConsumeToken||$.nextToken()}switch(b.type!==10&&i($,ka.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Se(b)),b=$.nextToken(),b.type===2&&(b=$.nextToken()),b.type){case 11:b.value==null&&i($,ka.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Se(b)),j.key=w($,b.value||"");break;case 5:b.value==null&&i($,ka.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Se(b)),j.key=d($,b.value||"");break;case 6:b.value==null&&i($,ka.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Se(b)),j.key=g($,b.value||"");break;case 7:b.value==null&&i($,ka.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Se(b)),j.key=_($,b.value||"");break;default:{i($,ka.UNEXPECTED_EMPTY_LINKED_KEY,S.lastStartLoc,0);const C=$.context(),F=r(7,C.offset,C.startLoc);return F.value="",l(F,C.offset,C.startLoc),j.key=F,l(j,C.offset,C.startLoc),{nextConsumeToken:b,node:j}}}return l(j,$.currentOffset(),$.currentPosition()),{node:j}}function I($){const S=$.context(),j=S.currentType===1?$.currentOffset():S.offset,b=S.currentType===1?S.endLoc:S.startLoc,C=r(2,j,b);C.items=[];let F=null,B=null;do{const na=F||$.nextToken();switch(F=null,na.type){case 0:na.value==null&&i($,ka.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Se(na)),C.items.push(s($,na.value||""));break;case 6:na.value==null&&i($,ka.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Se(na)),C.items.push(g($,na.value||""));break;case 4:B=!0;break;case 5:na.value==null&&i($,ka.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Se(na)),C.items.push(d($,na.value||"",!!B)),B&&(o($,Lo.USE_MODULO_SYNTAX,S.lastStartLoc,0,Se(na)),B=null);break;case 7:na.value==null&&i($,ka.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Se(na)),C.items.push(_($,na.value||""));break;case 8:{const ma=H($);C.items.push(ma.node),F=ma.nextConsumeToken||null;break}}}while(S.currentType!==14&&S.currentType!==1);const ia=S.currentType===1?S.lastOffset:$.currentOffset(),ga=S.currentType===1?S.lastEndLoc:$.currentPosition();return l(C,ia,ga),C}function M($,S,j,b){const C=$.context();let F=b.items.length===0;const B=r(1,S,j);B.cases=[],B.cases.push(b);do{const ia=I($);F||(F=ia.items.length===0),B.cases.push(ia)}while(C.currentType!==14);return F&&i($,ka.MUST_HAVE_MESSAGES_IN_PLURAL,j,0),l(B,$.currentOffset(),$.currentPosition()),B}function x($){const S=$.context(),{offset:j,startLoc:b}=S,C=I($);return S.currentType===14?C:M($,j,b,C)}function A($){const S=Oh($,Ms({},a)),j=S.context(),b=r(0,j.offset,j.startLoc);return e&&b.loc&&(b.loc.source=$),b.body=x(S),a.onCacheKey&&(b.cacheKey=a.onCacheKey($)),j.currentType!==14&&i(S,ka.UNEXPECTED_LEXICAL_ANALYSIS,j.lastStartLoc,0,$[j.offset]||""),l(b,S.currentOffset(),S.currentPosition()),b}return{parse:A}}function Se(a){if(a.type===14)return"EOF";const e=(a.value||"").replace(/\r?\n/gu,"\\n");return e.length>10?e.slice(0,9)+"…":e}function Vh(a,e={}){const n={ast:a,helpers:new Set};return{context:()=>n,helper:o=>(n.helpers.add(o),o)}}function Ts(a,e){for(let n=0;nNs(n)),a}function Ns(a){if(a.items.length===1){const e=a.items[0];(e.type===3||e.type===9)&&(a.static=e.value,delete e.value)}else{const e=[];for(let n=0;nr;function s(I,M){r.code+=I}function g(I,M=!0){const x=M?t:"";s(i?x+" ".repeat(I):x)}function d(I=!0){const M=++r.indentLevel;I&&g(M)}function _(I=!0){const M=--r.indentLevel;I&&g(M)}function v(){g(r.indentLevel)}return{context:l,push:s,indent:d,deindent:_,newline:v,helper:I=>`_${I}`,needIndent:()=>r.needIndent}}function Xh(a,e){const{helper:n}=a;a.push(`${n("linked")}(`),Dn(a,e.key),e.modifier?(a.push(", "),Dn(a,e.modifier),a.push(", _type")):a.push(", undefined, _type"),a.push(")")}function Qh(a,e){const{helper:n,needIndent:t}=a;a.push(`${n("normalize")}([`),a.indent(t());const i=e.items.length;for(let o=0;o1){a.push(`${n("plural")}([`),a.indent(t());const i=e.cases.length;for(let o=0;o{const n=ws(e.mode)?e.mode:"normal",t=ws(e.filename)?e.filename:"message.intl";e.sourceMap;const i=e.breakLineCode!=null?e.breakLineCode:n==="arrow"?";":` +`,o=e.needIndent?e.needIndent:n!=="arrow",r=a.helpers||[],l=qh(a,{filename:t,breakLineCode:i,needIndent:o});l.push(n==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(o),r.length>0&&(l.push(`const { ${Is(r.map(d=>`${d}: _${d}`),", ")} } = ctx`),l.newline()),l.push("return "),Dn(l,a),l.deindent(o),l.push("}"),delete a.helpers;const{code:s,map:g}=l.context();return{ast:a,code:s,map:g?g.toJSON():void 0}};function t0(a,e={}){const n=Ms({},e),t=!!n.jit,i=!!n.minify,o=n.optimize==null?!0:n.optimize,l=zh(n).parse(a);return t?(o&&Yh(l),i&&Un(l),{ast:l,code:""}):(Wh(l,n),n0(l,n))}/*! + * core-base v9.14.5 + * (c) 2025 kazuya kawaguchi + * Released under the MIT License. + */function i0(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Qe().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Qe().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Qe().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Fe(a){return Ia(a)&&Fo(a)===0&&(Ae(a,"b")||Ae(a,"body"))}const Ls=["b","body"];function o0(a){return pn(a,Ls)}const Rs=["c","cases"];function r0(a){return pn(a,Rs,[])}const Fs=["s","static"];function l0(a){return pn(a,Fs)}const Bs=["i","items"];function s0(a){return pn(a,Bs,[])}const Ks=["t","type"];function Fo(a){return pn(a,Ks)}const Os=["v","value"];function $i(a,e){const n=pn(a,Os);if(n!=null)return n;throw Gt(e)}const Us=["m","modifier"];function c0(a){return pn(a,Us)}const Ds=["k","key"];function g0(a){const e=pn(a,Ds);if(e)return e;throw Gt(6)}function pn(a,e,n){for(let t=0;t{r===void 0?r=l:r+=l},v[1]=()=>{r!==void 0&&(e.push(r),r=void 0)},v[2]=()=>{v[0](),i++},v[3]=()=>{if(i>0)i--,t=4,v[0]();else{if(i=0,r===void 0||(r=h0(r),r===!1))return!1;v[1]()}};function w(){const H=a[n+1];if(t===5&&H==="'"||t===6&&H==='"')return n++,l="\\"+H,v[0](),!0}for(;t!==null;)if(n++,o=a[n],!(o==="\\"&&w())){if(s=m0(o),_=mn[t],g=_[s]||_.l||8,g===8||(t=g[0],g[1]!==void 0&&(d=v[g[1]],d&&(l=o,d()===!1))))return;if(t===7)return e}}const zs=new Map;function b0(a,e){return Ia(a)?a[e]:null}function _0(a,e){if(!Ia(a))return null;let n=zs.get(e);if(n||(n=y0(e),n&&zs.set(e,n)),!n)return null;const t=n.length;let i=a,o=0;for(;oa,P0=a=>"",C0="text",k0=a=>a.length===0?"":Sh(a),j0=Ah;function Vs(a,e){return a=Math.abs(a),e===2?a?a>1?1:0:1:a?Math.min(a,2):0}function G0(a){const e=Za(a.pluralIndex)?a.pluralIndex:-1;return a.named&&(Za(a.named.count)||Za(a.named.n))?Za(a.named.count)?a.named.count:Za(a.named.n)?a.named.n:e:e}function v0(a,e){e.count||(e.count=a),e.n||(e.n=a)}function A0(a={}){const e=a.locale,n=G0(a),t=Ia(a.pluralRules)&&da(e)&&Ha(a.pluralRules[e])?a.pluralRules[e]:Vs,i=Ia(a.pluralRules)&&da(e)&&Ha(a.pluralRules[e])?Vs:void 0,o=x=>x[t(n,x.length,i)],r=a.list||[],l=x=>r[x],s=a.named||La();Za(a.pluralIndex)&&v0(n,s);const g=x=>s[x];function d(x){const A=Ha(a.messages)?a.messages(x):Ia(a.messages)?a.messages[x]:!1;return A||(a.parent?a.parent.message(x):P0)}const _=x=>a.modifiers?a.modifiers[x]:f0,v=Ga(a.processor)&&Ha(a.processor.normalize)?a.processor.normalize:k0,w=Ga(a.processor)&&Ha(a.processor.interpolate)?a.processor.interpolate:j0,H=Ga(a.processor)&&da(a.processor.type)?a.processor.type:C0,M={list:l,named:g,plural:o,linked:(x,...A)=>{const[$,S]=A;let j="text",b="";A.length===1?Ia($)?(b=$.modifier||b,j=$.type||j):da($)&&(b=$||b):A.length===2&&(da($)&&(b=$||b),da(S)&&(j=S||j));const C=d(x)(M),F=j==="vnode"&&Va(C)&&b?C[0]:C;return b?_(b)(F,j):F},message:d,type:H,interpolate:w,normalize:v,values:ie(La(),r,s)};return M}let vt=null;function S0(a){vt=a}function E0(a,e,n){vt&&vt.emit("i18n:init",{timestamp:Date.now(),i18n:a,version:e,meta:n})}const $0=M0("function:translate");function M0(a){return e=>vt&&vt.emit(a,e)}const w0=Lo.__EXTEND_POINT__,Gn=vi(w0),I0={FALLBACK_TO_TRANSLATE:Gn(),CANNOT_FORMAT_NUMBER:Gn(),FALLBACK_TO_NUMBER_FORMAT:Gn(),CANNOT_FORMAT_DATE:Gn(),FALLBACK_TO_DATE_FORMAT:Gn(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:Gn(),__EXTEND_POINT__:Gn()},Ws=ka.__EXTEND_POINT__,vn=vi(Ws),Ee={INVALID_ARGUMENT:Ws,INVALID_DATE_ARGUMENT:vn(),INVALID_ISO_DATE_ARGUMENT:vn(),NOT_SUPPORT_NON_STRING_MESSAGE:vn(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:vn(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:vn(),NOT_SUPPORT_LOCALE_TYPE:vn(),__EXTEND_POINT__:vn()};function Be(a){return On(a,null,void 0)}function Bo(a,e){return e.locale!=null?Ys(e.locale):Ys(a.locale)}let Ko;function Ys(a){if(da(a))return a;if(Ha(a)){if(a.resolvedOnce&&Ko!=null)return Ko;if(a.constructor.name==="Function"){const e=a();if(vh(e))throw Be(Ee.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Ko=e}else throw Be(Ee.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Be(Ee.NOT_SUPPORT_LOCALE_TYPE)}function x0(a,e,n){return[...new Set([n,...Va(e)?e:Ia(e)?Object.keys(e):da(e)?[e]:[n]])]}function Js(a,e,n){const t=da(n)?n:Hn,i=a;i.__localeChainCache||(i.__localeChainCache=new Map);let o=i.__localeChainCache.get(t);if(!o){o=[];let r=[n];for(;Va(r);)r=Zs(o,r,e);const l=Va(e)||!Ga(e)?e:e.default?e.default:null;r=da(l)?[l]:l,Va(r)&&Zs(o,r,!1),i.__localeChainCache.set(t,o)}return o}function Zs(a,e,n){let t=!0;for(let i=0;i`${a.charAt(0).toLocaleUpperCase()}${a.substr(1)}`;function R0(){return{upper:(a,e)=>e==="text"&&da(a)?a.toUpperCase():e==="vnode"&&Ia(a)&&"__v_isVNode"in a?a.children.toUpperCase():a,lower:(a,e)=>e==="text"&&da(a)?a.toLowerCase():e==="vnode"&&Ia(a)&&"__v_isVNode"in a?a.children.toLowerCase():a,capitalize:(a,e)=>e==="text"&&da(a)?Xs(a):e==="vnode"&&Ia(a)&&"__v_isVNode"in a?Xs(a.children):a}}let Qs;function ac(a){Qs=a}let ec;function F0(a){ec=a}let nc;function B0(a){nc=a}let tc=null;const K0=a=>{tc=a},O0=()=>tc;let ic=null;const oc=a=>{ic=a},U0=()=>ic;let rc=0;function D0(a={}){const e=Ha(a.onWarn)?a.onWarn:_h,n=da(a.version)?a.version:L0,t=da(a.locale)||Ha(a.locale)?a.locale:Hn,i=Ha(t)?Hn:t,o=Va(a.fallbackLocale)||Ga(a.fallbackLocale)||da(a.fallbackLocale)||a.fallbackLocale===!1?a.fallbackLocale:i,r=Ga(a.messages)?a.messages:Oo(i),l=Ga(a.datetimeFormats)?a.datetimeFormats:Oo(i),s=Ga(a.numberFormats)?a.numberFormats:Oo(i),g=ie(La(),a.modifiers,R0()),d=a.pluralRules||La(),_=Ha(a.missing)?a.missing:null,v=Ea(a.missingWarn)||un(a.missingWarn)?a.missingWarn:!0,w=Ea(a.fallbackWarn)||un(a.fallbackWarn)?a.fallbackWarn:!0,H=!!a.fallbackFormat,I=!!a.unresolving,M=Ha(a.postTranslation)?a.postTranslation:null,x=Ga(a.processor)?a.processor:null,A=Ea(a.warnHtmlMessage)?a.warnHtmlMessage:!0,$=!!a.escapeParameter,S=Ha(a.messageCompiler)?a.messageCompiler:Qs,j=Ha(a.messageResolver)?a.messageResolver:ec||b0,b=Ha(a.localeFallbacker)?a.localeFallbacker:nc||x0,C=Ia(a.fallbackContext)?a.fallbackContext:void 0,F=a,B=Ia(F.__datetimeFormatters)?F.__datetimeFormatters:new Map,ia=Ia(F.__numberFormatters)?F.__numberFormatters:new Map,ga=Ia(F.__meta)?F.__meta:{};rc++;const na={version:n,cid:rc,locale:t,fallbackLocale:o,messages:r,modifiers:g,pluralRules:d,missing:_,missingWarn:v,fallbackWarn:w,fallbackFormat:H,unresolving:I,postTranslation:M,processor:x,warnHtmlMessage:A,escapeParameter:$,messageCompiler:S,messageResolver:j,localeFallbacker:b,fallbackContext:C,onWarn:e,__meta:ga};return na.datetimeFormats=l,na.numberFormats=s,na.__datetimeFormatters=B,na.__numberFormatters=ia,__INTLIFY_PROD_DEVTOOLS__&&E0(na,n,ga),na}const Oo=a=>({[a]:La()});function Uo(a,e,n,t,i){const{missing:o,onWarn:r}=a;if(o!==null){const l=o(a,n,e,i);return da(l)?l:e}else return e}function At(a,e,n){const t=a;t.__localeChainCache=new Map,a.localeFallbacker(a,n,e)}function H0(a,e){return a===e?!1:a.split("-")[0]===e.split("-")[0]}function z0(a,e){const n=e.indexOf(a);if(n===-1)return!1;for(let t=n+1;tV0(n,a)}function V0(a,e){const n=o0(e);if(n==null)throw Gt(0);if(Fo(n)===1){const o=r0(n);return a.plural(o.reduce((r,l)=>[...r,lc(a,l)],[]))}else return lc(a,n)}function lc(a,e){const n=l0(e);if(n!=null)return a.type==="text"?n:a.normalize([n]);{const t=s0(e).reduce((i,o)=>[...i,Ho(a,o)],[]);return a.normalize(t)}}function Ho(a,e){const n=Fo(e);switch(n){case 3:return $i(e,n);case 9:return $i(e,n);case 4:{const t=e;if(Ae(t,"k")&&t.k)return a.interpolate(a.named(t.k));if(Ae(t,"key")&&t.key)return a.interpolate(a.named(t.key));throw Gt(n)}case 5:{const t=e;if(Ae(t,"i")&&Za(t.i))return a.interpolate(a.list(t.i));if(Ae(t,"index")&&Za(t.index))return a.interpolate(a.list(t.index));throw Gt(n)}case 6:{const t=e,i=c0(t),o=g0(t);return a.linked(Ho(a,o),i?Ho(a,i):void 0,a.type)}case 7:return $i(e,n);case 8:return $i(e,n);default:throw new Error(`unhandled node on format message part: ${n}`)}}const sc=a=>a;let zn=La();function cc(a,e={}){let n=!1;const t=e.onError||Th;return e.onError=i=>{n=!0,t(i)},{...t0(a,e),detectError:n}}const W0=(a,e)=>{if(!da(a))throw Be(Ee.NOT_SUPPORT_NON_STRING_MESSAGE);{Ea(e.warnHtmlMessage)&&e.warnHtmlMessage;const t=(e.onCacheKey||sc)(a),i=zn[t];if(i)return i;const{code:o,detectError:r}=cc(a,e),l=new Function(`return ${o}`)();return r?l:zn[t]=l}};function Y0(a,e){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&da(a)){Ea(e.warnHtmlMessage)&&e.warnHtmlMessage;const t=(e.onCacheKey||sc)(a),i=zn[t];if(i)return i;const{ast:o,detectError:r}=cc(a,{...e,location:!1,jit:!0}),l=Do(o);return r?l:zn[t]=l}else{const n=a.cacheKey;if(n){const t=zn[n];return t||(zn[n]=Do(a))}else return Do(a)}}const gc=()=>"",Pe=a=>Ha(a);function uc(a,...e){const{fallbackFormat:n,postTranslation:t,unresolving:i,messageCompiler:o,fallbackLocale:r,messages:l}=a,[s,g]=zo(...e),d=Ea(g.missingWarn)?g.missingWarn:a.missingWarn,_=Ea(g.fallbackWarn)?g.fallbackWarn:a.fallbackWarn,v=Ea(g.escapeParameter)?g.escapeParameter:a.escapeParameter,w=!!g.resolvedMessage,H=da(g.default)||Ea(g.default)?Ea(g.default)?o?s:()=>s:g.default:n?o?s:()=>s:"",I=n||H!=="",M=Bo(a,g);v&&J0(g);let[x,A,$]=w?[s,M,l[M]||La()]:dc(a,s,M,r,_,d),S=x,j=s;if(!w&&!(da(S)||Fe(S)||Pe(S))&&I&&(S=H,j=S),!w&&(!(da(S)||Fe(S)||Pe(S))||!da(A)))return i?Mi:s;let b=!1;const C=()=>{b=!0},F=Pe(S)?S:pc(a,s,A,S,j,C);if(b)return S;const B=X0(a,A,$,g),ia=A0(B),ga=Z0(a,F,ia);let na=t?t(ga,s):ga;if(v&&da(na)&&(na=jh(na)),__INTLIFY_PROD_DEVTOOLS__){const ma={timestamp:Date.now(),key:da(s)?s:Pe(S)?S.key:"",locale:A||(Pe(S)?S.locale:""),format:da(S)?S:Pe(S)?S.source:"",message:na};ma.meta=ie({},a.__meta,O0()||{}),$0(ma)}return na}function J0(a){Va(a.list)?a.list=a.list.map(e=>da(e)?vs(e):e):Ia(a.named)&&Object.keys(a.named).forEach(e=>{da(a.named[e])&&(a.named[e]=vs(a.named[e]))})}function dc(a,e,n,t,i,o){const{messages:r,onWarn:l,messageResolver:s,localeFallbacker:g}=a,d=g(a,t,n);let _=La(),v,w=null;const H="translate";for(let I=0;It;return g.locale=n,g.key=e,g}const s=r(t,q0(a,n,i,t,l,o));return s.locale=n,s.key=e,s.source=t,s}function Z0(a,e,n){return e(n)}function zo(...a){const[e,n,t]=a,i=La();if(!da(e)&&!Za(e)&&!Pe(e)&&!Fe(e))throw Be(Ee.INVALID_ARGUMENT);const o=Za(e)?String(e):(Pe(e),e);return Za(n)?i.plural=n:da(n)?i.default=n:Ga(n)&&!Gi(n)?i.named=n:Va(n)&&(i.list=n),Za(t)?i.plural=t:da(t)?i.default=t:Ga(t)&&ie(i,t),[o,i]}function q0(a,e,n,t,i,o){return{locale:e,key:n,warnHtmlMessage:i,onError:r=>{throw o&&o(r),r},onCacheKey:r=>fh(e,n,r)}}function X0(a,e,n,t){const{modifiers:i,pluralRules:o,messageResolver:r,fallbackLocale:l,fallbackWarn:s,missingWarn:g,fallbackContext:d}=a,v={locale:e,modifiers:i,pluralRules:o,messages:w=>{let H=r(n,w);if(H==null&&d){const[,,I]=dc(d,w,e,l,s,g);H=r(I,w)}if(da(H)||Fe(H)){let I=!1;const x=pc(a,w,e,H,w,()=>{I=!0});return I?gc:x}else return Pe(H)?H:gc}};return a.processor&&(v.processor=a.processor),t.list&&(v.list=t.list),t.named&&(v.named=t.named),Za(t.plural)&&(v.pluralIndex=t.plural),v}function mc(a,...e){const{datetimeFormats:n,unresolving:t,fallbackLocale:i,onWarn:o,localeFallbacker:r}=a,{__datetimeFormatters:l}=a,[s,g,d,_]=Vo(...e),v=Ea(d.missingWarn)?d.missingWarn:a.missingWarn;Ea(d.fallbackWarn)?d.fallbackWarn:a.fallbackWarn;const w=!!d.part,H=Bo(a,d),I=r(a,i,H);if(!da(s)||s==="")return new Intl.DateTimeFormat(H,_).format(g);let M={},x,A=null;const $="datetime format";for(let b=0;b{hc.includes(s)?r[s]=n[s]:o[s]=n[s]}),da(t)?o.locale=t:Ga(t)&&(r=t),Ga(i)&&(r=i),[o.key||"",l,o,r]}function yc(a,e,n){const t=a;for(const i in n){const o=`${e}__${i}`;t.__datetimeFormatters.has(o)&&t.__datetimeFormatters.delete(o)}}function bc(a,...e){const{numberFormats:n,unresolving:t,fallbackLocale:i,onWarn:o,localeFallbacker:r}=a,{__numberFormatters:l}=a,[s,g,d,_]=Wo(...e),v=Ea(d.missingWarn)?d.missingWarn:a.missingWarn;Ea(d.fallbackWarn)?d.fallbackWarn:a.fallbackWarn;const w=!!d.part,H=Bo(a,d),I=r(a,i,H);if(!da(s)||s==="")return new Intl.NumberFormat(H,_).format(g);let M={},x,A=null;const $="number format";for(let b=0;b{_c.includes(s)?r[s]=n[s]:o[s]=n[s]}),da(t)?o.locale=t:Ga(t)&&(r=t),Ga(i)&&(r=i),[o.key||"",l,o,r]}function fc(a,e,n){const t=a;for(const i in n){const o=`${e}__${i}`;t.__numberFormatters.has(o)&&t.__numberFormatters.delete(o)}}i0();/*! + * vue-i18n v9.14.5 + * (c) 2025 kazuya kawaguchi + * Released under the MIT License. + */const Q0="9.14.5";function ay(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(Qe().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(Qe().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Qe().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Qe().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Qe().__INTLIFY_PROD_DEVTOOLS__=!1)}const ey=I0.__EXTEND_POINT__,en=vi(ey);en(),en(),en(),en(),en(),en(),en(),en(),en();const Pc=Ee.__EXTEND_POINT__,pe=vi(Pc),Qa={UNEXPECTED_RETURN_TYPE:Pc,INVALID_ARGUMENT:pe(),MUST_BE_CALL_SETUP_TOP:pe(),NOT_INSTALLED:pe(),NOT_AVAILABLE_IN_LEGACY_MODE:pe(),REQUIRED_VALUE:pe(),INVALID_VALUE:pe(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:pe(),NOT_INSTALLED_WITH_PROVIDE:pe(),UNEXPECTED_ERROR:pe(),NOT_COMPATIBLE_LEGACY_VUE_I18N:pe(),BRIDGE_SUPPORT_VUE_2_ONLY:pe(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:pe(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:pe(),__EXTEND_POINT__:pe()};function ne(a,...e){return On(a,null,void 0)}const Yo=gn("__translateVNode"),Jo=gn("__datetimeParts"),Zo=gn("__numberParts"),Cc=gn("__setPluralRules"),kc=gn("__injectWithOption"),qo=gn("__dispose");function St(a){if(!Ia(a)||Fe(a))return a;for(const e in a)if(Ae(a,e))if(!e.includes("."))Ia(a[e])&&St(a[e]);else{const n=e.split("."),t=n.length-1;let i=a,o=!1;for(let r=0;r{if("locale"in l&&"resource"in l){const{locale:s,resource:g}=l;s?(r[s]=r[s]||La(),Si(g,r[s])):Si(g,r)}else da(l)&&Si(JSON.parse(l),r)}),i==null&&o)for(const l in r)Ae(r,l)&&St(r[l]);return r}function jc(a){return a.type}function Gc(a,e,n){let t=Ia(e.messages)?e.messages:La();"__i18nGlobal"in n&&(t=wi(a.locale.value,{messages:t,__i18n:n.__i18nGlobal}));const i=Object.keys(t);i.length&&i.forEach(o=>{a.mergeLocaleMessage(o,t[o])});{if(Ia(e.datetimeFormats)){const o=Object.keys(e.datetimeFormats);o.length&&o.forEach(r=>{a.mergeDateTimeFormat(r,e.datetimeFormats[r])})}if(Ia(e.numberFormats)){const o=Object.keys(e.numberFormats);o.length&&o.forEach(r=>{a.mergeNumberFormat(r,e.numberFormats[r])})}}}function vc(a){return Ya(yt,null,a,0)}const Ac="__INTLIFY_META__",Sc=()=>[],ny=()=>!1;let Ec=0;function $c(a){return(e,n,t,i)=>a(n,t,Ze()||void 0,i)}const ty=()=>{const a=Ze();let e=null;return a&&(e=jc(a)[Ac])?{[Ac]:e}:null};function Xo(a={},e){const{__root:n,__injectWithOption:t}=a,i=n===void 0,o=a.flatJson,r=ji?ua:go,l=!!a.translateExistCompatible;let s=Ea(a.inheritLocale)?a.inheritLocale:!0;const g=r(n&&s?n.locale.value:da(a.locale)?a.locale:Hn),d=r(n&&s?n.fallbackLocale.value:da(a.fallbackLocale)||Va(a.fallbackLocale)||Ga(a.fallbackLocale)||a.fallbackLocale===!1?a.fallbackLocale:g.value),_=r(wi(g.value,a)),v=r(Ga(a.datetimeFormats)?a.datetimeFormats:{[g.value]:{}}),w=r(Ga(a.numberFormats)?a.numberFormats:{[g.value]:{}});let H=n?n.missingWarn:Ea(a.missingWarn)||un(a.missingWarn)?a.missingWarn:!0,I=n?n.fallbackWarn:Ea(a.fallbackWarn)||un(a.fallbackWarn)?a.fallbackWarn:!0,M=n?n.fallbackRoot:Ea(a.fallbackRoot)?a.fallbackRoot:!0,x=!!a.fallbackFormat,A=Ha(a.missing)?a.missing:null,$=Ha(a.missing)?$c(a.missing):null,S=Ha(a.postTranslation)?a.postTranslation:null,j=n?n.warnHtmlMessage:Ea(a.warnHtmlMessage)?a.warnHtmlMessage:!0,b=!!a.escapeParameter;const C=n?n.modifiers:Ga(a.modifiers)?a.modifiers:{};let F=a.pluralRules||n&&n.pluralRules,B;B=(()=>{i&&oc(null);const U={version:Q0,locale:g.value,fallbackLocale:d.value,messages:_.value,modifiers:C,pluralRules:F,missing:$===null?void 0:$,missingWarn:H,fallbackWarn:I,fallbackFormat:x,unresolving:!0,postTranslation:S===null?void 0:S,warnHtmlMessage:j,escapeParameter:b,messageResolver:a.messageResolver,messageCompiler:a.messageCompiler,__meta:{framework:"vue"}};U.datetimeFormats=v.value,U.numberFormats=w.value,U.__datetimeFormatters=Ga(B)?B.__datetimeFormatters:void 0,U.__numberFormatters=Ga(B)?B.__numberFormatters:void 0;const Q=D0(U);return i&&oc(Q),Q})(),At(B,g.value,d.value);function ga(){return[g.value,d.value,_.value,v.value,w.value]}const na=ra({get:()=>g.value,set:U=>{g.value=U,B.locale=g.value}}),ma=ra({get:()=>d.value,set:U=>{d.value=U,B.fallbackLocale=d.value,At(B,g.value,U)}}),Sa=ra(()=>_.value),$a=ra(()=>v.value),ha=ra(()=>w.value);function pa(){return Ha(S)?S:null}function Y(U){S=U,B.postTranslation=U}function L(){return A}function D(U){U!==null&&($=$c(U)),A=U,B.missing=$}const la=(U,Q,_a,va,Ra,ae)=>{ga();let qa;try{__INTLIFY_PROD_DEVTOOLS__,i||(B.fallbackContext=n?U0():void 0),qa=U(B)}finally{__INTLIFY_PROD_DEVTOOLS__,i||(B.fallbackContext=void 0)}if(_a!=="translate exists"&&Za(qa)&&qa===Mi||_a==="translate exists"&&!qa){const[Pa,Fa]=Q();return n&&M?va(n):Ra(Pa)}else{if(ae(qa))return qa;throw ne(Qa.UNEXPECTED_RETURN_TYPE)}};function X(...U){return la(Q=>Reflect.apply(uc,null,[Q,...U]),()=>zo(...U),"translate",Q=>Reflect.apply(Q.t,Q,[...U]),Q=>Q,Q=>da(Q))}function c(...U){const[Q,_a,va]=U;if(va&&!Ia(va))throw ne(Qa.INVALID_ARGUMENT);return X(Q,_a,ie({resolvedMessage:!0},va||{}))}function f(...U){return la(Q=>Reflect.apply(mc,null,[Q,...U]),()=>Vo(...U),"datetime format",Q=>Reflect.apply(Q.d,Q,[...U]),()=>qs,Q=>da(Q))}function O(...U){return la(Q=>Reflect.apply(bc,null,[Q,...U]),()=>Wo(...U),"number format",Q=>Reflect.apply(Q.n,Q,[...U]),()=>qs,Q=>da(Q))}function u(U){return U.map(Q=>da(Q)||Za(Q)||Ea(Q)?vc(String(Q)):Q)}const k={normalize:u,interpolate:U=>U,type:"vnode"};function T(...U){return la(Q=>{let _a;const va=Q;try{va.processor=k,_a=Reflect.apply(uc,null,[va,...U])}finally{va.processor=null}return _a},()=>zo(...U),"translate",Q=>Q[Yo](...U),Q=>[vc(Q)],Q=>Va(Q))}function R(...U){return la(Q=>Reflect.apply(bc,null,[Q,...U]),()=>Wo(...U),"number format",Q=>Q[Zo](...U),Sc,Q=>da(Q)||Va(Q))}function J(...U){return la(Q=>Reflect.apply(mc,null,[Q,...U]),()=>Vo(...U),"datetime format",Q=>Q[Jo](...U),Sc,Q=>da(Q)||Va(Q))}function y(U){F=U,B.pluralRules=F}function E(U,Q){return la(()=>{if(!U)return!1;const _a=da(Q)?Q:g.value,va=z(_a),Ra=B.messageResolver(va,U);return l?Ra!=null:Fe(Ra)||Pe(Ra)||da(Ra)},()=>[U],"translate exists",_a=>Reflect.apply(_a.te,_a,[U,Q]),ny,_a=>Ea(_a))}function h(U){let Q=null;const _a=Js(B,d.value,g.value);for(let va=0;va<_a.length;va++){const Ra=_.value[_a[va]]||{},ae=B.messageResolver(Ra,U);if(ae!=null){Q=ae;break}}return Q}function N(U){const Q=h(U);return Q??(n?n.tm(U)||{}:{})}function z(U){return _.value[U]||{}}function V(U,Q){if(o){const _a={[U]:Q};for(const va in _a)Ae(_a,va)&&St(_a[va]);Q=_a[U]}_.value[U]=Q,B.messages=_.value}function oa(U,Q){_.value[U]=_.value[U]||{};const _a={[U]:Q};if(o)for(const va in _a)Ae(_a,va)&&St(_a[va]);Q=_a[U],Si(Q,_.value[U]),B.messages=_.value}function ea(U){return v.value[U]||{}}function p(U,Q){v.value[U]=Q,B.datetimeFormats=v.value,yc(B,U,Q)}function m(U,Q){v.value[U]=ie(v.value[U]||{},Q),B.datetimeFormats=v.value,yc(B,U,Q)}function K(U){return w.value[U]||{}}function q(U,Q){w.value[U]=Q,B.numberFormats=w.value,fc(B,U,Q)}function ca(U,Q){w.value[U]=ie(w.value[U]||{},Q),B.numberFormats=w.value,fc(B,U,Q)}Ec++,n&&ji&&(re(n.locale,U=>{s&&(g.value=U,B.locale=U,At(B,g.value,d.value))}),re(n.fallbackLocale,U=>{s&&(d.value=U,B.fallbackLocale=U,At(B,g.value,d.value))}));const sa={id:Ec,locale:na,fallbackLocale:ma,get inheritLocale(){return s},set inheritLocale(U){s=U,U&&n&&(g.value=n.locale.value,d.value=n.fallbackLocale.value,At(B,g.value,d.value))},get availableLocales(){return Object.keys(_.value).sort()},messages:Sa,get modifiers(){return C},get pluralRules(){return F||{}},get isGlobal(){return i},get missingWarn(){return H},set missingWarn(U){H=U,B.missingWarn=H},get fallbackWarn(){return I},set fallbackWarn(U){I=U,B.fallbackWarn=I},get fallbackRoot(){return M},set fallbackRoot(U){M=U},get fallbackFormat(){return x},set fallbackFormat(U){x=U,B.fallbackFormat=x},get warnHtmlMessage(){return j},set warnHtmlMessage(U){j=U,B.warnHtmlMessage=U},get escapeParameter(){return b},set escapeParameter(U){b=U,B.escapeParameter=U},t:X,getLocaleMessage:z,setLocaleMessage:V,mergeLocaleMessage:oa,getPostTranslationHandler:pa,setPostTranslationHandler:Y,getMissingHandler:L,setMissingHandler:D,[Cc]:y};return sa.datetimeFormats=$a,sa.numberFormats=ha,sa.rt=c,sa.te=E,sa.tm=N,sa.d=f,sa.n=O,sa.getDateTimeFormat=ea,sa.setDateTimeFormat=p,sa.mergeDateTimeFormat=m,sa.getNumberFormat=K,sa.setNumberFormat=q,sa.mergeNumberFormat=ca,sa[kc]=t,sa[Yo]=T,sa[Jo]=J,sa[Zo]=R,sa}function iy(a){const e=da(a.locale)?a.locale:Hn,n=da(a.fallbackLocale)||Va(a.fallbackLocale)||Ga(a.fallbackLocale)||a.fallbackLocale===!1?a.fallbackLocale:e,t=Ha(a.missing)?a.missing:void 0,i=Ea(a.silentTranslationWarn)||un(a.silentTranslationWarn)?!a.silentTranslationWarn:!0,o=Ea(a.silentFallbackWarn)||un(a.silentFallbackWarn)?!a.silentFallbackWarn:!0,r=Ea(a.fallbackRoot)?a.fallbackRoot:!0,l=!!a.formatFallbackMessages,s=Ga(a.modifiers)?a.modifiers:{},g=a.pluralizationRules,d=Ha(a.postTranslation)?a.postTranslation:void 0,_=da(a.warnHtmlInMessage)?a.warnHtmlInMessage!=="off":!0,v=!!a.escapeParameterHtml,w=Ea(a.sync)?a.sync:!0;let H=a.messages;if(Ga(a.sharedMessages)){const b=a.sharedMessages;H=Object.keys(b).reduce((F,B)=>{const ia=F[B]||(F[B]={});return ie(ia,b[B]),F},H||{})}const{__i18n:I,__root:M,__injectWithOption:x}=a,A=a.datetimeFormats,$=a.numberFormats,S=a.flatJson,j=a.translateExistCompatible;return{locale:e,fallbackLocale:n,messages:H,flatJson:S,datetimeFormats:A,numberFormats:$,missing:t,missingWarn:i,fallbackWarn:o,fallbackRoot:r,fallbackFormat:l,modifiers:s,pluralRules:g,postTranslation:d,warnHtmlMessage:_,escapeParameter:v,messageResolver:a.messageResolver,inheritLocale:w,translateExistCompatible:j,__i18n:I,__root:M,__injectWithOption:x}}function Qo(a={},e){{const n=Xo(iy(a)),{__extender:t}=a,i={id:n.id,get locale(){return n.locale.value},set locale(o){n.locale.value=o},get fallbackLocale(){return n.fallbackLocale.value},set fallbackLocale(o){n.fallbackLocale.value=o},get messages(){return n.messages.value},get datetimeFormats(){return n.datetimeFormats.value},get numberFormats(){return n.numberFormats.value},get availableLocales(){return n.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(o){},get missing(){return n.getMissingHandler()},set missing(o){n.setMissingHandler(o)},get silentTranslationWarn(){return Ea(n.missingWarn)?!n.missingWarn:n.missingWarn},set silentTranslationWarn(o){n.missingWarn=Ea(o)?!o:o},get silentFallbackWarn(){return Ea(n.fallbackWarn)?!n.fallbackWarn:n.fallbackWarn},set silentFallbackWarn(o){n.fallbackWarn=Ea(o)?!o:o},get modifiers(){return n.modifiers},get formatFallbackMessages(){return n.fallbackFormat},set formatFallbackMessages(o){n.fallbackFormat=o},get postTranslation(){return n.getPostTranslationHandler()},set postTranslation(o){n.setPostTranslationHandler(o)},get sync(){return n.inheritLocale},set sync(o){n.inheritLocale=o},get warnHtmlInMessage(){return n.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(o){n.warnHtmlMessage=o!=="off"},get escapeParameterHtml(){return n.escapeParameter},set escapeParameterHtml(o){n.escapeParameter=o},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(o){},get pluralizationRules(){return n.pluralRules||{}},__composer:n,t(...o){const[r,l,s]=o,g={};let d=null,_=null;if(!da(r))throw ne(Qa.INVALID_ARGUMENT);const v=r;return da(l)?g.locale=l:Va(l)?d=l:Ga(l)&&(_=l),Va(s)?d=s:Ga(s)&&(_=s),Reflect.apply(n.t,n,[v,d||_||{},g])},rt(...o){return Reflect.apply(n.rt,n,[...o])},tc(...o){const[r,l,s]=o,g={plural:1};let d=null,_=null;if(!da(r))throw ne(Qa.INVALID_ARGUMENT);const v=r;return da(l)?g.locale=l:Za(l)?g.plural=l:Va(l)?d=l:Ga(l)&&(_=l),da(s)?g.locale=s:Va(s)?d=s:Ga(s)&&(_=s),Reflect.apply(n.t,n,[v,d||_||{},g])},te(o,r){return n.te(o,r)},tm(o){return n.tm(o)},getLocaleMessage(o){return n.getLocaleMessage(o)},setLocaleMessage(o,r){n.setLocaleMessage(o,r)},mergeLocaleMessage(o,r){n.mergeLocaleMessage(o,r)},d(...o){return Reflect.apply(n.d,n,[...o])},getDateTimeFormat(o){return n.getDateTimeFormat(o)},setDateTimeFormat(o,r){n.setDateTimeFormat(o,r)},mergeDateTimeFormat(o,r){n.mergeDateTimeFormat(o,r)},n(...o){return Reflect.apply(n.n,n,[...o])},getNumberFormat(o){return n.getNumberFormat(o)},setNumberFormat(o,r){n.setNumberFormat(o,r)},mergeNumberFormat(o,r){n.mergeNumberFormat(o,r)},getChoiceIndex(o,r){return-1}};return i.__extender=t,i}}const ar={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:a=>a==="parent"||a==="global",default:"parent"},i18n:{type:Object}};function oy({slots:a},e){return e.length===1&&e[0]==="default"?(a.default?a.default():[]).reduce((t,i)=>[...t,...i.type===Aa?i.children:[i]],[]):e.reduce((n,t)=>{const i=a[t];return i&&(n[t]=i()),n},La())}function Mc(a){return Aa}const wc=ut({name:"i18n-t",props:ie({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:a=>Za(a)||!isNaN(a)}},ar),setup(a,e){const{slots:n,attrs:t}=e,i=a.i18n||er({useScope:a.scope,__useComponent:!0});return()=>{const o=Object.keys(n).filter(_=>_!=="_"),r=La();a.locale&&(r.locale=a.locale),a.plural!==void 0&&(r.plural=da(a.plural)?+a.plural:a.plural);const l=oy(e,o),s=i[Yo](a.keypath,l,r),g=ie(La(),t),d=da(a.tag)||Ia(a.tag)?a.tag:Mc();return as(d,g,s)}}});function ry(a){return Va(a)&&!da(a[0])}function Ic(a,e,n,t){const{slots:i,attrs:o}=e;return()=>{const r={part:!0};let l=La();a.locale&&(r.locale=a.locale),da(a.format)?r.key=a.format:Ia(a.format)&&(da(a.format.key)&&(r.key=a.format.key),l=Object.keys(a.format).reduce((v,w)=>n.includes(w)?ie(La(),v,{[w]:a.format[w]}):v,La()));const s=t(a.value,r,l);let g=[r.key];Va(s)?g=s.map((v,w)=>{const H=i[v.type],I=H?H({[v.type]:v.value,index:w,parts:s}):[v.value];return ry(I)&&(I[0].key=`${v.type}-${w}`),I}):da(s)&&(g=[s]);const d=ie(La(),o),_=da(a.tag)||Ia(a.tag)?a.tag:Mc();return as(_,d,g)}}const xc=ut({name:"i18n-n",props:ie({value:{type:Number,required:!0},format:{type:[String,Object]}},ar),setup(a,e){const n=a.i18n||er({useScope:a.scope,__useComponent:!0});return Ic(a,e,_c,(...t)=>n[Zo](...t))}}),Tc=ut({name:"i18n-d",props:ie({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},ar),setup(a,e){const n=a.i18n||er({useScope:a.scope,__useComponent:!0});return Ic(a,e,hc,(...t)=>n[Jo](...t))}});function ly(a,e){const n=a;if(a.mode==="composition")return n.__getInstance(e)||a.global;{const t=n.__getInstance(e);return t!=null?t.__composer:a.global.__composer}}function sy(a){const e=r=>{const{instance:l,modifiers:s,value:g}=r;if(!l||!l.$)throw ne(Qa.UNEXPECTED_ERROR);const d=ly(a,l.$),_=Nc(g);return[Reflect.apply(d.t,d,[...Lc(_)]),d]};return{created:(r,l)=>{const[s,g]=e(l);ji&&a.global===g&&(r.__i18nWatcher=re(g.locale,()=>{l.instance&&l.instance.$forceUpdate()})),r.__composer=g,r.textContent=s},unmounted:r=>{ji&&r.__i18nWatcher&&(r.__i18nWatcher(),r.__i18nWatcher=void 0,delete r.__i18nWatcher),r.__composer&&(r.__composer=void 0,delete r.__composer)},beforeUpdate:(r,{value:l})=>{if(r.__composer){const s=r.__composer,g=Nc(l);r.textContent=Reflect.apply(s.t,s,[...Lc(g)])}},getSSRProps:r=>{const[l]=e(r);return{textContent:l}}}}function Nc(a){if(da(a))return{path:a};if(Ga(a)){if(!("path"in a))throw ne(Qa.REQUIRED_VALUE,"path");return a}else throw ne(Qa.INVALID_VALUE)}function Lc(a){const{path:e,locale:n,args:t,choice:i,plural:o}=a,r={},l=t||{};return da(n)&&(r.locale=n),Za(i)&&(r.plural=i),Za(o)&&(r.plural=o),[e,l,r]}function cy(a,e,...n){const t=Ga(n[0])?n[0]:{},i=!!t.useI18nComponentName;(Ea(t.globalInstall)?t.globalInstall:!0)&&([i?"i18n":wc.name,"I18nT"].forEach(r=>a.component(r,wc)),[xc.name,"I18nN"].forEach(r=>a.component(r,xc)),[Tc.name,"I18nD"].forEach(r=>a.component(r,Tc))),a.directive("t",sy(e))}function gy(a,e,n){return{beforeCreate(){const t=Ze();if(!t)throw ne(Qa.UNEXPECTED_ERROR);const i=this.$options;if(i.i18n){const o=i.i18n;if(i.__i18n&&(o.__i18n=i.__i18n),o.__root=e,this===this.$root)this.$i18n=Rc(a,o);else{o.__injectWithOption=!0,o.__extender=n.__vueI18nExtend,this.$i18n=Qo(o);const r=this.$i18n;r.__extender&&(r.__disposer=r.__extender(this.$i18n))}}else if(i.__i18n)if(this===this.$root)this.$i18n=Rc(a,i);else{this.$i18n=Qo({__i18n:i.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:e});const o=this.$i18n;o.__extender&&(o.__disposer=o.__extender(this.$i18n))}else this.$i18n=a;i.__i18nGlobal&&Gc(e,i,i),this.$t=(...o)=>this.$i18n.t(...o),this.$rt=(...o)=>this.$i18n.rt(...o),this.$tc=(...o)=>this.$i18n.tc(...o),this.$te=(o,r)=>this.$i18n.te(o,r),this.$d=(...o)=>this.$i18n.d(...o),this.$n=(...o)=>this.$i18n.n(...o),this.$tm=o=>this.$i18n.tm(o),n.__setInstance(t,this.$i18n)},mounted(){},unmounted(){const t=Ze();if(!t)throw ne(Qa.UNEXPECTED_ERROR);const i=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,i.__disposer&&(i.__disposer(),delete i.__disposer,delete i.__extender),n.__deleteInstance(t),delete this.$i18n}}}function Rc(a,e){a.locale=e.locale||a.locale,a.fallbackLocale=e.fallbackLocale||a.fallbackLocale,a.missing=e.missing||a.missing,a.silentTranslationWarn=e.silentTranslationWarn||a.silentFallbackWarn,a.silentFallbackWarn=e.silentFallbackWarn||a.silentFallbackWarn,a.formatFallbackMessages=e.formatFallbackMessages||a.formatFallbackMessages,a.postTranslation=e.postTranslation||a.postTranslation,a.warnHtmlInMessage=e.warnHtmlInMessage||a.warnHtmlInMessage,a.escapeParameterHtml=e.escapeParameterHtml||a.escapeParameterHtml,a.sync=e.sync||a.sync,a.__composer[Cc](e.pluralizationRules||a.pluralizationRules);const n=wi(a.locale,{messages:e.messages,__i18n:e.__i18n});return Object.keys(n).forEach(t=>a.mergeLocaleMessage(t,n[t])),e.datetimeFormats&&Object.keys(e.datetimeFormats).forEach(t=>a.mergeDateTimeFormat(t,e.datetimeFormats[t])),e.numberFormats&&Object.keys(e.numberFormats).forEach(t=>a.mergeNumberFormat(t,e.numberFormats[t])),a}const uy=gn("global-vue-i18n");function dy(a={},e){const n=__VUE_I18N_LEGACY_API__&&Ea(a.legacy)?a.legacy:__VUE_I18N_LEGACY_API__,t=Ea(a.globalInjection)?a.globalInjection:!0,i=__VUE_I18N_LEGACY_API__&&n?!!a.allowComposition:!0,o=new Map,[r,l]=py(a,n),s=gn("");function g(v){return o.get(v)||null}function d(v,w){o.set(v,w)}function _(v){o.delete(v)}{const v={get mode(){return __VUE_I18N_LEGACY_API__&&n?"legacy":"composition"},get allowComposition(){return i},async install(w,...H){if(w.__VUE_I18N_SYMBOL__=s,w.provide(w.__VUE_I18N_SYMBOL__,v),Ga(H[0])){const x=H[0];v.__composerExtend=x.__composerExtend,v.__vueI18nExtend=x.__vueI18nExtend}let I=null;!n&&t&&(I=ky(w,v.global)),__VUE_I18N_FULL_INSTALL__&&cy(w,v,...H),__VUE_I18N_LEGACY_API__&&n&&w.mixin(gy(l,l.__composer,v));const M=w.unmount;w.unmount=()=>{I&&I(),v.dispose(),M()}},get global(){return l},dispose(){r.stop()},__instances:o,__getInstance:g,__setInstance:d,__deleteInstance:_};return v}}function er(a={}){const e=Ze();if(e==null)throw ne(Qa.MUST_BE_CALL_SETUP_TOP);if(!e.isCE&&e.appContext.app!=null&&!e.appContext.app.__VUE_I18N_SYMBOL__)throw ne(Qa.NOT_INSTALLED);const n=my(e),t=yy(n),i=jc(e),o=hy(a,i);if(__VUE_I18N_LEGACY_API__&&n.mode==="legacy"&&!a.__useComponent){if(!n.allowComposition)throw ne(Qa.NOT_AVAILABLE_IN_LEGACY_MODE);return Py(e,o,t,a)}if(o==="global")return Gc(t,a,i),t;if(o==="parent"){let s=by(n,e,a.__useComponent);return s==null&&(s=t),s}const r=n;let l=r.__getInstance(e);if(l==null){const s=ie({},a);"__i18n"in i&&(s.__i18n=i.__i18n),t&&(s.__root=t),l=Xo(s),r.__composerExtend&&(l[qo]=r.__composerExtend(l)),fy(r,e,l),r.__setInstance(e,l)}return l}function py(a,e,n){const t=Xi();{const i=__VUE_I18N_LEGACY_API__&&e?t.run(()=>Qo(a)):t.run(()=>Xo(a));if(i==null)throw ne(Qa.UNEXPECTED_ERROR);return[t,i]}}function my(a){{const e=Na(a.isCE?uy:a.appContext.app.__VUE_I18N_SYMBOL__);if(!e)throw ne(a.isCE?Qa.NOT_INSTALLED_WITH_PROVIDE:Qa.UNEXPECTED_ERROR);return e}}function hy(a,e){return Gi(a)?"__i18n"in e?"local":"global":a.useScope?a.useScope:"local"}function yy(a){return a.mode==="composition"?a.global:a.global.__composer}function by(a,e,n=!1){let t=null;const i=e.root;let o=_y(e,n);for(;o!=null;){const r=a;if(a.mode==="composition")t=r.__getInstance(o);else if(__VUE_I18N_LEGACY_API__){const l=r.__getInstance(o);l!=null&&(t=l.__composer,n&&t&&!t[kc]&&(t=null))}if(t!=null||i===o)break;o=o.parent}return t}function _y(a,e=!1){return a==null?null:e&&a.vnode.ctx||a.parent}function fy(a,e,n){ve(()=>{},e),gi(()=>{const t=n;a.__deleteInstance(e);const i=t[qo];i&&(i(),delete t[qo])},e)}function Py(a,e,n,t={}){const i=e==="local",o=go(null);if(i&&a.proxy&&!(a.proxy.$options.i18n||a.proxy.$options.__i18n))throw ne(Qa.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const r=Ea(t.inheritLocale)?t.inheritLocale:!da(t.locale),l=ua(!i||r?n.locale.value:da(t.locale)?t.locale:Hn),s=ua(!i||r?n.fallbackLocale.value:da(t.fallbackLocale)||Va(t.fallbackLocale)||Ga(t.fallbackLocale)||t.fallbackLocale===!1?t.fallbackLocale:l.value),g=ua(wi(l.value,t)),d=ua(Ga(t.datetimeFormats)?t.datetimeFormats:{[l.value]:{}}),_=ua(Ga(t.numberFormats)?t.numberFormats:{[l.value]:{}}),v=i?n.missingWarn:Ea(t.missingWarn)||un(t.missingWarn)?t.missingWarn:!0,w=i?n.fallbackWarn:Ea(t.fallbackWarn)||un(t.fallbackWarn)?t.fallbackWarn:!0,H=i?n.fallbackRoot:Ea(t.fallbackRoot)?t.fallbackRoot:!0,I=!!t.fallbackFormat,M=Ha(t.missing)?t.missing:null,x=Ha(t.postTranslation)?t.postTranslation:null,A=i?n.warnHtmlMessage:Ea(t.warnHtmlMessage)?t.warnHtmlMessage:!0,$=!!t.escapeParameter,S=i?n.modifiers:Ga(t.modifiers)?t.modifiers:{},j=t.pluralRules||i&&n.pluralRules;function b(){return[l.value,s.value,g.value,d.value,_.value]}const C=ra({get:()=>o.value?o.value.locale.value:l.value,set:h=>{o.value&&(o.value.locale.value=h),l.value=h}}),F=ra({get:()=>o.value?o.value.fallbackLocale.value:s.value,set:h=>{o.value&&(o.value.fallbackLocale.value=h),s.value=h}}),B=ra(()=>o.value?o.value.messages.value:g.value),ia=ra(()=>d.value),ga=ra(()=>_.value);function na(){return o.value?o.value.getPostTranslationHandler():x}function ma(h){o.value&&o.value.setPostTranslationHandler(h)}function Sa(){return o.value?o.value.getMissingHandler():M}function $a(h){o.value&&o.value.setMissingHandler(h)}function ha(h){return b(),h()}function pa(...h){return o.value?ha(()=>Reflect.apply(o.value.t,null,[...h])):ha(()=>"")}function Y(...h){return o.value?Reflect.apply(o.value.rt,null,[...h]):""}function L(...h){return o.value?ha(()=>Reflect.apply(o.value.d,null,[...h])):ha(()=>"")}function D(...h){return o.value?ha(()=>Reflect.apply(o.value.n,null,[...h])):ha(()=>"")}function la(h){return o.value?o.value.tm(h):{}}function X(h,N){return o.value?o.value.te(h,N):!1}function c(h){return o.value?o.value.getLocaleMessage(h):{}}function f(h,N){o.value&&(o.value.setLocaleMessage(h,N),g.value[h]=N)}function O(h,N){o.value&&o.value.mergeLocaleMessage(h,N)}function u(h){return o.value?o.value.getDateTimeFormat(h):{}}function G(h,N){o.value&&(o.value.setDateTimeFormat(h,N),d.value[h]=N)}function k(h,N){o.value&&o.value.mergeDateTimeFormat(h,N)}function T(h){return o.value?o.value.getNumberFormat(h):{}}function R(h,N){o.value&&(o.value.setNumberFormat(h,N),_.value[h]=N)}function J(h,N){o.value&&o.value.mergeNumberFormat(h,N)}const y={get id(){return o.value?o.value.id:-1},locale:C,fallbackLocale:F,messages:B,datetimeFormats:ia,numberFormats:ga,get inheritLocale(){return o.value?o.value.inheritLocale:r},set inheritLocale(h){o.value&&(o.value.inheritLocale=h)},get availableLocales(){return o.value?o.value.availableLocales:Object.keys(g.value)},get modifiers(){return o.value?o.value.modifiers:S},get pluralRules(){return o.value?o.value.pluralRules:j},get isGlobal(){return o.value?o.value.isGlobal:!1},get missingWarn(){return o.value?o.value.missingWarn:v},set missingWarn(h){o.value&&(o.value.missingWarn=h)},get fallbackWarn(){return o.value?o.value.fallbackWarn:w},set fallbackWarn(h){o.value&&(o.value.missingWarn=h)},get fallbackRoot(){return o.value?o.value.fallbackRoot:H},set fallbackRoot(h){o.value&&(o.value.fallbackRoot=h)},get fallbackFormat(){return o.value?o.value.fallbackFormat:I},set fallbackFormat(h){o.value&&(o.value.fallbackFormat=h)},get warnHtmlMessage(){return o.value?o.value.warnHtmlMessage:A},set warnHtmlMessage(h){o.value&&(o.value.warnHtmlMessage=h)},get escapeParameter(){return o.value?o.value.escapeParameter:$},set escapeParameter(h){o.value&&(o.value.escapeParameter=h)},t:pa,getPostTranslationHandler:na,setPostTranslationHandler:ma,getMissingHandler:Sa,setMissingHandler:$a,rt:Y,d:L,n:D,tm:la,te:X,getLocaleMessage:c,setLocaleMessage:f,mergeLocaleMessage:O,getDateTimeFormat:u,setDateTimeFormat:G,mergeDateTimeFormat:k,getNumberFormat:T,setNumberFormat:R,mergeNumberFormat:J};function E(h){h.locale.value=l.value,h.fallbackLocale.value=s.value,Object.keys(g.value).forEach(N=>{h.mergeLocaleMessage(N,g.value[N])}),Object.keys(d.value).forEach(N=>{h.mergeDateTimeFormat(N,d.value[N])}),Object.keys(_.value).forEach(N=>{h.mergeNumberFormat(N,_.value[N])}),h.escapeParameter=$,h.fallbackFormat=I,h.fallbackRoot=H,h.fallbackWarn=w,h.missingWarn=v,h.warnHtmlMessage=A}return hl(()=>{if(a.proxy==null||a.proxy.$i18n==null)throw ne(Qa.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const h=o.value=a.proxy.$i18n.__composer;e==="global"?(l.value=h.locale.value,s.value=h.fallbackLocale.value,g.value=h.messages.value,d.value=h.datetimeFormats.value,_.value=h.numberFormats.value):i&&E(h)}),y}const Cy=["locale","fallbackLocale","availableLocales"],Fc=["t","rt","d","n","tm","te"];function ky(a,e){const n=Object.create(null);return Cy.forEach(i=>{const o=Object.getOwnPropertyDescriptor(e,i);if(!o)throw ne(Qa.UNEXPECTED_ERROR);const r=Wa(o.value)?{get(){return o.value.value},set(l){o.value.value=l}}:{get(){return o.get&&o.get()}};Object.defineProperty(n,i,r)}),a.config.globalProperties.$i18n=n,Fc.forEach(i=>{const o=Object.getOwnPropertyDescriptor(e,i);if(!o||!o.value)throw ne(Qa.UNEXPECTED_ERROR);Object.defineProperty(a.config.globalProperties,`$${i}`,o)}),()=>{delete a.config.globalProperties.$i18n,Fc.forEach(i=>{delete a.config.globalProperties[`$${i}`]})}}if(ay(),__INTLIFY_JIT_COMPILATION__?ac(Y0):ac(W0),F0(_0),B0(Js),__INTLIFY_PROD_DEVTOOLS__){const a=Qe();a.__INTLIFY__=!0,S0(a.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const jy=Object.assign({"./locales/ar/aria.json":op,"./locales/ar/buttons.json":rp,"./locales/ar/detail.json":lp,"./locales/ar/legend.json":sp,"./locales/ar/messages.json":cp,"./locales/ar/options.json":gp,"./locales/ar/popup.json":up,"./locales/ar/prayerLaps.json":dp,"./locales/ar/regions.json":pp,"./locales/ar/search.json":mp,"./locales/ar/tabs.json":hp,"./locales/de/aria.json":yp,"./locales/de/buttons.json":bp,"./locales/de/detail.json":_p,"./locales/de/legend.json":fp,"./locales/de/messages.json":Pp,"./locales/de/options.json":Cp,"./locales/de/popup.json":kp,"./locales/de/prayerLaps.json":jp,"./locales/de/regions.json":Gp,"./locales/de/search.json":vp,"./locales/de/tabs.json":Ap,"./locales/en/aria.json":Sp,"./locales/en/buttons.json":Ep,"./locales/en/detail.json":$p,"./locales/en/legend.json":Mp,"./locales/en/messages.json":wp,"./locales/en/options.json":Ip,"./locales/en/popup.json":xp,"./locales/en/prayerLaps.json":Tp,"./locales/en/regions.json":Np,"./locales/en/search.json":Lp,"./locales/en/tabs.json":Rp,"./locales/es/aria.json":Fp,"./locales/es/buttons.json":Bp,"./locales/es/detail.json":Kp,"./locales/es/legend.json":Op,"./locales/es/messages.json":Up,"./locales/es/options.json":Dp,"./locales/es/popup.json":Hp,"./locales/es/prayerLaps.json":zp,"./locales/es/regions.json":Vp,"./locales/es/search.json":Wp,"./locales/es/tabs.json":Yp,"./locales/fr/aria.json":Jp,"./locales/fr/buttons.json":Zp,"./locales/fr/detail.json":qp,"./locales/fr/legend.json":Xp,"./locales/fr/messages.json":Qp,"./locales/fr/options.json":am,"./locales/fr/popup.json":em,"./locales/fr/prayerLaps.json":nm,"./locales/fr/regions.json":tm,"./locales/fr/search.json":im,"./locales/fr/tabs.json":om,"./locales/hi/aria.json":rm,"./locales/hi/buttons.json":lm,"./locales/hi/detail.json":sm,"./locales/hi/legend.json":cm,"./locales/hi/messages.json":gm,"./locales/hi/options.json":um,"./locales/hi/popup.json":dm,"./locales/hi/prayerLaps.json":pm,"./locales/hi/regions.json":mm,"./locales/hi/search.json":hm,"./locales/hi/tabs.json":ym,"./locales/it/aria.json":bm,"./locales/it/buttons.json":_m,"./locales/it/detail.json":fm,"./locales/it/legend.json":Pm,"./locales/it/messages.json":Cm,"./locales/it/options.json":km,"./locales/it/popup.json":jm,"./locales/it/prayerLaps.json":Gm,"./locales/it/regions.json":vm,"./locales/it/search.json":Am,"./locales/it/tabs.json":Sm,"./locales/pt/aria.json":Em,"./locales/pt/buttons.json":$m,"./locales/pt/detail.json":Mm,"./locales/pt/legend.json":wm,"./locales/pt/messages.json":Im,"./locales/pt/options.json":xm,"./locales/pt/popup.json":Tm,"./locales/pt/prayerLaps.json":Nm,"./locales/pt/regions.json":Lm,"./locales/pt/search.json":Rm,"./locales/pt/tabs.json":Fm,"./locales/ro/aria.json":Bm,"./locales/ro/buttons.json":Km,"./locales/ro/detail.json":Om,"./locales/ro/legend.json":Um,"./locales/ro/messages.json":Dm,"./locales/ro/options.json":Hm,"./locales/ro/popup.json":zm,"./locales/ro/prayerLaps.json":Vm,"./locales/ro/regions.json":Wm,"./locales/ro/search.json":Ym,"./locales/ro/tabs.json":Jm,"./locales/ru/aria.json":Zm,"./locales/ru/buttons.json":qm,"./locales/ru/detail.json":Xm,"./locales/ru/legend.json":Qm,"./locales/ru/messages.json":ah,"./locales/ru/options.json":eh,"./locales/ru/popup.json":nh,"./locales/ru/prayerLaps.json":th,"./locales/ru/regions.json":ih,"./locales/ru/search.json":oh,"./locales/ru/tabs.json":rh,"./locales/zh/aria.json":lh,"./locales/zh/buttons.json":sh,"./locales/zh/detail.json":ch,"./locales/zh/legend.json":gh,"./locales/zh/messages.json":uh,"./locales/zh/options.json":dh,"./locales/zh/popup.json":ph,"./locales/zh/prayerLaps.json":mh,"./locales/zh/regions.json":hh,"./locales/zh/search.json":yh,"./locales/zh/tabs.json":bh}),Et={};for(const[a,e]of Object.entries(jy)){const n=a.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!n)continue;const[,t,i]=n;Et[t]??(Et[t]={}),Et[t][i]=e}const nr=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"],Gy=new Set(["ar"]);function vy(){var t;const a=(()=>{try{const i=new URLSearchParams(window.location.search);return(i.get("lang")||i.get("locale")||"").split("-")[0].toLowerCase()}catch{return""}})();if(nr.includes(a))return a;const n=(((t=document==null?void 0:document.documentElement)==null?void 0:t.lang)||"").split("-")[0].toLowerCase();return nr.includes(n)?n:"en"}function Ay(){const a=vy();try{Gy.has(a)&&(document!=null&&document.documentElement)&&(document.documentElement.dir="rtl")}catch{}return dy({legacy:!1,globalInjection:!0,locale:a,fallbackLocale:"en",messages:Et,missingWarn:!1,fallbackWarn:!1})}function $e(a,e){const n=e||Sy(a);ve(()=>{var l;const t=Ze();if(!t)return;const i=(l=t.proxy)==null?void 0:l.$el;if(!i)return;const o=i.getRootNode();if(!(o instanceof ShadowRoot)||o.querySelector(`style[data-shadow-styles="${n}"]`))return;const r=document.createElement("style");r.setAttribute("data-shadow-styles",n),r.textContent=a,o.appendChild(r)})}function Sy(a){let e=0;for(let n=0;n(e==null?void 0:e.theme)==="dark"),i=ra(()=>{var M;return((M=n==null?void 0:n.value)==null?void 0:M.pinHintLabel)||"Tap a coloured dot — someone still needs prayer"}),o=ua(!1),r=ua(null);let l=null,s=null,g=null,d=null,_=null;function v(){o.value=!1}function w(M,x){var $;let A=M==null?void 0:M.parentElement;for(let S=0;A&&S<12;S++,A=A.parentElement){if(A===x||($=A.classList)!=null&&$.contains("profile-loader"))return null;let j="";try{j=getComputedStyle(A).position}catch{}if(j&&j!=="static"){const b=A.getBoundingClientRect();if(b.height>=120&&b.width>=160)return A}}return null}function H(){const M=r.value;if(M)try{M.style.removeProperty("--pin-hint-lift");const x=M.getBoundingClientRect();if(!x.height)return;const A=Math.round(x.bottom-window.innerHeight);A>0&&M.style.setProperty("--pin-hint-lift",A+8+"px")}catch{}}function I(M){const x=r.value;if(!x||!(M!=null&&M.querySelector))return;let A=0;try{const S=M.querySelector(".mapboxgl-ctrl-bottom-right .mapboxgl-ctrl-attrib, .mapboxgl-ctrl-bottom-right .doxa-attribution, .doxa-attribution");if(S){const j=S.getBoundingClientRect(),b=x.parentElement,C=b?b.getBoundingClientRect():null;if(A=C?Math.max(j.height||0,C.bottom-j.top):j.height||0,_!==S&&typeof ResizeObserver<"u"){if(g)try{g.disconnect()}catch{}_=S,g=new ResizeObserver(()=>I(M)),g.observe(S)}}}catch{}const $=Math.min(Math.max(Math.ceil(A)||20,20),72);x.style.setProperty("--pin-hint-attrib-clear",$+"px"),H()}return ve(()=>{var $,S,j;const M=Ze(),x=(j=(S=($=M==null?void 0:M.proxy)==null?void 0:$.$el)==null?void 0:S.getRootNode)==null?void 0:j.call(S);if(!x||typeof x.querySelector!="function")return;let A=0;l=setInterval(()=>{A++;const b=x.querySelector("canvas");b?(clearInterval(l),l=null,o.value=!0,Ln(()=>{const C=w(b,x),F=r.value;if(C&&F&&F.parentElement!==C)try{C.appendChild(F),s=C}catch{}I(x),H();try{const B=r.value&&r.value.offsetParent||null;if(B&&typeof ResizeObserver<"u"){if(d)try{d.disconnect()}catch{}d=new ResizeObserver(()=>H()),d.observe(B)}}catch{}})):A>40&&(clearInterval(l),l=null)},300)}),sn(()=>{var M;if(l&&clearInterval(l),g){try{g.disconnect()}catch{}g=null}if(_=null,d){try{d.disconnect()}catch{}d=null}if(s&&((M=r.value)==null?void 0:M.parentElement)===s)try{s.removeChild(r.value)}catch{}s=null}),$e(` + .pin-hint { position: absolute; left: 50%; + bottom: calc(var(--pin-hint-attrib-clear, 20px) + 12px + var(--pin-hint-lift, 0px)); transform: translateX(-50%); + z-index: 2147482000; pointer-events: none; + max-width: calc(100% - 24px); box-sizing: border-box; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + animation: pinhint-in .5s ease both; } + .pin-hint-pill { pointer-events: auto; display: inline-flex; align-items: center; gap: 9px; + padding: 9px 14px 9px 11px; border-radius: 999px; + background: rgba(23, 29, 38, .92); color: #fff; font-size: 13.5px; font-weight: 600; + letter-spacing: .01em; box-shadow: 0 4px 18px rgba(0,0,0,.30); + animation: pinhint-bob 2.6s ease-in-out 1s infinite; } + .pin-hint-dot { position: relative; width: 12px; height: 12px; flex: none; } + .pin-hint-dot::before { content: ''; position: absolute; inset: 0; border-radius: 50%; + background: #e05252; box-shadow: 0 0 0 2px rgba(224,82,82,.35); } + .pin-hint-dot::after { content: ''; position: absolute; inset: -5px; border-radius: 50%; + border: 2px solid rgba(224,82,82,.55); animation: pinhint-pulse 1.8s ease-out infinite; } + .pin-hint-x { pointer-events: auto; border: none; background: none; color: #aeb7c2; + font-size: 16px; line-height: 1; cursor: pointer; padding: 0 0 0 2px; } + .pin-hint-x:hover { color: #fff; } + .pin-hint.dark .pin-hint-pill { background: rgba(240, 243, 247, .95); color: #1b212b; } + .pin-hint.dark .pin-hint-x { color: #5a6470; } + .pin-hint.dark .pin-hint-x:hover { color: #1b212b; } + @keyframes pinhint-pulse { 0% { transform: scale(.6); opacity: .9 } 70% { transform: scale(1.5); opacity: 0 } 100% { opacity: 0 } } + @keyframes pinhint-bob { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-5px) } } + @keyframes pinhint-in { from { opacity: 0; transform: translateX(-50%) translateY(10px) } to { opacity: 1; transform: translateX(-50%) translateY(0) } } + @media (prefers-reduced-motion: reduce) { + .pin-hint, .pin-hint-pill, .pin-hint-dot::after { animation: none !important; } + } +`,"pin-hint"),(M,x)=>o.value?(W(),Z("div",{key:0,ref_key:"hintEl",ref:r,class:Ma(["pin-hint",{dark:t.value}]),role:"status"},[P("span",Ey,[x[0]||(x[0]=P("span",{class:"pin-hint-dot","aria-hidden":"true"},null,-1)),ba(" "+aa(i.value)+" ",1),P("button",{class:"pin-hint-x",type:"button","aria-label":"Dismiss hint",onClick:v},"×")])],2)):fa("",!0)}};let My=0;const wy=xo("ui",{state:()=>({_storeInstanceId:++My,theme:"light",colorScheme:"default",reducedMotion:!1,highContrast:!1,activeTab:"doxa-regions",sidebarCollapsed:!1,mobileMenuOpen:!1,legendState:"collapsed",_customLegendHeight:null,searchMode:!1,hamburgerMenuOpen:!1,legendMode:"prayer",prayerFilter:null,engagementFilter:null,adoptionFilter:null,religionFilter:null,selectedPeopleGroup:null,breakpoint:"desktop",windowSize:{width:window.innerWidth,height:window.innerHeight},toasts:[],nextToastId:1,toastDuration:5e3,openModals:[],modalData:new Map,isGlobalLoading:!1,globalLoadingMessage:"Loading...",loadingStates:new Map,interactionHistory:[],maxHistoryLength:20,keyboardShortcutsEnabled:!0,screenReaderAnnouncement:"",focusTrapActive:!1,debugMode:!1,showPerformanceOverlay:!1}),getters:{isDarkTheme:a=>!1,isMobile:a=>a.breakpoint==="mobile",isTablet:a=>a.breakpoint==="tablet",isDesktop:a=>a.breakpoint==="desktop"||a.breakpoint==="wide",legendHeight:a=>a._customLegendHeight?a._customLegendHeight:a.legendState==="collapsed"?"48px":a.legendState==="open"?"30%":a.legendState==="fullyOpen"?"calc(100% - 80px)":"48px",caretRotation:a=>a.legendState==="collapsed"?0:90,showPullTab:a=>a.legendState==="open"||a.legendState==="fullyOpen",getToastsByType:a=>e=>a.toasts.filter(n=>n.type===e),hasOpenModal:a=>a.openModals.length>0,topModal:a=>a.openModals.length===0?null:a.openModals[a.openModals.length-1],isModalOpen:a=>e=>a.openModals.includes(e),isAnyLoading:a=>a.isGlobalLoading||a.loadingStates.size>0,isLoading:a=>e=>a.loadingStates.get(e)||!1},actions:{setTheme(a){if(!["light","dark","auto"].includes(a))return;a="light",this.theme=a;const n=this.isDarkTheme;document.documentElement.setAttribute("data-theme",n?"dark":"light");try{localStorage.setItem("theme",a)}catch{}},toggleTheme(){const a=this.theme==="light"?"dark":"light";this.setTheme(a)},setColorScheme(a){this.colorScheme=a,document.documentElement.setAttribute("data-color-scheme",a)},toggleReducedMotion(){this.reducedMotion=!this.reducedMotion,document.documentElement.setAttribute("data-reduced-motion",this.reducedMotion)},toggleHighContrast(){this.highContrast=!this.highContrast,document.documentElement.setAttribute("data-high-contrast",this.highContrast)},setActiveTab(a){this.activeTab=a,this.addToHistory({type:"tab-change",tabId:a,timestamp:Date.now()})},toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed},openMobileMenu(){this.mobileMenuOpen=!0},closeMobileMenu(){this.mobileMenuOpen=!1},setLegendMode(a){["prayer","detail"].includes(a)&&(this.legendMode=a)},setPrayerFilter(a){[null,"noPrayer","hasPrayer","fullPrayer"].includes(a)&&(this.prayerFilter=a)},setEngagementFilter(a){[null,"notEngaged","hasEngagement"].includes(a)&&(this.engagementFilter=a)},setAdoptionFilter(a){[null,"notAdopted","hasAdoption"].includes(a)&&(this.adoptionFilter=a)},setReligionFilter(a){[null,"C","M","H","B","E","J","S","N","O","U"].includes(a)&&(this.religionFilter=a)},selectPeopleGroup(a){this.selectedPeopleGroup=a,a?(this._legendStateBeforeDetail=this.legendState,this.legendState="open",this._customLegendHeight=null,this.setLegendMode("detail")):(this.legendState=this._legendStateBeforeDetail||"open",this._customLegendHeight=null,this.setLegendMode("prayer"))},setLegendState(a){["collapsed","open","fullyOpen"].includes(a)&&(this.legendState=a)},toggleSearchMode(){this.searchMode=!this.searchMode},setSearchMode(a){this.searchMode=a},toggleHamburgerMenu(){this.hamburgerMenuOpen=!this.hamburgerMenuOpen},updateBreakpoint(a){let e;a<768?e="mobile":a<1024?e="tablet":a<1920?e="desktop":e="wide",e!==this.breakpoint&&(this.breakpoint=e)},updateWindowSize(a,e){this.windowSize.width=a,this.windowSize.height=e,this.updateBreakpoint(a)},showToast(a){const{message:e,type:n="info",duration:t=this.toastDuration,action:i=null,persistent:o=!1}=a,r={id:this.nextToastId++,message:e,type:n,duration:t,action:i,persistent:o,createdAt:Date.now()};return this.toasts.push(r),!o&&t>0&&setTimeout(()=>{this.removeToast(r.id)},t),r.id},showSuccess(a,e={}){return this.showToast({message:a,type:"success",...e})},showError(a,e={}){return this.showToast({message:a,type:"error",duration:7e3,...e})},showWarning(a,e={}){return this.showToast({message:a,type:"warning",...e})},showInfo(a,e={}){return this.showToast({message:a,type:"info",...e})},removeToast(a){const e=this.toasts.findIndex(n=>n.id===a);e!==-1&&this.toasts.splice(e,1)},clearAllToasts(){this.toasts=[]},openModal(a,e={}){this.openModals.includes(a)||(this.openModals.push(a),this.modalData.set(a,e),this.focusTrapActive=!0)},closeModal(a=null){if(a){const e=this.openModals.indexOf(a);e!==-1&&(this.openModals.splice(e,1),this.modalData.delete(a))}else{const e=this.openModals.pop();e&&this.modalData.delete(e)}this.openModals.length===0&&(this.focusTrapActive=!1)},closeAllModals(){this.openModals=[],this.modalData.clear(),this.focusTrapActive=!1},getModalData(a){return this.modalData.get(a)},showGlobalLoading(a="Loading..."){this.isGlobalLoading=!0,this.globalLoadingMessage=a},hideGlobalLoading(){this.isGlobalLoading=!1},setLoading(a,e=!0){e?this.loadingStates.set(a,!0):this.loadingStates.delete(a)},addToHistory(a){this.interactionHistory.push(a),this.interactionHistory.length>this.maxHistoryLength&&this.interactionHistory.shift()},clearHistory(){this.interactionHistory=[]},announce(a,e="polite"){this.screenReaderAnnouncement=a,setTimeout(()=>{this.screenReaderAnnouncement===a&&(this.screenReaderAnnouncement="")},1e3)},toggleKeyboardShortcuts(){this.keyboardShortcutsEnabled=!this.keyboardShortcutsEnabled},toggleDebugMode(){this.debugMode=!this.debugMode},togglePerformanceOverlay(){this.showPerformanceOverlay=!this.showPerformanceOverlay},toggleLegend(){this.legendState==="fullyOpen"?this.legendState="open":this.legendState==="open"?this.legendState="collapsed":this.legendState="open",this._customLegendHeight=null},openLegend(){this.legendState="open",this._customLegendHeight=null},fullyOpenLegend(){this.legendState="fullyOpen",this._customLegendHeight=null},collapseLegend(){this.legendState="collapsed",this._customLegendHeight=null},setLegendHeight(a){this._customLegendHeight=a},handleLegendItemClick(){this.legendState==="fullyOpen"&&(this.legendState="open")},enableSearchMode(){this.searchMode=!0},disableSearchMode(){this.searchMode=!1},toggleHamburgerMenu(){this.hamburgerMenuOpen=!this.hamburgerMenuOpen},openHamburgerMenu(){this.hamburgerMenuOpen=!0},closeHamburgerMenu(){this.hamburgerMenuOpen=!1},init(){let a=null;try{a=localStorage.getItem("theme")}catch{}a&&this.setTheme(a),new ResizeObserver(n=>{for(const t of n)this.updateWindowSize(t.contentRect.width,t.contentRect.height)}).observe(document.documentElement),window.matchMedia&&(window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",n=>{this.theme==="auto"&&document.documentElement.setAttribute("data-theme",n.matches?"dark":"light")}),window.matchMedia("(prefers-reduced-motion: reduce)").addEventListener("change",n=>{this.reducedMotion=n.matches,document.documentElement.setAttribute("data-reduced-motion",n.matches)}))}}}),Iy=xo("map",{state:()=>({maps:{},activeMapId:null,selectedRegion:null,selectedFamily:null,selectedAffinityBlock:null,selectedLanguage:null,selectedDialect:null,activeLegendTab:"family",selectedResource:null,selectedPeopleGroup:null,selectedPinIds:[],globalFilters:{},searchQuery:"",autoFly:{isActive:!1,speed:1,interval:5e3,currentIndex:0,items:[],timerId:null},guidedTour:{isActive:!1,currentStep:0,steps:[]},showClusters:!1,clusterMode:"region",clusterFilterProperty:null,clusterFilterValue:null,flySpeed:"normal",fullscreenMapId:null,preferences:{theme:"light",defaultMapStyle:"streets",enableAnimations:!0,autoSavePreferences:!0}}),getters:{getMapById:a=>e=>a.maps[e],activeMap:a=>a.activeMapId?a.maps[a.activeMapId]:null,hasMap:a=>e=>e in a.maps,allMapIds:a=>Object.keys(a.maps),hasSelection:a=>!!(a.selectedRegion||a.selectedFamily||a.selectedAffinityBlock||a.selectedPeopleGroup),isAutoFlying:a=>a.autoFly.isActive,isGuidedTourActive:a=>a.guidedTour.isActive,isMapFullscreen:a=>e=>a.fullscreenMapId===e},actions:{registerMap(a,e,n={}){let t=1.5;n.zoom!==void 0?t=n.zoom:e&&typeof e.getZoom=="function"&&(t=e.getZoom());let i=[0,0];if(n.center)i=n.center;else if(e&&typeof e.getCenter=="function"){const o=e.getCenter();o&&(i=[o.lng,o.lat])}this.maps[a]={instance:e,config:n,isReady:!1,zoom:t,center:i,registeredAt:Date.now()},this.activeMapId||(this.activeMapId=a)},setMapReady(a){const e=this.maps[a];e&&(e.isReady=!0)},updateMapState(a,e){const n=this.maps[a];n&&Object.assign(n,e)},unregisterMap(a){if(delete this.maps[a],this.activeMapId===a){const e=this.allMapIds;this.activeMapId=e.length>0?e[0]:null}},setActiveMap(a){a in this.maps&&(this.activeMapId=a)},selectRegion(a){this.selectedFamily=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedRegion=a},selectFamily(a){this.selectedRegion=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedLanguage=null,this.selectedDialect=null,this.selectedFamily=a},setActiveLegendTab(a){this.activeLegendTab=a},selectLanguage(a){this.selectedRegion=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedFamily=null,this.selectedDialect=null,this.selectedLanguage=a},selectDialect(a){this.selectedRegion=null,this.selectedFamily=null,this.selectedLanguage=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedDialect=a},selectAffinityBlock(a){this.selectedRegion=null,this.selectedFamily=null,this.selectedPeopleGroup=null,this.selectedAffinityBlock=a},selectPeopleGroup(a){this.selectedPeopleGroup=a},selectResource(a){this.selectedRegion=null,this.selectedFamily=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedResource===a?this.selectedResource=null:this.selectedResource=a},clearSelections(){this.selectedRegion=null,this.selectedFamily=null,this.selectedLanguage=null,this.selectedDialect=null,this.selectedAffinityBlock=null,this.selectedResource=null,this.selectedPeopleGroup=null,this.selectedPinIds=[],this.showClusters=!1,this.clusterMode="region"},setSelectedPinIds(a){this.selectedPinIds=a||[]},setFilter(a,e){this.globalFilters[a]=e},removeFilter(a){delete this.globalFilters[a]},clearFilters(){this.globalFilters={},this.searchQuery=""},setSearchQuery(a){this.searchQuery=a},startAutoFly(a,e=1){this.stopAutoFly(),this.autoFly.isActive=!0,this.autoFly.speed=e,this.autoFly.items=a,this.autoFly.currentIndex=0},stopAutoFly(){this.autoFly.timerId&&(clearInterval(this.autoFly.timerId),this.autoFly.timerId=null),this.autoFly.isActive=!1,this.autoFly.currentIndex=0},setAutoFlySpeed(a){this.autoFly.speed=Math.max(.5,Math.min(2,a))},nextAutoFlyItem(){if(!this.autoFly.isActive||this.autoFly.items.length===0)return;this.autoFly.currentIndex=(this.autoFly.currentIndex+1)%this.autoFly.items.length;const a=this.autoFly.items[this.autoFly.currentIndex];a.type==="region"?this.selectRegion(a):a.type==="family"&&this.selectFamily(a)},toggleClusters(a){typeof a=="boolean"?this.showClusters=a:this.showClusters=!this.showClusters},setClusterMode(a){["region","language-family","affinity-block","mst","resource"].includes(a)&&(this.clusterMode=a)},setClusterFilter(a,e){this.clusterFilterProperty=a||null,this.clusterFilterValue=e||null},clearClusterFilter(){this.clusterFilterProperty=null,this.clusterFilterValue=null},setFlySpeed(a){["slow","normal","fast"].includes(a)&&(this.flySpeed=a)},setSelectedFamily(a){this.selectFamily(a)},clearSelectedFamily(){this.selectFamily(null)},setSelectedRegion(a){this.selectRegion(a)},clearSelectedRegion(){this.selectRegion(null)},clearSelectedResource(){this.selectResource(null)},clearSelectedLanguage(){this.selectLanguage(null)},clearSelectedDialect(){this.selectDialect(null)},toggleFullscreen(a){this.fullscreenMapId===a?this.fullscreenMapId=null:this.fullscreenMapId=a},loadPreferences(){try{const a=localStorage.getItem("mapUserPreferences");if(a){const e=JSON.parse(a);this.preferences={...this.preferences,...e}}}catch(a){console.error("[mapStore] Failed to load preferences:",a)}},savePreferences(){try{localStorage.setItem("mapUserPreferences",JSON.stringify(this.preferences))}catch(a){console.error("[mapStore] Failed to save preferences:",a)}},setPreference(a,e){this.preferences[a]=e,this.preferences.autoSavePreferences&&this.savePreferences()}}}),xy=xo("data",{state:()=>({sources:{},loadingStates:{}}),actions:{async load(a,e){if(!this.sources[a]){this.loadingStates[a]={isLoading:!0,error:null};try{const n=await e();this.sources[a]=lt({features:n,timestamp:Date.now()}),this.loadingStates[a]={isLoading:!1,error:null}}catch(n){console.error(`[dataStore] Failed to load source "${a}":`,n),this.loadingStates[a]={isLoading:!1,error:n}}}},clearSource(a){delete this.sources[a],delete this.loadingStates[a]},cacheSourceData(a,e){this.sources[a]=lt({features:e.normalizedData||[],timestamp:e.timestamp||Date.now()})},hasSourceData(a){return!!this.sources[a]},getSourceData(a){return this.sources[a]?{normalizedData:this.sources[a].features}:null}},getters:{getData:a=>e=>{var n;return((n=a.sources[e])==null?void 0:n.features)??null},isLoading:a=>e=>{var n;return((n=a.loadingStates[e])==null?void 0:n.isLoading)??!1},getError:a=>e=>{var n;return((n=a.loadingStates[e])==null?void 0:n.error)??null}}}),Ty={activeSource:"pray-tools"},Ny=".profile-loader[data-v-ba19fc13]{border-radius:var(--map-radius-corners, var(--map-radius, 0px));width:100%;height:100%;min-height:var(--profile-min-h, 100dvh);position:relative}.profile-error[data-v-ba19fc13]{padding:1rem;background:#fff3cd;border:1px solid #ffc107;border-radius:4px;font-family:monospace;font-size:13px}",Ly=(a,e)=>{const n=a.__vccOpts||a;for(const[t,i]of e)n[t]=i;return n},Ry={class:"profile-loader"},Fy={key:0,class:"profile-error"},By={key:1,class:"profile-error"},Ky=Ly({__name:"ProfileLoader",props:{profileConfig:{type:String,default:""}},setup(a){var j;const n=a,t=Na("profileConfig",null),i=ra(()=>{var C;if(!n.profileConfig)return null;let b;try{b=JSON.parse(n.profileConfig)}catch{return console.error("[ProfileLoader] Invalid profile-config JSON:",n.profileConfig),null}if(b&&b.assetsBase===void 0){const F=(C=t==null?void 0:t.value)==null?void 0:C.assetsBase;typeof F=="string"&&F&&(b.assetsBase=F)}return b}),o=ra(()=>{var b;return((b=i.value)==null?void 0:b.profile)||null}),r=tp(),l=ra(()=>{var C;const b=(C=i.value)==null?void 0:C.tk;return typeof b=="string"&&b?b:r.value||""});re(()=>{var b;return(b=i.value)==null?void 0:b.tk},b=>{typeof b=="string"&&b&&js(b)},{immediate:!0});const s=ra(()=>{var b;return((b=i.value)==null?void 0:b.dataSource)||Ty.activeSource}),g=ra(()=>{var b;return((b=i.value)==null?void 0:b.colorSet)||"default"}),d=ra(()=>!1),_=ra(()=>{var b;return((b=i.value)==null?void 0:b.pinHint)!==!1}),v=ra(()=>{var C,F;const b=(((C=i.value)==null?void 0:C.locale)||((F=i.value)==null?void 0:F.lang)||"").split("-")[0].toLowerCase();return nr.includes(b)?b:""}),w=Na("appI18n",null);hu(()=>{v.value&&w&&(w.global.locale.value=v.value)});const H=ra(()=>{var b,C;return v.value||((C=(b=w==null?void 0:w.global)==null?void 0:b.locale)==null?void 0:C.value)||"en"}),I=ra(()=>{var b;return((b=i.value)==null?void 0:b.instanceId)||"doxa-map-"+Math.random().toString(36).slice(2,9)}),M=Na("profileModules",null);if(!M)throw new Error('[ProfileLoader] No profileModules provided. Bundle entry must `app.provide("profileModules", import.meta.glob("./*.vue"))`');const x=ra(()=>{if(!o.value)return null;const b=`./${o.value}.vue`;return M[b]?ip(M[b]):(console.error(`[ProfileLoader] Profile not found: "${o.value}". Available:`,Object.keys(M)),null)});Ge("mapboxToken",l),Ge("dataSource",s),Ge("colorSet",g),Ge("profileConfig",i),Ge("instanceId",I),Ge("lang",H);const A=wy(),$=Iy(),S=xy();try{const b=typeof localStorage<"u"?localStorage.getItem("theme"):null;b&&((j=A.setTheme)==null||j.call(A,b))}catch{}return Ge("uiStore",A),Ge("mapStore",$),Ge("dataStore",S),(b,C)=>(W(),Z("div",Ry,[i.value?x.value?(W(),Ye(bl(x.value),{key:2})):(W(),Z("div",By,[P("p",null,[C[1]||(C[1]=ba("⚠️ Profile ",-1)),P("strong",null,'"'+aa(o.value)+'"',1),C[2]||(C[2]=ba(" not found.",-1))])])):(W(),Z("div",Fy,[...C[0]||(C[0]=[P("p",null,[ba("⚠️ "),P("strong",null,"doxa-map"),ba(": missing or invalid "),P("code",null,"profile-config"),ba(" prop.")],-1),P("p",null,[ba("Example: "),P("code",null,`profile-config='{"profile":"example-map","tk":"pk.eyJ..."}'`)],-1)])])),x.value&&d.value?(W(),Ye(bl(ya(null)),{key:3})):fa("",!0),x.value&&_.value?(W(),Ye($y,{key:4})):fa("",!0)]))}},[["styles",[Ny]],["__scopeId","data-v-ba19fc13"]]),Oy=Object.assign({"./upg-neighbor.vue":()=>yg(()=>Promise.resolve().then(()=>V5),void 0)});if(typeof window<"u"&&((hg=window.mapboxgl)!=null&&hg.setRTLTextPlugin))try{window.mapboxgl.setRTLTextPlugin("https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.3.0/mapbox-gl-rtl-text.js",null,!0)}catch{}const Uy=Od(Ky,{configureApp(a){a.use(Zd());const e=Ay();a.use(e),a.provide("appI18n",e),a.provide("profileModules",Oy)}});typeof customElements<"u"&&!customElements.get("upg-neighbor")&&customElements.define("upg-neighbor",Uy);const nn={meta:{generated:"2026-06-29",source:"PPLR ArcGIS aIMBPeople (live)",reached_filter:"EvangelicalLevel>=2% (>=2% evangelical) OR GSEC>=4 — senders only; 'Engaged' excluded (engaged != reached)",reached_pool:5146,target_countries:40,total_neighbors:2603,neighbors_with_rol3:2603,neighbors_with_coords:2603},countries:{India:{target_upg:2040,target_pop:1394512400,target_top_langs:["Hindi","Urdu","Gujarati","Marathi"],target_top_religion:"Hinduism",neighbors:[{name:"Naga, Sangtam",country:"India",lang:"Naga, Sangtam",rol3:"nsa",pct_christian:75,pop:12e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.85,lng:94.62,code:"PG041909"},{name:"Naga Kacha",country:"India",lang:"Naga, Zeme",rol3:"nzm",pct_christian:75,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.21,lng:94.04,code:"PG049568"},{name:"Moyon",country:"India",lang:"Naga, Moyon",rol3:"nmo",pct_christian:75,pop:3600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049747"},{name:"Lisu",country:"India",lang:"Lisu",rol3:"lis",pct_christian:75,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.37,lng:96.37,code:"PG049761"},{name:"Koirao",country:"India",lang:"Boro (India)",rol3:"brx",pct_christian:75,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.2,lng:94.05,code:"PG049766"},{name:"Beldar (Bundelkhandi)",country:"India",lang:"Bundeli",rol3:"bns",pct_christian:75,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.76,lng:81.58,code:"PG048210"},{name:"Majhi",country:"India",lang:"Majhi",rol3:"mjz",pct_christian:75,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.11,lng:88.35,code:"PG049075"},{name:"Ansari-Momin (Sadri)",country:"India",lang:"Sadri",rol3:"sck",pct_christian:75,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:23.63,lng:85.55,code:"PG048700"},{name:"Syrian Christian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:62.5,pop:4495e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:12.35,lng:76.09,code:"PG041308"},{name:"Naga, Ao",country:"India",lang:"Naga, Ao",rol3:"njo",pct_christian:62.5,pop:411e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.34,lng:94.36,code:"PG041361"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Naga, Sema",country:"India",lang:"Naga, Sumi",rol3:"nsm",pct_christian:62.5,pop:368e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.93,lng:94.23,code:"PG041651"},{name:"Naga, Konyak",country:"India",lang:"Naga, Konyak",rol3:"nbe",pct_christian:62.5,pop:361e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.72,lng:95.04,code:"PG041687"},{name:"Naga, Angami",country:"India",lang:"Naga, Angami",rol3:"njm",pct_christian:62.5,pop:241e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.69,lng:93.9,code:"PG041738"},{name:"Naga, Lotha",country:"India",lang:"Naga, Lotha",rol3:"njh",pct_christian:62.5,pop:234e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.01,lng:94.06,code:"PG041755"},{name:"Naga, Tangkhul",country:"India",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:214e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.07,lng:94.38,code:"PG041697"},{name:"Naga, Chakhesang",country:"India",lang:"Naga, Chokri",rol3:"nri",pct_christian:62.5,pop:198e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.56,lng:94.3,code:"PG041748"},{name:"Kuki",country:"India",lang:"Chin, Thado",rol3:"tcz",pct_christian:62.5,pop:179e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.49,lng:93.86,code:"PG041761"},{name:"Naga, Kabui",country:"India",lang:"Naga, Rongmei",rol3:"nbu",pct_christian:62.5,pop:121e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.15,lng:93.79,code:"PG041943"},{name:"Naga, Yimchunger",country:"India",lang:"Naga, Yimchungru",rol3:"yim",pct_christian:62.5,pop:112e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.8,lng:94.83,code:"PG041978"},{name:"Naga, Mao",country:"India",lang:"Naga, Mao",rol3:"nbi",pct_christian:62.5,pop:106e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.2,lng:94.04,code:"PG041779"},{name:"Naga, Zeliang",country:"India",lang:"Naga, Zeme",rol3:"nzm",pct_christian:62.5,pop:106e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.62,lng:93.83,code:"PG041995"},{name:"Naga, Rengma",country:"India",lang:"Naga, Southern Rengma",rol3:"nre",pct_christian:62.5,pop:79e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.26,lng:94.7,code:"PG042067"},{name:"Vaiphei",country:"India",lang:"Vaiphei",rol3:"vap",pct_christian:62.5,pop:56e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.31,lng:93.43,code:"PG042060"},{name:"Kahha",country:"India",lang:"Naga, Phom",rol3:"nph",pct_christian:62.5,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.48,lng:94.74,code:"PG041953"},{name:"Mizo, Pawi",country:"India",lang:"Chin, Paite",rol3:"pck",pct_christian:62.5,pop:47500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.88,code:"PG041966"},{name:"Nicobarese",country:"India",lang:"Nicobarese, Car",rol3:"caq",pct_christian:62.5,pop:42500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.18,lng:92.77,code:"PG041984"},{name:"Naga, Maring",country:"India",lang:"Naga, Maring",rol3:"nng",pct_christian:62.5,pop:34500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG042119"},{name:"Chin, Mara",country:"India",lang:"Mara",rol3:"mrh",pct_christian:62.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.89,code:"PG042043"},{name:"Zou",country:"India",lang:"Zo",rol3:"zom",pct_christian:62.5,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.16,lng:93.71,code:"PG042107"},{name:"Naga, Pochury",country:"India",lang:"Naga, Pochuri",rol3:"npo",pct_christian:62.5,pop:24500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.03,lng:94.53,code:"PG049624"},{name:"Gangte",country:"India",lang:"Gangte",rol3:"gnb",pct_christian:62.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.28,lng:93.69,code:"PG042166"},{name:"Lamgang",country:"India",lang:"Lamkang",rol3:"lmk",pct_christian:62.5,pop:8700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.44,lng:94.05,code:"PG049002"},{name:"Chiru",country:"India",lang:"Chiru",rol3:"cdf",pct_christian:62.5,pop:8300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.35,lng:94.11,code:"PG049001"},{name:"Cote",country:"India",lang:"Naga, Chothe",rol3:"nct",pct_christian:62.5,pop:4100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049749"},{name:"Aimol",country:"India",lang:"Aimol",rol3:"aim",pct_christian:62.5,pop:3700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.7,lng:93.92,code:"PG048880"},{name:"Ucai",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:62.5,pop:3100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.36,lng:92.17,code:"PG049762"},{name:"Monsang",country:"India",lang:"Naga, Monsang",rol3:"nmh",pct_christian:62.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049759"},{name:"Soria",country:"India",lang:"Hindi",rol3:"hin",pct_christian:62.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.2,lng:77.09,code:"PG048955"},{name:"Pnar",country:"India",lang:"Pnar",rol3:"pbv",pct_christian:62.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.89,code:"PG049638"},{name:"Mangli",country:"India",lang:"Sambalpuri",rol3:"spv",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.91,lng:83.18,code:"PG049616"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Tarao",country:"India",lang:"Naga, Tarao",rol3:"tro",pct_christian:62.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.24,lng:94.09,code:"PG049555"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Khasi",country:"India",lang:"Khasi",rol3:"kha",pct_christian:45,pop:1675e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.52,lng:91.79,code:"PG041380"},{name:"Pulayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:45,pop:154e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.06,lng:76.53,code:"PG041344"},{name:"Garo",country:"India",lang:"Garo",rol3:"grt",pct_christian:45,pop:1065e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.62,lng:90.74,code:"PG041444"},{name:"Meghval",country:"India",lang:"Hindi",rol3:"hin",pct_christian:45,pop:377e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.87,lng:73.03,code:"PG041328"},{name:"Santal (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:45,pop:176e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.8,lng:87.48,code:"PG046353"},{name:"Hmar",country:"India",lang:"Hmar",rol3:"hmr",pct_christian:45,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.97,lng:93.56,code:"PG041808"},{name:"Paite",country:"India",lang:"Chin, Paite",rol3:"pck",pct_christian:45,pop:94e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.3,lng:93.43,code:"PG041890"},{name:"Naga, Khiamngan",country:"India",lang:"Naga, Khiamniungan",rol3:"kix",pct_christian:45,pop:56e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.17,lng:94.89,code:"PG042023"},{name:"Mizo",country:"India",lang:"Mizo",rol3:"lus",pct_christian:35,pop:1115e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.31,lng:92.83,code:"PG041461"},{name:"Thadou",country:"India",lang:"Chin, Thado",rol3:"tcz",pct_christian:35,pop:268e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.3,lng:93.43,code:"PG041679"},{name:"Mal Paharia",country:"India",lang:"Mal Paharia",rol3:"mkb",pct_christian:35,pop:231e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.56,lng:87.66,code:"PG041653"},{name:"Bhil Mina",country:"India",lang:"Vaghri",rol3:"vgr",pct_christian:35,pop:131e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.59,lng:73.72,code:"PG048977"},{name:"Nissi",country:"India",lang:"Nyishi",rol3:"njz",pct_christian:35,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.27,lng:93.61,code:"PG041760"},{name:"Chang (Naga)",country:"India",lang:"Naga, Chang",rol3:"nbc",pct_christian:35,pop:81500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.17,lng:94.89,code:"PG041979"},{name:"Malai Arayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:35,pop:48e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:9.65,lng:76.66,code:"PG041952"},{name:"Anal",country:"India",lang:"Anal",rol3:"anm",pct_christian:35,pop:31500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.04,lng:94.14,code:"PG042153"},{name:"Nagbansi (Dogri)",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:35,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:33.05,lng:75.08,code:"PG048317"},{name:"Pagi",country:"India",lang:"Konkani",rol3:"knn",pct_christian:35,pop:650,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:14.91,lng:74.23,code:"PG049171"},{name:"Munda ",country:"India",lang:"Munda",rol3:"unx",pct_christian:25,pop:2875e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.75,lng:88.2,code:"PG041329"},{name:"Kharia",country:"India",lang:"Kharia",rol3:"khr",pct_christian:25,pop:889e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.47,lng:84.55,code:"PG041457"},{name:"Paravar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:162e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:8.62,lng:77,code:"PG041743"},{name:"Koh",country:"India",lang:"Marathi",rol3:"mar",pct_christian:25,pop:96500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.29,lng:76.9,code:"PG041285"},{name:"Mehar",country:"India",lang:"Mewari",rol3:"mtr",pct_christian:25,pop:84500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:24.37,lng:76.25,code:"PG041828"},{name:"Madgi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:76500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.17,lng:79.45,code:"PG041802"},{name:"Mech",country:"India",lang:"Assamese",rol3:"asm",pct_christian:25,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:27.1,lng:92.43,code:"PG041900"},{name:"Adi Gallong",country:"India",lang:"Adi, Galo",rol3:"adl",pct_christian:25,pop:71e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:28.32,lng:94.51,code:"PG041851"},{name:"Gounder",country:"India",lang:"Tamil",rol3:"tam",pct_christian:25,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:11.68,lng:78.22,code:"PG041906"},{name:"Hajong",country:"India",lang:"Hajong",rol3:"haj",pct_christian:25,pop:47e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.53,lng:89.89,code:"PG041954"},{name:"Kerala Mudali",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:9.44,lng:78.7,code:"PG049672"},{name:"Noatia",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:25,pop:9800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:23.79,lng:91.46,code:"PG042172"},{name:"Godari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:17.69,lng:83.22,code:"PG049205"},{name:"Kambodia Bhagat",country:"India",lang:"Marwari (India)",rol3:"rwr",pct_christian:25,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.95,lng:72.49,code:"PG049636"},{name:"Chamail",country:"India",lang:"Hindi",rol3:"hin",pct_christian:25,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:25.48,lng:85.95,code:"PG049469"},{name:"Ghogia",country:"India",lang:"Odia",rol3:"ory",pct_christian:25,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.15,lng:84.09,code:"PG049008"},{name:"Gangai",country:"India",lang:"Surjapuri",rol3:"sjp",pct_christian:25,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:25.69,lng:87.53,code:"PG049394"},{name:"Arakala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:18.11,lng:83.4,code:"PG049160"},{name:"Mala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:7615e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:16.36,lng:79.51,code:"PG041263"},{name:"Balmiki (Haryanvi)",country:"India",lang:"Haryanvi",rol3:"bgc",pct_christian:17.5,pop:189e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:29.19,lng:76.36,code:"PG048194"},{name:"Balmiki (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:17.5,pop:172e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.93,lng:78.08,code:"PG041289"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Balmiki (Pahari)",country:"India",lang:"Garhwali",rol3:"gbm",pct_christian:17.5,pop:131e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:30.26,lng:78.62,code:"PG048196"},{name:"Damor",country:"India",lang:"Wagdi",rol3:"wbr",pct_christian:17.5,pop:128e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:23.74,lng:73.85,code:"PG041876"},{name:"Lepcha",country:"India",lang:"Lepcha",rol3:"lep",pct_christian:17.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.34,lng:88.58,code:"PG041791"},{name:"Kachari",country:"India",lang:"Kachari",rol3:"xac",pct_christian:17.5,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.37,lng:95.08,code:"PG041505"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Chuhra",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:17.5,pop:59e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:31.92,lng:77.25,code:"PG049402"},{name:"Adi Minyong",country:"India",lang:"Adi",rol3:"adi",pct_christian:17.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:28.05,lng:94.43,code:"PG041950"},{name:"Nocte",country:"India",lang:"Naga, Nocte",rol3:"njb",pct_christian:17.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.07,lng:95.23,code:"PG042002"},{name:"Ojha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:46e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.74,lng:78.25,code:"PG041974"},{name:"Badhi",country:"India",lang:"Hindi",rol3:"hin",pct_christian:17.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:29.95,lng:77.55,code:"PG041480"},{name:"Goudu",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:17.71,lng:83.25,code:"PG042158"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Miji",country:"India",lang:"Miji",rol3:"sjl",pct_christian:17.5,pop:7e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.3,lng:92.4,code:"PG049709"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Bari (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.86,lng:84.8,code:"PG048204"},{name:"Babar",country:"India",lang:"Haroti",rol3:"hoj",pct_christian:17.5,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:25.43,lng:75.65,code:"PG048961"},{name:"Bayil Kammara",country:"India",lang:"Marwari (India)",rol3:"rwr",pct_christian:17.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:16.34,lng:76.08,code:"PG049856"},{name:"Candhai Maru",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.48,lng:83.97,code:"PG049648"},{name:"Khati (Haryanvi)",country:"India",lang:"Haryanvi",rol3:"bgc",pct_christian:17.5,pop:200,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:29.21,lng:76.34,code:"PG048299"},{name:"Madiga",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:9445e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:16.51,lng:79.06,code:"PG041253"},{name:"Mang",country:"India",lang:"Marathi",rol3:"mar",pct_christian:12.5,pop:304e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:20.38,lng:76.05,code:"PG041315"},{name:"Chakkiliyan",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1205e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.61,lng:77.71,code:"PG041373"},{name:"Saora",country:"India",lang:"Sora",rol3:"srb",pct_christian:12.5,pop:119e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:20.64,lng:83.56,code:"PG041407"},{name:"Nadua Shabar",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:659e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:19.9,lng:85.17,code:"PG049502"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Mannan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:145e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.8,lng:76.55,code:"PG041756"},{name:"Chakravar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:45e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:8.62,lng:77,code:"PG041956"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Domar",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:12.5,pop:27e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.45,lng:80.38,code:"PG049077"},{name:"Samban",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:24500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:8.7,lng:77.49,code:"PG041752"},{name:"Mehtar",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:2e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:16.22,lng:75.63,code:"PG042116"},{name:"Panchama",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:17.01,lng:81.79,code:"PG042086"},{name:"Palliyan",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:9.89,lng:77.09,code:"PG049215"},{name:"Puroik",country:"India",lang:"Adi",rol3:"adi",pct_christian:12.5,pop:4300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.43,lng:92.97,code:"PG049739"},{name:"Karen",country:"India",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:12.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.78,lng:92.86,code:"PG048894"},{name:"Padigarajulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:15.58,lng:79.51,code:"PG049165"},{name:"Kuda",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:20.83,lng:85.53,code:"PG049016"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Tharua",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:650,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:21.49,lng:86.93,code:"PG049031"},{name:"Gharrami",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:28.64,lng:77.12,code:"PG049392"},{name:"Dusadh",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:7.5,pop:691e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.23,lng:85.31,code:"PG041266"},{name:"Nadar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:6365e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:11.17,lng:77.82,code:"PG041309"},{name:"Oraon",country:"India",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:551e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:24.4,lng:86.87,code:"PG041304"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Vellalar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:308e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.78,lng:77.78,code:"PG041493"},{name:"Kondh",country:"India",lang:"Kuvi",rol3:"kxv",pct_christian:7.5,pop:219e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:18.49,lng:83.27,code:"PG041352"},{name:"Pano",country:"India",lang:"Odia",rol3:"ory",pct_christian:7.5,pop:1735e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.04,lng:85.14,code:"PG041345"},{name:"Chamar (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:7.5,pop:1275e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:26.07,lng:80.62,code:"PG046031"},{name:"Munda (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:1235e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:26.97,lng:94.06,code:"PG048248"},{name:"Santal (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:697e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:26.55,lng:92.86,code:"PG046151"},{name:"Goan",country:"India",lang:"Konkani",rol3:"knn",pct_christian:7.5,pop:661e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:17.38,lng:74.3,code:"PG041474"},{name:"Gamit",country:"India",lang:"Gamit",rol3:"gbl",pct_christian:7.5,pop:649e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:21.11,lng:73.62,code:"PG041462"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"},{name:"Karbi",country:"India",lang:"Karbi",rol3:"mjw",pct_christian:7.5,pop:537e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.62,lng:93.03,code:"PG041521"},{name:"Cheruman",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:467e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:10.61,lng:76.25,code:"PG041452"},{name:"Garasia",country:"India",lang:"Garasia, Adiwasi",rol3:"gas",pct_christian:7.5,pop:295e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:24.08,lng:73.13,code:"PG041610"},{name:"Amant",country:"India",lang:"Maithili",rol3:"mai",pct_christian:7.5,pop:244e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:25.04,lng:86.5,code:"PG042053"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Jamatia",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:7.5,pop:138e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:23.36,lng:91.61,code:"PG041812"},{name:"Ghanchi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:129e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:22.02,lng:73.03,code:"PG041585"},{name:"Tangsa",country:"India",lang:"Naga, Tangshang",rol3:"nst",pct_christian:7.5,pop:85500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.37,lng:96.37,code:"PG042146"},{name:"Bharathar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:81e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:8.94,lng:76.82,code:"PG049578"},{name:"Wancho",country:"India",lang:"Naga, Wancho",rol3:"nnp",pct_christian:7.5,pop:7e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.56,lng:95.05,code:"PG041877"},{name:"Halam",country:"India",lang:"Kok Borok",rol3:"trp",pct_christian:7.5,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:23.79,lng:91.46,code:"PG041914"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Asur",country:"India",lang:"Asuri",rol3:"asr",pct_christian:7.5,pop:52500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:23.18,lng:84.56,code:"PG042115"}]},Pakistan:{target_upg:782,target_pop:250773e3,target_top_langs:["Punjabi, Western","Pashto, Central","Sindhi","Saraiki"],target_top_religion:"Islam",neighbors:[{name:"Chandala",country:"Pakistan",lang:"Saraiki",rol3:"skr",pct_christian:35,pop:752e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:31.73,lng:73.95,code:"PG049353"},{name:"Goan",country:"Pakistan",lang:"Konkani, Goan",rol3:"gom",pct_christian:25,pop:80500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.89,lng:67.06,code:"PG006349"},{name:"Marwari, Northern",country:"Pakistan",lang:"Marwari (Pakistan)",rol3:"mve",pct_christian:7.5,pop:17e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:28.82,lng:71.72,code:"PG006386"},{name:"Han Chinese",country:"Pakistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:31.52,lng:74.34,code:"PG006354"},{name:"Gujarati",country:"Pakistan",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:146e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.88,lng:70.3,code:"PG006352"},{name:"Bhil, Meghwar",country:"Pakistan",lang:"Sindhi Bhil",rol3:"sbn",pct_christian:3.5,pop:73e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.75,lng:68.61,code:"PG006381"},{name:"British",country:"Pakistan",lang:"English",rol3:"eng",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:31.38,lng:72.73,code:"PG006336"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Bhil Mina",country:"India",lang:"Vaghri",rol3:"vgr",pct_christian:35,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:24.59,lng:73.72,code:"PG048977"},{name:"Nagbansi (Dogri)",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:35,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:33.05,lng:75.08,code:"PG048317"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Chuhra",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:17.5,pop:59e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.92,lng:77.25,code:"PG049402"},{name:"Romani, Vlax",country:"Belgium",lang:"Romani, Vlax",rol3:"rmy",pct_christian:17.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.85,lng:4.38,code:"PG000068"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Kela",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:20.46,lng:85.67,code:"PG042031"},{name:"Badhi",country:"India",lang:"Pahari-Potwari",rol3:"phr",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:31.86,lng:76.82,code:"PG041983"},{name:"Baiti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:23.24,lng:88.24,code:"PG042100"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Cheintz",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:7.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:34.09,lng:74.81,code:"PG049470"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Watal",country:"India",lang:"Kashmiri",rol3:"kas",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.11,lng:74.77,code:"PG049375"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Bhangi (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:699e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.15,lng:87.53,code:"PG048219"},{name:"Kora",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:279e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.29,lng:86.43,code:"PG041592"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Od",country:"India",lang:"Oadki",rol3:"odk",pct_christian:3.5,pop:166e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:29.22,lng:75.8,code:"PG041691"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Batwal",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:108e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:32.75,lng:74.8,code:"PG041740"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Romani, Vlax, Kalderash",country:"Argentina",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:61e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-34.65,lng:-58.56,code:"PG017346"},{name:"Koch",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.68,lng:88.93,code:"PG042084"},{name:"Kotal",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:42500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.42,lng:87.79,code:"PG041946"},{name:"Romani, Vlax",country:"Colombia",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:4.64,lng:-74.11,code:"PG016290"},{name:"Vaghri",country:"India",lang:"Vaghri",rol3:"vgr",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042168"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Doai",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.05,lng:88.57,code:"PG042134"},{name:"Saryara",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:19500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:33.44,lng:75.87,code:"PG042135"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Paharia",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.37,lng:86.02,code:"PG049049"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Jogi (Bagri)",country:"India",lang:"Bagri",rol3:"bgq",pct_christian:3.5,pop:6700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.06,lng:74.08,code:"PG048278"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Behera",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.44,code:"PG041569"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Dagi",country:"India",lang:"Pahari-Potwari",rol3:"phr",pct_christian:3.5,pop:3100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:32.6,lng:76.92,code:"PG049401"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Ratal",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:32.38,lng:75.51,code:"PG049072"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Bhat (Pahari)",country:"India",lang:"Pahari-Potwari",rol3:"phr",pct_christian:3.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.66,lng:77.43,code:"PG048019"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Arain (Dogri)",country:"India",lang:"Dogri",rol3:"dgo",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:32.11,lng:75.88,code:"PG048186"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"}]},Indonesia:{target_upg:237,target_pop:200492130,target_top_langs:["Javanese","Sunda","Malay","Madura"],target_top_religion:"Islam",neighbors:[{name:"Ekagi",country:"Indonesia",lang:"Ekari",rol3:"ekg",pct_christian:75,pop:17e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.83,lng:136.16,code:"PG022913"},{name:"Damal",country:"Indonesia",lang:"Damal",rol3:"uhn",pct_christian:75,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.95,lng:137.47,code:"PG022898"},{name:"Waropen",country:"Indonesia",lang:"Waropen",rol3:"wrp",pct_christian:75,pop:9800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.32,lng:136.75,code:"PG023089"},{name:"Kayan River Kenyah",country:"Indonesia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:75,pop:9700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:1.79,lng:115.19,code:"PG022573"},{name:"Wandamen",country:"Indonesia",lang:"Wamesa",rol3:"wad",pct_christian:75,pop:7300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.19,lng:133.96,code:"PG023082"},{name:"Siagha-Yenimu",country:"Indonesia",lang:"Awyu, Edera",rol3:"awy",pct_christian:75,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.15,lng:139.79,code:"PG047129"},{name:"Sobei",country:"Indonesia",lang:"Sobei",rol3:"sob",pct_christian:75,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.9,lng:138.76,code:"PG023048"},{name:"Turu",country:"Indonesia",lang:"Iau",rol3:"tmu",pct_christian:75,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.23,lng:137.67,code:"PG023073"},{name:"Serui-Laut",country:"Indonesia",lang:"Serui-Laut",rol3:"seu",pct_christian:75,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.88,lng:136.25,code:"PG023046"},{name:"Kelinyau Kenyah",country:"Indonesia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:75,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:.97,lng:116.7,code:"PG022574"},{name:"Sekar",country:"Indonesia",lang:"Sekar",rol3:"skz",pct_christian:75,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.68,lng:132.45,code:"PG023040"},{name:"Awera",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:75,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.72,lng:136.08,code:"PG022455"},{name:"Mor",country:"Indonesia",lang:"Iha",rol3:"ihp",pct_christian:75,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.84,lng:132.97,code:"PG022996"},{name:"Dani, Western",country:"Indonesia",lang:"Dani, Western",rol3:"dnw",pct_christian:62.5,pop:266e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.77,lng:138.31,code:"PG022902"},{name:"Mamasa",country:"Indonesia",lang:"Mamasa",rol3:"mqj",pct_christian:62.5,pop:151e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.93,lng:119.31,code:"PG022838"},{name:"Dani, Mid Grand Valley",country:"Indonesia",lang:"Dani, Mid Grand Valley",rol3:"dnt",pct_christian:62.5,pop:77e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.09,lng:138.94,code:"PG022900"},{name:"Jamden",country:"Indonesia",lang:"Yamdena",rol3:"jmd",pct_christian:62.5,pop:56500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.72,lng:131.43,code:"PG022665"},{name:"Bolongan",country:"Indonesia",lang:"Bulungan",rol3:"blj",pct_christian:62.5,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:.38,lng:123.68,code:"PG022556"},{name:"Kedang",country:"Indonesia",lang:"Kedang",rol3:"ksx",pct_christian:62.5,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.25,lng:123.76,code:"PG022750"},{name:"Moni",country:"Indonesia",lang:"Moni",rol3:"mnz",pct_christian:62.5,pop:30500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.6,lng:136.94,code:"PG022995"},{name:"Kisar",country:"Indonesia",lang:"Kisar",rol3:"kje",pct_christian:62.5,pop:28500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.79,lng:126.33,code:"PG022683"},{name:"Dani, Lower Grand Valley",country:"Indonesia",lang:"Dani, Lower Grand Valley",rol3:"dni",pct_christian:62.5,pop:28500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.26,lng:138.95,code:"PG022899"},{name:"Dani, Upper Grand Valley",country:"Indonesia",lang:"Dani, Upper Grand Valley",rol3:"dna",pct_christian:62.5,pop:28500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.95,lng:138.86,code:"PG022901"},{name:"Meyah",country:"Indonesia",lang:"Meyah",rol3:"mej",pct_christian:62.5,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.07,lng:133.54,code:"PG022988"},{name:"Alune",country:"Indonesia",lang:"Alune",rol3:"alp",pct_christian:62.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.08,lng:128.41,code:"PG022622"},{name:"Galumpang",country:"Indonesia",lang:"Kalumpang",rol3:"kli",pct_christian:62.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.51,lng:119.48,code:"PG022810"},{name:"Tabaru",country:"Indonesia",lang:"Tabaru",rol3:"tby",pct_christian:62.5,pop:22500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:.75,lng:127.64,code:"PG022716"},{name:"Bantik",country:"Indonesia",lang:"Malay, Manado",rol3:"xmm",pct_christian:62.5,pop:2e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:1.5,lng:124.84,code:"PG022789"},{name:"Sougb",country:"Indonesia",lang:"Sougb",rol3:"mnx",pct_christian:62.5,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.52,lng:134.05,code:"PG022979"},{name:"Nduga",country:"Indonesia",lang:"Nduga",rol3:"ndx",pct_christian:62.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.03,lng:138.05,code:"PG023007"},{name:"Ngalum",country:"Indonesia",lang:"Ngalum",rol3:"szb",pct_christian:62.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.84,lng:140.6,code:"PG023008"},{name:"Asmat Casuarina",country:"Indonesia",lang:"Asmat, Casuarina Coast",rol3:"asc",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.18,lng:138.46,code:"PG022450"},{name:"Kupel",country:"Indonesia",lang:"Ketengban",rol3:"xte",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.36,lng:140.41,code:"PG022964"},{name:"Tehit",country:"Indonesia",lang:"Tehit",rol3:"kps",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.36,lng:131.98,code:"PG023068"},{name:"Kamoro",country:"Indonesia",lang:"Kamoro",rol3:"kgq",pct_christian:62.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.51,lng:136.26,code:"PG022935"},{name:"Leboni",country:"Indonesia",lang:"Rampi",rol3:"lje",pct_christian:62.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.13,lng:120.3,code:"PG022827"},{name:"Dobel",country:"Indonesia",lang:"Dobel",rol3:"kvo",pct_christian:62.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.2,lng:134.63,code:"PG022642"},{name:"Meninggo",country:"Indonesia",lang:"Moskona",rol3:"mtj",pct_christian:62.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.57,lng:133.18,code:"PG022990"},{name:"Southeast Marind",country:"Indonesia",lang:"Marind",rol3:"mrz",pct_christian:62.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.04,lng:140.21,code:"PG023051"},{name:"Selaru",country:"Indonesia",lang:"Selaru",rol3:"slu",pct_christian:62.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.2,lng:130.97,code:"PG022706"},{name:"Amberbaken",country:"Indonesia",lang:"Mpur",rol3:"akc",pct_christian:62.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-.73,lng:133.16,code:"PG022444"},{name:"Kulawi",country:"Indonesia",lang:"Moma",rol3:"myl",pct_christian:62.5,pop:9300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.64,lng:119.96,code:"PG022822"},{name:"Muyu North",country:"Indonesia",lang:"Muyu, North",rol3:"kti",pct_christian:62.5,pop:9300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.44,lng:140.79,code:"PG023016"},{name:"Iha",country:"Indonesia",lang:"Iha",rol3:"ihp",pct_christian:62.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.82,lng:132.32,code:"PG022922"},{name:"Wemale, North",country:"Indonesia",lang:"Wemale",rol3:"weo",pct_christian:62.5,pop:8900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.07,lng:128.83,code:"PG022694"},{name:"Seko Padang",country:"Indonesia",lang:"Seko Padang",rol3:"skx",pct_christian:62.5,pop:8100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.21,lng:119.85,code:"PG022864"},{name:"Saparua",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.55,lng:128.66,code:"PG022704"},{name:"Ansus",country:"Indonesia",lang:"Ansus",rol3:"and",pct_christian:62.5,pop:7500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.72,lng:135.78,code:"PG022446"},{name:"Awyu Asue",country:"Indonesia",lang:"Awyu, Asue",rol3:"psa",pct_christian:62.5,pop:7500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.09,lng:139.15,code:"PG022457"},{name:"Ndao",country:"Indonesia",lang:"Dhao",rol3:"nfa",pct_christian:62.5,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-10.82,lng:122.66,code:"PG022765"},{name:"Irahutu",country:"Indonesia",lang:"Irarutu",rol3:"irh",pct_christian:62.5,pop:6600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.05,lng:133.32,code:"PG022924"},{name:"Taliabo",country:"Indonesia",lang:"Taliabu",rol3:"tlv",pct_christian:62.5,pop:6e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.81,lng:125.36,code:"PG022717"},{name:"Nimboran",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.59,lng:140.2,code:"PG023010"},{name:"Tamagario",country:"Indonesia",lang:"Tamagario",rol3:"tcg",pct_christian:62.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.64,lng:138.92,code:"PG023056"},{name:"Tepera",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.46,lng:140.39,code:"PG023069"},{name:"Hupla",country:"Indonesia",lang:"Hupla",rol3:"hap",pct_christian:62.5,pop:5400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.35,lng:139.17,code:"PG022921"},{name:"Seluwasan",country:"Indonesia",lang:"Seluwasan",rol3:"sws",pct_christian:62.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.67,lng:131.23,code:"PG022707"},{name:"Sawuy",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:5100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-10.54,lng:121.85,code:"PG023038"},{name:"Babar Tenggara",country:"Indonesia",lang:"Babar, Southeast",rol3:"vbb",pct_christian:62.5,pop:5e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.96,lng:129.8,code:"PG022628"},{name:"Eipomek",country:"Indonesia",lang:"Lik",rol3:"eip",pct_christian:62.5,pop:4900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.36,lng:140.03,code:"PG022912"},{name:"Wambon",country:"Indonesia",lang:"Wambon",rol3:"wms",pct_christian:62.5,pop:4900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.47,lng:140.51,code:"PG023080"},{name:"Liana-Seti",country:"Indonesia",lang:"Liana-Seti",rol3:"ste",pct_christian:62.5,pop:4700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.12,lng:129.89,code:"PG022710"},{name:"Muyu South",country:"Indonesia",lang:"Muyu, South",rol3:"kts",pct_christian:62.5,pop:4600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.01,lng:140.84,code:"PG023052"},{name:"Kalabra",country:"Indonesia",lang:"Kalabra",rol3:"kzz",pct_christian:62.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.37,lng:131.65,code:"PG022932"},{name:"Nipsan",country:"Indonesia",lang:"Nipsan",rol3:"nps",pct_christian:62.5,pop:3700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.23,lng:139.04,code:"PG023012"},{name:"Seko, Central",country:"Indonesia",lang:"Seko Tengah",rol3:"sko",pct_christian:62.5,pop:3600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.49,lng:119.82,code:"PG022865"},{name:"Padoe",country:"Indonesia",lang:"Padoe",rol3:"pdo",pct_christian:62.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.46,lng:121.05,code:"PG022868"},{name:"Nafri",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.67,lng:140.74,code:"PG023003"},{name:"Pom",country:"Indonesia",lang:"Pom",rol3:"pmo",pct_christian:62.5,pop:3300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.65,lng:135.63,code:"PG023024"},{name:"Kurudu",country:"Indonesia",lang:"Kurudu",rol3:"kjr",pct_christian:62.5,pop:3200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.85,lng:137.01,code:"PG022966"},{name:"Yaosakor Asmat",country:"Indonesia",lang:"Asmat, Yaosakor",rol3:"asy",pct_christian:62.5,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.62,lng:138.54,code:"PG023099"},{name:"Mairasi",country:"Indonesia",lang:"Mairasi",rol3:"zrs",pct_christian:62.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.47,lng:134.02,code:"PG022976"},{name:"Marau",country:"Indonesia",lang:"Marau",rol3:"mvr",pct_christian:62.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.68,lng:135.79,code:"PG022982"},{name:"Somahai",country:"Indonesia",lang:"Momuna",rol3:"mqf",pct_christian:62.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5,lng:139.24,code:"PG023049"},{name:"Uria",country:"Indonesia",lang:"Orya",rol3:"ury",pct_christian:62.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.84,lng:139.74,code:"PG023074"},{name:"Inanwatan",country:"Indonesia",lang:"Suabo",rol3:"szp",pct_christian:62.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.07,lng:132.16,code:"PG022923"},{name:"Kemberano",country:"Indonesia",lang:"Kemberano",rol3:"bzp",pct_christian:62.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.37,lng:132.97,code:"PG022933"},{name:"Saberi",country:"Indonesia",lang:"Isirawa",rol3:"srl",pct_christian:62.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.82,lng:138.48,code:"PG023030"},{name:"Iria",country:"Indonesia",lang:"Kamberau",rol3:"irx",pct_christian:62.5,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.45,lng:133.58,code:"PG022926"},{name:"Riantana",country:"Indonesia",lang:"Riantana",rol3:"ran",pct_christian:62.5,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.68,lng:138.59,code:"PG023028"},{name:"Ninggrum",country:"Indonesia",lang:"Ninggerum",rol3:"nxr",pct_christian:62.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.3,lng:140.95,code:"PG023011"},{name:"Woi",country:"Indonesia",lang:"Woi",rol3:"wbw",pct_christian:62.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.64,lng:135.5,code:"PG023092"},{name:"Mekwei",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.51,lng:140.37,code:"PG022989"},{name:"Seget",country:"Indonesia",lang:"Moi Lemas",rol3:"sbg",pct_christian:62.5,pop:1900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.34,lng:131.17,code:"PG023039"},{name:"Demta",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.37,lng:140.16,code:"PG022906"},{name:"Berik",country:"Indonesia",lang:"Berik",rol3:"bkl",pct_christian:62.5,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.35,lng:138.86,code:"PG022467"},{name:"Bonfia",country:"Indonesia",lang:"Masiwang",rol3:"bnf",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.39,lng:130.57,code:"PG022636"},{name:"Davelor",country:"Indonesia",lang:"Dawera-Daweloor",rol3:"ddw",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.75,lng:130.04,code:"PG022641"},{name:"Dem",country:"Indonesia",lang:"Dem",rol3:"dem",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.73,lng:137.58,code:"PG022904"},{name:"Kamberataro",country:"Indonesia",lang:"Dla",rol3:"kbv",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.54,lng:140.96,code:"PG022934"},{name:"Kaugat",country:"Indonesia",lang:"Atohwaim",rol3:"aqm",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.28,lng:138.68,code:"PG022943"},{name:"Moraid",country:"Indonesia",lang:"Moraid",rol3:"msg",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.05,lng:131.88,code:"PG022998"},{name:"Ndom",country:"Indonesia",lang:"Ndom",rol3:"nqm",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.09,lng:138,code:"PG023006"},{name:"Sempan",country:"Indonesia",lang:"Sempan",rol3:"xse",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.04,lng:137.68,code:"PG023043"},{name:"Waris",country:"Indonesia",lang:"Waris",rol3:"wrs",pct_christian:62.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.24,lng:140.93,code:"PG023087"},{name:"Northern Asmat",country:"Indonesia",lang:"Asmat, North",rol3:"nks",pct_christian:62.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.69,lng:138.52,code:"PG023015"},{name:"Semimi",country:"Indonesia",lang:"Semimi",rol3:"etz",pct_christian:62.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.77,lng:134.45,code:"PG023042"},{name:"Panasuan",country:"Indonesia",lang:"Panasuan",rol3:"psn",pct_christian:62.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.26,lng:119.65,code:"PG022852"},{name:"Talondo",country:"Indonesia",lang:"Talondo’",rol3:"tln",pct_christian:62.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.51,lng:119.34,code:"PG022874"},{name:"Asienara, Buruwai",country:"Indonesia",lang:"Buruwai",rol3:"asi",pct_christian:62.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.59,lng:133.34,code:"PG022452"},{name:"Duvele",country:"Indonesia",lang:"Duvle",rol3:"duv",pct_christian:62.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.16,lng:137.97,code:"PG022911"},{name:"Taikat",country:"Indonesia",lang:"Taikat",rol3:"aos",pct_christian:62.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.86,lng:140.65,code:"PG023055"},{name:"Masela, West",country:"Indonesia",lang:"Masela, West",rol3:"mss",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.19,lng:129.83,code:"PG022735"},{name:"Kayupulau",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.54,lng:140.72,code:"PG022949"},{name:"Papuma",country:"Indonesia",lang:"Papuma",rol3:"ppm",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.74,lng:135.86,code:"PG023022"},{name:"Wanggom",country:"Indonesia",lang:"Wanggom",rol3:"wng",pct_christian:62.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-5.55,lng:140.17,code:"PG023083"},{name:"Dai",country:"Indonesia",lang:"Dai",rol3:"dij",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.55,lng:129.69,code:"PG022640"},{name:"Kaburi",country:"Indonesia",lang:"Kaburi",rol3:"uka",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.91,lng:132.48,code:"PG022929"},{name:"Kampung Baru",country:"Indonesia",lang:"Kais",rol3:"kzm",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.73,lng:132.29,code:"PG022936"},{name:"Puragi",country:"Indonesia",lang:"Puragi",rol3:"pru",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.94,lng:132.24,code:"PG023025"},{name:"Tanahmerah",country:"Indonesia",lang:"Tanahmerah",rol3:"tcm",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.56,lng:133.17,code:"PG023058"},{name:"Masela, East",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.14,lng:129.87,code:"PG022644"},{name:"Masela, Central",country:"Indonesia",lang:"Masela, West",rol3:"mss",pct_christian:62.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.18,lng:129.84,code:"PG022712"},{name:"Mawes",country:"Indonesia",lang:"Mawes",rol3:"mgk",pct_christian:62.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.36,lng:139.67,code:"PG022987"},{name:"Bonggo",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.31,lng:139.57,code:"PG022471"},{name:"Kaibubu",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.16,lng:128.22,code:"PG022667"},{name:"Keder",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.04,lng:139.05,code:"PG022950"},{name:"Bonefa",country:"Indonesia",lang:"Nisa",rol3:"njs",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.34,lng:137.23,code:"PG022470"},{name:"Konda",country:"Indonesia",lang:"Konda",rol3:"knd",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.56,lng:132.01,code:"PG022957"},{name:"Lepki",country:"Indonesia",lang:"Lepki",rol3:"lpe",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.13,lng:140.48,code:"PG022973"},{name:"Manem",country:"Indonesia",lang:"Manem",rol3:"jet",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.97,lng:140.9,code:"PG022978"},{name:"Yelmek",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-7.44,lng:139.16,code:"PG023105"},{name:"Kanum",country:"Indonesia",lang:"Kanum, Ngkâlmpw",rol3:"kcd",pct_christian:62.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.51,lng:140.84,code:"PG022938"},{name:"Tarunggare",country:"Indonesia",lang:"Tunggare",rol3:"trt",pct_christian:62.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.28,lng:135.6,code:"PG023063"},{name:"Kwansu",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.57,lng:140.29,code:"PG022968"},{name:"Papasena",country:"Indonesia",lang:"Papasena",rol3:"pas",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.8,lng:138.63,code:"PG023021"},{name:"Samarkena",country:"Indonesia",lang:"Samarokena",rol3:"tmj",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.83,lng:138.26,code:"PG023031"},{name:"Tarpia",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.37,lng:140.05,code:"PG023062"},{name:"Baburiwa",country:"Indonesia",lang:"Eritai",rol3:"ert",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.73,lng:138.12,code:"PG022459"},{name:"Serili",country:"Indonesia",lang:"Malay, Ambonese",rol3:"abs",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.11,lng:129.91,code:"PG022708"},{name:"Kaure",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.24,lng:140.11,code:"PG022944"},{name:"Koneraw",country:"Indonesia",lang:"Koneraw",rol3:"kdw",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-8.36,lng:138.07,code:"PG022958"},{name:"Wakde",country:"Indonesia",lang:"Mo",rol3:"wkd",pct_christian:62.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.99,lng:138.99,code:"PG023078"},{name:"Sukubatong",country:"Indonesia",lang:"Kimki",rol3:"sbt",pct_christian:62.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.37,lng:140.91,code:"PG023054"},{name:"Taori-So",country:"Indonesia",lang:"Doutai",rol3:"tds",pct_christian:62.5,pop:475,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.31,lng:138.14,code:"PG023061"},{name:"Yotafa",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:475,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.58,lng:140.68,code:"PG023109"},{name:"Lorang",country:"Indonesia",lang:"Lorang",rol3:"lrn",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-6.3,lng:134.42,code:"PG022685"},{name:"Kirira",country:"Indonesia",lang:"Kirikiri",rol3:"kiy",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.18,lng:137.18,code:"PG022953"},{name:"Saweru",country:"Indonesia",lang:"Saweru",rol3:"swr",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-1.91,lng:136.29,code:"PG023037"},{name:"Yamna",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.1,lng:139.21,code:"PG023098"},{name:"Masimasi",country:"Indonesia",lang:"Malay, Papuan",rol3:"pmy",pct_christian:62.5,pop:425,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2,lng:139.14,code:"PG022984"},{name:"Sause",country:"Indonesia",lang:"Sause",rol3:"sao",pct_christian:62.5,pop:425,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.24,lng:139.62,code:"PG023036"},{name:"Biksi",country:"Indonesia",lang:"Yetfa",rol3:"yet",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-4.04,lng:140.79,code:"PG022469"},{name:"Karas",country:"Indonesia",lang:"Indonesian",rol3:"ind",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.45,lng:132.68,code:"PG022940"},{name:"Sasawa",country:"Indonesia",lang:"Kwerba",rol3:"kwe",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.18,lng:138.47,code:"PG023034"},{name:"Yeretuar",country:"Indonesia",lang:"Yeretuar",rol3:"gop",pct_christian:62.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.04,lng:134.68,code:"PG023106"},{name:"Foau",country:"Indonesia",lang:"Foau",rol3:"flh",pct_christian:62.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.99,lng:139.29,code:"PG022917"},{name:"Kosare",country:"Indonesia",lang:"Kosare",rol3:"kiq",pct_christian:62.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.75,lng:140.22,code:"PG022962"},{name:"Rasawa",country:"Indonesia",lang:"Rasawa",rol3:"rac",pct_christian:62.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-2.35,lng:136.41,code:"PG023027"},{name:"Elseng",country:"Indonesia",lang:"Elseng",rol3:"mrf",pct_christian:62.5,pop:325,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:-3.1,lng:140.39,code:"PG023000"}]},Bangladesh:{target_upg:276,target_pop:172467300,target_top_langs:["Bengali","Sylheti","Rohingya","Urdu"],target_top_religion:"Islam",neighbors:[{name:"Garo",country:"Bangladesh",lang:"Garo",rol3:"grt",pct_christian:62.5,pop:137e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.79,lng:90.47,code:"PG001167"},{name:"Pangkhu",country:"Bangladesh",lang:"Pangkhua",rol3:"pkh",pct_christian:62.5,pop:5400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.85,lng:92.38,code:"PG001197"},{name:"Santal",country:"Bangladesh",lang:"Santhali",rol3:"sat",pct_christian:45,pop:21e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.62,lng:88.79,code:"PG001203"},{name:"Migam",country:"Bangladesh",lang:"Megam",rol3:"mef",pct_christian:45,pop:8700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.09,lng:91,code:"PG001190"},{name:"Southern Chin",country:"Bangladesh",lang:"Chin, Asho",rol3:"csh",pct_christian:45,pop:4600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.96,lng:92.37,code:"PG001206"},{name:"Riang",country:"Bangladesh",lang:"Riang",rol3:"ria",pct_christian:45,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.56,lng:92.27,code:"PG001200"},{name:"Mahale",country:"Bangladesh",lang:"Santhali",rol3:"sat",pct_christian:35,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.62,lng:88.78,code:"PG001187"},{name:"Khumi Chin",country:"Bangladesh",lang:"Chin, Khumi",rol3:"cnk",pct_christian:35,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.8,lng:92.5,code:"PG001180"},{name:"Lushai",country:"Bangladesh",lang:"Mizo",rol3:"lus",pct_christian:35,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.67,lng:92.19,code:"PG001185"},{name:"Koch",country:"Bangladesh",lang:"Koch",rol3:"kdq",pct_christian:25,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.79,lng:89.7,code:"PG001181"},{name:"Munda",country:"Bangladesh",lang:"Mundari",rol3:"unr",pct_christian:25,pop:5800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:25.4,lng:88.78,code:"PG001192"},{name:"Oraon",country:"Bangladesh",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:89500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.86,lng:88.88,code:"PG001195"},{name:"Han Chinese",country:"Bangladesh",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:3500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.75,lng:90.4,code:"PG001172"},{name:"Marma",country:"Bangladesh",lang:"Marma",rol3:"rmz",pct_christian:3.5,pop:276e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:22.56,lng:92.24,code:"PG001189"},{name:"Tripuri",country:"Bangladesh",lang:"Kok Borok",rol3:"trp",pct_christian:3.5,pop:142e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:23.74,lng:91.28,code:"PG001215"},{name:"Manipuri",country:"Bangladesh",lang:"Meitei",rol3:"mni",pct_christian:3.5,pop:44e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:24.73,lng:91.74,code:"PG001188"},{name:"Mru",country:"Bangladesh",lang:"Mru",rol3:"mro",pct_christian:3.5,pop:35e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.71,lng:92.45,code:"PG001191"},{name:"Bawm",country:"Bangladesh",lang:"Chin, Bawm",rol3:"bgr",pct_christian:3.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.95,lng:92.46,code:"PG001153"},{name:"British",country:"Bangladesh",lang:"English",rol3:"eng",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:23.73,lng:90.42,code:"PG001159"},{name:"Hajong",country:"Bangladesh",lang:"Hajong",rol3:"haj",pct_christian:3.5,pop:9500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:25.11,lng:90.37,code:"PG001170"},{name:"Mara",country:"Bangladesh",lang:"Shendu",rol3:"shl",pct_christian:3.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.2,lng:92.54,code:"PG001204"},{name:"Ansari-Momin (Sadri)",country:"India",lang:"Sadri",rol3:"sck",pct_christian:75,pop:225,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.63,lng:85.55,code:"PG048700"},{name:"Pnar",country:"India",lang:"Pnar",rol3:"pbv",pct_christian:62.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.84,lng:92.89,code:"PG049638"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Khasi",country:"India",lang:"Khasi",rol3:"kha",pct_christian:45,pop:1675e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:25.52,lng:91.79,code:"PG041380"},{name:"Santal (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:45,pop:176e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.8,lng:87.48,code:"PG046353"},{name:"Madgi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:76500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.17,lng:79.45,code:"PG041802"},{name:"Mech",country:"India",lang:"Assamese",rol3:"asm",pct_christian:25,pop:73500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.1,lng:92.43,code:"PG041900"},{name:"Godari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.69,lng:83.22,code:"PG049205"},{name:"Ghogia",country:"India",lang:"Odia",rol3:"ory",pct_christian:25,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.15,lng:84.09,code:"PG049008"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"Arakala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:375,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.11,lng:83.4,code:"PG049160"},{name:"Mala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:7615e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.36,lng:79.51,code:"PG041263"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Ojha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:46e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.74,lng:78.25,code:"PG041974"},{name:"Goudu",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.71,lng:83.25,code:"PG042158"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Bari (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.86,lng:84.8,code:"PG048204"},{name:"Candhai Maru",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.48,lng:83.97,code:"PG049648"},{name:"Madiga",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:9445e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.51,lng:79.06,code:"PG041253"},{name:"Chakkiliyan",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1205e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:77.71,code:"PG041373"},{name:"Nadua Shabar",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:659e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:19.9,lng:85.17,code:"PG049502"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Panchama",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:7800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.01,lng:81.79,code:"PG042086"},{name:"Padigarajulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.58,lng:79.51,code:"PG049165"},{name:"Kuda",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.83,lng:85.53,code:"PG049016"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Tharua",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.49,lng:86.93,code:"PG049031"},{name:"Dusadh",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:7.5,pop:691e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:25.23,lng:85.31,code:"PG041266"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Pano",country:"India",lang:"Odia",rol3:"ory",pct_christian:7.5,pop:1735e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:21.04,lng:85.14,code:"PG041345"},{name:"Munda (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:1235e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.97,lng:94.06,code:"PG048248"},{name:"Santal (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:697e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.55,lng:92.86,code:"PG046151"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Telugu",country:"Malaysia",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:137e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.62,code:"PG009356"},{name:"Ghanchi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:129e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.02,lng:73.03,code:"PG041585"},{name:"Mishmi",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:51500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.99,lng:96.59,code:"PG042163"},{name:"Badaik",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:47500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.23,lng:84.86,code:"PG042092"},{name:"Parhaiya",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.97,lng:84.3,code:"PG041928"},{name:"Mala Dasari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:15.53,lng:78,code:"PG041919"},{name:"Kela",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:20.46,lng:85.67,code:"PG042031"},{name:"Baiti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:23.24,lng:88.24,code:"PG042100"},{name:"Chhetri",country:"India",lang:"Nepali",rol3:"npi",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.34,lng:89.24,code:"PG041565"},{name:"Thoti",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:19.26,lng:79.01,code:"PG042167"},{name:"Bhandari",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.56,lng:73.13,code:"PG041414"},{name:"Ellamalawar",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.37,lng:76.49,code:"PG042033"},{name:"Gandla",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.61,lng:79.51,code:"PG041598"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Telugu",country:"Singapore",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:1.36,lng:103.82,code:"PG010724"},{name:"Gudugudupandi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.88,lng:78.56,code:"PG049883"},{name:"Banai",country:"India",lang:"Assamese",rol3:"asm",pct_christian:7.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.61,lng:90.3,code:"PG049560"},{name:"Patni Vankar",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:325,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.04,lng:72.6,code:"PG049948"},{name:"Yadava (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:8465e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.05,lng:84.06,code:"PG046313"},{name:"Chamar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:455e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.65,lng:84.13,code:"PG046025"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Mahyavanshi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:2305e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.73,lng:71.51,code:"PG041327"},{name:"Gujarati",country:"Pakistan",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:146e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.88,lng:70.3,code:"PG006352"},{name:"Ganda",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:128e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.6,lng:83.11,code:"PG041366"},{name:"Ho",country:"India",lang:"Ho",rol3:"hoc",pct_christian:3.5,pop:118e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:22.28,lng:85.76,code:"PG041399"},{name:"Gond (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:856e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.12,lng:83.68,code:"PG048258"},{name:"Kondara",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:702e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.46,lng:85.67,code:"PG041421"},{name:"Bhangi (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:699e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.15,lng:87.53,code:"PG048219"},{name:"Gond (Assamese)",country:"India",lang:"Assamese",rol3:"asm",pct_christian:3.5,pop:55e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.95,lng:94.05,code:"PG048259"},{name:"Adi Andhra",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:344e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.06,lng:81.75,code:"PG049197"},{name:"Lohara",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:324e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:25.14,lng:87.24,code:"PG041542"},{name:"Kora",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:279e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.29,lng:86.43,code:"PG041592"},{name:"Beda Jangam",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.11,lng:76.53,code:"PG041759"},{name:"Chakma",country:"India",lang:"Chakma",rol3:"ccp",pct_christian:3.5,pop:205e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Folk",lat:23.41,lng:92.17,code:"PG041710"},{name:"Mala Sale",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:169e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:19.26,lng:79.01,code:"PG041624"},{name:"Domban",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:163e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.35,lng:78.88,code:"PG042124"},{name:"Gurung",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:147e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.84,lng:90.63,code:"PG041693"},{name:"Nepali",country:"Bhutan",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.13,lng:89.79,code:"PG042388"},{name:"Beldar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:115e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.35,lng:83.71,code:"PG048209"},{name:"Kotia",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:104e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.9,lng:82.7,code:"PG041783"},{name:"Rajbhar",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:89e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.68,lng:80.47,code:"PG042085"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Bania, Brittial",country:"India",lang:"Assamese",rol3:"asm",pct_christian:3.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.14,lng:91.55,code:"PG041797"},{name:"Damai (Nepali)",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:66500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.66,lng:89.08,code:"PG041874"},{name:"Kunbi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.24,lng:70.76,code:"PG046238"},{name:"Mukha Dhora",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:56e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.9,lng:82.7,code:"PG042032"},{name:"Koch",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.68,lng:88.93,code:"PG042084"},{name:"Bagheti",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:20.46,lng:85.67,code:"PG041964"},{name:"Kotal",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:42500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.42,lng:87.79,code:"PG041946"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Omanatya",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:18.81,lng:82.76,code:"PG042004"},{name:"Mala Jangam",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:34e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.36,lng:76.78,code:"PG041898"},{name:"Burmese",country:"Malaysia",lang:"Burmese",rol3:"mya",pct_christian:3.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018483"},{name:"Binjhia",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22,lng:82.34,code:"PG042025"},{name:"Bariki",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:19.64,lng:84.68,code:"PG041881"},{name:"Bargunda",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.38,lng:75.65,code:"PG042022"},{name:"Sudugadu Siddha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:12.99,lng:76.11,code:"PG042143"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Gond (Sadri) ",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.17,lng:85,code:"PG048262"},{name:"Pap",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:23500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:21.21,lng:83.34,code:"PG042122"},{name:"Doai",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.05,lng:88.57,code:"PG042134"},{name:"Byagara",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.88,lng:78.22,code:"PG041825"},{name:"Konda Kapu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:18500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.19,lng:82.01,code:"PG041904"},{name:"Sarki",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.96,lng:88.33,code:"PG042059"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Telugu",country:"Sri Lanka",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:6.91,lng:79.9,code:"PG006443"},{name:"Pentia",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:18.81,lng:82.76,code:"PG042165"},{name:"Panka (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:19.21,lng:82.51,code:"PG049026"},{name:"Gorait",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.21,lng:85.33,code:"PG042169"},{name:"Jaggali",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:9700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:19.64,lng:84.68,code:"PG042152"},{name:"Paharia",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.37,lng:86.02,code:"PG049049"},{name:"Madiga Dasu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:7400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.39,lng:80.11,code:"PG049163"},{name:"Assamese",country:"Bhutan",lang:"Assamese",rol3:"asm",pct_christian:3.5,pop:7300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.87,lng:90.38,code:"PG001218"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Mali",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.9,lng:82.7,code:"PG047911"},{name:"Dakkala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.39,lng:83.94,code:"PG041849"},{name:"Behera",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.44,code:"PG041569"},{name:"Thogataveera Kshatriya",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:3100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.4,lng:77.89,code:"PG049753"},{name:"Kanda",country:"India",lang:"Odia",rol3:"ory",pct_christian:3.5,pop:3100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.9,lng:91.74,code:"PG049042"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Reddi Dora",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:2600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.68,lng:83.21,code:"PG049166"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"},{name:"Bhagotulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:3.5,pop:450,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.89,lng:81.4,code:"PG049859"},{name:"Kusunda",country:"Nepal",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.17,lng:85.13,code:"PG049141"}]},China:{target_upg:444,target_pop:139759490,target_top_langs:["Chinese, Xiang","Chinese, Mandarin","Uyghur","Mongolian, Peripheral"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Ayi",country:"China",lang:"Lisu",rol3:"lis",pct_christian:62.5,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.14,lng:98.85,code:"PG006671"},{name:"Xiandao",country:"China",lang:"Achang",rol3:"acn",pct_christian:62.5,pop:200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.52,lng:97.88,code:"PG022125"},{name:"Hkauri",country:"China",lang:"Tibetan, Central",rol3:"bod",pct_christian:62.5,pop:40,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.55,lng:97.6,code:"PG022169"},{name:"Gha-Mu",country:"China",lang:"Miao, Small Flowery",rol3:"sfm",pct_christian:45,pop:171e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.53,lng:105.11,code:"PG006745"},{name:"Lipo, Eastern",country:"China",lang:"Lipo",rol3:"lpo",pct_christian:45,pop:139e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.84,lng:102.3,code:"PG007265"},{name:"Rawang",country:"China",lang:"Rawang",rol3:"raw",pct_christian:45,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.73,lng:98.31,code:"PG023113"},{name:"Lisu",country:"China",lang:"Lisu",rol3:"lis",pct_christian:35,pop:837e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.84,lng:99.07,code:"PG007267"},{name:"A-Hmao",country:"China",lang:"Miao, Large Flowery",rol3:"hmd",pct_christian:35,pop:644e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.11,lng:103.41,code:"PG006652"},{name:"Indonesian",country:"China",lang:"Indonesian",rol3:"ind",pct_christian:35,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.24,lng:110.15,code:"PG007207"},{name:"Maru",country:"China",lang:"Lhao Vo",rol3:"mhx",pct_christian:25,pop:31e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.33,lng:98.43,code:"PG007279"},{name:"Jingpo",country:"China",lang:"Jingpho",rol3:"kac",pct_christian:25,pop:29500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.41,lng:97.86,code:"PG007217"},{name:"Laka",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:25,pop:9700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.04,lng:102.28,code:"PG007241"},{name:"Lagou",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:25,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.23,lng:104.52,code:"PG007237"},{name:"Lashi",country:"China",lang:"Lacid",rol3:"lsi",pct_christian:25,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.06,lng:98.66,code:"PG007248"},{name:"Nasu, Eastern",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:17.5,pop:65e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.07,lng:102.78,code:"PG007326"},{name:"Nasu, Wusa",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:17.5,pop:412e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.27,lng:103.71,code:"PG007426"},{name:"Naluo",country:"China",lang:"Nuosu",rol3:"iii",pct_christian:17.5,pop:62500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.83,lng:102.4,code:"PG007323"},{name:"Minglang",country:"China",lang:"Sani",rol3:"ysn",pct_christian:17.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.77,lng:102.27,code:"PG007303"},{name:"Lawa",country:"China",lang:"Lawa, Western",rol3:"lcp",pct_christian:12.5,pop:67500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:23.84,lng:99.19,code:"PG007250"},{name:"Nu",country:"China",lang:"Nusu",rol3:"nuf",pct_christian:12.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.08,lng:98.94,code:"PG007338"},{name:"Guopu",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:12.5,pop:26500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.31,lng:104.13,code:"PG006753"},{name:"Bela",country:"China",lang:"Pela",rol3:"bxd",pct_christian:12.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:24.61,lng:98.31,code:"PG006684"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Han Chinese, Wu",country:"China",lang:"Chinese, Wu",rol3:"wuu",pct_christian:7.5,pop:9253e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:29.71,lng:119.11,code:"PG006806"},{name:"Han Chinese, Cantonese",country:"China",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6477e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.94,lng:111.32,code:"PG006808"},{name:"Han Chinese, Jinyu",country:"China",lang:"Chinese, Jinyu",rol3:"cjy",pct_christian:7.5,pop:6031e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:38.74,lng:111.39,code:"PG006801"},{name:"Han Chinese, Xiang",country:"China",lang:"Chinese, Xiang",rol3:"hsn",pct_christian:7.5,pop:423e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:27.97,lng:111.27,code:"PG006807"},{name:"Han Chinese, Gan",country:"China",lang:"Chinese, Gan",rol3:"gan",pct_christian:7.5,pop:4128e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:28.29,lng:115.02,code:"PG006798"},{name:"Han Chinese, Min Nan",country:"China",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:3555e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:23.42,lng:115.05,code:"PG006805"},{name:"Han Chinese, Min Bei",country:"China",lang:"Chinese, Min Bei",rol3:"mnp",pct_christian:7.5,pop:113e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:26.93,lng:117.92,code:"PG006803"},{name:"Han Chinese, Min Dong",country:"China",lang:"Chinese, Min Dong",rol3:"cdo",pct_christian:7.5,pop:106e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:26.54,lng:119.2,code:"PG006804"},{name:"Han Chinese, Puxian",country:"China",lang:"Chinese, Pu-Xian",rol3:"cpx",pct_christian:7.5,pop:31e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:25.37,lng:118.86,code:"PG007003"},{name:"Lahu",country:"China",lang:"Lahu",rol3:"lhu",pct_christian:7.5,pop:59e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.76,lng:99.83,code:"PG007238"},{name:"Wumeng",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:7.5,pop:61500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.46,lng:103.62,code:"PG022123"},{name:"Puwa",country:"China",lang:"Phowa, Hlepho",rol3:"yhl",pct_christian:7.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.46,lng:103.33,code:"PG022103"},{name:"Achang",country:"China",lang:"Achang",rol3:"acn",pct_christian:7.5,pop:38500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:24.64,lng:98.23,code:"PG006653"},{name:"Drung",country:"China",lang:"Drung",rol3:"duu",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:27.87,lng:98.32,code:"PG006724"},{name:"Depo",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:7.5,pop:9900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.39,lng:101.95,code:"PG006723"},{name:"Tuwo",country:"China",lang:"Lisu",rol3:"lis",pct_christian:7.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.05,lng:98.67,code:"PG007417"},{name:"Han Chinese, Huizhou",country:"China",lang:"Chinese, Huizhou",rol3:"czh",pct_christian:3.5,pop:542e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:29.62,lng:118.21,code:"PG006800"},{name:"Han Chinese, Min Zhong",country:"China",lang:"Chinese, Min Zhong",rol3:"czo",pct_christian:3.5,pop:963e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:26.14,lng:117.51,code:"PG006979"},{name:"Chuanlan",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:416e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.86,lng:105.07,code:"PG006713"},{name:"Han Chinese, Waxianghua",country:"China",lang:"Waxianghua",rol3:"wxa",pct_christian:3.5,pop:385e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:28.71,lng:110.24,code:"PG007076"},{name:"Xibe",country:"China",lang:"Xibe",rol3:"sjo",pct_christian:3.5,pop:151e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.78,lng:123.3,code:"PG007432"},{name:"Zaiwa",country:"China",lang:"Zaiwa",rol3:"atb",pct_christian:3.5,pop:142e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.36,lng:98.39,code:"PG007451"},{name:"Nosu, Tianba",country:"China",lang:"Nuosu",rol3:"iii",pct_christian:3.5,pop:138e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:28.87,lng:102.87,code:"PG022214"},{name:"Manchu",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:132e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:47.66,lng:124.56,code:"PG007275"},{name:"Naisu",country:"China",lang:"Yi, Wuding-Luquan",rol3:"ywq",pct_christian:3.5,pop:82e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:25.49,lng:101.86,code:"PG007322"},{name:"Maonan",country:"China",lang:"Maonan",rol3:"mmd",pct_christian:3.5,pop:79e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Daoism",lat:24.99,lng:108.02,code:"PG007278"},{name:"Michi",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:49e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:25.78,lng:102.18,code:"PG007300"},{name:"Muji, Southern",country:"China",lang:"Muji, Southern",rol3:"ymc",pct_christian:3.5,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.09,lng:103.31,code:"PG007319"},{name:"Neisu",country:"China",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:28e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.17,lng:100.64,code:"PG007334"},{name:"Sansu",country:"China",lang:"Hlersu",rol3:"hle",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.55,lng:102.25,code:"PG007382"},{name:"Laopang",country:"China",lang:"Laopang",rol3:"lbg",pct_christian:3.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:23.78,lng:99.39,code:"PG007247"},{name:"Achang, Husa",country:"China",lang:"Achang",rol3:"acn",pct_christian:3.5,pop:8500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Mahayana",lat:24.45,lng:97.87,code:"PG006654"},{name:"Gouzou",country:"China",lang:"Nasu, Wusa",rol3:"yig",pct_christian:3.5,pop:6400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:26.92,lng:104.5,code:"PG006750"},{name:"Meng",country:"China",lang:"Hani",rol3:"hni",pct_christian:3.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.89,lng:101.81,code:"PG007280"},{name:"Zauzou",country:"China",lang:"Zauzou",rol3:"zal",pct_christian:3.5,pop:3800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:26.37,lng:99.01,code:"PG007453"},{name:"Naxi, Northern",country:"China",lang:"Naxi",rol3:"nxq",pct_christian:3.5,pop:3500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:28.78,lng:98.73,code:"PG022209"},{name:"Duoluo",country:"China",lang:"Duoluo",rol3:"giw",pct_christian:3.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:25.71,lng:105.63,code:"PG022159"},{name:"Fuma",country:"China",lang:"Hlai",rol3:"lic",pct_christian:3.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:19.33,lng:108.75,code:"PG006737"},{name:"Thmaun",country:"Cambodia",lang:"Undetermined",rol3:"und",pct_christian:45,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.12,lng:106.43,code:"PG022376"},{name:"Hmong",country:"Vietnam",lang:"Hmong Daw",rol3:"mww",pct_christian:35,pop:133e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.86,lng:103.59,code:"PG011142"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Rukai",country:"Taiwan",lang:"Rukai",rol3:"dru",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.82,lng:120.83,code:"PG007516"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Korean",country:"Argentina",lang:"Korean",rol3:"kor",pct_christian:25,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG046918"},{name:"Korean",country:"Singapore",lang:"Korean",rol3:"kor",pct_christian:25,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:1.36,lng:103.82,code:"PG010710"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"Korean",country:"Taiwan",lang:"Korean",rol3:"kor",pct_christian:25,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.63,lng:120.33,code:"PG007526"},{name:"Lanten",country:"Laos",lang:"Kim Mun",rol3:"mji",pct_christian:25,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:21.92,lng:101.91,code:"PG020923"},{name:"Korean",country:"Northern Mariana Islands",lang:"Korean",rol3:"kor",pct_christian:25,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:15.91,lng:145.61,code:"PG050228"},{name:"Korean",country:"Australia",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:167e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-33.85,lng:151.03,code:"PG021625"},{name:"Korean",country:"Canada",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:46.93,lng:-92.67,code:"PG043424"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Adi Minyong",country:"India",lang:"Adi",rol3:"adi",pct_christian:17.5,pop:5e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:28.05,lng:94.43,code:"PG041950"},{name:"Korean",country:"United Kingdom",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.5,lng:-.17,code:"PG000650"},{name:"Korean",country:"New Zealand",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-36.89,lng:174.78,code:"PG047592"},{name:"Korean",country:"Hong Kong",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.38,lng:114.13,code:"PG050601"},{name:"Korean",country:"Paraguay",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.3,lng:-57.56,code:"PG017246"},{name:"Korean",country:"Guam",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.44,lng:144.78,code:"PG050301"},{name:"Korean",country:"Dominican Republic",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:18.48,lng:-69.91,code:"PG022409"},{name:"Korean",country:"South Korea",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:5025e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.38,lng:127.82,code:"PG048088"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Nikkei, Brazilian",country:"Japan",lang:"Japanese",rol3:"jpn",pct_christian:12.5,pop:104e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:35.13,lng:136.92,code:"PG049262"},{name:"Korean",country:"Mozambique",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.89,lng:32.57,code:"PG015382"},{name:"Korean",country:"Madagascar",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-18.91,lng:47.53,code:"PG015310"},{name:"Blang",country:"Myanmar",lang:"Blang",rol3:"blr",pct_christian:12.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:21.5,lng:100.17,code:"PG022041"},{name:"Hsifan",country:"Myanmar",lang:"Tibetan, Central",rol3:"bod",pct_christian:12.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Tibetan",lat:27.24,lng:97.64,code:"PG009445"},{name:"Puroik",country:"India",lang:"Adi",rol3:"adi",pct_christian:12.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:27.43,lng:92.97,code:"PG049739"},{name:"Korean",country:"Honduras",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:14.08,lng:-87.2,code:"PG024788"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Han Chinese, Cantonese",country:"Hong Kong",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6255e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050587"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Han Chinese, Cantonese",country:"Malaysia",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:19e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.65,lng:101.56,code:"PG046594"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Khmu, Ou",country:"Laos",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:817e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:102.58,code:"PG020913"},{name:"Han Chinese, Cantonese",country:"Vietnam",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:784e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.03,lng:105.82,code:"PG046444"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Han Chinese, Cantonese",country:"Macao",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:663e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.16,lng:113.56,code:"PG050584"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Han Chinese, Cantonese",country:"Singapore",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:511e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020725"},{name:"Han Chinese, Mandarin",country:"Singapore",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020728"},{name:"Han Chinese",country:"Brazil",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-23.17,lng:-45.54,code:"PG016864"},{name:"Han Chinese, Mandarin",country:"United Arab Emirates",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:202e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.67,lng:55.14,code:"PG049240"},{name:"Han Chinese",country:"United Kingdom",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:196e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:51.5,lng:-.17,code:"PG043796"},{name:"Han Chinese, Mandarin",country:"North Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:184e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:39,lng:125.92,code:"PG007584"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Han Chinese",country:"France",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:172e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:48.2,lng:2.3,code:"PG023131"},{name:"Han Chinese, Mandarin",country:"Hong Kong",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:163e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050605"},{name:"Han Chinese, Cantonese",country:"Peru",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:117e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-12.05,lng:-77.02,code:"PG017533"},{name:"Han Chinese, Mandarin",country:"Saudi Arabia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.68,lng:46.74,code:"PG049246"},{name:"Han Chinese",country:"Tanzania",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:106e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-6.83,lng:39.25,code:"PG014935"},{name:"Han Chinese",country:"Italy",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:44.22,lng:10.5,code:"PG000330"},{name:"Han Chinese",country:"South Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:94500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.58,lng:127.64,code:"PG007589"},{name:"Han Chinese, Mandarin",country:"Tajikistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.57,lng:68.77,code:"PG049245"},{name:"Han Chinese",country:"Madagascar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:78500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-18.91,lng:47.53,code:"PG015301"},{name:"Han Chinese",country:"Panama",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:8.5,lng:-82.42,code:"PG024831"},{name:"Han Chinese, Mandarin",country:"Egypt",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:30.05,lng:31.32,code:"PG050167"},{name:"Han Chinese, Mandarin",country:"Russian Federation",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:62e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.07,lng:119.29,code:"PG048686"},{name:"Han Chinese",country:"Pakistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:6e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:31.52,lng:74.34,code:"PG006354"},{name:"Han Chinese",country:"Argentina",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:52500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-34.65,lng:-58.56,code:"PG042923"},{name:"Han Chinese",country:"Germany",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.84,lng:11.14,code:"PG023132"},{name:"Korean",country:"Brazil",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:48500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-23.57,lng:-46.57,code:"PG016974"},{name:"Korean",country:"Germany",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.12,lng:8.67,code:"PG000249"},{name:"Han Chinese",country:"Trinidad and Tobago",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:44500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.68,lng:-61.38,code:"PG016447"},{name:"Han Chinese",country:"Cuba",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:23.07,lng:-82.32,code:"PG016302"},{name:"Iu Mien",country:"United States",lang:"Iu Mien",rol3:"ium",pct_christian:7.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.75,lng:-111.78,code:"PG043283"},{name:"Han Chinese",country:"Zambia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:-15.4,lng:28.31,code:"PG015577"},{name:"Han Chinese",country:"Laos",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:17.97,lng:102.64,code:"PG009111"},{name:"Han Chinese",country:"Netherlands",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:52.33,lng:4.86,code:"PG023133"},{name:"Han Chinese, Cantonese",country:"Venezuela",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.48,lng:-66.88,code:"PG016472"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Han Chinese",country:"Greece",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.01,lng:23.77,code:"PG048769"},{name:"Han Chinese, Mandarin",country:"Venezuela",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.48,lng:-66.88,code:"PG016471"},{name:"Han Chinese",country:"Mexico",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:20.65,lng:-101.28,code:"PG024949"},{name:"Han Chinese",country:"Portugal",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:38.77,lng:-9.25,code:"PG000483"},{name:"Han Chinese, Mandarin",country:"Belgium",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.85,lng:4.38,code:"PG000057"},{name:"Han Chinese",country:"Mozambique",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:21e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:-25.92,lng:32.59,code:"PG015380"},{name:"Korean",country:"Kyrgyzstan",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:19500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:42.88,lng:74.63,code:"PG024358"},{name:"Korean",country:"Iran",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:17500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.7,lng:51.38,code:"PG024174"},{name:"Han Chinese, Mandarin",country:"Hungary",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:47.48,lng:19.11,code:"PG042235"}]},Japan:{target_upg:32,target_pop:120582800,target_top_langs:["Japanese","Okinawan, Central","Japanese Sign Language","Burmese"],target_top_religion:"Buddhism",neighbors:[{name:"Nikkei, Brazilian",country:"Japan",lang:"Japanese",rol3:"jpn",pct_christian:12.5,pop:104e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:35.13,lng:136.92,code:"PG049262"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Miyako-Irabu",country:"Japan",lang:"Japanese",rol3:"jpn",pct_christian:3.5,pop:65500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:24.77,lng:125.33,code:"PG047515"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Indian - Christian",country:"South Africa",lang:"English",rol3:"eng",pct_christian:62.5,pop:31e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-29.84,lng:30.93,code:"PG048045"},{name:"Euronesian",country:"Samoa",lang:"English",rol3:"eng",pct_christian:62.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.85,lng:-171.8,code:"PG018323"},{name:"British",country:"Tanzania",lang:"English",rol3:"eng",pct_christian:62.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-6.83,lng:39.25,code:"PG014914"},{name:"British",country:"Zimbabwe",lang:"English",rol3:"eng",pct_christian:62.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-17.83,lng:31.03,code:"PG015650"},{name:"Dominican",country:"Dominican Republic",lang:"Spanish",rol3:"spa",pct_christian:45,pop:109e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.9,lng:-70.49,code:"PG016313"},{name:"American",country:"Singapore",lang:"English",rol3:"eng",pct_christian:45,pop:9800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.36,lng:103.82,code:"PG018447"},{name:"British",country:"Barbados",lang:"English",rol3:"eng",pct_christian:45,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:13.12,lng:-59.6,code:"PG016197"},{name:"British",country:"Venezuela",lang:"English",rol3:"eng",pct_christian:45,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:10.48,lng:-66.88,code:"PG016461"},{name:"British",country:"Botswana",lang:"English",rol3:"eng",pct_christian:45,pop:7100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-24.65,lng:25.91,code:"PG015217"},{name:"Pitcairn Islander",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:45,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018502"},{name:"American",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:95500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.52,lng:142.46,code:"PG020268"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Caribbean Hindi",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:4.91,lng:-52.3,code:"PG022284"},{name:"Southwest Aborigine Creol",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-32.54,lng:115.99,code:"PG008068"},{name:"Anglo-Australian",country:"Singapore",lang:"English",rol3:"eng",pct_christian:35,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:1.36,lng:103.82,code:"PG010684"},{name:"American",country:"Iceland",lang:"English",rol3:"eng",pct_christian:35,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.14,lng:-21.89,code:"PG000293"},{name:"American",country:"Marshall Islands",lang:"English",rol3:"eng",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:7.1,lng:171.22,code:"PG009376"},{name:"Itene",country:"Bolivia",lang:"Spanish",rol3:"spa",pct_christian:35,pop:70,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-11.89,lng:-65.09,code:"PG046959"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Guatemalan",country:"Guatemala",lang:"Spanish",rol3:"spa",pct_christian:25,pop:1015e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.7,lng:-90.36,code:"PG024712"},{name:"El Salvadoran",country:"El Salvador",lang:"Spanish",rol3:"spa",pct_christian:25,pop:61e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.73,lng:-88.87,code:"PG024979"},{name:"Detribalized Aborigine",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:58e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG007863"},{name:"Jamaican",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:33e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047381"},{name:"Barbadian",country:"Barbados",lang:"English",rol3:"eng",pct_christian:25,pop:269e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.17,lng:-59.56,code:"PG016195"},{name:"American",country:"Panama",lang:"English",rol3:"eng",pct_christian:25,pop:186e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.06,lng:-79.38,code:"PG050309"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Barbadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047394"},{name:"Korean",country:"Argentina",lang:"Korean",rol3:"kor",pct_christian:25,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG046918"},{name:"Guatemalan",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:25,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047378"},{name:"Korean",country:"Singapore",lang:"Korean",rol3:"kor",pct_christian:25,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:1.36,lng:103.82,code:"PG010710"},{name:"Bay Islands Creole",country:"Honduras",lang:"English",rol3:"eng",pct_christian:25,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.34,lng:-86.39,code:"PG024758"},{name:"American",country:"Virgin Islands",lang:"English",rol3:"eng",pct_christian:25,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.96,lng:-64.8,code:"PG050296"},{name:"American",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:25,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018513"},{name:"American",country:"Guam",lang:"English",rol3:"eng",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.44,lng:144.78,code:"PG050299"},{name:"Korean",country:"Taiwan",lang:"Korean",rol3:"kor",pct_christian:25,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.63,lng:120.33,code:"PG007526"},{name:"Mixtec, Southeastern Nochixtlan",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.21,lng:-97.09,code:"PG039145"},{name:"American",country:"Fiji",lang:"English",rol3:"eng",pct_christian:25,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-18.13,lng:178.44,code:"PG018421"},{name:"American",country:"Greenland",lang:"English",rol3:"eng",pct_christian:25,pop:3400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.18,lng:-51.7,code:"PG000286"},{name:"Itza",country:"Guatemala",lang:"Spanish",rol3:"spa",pct_christian:25,pop:3200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:17,lng:-89.88,code:"PG024726"},{name:"Zapotec, Southeastern Ixtlan",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:2900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.23,lng:-96.49,code:"PG039219"},{name:"Maori",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050518"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Wik-Ngathan",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.84,lng:141.57,code:"PG008118"},{name:"Polynesian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050519"},{name:"Korean",country:"Northern Mariana Islands",lang:"Korean",rol3:"kor",pct_christian:25,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:15.91,lng:145.61,code:"PG050228"},{name:"Tektiteko",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.49,lng:-92.13,code:"PG039080"},{name:"Yankuntatjara",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-27.14,lng:133.83,code:"PG008134"},{name:"Bora",country:"Peru",lang:"Spanish",rol3:"spa",pct_christian:25,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-3.22,lng:-71.98,code:"PG017505"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"Mocho",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:225,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.27,lng:-92.35,code:"PG039159"},{name:"Mixtec, Sindihui",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:25,pop:80,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.01,lng:-97.37,code:"PG039143"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Honduran",country:"Honduras",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:9865e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:14.82,lng:-86.62,code:"PG042459"},{name:"Panamanian",country:"Panama",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:2945e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.12,lng:-79.12,code:"PG024843"},{name:"Korean",country:"Australia",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:167e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-33.85,lng:151.03,code:"PG021625"},{name:"Korean",country:"Canada",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:46.93,lng:-92.67,code:"PG043424"},{name:"Salvadoran",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:70500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047373"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Bermudians",country:"Bermuda",lang:"English",rol3:"eng",pct_christian:17.5,pop:66e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.31,lng:-64.77,code:"PG016210"},{name:"Caymanian",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:17.5,pop:60500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:19.42,lng:-80.89,code:"PG016216"},{name:"Korean",country:"United Kingdom",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.5,lng:-.17,code:"PG000650"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Korean",country:"New Zealand",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-36.89,lng:174.78,code:"PG047592"},{name:"Kenyan",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:43.83,lng:-79.46,code:"PG047469"},{name:"American",country:"Haiti",lang:"English",rol3:"eng",pct_christian:17.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.55,lng:-72.32,code:"PG016382"},{name:"Mam",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:17500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.4,lng:-92.35,code:"PG039078"},{name:"Ghanaian",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:49.22,lng:-122.99,code:"PG047407"},{name:"Nicaraguan",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047377"},{name:"Honduran",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047379"},{name:"Kanjobal",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.63,lng:-89.7,code:"PG039087"},{name:"Korean",country:"Hong Kong",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.38,lng:114.13,code:"PG050601"},{name:"Korean",country:"Paraguay",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.3,lng:-57.56,code:"PG017246"},{name:"Zoque, Chimalapa",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:6400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.88,lng:-94.4,code:"PG039236"},{name:"Panamanian",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047376"},{name:"Zapotec, Southern Rincon",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.35,lng:-96.27,code:"PG039223"},{name:"Korean",country:"Guam",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.44,lng:144.78,code:"PG050301"},{name:"Passamaquoddy",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.36,lng:-67.46,code:"PG043437"},{name:"Tlingit",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:60.48,lng:-132.29,code:"PG043489"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Zapotec, San Baltazar Loxicha",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.05,lng:-96.76,code:"PG039195"},{name:"Huave, San Francisco del Mar",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.24,lng:-94.49,code:"PG039082"},{name:"Onondaga",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.05,lng:-80.11,code:"PG043451"},{name:"Korean",country:"Dominican Republic",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:18.48,lng:-69.91,code:"PG022409"},{name:"Popti",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.89,lng:-91.99,code:"PG039086"},{name:"Popoluca, Texistepec",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.78,lng:-94.8,code:"PG048643"},{name:"Zapotec, Southern Rincon",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:32.36,lng:-109.45,code:"PG049308"},{name:"K’ómoks",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-124.96,code:"PG043374"},{name:"Rembarunga",country:"Australia",lang:"English",rol3:"eng",pct_christian:17.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-12.96,lng:134.58,code:"PG008058"},{name:"Korean",country:"South Korea",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:5025e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.38,lng:127.82,code:"PG048088"},{name:"Chilean",country:"Chile",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:1776e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-32.83,lng:-71.15,code:"PG017439"},{name:"Puerto Rican",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:4035e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:35.35,lng:-95.96,code:"PG043603"},{name:"Irish, Northern",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:166e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:54.61,lng:-6.69,code:"PG022219"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Afro-Trinidadian",country:"Trinidad and Tobago",lang:"English",rol3:"eng",pct_christian:12.5,pop:725e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.42,lng:-61.3,code:"PG016442"},{name:"Metis",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:704e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.13,lng:-97.19,code:"PG043455"},{name:"American",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:402e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.97,lng:-107.63,code:"PG043500"},{name:"English Caribbean",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:394e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.73,lng:-90.31,code:"PG049256"},{name:"Han Chinese",country:"Singapore",lang:"English",rol3:"eng",pct_christian:12.5,pop:358e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020724"},{name:"Chiquitano",country:"Bolivia",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:211e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-15.91,lng:-61.84,code:"PG017398"},{name:"Detribalized Amerindian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.64,lng:-115.72,code:"PG043384"},{name:"Colombian",country:"Venezuela",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:189e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.01,lng:-66.66,code:"PG046909"},{name:"Afro-Argentine",country:"Argentina",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:153e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-34.65,lng:-58.56,code:"PG042890"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Sub-Saharan Africans, English-Speaking",country:"Belgium",lang:"English",rol3:"eng",pct_christian:12.5,pop:123e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.85,lng:4.38,code:"PG047833"},{name:"Tojolabal",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:92500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.4,lng:-91.85,code:"PG039160"},{name:"Chontal, Tabasco",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.1,lng:-92.61,code:"PG039061"},{name:"Nahuatl, Isthmus",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:78500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.12,lng:-94.34,code:"PG048653"},{name:"Fijian",country:"Australia",lang:"English",rol3:"eng",pct_christian:12.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG050451"},{name:"Cree, Woodland",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.6,lng:-106.15,code:"PG043378"},{name:"Dominican",country:"Dominica",lang:"English",rol3:"eng",pct_christian:12.5,pop:67e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.43,lng:-61.35,code:"PG016306"},{name:"Chilean",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047386"},{name:"Belizean",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:43500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:33.94,lng:-118.12,code:"PG047184"},{name:"Korean",country:"Mozambique",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.89,lng:32.57,code:"PG015382"},{name:"Welsh",country:"Argentina",lang:"English",rol3:"eng",pct_christian:12.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-43.27,lng:-65.44,code:"PG017376"},{name:"Chilean",country:"Sweden",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:58.15,lng:15.03,code:"PG000547"},{name:"Mixe, Isthmus",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.08,lng:-95.14,code:"PG039098"},{name:"Mohawk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:44.18,lng:-77.77,code:"PG043441"},{name:"Dominican",country:"Canada",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.72,lng:-95.67,code:"PG047374"},{name:"Barbadian",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.5,lng:-.17,code:"PG048436"},{name:"Chinantec, Central",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.81,lng:-96.26,code:"PG039065"},{name:"Korean",country:"Madagascar",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-18.91,lng:47.53,code:"PG015310"},{name:"Euronesian",country:"Fiji",lang:"English",rol3:"eng",pct_christian:12.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-17.95,lng:178.24,code:"PG018419"},{name:"Spaniard",country:"Ireland",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:53.39,lng:-6.28,code:"PG000303"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"American",country:"Costa Rica",lang:"English",rol3:"eng",pct_christian:12.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:10.22,lng:-85.24,code:"PG025025"},{name:"Popoluca, Sayula",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.73,lng:-94.95,code:"PG048641"},{name:"Mixe, Coatlan",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:9100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.79,lng:-95.6,code:"PG039097"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Nahuatl, Isthmus",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:31.63,lng:-89.16,code:"PG049280"},{name:"Tsimshian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.42,lng:-130.3,code:"PG043490"},{name:"Lillooet",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.68,lng:-121.92,code:"PG043432"},{name:"Zapotec, Guevea de Humboldt",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.73,lng:-95.33,code:"PG039189"},{name:"Latin American",country:"Curacao",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:12.19,lng:-68.97,code:"PG023181"},{name:"Nakota (Assiniboine)",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:52.17,lng:-107.03,code:"PG043354"},{name:"Kwakwakaʼwakw",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.72,lng:-127.5,code:"PG043427"},{name:"Zapotec, Lachiguiri",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:5900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.61,lng:-95.5,code:"PG039196"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Dakota",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:5500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.52,lng:-102.88,code:"PG043381"},{name:"American",country:"Micronesia",lang:"English",rol3:"eng",pct_christian:12.5,pop:5400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.95,lng:158.2,code:"PG018394"},{name:"Straits Salish",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.49,lng:-123.46,code:"PG043479"},{name:"Bahamian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.9,lng:-79.58,code:"PG050486"},{name:"Chuj",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.06,lng:-91.88,code:"PG039062"},{name:"Zapotec, Xanaguia",country:"Mexico",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:16.1,lng:-96.24,code:"PG039207"}]},Iran:{target_upg:85,target_pop:91827910,target_top_langs:["Persian, Iranian","Azerbaijani, South","Kurdish, Southern","Gilaki"],target_top_religion:"Islam",neighbors:[{name:"Korean",country:"Iran",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:17500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:35.7,lng:51.38,code:"PG024174"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Romani, Balkan",country:"Italy",lang:"Romani, Balkan",rol3:"rmn",pct_christian:62.5,pop:2500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:45.54,lng:9.19,code:"PG000312"},{name:"Romani, Balkan",country:"Bulgaria",lang:"Romani, Balkan",rol3:"rmn",pct_christian:7.5,pop:267e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:42.86,lng:23.79,code:"PG000737"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Romani, Balkan",country:"France",lang:"Romani, Balkan",rol3:"rmn",pct_christian:3.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.84,lng:2.35,code:"PG000134"}]},"Türkiye (Turkey)":{target_upg:63,target_pop:86815200,target_top_langs:["Turkish","Kurdish, Northern","Arabic, Levantine","Zazaki, Southern"],target_top_religion:"Islam",neighbors:[{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Han Chinese",country:"Turkiye",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:44500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.04,lng:28.87,code:"PG024558"},{name:"Romani, Balkan",country:"Italy",lang:"Romani, Balkan",rol3:"rmn",pct_christian:62.5,pop:2500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:45.54,lng:9.19,code:"PG000312"},{name:"Romani, Balkan",country:"Bulgaria",lang:"Romani, Balkan",rol3:"rmn",pct_christian:7.5,pop:267e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:42.86,lng:23.79,code:"PG000737"},{name:"Armenian",country:"Canada",lang:"Armenian, Western",rol3:"hyw",pct_christian:7.5,pop:71e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.83,lng:-77.31,code:"PG043353"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Greek",country:"Czech Republic",lang:"Greek",rol3:"ell",pct_christian:7.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.82,lng:17.98,code:"PG048862"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"},{name:"Romani, Balkan",country:"France",lang:"Romani, Balkan",rol3:"rmn",pct_christian:3.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.84,lng:2.35,code:"PG000134"}]},Egypt:{target_upg:34,target_pop:82788900,target_top_langs:["Arabic, Egyptian","Arabic, Sudanese","Arabic, Algerian","Arabic, Moroccan"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Egypt",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:30.05,lng:31.32,code:"PG050167"},{name:"Amhara",country:"Canada",lang:"Amharic",rol3:"amh",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG047403"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Ethiopian, Oromo",country:"United States",lang:"Oromo, West Central",rol3:"gaz",pct_christian:3.5,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.9,lng:-77.19,code:"PG047338"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},Nigeria:{target_upg:52,target_pop:72422800,target_top_langs:["Hausa","Fulfulde, Nigerian","Kanuri, Yerwa","Fulfulde, Adamawa"],target_top_religion:"Islam",neighbors:[{name:"Rumaya",country:"Nigeria",lang:"Mala (Nigeria)",rol3:"ruy",pct_christian:62.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.42,lng:8.67,code:"PG014094"},{name:"Janji",country:"Nigeria",lang:"Janji",rol3:"jni",pct_christian:62.5,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.12,lng:8.62,code:"PG013870"},{name:"Kagoma",country:"Nigeria",lang:"Gyong",rol3:"kdm",pct_christian:45,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.26,lng:8.19,code:"PG013889"},{name:"Kaivi",country:"Nigeria",lang:"Kaivi",rol3:"kce",pct_christian:45,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.41,lng:8.67,code:"PG013891"},{name:"Sura",country:"Nigeria",lang:"Mwaghavul",rol3:"sur",pct_christian:35,pop:19e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.55,lng:9.02,code:"PG014115"},{name:"Dadiya",country:"Nigeria",lang:"Dadiya",rol3:"dbd",pct_christian:35,pop:66500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.64,lng:11.44,code:"PG013294"},{name:"Bajju",country:"Nigeria",lang:"Jju",rol3:"kaj",pct_christian:25,pop:685e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.68,lng:8.07,code:"PG013892"},{name:"Okpe",country:"Nigeria",lang:"Okpe (Southwestern Edoid)",rol3:"oke",pct_christian:25,pop:465e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.78,lng:5.57,code:"PG014065"},{name:"Wukari Jukun",country:"Nigeria",lang:"Wapan",rol3:"juk",pct_christian:25,pop:222e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.32,lng:9.7,code:"PG014174"},{name:"Aten",country:"Nigeria",lang:"Iten",rol3:"etx",pct_christian:25,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.65,lng:8.57,code:"PG013646"},{name:"Gure-Kahugu",country:"Nigeria",lang:"Tugbiri-Niragu",rol3:"grh",pct_christian:25,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.31,lng:8.42,code:"PG013815"},{name:"Kagoro",country:"Nigeria",lang:"Tyap",rol3:"kcg",pct_christian:25,pop:38e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.59,lng:8.26,code:"PG013890"},{name:"Awak",country:"Nigeria",lang:"Awak",rol3:"awo",pct_christian:25,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.92,lng:11.4,code:"PG013649"},{name:"Binawa",country:"Nigeria",lang:"Bina (Nigeria)",rol3:"byj",pct_christian:25,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.29,lng:8.26,code:"PG013689"},{name:"Naraguta",country:"Nigeria",lang:"Iguta",rol3:"nar",pct_christian:25,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.99,lng:8.85,code:"PG014012"},{name:"Karim-Maudi",country:"Nigeria",lang:"Karimjo",rol3:"cfg",pct_christian:25,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.86,lng:10.82,code:"PG023179"},{name:"Kono",country:"Nigeria",lang:"Kono (Nigeria)",rol3:"klk",pct_christian:25,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.23,lng:8.4,code:"PG013929"},{name:"Lakka",country:"Nigeria",lang:"Kabba",rol3:"ksp",pct_christian:25,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:9.15,lng:11.25,code:"PG013956"},{name:"Burak",country:"Nigeria",lang:"Burak",rol3:"bys",pct_christian:25,pop:8800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.74,lng:11.28,code:"PG013704"},{name:"Kholok",country:"Nigeria",lang:"Kholok",rol3:"ktc",pct_christian:25,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:9.3,lng:11.13,code:"PG014377"},{name:"Mingang Doso",country:"Nigeria",lang:"Mingang Doso",rol3:"mko",pct_christian:25,pop:6200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.4,lng:11.26,code:"PG014411"},{name:"Katab",country:"Nigeria",lang:"Tyap",rol3:"kcg",pct_christian:17.5,pop:287e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.82,lng:8.31,code:"PG013912"},{name:"Begbere",country:"Nigeria",lang:"Koro Wachi",rol3:"bqv",pct_christian:17.5,pop:171e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.69,lng:7.64,code:"PG013046"},{name:"Ndoro",country:"Nigeria",lang:"Ndoola",rol3:"ndr",pct_christian:17.5,pop:121e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.98,lng:10.78,code:"PG014016"},{name:"Chamba Leko",country:"Nigeria",lang:"Samba Leko",rol3:"ndi",pct_christian:17.5,pop:118e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.83,lng:10.69,code:"PG013720"},{name:"Pero",country:"Nigeria",lang:"Pero",rol3:"pip",pct_christian:17.5,pop:57500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.7,lng:11.17,code:"PG014080"},{name:"Bandawa-Minda",country:"Nigeria",lang:"Shoo-Minda-Nye",rol3:"bcv",pct_christian:17.5,pop:38e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:8.97,lng:10.99,code:"PG013664"},{name:"Etulo",country:"Nigeria",lang:"Etulo",rol3:"utr",pct_christian:17.5,pop:25500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.29,lng:9.32,code:"PG013776"},{name:"Ruruma",country:"Nigeria",lang:"Ruma",rol3:"ruz",pct_christian:17.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.23,lng:8.64,code:"PG014095"},{name:"Gwomu",country:"Nigeria",lang:"Moo",rol3:"gwg",pct_christian:17.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.48,lng:11.3,code:"PG013824"},{name:"Bukwun",country:"Nigeria",lang:"Bukwen",rol3:"buz",pct_christian:17.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.94,lng:10.2,code:"PG013283"},{name:"Berom",country:"Nigeria",lang:"Berom",rol3:"bom",pct_christian:12.5,pop:1485e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.58,lng:8.8,code:"PG013683"},{name:"Tarok",country:"Nigeria",lang:"Tarok",rol3:"yer",pct_christian:12.5,pop:584e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.13,lng:10.1,code:"PG014124"},{name:"Hyam",country:"Nigeria",lang:"Hyam",rol3:"jab",pct_christian:12.5,pop:396e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.54,lng:8.09,code:"PG013833"},{name:"Bachama",country:"Nigeria",lang:"Bacama",rol3:"bcy",pct_christian:12.5,pop:341e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.46,lng:12.08,code:"PG013653"},{name:"Tangale",country:"Nigeria",lang:"Tangale",rol3:"tan",pct_christian:12.5,pop:326e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.81,lng:11.21,code:"PG014122"},{name:"Kambari",country:"Nigeria",lang:"Tsishingini",rol3:"tsw",pct_christian:12.5,pop:318e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.34,lng:5.35,code:"PG013897"},{name:"Marghi Central",country:"Nigeria",lang:"Marghi Central",rol3:"mrt",pct_christian:12.5,pop:279e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.63,lng:13.35,code:"PG013988"},{name:"Kyibaku",country:"Nigeria",lang:"Kibaku",rol3:"ckl",pct_christian:12.5,pop:234e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:10.98,lng:12.88,code:"PG013953"},{name:"Chamba Daka",country:"Nigeria",lang:"Samba Daka",rol3:"ccg",pct_christian:12.5,pop:186e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:8.62,lng:11.73,code:"PG013719"},{name:"Rukuba",country:"Nigeria",lang:"Kuce",rol3:"ruk",pct_christian:12.5,pop:18e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.18,lng:8.24,code:"PG014093"},{name:"Kuteb",country:"Nigeria",lang:"Kutep",rol3:"kub",pct_christian:12.5,pop:84500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.24,lng:10.06,code:"PG013946"},{name:"Bitare",country:"Nigeria",lang:"Bitare",rol3:"brt",pct_christian:12.5,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.11,lng:10.74,code:"PG013691"},{name:"Glavda",country:"Nigeria",lang:"Glavda",rol3:"glw",pct_christian:12.5,pop:57500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:11.15,lng:13.81,code:"PG013803"},{name:"Kulung",country:"Nigeria",lang:"Kulung (Nigeria)",rol3:"bbu",pct_christian:12.5,pop:56e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.34,lng:11,code:"PG013941"},{name:"Chawai",country:"Nigeria",lang:"Atsam",rol3:"cch",pct_christian:12.5,pop:5e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.26,lng:8.29,code:"PG013722"},{name:"Montol",country:"Nigeria",lang:"Tehl",rol3:"mtl",pct_christian:12.5,pop:46500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9,lng:9.64,code:"PG014003"},{name:"Fali",country:"Nigeria",lang:"Fali Muchella",rol3:"fli",pct_christian:12.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.32,lng:13.39,code:"PG013781"},{name:"Passam",country:"Nigeria",lang:"Kpasham",rol3:"pbn",pct_christian:12.5,pop:34500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.27,lng:11.76,code:"PG014079"},{name:"Epinmi",country:"Nigeria",lang:"Ukue",rol3:"uku",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.43,lng:5.78,code:"PG014146"},{name:"Yiwom",country:"Nigeria",lang:"Ywom",rol3:"gek",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:8.91,lng:9.75,code:"PG014192"},{name:"Magu",country:"Nigeria",lang:"Mvanip",rol3:"mcj",pct_christian:12.5,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.95,lng:11.02,code:"PG013979"},{name:"Lelau",country:"Nigeria",lang:"Leelau",rol3:"ldk",pct_christian:12.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.33,lng:11.1,code:"PG013964"},{name:"Kam",country:"Nigeria",lang:"Kam",rol3:"kdx",pct_christian:12.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:8.35,lng:11.06,code:"PG013895"},{name:"Tapshin",country:"Nigeria",lang:"Kusur-Myet",rol3:"tdl",pct_christian:12.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.55,lng:9.64,code:"PG014123"},{name:"Hedi",country:"Nigeria",lang:"Hdi",rol3:"xed",pct_christian:12.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.94,lng:13.69,code:"PG013829"},{name:"Lamja",country:"Nigeria",lang:"Lamja-Dengsa-Tola",rol3:"ldh",pct_christian:12.5,pop:7200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:8.87,lng:12.06,code:"PG013959"},{name:"Kumba",country:"Nigeria",lang:"Kumba",rol3:"ksm",pct_christian:12.5,pop:6900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.05,lng:12.04,code:"PG013943"},{name:"Pai",country:"Nigeria",lang:"Pye",rol3:"pai",pct_christian:12.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.55,lng:9.29,code:"PG014077"},{name:"Cara",country:"Nigeria",lang:"Cara",rol3:"cfd",pct_christian:12.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.09,lng:8.78,code:"PG012312"},{name:"Bali",country:"Nigeria",lang:"Bali (Nigeria)",rol3:"bcn",pct_christian:12.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.29,lng:11.81,code:"PG013660"},{name:"Aduge",country:"Nigeria",lang:"Aduge",rol3:"adu",pct_christian:12.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.61,lng:6.07,code:"PG013624"},{name:"Kapya",country:"Nigeria",lang:"Kapya",rol3:"klo",pct_christian:12.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.05,lng:9.93,code:"PG014375"},{name:"Mangas",country:"Nigeria",lang:"Mansi (Nigeria)",rol3:"zns",pct_christian:12.5,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.16,lng:9.82,code:"PG013986"},{name:"Igbo",country:"Nigeria",lang:"Igbo",rol3:"ibo",pct_christian:7.5,pop:3486e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.82,lng:7.31,code:"PG013844"},{name:"Ibibio",country:"Nigeria",lang:"Ibibio",rol3:"ibb",pct_christian:7.5,pop:697e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.13,lng:7.76,code:"PG013837"},{name:"Egba",country:"Nigeria",lang:"Yoruba",rol3:"yor",pct_christian:7.5,pop:6085e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:6.98,lng:3.48,code:"PG013759"},{name:"Tiv",country:"Nigeria",lang:"Tiv",rol3:"tiv",pct_christian:7.5,pop:52e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.58,lng:8.92,code:"PG014132"},{name:"Efik",country:"Nigeria",lang:"Efik",rol3:"efi",pct_christian:7.5,pop:289e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.26,lng:8.32,code:"PG013757"},{name:"Egbira",country:"Nigeria",lang:"Ebira",rol3:"igb",pct_christian:7.5,pop:2365e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8,lng:7.12,code:"PG013314"},{name:"Urhobo",country:"Nigeria",lang:"Urhobo",rol3:"urh",pct_christian:7.5,pop:1245e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.78,lng:5.78,code:"PG014152"},{name:"Isekiri",country:"Nigeria",lang:"Isekiri",rol3:"its",pct_christian:7.5,pop:1075e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.23,lng:5.42,code:"PG013858"},{name:"Ezaa",country:"Nigeria",lang:"Ezaa",rol3:"eza",pct_christian:7.5,pop:829e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.42,lng:7.87,code:"PG013780"},{name:"Kerang",country:"Nigeria",lang:"Ngas",rol3:"anc",pct_christian:7.5,pop:772e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.27,lng:9.56,code:"PG013642"},{name:"Isoko",country:"Nigeria",lang:"Isoko",rol3:"iso",pct_christian:7.5,pop:765e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.66,lng:6.09,code:"PG013859"},{name:"Ewe",country:"Nigeria",lang:"Éwé",rol3:"ewe",pct_christian:7.5,pop:696e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.76,lng:3.42,code:"PG013779"},{name:"Kamwe",country:"Nigeria",lang:"Kamwe",rol3:"hig",pct_christian:7.5,pop:683e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.57,lng:13.41,code:"PG013901"},{name:"Kalabari",country:"Nigeria",lang:"Kalabari",rol3:"ijn",pct_christian:7.5,pop:579e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.57,lng:6.83,code:"PG013754"},{name:"Yekhee",country:"Nigeria",lang:"Etsako",rol3:"ets",pct_christian:7.5,pop:574e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.2,lng:6.48,code:"PG014187"},{name:"Okrika",country:"Nigeria",lang:"Kirike",rol3:"okr",pct_christian:7.5,pop:52e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.69,lng:7.08,code:"PG014067"},{name:"Kana",country:"Nigeria",lang:"Khana",rol3:"ogo",pct_christian:7.5,pop:488e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.7,lng:7.47,code:"PG013902"},{name:"Ogbia",country:"Nigeria",lang:"Ogbia",rol3:"ogb",pct_christian:7.5,pop:45e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.81,lng:6.38,code:"PG014056"},{name:"Saya",country:"Nigeria",lang:"Saya",rol3:"say",pct_christian:7.5,pop:41e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.84,lng:9.64,code:"PG014099"},{name:"Ikwo",country:"Nigeria",lang:"Ikwo",rol3:"iqw",pct_christian:7.5,pop:366e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.99,lng:8.25,code:"PG013856"},{name:"Ukwuani-Aboh",country:"Nigeria",lang:"Ukwuani-Aboh-Ndoni",rol3:"ukw",pct_christian:7.5,pop:354e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.62,lng:6.57,code:"PG014147"},{name:"Bokyi",country:"Nigeria",lang:"Bokyi",rol3:"bky",pct_christian:7.5,pop:31e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.26,lng:8.99,code:"PG013695"},{name:"Yala",country:"Nigeria",lang:"Yala",rol3:"yba",pct_christian:7.5,pop:31e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.36,lng:8.5,code:"PG014182"},{name:"Mo Egon",country:"Nigeria",lang:"Eggon",rol3:"ego",pct_christian:7.5,pop:305e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.74,lng:8.46,code:"PG013760"},{name:"Bokkos",country:"Nigeria",lang:"Ron",rol3:"cla",pct_christian:7.5,pop:287e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.29,lng:8.98,code:"PG013693"},{name:"Yako",country:"Nigeria",lang:"Lokaa",rol3:"yaz",pct_christian:7.5,pop:273e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.9,lng:8.13,code:"PG014181"},{name:"Southeast Ijaw",country:"Nigeria",lang:"Ijo, Southeast",rol3:"ijs",pct_christian:7.5,pop:232e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.59,lng:6.21,code:"PG014113"},{name:"Mada",country:"Nigeria",lang:"Mada (Nigeria)",rol3:"mda",pct_christian:7.5,pop:223e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.01,lng:8.31,code:"PG014403"},{name:"Gokana",country:"Nigeria",lang:"Gokana",rol3:"gkn",pct_christian:7.5,pop:195e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.65,lng:7.29,code:"PG013806"},{name:"Lela",country:"Nigeria",lang:"C’Lela",rol3:"dri",pct_christian:7.5,pop:195e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:11.46,lng:5.28,code:"PG013963"},{name:"Adara",country:"Nigeria",lang:"Adara",rol3:"kad",pct_christian:7.5,pop:149e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.83,lng:7.41,code:"PG013886"},{name:"Obanliku",country:"Nigeria",lang:"Abanglekuo",rol3:"bzy",pct_christian:7.5,pop:141e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.57,lng:9.23,code:"PG014050"},{name:"Mbula-Bwazza",country:"Nigeria",lang:"Mbula-Bwazza",rol3:"mbu",pct_christian:7.5,pop:14e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.59,lng:12.36,code:"PG013994"},{name:"Dza",country:"Nigeria",lang:"Dza",rol3:"jen",pct_christian:7.5,pop:133e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.95,lng:10.93,code:"PG013311"},{name:"Yandang",country:"Nigeria",lang:"Yendang",rol3:"ynq",pct_christian:7.5,pop:127e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:8.95,lng:11.81,code:"PG014184"},{name:"Nungu",country:"Nigeria",lang:"Nungu",rol3:"rin",pct_christian:7.5,pop:108e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.18,lng:8.5,code:"PG014043"},{name:"Amo",country:"Nigeria",lang:"Amo",rol3:"amo",pct_christian:7.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.23,lng:8.64,code:"PG013640"},{name:"Irigwe",country:"Nigeria",lang:"Rigwe",rol3:"iri",pct_christian:7.5,pop:96e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.88,lng:8.83,code:"PG013857"},{name:"Mama",country:"Nigeria",lang:"Mama",rol3:"mma",pct_christian:7.5,pop:72500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9,lng:8.62,code:"PG013982"},{name:"Hwana",country:"Nigeria",lang:"Hwana",rol3:"hwo",pct_christian:7.5,pop:72e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.22,lng:12.67,code:"PG013832"},{name:"Koma",country:"Nigeria",lang:"Koma",rol3:"kmy",pct_christian:7.5,pop:7e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.67,lng:12.43,code:"PG013942"},{name:"Cham-Mwana",country:"Nigeria",lang:"Cham",rol3:"cfa",pct_christian:7.5,pop:55e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.77,lng:11.69,code:"PG013716"},{name:"Tigon Mbembe",country:"Nigeria",lang:"Mbembe, Tigon",rol3:"nza",pct_christian:7.5,pop:52e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.16,lng:10.68,code:"PG014130"},{name:"Mboi",country:"Nigeria",lang:"Mboi",rol3:"moi",pct_christian:7.5,pop:42500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.48,lng:12.67,code:"PG013992"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Etebi",country:"Nigeria",lang:"Etebi",rol3:"etb",pct_christian:7.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.63,lng:8.07,code:"PG013775"},{name:"Sukur",country:"Nigeria",lang:"Sukur",rol3:"syk",pct_christian:7.5,pop:33e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.88,lng:13.64,code:"PG014114"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Nandu-Tari",country:"Nigeria",lang:"Ahwai",rol3:"nfd",pct_christian:7.5,pop:28e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.26,lng:8.56,code:"PG014011"},{name:"Sasaru",country:"Nigeria",lang:"Sasaru",rol3:"sxs",pct_christian:7.5,pop:26e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.16,lng:6.17,code:"PG014098"},{name:"Yamba",country:"Nigeria",lang:"Yamba",rol3:"yam",pct_christian:7.5,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.62,lng:11.1,code:"PG014183"},{name:"Otwa",country:"Nigeria",lang:"Ghotuo",rol3:"aaa",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.18,lng:5.98,code:"PG013800"},{name:"Ngwaba",country:"Nigeria",lang:"Ngwaba",rol3:"ngw",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.17,lng:12.85,code:"PG014022"},{name:"Akpet",country:"Nigeria",lang:"Ukpet-Ehom",rol3:"akd",pct_christian:7.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.57,lng:8.17,code:"PG013636"},{name:"Bumaji",country:"Nigeria",lang:"Bumaji",rol3:"byp",pct_christian:7.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.48,lng:9.31,code:"PG013702"},{name:"Lubila",country:"Nigeria",lang:"Lubila",rol3:"kcc",pct_christian:7.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.41,lng:8.29,code:"PG013971"},{name:"Lo",country:"Nigeria",lang:"Loo",rol3:"ldo",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.35,lng:11.11,code:"PG013967"},{name:"Sara Mbai",country:"Nigeria",lang:"Mbay",rol3:"myb",pct_christian:7.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:11.84,lng:13.14,code:"PG014097"},{name:"Shal",country:"Nigeria",lang:"Shall-Zwall",rol3:"sha",pct_christian:7.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.26,lng:8.75,code:"PG014103"},{name:"Korop",country:"Nigeria",lang:"Durop",rol3:"krp",pct_christian:7.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.25,lng:8.66,code:"PG013931"},{name:"Kwa",country:"Nigeria",lang:"Kwa",rol3:"kwb",pct_christian:7.5,pop:15e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.5,lng:11.62,code:"PG013949"},{name:"Banwinji",country:"Nigeria",lang:"Bangwinji",rol3:"bsj",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.64,lng:11.33,code:"PG013667"},{name:"Ito",country:"Nigeria",lang:"Ito",rol3:"itw",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.06,lng:8,code:"PG013860"},{name:"Ebughu",country:"Nigeria",lang:"Ebughu",rol3:"ebg",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.68,lng:8.25,code:"PG013755"},{name:"Itu Mbon Uzo",country:"Nigeria",lang:"Itu Mbon Uzo",rol3:"itm",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.5,lng:7.81,code:"PG013861"},{name:"Idere",country:"Nigeria",lang:"Idere",rol3:"ide",pct_christian:7.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.22,lng:8.04,code:"PG013839"},{name:"Kyak",country:"Nigeria",lang:"Kyak",rol3:"bka",pct_christian:7.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.53,lng:11.35,code:"PG014393"},{name:"Arum-Chessu",country:"Nigeria",lang:"Arum",rol3:"aab",pct_christian:7.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.97,lng:8.7,code:"PG013643"},{name:"Ilue",country:"Nigeria",lang:"Ilue",rol3:"ilv",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.78,lng:8.25,code:"PG033351"},{name:"Mboa",country:"Nigeria",lang:"Mbonga",rol3:"xmb",pct_christian:7.5,pop:9900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:11.15,lng:13.75,code:"PG013993"},{name:"Turkwam",country:"Nigeria",lang:"Atoro",rol3:"tdv",pct_christian:7.5,pop:8e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.17,lng:8.65,code:"PG014136"},{name:"Duguza",country:"Nigeria",lang:"Tunzuii",rol3:"dza",pct_christian:7.5,pop:7400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.03,lng:9.12,code:"PG013308"},{name:"Idon",country:"Nigeria",lang:"Ajiya",rol3:"idc",pct_christian:7.5,pop:7300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.17,lng:7.87,code:"PG013841"},{name:"Kugama",country:"Nigeria",lang:"Kugama",rol3:"kow",pct_christian:7.5,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.14,lng:12.06,code:"PG013937"},{name:"Lam-nso",country:"Nigeria",lang:"Lamnso'",rol3:"lns",pct_christian:7.5,pop:7100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.61,lng:11.16,code:"PG014395"},{name:"Bete",country:"Nigeria",lang:"Jukun Takum",rol3:"jbu",pct_christian:7.5,pop:6900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.02,lng:9.75,code:"PG013684"},{name:"Obulom",country:"Nigeria",lang:"Obulom",rol3:"obu",pct_christian:7.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.79,lng:7.05,code:"PG014052"},{name:"Teme",country:"Nigeria",lang:"Teme",rol3:"tdo",pct_christian:7.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:8.99,lng:11.97,code:"PG014126"},{name:"Mini",country:"Nigeria",lang:"Abureni",rol3:"mgj",pct_christian:7.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:4.61,lng:6.45,code:"PG013999"},{name:"Gyanzi",country:"Nigeria",lang:"Gyaazi",rol3:"gyz",pct_christian:7.5,pop:5900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.35,lng:9.62,code:"PG013826"},{name:"Bakpinka",country:"Nigeria",lang:"Iyongiyong",rol3:"bbs",pct_christian:7.5,pop:5400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.25,lng:8.27,code:"PG013658"},{name:"Firan",country:"Nigeria",lang:"Firan",rol3:"fir",pct_christian:7.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.6,lng:8.72,code:"PG013321"},{name:"Surubu",country:"Nigeria",lang:"Vori",rol3:"sde",pct_christian:7.5,pop:3800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:10.17,lng:8.32,code:"PG014116"},{name:"Zeem",country:"Nigeria",lang:"Zeem",rol3:"zem",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.95,lng:9.29,code:"PG014204"},{name:"Ambo",country:"Nigeria",lang:"Ambo",rol3:"amb",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.08,lng:10.77,code:"PG014310"},{name:"Tala",country:"Nigeria",lang:"Tala",rol3:"tak",pct_christian:7.5,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.23,lng:9.86,code:"PG014119"}]},Thailand:{target_upg:76,target_pop:61274800,target_top_langs:["Thai","Thai, Northeastern","Thai, Northern","Thai, Southern"],target_top_religion:"Buddhism",neighbors:[{name:"Lahu",country:"Thailand",lang:"Lahu",rol3:"lhu",pct_christian:35,pop:82e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.46,lng:99.05,code:"PG010877"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Sgaw Karen",country:"Thailand",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:25,pop:204e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:17.09,lng:98.79,code:"PG010917"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Red Karen",country:"Thailand",lang:"Kayah, Eastern",rol3:"eky",pct_christian:25,pop:11e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.47,lng:97.98,code:"PG010911"},{name:"Akha",country:"Thailand",lang:"Akha",rol3:"ahk",pct_christian:17.5,pop:58e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:20.08,lng:99.66,code:"PG010820"},{name:"Lahu Shi",country:"Thailand",lang:"Lahu Shi",rol3:"lhi",pct_christian:17.5,pop:15500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.98,lng:99.39,code:"PG010939"},{name:"Padaung Karen",country:"Thailand",lang:"Kayan (Myanmar)",rol3:"pdu",pct_christian:17.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.79,lng:98.99,code:"PG010902"},{name:"Bghai Karen",country:"Thailand",lang:"Karen, Bwe",rol3:"bwe",pct_christian:17.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.53,lng:97.93,code:"PG010827"},{name:"Black Karen",country:"Thailand",lang:"Pa’o",rol3:"blk",pct_christian:17.5,pop:850,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.74,lng:98.06,code:"PG010829"},{name:"Flowery/Southern Lisu",country:"Thailand",lang:"Lisu",rol3:"lis",pct_christian:12.5,pop:42e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.96,lng:98.82,code:"PG010847"},{name:"Western Lawa",country:"Thailand",lang:"Lawa, Western",rol3:"lcp",pct_christian:12.5,pop:8600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.36,lng:98.06,code:"PG010935"},{name:"Karen, Pwo Northern",country:"Thailand",lang:"Karen, Pwo Northern",rol3:"pww",pct_christian:7.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.22,lng:98.03,code:"PG010936"},{name:"Kensiu",country:"Thailand",lang:"Kensiu",rol3:"kns",pct_christian:7.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.02,lng:101.16,code:"PG010869"},{name:"Han Chinese",country:"Thailand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:5785e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:14.64,lng:101.07,code:"PG010849"},{name:"So",country:"Thailand",lang:"So (Laos)",rol3:"sss",pct_christian:3.5,pop:105e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Folk",lat:17.39,lng:104.05,code:"PG010920"},{name:"Mien",country:"Thailand",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:46500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:19.13,lng:100.45,code:"PG010890"},{name:"Tamil",country:"Thailand",lang:"Tamil",rol3:"tam",pct_christian:3.5,pop:35e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:13.76,lng:100.56,code:"PG010925"},{name:"Black Tai",country:"Thailand",lang:"Tai Dam",rol3:"blt",pct_christian:3.5,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.92,lng:99.84,code:"PG010830"},{name:"Western Bru",country:"Thailand",lang:"Bru, Western",rol3:"brv",pct_christian:3.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:17.21,lng:104.15,code:"PG010934"},{name:"Yoy",country:"Thailand",lang:"Yoy",rol3:"yoy",pct_christian:3.5,pop:6300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:17.71,lng:104.01,code:"PG010940"},{name:"Urak Lawoi Aborigine",country:"Thailand",lang:"Urak Lawoi’",rol3:"urk",pct_christian:3.5,pop:2300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.44,lng:99.09,code:"PG010931"},{name:"Tonga",country:"Thailand",lang:"Ten’edn",rol3:"tnz",pct_christian:3.5,pop:200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.03,lng:101.16,code:"PG010894"},{name:"Khamet",country:"Thailand",lang:"Rmeet",rol3:"lbn",pct_christian:3.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.92,lng:99.84,code:"PG010870"},{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Indian - Christian",country:"South Africa",lang:"English",rol3:"eng",pct_christian:62.5,pop:31e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-29.84,lng:30.93,code:"PG048045"},{name:"Euronesian",country:"Samoa",lang:"English",rol3:"eng",pct_christian:62.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.85,lng:-171.8,code:"PG018323"},{name:"British",country:"Tanzania",lang:"English",rol3:"eng",pct_christian:62.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-6.83,lng:39.25,code:"PG014914"},{name:"British",country:"Zimbabwe",lang:"English",rol3:"eng",pct_christian:62.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-17.83,lng:31.03,code:"PG015650"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"American",country:"Singapore",lang:"English",rol3:"eng",pct_christian:45,pop:9800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.36,lng:103.82,code:"PG018447"},{name:"British",country:"Barbados",lang:"English",rol3:"eng",pct_christian:45,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:13.12,lng:-59.6,code:"PG016197"},{name:"British",country:"Venezuela",lang:"English",rol3:"eng",pct_christian:45,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:10.48,lng:-66.88,code:"PG016461"},{name:"British",country:"Botswana",lang:"English",rol3:"eng",pct_christian:45,pop:7100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-24.65,lng:25.91,code:"PG015217"},{name:"Pitcairn Islander",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:45,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018502"},{name:"American",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:95500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.52,lng:142.46,code:"PG020268"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Caribbean Hindi",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:4.91,lng:-52.3,code:"PG022284"},{name:"Southwest Aborigine Creol",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-32.54,lng:115.99,code:"PG008068"},{name:"Anglo-Australian",country:"Singapore",lang:"English",rol3:"eng",pct_christian:35,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:1.36,lng:103.82,code:"PG010684"},{name:"American",country:"Iceland",lang:"English",rol3:"eng",pct_christian:35,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.14,lng:-21.89,code:"PG000293"},{name:"American",country:"Marshall Islands",lang:"English",rol3:"eng",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:7.1,lng:171.22,code:"PG009376"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Detribalized Aborigine",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:58e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG007863"},{name:"Jamaican",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:33e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047381"},{name:"Barbadian",country:"Barbados",lang:"English",rol3:"eng",pct_christian:25,pop:269e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.17,lng:-59.56,code:"PG016195"},{name:"American",country:"Panama",lang:"English",rol3:"eng",pct_christian:25,pop:186e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.06,lng:-79.38,code:"PG050309"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Barbadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047394"},{name:"Bay Islands Creole",country:"Honduras",lang:"English",rol3:"eng",pct_christian:25,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.34,lng:-86.39,code:"PG024758"},{name:"American",country:"Virgin Islands",lang:"English",rol3:"eng",pct_christian:25,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.96,lng:-64.8,code:"PG050296"},{name:"American",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:25,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018513"},{name:"American",country:"Guam",lang:"English",rol3:"eng",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.44,lng:144.78,code:"PG050299"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"American",country:"Fiji",lang:"English",rol3:"eng",pct_christian:25,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-18.13,lng:178.44,code:"PG018421"},{name:"American",country:"Greenland",lang:"English",rol3:"eng",pct_christian:25,pop:3400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.18,lng:-51.7,code:"PG000286"},{name:"Maori",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050518"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Wik-Ngathan",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.84,lng:141.57,code:"PG008118"},{name:"Polynesian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050519"},{name:"Yankuntatjara",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-27.14,lng:133.83,code:"PG008134"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Bermudians",country:"Bermuda",lang:"English",rol3:"eng",pct_christian:17.5,pop:66e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.31,lng:-64.77,code:"PG016210"},{name:"Caymanian",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:17.5,pop:60500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:19.42,lng:-80.89,code:"PG016216"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Kenyan",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:43.83,lng:-79.46,code:"PG047469"},{name:"American",country:"Haiti",lang:"English",rol3:"eng",pct_christian:17.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.55,lng:-72.32,code:"PG016382"},{name:"Ghanaian",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:49.22,lng:-122.99,code:"PG047407"},{name:"Passamaquoddy",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.36,lng:-67.46,code:"PG043437"},{name:"Tlingit",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:60.48,lng:-132.29,code:"PG043489"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Onondaga",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.05,lng:-80.11,code:"PG043451"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"K’ómoks",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-124.96,code:"PG043374"},{name:"Rembarunga",country:"Australia",lang:"English",rol3:"eng",pct_christian:17.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-12.96,lng:134.58,code:"PG008058"},{name:"Irish, Northern",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:166e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:54.61,lng:-6.69,code:"PG022219"},{name:"Afro-Trinidadian",country:"Trinidad and Tobago",lang:"English",rol3:"eng",pct_christian:12.5,pop:725e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.42,lng:-61.3,code:"PG016442"},{name:"Metis",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:704e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.13,lng:-97.19,code:"PG043455"},{name:"American",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:402e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.97,lng:-107.63,code:"PG043500"},{name:"English Caribbean",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:394e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.73,lng:-90.31,code:"PG049256"},{name:"Han Chinese",country:"Singapore",lang:"English",rol3:"eng",pct_christian:12.5,pop:358e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020724"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Detribalized Amerindian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.64,lng:-115.72,code:"PG043384"},{name:"Sub-Saharan Africans, English-Speaking",country:"Belgium",lang:"English",rol3:"eng",pct_christian:12.5,pop:123e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.85,lng:4.38,code:"PG047833"},{name:"Fijian",country:"Australia",lang:"English",rol3:"eng",pct_christian:12.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG050451"},{name:"Cree, Woodland",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.6,lng:-106.15,code:"PG043378"},{name:"Dominican",country:"Dominica",lang:"English",rol3:"eng",pct_christian:12.5,pop:67e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.43,lng:-61.35,code:"PG016306"},{name:"Welsh",country:"Argentina",lang:"English",rol3:"eng",pct_christian:12.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-43.27,lng:-65.44,code:"PG017376"},{name:"Mohawk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:44.18,lng:-77.77,code:"PG043441"},{name:"Barbadian",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.5,lng:-.17,code:"PG048436"},{name:"Euronesian",country:"Fiji",lang:"English",rol3:"eng",pct_christian:12.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-17.95,lng:178.24,code:"PG018419"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"Hmong Njua",country:"Myanmar",lang:"Hmong Njua",rol3:"hnj",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Polytheism",lat:23.63,lng:97.65,code:"PG022056"},{name:"American",country:"Costa Rica",lang:"English",rol3:"eng",pct_christian:12.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:10.22,lng:-85.24,code:"PG025025"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Tsimshian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.42,lng:-130.3,code:"PG043490"},{name:"Lillooet",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.68,lng:-121.92,code:"PG043432"},{name:"Nakota (Assiniboine)",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:52.17,lng:-107.03,code:"PG043354"},{name:"Kwakwakaʼwakw",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.72,lng:-127.5,code:"PG043427"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Dakota",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:5500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.52,lng:-102.88,code:"PG043381"},{name:"American",country:"Micronesia",lang:"English",rol3:"eng",pct_christian:12.5,pop:5400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.95,lng:158.2,code:"PG018394"},{name:"Straits Salish",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.49,lng:-123.46,code:"PG043479"},{name:"Bahamian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.9,lng:-79.58,code:"PG050486"},{name:"Cree, Southern East",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.77,lng:-75.81,code:"PG043411"},{name:"Heiltsuk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:52.3,lng:-128.28,code:"PG043406"},{name:"Tolowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.9,lng:-124.16,code:"PG050627"},{name:"Sac & Fox Tribe of the Mississippi in Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.98,lng:-92.65,code:"PG043616"},{name:"Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.99,lng:-95.39,code:"PG043277"},{name:"Central Africans",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047190"},{name:"Jamaican",country:"Germany",lang:"English",rol3:"eng",pct_christian:12.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.13,lng:11.56,code:"PG048546"},{name:"American",country:"Curacao",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.19,lng:-68.97,code:"PG016406"},{name:"Saint Lucian",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:4.91,lng:-52.3,code:"PG022286"},{name:"Tubatulabal",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:36.07,lng:-118.31,code:"PG043660"},{name:"Euronesian",country:"Cook Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-21.23,lng:-159.78,code:"PG018317"},{name:"Nez Perce",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-116.41,code:"PG043560"},{name:"Salinan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:35.83,lng:-120.77,code:"PG050637"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Kaska",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:58.79,lng:-126.96,code:"PG043421"},{name:"Anuta",country:"Solomon Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-11.61,lng:169.85,code:"PG010725"},{name:"Sac & Fox Nation of Missouri in Kansas and Nebraska",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:450,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.01,lng:-95.52,code:"PG050671"},{name:"British",country:"Lesotho",lang:"English",rol3:"eng",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-29.33,lng:27.51,code:"PG015281"},{name:"Haida",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:55.19,lng:-132.88,code:"PG043257"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Chinuk Wawa",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.37,lng:-123.2,code:"PG043372"},{name:"Cayuga",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:60,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.55,lng:-79,code:"PG043191"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Upper Tanana",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:62.07,lng:-140.22,code:"PG043497"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Chinese American",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:175e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG050453"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Khmu, Ou",country:"Laos",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:817e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:102.58,code:"PG020913"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Jamaican",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:588e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.14,lng:-77.63,code:"PG043284"},{name:"Han Chinese, Mandarin",country:"Singapore",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020728"},{name:"Detribalized Amerindian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:454e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.9,lng:-111.06,code:"PG043225"},{name:"Cape Verdean",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:309e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.42,lng:-74.94,code:"PG047254"},{name:"Han Chinese",country:"Brazil",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-23.17,lng:-45.54,code:"PG016864"}]},Sudan:{target_upg:170,target_pop:48623100,target_top_langs:["Arabic, Sudanese","Bedawiyet","Fur","Nobiin"],target_top_religion:"Islam",neighbors:[{name:"Turum",country:"Sudan",lang:"Tagoi",rol3:"tag",pct_christian:45,pop:3200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:11.6,lng:31.08,code:"PG042842"},{name:"Acheron",country:"Sudan",lang:"Acheron",rol3:"acz",pct_christian:25,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.81,lng:30.25,code:"PG011958"},{name:"Heiban Nuba",country:"Sudan",lang:"Heiban",rol3:"hbn",pct_christian:25,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11.25,lng:30.48,code:"PG012038"},{name:"Moro",country:"Sudan",lang:"Moro",rol3:"mor",pct_christian:12.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.94,lng:30.18,code:"PG012112"},{name:"Katcha-Kadugli",country:"Sudan",lang:"Katcha-Kadugli-Miri",rol3:"xtc",pct_christian:7.5,pop:97e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.96,lng:29.69,code:"PG012053"},{name:"Dgik, Ruwa",country:"Sudan",lang:"Dagik",rol3:"dec",pct_christian:7.5,pop:72e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.66,lng:30,code:"PG012102"},{name:"Krongo",country:"Sudan",lang:"Krongo",rol3:"kgo",pct_christian:7.5,pop:66e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.55,lng:29.96,code:"PG012074"},{name:"Miri",country:"Sudan",lang:"Katcha-Kadugli-Miri",rol3:"xtc",pct_christian:7.5,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11,lng:29.5,code:"PG012105"},{name:"Tulishi",country:"Sudan",lang:"Tulishi",rol3:"tey",pct_christian:7.5,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11.47,lng:29.11,code:"PG012165"},{name:"Koalib",country:"Sudan",lang:"Koalib",rol3:"kib",pct_christian:3.5,pop:139e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:11.67,lng:30.4,code:"PG012071"},{name:"Laro",country:"Sudan",lang:"Laro",rol3:"lro",pct_christian:3.5,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:11.35,lng:30.54,code:"PG012079"},{name:"Shatt",country:"Sudan",lang:"Shatt",rol3:"shj",pct_christian:3.5,pop:37500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:10.82,lng:29.76,code:"PG012132"},{name:"Komo",country:"Sudan",lang:"Komo (Sudan)",rol3:"xom",pct_christian:3.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:9.82,lng:34.09,code:"PG012072"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Anglo Indian",country:"India",lang:"English",rol3:"eng",pct_christian:62.5,pop:398e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.95,lng:77.6,code:"PG041386"},{name:"Indian - Christian",country:"South Africa",lang:"English",rol3:"eng",pct_christian:62.5,pop:31e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-29.84,lng:30.93,code:"PG048045"},{name:"Euronesian",country:"Samoa",lang:"English",rol3:"eng",pct_christian:62.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.85,lng:-171.8,code:"PG018323"},{name:"British",country:"Tanzania",lang:"English",rol3:"eng",pct_christian:62.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-6.83,lng:39.25,code:"PG014914"},{name:"British",country:"Zimbabwe",lang:"English",rol3:"eng",pct_christian:62.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-17.83,lng:31.03,code:"PG015650"},{name:"American",country:"Singapore",lang:"English",rol3:"eng",pct_christian:45,pop:9800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.36,lng:103.82,code:"PG018447"},{name:"British",country:"Barbados",lang:"English",rol3:"eng",pct_christian:45,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:13.12,lng:-59.6,code:"PG016197"},{name:"British",country:"Venezuela",lang:"English",rol3:"eng",pct_christian:45,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:10.48,lng:-66.88,code:"PG016461"},{name:"British",country:"Botswana",lang:"English",rol3:"eng",pct_christian:45,pop:7100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-24.65,lng:25.91,code:"PG015217"},{name:"Pitcairn Islander",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:45,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018502"},{name:"American",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:95500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.52,lng:142.46,code:"PG020268"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Caribbean Hindi",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:35,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:4.91,lng:-52.3,code:"PG022284"},{name:"Southwest Aborigine Creol",country:"Australia",lang:"English",rol3:"eng",pct_christian:35,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-32.54,lng:115.99,code:"PG008068"},{name:"Anglo-Australian",country:"Singapore",lang:"English",rol3:"eng",pct_christian:35,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:1.36,lng:103.82,code:"PG010684"},{name:"American",country:"Iceland",lang:"English",rol3:"eng",pct_christian:35,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.14,lng:-21.89,code:"PG000293"},{name:"American",country:"Marshall Islands",lang:"English",rol3:"eng",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:7.1,lng:171.22,code:"PG009376"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Detribalized Aborigine",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:58e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG007863"},{name:"Jamaican",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:33e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047381"},{name:"Barbadian",country:"Barbados",lang:"English",rol3:"eng",pct_christian:25,pop:269e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:13.17,lng:-59.56,code:"PG016195"},{name:"American",country:"Panama",lang:"English",rol3:"eng",pct_christian:25,pop:186e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:9.06,lng:-79.38,code:"PG050309"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Barbadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047394"},{name:"Bay Islands Creole",country:"Honduras",lang:"English",rol3:"eng",pct_christian:25,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:16.34,lng:-86.39,code:"PG024758"},{name:"American",country:"Virgin Islands",lang:"English",rol3:"eng",pct_christian:25,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:17.96,lng:-64.8,code:"PG050296"},{name:"American",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:25,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-36.89,lng:174.78,code:"PG018513"},{name:"American",country:"Guam",lang:"English",rol3:"eng",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:13.44,lng:144.78,code:"PG050299"},{name:"American",country:"Fiji",lang:"English",rol3:"eng",pct_christian:25,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-18.13,lng:178.44,code:"PG018421"},{name:"Mono",country:"Cameroon",lang:"Fulfulde, Adamawa",rol3:"fub",pct_christian:25,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:8.77,lng:14.12,code:"PG012705"},{name:"American",country:"Greenland",lang:"English",rol3:"eng",pct_christian:25,pop:3400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:64.18,lng:-51.7,code:"PG000286"},{name:"Maori",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050518"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Wik-Ngathan",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-13.84,lng:141.57,code:"PG008118"},{name:"Polynesian",country:"Canada",lang:"English",rol3:"eng",pct_christian:25,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.28,lng:-122.84,code:"PG050519"},{name:"Yankuntatjara",country:"Australia",lang:"English",rol3:"eng",pct_christian:25,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-27.14,lng:133.83,code:"PG008134"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Bermudians",country:"Bermuda",lang:"English",rol3:"eng",pct_christian:17.5,pop:66e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.31,lng:-64.77,code:"PG016210"},{name:"Caymanian",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:17.5,pop:60500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:19.42,lng:-80.89,code:"PG016216"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Kenyan",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:43.83,lng:-79.46,code:"PG047469"},{name:"American",country:"Haiti",lang:"English",rol3:"eng",pct_christian:17.5,pop:19e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:18.55,lng:-72.32,code:"PG016382"},{name:"Ghanaian",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:49.22,lng:-122.99,code:"PG047407"},{name:"Passamaquoddy",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.36,lng:-67.46,code:"PG043437"},{name:"Tlingit",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:60.48,lng:-132.29,code:"PG043489"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Onondaga",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.05,lng:-80.11,code:"PG043451"},{name:"K’ómoks",country:"Canada",lang:"English",rol3:"eng",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-124.96,code:"PG043374"},{name:"Rembarunga",country:"Australia",lang:"English",rol3:"eng",pct_christian:17.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-12.96,lng:134.58,code:"PG008058"},{name:"Irish, Northern",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:166e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:54.61,lng:-6.69,code:"PG022219"},{name:"Afro-Trinidadian",country:"Trinidad and Tobago",lang:"English",rol3:"eng",pct_christian:12.5,pop:725e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.42,lng:-61.3,code:"PG016442"},{name:"Metis",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:704e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.13,lng:-97.19,code:"PG043455"},{name:"Gbaya",country:"Cameroon",lang:"Gbaya, Northwest",rol3:"gya",pct_christian:12.5,pop:442e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.26,lng:13.47,code:"PG012601"},{name:"American",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:402e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.97,lng:-107.63,code:"PG043500"},{name:"English Caribbean",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:394e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.73,lng:-90.31,code:"PG049256"},{name:"Han Chinese",country:"Singapore",lang:"English",rol3:"eng",pct_christian:12.5,pop:358e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020724"},{name:"Detribalized Amerindian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.64,lng:-115.72,code:"PG043384"},{name:"Sub-Saharan Africans, English-Speaking",country:"Belgium",lang:"English",rol3:"eng",pct_christian:12.5,pop:123e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.85,lng:4.38,code:"PG047833"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Fijian",country:"Australia",lang:"English",rol3:"eng",pct_christian:12.5,pop:71500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-33.75,lng:144.18,code:"PG050451"},{name:"Cree, Woodland",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.6,lng:-106.15,code:"PG043378"},{name:"Dominican",country:"Dominica",lang:"English",rol3:"eng",pct_christian:12.5,pop:67e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:15.43,lng:-61.35,code:"PG016306"},{name:"Welsh",country:"Argentina",lang:"English",rol3:"eng",pct_christian:12.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-43.27,lng:-65.44,code:"PG017376"},{name:"Mohawk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:44.18,lng:-77.77,code:"PG043441"},{name:"Barbadian",country:"United Kingdom",lang:"English",rol3:"eng",pct_christian:12.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.5,lng:-.17,code:"PG048436"},{name:"Euronesian",country:"Fiji",lang:"English",rol3:"eng",pct_christian:12.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-17.95,lng:178.24,code:"PG018419"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"American",country:"Costa Rica",lang:"English",rol3:"eng",pct_christian:12.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:10.22,lng:-85.24,code:"PG025025"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Tsimshian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:54.42,lng:-130.3,code:"PG043490"},{name:"Lillooet",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:7500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.68,lng:-121.92,code:"PG043432"},{name:"Nakota (Assiniboine)",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:52.17,lng:-107.03,code:"PG043354"},{name:"Kwakwakaʼwakw",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:6500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.72,lng:-127.5,code:"PG043427"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Dakota",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:5500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.52,lng:-102.88,code:"PG043381"},{name:"American",country:"Micronesia",lang:"English",rol3:"eng",pct_christian:12.5,pop:5400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:6.95,lng:158.2,code:"PG018394"},{name:"Straits Salish",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.49,lng:-123.46,code:"PG043479"},{name:"Bahamian",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:43.9,lng:-79.58,code:"PG050486"},{name:"Cree, Southern East",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:3200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:50.77,lng:-75.81,code:"PG043411"},{name:"Heiltsuk",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:52.3,lng:-128.28,code:"PG043406"},{name:"Tolowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.9,lng:-124.16,code:"PG050627"},{name:"Sac & Fox Tribe of the Mississippi in Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:41.98,lng:-92.65,code:"PG043616"},{name:"Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.99,lng:-95.39,code:"PG043277"},{name:"Central Africans",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047190"},{name:"Jamaican",country:"Germany",lang:"English",rol3:"eng",pct_christian:12.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.13,lng:11.56,code:"PG048546"},{name:"American",country:"Curacao",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.19,lng:-68.97,code:"PG016406"},{name:"Saint Lucian",country:"French Guiana",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:4.91,lng:-52.3,code:"PG022286"},{name:"Tubatulabal",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:36.07,lng:-118.31,code:"PG043660"},{name:"Euronesian",country:"Cook Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-21.23,lng:-159.78,code:"PG018317"},{name:"Nez Perce",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-116.41,code:"PG043560"},{name:"Salinan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:35.83,lng:-120.77,code:"PG050637"},{name:"Kaska",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:58.79,lng:-126.96,code:"PG043421"},{name:"Anuta",country:"Solomon Islands",lang:"English",rol3:"eng",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-11.61,lng:169.85,code:"PG010725"},{name:"Sac & Fox Nation of Missouri in Kansas and Nebraska",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:450,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.01,lng:-95.52,code:"PG050671"},{name:"British",country:"Lesotho",lang:"English",rol3:"eng",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-29.33,lng:27.51,code:"PG015281"},{name:"Haida",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:55.19,lng:-132.88,code:"PG043257"},{name:"Chinuk Wawa",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.37,lng:-123.2,code:"PG043372"},{name:"Cayuga",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:60,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:42.55,lng:-79,code:"PG043191"},{name:"Upper Tanana",country:"Canada",lang:"English",rol3:"eng",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:62.07,lng:-140.22,code:"PG043497"},{name:"Chinese American",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:175e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG050453"},{name:"Jamaican",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:588e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.14,lng:-77.63,code:"PG043284"},{name:"Detribalized Amerindian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:454e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.9,lng:-111.06,code:"PG043225"},{name:"Cape Verdean",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:309e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.42,lng:-74.94,code:"PG047254"},{name:"Ghanaian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:204e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG046500"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Trinidadian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:40.69,lng:-73.86,code:"PG046512"},{name:"Choctaw",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:121e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.5,lng:-95.33,code:"PG043202"},{name:"Liberian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:107e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG047273"},{name:"American",country:"Dominican Republic",lang:"English",rol3:"eng",pct_christian:7.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.48,lng:-69.91,code:"PG016327"},{name:"Kenyan",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:96e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Neo-Pentecostalism",lat:33.32,lng:-92.72,code:"PG050473"},{name:"Anglo-Australian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:84e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:35.02,lng:-98.4,code:"PG043519"},{name:"Trinidadian",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:84e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.72,lng:-95.67,code:"PG047383"},{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Channel Islanders",country:"Guernsey",lang:"English",rol3:"eng",pct_christian:7.5,pop:65e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.48,lng:-2.52,code:"PG048818"},{name:"South African",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:44e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:47.85,lng:-102.06,code:"PG050480"},{name:"Cree, Plains",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:43e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:53.8,lng:-109.54,code:"PG043505"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"British",country:"Zambia",lang:"English",rol3:"eng",pct_christian:7.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-15.4,lng:28.31,code:"PG015570"},{name:"Blackfoot, Siksika",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:48.66,lng:-112.87,code:"PG043538"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"American",country:"Ecuador",lang:"English",rol3:"eng",pct_christian:7.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.18,lng:-78.49,code:"PG017483"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Potawatomi",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:24e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39.34,lng:-95.84,code:"PG043601"},{name:"Euronesian",country:"Solomon Islands",lang:"English",rol3:"eng",pct_christian:7.5,pop:23500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-9.43,lng:159.96,code:"PG018398"},{name:"Halkomelem",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:21e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:49.22,lng:-121.97,code:"PG043403"},{name:"Tlingit",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:57.16,lng:-133.75,code:"PG043653"},{name:"Filipino",country:"New Zealand",lang:"English",rol3:"eng",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-36.89,lng:174.78,code:"PG047593"},{name:"Comanche",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:34.56,lng:-98.43,code:"PG043209"},{name:"British",country:"Cayman Islands",lang:"English",rol3:"eng",pct_christian:7.5,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:19.33,lng:-81.38,code:"PG016215"},{name:"Cheyenne",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:13500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.53,lng:-106.68,code:"PG043198"},{name:"American",country:"Papua New Guinea",lang:"English",rol3:"eng",pct_christian:7.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-9.45,lng:147.18,code:"PG022038"},{name:"Pueblo, Santa Clara",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Native American religions",lat:35.98,lng:-106.22,code:"PG050653"},{name:"Shuswap",country:"Canada",lang:"English",rol3:"eng",pct_christian:7.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:51.26,lng:-120.93,code:"PG043468"}]},Algeria:{target_upg:38,target_pop:47320600,target_top_langs:["Arabic, Algerian","Kabyle","Tachawit","Tamazight, Central Atlas"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Algeria",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:55e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:36.73,lng:3.13,code:"PG049244"},{name:"Bakole",country:"Cameroon",lang:"French",rol3:"fra",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:4.43,lng:8.97,code:"PG012493"},{name:"PoaPoa",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:25,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.87,lng:164.66,code:"PG018370"},{name:"Romani, Vlax",country:"Belgium",lang:"Romani, Vlax",rol3:"rmy",pct_christian:17.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.85,lng:4.38,code:"PG000068"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Euronesian",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:12.5,pop:58500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-17.56,lng:-149.57,code:"PG018408"},{name:"Euronesian",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-22.27,lng:166.45,code:"PG018406"},{name:"Aeke",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.07,lng:164.88,code:"PG009564"},{name:"French",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:7.5,pop:93500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.33,lng:165.49,code:"PG018389"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Sake",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:.07,lng:11.63,code:"PG013210"},{name:"Burundi",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050494"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Kande",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.09,lng:11.75,code:"PG013189"},{name:"Chadian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.58,lng:-73.7,code:"PG050504"},{name:"New Caledonian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.22,lng:-122.99,code:"PG047444"},{name:"Gabonese",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.9,lng:-77.19,code:"PG047191"},{name:"Chinese-Tahitian Creole",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:7.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.56,lng:-149.57,code:"PG018407"},{name:"Chadian",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:38.02,lng:-84.5,code:"PG047189"},{name:"Walloon",country:"Belgium",lang:"French",rol3:"fra",pct_christian:3.5,pop:3755e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.32,lng:4.95,code:"PG000076"},{name:"Swiss",country:"Switzerland",lang:"French",rol3:"fra",pct_christian:3.5,pop:2015e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.6,lng:6.93,code:"PG000585"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Franco-Mauritian",country:"Mauritius",lang:"French",rol3:"fra",pct_christian:3.5,pop:72500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.25,lng:57.51,code:"PG015346"},{name:"Romani, Vlax, Kalderash",country:"Argentina",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:61e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-34.65,lng:-58.56,code:"PG017346"},{name:"Romani, Vlax",country:"Colombia",lang:"Romani, Vlax",rol3:"rmy",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:4.64,lng:-74.11,code:"PG016290"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Romanian",country:"France",lang:"French",rol3:"fra",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000192"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"French Caribbean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.5,lng:-73.81,code:"PG047395"},{name:"Togolese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.52,lng:-73.68,code:"PG050478"},{name:"Congolese",country:"Spain",lang:"French",rol3:"fra",pct_christian:3.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.41,lng:-3.69,code:"PG042340"},{name:"Abenaki",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.07,lng:-72.82,code:"PG043348"},{name:"Ivorian",country:"United States",lang:"French",rol3:"fra",pct_christian:3.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047266"},{name:"Guinean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.5,lng:-73.81,code:"PG047454"},{name:"Sighu",country:"Gabon",lang:"French",rol3:"fra",pct_christian:3.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.84,lng:12.69,code:"PG013213"},{name:"Rwandan",country:"Netherlands",lang:"French",rol3:"fra",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:51.9,lng:4.47,code:"PG000430"},{name:"Gabonese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050505"}]},Iraq:{target_upg:31,target_pop:46011e3,target_top_langs:["Arabic, Mesopotamian","Arabic, North Mesopotamian","Kurdish, Central","Kurdish, Northern"],target_top_religion:"Islam",neighbors:[{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},"Myanmar (Burma)":{target_upg:58,target_pop:44445100,target_top_langs:["Burmese","Shan","Rakhine","Chinese, Mandarin"],target_top_religion:"Buddhism",neighbors:[{name:"Kayaw",country:"Myanmar",lang:"Kayaw",rol3:"kvl",pct_christian:75,pop:26e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.26,lng:96.85,code:"PG009414"},{name:"Zanniat Chin",country:"Myanmar",lang:"Chin, Falam",rol3:"cfm",pct_christian:75,pop:2e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23,lng:93.84,code:"PG009549"},{name:"Lushai",country:"Myanmar",lang:"Mizo",rol3:"lus",pct_christian:75,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.44,lng:93.63,code:"PG009473"},{name:"Siyin Chin",country:"Myanmar",lang:"Chin, Siyin",rol3:"csy",pct_christian:75,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.41,lng:93.63,code:"PG009521"},{name:"Anal",country:"Myanmar",lang:"Anal",rol3:"anm",pct_christian:75,pop:50,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.21,lng:94.31,code:"PG022039"},{name:"Karen, S'gaw",country:"Myanmar",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:62.5,pop:201e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:17.51,lng:96.16,code:"PG009518"},{name:"Tiddim Chin",country:"Myanmar",lang:"Chin, Tedim",rol3:"ctd",pct_christian:62.5,pop:256e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.5,lng:94.06,code:"PG009534"},{name:"Falam Chin",country:"Myanmar",lang:"Chin, Falam",rol3:"cfm",pct_christian:62.5,pop:147e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.02,lng:93.67,code:"PG022048"},{name:"Haka Chin",country:"Myanmar",lang:"Chin, Hakha",rol3:"cnh",pct_christian:62.5,pop:133e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.45,lng:93.8,code:"PG009431"},{name:"Rawang",country:"Myanmar",lang:"Rawang",rol3:"raw",pct_christian:62.5,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.25,lng:97.97,code:"PG009509"},{name:"Kuki Chin",country:"Myanmar",lang:"Chin, Thado",rol3:"tcz",pct_christian:62.5,pop:41e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.9,lng:94.73,code:"PG009461"},{name:"K'cho Chin",country:"Myanmar",lang:"Chin, Müün",rol3:"mwq",pct_christian:62.5,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:20.29,lng:94.3,code:"PG022045"},{name:"Ngawn Chin",country:"Myanmar",lang:"Chin, Ngawn",rol3:"cnw",pct_christian:62.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.09,lng:93.85,code:"PG009493"},{name:"Bawm",country:"Myanmar",lang:"Chin, Bawm",rol3:"bgr",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.59,lng:92.9,code:"PG009408"},{name:"Pyen",country:"Myanmar",lang:"Pyen",rol3:"pyy",pct_christian:62.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.03,lng:99.65,code:"PG009506"},{name:"Lahu",country:"Myanmar",lang:"Lahu",rol3:"lhu",pct_christian:45,pop:2e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.58,lng:99.59,code:"PG009463"},{name:"Zome",country:"Myanmar",lang:"Zo",rol3:"zom",pct_christian:45,pop:61e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:23.53,lng:94.12,code:"PG009551"},{name:"Zotung Chin",country:"Myanmar",lang:"Chin, Zotung",rol3:"czt",pct_christian:45,pop:54e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.55,lng:93.32,code:"PG009552"},{name:"Chin, Mara",country:"Myanmar",lang:"Mara",rol3:"mrh",pct_christian:45,pop:25e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:22.05,lng:93.12,code:"PG009481"},{name:"Karen, Gheko",country:"Myanmar",lang:"Karen, Geko",rol3:"ghk",pct_christian:45,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.51,lng:96.75,code:"PG009428"},{name:"Kawyaw",country:"Myanmar",lang:"Kawyaw",rol3:"kxf",pct_christian:45,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:19.28,lng:97.08,code:"PG009479"},{name:"Naga, Konyak",country:"Myanmar",lang:"Naga, Konyak",rol3:"nbe",pct_christian:45,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.56,lng:95.18,code:"PG009460"},{name:"Kachin",country:"Myanmar",lang:"Jingpho",rol3:"kac",pct_christian:35,pop:1065e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.05,lng:97.44,code:"PG009448"},{name:"Eurasian",country:"Myanmar",lang:"English",rol3:"eng",pct_christian:35,pop:56500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:16.85,lng:96.15,code:"PG022046"},{name:"Lashi",country:"Myanmar",lang:"Lacid",rol3:"lsi",pct_christian:35,pop:3e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.83,lng:98.25,code:"PG009469"},{name:"Rawngtu Chin",country:"Myanmar",lang:"Chin, Rawngtu",rol3:"weu",pct_christian:35,pop:5e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:21.55,lng:93.73,code:"PG009539"},{name:"Mro-Khimi",country:"Myanmar",lang:"Mro-Khimi",rol3:"cmr",pct_christian:25,pop:75e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:20.7,lng:92.98,code:"PG009456"},{name:"Karen, Geba",country:"Myanmar",lang:"Karen, Geba",rol3:"kvq",pct_christian:25,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:19.5,lng:96.62,code:"PG009427"},{name:"Karen, Bghai",country:"Myanmar",lang:"Karen, Bwe",rol3:"bwe",pct_christian:25,pop:21e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.09,lng:96.72,code:"PG009510"},{name:"Karen, Yinbaw",country:"Myanmar",lang:"Yinbaw",rol3:"kvu",pct_christian:25,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:18.96,lng:97.21,code:"PG009546"},{name:"Anu",country:"Myanmar",lang:"Chin, Anu-Khongso",rol3:"anl",pct_christian:25,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:21.31,lng:92.84,code:"PG009405"},{name:"Drung",country:"Myanmar",lang:"Drung",rol3:"duu",pct_christian:25,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:28.1,lng:97.69,code:"PG009535"},{name:"Achang",country:"Myanmar",lang:"Achang",rol3:"acn",pct_christian:17.5,pop:4e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:24.31,lng:97.54,code:"PG009475"},{name:"Karen, Zayein",country:"Myanmar",lang:"Zayein",rol3:"kxk",pct_christian:17.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:97.06,code:"PG009550"},{name:"Chin, Asho",country:"Myanmar",lang:"Chin, Asho",rol3:"csh",pct_christian:12.5,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:20.4,lng:94.79,code:"PG009406"},{name:"Blang",country:"Myanmar",lang:"Blang",rol3:"blr",pct_christian:12.5,pop:16e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:21.5,lng:100.17,code:"PG022041"},{name:"Hmong Njua",country:"Myanmar",lang:"Hmong Njua",rol3:"hnj",pct_christian:12.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:23.63,lng:97.65,code:"PG022056"},{name:"Hsifan",country:"Myanmar",lang:"Tibetan, Central",rol3:"bod",pct_christian:12.5,pop:5600,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:27.24,lng:97.64,code:"PG009445"},{name:"Karen, Mobwa",country:"Myanmar",lang:"Karen, Mobwa",rol3:"jkm",pct_christian:12.5,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:18.98,lng:96.63,code:"PG048772"},{name:"Tawr Chin",country:"Myanmar",lang:"Chin, Tawr",rol3:"tcp",pct_christian:12.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.5,lng:93.78,code:"PG009532"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Karen, Kayan",country:"Myanmar",lang:"Kayan (Myanmar)",rol3:"pdu",pct_christian:7.5,pop:133e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.56,lng:96.82,code:"PG009497"},{name:"Tai Mao",country:"Myanmar",lang:"Tai Long",rol3:"thi",pct_christian:7.5,pop:12e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:23.89,lng:97.73,code:"PG047888"},{name:"Chin, Daai",country:"Myanmar",lang:"Chin, Daai",rol3:"dao",pct_christian:7.5,pop:41e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:21.05,lng:93.67,code:"PG009421"},{name:"Senthang",country:"Myanmar",lang:"Chin, Senthang",rol3:"sez",pct_christian:7.5,pop:33e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.46,lng:93.85,code:"PG009516"},{name:"Uppu",country:"Myanmar",lang:"Chin, Uppu",rol3:"cnb",pct_christian:7.5,pop:30500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Folk",lat:19.9,lng:94.08,code:"PG009419"},{name:"Hrangkhol",country:"Myanmar",lang:"Hrangkhol",rol3:"hra",pct_christian:7.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:23.75,lng:93.78,code:"PG009444"},{name:"Karen, Paku",country:"Myanmar",lang:"Karen, Paku",rol3:"jkp",pct_christian:7.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:18.94,lng:96.86,code:"PG009499"},{name:"Lisu",country:"Myanmar",lang:"Lisu",rol3:"lis",pct_christian:3.5,pop:327e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:24.78,lng:97.17,code:"PG009523"},{name:"Akha",country:"Myanmar",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:23e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:21.71,lng:99.8,code:"PG009402"},{name:"Karen, Pow Western",country:"Myanmar",lang:"Karen, Pwo Western",rol3:"pwo",pct_christian:3.5,pop:21e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.46,lng:97.72,code:"PG046602"},{name:"Khumi Chin",country:"Myanmar",lang:"Chin, Khumi",rol3:"cnk",pct_christian:3.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.17,lng:92.98,code:"PG009457"},{name:"Naga, Tase",country:"Myanmar",lang:"Naga, Tangshang",rol3:"nst",pct_christian:3.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.71,lng:96.23,code:"PG009528"},{name:"Riang",country:"Myanmar",lang:"Riang Lang",rol3:"ril",pct_christian:3.5,pop:57500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:23.22,lng:98.73,code:"PG009511"},{name:"Zaiwa",country:"Myanmar",lang:"Zaiwa",rol3:"atb",pct_christian:3.5,pop:38500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:24.47,lng:97.99,code:"PG009407"},{name:"Lao",country:"Myanmar",lang:"Lao",rol3:"lao",pct_christian:3.5,pop:26e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:16.85,lng:96.15,code:"PG009467"},{name:"Anong",country:"Myanmar",lang:"Lisu",rol3:"lis",pct_christian:3.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.29,lng:98.68,code:"PG009495"},{name:"Karen, Lahta",country:"Myanmar",lang:"Lahta",rol3:"kvt",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:20.32,lng:96.89,code:"PG009462"},{name:"Karen, Yintale",country:"Myanmar",lang:"Yintale",rol3:"kvy",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:18.84,lng:97.26,code:"PG009547"},{name:"Samtao",country:"Myanmar",lang:"Samtao",rol3:"stu",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:21.3,lng:99.63,code:"PG022054"},{name:"Naga, Yimchungru",country:"Myanmar",lang:"Naga, Yimchungru",rol3:"yim",pct_christian:3.5,pop:5600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:25.38,lng:94.8,code:"PG009545"},{name:"Tailoi",country:"Myanmar",lang:"Tai Loi",rol3:"tlq",pct_christian:3.5,pop:5100,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:21.52,lng:100.94,code:"PG009525"},{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Syrian Christian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:62.5,pop:4495e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:12.35,lng:76.09,code:"PG041308"},{name:"Naga, Tangkhul",country:"India",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:25.07,lng:94.38,code:"PG041697"},{name:"Soria",country:"India",lang:"Hindi",rol3:"hin",pct_christian:62.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.2,lng:77.09,code:"PG048955"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Naga, Tangkhul",country:"United States",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:32.85,lng:-96.97,code:"PG050369"},{name:"Pulayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:45,pop:154e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.06,lng:76.53,code:"PG041344"},{name:"Meghval",country:"India",lang:"Hindi",rol3:"hin",pct_christian:45,pop:377e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.87,lng:73.03,code:"PG041328"},{name:"Santal (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:45,pop:176e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.8,lng:87.48,code:"PG046353"},{name:"Naga, Khiamngan",country:"India",lang:"Naga, Khiamniungan",rol3:"kix",pct_christian:45,pop:56e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:26.17,lng:94.89,code:"PG042023"},{name:"Hmong",country:"Vietnam",lang:"Hmong Daw",rol3:"mww",pct_christian:35,pop:133e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.86,lng:103.59,code:"PG011142"},{name:"Malai Arayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:35,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:9.65,lng:76.66,code:"PG041952"},{name:"Paravar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:8.62,lng:77,code:"PG041743"},{name:"Madgi",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:76500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.17,lng:79.45,code:"PG041802"},{name:"Gounder",country:"India",lang:"Tamil",rol3:"tam",pct_christian:25,pop:6e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.68,lng:78.22,code:"PG041906"},{name:"Maru",country:"China",lang:"Lhao Vo",rol3:"mhx",pct_christian:25,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.33,lng:98.43,code:"PG007279"},{name:"Kerala Mudali",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.44,lng:78.7,code:"PG049672"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"Godari",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:17.69,lng:83.22,code:"PG049205"},{name:"Chamail",country:"India",lang:"Hindi",rol3:"hin",pct_christian:25,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:25.48,lng:85.95,code:"PG049469"},{name:"Ghogia",country:"India",lang:"Odia",rol3:"ory",pct_christian:25,pop:800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.15,lng:84.09,code:"PG049008"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"Arakala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:25,pop:375,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.11,lng:83.4,code:"PG049160"},{name:"Mala",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:7615e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.36,lng:79.51,code:"PG041263"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Ojha",country:"India",lang:"Telugu",rol3:"tel",pct_christian:17.5,pop:46e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.74,lng:78.25,code:"PG041974"},{name:"Badhi",country:"India",lang:"Hindi",rol3:"hin",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:29.95,lng:77.55,code:"PG041480"},{name:"Lahu Shi",country:"Thailand",lang:"Lahu Shi",rol3:"lhi",pct_christian:17.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:18.98,lng:99.39,code:"PG010939"},{name:"Goudu",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.71,lng:83.25,code:"PG042158"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Black Karen",country:"Thailand",lang:"Pa’o",rol3:"blk",pct_christian:17.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.74,lng:98.06,code:"PG010829"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Bari (Oriya)",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.86,lng:84.8,code:"PG048204"},{name:"Candhai Maru",country:"India",lang:"Odia",rol3:"ory",pct_christian:17.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.48,lng:83.97,code:"PG049648"},{name:"Madiga",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:9445e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:16.51,lng:79.06,code:"PG041253"},{name:"Chakkiliyan",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1205e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:77.71,code:"PG041373"},{name:"Nadua Shabar",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:659e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:19.9,lng:85.17,code:"PG049502"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Mannan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:145e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.8,lng:76.55,code:"PG041756"},{name:"Chakravar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.62,lng:77,code:"PG041956"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Samban",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.7,lng:77.49,code:"PG041752"},{name:"Mehtar",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:16.22,lng:75.63,code:"PG042116"},{name:"Panchama",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:7800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:17.01,lng:81.79,code:"PG042086"},{name:"Peranakan",country:"Malaysia",lang:"Malay",rol3:"zlm",pct_christian:12.5,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.4,lng:101.64,code:"PG018232"},{name:"Palliyan",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.89,lng:77.09,code:"PG049215"},{name:"Padigarajulu",country:"India",lang:"Telugu",rol3:"tel",pct_christian:12.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.58,lng:79.51,code:"PG049165"},{name:"Malayali",country:"Maldives",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:4.17,lng:73.51,code:"PG006163"},{name:"Kuda",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.83,lng:85.53,code:"PG049016"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Tharua",country:"India",lang:"Odia",rol3:"ory",pct_christian:12.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.49,lng:86.93,code:"PG049031"},{name:"Gharrami",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:28.64,lng:77.12,code:"PG049392"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Nadar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:6365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.17,lng:77.82,code:"PG041309"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Vellalar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:308e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.78,lng:77.78,code:"PG041493"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Pano",country:"India",lang:"Odia",rol3:"ory",pct_christian:7.5,pop:1735e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:21.04,lng:85.14,code:"PG041345"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Indian - Hindu",country:"South Africa",lang:"Hindi",rol3:"hin",pct_christian:7.5,pop:1365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:-28.9,lng:26.75,code:"PG042180"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"},{name:"Cheruman",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:76.25,code:"PG041452"},{name:"Han Chinese, Mandarin",country:"Singapore",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020728"},{name:"Han Chinese",country:"Brazil",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:28e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-23.17,lng:-45.54,code:"PG016864"},{name:"Malayali",country:"Malaysia",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:206e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.64,code:"PG020224"},{name:"Han Chinese, Mandarin",country:"United Arab Emirates",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:202e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.67,lng:55.14,code:"PG049240"},{name:"Han Chinese, Mandarin",country:"North Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:184e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:39,lng:125.92,code:"PG007584"},{name:"Han Chinese",country:"France",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:172e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:48.2,lng:2.3,code:"PG023131"},{name:"Malayali",country:"United States",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:165e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:40.72,lng:-73.97,code:"PG043340"},{name:"Han Chinese, Mandarin",country:"Hong Kong",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:163e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050605"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Telugu",country:"Malaysia",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:137e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.62,code:"PG009356"},{name:"Ghanchi",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:129e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.02,lng:73.03,code:"PG041585"},{name:"Han Chinese, Mandarin",country:"Saudi Arabia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:24.68,lng:46.74,code:"PG049246"},{name:"Han Chinese",country:"Tanzania",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:106e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-6.83,lng:39.25,code:"PG014935"},{name:"Han Chinese",country:"Italy",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:44.22,lng:10.5,code:"PG000330"},{name:"Han Chinese",country:"South Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:94500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.58,lng:127.64,code:"PG007589"},{name:"Han Chinese, Mandarin",country:"Tajikistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.57,lng:68.77,code:"PG049245"},{name:"Bharathar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:81e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:8.94,lng:76.82,code:"PG049578"}]},Afghanistan:{target_upg:68,target_pop:43626100,target_top_langs:["Pashto, Southern","Dari","Pashto, Northern","Hazaragi"],target_top_religion:"Islam",neighbors:[{name:"Romani, Balkan",country:"Italy",lang:"Romani, Balkan",rol3:"rmn",pct_christian:62.5,pop:2500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:45.54,lng:9.19,code:"PG000312"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Romani, Balkan",country:"Bulgaria",lang:"Romani, Balkan",rol3:"rmn",pct_christian:7.5,pop:267e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:42.86,lng:23.79,code:"PG000737"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"},{name:"Romani, Balkan",country:"France",lang:"Romani, Balkan",rol3:"rmn",pct_christian:3.5,pop:650,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.84,lng:2.35,code:"PG000134"}]},Yemen:{target_upg:20,target_pop:41244500,target_top_langs:["Arabic, Sanaani","Arabic, Ta'izzi-Adeni","Arabic, Hadrami","Somali"],target_top_religion:"Islam",neighbors:[{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Hasidim",country:"United Kingdom",lang:"Hebrew",rol3:"heb",pct_christian:7.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:51.5,lng:-.17,code:"PG000648"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},Morocco:{target_upg:29,target_pop:38094500,target_top_langs:["Arabic, Moroccan","Tachelhit","Tamazight, Central Atlas","Tarifit"],target_top_religion:"Islam",neighbors:[]},Uzbekistan:{target_upg:34,target_pop:35401700,target_top_langs:["Uzbek, Northern","Tajik","Kazakh","Karakalpak"],target_top_religion:"Islam",neighbors:[{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Pole",country:"Uzbekistan",lang:"Polish",rol3:"pol",pct_christian:7.5,pop:3700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:41.31,lng:69.26,code:"PG024310"},{name:"Han Chinese",country:"Uzbekistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:41.33,lng:69.29,code:"PG024675"},{name:"Ukrainian",country:"Uzbekistan",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:47e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:41.31,lng:69.26,code:"PG024323"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Romanian",country:"Czech Republic",lang:"Romanian",rol3:"ron",pct_christian:25,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.07,lng:14.47,code:"PG050033"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Estonian",country:"Estonia",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:9e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:58.67,lng:25.55,code:"PG000779"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Estonian",country:"Canada",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043392"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Romanian",country:"Romania",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1637e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:45.84,lng:24.98,code:"PG000899"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Romanian",country:"Italy",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:13e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:44.5,lng:9.8,code:"PG048833"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Romanian",country:"Hungary",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.8,lng:20.84,code:"PG000835"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Romanian ",country:"Austria",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.18,lng:16.35,code:"PG049963"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Romanian",country:"Ireland",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:53.39,lng:-6.28,code:"PG048049"},{name:"Moldovan",country:"Canada",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.72,lng:-95.67,code:"PG047364"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Karakalpak",country:"Kazakhstan",lang:"Karakalpak",rol3:"kaa",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.62,lng:62.06,code:"PG024276"},{name:"Romanian",country:"Venezuela",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.48,lng:-66.88,code:"PG016490"}]},"Saudi Arabia":{target_upg:44,target_pop:31109500,target_top_langs:["Arabic, Najdi","Arabic, Hijazi","Bengali","Urdu"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Saudi Arabia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:24.68,lng:46.74,code:"PG049246"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Arab, Syro-Lebanese",country:"Australia",lang:"Arabic, Gulf",rol3:"afb",pct_christian:7.5,pop:192e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-33.38,lng:143.4,code:"PG020267"},{name:"Lodha, Savar",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:148e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.43,code:"PG041753"},{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Kela",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:20.46,lng:85.67,code:"PG042031"},{name:"Baiti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:23.24,lng:88.24,code:"PG042100"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Chhetri",country:"India",lang:"Nepali",rol3:"npi",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.34,lng:89.24,code:"PG041565"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Chagga",country:"Tanzania",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1185e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-3.29,lng:37.08,code:"PG014916"},{name:"Bhangi (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:699e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.15,lng:87.53,code:"PG048219"},{name:"Kora",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:279e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.29,lng:86.43,code:"PG041592"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Gurung",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:147e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.84,lng:90.63,code:"PG041693"},{name:"Nepali",country:"Bhutan",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.13,lng:89.79,code:"PG042388"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Damai (Nepali)",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:66500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.66,lng:89.08,code:"PG041874"},{name:"Koch",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:51e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.68,lng:88.93,code:"PG042084"},{name:"Kotal",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:42500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.42,lng:87.79,code:"PG041946"},{name:"Swahili",country:"Zambia",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-15.4,lng:28.31,code:"PG015634"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Doai",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.05,lng:88.57,code:"PG042134"},{name:"Sarki",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.96,lng:88.33,code:"PG042059"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Paharia",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.37,lng:86.02,code:"PG049049"},{name:"Behera",country:"India",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:3800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.3,lng:87.44,code:"PG041569"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Zanzibari",country:"South Africa",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-29.84,lng:30.93,code:"PG015550"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"},{name:"Kusunda",country:"Nepal",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.17,lng:85.13,code:"PG049141"}]},Ethiopia:{target_upg:33,target_pop:30668900,target_top_langs:["Somali","Amharic","Oromo, West Central","Oromo, Borana-Arsi-Guji"],target_top_religion:"Islam",neighbors:[{name:"Sidama",country:"Ethiopia",lang:"Sidamo",rol3:"sid",pct_christian:62.5,pop:524e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.66,lng:38.54,code:"PG011635"},{name:"Koorete",country:"Ethiopia",lang:"Koorete",rol3:"kqy",pct_christian:62.5,pop:252e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.79,lng:37.83,code:"PG011608"},{name:"Basketo",country:"Ethiopia",lang:"Basketo",rol3:"bst",pct_christian:62.5,pop:127e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.26,lng:36.56,code:"PG011552"},{name:"Konso",country:"Ethiopia",lang:"Konso",rol3:"kxc",pct_christian:45,pop:407e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:5.35,lng:37.39,code:"PG011607"},{name:"Naath",country:"Ethiopia",lang:"Nuer",rol3:"nus",pct_christian:45,pop:25e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:8.29,lng:34.17,code:"PG011572"},{name:"Oyda",country:"Ethiopia",lang:"Oyda",rol3:"oyd",pct_christian:45,pop:73500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.18,lng:36.81,code:"PG011629"},{name:"Bussa",country:"Ethiopia",lang:"Mositacha",rol3:"dox",pct_christian:45,pop:31e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.75,lng:37.22,code:"PG042702"},{name:"Wolaitta",country:"Ethiopia",lang:"Wolaytta",rol3:"wal",pct_christian:35,pop:305e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.68,lng:37.63,code:"PG011653"},{name:"Hadiyya",country:"Ethiopia",lang:"Hadiyya",rol3:"hdy",pct_christian:35,pop:2255e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.48,lng:37.77,code:"PG011591"},{name:"Gedeo",country:"Ethiopia",lang:"Gedeo",rol3:"drs",pct_christian:35,pop:158e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.15,lng:38.28,code:"PG011567"},{name:"Kambata",country:"Ethiopia",lang:"Kambaata",rol3:"ktb",pct_christian:35,pop:1025e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.29,lng:37.83,code:"PG011602"},{name:"Meen",country:"Ethiopia",lang:"Me’en",rol3:"mym",pct_christian:35,pop:242e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:6.86,lng:35.75,code:"PG011617"},{name:"Melo",country:"Ethiopia",lang:"Melo",rol3:"mfx",pct_christian:35,pop:168e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:6.51,lng:36.68,code:"PG011618"},{name:"Gidole",country:"Ethiopia",lang:"Dirasha",rol3:"gdl",pct_christian:35,pop:67e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.63,lng:37.38,code:"PG011583"},{name:"Tambaro",country:"Ethiopia",lang:"Kambaata",rol3:"ktb",pct_christian:25,pop:158e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:7.26,lng:37.48,code:"PG011648"},{name:"Guji",country:"Ethiopia",lang:"Oromo, Borana-Arsi-Guji",rol3:"gax",pct_christian:17.5,pop:938e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:6.17,lng:39.39,code:"PG011557"},{name:"Dawro",country:"Ethiopia",lang:"Dawro",rol3:"dwr",pct_christian:17.5,pop:88e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:6.97,lng:37.1,code:"PG011568"},{name:"Gofa",country:"Ethiopia",lang:"Gofa",rol3:"gof",pct_christian:17.5,pop:59e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.27,lng:37.17,code:"PG011587"},{name:"Gamo",country:"Ethiopia",lang:"Gamo",rol3:"gmv",pct_christian:12.5,pop:18e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.26,lng:37.18,code:"PG011579"},{name:"Chara",country:"Ethiopia",lang:"Tsaara",rol3:"cra",pct_christian:12.5,pop:21500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.35,lng:36.16,code:"PG011565"},{name:"Dache",country:"Ethiopia",lang:"Gamo",rol3:"gmv",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:5.96,lng:37.53,code:"PG042703"},{name:"Kachama",country:"Ethiopia",lang:"Kachama-Ganjule",rol3:"kcx",pct_christian:7.5,pop:4100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.88,lng:37.48,code:"PG011600"},{name:"Borana",country:"Ethiopia",lang:"Oromo, Borana-Arsi-Guji",rol3:"gax",pct_christian:3.5,pop:965e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:4.91,lng:38.51,code:"PG011558"},{name:"Ari",country:"Ethiopia",lang:"Aari",rol3:"aiw",pct_christian:3.5,pop:472e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:5.88,lng:36.5,code:"PG011548"},{name:"Mesqan",country:"Ethiopia",lang:"Mesqan",rol3:"mvz",pct_christian:3.5,pop:317e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:8.12,lng:38.39,code:"PG050130"},{name:"Zayse",country:"Ethiopia",lang:"Zayse",rol3:"zay",pct_christian:3.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.78,lng:37.38,code:"PG011659"},{name:"Gorose",country:"Ethiopia",lang:"Ale",rol3:"gwd",pct_christian:3.5,pop:7200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.46,lng:37.44,code:"PG042713"},{name:"Amhara",country:"Canada",lang:"Amharic",rol3:"amh",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG047403"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Eritreans",country:"Kenya",lang:"Tigrigna",rol3:"tir",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-1.3,lng:36.86,code:"PG050216"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"Komo",country:"Sudan",lang:"Komo (Sudan)",rol3:"xom",pct_christian:3.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.82,lng:34.09,code:"PG012072"},{name:"Eritreans",country:"Uganda",lang:"Tigrigna",rol3:"tir",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:.34,lng:32.6,code:"PG050217"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Ethiopian, Oromo",country:"United States",lang:"Oromo, West Central",rol3:"gaz",pct_christian:3.5,pop:7200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.9,lng:-77.19,code:"PG047338"}]},Niger:{target_upg:30,target_pop:27011e3,target_top_langs:["Hausa","Zarma","Fulfulde, Western Niger","Tamajaq, Tawallammat"],target_top_religion:"Islam",neighbors:[{name:"Gurma",country:"Niger",lang:"Gourmanchéma",rol3:"gux",pct_christian:3.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:12.86,lng:1.82,code:"PG013599"},{name:"Yoruba",country:"Niger",lang:"Yoruba",rol3:"yor",pct_christian:3.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:13.51,lng:2.12,code:"PG013615"},{name:"Burkina Faso",country:"Canada",lang:"Moore",rol3:"mos",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:43.83,lng:-79.46,code:"PG047453"},{name:"Mossi",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:8335e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.73,lng:-1.3,code:"PG012424"},{name:"Mossi",country:"Ghana",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:526e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:5.57,lng:-.22,code:"PG013360"},{name:"Zaore",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:68e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.36,lng:-1.52,code:"PG012427"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mossi",country:"United States",lang:"Moore",rol3:"mos",pct_christian:3.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.74,lng:-73.72,code:"PG047647"}]},"Korea, North":{target_upg:2,target_pop:263e5,target_top_langs:["Korean","Language unknown"],target_top_religion:"Non-Religious",neighbors:[{name:"Han Chinese, Mandarin",country:"North Korea",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:184e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:39,lng:125.92,code:"PG007584"},{name:"Korean",country:"Thailand",lang:"Korean",rol3:"kor",pct_christian:35,pop:20500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.76,lng:100.56,code:"PG010874"},{name:"Korean",country:"Argentina",lang:"Korean",rol3:"kor",pct_christian:25,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG046918"},{name:"Korean",country:"Singapore",lang:"Korean",rol3:"kor",pct_christian:25,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:1.36,lng:103.82,code:"PG010710"},{name:"Korean",country:"Taiwan",lang:"Korean",rol3:"kor",pct_christian:25,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.63,lng:120.33,code:"PG007526"},{name:"Korean",country:"Northern Mariana Islands",lang:"Korean",rol3:"kor",pct_christian:25,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:15.91,lng:145.61,code:"PG050228"},{name:"Korean",country:"Australia",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:167e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-33.85,lng:151.03,code:"PG021625"},{name:"Korean",country:"Canada",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:46.93,lng:-92.67,code:"PG043424"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"United Kingdom",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:51.5,lng:-.17,code:"PG000650"},{name:"Korean",country:"New Zealand",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-36.89,lng:174.78,code:"PG047592"},{name:"Korean",country:"Hong Kong",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:22.38,lng:114.13,code:"PG050601"},{name:"Korean",country:"Paraguay",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.3,lng:-57.56,code:"PG017246"},{name:"Korean",country:"Guam",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:4300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:13.44,lng:144.78,code:"PG050301"},{name:"Korean",country:"Dominican Republic",lang:"Korean",rol3:"kor",pct_christian:17.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:18.48,lng:-69.91,code:"PG022409"},{name:"Korean",country:"South Korea",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:5025e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:36.38,lng:127.82,code:"PG048088"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Korean",country:"Mozambique",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:36e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-25.89,lng:32.57,code:"PG015382"},{name:"Korean",country:"Madagascar",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-18.91,lng:47.53,code:"PG015310"},{name:"Korean",country:"Honduras",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:150,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:14.08,lng:-87.2,code:"PG024788"},{name:"Korean",country:"Brazil",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:48500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-23.57,lng:-46.57,code:"PG016974"},{name:"Korean",country:"Germany",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.12,lng:8.67,code:"PG000249"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Korean",country:"Kyrgyzstan",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:19500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:42.88,lng:74.63,code:"PG024358"},{name:"Korean",country:"Iran",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:17500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.7,lng:51.38,code:"PG024174"},{name:"Korean",country:"Guatemala",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:14.6,lng:-90.55,code:"PG024719"},{name:"Korean",country:"Turkmenistan",lang:"Korean",rol3:"kor",pct_christian:7.5,pop:5200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:37.94,lng:58.39,code:"PG024622"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Korean",country:"France",lang:"Korean",rol3:"kor",pct_christian:3.5,pop:29e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:48.84,lng:2.35,code:"PG000171"},{name:"Korean",country:"Spain",lang:"Korean",rol3:"kor",pct_christian:3.5,pop:2900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:40.41,lng:-3.69,code:"PG042347"},{name:"Korean",country:"Panama",lang:"Korean",rol3:"kor",pct_christian:3.5,pop:325,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:9.02,lng:-79.5,code:"PG024842"}]},Nepal:{target_upg:214,target_pop:26044700,target_top_langs:["Nepali","Maithili","Tharu, Dangaura","Newar"],target_top_religion:"Hinduism",neighbors:[{name:"Rai, Chamlinge",country:"Nepal",lang:"Chamling",rol3:"rab",pct_christian:25,pop:15e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.06,lng:86.49,code:"PG006185"},{name:"Chepang",country:"Nepal",lang:"Chepang",rol3:"cdm",pct_christian:7.5,pop:68500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:27.58,lng:84.79,code:"PG006189"},{name:"Rai, Sampange",country:"Nepal",lang:"Sampang",rol3:"rav",pct_christian:7.5,pop:14e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.57,lng:85.77,code:"PG006288"},{name:"Munda",country:"Nepal",lang:"Munda",rol3:"unx",pct_christian:7.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:26.75,lng:87.41,code:"PG006260"},{name:"Jirel",country:"Nepal",lang:"Jirel",rol3:"jul",pct_christian:7.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.8,lng:85.63,code:"PG006224"},{name:"Lepcha",country:"Nepal",lang:"Lepcha",rol3:"lep",pct_christian:7.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:26.86,lng:87.66,code:"PG006247"},{name:"Koi",country:"Nepal",lang:"Koyee",rol3:"kkt",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.15,lng:86.8,code:"PG006235"},{name:"Nawa Sherpa",country:"Nepal",lang:"Naaba",rol3:"nao",pct_christian:7.5,pop:950,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:27.7,lng:87.34,code:"PG006265"},{name:"Danuwar",country:"Nepal",lang:"Danuwar",rol3:"dhw",pct_christian:3.5,pop:7e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.04,lng:86.13,code:"PG006196"},{name:"Santal",country:"Nepal",lang:"Santhali",rol3:"sat",pct_christian:3.5,pop:55500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:26.77,lng:86.99,code:"PG006289"},{name:"Bengali",country:"Nepal",lang:"Bengali",rol3:"ben",pct_christian:3.5,pop:31e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.42,lng:84.77,code:"PG006178"},{name:"Han Chinese",country:"Nepal",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:23e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:27.71,lng:85.32,code:"PG006216"},{name:"Yakha",country:"Nepal",lang:"Yakkha",rol3:"ybh",pct_christian:3.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Other - Kirati",lat:27.08,lng:86.54,code:"PG006317"},{name:"Brahman (Hindi)",country:"Nepal",lang:"Hindi",rol3:"hin",pct_christian:3.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:27.43,lng:85.17,code:"PG045937"},{name:"Badhi",country:"Nepal",lang:"Jumli",rol3:"jml",pct_christian:3.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:28.3,lng:82.82,code:"PG049104"},{name:"Lhomi",country:"Nepal",lang:"Lhomi",rol3:"lhm",pct_christian:3.5,pop:7300,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:27.75,lng:86.08,code:"PG006248"},{name:"British",country:"Nepal",lang:"English",rol3:"eng",pct_christian:3.5,pop:3300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:27.71,lng:85.32,code:"PG006183"},{name:"Raji",country:"Nepal",lang:"Raji",rol3:"rji",pct_christian:3.5,pop:3100,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:28.61,lng:81.28,code:"PG006282"},{name:"Syuba",country:"Nepal",lang:"Syuba",rol3:"syw",pct_christian:3.5,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Tibetan",lat:27.45,lng:86.19,code:"PG006226"},{name:"Kusunda",country:"Nepal",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:275,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:27.17,lng:85.13,code:"PG049141"},{name:"Koirao",country:"India",lang:"Boro (India)",rol3:"brx",pct_christian:75,pop:1800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:25.2,lng:94.05,code:"PG049766"},{name:"Majhi",country:"India",lang:"Majhi",rol3:"mjz",pct_christian:75,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.11,lng:88.35,code:"PG049075"},{name:"Ansari-Momin (Sadri)",country:"India",lang:"Sadri",rol3:"sck",pct_christian:75,pop:225,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.63,lng:85.55,code:"PG048700"},{name:"Hkauri",country:"China",lang:"Tibetan, Central",rol3:"bod",pct_christian:62.5,pop:40,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.55,lng:97.6,code:"PG022169"},{name:"Kharia",country:"India",lang:"Kharia",rol3:"khr",pct_christian:25,pop:889e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.47,lng:84.55,code:"PG041457"},{name:"Oraon",country:"Bhutan",lang:"Kurux",rol3:"kru",pct_christian:25,pop:4200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.88,lng:89.21,code:"PG001235"},{name:"Balmiki (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:17.5,pop:172e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.93,lng:78.08,code:"PG041289"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Domar",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:12.5,pop:27e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:25.45,lng:80.38,code:"PG049077"},{name:"Hsifan",country:"Myanmar",lang:"Tibetan, Central",rol3:"bod",pct_christian:12.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Tibetan",lat:27.24,lng:97.64,code:"PG009445"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Dusadh",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:7.5,pop:691e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:25.23,lng:85.31,code:"PG041266"},{name:"Oraon",country:"India",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:551e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:24.4,lng:86.87,code:"PG041304"},{name:"Chamar (Awadhi)",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:7.5,pop:1275e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.07,lng:80.62,code:"PG046031"},{name:"Amant",country:"India",lang:"Maithili",rol3:"mai",pct_christian:7.5,pop:244e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.04,lng:86.5,code:"PG042053"},{name:"Oraon",country:"Bangladesh",lang:"Kurux",rol3:"kru",pct_christian:7.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:25.86,lng:88.88,code:"PG001195"},{name:"Bangni",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:62500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:27.43,lng:92.97,code:"PG041887"},{name:"Badaik",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:47500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.23,lng:84.86,code:"PG042092"},{name:"Parhaiya",country:"India",lang:"Sadri",rol3:"sck",pct_christian:7.5,pop:38e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.97,lng:84.3,code:"PG041928"},{name:"Chhetri",country:"India",lang:"Nepali",rol3:"npi",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.34,lng:89.24,code:"PG041565"},{name:"Sorgir",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.39,code:"PG049092"},{name:"Kankali",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:27.7,lng:81.49,code:"PG049096"},{name:"Khadim",country:"India",lang:"Urdu",rol3:"urd",pct_christian:7.5,pop:400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:26.49,lng:74.65,code:"PG048969"},{name:"Kharwar (Khotta)",country:"India",lang:"Maithili",rol3:"mai",pct_christian:7.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.85,lng:87.96,code:"PG048298"},{name:"Yadava (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:8465e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.05,lng:84.06,code:"PG046313"},{name:"Chamar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:455e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.65,lng:84.13,code:"PG046025"},{name:"Mazabi",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3625e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.25,lng:74.91,code:"PG041301"},{name:"Boro",country:"India",lang:"Boro (India)",rol3:"brx",pct_christian:3.5,pop:1545e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.71,lng:89.29,code:"PG041371"},{name:"Kisan (Kurukh)",country:"India",lang:"Kurux",rol3:"kru",pct_christian:3.5,pop:544e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.1,lng:84.53,code:"PG041504"},{name:"Chamar (Maithili)",country:"India",lang:"Maithili",rol3:"mai",pct_christian:3.5,pop:43e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.09,lng:85.94,code:"PG046040"},{name:"Lohara",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:324e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:25.14,lng:87.24,code:"PG041542"},{name:"Gurung",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:147e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.84,lng:90.63,code:"PG041693"},{name:"Nepali",country:"Bhutan",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:131e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:27.13,lng:89.79,code:"PG042388"},{name:"Beldar (Bhojpuri)",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:115e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:26.35,lng:83.71,code:"PG048209"},{name:"Chikwa",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:89500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:23.97,lng:84.3,code:"PG041852"},{name:"Rajbhar",country:"India",lang:"Bhojpuri",rol3:"bho",pct_christian:3.5,pop:89e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.68,lng:80.47,code:"PG042085"},{name:"Bhattra (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:79e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:30.98,lng:75.73,code:"PG041615"},{name:"Damai (Nepali)",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:66500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.66,lng:89.08,code:"PG041874"},{name:"Arain (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:30.37,lng:75.93,code:"PG048185"},{name:"Binjhia",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22,lng:82.34,code:"PG042025"},{name:"Gond (Sadri) ",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:30500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.17,lng:85,code:"PG048262"},{name:"Sarki",country:"India",lang:"Nepali",rol3:"npi",pct_christian:3.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:26.96,lng:88.33,code:"PG042059"},{name:"Punjabi",country:"Singapore",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:15e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Sikhism",lat:1.36,lng:103.82,code:"PG010717"},{name:"Gorait",country:"India",lang:"Sadri",rol3:"sck",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:23.21,lng:85.33,code:"PG042169"},{name:"Gandhila",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:6600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.34,lng:76.4,code:"PG049080"},{name:"Boria",country:"India",lang:"Awadhi",rol3:"awa",pct_christian:3.5,pop:5e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:27.09,lng:82.01,code:"PG049076"},{name:"Sherpa",country:"Bhutan",lang:"Sherpa",rol3:"xsr",pct_christian:3.5,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Tibetan",lat:27.49,lng:89.64,code:"PG048796"},{name:"Pinjara (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:29.48,lng:76.44,code:"PG048167"},{name:"Daoli",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:2800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.97,lng:76.55,code:"PG049445"},{name:"Dayare",country:"India",lang:"Urdu",rol3:"urd",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.79,lng:77.53,code:"PG049780"},{name:"Ahluwalia",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:3.5,pop:1400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:31.39,lng:75.36,code:"PG049356"},{name:"Dhamin",country:"India",lang:"Maithili",rol3:"mai",pct_christian:3.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:25.82,lng:87.13,code:"PG049396"}]},Mali:{target_upg:44,target_pop:22708100,target_top_langs:["Bamanankan","Soninke","Senoufo, Mamara","Fulfulde, Maasina"],target_top_religion:"Islam",neighbors:[{name:"Dogon",country:"Mali",lang:"Dogon, Toro So",rol3:"dts",pct_christian:3.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:14.21,lng:-3.27,code:"PG013545"},{name:"Bobo, Black",country:"Mali",lang:"Konabéré",rol3:"bbo",pct_christian:3.5,pop:48500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.6,lng:-4.54,code:"PG013536"},{name:"Burkina Faso",country:"Canada",lang:"Moore",rol3:"mos",pct_christian:12.5,pop:425,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:43.83,lng:-79.46,code:"PG047453"},{name:"Mossi",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:8335e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.73,lng:-1.3,code:"PG012424"},{name:"Mossi",country:"Ghana",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:526e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:5.57,lng:-.22,code:"PG013360"},{name:"Zaore",country:"Burkina Faso",lang:"Moore",rol3:"mos",pct_christian:7.5,pop:68e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.36,lng:-1.52,code:"PG012427"},{name:"Fulfulde Masina",country:"Burkina Faso",lang:"Fulfulde, Maasina",rol3:"ffm",pct_christian:7.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:13.38,lng:-3.94,code:"PG012397"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mossi",country:"United States",lang:"Moore",rol3:"mos",pct_christian:3.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.74,lng:-73.72,code:"PG047647"}]},Somalia:{target_upg:20,target_pop:19407100,target_top_langs:["Somali","Maay","Swahili","Garre"],target_top_religion:"Islam",neighbors:[{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Chagga",country:"Tanzania",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1185e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-3.29,lng:37.08,code:"PG014916"},{name:"Swahili",country:"Zambia",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-15.4,lng:28.31,code:"PG015634"},{name:"Zanzibari",country:"South Africa",lang:"Swahili",rol3:"swh",pct_christian:3.5,pop:1900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-29.84,lng:30.93,code:"PG015550"}]},Malaysia:{target_upg:80,target_pop:18071880,target_top_langs:["Malay","Negeri Sembilan Malay","Bengali","Bajau, West Coast"],target_top_religion:"Islam",neighbors:[{name:"Chavacano",country:"Malaysia",lang:"Chavacano",rol3:"cbk",pct_christian:62.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:4.47,lng:118.57,code:"PG009226"},{name:"Bundu Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:45,pop:82e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.2,lng:116.43,code:"PG018481"},{name:"Tutoh Kenyah",country:"Malaysia",lang:"Long Wat",rol3:"ttw",pct_christian:45,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.86,lng:114.62,code:"PG019323"},{name:"Beketan",country:"Malaysia",lang:"Bukitan",rol3:"bkn",pct_christian:45,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:2.31,lng:113.01,code:"PG009208"},{name:"Central Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:35,pop:263e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:5.99,lng:116.62,code:"PG018484"},{name:"Tagal Murut",country:"Malaysia",lang:"Murut, Tahol",rol3:"mvv",pct_christian:35,pop:71e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:4.64,lng:116.14,code:"PG009348"},{name:"Southern Murut",country:"Malaysia",lang:"Lundayeh",rol3:"lnd",pct_christian:35,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.42,lng:115.51,code:"PG019277"},{name:"Tambunan Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:35,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.68,lng:116.39,code:"PG019283"},{name:"Madang",country:"Malaysia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:35,pop:23500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:3.5,lng:114.32,code:"PG009289"},{name:"Upper Kinabatangan",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:35,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.42,lng:116.97,code:"PG019329"},{name:"Central Murut",country:"Malaysia",lang:"Murut, Keningau",rol3:"kxi",pct_christian:35,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.35,lng:116.23,code:"PG018486"},{name:"Kalabit",country:"Malaysia",lang:"Kelabit",rol3:"kzi",pct_christian:35,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:3.76,lng:115.3,code:"PG009259"},{name:"Western Kenyah",country:"Malaysia",lang:"Uma’ Lasan",rol3:"xky",pct_christian:35,pop:3e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:2.06,lng:114.21,code:"PG019333"},{name:"Sekapan",country:"Malaysia",lang:"Sekapan",rol3:"skp",pct_christian:35,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.6,lng:113.74,code:"PG018249"},{name:"Tungara",country:"Malaysia",lang:"Murut, Bookan",rol3:"bnb",pct_christian:35,pop:650,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:5.28,lng:116.53,code:"PG019322"},{name:"Bukar Sadong",country:"Malaysia",lang:"Bidayuh Serian",rol3:"sdo",pct_christian:25,pop:72500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.07,lng:110.62,code:"PG009221"},{name:"Sungai Dusun",country:"Malaysia",lang:"Kadazan, Labuk-Kinabatangan",rol3:"dtb",pct_christian:25,pop:62e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:5.68,lng:116.42,code:"PG019280"},{name:"Sugut Kadazan",country:"Malaysia",lang:"Sugut Dusun",rol3:"kzs",pct_christian:25,pop:19e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.13,lng:117.18,code:"PG019279"},{name:"Tobilang",country:"Malaysia",lang:"Tobilung",rol3:"tgb",pct_christian:25,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.56,lng:116.64,code:"PG009362"},{name:"Baram Kayan",country:"Malaysia",lang:"Kayan, Baram",rol3:"kys",pct_christian:25,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.53,lng:114.46,code:"PG009203"},{name:"Sinabu",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:25,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:5.3,lng:116.96,code:"PG019271"},{name:"Minokok Dusun",country:"Malaysia",lang:"Minokok",rol3:"mqq",pct_christian:25,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.46,lng:116.8,code:"PG018523"},{name:"Eurasian",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:17.5,pop:68500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG020233"},{name:"Kimaragan",country:"Malaysia",lang:"Kimaragang",rol3:"kqr",pct_christian:17.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.53,lng:117.02,code:"PG009265"},{name:"Eastern Kadazan",country:"Malaysia",lang:"Kadazan, Labuk-Kinabatangan",rol3:"dtb",pct_christian:17.5,pop:31500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.58,lng:117.41,code:"PG020232"},{name:"Tidung",country:"Malaysia",lang:"Tidung, Northern",rol3:"ntd",pct_christian:17.5,pop:24500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.34,lng:117.7,code:"PG019289"},{name:"Tudan Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:17.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.01,lng:116.16,code:"PG019321"},{name:"Tambanua",country:"Malaysia",lang:"Tombonuo",rol3:"txa",pct_christian:17.5,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:6.39,lng:117.23,code:"PG019282"},{name:"Tempasuk Dusun",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:17.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.36,lng:116.55,code:"PG009358"},{name:"Balau",country:"Malaysia",lang:"Iban",rol3:"iba",pct_christian:17.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.32,lng:110.85,code:"PG009199"},{name:"Kwijau Dusun",country:"Malaysia",lang:"Kuijau",rol3:"dkr",pct_christian:17.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.43,lng:116.24,code:"PG009274"},{name:"Dusun Segama",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:17.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.16,lng:118.34,code:"PG020229"},{name:"Filipino",country:"Malaysia",lang:"Tagalog",rol3:"tgl",pct_christian:12.5,pop:874e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:3.07,lng:101.64,code:"PG018269"},{name:"Sea Dayak",country:"Malaysia",lang:"Iban",rol3:"iba",pct_christian:12.5,pop:68e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:2.27,lng:112.58,code:"PG009325"},{name:"Biatah",country:"Malaysia",lang:"Bidayuh, Biatah",rol3:"bth",pct_christian:12.5,pop:91e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:1.41,lng:110.32,code:"PG009211"},{name:"Rungus Dusun",country:"Malaysia",lang:"Rungus",rol3:"drg",pct_christian:12.5,pop:68e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:6.84,lng:116.91,code:"PG009320"},{name:"Sarawak Dayak",country:"Malaysia",lang:"Bidayuh, Bau",rol3:"sne",pct_christian:12.5,pop:31500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.46,lng:110.08,code:"PG009324"},{name:"Tutong",country:"Malaysia",lang:"Bisaya, Brunei",rol3:"bsb",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.35,lng:114.68,code:"PG019324"},{name:"Tuaran Dusun",country:"Malaysia",lang:"Lotud",rol3:"dtr",pct_christian:12.5,pop:11e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.11,lng:116.24,code:"PG019320"},{name:"Lanas Lobu",country:"Malaysia",lang:"Lobu, Lanas",rol3:"ruu",pct_christian:12.5,pop:6100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.44,lng:116.54,code:"PG009276"},{name:"Millikin",country:"Malaysia",lang:"Remun",rol3:"lkj",pct_christian:12.5,pop:5500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.08,lng:110.66,code:"PG009300"},{name:"Peranakan",country:"Malaysia",lang:"Malay",rol3:"zlm",pct_christian:12.5,pop:5e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.4,lng:101.64,code:"PG018232"},{name:"Keningau Dusun",country:"Malaysia",lang:"Malay, Sabah",rol3:"msi",pct_christian:12.5,pop:4400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.4,lng:116.19,code:"PG019337"},{name:"Baokan",country:"Malaysia",lang:"Murut, Bookan",rol3:"bnb",pct_christian:12.5,pop:4200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.28,lng:116.54,code:"PG009202"},{name:"Tampias Lobu",country:"Malaysia",lang:"Lobu, Tampias",rol3:"low",pct_christian:12.5,pop:4e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.74,lng:116.8,code:"PG019284"},{name:"Southern Kota Marudu",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:12.5,pop:2800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.46,lng:116.83,code:"PG019276"},{name:"Dusun - Murut",country:"Malaysia",lang:"Kadazan Dusun",rol3:"dtp",pct_christian:12.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.34,lng:116.17,code:"PG020231"},{name:"Klias River Kadazan",country:"Malaysia",lang:"Kadazan, Klias River",rol3:"kqt",pct_christian:12.5,pop:2500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.44,lng:115.63,code:"PG009270"},{name:"Han Chinese, Min Nan",country:"Malaysia",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:2375e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.94,lng:102.06,code:"PG046598"},{name:"Han Chinese, Cantonese",country:"Malaysia",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:19e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.65,lng:101.56,code:"PG046594"},{name:"Malayali",country:"Malaysia",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:206e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:3.07,lng:101.64,code:"PG020224"},{name:"Telugu",country:"Malaysia",lang:"Telugu",rol3:"tel",pct_christian:7.5,pop:137e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:3.07,lng:101.62,code:"PG009356"},{name:"Han Chinese, Hainanese",country:"Malaysia",lang:"Hainanese",rol3:"hnm",pct_christian:7.5,pop:79e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.07,lng:101.64,code:"PG046595"},{name:"Idahan Dusun",country:"Malaysia",lang:"Ida’an",rol3:"dbj",pct_christian:7.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.38,lng:118.38,code:"PG009252"},{name:"Timogun Murut",country:"Malaysia",lang:"Murut, Timugon",rol3:"tih",pct_christian:7.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.22,lng:115.85,code:"PG009361"},{name:"Kinabatangan Sungai",country:"Malaysia",lang:"Kadazan, Labuk-Kinabatangan",rol3:"dtb",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.54,lng:117.88,code:"PG019338"},{name:"Lara",country:"Malaysia",lang:"Bakati’, Rara",rol3:"lra",pct_christian:7.5,pop:17500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.59,lng:109.77,code:"PG009280"},{name:"Penan",country:"Malaysia",lang:"Penan, Eastern",rol3:"pez",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:3.59,lng:114.98,code:"PG018231"},{name:"Tatana",country:"Malaysia",lang:"Tatana",rol3:"txx",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.47,lng:115.52,code:"PG019285"},{name:"Kalabuan",country:"Malaysia",lang:"Kinabatangan, Upper",rol3:"dmg",pct_christian:7.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.4,lng:117.02,code:"PG009260"},{name:"Sembakung Murut",country:"Malaysia",lang:"Murut, Sembakung",rol3:"sbr",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.38,lng:116.43,code:"PG009334"},{name:"Sebuyau",country:"Malaysia",lang:"Iban",rol3:"iba",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.45,lng:110.55,code:"PG018247"},{name:"Bintulu",country:"Malaysia",lang:"Vaie",rol3:"bny",pct_christian:7.5,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.23,lng:112.98,code:"PG009212"},{name:"Selekau",country:"Malaysia",lang:"Kendayan",rol3:"knx",pct_christian:7.5,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:1.71,lng:109.77,code:"PG018250"},{name:"Rejang Kayan",country:"Malaysia",lang:"Kayan, Rejang",rol3:"ree",pct_christian:7.5,pop:7400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.55,lng:113.9,code:"PG018236"},{name:"Sonsogon",country:"Malaysia",lang:"Kimaragang",rol3:"kqr",pct_christian:7.5,pop:4800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:6.5,lng:116.86,code:"PG019275"},{name:"Sibop Kenyah",country:"Malaysia",lang:"Sebop",rol3:"sib",pct_christian:7.5,pop:4200,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:3.35,lng:114.3,code:"PG019270"},{name:"Kalabakan Murut",country:"Malaysia",lang:"Murut, Kalabakan",rol3:"kve",pct_christian:7.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:4.53,lng:117.34,code:"PG009258"},{name:"Serudung Murut",country:"Malaysia",lang:"Murut, Serudung",rol3:"srk",pct_christian:7.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.37,lng:117.31,code:"PG009338"},{name:"Saban",country:"Malaysia",lang:"Sa’ban",rol3:"snv",pct_christian:7.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.22,lng:115.4,code:"PG009321"},{name:"Dumpas",country:"Malaysia",lang:"Dumpas",rol3:"dmv",pct_christian:7.5,pop:1700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.97,lng:117.35,code:"PG009244"},{name:"Rejang Punan",country:"Malaysia",lang:"Punan Bah-Biau",rol3:"pna",pct_christian:7.5,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.09,lng:113.39,code:"PG009319"},{name:"Tring",country:"Malaysia",lang:"Tring",rol3:"tgq",pct_christian:7.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:3.98,lng:114.64,code:"PG019319"},{name:"Selungai Murut",country:"Malaysia",lang:"Murut, Selungai",rol3:"slg",pct_christian:7.5,pop:600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.52,lng:116.43,code:"PG009330"},{name:"Tamil",country:"Malaysia",lang:"Tamil",rol3:"tam",pct_christian:3.5,pop:26e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:3.9,lng:104.29,code:"PG009351"},{name:"Han Chinese, English",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:3.5,pop:2395e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.04,lng:102.22,code:"PG046932"},{name:"Han Chinese, Mandarin",country:"Malaysia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:1015e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:4.14,lng:101.06,code:"PG046597"},{name:"Indonesian",country:"Malaysia",lang:"Indonesian",rol3:"ind",pct_christian:3.5,pop:343e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:3.07,lng:101.64,code:"PG020239"},{name:"Melanau",country:"Malaysia",lang:"Melanau, Central",rol3:"mel",pct_christian:3.5,pop:159e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:2.54,lng:111.89,code:"PG018518"},{name:"Coastal Kadazan",country:"Malaysia",lang:"Papar",rol3:"dpp",pct_christian:3.5,pop:137e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:5.43,lng:115.5,code:"PG020225"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Kanarese",country:"Malaysia",lang:"Kannada",rol3:"kan",pct_christian:3.5,pop:72e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:1.51,lng:103.76,code:"PG019334"},{name:"Semai",country:"Malaysia",lang:"Semai",rol3:"sea",pct_christian:3.5,pop:6e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.11,lng:101.3,code:"PG009331"},{name:"Sinhalese",country:"Malaysia",lang:"Sinhala",rol3:"sin",pct_christian:3.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018261"},{name:"Burmese",country:"Malaysia",lang:"Burmese",rol3:"mya",pct_christian:3.5,pop:32500,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018483"},{name:"Temuan",country:"Malaysia",lang:"Temuan",rol3:"tmw",pct_christian:3.5,pop:22500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.56,lng:101.72,code:"PG009359"},{name:"Daro - Matu",country:"Malaysia",lang:"Melanau, Daro-Matu",rol3:"dro",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:2.62,lng:111.54,code:"PG020227"},{name:"British",country:"Malaysia",lang:"English",rol3:"eng",pct_christian:3.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:3.07,lng:101.62,code:"PG009217"},{name:"Japanese",country:"Malaysia",lang:"Japanese",rol3:"jpn",pct_christian:3.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Shinbutso-shugo",lat:3.07,lng:101.64,code:"PG020241"},{name:"Semelai",country:"Malaysia",lang:"Semelai",rol3:"sza",pct_christian:3.5,pop:8e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.05,lng:102.62,code:"PG009335"},{name:"Peluan",country:"Malaysia",lang:"Murut, Paluan",rol3:"plz",pct_christian:3.5,pop:5700,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.12,lng:116.24,code:"PG009313"},{name:"Jah Hut",country:"Malaysia",lang:"Jah Hut",rol3:"jah",pct_christian:3.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.59,lng:102.33,code:"PG009254"},{name:"Semoq Beri",country:"Malaysia",lang:"Semaq Beri",rol3:"szc",pct_christian:3.5,pop:5300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.06,lng:102.85,code:"PG009333"},{name:"Narom",country:"Malaysia",lang:"Narom",rol3:"nrm",pct_christian:3.5,pop:5200,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:4.21,lng:113.93,code:"PG009306"},{name:"Lower Murut",country:"Malaysia",lang:"Murut, Timugon",rol3:"tih",pct_christian:3.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.18,lng:115.93,code:"PG020131"},{name:"Pandewan Murut",country:"Malaysia",lang:"Murut, Paluan",rol3:"plz",pct_christian:3.5,pop:2900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.13,lng:116.22,code:"PG018226"},{name:"Murik Kayan",country:"Malaysia",lang:"Murik (Malaysia)",rol3:"mxr",pct_christian:3.5,pop:2700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:3.6,lng:114.41,code:"PG009305"},{name:"Bakong Kenyah",country:"Malaysia",lang:"Kenyah, Mainstream",rol3:"xkl",pct_christian:3.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:1.48,lng:114.55,code:"PG009198"},{name:"Bateq",country:"Malaysia",lang:"Batek",rol3:"btq",pct_christian:3.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.68,lng:102.47,code:"PG009204"},{name:"Bajau Bukit",country:"Malaysia",lang:"Papar",rol3:"dpp",pct_christian:3.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:5.6,lng:115.6,code:"PG018466"},{name:"Berawan",country:"Malaysia",lang:"Berawan, West",rol3:"zbw",pct_christian:3.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4,lng:114.71,code:"PG009210"},{name:"Orang Seletar",country:"Malaysia",lang:"Orang Seletar",rol3:"ors",pct_christian:3.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.6,lng:104.13,code:"PG018223"},{name:"Kayaman",country:"Malaysia",lang:"Kajaman",rol3:"kag",pct_christian:3.5,pop:1200,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.7,lng:114.06,code:"PG009262"},{name:"Siduan",country:"Malaysia",lang:"Melanau, Sibu",rol3:"sdx",pct_christian:3.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:2.33,lng:111.76,code:"PG009341"},{name:"Kanowit",country:"Malaysia",lang:"Melanau, Kanowit-Tanjong",rol3:"kxn",pct_christian:3.5,pop:425,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.06,lng:112.25,code:"PG009261"},{name:"Lanoh",country:"Malaysia",lang:"Lanoh",rol3:"lnh",pct_christian:3.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:5.1,lng:101.03,code:"PG009279"},{name:"Ukit",country:"Malaysia",lang:"Ukit",rol3:"umi",pct_christian:3.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.71,lng:113.04,code:"PG019326"},{name:"Tanjong",country:"Malaysia",lang:"Melanau, Kanowit-Tanjong",rol3:"kxn",pct_christian:3.5,pop:250,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.06,lng:112.25,code:"PG009353"},{name:"Sian",country:"Malaysia",lang:"Sihan (Malaysia)",rol3:"spg",pct_christian:3.5,pop:175,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:2.7,lng:113.83,code:"PG009339"},{name:"Batu Punan",country:"Malaysia",lang:"Punan Batu",rol3:"pnm",pct_christian:3.5,pop:125,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:4.21,lng:114.35,code:"PG018470"},{name:"Orang Kanaq",country:"Malaysia",lang:"Malay",rol3:"zlm",pct_christian:3.5,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:1.88,lng:104.03,code:"PG018222"},{name:"Lemo",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:75,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:25.84,lng:98.78,code:"PG007252"},{name:"Soria",country:"India",lang:"Hindi",rol3:"hin",pct_christian:62.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:23.2,lng:77.09,code:"PG048955"},{name:"Rathodia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:62.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.3,lng:73.39,code:"PG048948"},{name:"Bagti",country:"India",lang:"Bengali",rol3:"ben",pct_christian:62.5,pop:275,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:23.28,lng:86.43,code:"PG049044"},{name:"Meghval",country:"India",lang:"Hindi",rol3:"hin",pct_christian:45,pop:377e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:26.87,lng:73.03,code:"PG041328"},{name:"Gounder",country:"India",lang:"Tamil",rol3:"tam",pct_christian:25,pop:6e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.68,lng:78.22,code:"PG041906"},{name:"Sediq",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:25,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:24.02,lng:121.35,code:"PG007536"},{name:"Chamail",country:"India",lang:"Hindi",rol3:"hin",pct_christian:25,pop:1200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:25.48,lng:85.95,code:"PG049469"},{name:"Balmiki (Punjabi)",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:17.5,pop:1295e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.44,lng:75.81,code:"PG048195"},{name:"Nadia",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:69500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041830"},{name:"Badhi",country:"India",lang:"Hindi",rol3:"hin",pct_christian:17.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:29.95,lng:77.55,code:"PG041480"},{name:"Sutar (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:17.5,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:21.4,lng:71.23,code:"PG048301"},{name:"Han Chinese",country:"New Zealand",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:214e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-36.89,lng:174.78,code:"PG018495"},{name:"Senva",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:161e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG041682"},{name:"Chakravar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.62,lng:77,code:"PG041956"},{name:"Bawa Dedh",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:12.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:22.72,lng:72.18,code:"PG042035"},{name:"Han Chinese, Min Nan",country:"Canada",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:12.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:45.42,lng:-75.69,code:"PG047427"},{name:"Samban",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:8.7,lng:77.49,code:"PG041752"},{name:"Mehtar",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:2e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:16.22,lng:75.63,code:"PG042116"},{name:"Palliyan",country:"India",lang:"Tamil",rol3:"tam",pct_christian:12.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.89,lng:77.09,code:"PG049215"},{name:"Gagra",country:"India",lang:"Punjabi, Eastern",rol3:"pan",pct_christian:12.5,pop:700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:30.84,lng:75.86,code:"PG049079"},{name:"Gharrami",country:"India",lang:"Hindi",rol3:"hin",pct_christian:12.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:28.64,lng:77.12,code:"PG049392"},{name:"Han Chinese",country:"Kiribati",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:1.37,lng:173.11,code:"PG009087"},{name:"Han Chinese",country:"Tuvalu",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:12.5,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-8.5,lng:179.19,code:"PG018319"},{name:"Han Chinese, Mandarin",country:"China",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:90145e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:37.37,lng:110.73,code:"PG006802"},{name:"Han Chinese, Min Nan",country:"China",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:3555e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:23.42,lng:115.05,code:"PG006805"},{name:"Nadar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:6365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:11.17,lng:77.82,code:"PG041309"},{name:"Han Chinese, Mandarin",country:"Taiwan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:4635e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:24.86,lng:121.36,code:"PG007518"},{name:"Santal (Bengali)",country:"India",lang:"Bengali",rol3:"ben",pct_christian:7.5,pop:335e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:24,lng:88.81,code:"PG046352"},{name:"Vellalar",country:"India",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:308e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.78,lng:77.78,code:"PG041493"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Han Chinese, Min Nan",country:"Singapore",lang:"Chinese, Min Nan",rol3:"nan",pct_christian:7.5,pop:1785e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020729"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Indian - Hindu",country:"South Africa",lang:"Hindi",rol3:"hin",pct_christian:7.5,pop:1365e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:-28.9,lng:26.75,code:"PG042180"},{name:"Han Chinese, Mandarin",country:"Canada",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:1055e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG043404"},{name:"Han Chinese, Mandarin",country:"Japan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:736e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:35.72,lng:137.14,code:"PG048925"},{name:"Han Chinese",country:"Australia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:67e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-33.75,lng:144.18,code:"PG033443"},{name:"Han Chinese",country:"Myanmar",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:65e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:16.85,lng:96.15,code:"PG022047"},{name:"Bhangi (Gujarati)",country:"India",lang:"Gujarati",rol3:"guj",pct_christian:7.5,pop:6e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:22.76,lng:72.13,code:"PG048218"}]},Russia:{target_upg:120,target_pop:17727020,target_top_langs:["Tatar","Chechen","Bashkort","Avar"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Russian Federation",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:62e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:51.07,lng:119.29,code:"PG048686"},{name:"Ukrainian",country:"Russian Federation",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:112e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:51.59,lng:82.8,code:"PG048814"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Finn",country:"Canada",lang:"Finnish",rol3:"fin",pct_christian:12.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:47.13,lng:-83.66,code:"PG043394"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Saami, Aanaar",country:"Finland",lang:"Finnish",rol3:"fin",pct_christian:12.5,pop:750,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:69.11,lng:27.17,code:"PG000110"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Finn",country:"Finland",lang:"Finnish",rol3:"fin",pct_christian:3.5,pop:4975e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:64.5,lng:26.27,code:"PG000109"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Finn",country:"Sweden",lang:"Finnish",rol3:"fin",pct_christian:3.5,pop:223e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:58.52,lng:14.92,code:"PG000553"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Finn",country:"United States",lang:"Finnish",rol3:"fin",pct_christian:3.5,pop:39e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:46.89,lng:-88.69,code:"PG043240"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"}]},Cambodia:{target_upg:19,target_pop:17466400,target_top_langs:["Khmer","Vietnamese","Cham, Western","Chinese, Min Nan"],target_top_religion:"Buddhism",neighbors:[{name:"Thmaun",country:"Cambodia",lang:"Undetermined",rol3:"und",pct_christian:45,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:13.12,lng:106.43,code:"PG022376"},{name:"Stieng",country:"Cambodia",lang:"Stieng, Bulo",rol3:"sti",pct_christian:17.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.11,lng:106.45,code:"PG008194"},{name:"Jarai",country:"Cambodia",lang:"Jarai",rol3:"jra",pct_christian:7.5,pop:21e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:13.64,lng:107.44,code:"PG020437"},{name:"Kachok",country:"Cambodia",lang:"Kachok",rol3:"xkk",pct_christian:7.5,pop:3900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:13.93,lng:107.31,code:"PG020439"},{name:"Tamil",country:"Cambodia",lang:"Tamil",rol3:"tam",pct_christian:7.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:11.55,lng:104.91,code:"PG008196"},{name:"Han Chinese",country:"Cambodia",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:519e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:11.55,lng:104.87,code:"PG033445"},{name:"Phnong",country:"Cambodia",lang:"Mnong, Central",rol3:"cmo",pct_christian:3.5,pop:47500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.77,lng:106.83,code:"PG020443"},{name:"Brao",country:"Cambodia",lang:"Brao",rol3:"brb",pct_christian:3.5,pop:9e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.32,lng:107.24,code:"PG018251"},{name:"Khmer Keh",country:"Cambodia",lang:"Khmer, Northern",rol3:"kxm",pct_christian:3.5,pop:5200,bridge:"same-country",adjacency:"same-country",religion_bg:"Buddhism - Folk",lat:14.12,lng:106.34,code:"PG047854"},{name:"Rhade",country:"United States",lang:"Rade",rol3:"rad",pct_christian:62.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:35.17,lng:-80.8,code:"PG050362"},{name:"Rhade",country:"Vietnam",lang:"Rade",rol3:"rad",pct_christian:45,pop:331e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:12.96,lng:108.31,code:"PG011211"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Burmese",country:"Germany",lang:"Burmese",rol3:"mya",pct_christian:25,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:50,lng:8.01,code:"PG033529"},{name:"Barmi",country:"India",lang:"Burmese",rol3:"mya",pct_christian:17.5,pop:600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:12.6,lng:92.83,code:"PG048889"},{name:"Sin",country:"Laos",lang:"Lao",rol3:"lao",pct_christian:12.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:18.06,lng:105.09,code:"PG050561"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Burmese",country:"Malaysia",lang:"Burmese",rol3:"mya",pct_christian:3.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:3.07,lng:101.64,code:"PG018483"},{name:"Lao",country:"Myanmar",lang:"Lao",rol3:"lao",pct_christian:3.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:16.85,lng:96.15,code:"PG009467"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"}]},Kazakhstan:{target_upg:39,target_pop:16547800,target_top_langs:["Kazakh","Uzbek, Northern","Uyghur","Tatar"],target_top_religion:"Islam",neighbors:[{name:"Latvian",country:"Kazakhstan",lang:"Latvian, Standard",rol3:"lvs",pct_christian:17.5,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:43.29,lng:76.91,code:"PG024285"},{name:"Ukrainian",country:"Kazakhstan",lang:"Ukrainian",rol3:"ukr",pct_christian:12.5,pop:415e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:48.48,lng:71.3,code:"PG024330"},{name:"Korean",country:"Kazakhstan",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:132e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:43.29,lng:76.91,code:"PG024281"},{name:"Pole",country:"Kazakhstan",lang:"Polish",rol3:"pol",pct_christian:12.5,pop:62e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:43.29,lng:76.91,code:"PG024292"},{name:"Han Chinese, Mandarin",country:"Kazakhstan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:3.5,pop:6500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:51.17,lng:71.45,code:"PG049243"},{name:"Karakalpak",country:"Kazakhstan",lang:"Karakalpak",rol3:"kaa",pct_christian:3.5,pop:1900,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:45.62,lng:62.06,code:"PG024276"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Romani, Sinte",country:"Canada",lang:"Romani, Sinte",rol3:"rmo",pct_christian:12.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.52,lng:-73.68,code:"PG043471"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Estonian",country:"Estonia",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:9e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:58.67,lng:25.55,code:"PG000779"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Estonian",country:"Canada",lang:"Estonian, Standard",rol3:"ekk",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043392"},{name:"Greek",country:"Czech Republic",lang:"Greek",rol3:"ell",pct_christian:7.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.82,lng:17.98,code:"PG048862"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"}]},Senegal:{target_upg:30,target_pop:15310200,target_top_langs:["Wolof","Pulaar","Maninkakan, Western","Mandinka"],target_top_religion:"Islam",neighbors:[{name:"Caboverdian Mestico",country:"Senegal",lang:"Kabuverdianu",rol3:"kea",pct_christian:12.5,pop:54e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:14.73,lng:-17.44,code:"PG014223"},{name:"English Creole",country:"Senegal",lang:"Krio",rol3:"kri",pct_christian:3.5,pop:9600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:14.73,lng:-17.44,code:"PG014225"},{name:"Papel",country:"Senegal",lang:"Papel",rol3:"pbo",pct_christian:3.5,pop:9600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.57,lng:-16.27,code:"PG014254"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mandyak",country:"Gambia",lang:"Mandjak",rol3:"mfv",pct_christian:3.5,pop:47e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:13.39,lng:-16.69,code:"PG013238"},{name:"Badyara",country:"Guinea-Bissau",lang:"Badyara",rol3:"pbp",pct_christian:3.5,pop:7300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.59,lng:-13.77,code:"PG013442"}]},"United States":{target_upg:98,target_pop:14806100,target_top_langs:["English","Hindi","Gujarati","Russian"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Mennonite",country:"United States",lang:"Plautdietsch",rol3:"pdt",pct_christian:62.5,pop:15500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.43,lng:-97.5,code:"PG043327"},{name:"Kachin, Rawang",country:"United States",lang:"Rawang",rol3:"raw",pct_christian:62.5,pop:750,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.85,lng:-96.97,code:"PG050380"},{name:"Bunong",country:"United States",lang:"Mnong, Central",rol3:"cmo",pct_christian:62.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.28,lng:-80.21,code:"PG050338"},{name:"Rhade",country:"United States",lang:"Rade",rol3:"rad",pct_christian:62.5,pop:250,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.17,lng:-80.8,code:"PG050362"},{name:"Chin, Zomi",country:"United States",lang:"Zo",rol3:"zom",pct_christian:62.5,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:36.03,lng:-85.61,code:"PG050344"},{name:"Chin, Zotung",country:"United States",lang:"Chin, Zotung",rol3:"czt",pct_christian:62.5,pop:175,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:36.28,lng:-89.53,code:"PG050345"},{name:"Chin, Haka",country:"United States",lang:"Chin, Hakha",rol3:"cnh",pct_christian:62.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:37.35,lng:-90.04,code:"PG050340"},{name:"Naga, Tangkhul",country:"United States",lang:"Naga, Tangkhul (India)",rol3:"nmf",pct_christian:62.5,pop:100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.85,lng:-96.97,code:"PG050369"},{name:"Niuean",country:"United States",lang:"Niue",rol3:"niu",pct_christian:62.5,pop:80,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047289"},{name:"Chin, Falam",country:"United States",lang:"Chin, Falam",rol3:"cfm",pct_christian:62.5,pop:30,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.09,lng:-81.04,code:"PG050339"},{name:"Chin, Mara",country:"United States",lang:"Mara",rol3:"mrh",pct_christian:62.5,pop:30,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.09,lng:-81.04,code:"PG050341"},{name:"Chin, Tiddim",country:"United States",lang:"Chin, Tedim",rol3:"ctd",pct_christian:62.5,pop:30,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.09,lng:-81.04,code:"PG050342"},{name:"Kuripako",country:"United States",lang:"Curripaco",rol3:"kpc",pct_christian:45,pop:225,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG043219"},{name:"Lisu",country:"United States",lang:"Lisu",rol3:"lis",pct_christian:45,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.05,lng:-112.65,code:"PG050353"},{name:"Koho",country:"United States",lang:"Koho",rol3:"kpm",pct_christian:35,pop:3100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.17,lng:-80.8,code:"PG050364"},{name:"French Polynesian",country:"United States",lang:"Tahitian",rol3:"tah",pct_christian:35,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047193"},{name:"Karen S'gaw",country:"United States",lang:"Karen, S’gaw",rol3:"ksw",pct_christian:35,pop:325,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.35,lng:-119.02,code:"PG047263"},{name:"American",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:19474e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.3,lng:-93.46,code:"PG043515"},{name:"Yoruba",country:"United States",lang:"Yoruba",rol3:"yor",pct_christian:25,pop:152e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - African Traditional Religion",lat:38.9,lng:-77.19,code:"PG047644"},{name:"Barbadian",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:50500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.72,lng:-73.97,code:"PG046507"},{name:"Bahamian",country:"United States",lang:"Bahamas English Creole",rol3:"bah",pct_christian:25,pop:33e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.18,lng:-80.23,code:"PG043531"},{name:"Marshallese",country:"United States",lang:"Marshallese",rol3:"mah",pct_christian:25,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047281"},{name:"Jarai",country:"United States",lang:"Jarai",rol3:"jra",pct_christian:25,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:35.17,lng:-80.8,code:"PG050355"},{name:"Nakota (Assiniboine)",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.32,lng:-106.26,code:"PG043527"},{name:"Rwandan",country:"United States",lang:"Kinyarwanda",rol3:"kin",pct_christian:25,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:40.74,lng:-73.72,code:"PG047295"},{name:"Winnebago",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:42.22,lng:-96.6,code:"PG043689"},{name:"Motilon, Bari",country:"United States",lang:"Barí",rol3:"mot",pct_christian:25,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG043532"},{name:"Madi",country:"United States",lang:"Ma’di",rol3:"mhi",pct_christian:25,pop:1100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:29.79,lng:-95.4,code:"PG050386"},{name:"Maori",country:"United States",lang:"English",rol3:"eng",pct_christian:25,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:37.75,lng:-122.21,code:"PG047214"},{name:"Zapotec, Cajonos",country:"United States",lang:"Zapotec, Cajonos",rol3:"zad",pct_christian:25,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.22,lng:-118.15,code:"PG049292"},{name:"Kachin, Jingpho",country:"United States",lang:"Jingpho",rol3:"kac",pct_christian:25,pop:175,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:31.43,lng:-96.28,code:"PG047264"},{name:"Marquesan",country:"United States",lang:"Marquesan, North",rol3:"mrq",pct_christian:25,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:21.46,lng:-157.97,code:"PG047282"},{name:"Rarotongan",country:"United States",lang:"Cook Islands Maori",rol3:"rar",pct_christian:25,pop:100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047297"},{name:"African Americans",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:4054e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.04,lng:-100.02,code:"PG048741"},{name:"Tzeltal",country:"United States",lang:"Tzeltal",rol3:"tzh",pct_christian:17.5,pop:85e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.17,lng:-119.44,code:"PG049313"},{name:"Nigerian",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:39500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:37.51,lng:-88.1,code:"PG047652"},{name:"Hutterite",country:"United States",lang:"Hutterisch",rol3:"geh",pct_christian:17.5,pop:7e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-104.13,code:"PG043273"},{name:"Montserratian",country:"United States",lang:"Leeward Caribbean English Creole",rol3:"aig",pct_christian:17.5,pop:5100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:26.18,lng:-80.23,code:"PG047292"},{name:"Straits Salish",country:"United States",lang:"English",rol3:"eng",pct_christian:17.5,pop:2e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.77,lng:-122.64,code:"PG043642"},{name:"Melanesian",country:"United States",lang:"Tok Pisin",rol3:"tpi",pct_christian:17.5,pop:1600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.78,lng:-121,code:"PG046504"},{name:"Mokilese",country:"United States",lang:"Mokilese",rol3:"mkj",pct_christian:17.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047278"},{name:"Kikuyu",country:"United States",lang:"Gikuyu",rol3:"kik",pct_christian:17.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:38.94,lng:-94.44,code:"PG050382"},{name:"Zapotec, Southern Rincon",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:17.5,pop:500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.36,lng:-109.45,code:"PG049308"},{name:"Puerto Rican",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:4035e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.35,lng:-95.96,code:"PG043603"},{name:"Filipino, Tagalog",country:"United States",lang:"Tagalog",rol3:"tgl",pct_christian:12.5,pop:252e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.26,lng:-104.56,code:"PG043239"},{name:"Korean",country:"United States",lang:"Korean",rol3:"kor",pct_christian:12.5,pop:1095e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:38.77,lng:-98.89,code:"PG043310"},{name:"Latvian",country:"United States",lang:"Latvian, Standard",rol3:"lvs",pct_christian:12.5,pop:111e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:38.9,lng:-77.19,code:"PG043321"},{name:"Garifuna",country:"United States",lang:"Garifuna",rol3:"cab",pct_christian:12.5,pop:71500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:26.18,lng:-80.23,code:"PG047649"},{name:"American Samoan",country:"United States",lang:"Samoan",rol3:"smo",pct_christian:12.5,pop:69500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:33.98,lng:-118.1,code:"PG043514"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Belizean",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:43500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:33.94,lng:-118.12,code:"PG047184"},{name:"Chol",country:"United States",lang:"Chol",rol3:"ctu",pct_christian:12.5,pop:39e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.17,lng:-119.44,code:"PG049314"},{name:"Tongan",country:"United States",lang:"Tongan",rol3:"ton",pct_christian:12.5,pop:29e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:37.74,lng:-122.29,code:"PG043655"},{name:"Polynesian",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG043599"},{name:"Antiguan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.93,lng:-98.82,code:"PG050335"},{name:"Nahuatl, Isthmus",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:12.5,pop:7900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:31.63,lng:-89.16,code:"PG049280"},{name:"Krio",country:"United States",lang:"Krio",rol3:"kri",pct_christian:12.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047260"},{name:"Trukese",country:"United States",lang:"Chuukese",rol3:"chk",pct_christian:12.5,pop:6700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:21.46,lng:-157.97,code:"PG046505"},{name:"Sac & Fox Nation of Oklahoma",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:5800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.71,lng:-96.77,code:"PG050670"},{name:"Palauan",country:"United States",lang:"Palauan",rol3:"pau",pct_christian:12.5,pop:4700,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047310"},{name:"Fijian",country:"United States",lang:"Fijian",rol3:"fij",pct_christian:12.5,pop:4500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.73,lng:-120.56,code:"PG043238"},{name:"Ewe",country:"United States",lang:"Éwé",rol3:"ewe",pct_christian:12.5,pop:3400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:32.85,lng:-96.97,code:"PG050366"},{name:"Pueblo, Jemez",country:"United States",lang:"Jemez",rol3:"tow",pct_christian:12.5,pop:2400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.68,lng:-106.79,code:"PG043288"},{name:"Mohawk",country:"United States",lang:"Mohawk",rol3:"moh",pct_christian:12.5,pop:2200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:44.97,lng:-74.54,code:"PG043551"},{name:"Tolowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1900,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:41.9,lng:-124.16,code:"PG050627"},{name:"Sac & Fox Tribe of the Mississippi in Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:41.98,lng:-92.65,code:"PG043616"},{name:"Iowa",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.99,lng:-95.39,code:"PG043277"},{name:"Central Africans",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047190"},{name:"Kusaiean",country:"United States",lang:"Kosraean",rol3:"kos",pct_christian:12.5,pop:1300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047209"},{name:"Tubatulabal",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:1e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:36.07,lng:-118.31,code:"PG043660"},{name:"Nez Perce",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:46.28,lng:-116.41,code:"PG043560"},{name:"Salinan",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:800,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Folk Catholicism",lat:35.83,lng:-120.77,code:"PG050637"},{name:"Swazi",country:"United States",lang:"Swati",rol3:"ssw",pct_christian:12.5,pop:550,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047227"},{name:"Chuj",country:"United States",lang:"Chuj",rol3:"cac",pct_christian:12.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:34.88,lng:-82.36,code:"PG049269"},{name:"Sac & Fox Nation of Missouri in Kansas and Nebraska",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:450,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.01,lng:-95.52,code:"PG050671"},{name:"Kwakwakaʼwakw",country:"United States",lang:"Kwakwala",rol3:"kwk",pct_christian:12.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.1,lng:-123.12,code:"PG047208"},{name:"Puinave",country:"United States",lang:"Puinave",rol3:"pui",pct_christian:12.5,pop:350,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG043604"},{name:"Basotho",country:"United States",lang:"Sotho, Southern",rol3:"sot",pct_christian:12.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.74,lng:-73.72,code:"PG047274"},{name:"Bahnar",country:"United States",lang:"Bahnar",rol3:"bdq",pct_christian:12.5,pop:300,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:35.17,lng:-80.8,code:"PG050336"},{name:"Haida",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:55.19,lng:-132.88,code:"PG043257"},{name:"Tokelauan",country:"United States",lang:"Tokelauan",rol3:"tkl",pct_christian:12.5,pop:150,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:21.46,lng:-157.97,code:"PG047304"},{name:"Embu-Mbeere",country:"United States",lang:"Kiembu",rol3:"ebu",pct_christian:12.5,pop:100,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.85,lng:-96.97,code:"PG050365"},{name:"Cayuga",country:"United States",lang:"English",rol3:"eng",pct_christian:12.5,pop:60,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:42.55,lng:-79,code:"PG043191"},{name:"American, Spanish Speaking",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:2056e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.62,lng:-106.27,code:"PG043518"},{name:"Han Chinese, Mandarin",country:"United States",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:2345e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG043261"},{name:"Salvadoran",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:1915e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.62,lng:-108.3,code:"PG046515"},{name:"Chinese American",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:175e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:45.74,lng:-114.4,code:"PG050453"},{name:"Dominican",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:1465e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.36,lng:-86.45,code:"PG046509"},{name:"Guatemalan",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:125e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.99,lng:-105.58,code:"PG046516"},{name:"Honduran",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:1105e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.51,lng:-104,code:"PG046517"},{name:"Haitian",country:"United States",lang:"Haitian Creole",rol3:"hat",pct_christian:7.5,pop:716e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:31.04,lng:-78.18,code:"PG046510"},{name:"Jamaican",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:588e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.14,lng:-77.63,code:"PG043284"},{name:"Detribalized Amerindian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:454e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.9,lng:-111.06,code:"PG043225"},{name:"Ecuadorian",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:432e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.55,lng:-86.97,code:"PG046525"},{name:"Brazilian",country:"United States",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:32e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.44,lng:-97.31,code:"PG046522"},{name:"Cape Verdean",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:309e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:37.42,lng:-74.94,code:"PG047254"},{name:"Nicaraguan",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:259e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:33.99,lng:-111.48,code:"PG046518"},{name:"Guyanese",country:"United States",lang:"Guyanese English Creole",rol3:"gyn",pct_christian:7.5,pop:245e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:40.72,lng:-73.86,code:"PG046526"},{name:"Igbo",country:"United States",lang:"Igbo",rol3:"ibo",pct_christian:7.5,pop:234e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.21,lng:-76.75,code:"PG047202"},{name:"Argentine",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:223e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.49,lng:-103.74,code:"PG046520"},{name:"Ghanaian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:204e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG046500"},{name:"Yucatec",country:"United States",lang:"Maya, Yucatec",rol3:"yua",pct_christian:7.5,pop:201e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:34.58,lng:-118.81,code:"PG047279"},{name:"Trinidadian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:174e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.69,lng:-73.86,code:"PG046512"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Malayali",country:"United States",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:165e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism",lat:40.72,lng:-73.97,code:"PG043340"},{name:"Chilean",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:147e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:34.62,lng:-116.39,code:"PG046523"},{name:"Pennsylvania Dutch",country:"United States",lang:"German, Pennsylvania",rol3:"pdc",pct_christian:7.5,pop:139e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:40.34,lng:-75.87,code:"PG043593"},{name:"Choctaw",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:121e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.5,lng:-95.33,code:"PG043202"},{name:"Bolivian",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:115e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:32.67,lng:-99.44,code:"PG046521"},{name:"Liberian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:107e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:40.72,lng:-73.97,code:"PG047273"},{name:"Kenyan",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:96e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:33.32,lng:-92.72,code:"PG050473"},{name:"Ilocano",country:"United States",lang:"Ilocano",rol3:"ilo",pct_christian:7.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:21.46,lng:-157.97,code:"PG043275"},{name:"Nahuatl, Huasteca",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:87e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:33.97,lng:-84.02,code:"PG049279"},{name:"Anglo-Australian",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:84e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:35.02,lng:-98.4,code:"PG043519"},{name:"Swahili",country:"United States",lang:"Swahili",rol3:"swh",pct_christian:7.5,pop:81500,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:34.52,lng:-105.83,code:"PG047306"},{name:"Mam",country:"United States",lang:"Mam",rol3:"mam",pct_christian:7.5,pop:78500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:33.98,lng:-118.1,code:"PG047319"},{name:"Tzotzil",country:"United States",lang:"Tzotzil",rol3:"tzo",pct_christian:7.5,pop:76500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:37.59,lng:-122.17,code:"PG049309"},{name:"Swede",country:"United States",lang:"Swedish",rol3:"swe",pct_christian:7.5,pop:63e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:33.94,lng:-118.12,code:"PG043643"},{name:"Creek, Muskogee",country:"United States",lang:"Muskogee",rol3:"mus",pct_christian:7.5,pop:56500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.65,lng:-96.02,code:"PG043554"},{name:"Norwegian",country:"United States",lang:"Norwegian",rol3:"nor",pct_christian:7.5,pop:44500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated",lat:44.96,lng:-93.28,code:"PG043575"},{name:"Iu Mien",country:"United States",lang:"Iu Mien",rol3:"ium",pct_christian:7.5,pop:38500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:38.75,lng:-111.78,code:"PG043283"},{name:"Saint Lucian",country:"United States",lang:"Lesser Antillean French Creole",rol3:"acf",pct_christian:7.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:40.72,lng:-73.97,code:"PG047284"},{name:"Cree, Plains",country:"United States",lang:"Cree, Plains",rol3:"crk",pct_christian:7.5,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.71,lng:-102.69,code:"PG043683"},{name:"Blackfoot, Siksika",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:32e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:48.66,lng:-112.87,code:"PG043538"},{name:"O'odham, Tohono",country:"United States",lang:"Tohono O’odham",rol3:"ood",pct_christian:7.5,pop:30500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.15,lng:-112.07,code:"PG043670"},{name:"Potawatomi",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:24e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.34,lng:-95.84,code:"PG043601"},{name:"Chamorro",country:"United States",lang:"Chamorro",rol3:"cha",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:33.94,lng:-118.12,code:"PG047251"},{name:"Hopi, Hopitu-Shinumu",country:"United States",lang:"Hopi",rol3:"hop",pct_christian:7.5,pop:21e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.9,lng:-110.58,code:"PG043269"},{name:"Popti",country:"United States",lang:"Jakalteko",rol3:"jac",pct_christian:7.5,pop:20500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:26.61,lng:-80.17,code:"PG049284"},{name:"Tlingit",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:57.16,lng:-133.75,code:"PG043653"},{name:"Nahuatl, Northern Puebla",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:18e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:36.03,lng:-78.88,code:"PG049281"},{name:"Apache, Western",country:"United States",lang:"Apache, Western",rol3:"apw",pct_christian:7.5,pop:17e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:33.88,lng:-110.16,code:"PG043682"},{name:"Nuer",country:"United States",lang:"Nuer",rol3:"nus",pct_christian:7.5,pop:15e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:32.82,lng:-96.97,code:"PG046705"},{name:"Comanche",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:14500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:34.56,lng:-98.43,code:"PG043209"},{name:"Cheyenne",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:13500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:45.53,lng:-106.68,code:"PG043198"},{name:"Azande",country:"United States",lang:"Zande",rol3:"zne",pct_christian:7.5,pop:13e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:33.59,lng:-96.89,code:"PG046709"},{name:"Crow",country:"United States",lang:"Crow",rol3:"cro",pct_christian:7.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:45.4,lng:-107.76,code:"PG043215"},{name:"Afro-Grenadian",country:"United States",lang:"Grenadian English Creole",rol3:"gcl",pct_christian:7.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:41.29,lng:-75.74,code:"PG050350"},{name:"Pueblo, Santa Clara",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:12e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Native American religions",lat:35.98,lng:-106.22,code:"PG050653"},{name:"Zuni Pueblo",country:"United States",lang:"Zuni",rol3:"zun",pct_christian:7.5,pop:11500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Native American religions",lat:35.09,lng:-108.74,code:"PG043703"},{name:"Shoshoni",country:"United States",lang:"Shoshoni",rol3:"shh",pct_christian:7.5,pop:10500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:41.35,lng:-109.85,code:"PG043624"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Houma, Half-Choctaw",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:9500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:29.78,lng:-90.59,code:"PG043270"},{name:"Arapaho",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:9300,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.15,lng:-102.16,code:"PG043524"},{name:"Flathead-Kalispel",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:47.5,lng:-114.28,code:"PG043241"},{name:"Han Chinese, Wu",country:"United States",lang:"Chinese, Wu",rol3:"wuu",pct_christian:7.5,pop:8400,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:40.74,lng:-73.72,code:"PG047187"},{name:"Zapotec, Loxicha",country:"United States",lang:"Spanish",rol3:"spa",pct_christian:7.5,pop:8e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Folk Catholicism",lat:32.79,lng:-117.08,code:"PG049324"},{name:"Paiute, Southern",country:"United States",lang:"Ute-Southern Paiute",rol3:"ute",pct_christian:7.5,pop:7600,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:38.9,lng:-110.13,code:"PG043634"},{name:"Paiute, Northern",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:7400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:39.69,lng:-119.19,code:"PG043570"},{name:"Kiowa",country:"United States",lang:"English",rol3:"eng",pct_christian:7.5,pop:7200,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:35.01,lng:-98.78,code:"PG043305"}]},Guinea:{target_upg:30,target_pop:13009200,target_top_langs:["Pular","Maninkakan, Eastern","Susu","Konyanka"],target_top_religion:"Islam",neighbors:[{name:"Kissi",country:"Guinea",lang:"Kissi, Northern",rol3:"kqs",pct_christian:7.5,pop:646e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:8.89,lng:-10.2,code:"PG013412"},{name:"Baga Binari",country:"Guinea",lang:"Baga Pokur",rol3:"bcg",pct_christian:7.5,pop:4900,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:10.53,lng:-14.62,code:"PG042197"},{name:"Loko",country:"Guinea",lang:"Loko",rol3:"lok",pct_christian:7.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.34,lng:-12.86,code:"PG013423"},{name:"Kpelle",country:"Guinea",lang:"Kpelle, Guinea",rol3:"gkp",pct_christian:3.5,pop:6e5,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:7.83,lng:-8.89,code:"PG013413"},{name:"Toma",country:"Guinea",lang:"Toma",rol3:"tod",pct_christian:3.5,pop:331e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.8,lng:-9.82,code:"PG013433"},{name:"Dan Yakuba",country:"Liberia",lang:"Dan",rol3:"dnj",pct_christian:12.5,pop:245e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:6.83,lng:-8.77,code:"PG013483"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Dan Yakuba",country:"Cote d’Ivoire",lang:"Dan",rol3:"dnj",pct_christian:3.5,pop:1945e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:7.48,lng:-7.86,code:"PG013066"},{name:"Bambara",country:"Cote d’Ivoire",lang:"Bamanankan",rol3:"bam",pct_christian:3.5,pop:1485e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.88,lng:-7.05,code:"PG013042"},{name:"Mano",country:"Liberia",lang:"Maan",rol3:"mev",pct_christian:3.5,pop:44e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:6.87,lng:-8.98,code:"PG013517"},{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"},{name:"Badyara",country:"Guinea-Bissau",lang:"Badyara",rol3:"pbp",pct_christian:3.5,pop:7300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.59,lng:-13.77,code:"PG013442"}]},Tunisia:{target_upg:17,target_pop:12220300,target_top_langs:["Arabic, Tunisian","Arabic, Libyan","Arabic, Algerian","Arabic, Algerian Saharan"],target_top_religion:"Islam",neighbors:[{name:"Arab",country:"South Africa",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:15500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-26.17,lng:28.07,code:"PG015486"},{name:"Arab",country:"New Zealand",lang:"Arabic, Standard",rol3:"arb",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-36.89,lng:174.78,code:"PG018478"}]},Chad:{target_upg:82,target_pop:11754900,target_top_langs:["Arabic, Chadian","Kanembu","Dazaga","Maba (Chad)"],target_top_religion:"Islam",neighbors:[{name:"Goundo",country:"Chad",lang:"Kabalai",rol3:"kvf",pct_christian:45,pop:50,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:9.55,lng:16.2,code:"PG011355"},{name:"Nzakmbay",country:"Chad",lang:"Nzakambay",rol3:"nzy",pct_christian:25,pop:45500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.77,lng:15.86,code:"PG011438"},{name:"Ruto",country:"Chad",lang:"Luto",rol3:"ndy",pct_christian:25,pop:6400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.22,lng:18.44,code:"PG011443"},{name:"Besme",country:"Chad",lang:"Besme",rol3:"bes",pct_christian:25,pop:4e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.59,lng:16.09,code:"PG011321"},{name:"Mesme",country:"Chad",lang:"Mesme",rol3:"zim",pct_christian:17.5,pop:39e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.32,lng:15.53,code:"PG011414"},{name:"Mangbai",country:"Chad",lang:"Mambai",rol3:"mcs",pct_christian:12.5,pop:6400,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.63,lng:14.06,code:"PG011400"},{name:"Pana",country:"Chad",lang:"Pana (Central African Republic)",rol3:"pnz",pct_christian:12.5,pop:2600,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.54,lng:15.7,code:"PG011439"},{name:"Nancere",country:"Chad",lang:"Nancere",rol3:"nnc",pct_christian:7.5,pop:231e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.28,lng:16.12,code:"PG011432"},{name:"Gabere",country:"Chad",lang:"Gabri",rol3:"gab",pct_christian:7.5,pop:84e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.35,lng:16.66,code:"PG042668"},{name:"Kaba-Lai",country:"Chad",lang:"Kabalai",rol3:"kvf",pct_christian:7.5,pop:58e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.41,lng:16.31,code:"PG011370"},{name:"Kaba",country:"Chad",lang:"Kabba",rol3:"ksp",pct_christian:7.5,pop:22e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.85,lng:16.74,code:"PG011366"},{name:"Sara Gambai",country:"Chad",lang:"Ngambay",rol3:"sba",pct_christian:3.5,pop:2095e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.7,lng:15.82,code:"PG011447"},{name:"Musey",country:"Chad",lang:"Musey",rol3:"mse",pct_christian:3.5,pop:535e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.69,lng:15.3,code:"PG011312"},{name:"Mundang",country:"Chad",lang:"Mundang",rol3:"mua",pct_christian:3.5,pop:517e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.67,lng:14.62,code:"PG011430"},{name:"Marba",country:"Chad",lang:"Marba",rol3:"mpg",pct_christian:3.5,pop:397e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.52,lng:15.92,code:"PG042679"},{name:"Masa",country:"Chad",lang:"Masana",rol3:"mcn",pct_christian:3.5,pop:352e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.33,lng:15.61,code:"PG011403"},{name:"Sara Mbai",country:"Chad",lang:"Mbay",rol3:"myb",pct_christian:3.5,pop:267e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.29,lng:17.75,code:"PG011449"},{name:"Bediondo Mbai",country:"Chad",lang:"Bedjond",rol3:"bjv",pct_christian:3.5,pop:192e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.65,lng:17.28,code:"PG011318"},{name:"Karang Laka",country:"Chad",lang:"Laka",rol3:"lap",pct_christian:3.5,pop:188e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.02,lng:16.2,code:"PG011376"},{name:"Gor",country:"Chad",lang:"Kabba",rol3:"ksp",pct_christian:3.5,pop:163e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.8,lng:16.72,code:"PG042670"},{name:"Dai",country:"Chad",lang:"Day",rol3:"dai",pct_christian:3.5,pop:161e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.52,lng:17.55,code:"PG011334"},{name:"Kera",country:"Chad",lang:"Kera",rol3:"ker",pct_christian:3.5,pop:144e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.78,lng:15.18,code:"PG011382"},{name:"Ngama",country:"Chad",lang:"Ngam",rol3:"nmc",pct_christian:3.5,pop:135e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:8.52,lng:18.59,code:"PG011434"},{name:"Kaba Na",country:"Chad",lang:"Kaba Naa, Sara",rol3:"kwv",pct_christian:3.5,pop:113e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.58,lng:18.93,code:"PG011369"},{name:"Kado",country:"Chad",lang:"Herdé",rol3:"hed",pct_christian:3.5,pop:104e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.36,lng:14.71,code:"PG011371"},{name:"Gulfe",country:"Chad",lang:"Malgbe",rol3:"mxf",pct_christian:3.5,pop:96e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:12.48,lng:14.92,code:"PG011359"},{name:"Lele",country:"Chad",lang:"Lele (Chad)",rol3:"lln",pct_christian:3.5,pop:89e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:9.15,lng:15.73,code:"PG011395"},{name:"Peve",country:"Chad",lang:"Pévé",rol3:"lme",pct_christian:3.5,pop:78e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:9.3,lng:14.58,code:"PG011441"},{name:"Sango",country:"Chad",lang:"Sango",rol3:"sag",pct_christian:3.5,pop:58e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:8.57,lng:16.07,code:"PG011446"},{name:"Gidar",country:"Chad",lang:"Gidar",rol3:"gid",pct_christian:3.5,pop:38e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.85,lng:14.2,code:"PG011351"},{name:"Kimre",country:"Chad",lang:"Kimré",rol3:"kqp",pct_christian:3.5,pop:37e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Neo-Pentecostalism",lat:9.3,lng:16.88,code:"PG011385"},{name:"Mbum",country:"Chad",lang:"Mbum",rol3:"mdd",pct_christian:3.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:7.64,lng:15.64,code:"PG011412"},{name:"Kuo",country:"Chad",lang:"Kuo",rol3:"xuo",pct_christian:3.5,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:7.75,lng:15.75,code:"PG011393"},{name:"Mire",country:"Chad",lang:"Mulgi",rol3:"mvh",pct_christian:3.5,pop:7800,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:9.43,lng:16.3,code:"PG011419"},{name:"Kotoko-Kuseri",country:"Chad",lang:"Mser",rol3:"kqx",pct_christian:3.5,pop:3900,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Folk",lat:11.93,lng:15.11,code:"PG011388"},{name:"Gori",country:"Chad",lang:"Laal",rol3:"gdm",pct_christian:3.5,pop:1800,bridge:"same-country",adjacency:"same-country",religion_bg:"Islam - Sunni",lat:9.98,lng:17.62,code:"PG011353"},{name:"Miltu",country:"Chad",lang:"Miltu",rol3:"mlj",pct_christian:3.5,pop:900,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:10.23,lng:17.41,code:"PG011416"},{name:"Bakole",country:"Cameroon",lang:"French",rol3:"fra",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:4.43,lng:8.97,code:"PG012493"},{name:"Mono",country:"Cameroon",lang:"Fulfulde, Adamawa",rol3:"fub",pct_christian:25,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:8.77,lng:14.12,code:"PG012705"},{name:"PoaPoa",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:25,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.87,lng:164.66,code:"PG018370"},{name:"Kotoko",country:"Cameroon",lang:"Lagwan",rol3:"kot",pct_christian:17.5,pop:24500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:11.86,lng:14.9,code:"PG012650"},{name:"Euronesian",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:12.5,pop:58500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-17.56,lng:-149.57,code:"PG018408"},{name:"Euronesian",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-22.27,lng:166.45,code:"PG018406"},{name:"Aeke",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.07,lng:164.88,code:"PG009564"},{name:"French",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:7.5,pop:93500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.33,lng:165.49,code:"PG018389"},{name:"Zari",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:41e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:9.87,lng:9.4,code:"PG014203"},{name:"Bassa",country:"Nigeria",lang:"Hausa",rol3:"hau",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Folk",lat:10.67,lng:5.82,code:"PG033345"},{name:"Sake",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:.07,lng:11.63,code:"PG013210"},{name:"Burundi",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050494"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Kaba Dunjo",country:"Central African Republic",lang:"Kaba Naa, Sara",rol3:"kwv",pct_christian:7.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:9.03,lng:19.98,code:"PG012874"},{name:"Kande",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.09,lng:11.75,code:"PG013189"},{name:"Chadian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.58,lng:-73.7,code:"PG050504"},{name:"Indri",country:"South Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:8.78,lng:25.73,code:"PG012040"},{name:"New Caledonian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.22,lng:-122.99,code:"PG047444"},{name:"Gabonese",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.9,lng:-77.19,code:"PG047191"},{name:"Chinese-Tahitian Creole",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:7.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.56,lng:-149.57,code:"PG018407"},{name:"Chadian",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:38.02,lng:-84.5,code:"PG047189"},{name:"Walloon",country:"Belgium",lang:"French",rol3:"fra",pct_christian:3.5,pop:3755e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.32,lng:4.95,code:"PG000076"},{name:"Swiss",country:"Switzerland",lang:"French",rol3:"fra",pct_christian:3.5,pop:2015e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.6,lng:6.93,code:"PG000585"},{name:"Tuburi",country:"Cameroon",lang:"Tupuri",rol3:"tui",pct_christian:3.5,pop:345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:10.27,lng:14.75,code:"PG012796"},{name:"Masa",country:"Cameroon",lang:"Masana",rol3:"mcn",pct_christian:3.5,pop:345e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:10.29,lng:15.19,code:"PG012678"},{name:"Musgum",country:"Cameroon",lang:"Musgu",rol3:"mug",pct_christian:3.5,pop:239e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:10.9,lng:14.93,code:"PG012718"},{name:"Dakpa",country:"Central African Republic",lang:"Banda, West Central",rol3:"bbp",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:5.98,lng:20,code:"PG012849"},{name:"Franco-Mauritian",country:"Mauritius",lang:"French",rol3:"fra",pct_christian:3.5,pop:72500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.25,lng:57.51,code:"PG015346"},{name:"Romanian",country:"France",lang:"French",rol3:"fra",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000192"},{name:"Delen",country:"Sudan",lang:"Arabic, Sudanese",rol3:"apd",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:12.06,lng:29.58,code:"PG042814"},{name:"French Caribbean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.5,lng:-73.81,code:"PG047395"},{name:"Togolese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.52,lng:-73.68,code:"PG050478"},{name:"Congolese",country:"Spain",lang:"French",rol3:"fra",pct_christian:3.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.41,lng:-3.69,code:"PG042340"},{name:"Abenaki",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.07,lng:-72.82,code:"PG043348"},{name:"Ivorian",country:"United States",lang:"French",rol3:"fra",pct_christian:3.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047266"},{name:"Guinean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.5,lng:-73.81,code:"PG047454"},{name:"Sighu",country:"Gabon",lang:"French",rol3:"fra",pct_christian:3.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.84,lng:12.69,code:"PG013213"},{name:"Rwandan",country:"Netherlands",lang:"French",rol3:"fra",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:51.9,lng:4.47,code:"PG000430"},{name:"Gabonese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050505"},{name:"Maslam",country:"Cameroon",lang:"Maslam",rol3:"msv",pct_christian:3.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.22,lng:14.83,code:"PG012681"}]},Tajikistan:{target_upg:31,target_pop:10692e3,target_top_langs:["Tajik","Uzbek, Northern","Shughni","Language unknown"],target_top_religion:"Islam",neighbors:[{name:"Han Chinese, Mandarin",country:"Tajikistan",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:89500,bridge:"same-country",adjacency:"same-country",religion_bg:"Unaffiliated - Atheism",lat:38.57,lng:68.77,code:"PG049245"},{name:"Ukrainian",country:"Tajikistan",lang:"Ukrainian",rol3:"ukr",pct_christian:7.5,pop:12500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Orthodox",lat:38.57,lng:68.77,code:"PG024536"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Bulgarian",country:"Germany",lang:"Bulgarian",rol3:"bul",pct_christian:3.5,pop:411e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:13.4,code:"PG042446"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"}]},Jordan:{target_upg:21,target_pop:10660500,target_top_langs:["Arabic, Levantine","Arabic, Eastern Egyptian Bedawi","Arabic, North Mesopotamian","Kabardian"],target_top_religion:"Islam",neighbors:[{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"}]},Azerbaijan:{target_upg:26,target_pop:9953800,target_top_langs:["Azerbaijani, North","Talysh","Lezgi","Azerbaijani, South"],target_top_religion:"Islam",neighbors:[{name:"Ukrainian",country:"Kyrgyzstan",lang:"Ukrainian",rol3:"ukr",pct_christian:35,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:42.88,lng:74.63,code:"PG024375"},{name:"Ukrainian",country:"Turkmenistan",lang:"Ukrainian",rol3:"ukr",pct_christian:35,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.94,lng:58.39,code:"PG024648"},{name:"Romanian",country:"Czech Republic",lang:"Romanian",rol3:"ron",pct_christian:25,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.07,lng:14.47,code:"PG050033"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Ukrainian",country:"Kazakhstan",lang:"Ukrainian",rol3:"ukr",pct_christian:12.5,pop:415e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.48,lng:71.3,code:"PG024330"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Armenian",country:"United Kingdom",lang:"Armenian",rol3:"hye",pct_christian:12.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000627"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Ukrainian",country:"United Kingdom",lang:"Ukrainian",rol3:"ukr",pct_christian:7.5,pop:33e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000692"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Ukrainian",country:"Tajikistan",lang:"Ukrainian",rol3:"ukr",pct_christian:7.5,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.57,lng:68.77,code:"PG024536"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Romanian",country:"Romania",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1637e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:45.84,lng:24.98,code:"PG000899"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Romanian",country:"Italy",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:13e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:44.5,lng:9.8,code:"PG048833"},{name:"Ukrainian",country:"Russian Federation",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:112e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.59,lng:82.8,code:"PG048814"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Ukrainian",country:"Canada",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:253e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.93,lng:-92.67,code:"PG043496"},{name:"Armenian",country:"Lebanon",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:22e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:33.87,lng:35.58,code:"PG048928"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Ukrainian",country:"Germany",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:145e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.72,lng:11.84,code:"PG000275"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Armenian",country:"Iran",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:113e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:38.14,lng:46.37,code:"PG024130"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Romanian",country:"Hungary",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.8,lng:20.84,code:"PG000835"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Romanian ",country:"Austria",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.18,lng:16.35,code:"PG049963"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Ukrainian",country:"Latvia",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:48500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:56.93,lng:24.12,code:"PG000850"},{name:"Ukrainian",country:"Uzbekistan",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:47e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.31,lng:69.26,code:"PG024323"},{name:"Armenian",country:"Turkiye",lang:"Armenian",rol3:"hye",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:41.05,lng:28.9,code:"PG024538"},{name:"Ukrainian",country:"Poland",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:45e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.5,lng:19.47,code:"PG000887"},{name:"Ukrainian",country:"Argentina",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017373"},{name:"Kurd, Northern",country:"Russian Federation",lang:"Kurdish, Northern",rol3:"kmr",pct_christian:3.5,pop:35e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:44.63,lng:39.24,code:"PG024465"},{name:"Ukrainian",country:"Estonia",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:33500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:59.31,lng:24.93,code:"PG050308"},{name:"Romanian",country:"Ireland",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:53.39,lng:-6.28,code:"PG048049"},{name:"Ukrainian",country:"France",lang:"Ukrainian",rol3:"ukr",pct_christian:3.5,pop:23e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000205"},{name:"Moldovan",country:"Canada",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.72,lng:-95.67,code:"PG047364"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Belarusian",country:"Argentina",lang:"Belarusian",rol3:"bel",pct_christian:3.5,pop:4600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:-34.65,lng:-58.56,code:"PG017330"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Romanian",country:"Venezuela",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.48,lng:-66.88,code:"PG016490"}]},Vietnam:{target_upg:70,target_pop:9637e3,target_top_langs:["Tay","Muong","Khmer","Nung"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Central Mnong",country:"Vietnam",lang:"Mnong, Central",rol3:"cmo",pct_christian:62.5,pop:36e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.5,lng:107.57,code:"PG011118"},{name:"Southern Mnong",country:"Vietnam",lang:"Mnong, Southern",rol3:"mnn",pct_christian:62.5,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:11.99,lng:107.56,code:"PG011224"},{name:"Rhade",country:"Vietnam",lang:"Rade",rol3:"rad",pct_christian:45,pop:331e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.96,lng:108.31,code:"PG011211"},{name:"Stieng",country:"Vietnam",lang:"Stieng, Bulo",rol3:"sti",pct_christian:45,pop:85500,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:11.87,lng:107.08,code:"PG011226"},{name:"Maa",country:"Vietnam",lang:"Maa",rol3:"cma",pct_christian:45,pop:41500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:11.61,lng:107.49,code:"PG011179"},{name:"Chru",country:"Vietnam",lang:"Chru",rol3:"cje",pct_christian:45,pop:19500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:11.69,lng:108.54,code:"PG011123"},{name:"Hmong",country:"Vietnam",lang:"Hmong Daw",rol3:"mww",pct_christian:35,pop:133e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.86,lng:103.59,code:"PG011142"},{name:"Koho",country:"Vietnam",lang:"Koho",rol3:"kpm",pct_christian:35,pop:166e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Roman Catholicism",lat:11.63,lng:108.01,code:"PG011167"},{name:"Chrau",country:"Vietnam",lang:"Chrau",rol3:"crw",pct_christian:35,pop:27e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:10.91,lng:107.29,code:"PG011122"},{name:"Jarai",country:"Vietnam",lang:"Jarai",rol3:"jra",pct_christian:25,pop:411e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:13.93,lng:108.21,code:"PG011149"},{name:"Jeh",country:"Vietnam",lang:"Jeh",rol3:"jeh",pct_christian:25,pop:51e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.19,lng:107.91,code:"PG011150"},{name:"Eastern Mnong",country:"Vietnam",lang:"Mnong, Eastern",rol3:"mng",pct_christian:25,pop:33500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:12.31,lng:108.34,code:"PG011128"},{name:"Trieng",country:"Vietnam",lang:"Trieng",rol3:"stg",pct_christian:25,pop:19e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.48,lng:107.55,code:"PG011239"},{name:"Halang",country:"Vietnam",lang:"Halang",rol3:"hal",pct_christian:25,pop:16500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.62,lng:107.64,code:"PG011135"},{name:"O-du",country:"Vietnam",lang:"O’du",rol3:"tyh",pct_christian:17.5,pop:375,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:19.48,lng:104.58,code:"PG020927"},{name:"Northern Roglai",country:"Vietnam",lang:"Roglai, Northern",rol3:"rog",pct_christian:12.5,pop:65e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Christianity - Protestantism",lat:12.16,lng:108.85,code:"PG011190"},{name:"Brao",country:"Vietnam",lang:"Brao",rol3:"brb",pct_christian:12.5,pop:400,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.17,lng:107.43,code:"PG011112"},{name:"Han Chinese",country:"Vietnam",lang:"Chinese, Mandarin",rol3:"cmn",pct_christian:7.5,pop:162e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.04,lng:106.1,code:"PG033473"},{name:"Han Chinese, Cantonese",country:"Vietnam",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:784e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:21.03,lng:105.82,code:"PG046444"},{name:"Bahnar",country:"Vietnam",lang:"Bahnar",rol3:"bdq",pct_christian:7.5,pop:228e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.05,lng:108.45,code:"PG011108"},{name:"San Chay",country:"Vietnam",lang:"Cao Lan",rol3:"mlc",pct_christian:7.5,pop:17e4,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion",lat:21.86,lng:105.77,code:"PG011217"},{name:"Hre",country:"Vietnam",lang:"Hre",rol3:"hre",pct_christian:7.5,pop:127e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.7,lng:108.66,code:"PG011143"},{name:"Eastern Bru",country:"Vietnam",lang:"Bru, Eastern",rol3:"bru",pct_christian:7.5,pop:74500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:16.94,lng:106.67,code:"PG011126"},{name:"Lahu",country:"Vietnam",lang:"Lahu",rol3:"lhu",pct_christian:7.5,pop:9700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:22.56,lng:102.66,code:"PG011172"},{name:"Gelao",country:"Vietnam",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:2100,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:23.08,lng:105.2,code:"PG011133"},{name:"Iu Mien",country:"Vietnam",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:433e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Polytheism",lat:22.01,lng:105.54,code:"PG011148"},{name:"Eastern Cham",country:"Vietnam",lang:"Cham, Eastern",rol3:"cjm",pct_christian:3.5,pop:88500,bridge:"same-country",adjacency:"same-country",religion_bg:"Hinduism - Folk",lat:10.94,lng:107.68,code:"PG011127"},{name:"Cua",country:"Vietnam",lang:"Cua",rol3:"cua",pct_christian:3.5,pop:34e3,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:15.15,lng:108.39,code:"PG011125"},{name:"Khao",country:"Vietnam",lang:"Khao",rol3:"xao",pct_christian:3.5,pop:18500,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:21.44,lng:103.48,code:"PG011159"},{name:"Romam",country:"Vietnam",lang:"Romam",rol3:"rmx",pct_christian:3.5,pop:700,bridge:"same-country",adjacency:"same-country",religion_bg:"Ethnoreligion - Animism",lat:14.42,lng:107.55,code:"PG011212"},{name:"Vietnamese",country:"Thailand",lang:"Vietnamese",rol3:"vie",pct_christian:25,pop:119e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:13.76,lng:100.56,code:"PG010933"},{name:"Akha",country:"Thailand",lang:"Akha",rol3:"ahk",pct_christian:17.5,pop:58e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:20.08,lng:99.66,code:"PG010820"},{name:"Sin",country:"Laos",lang:"Lao",rol3:"lao",pct_christian:12.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:18.06,lng:105.09,code:"PG050561"},{name:"Han Chinese, Cantonese",country:"China",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6477e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.94,lng:111.32,code:"PG006808"},{name:"Han Chinese, Cantonese",country:"Hong Kong",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:6255e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.38,lng:114.13,code:"PG050587"},{name:"Han Chinese, Cantonese",country:"Malaysia",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:19e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:3.65,lng:101.56,code:"PG046594"},{name:"Khmu, Ou",country:"Laos",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:817e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.8,lng:102.58,code:"PG020913"},{name:"Han Chinese, Cantonese",country:"Macao",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:663e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.16,lng:113.56,code:"PG050584"},{name:"Han Chinese, Cantonese",country:"Singapore",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:511e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:1.36,lng:103.82,code:"PG020725"},{name:"Han Chinese",country:"United Kingdom",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:196e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:51.5,lng:-.17,code:"PG043796"},{name:"Vietnamese",country:"Australia",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:174e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-33.38,lng:143.4,code:"PG008087"},{name:"Han Chinese, Cantonese",country:"Peru",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:117e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-12.05,lng:-77.02,code:"PG017533"},{name:"Han Chinese",country:"Panama",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:68500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:8.5,lng:-82.42,code:"PG024831"},{name:"Han Chinese",country:"Trinidad and Tobago",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:44500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.68,lng:-61.38,code:"PG016447"},{name:"Iu Mien",country:"United States",lang:"Iu Mien",rol3:"ium",pct_christian:7.5,pop:38500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:38.75,lng:-111.78,code:"PG043283"},{name:"Han Chinese",country:"Laos",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:36500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:17.97,lng:102.64,code:"PG009111"},{name:"Han Chinese, Cantonese",country:"Venezuela",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:3e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:10.48,lng:-66.88,code:"PG016472"},{name:"Han Chinese",country:"Mexico",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:20.65,lng:-101.28,code:"PG024949"},{name:"Han Chinese, Cantonese",country:"Dominican Republic",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:12e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:18.48,lng:-69.91,code:"PG016322"},{name:"Han Chinese, Cantonese",country:"Ecuador",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:9600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:-.18,lng:-78.49,code:"PG042924"},{name:"Han Chinese, Cantonese",country:"Belgium",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:50.85,lng:4.38,code:"PG000058"},{name:"Pako Kado",country:"Laos",lang:"Pacoh",rol3:"pac",pct_christian:7.5,pop:9200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:16.41,lng:106.8,code:"PG050547"},{name:"Han Chinese, Cantonese",country:"Mauritius",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:8400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-20.24,lng:57.49,code:"PG015361"},{name:"Han Chinese",country:"Brunei",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:4.91,lng:114.92,code:"PG033444"},{name:"Han Chinese, Cantonese",country:"Honduras",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:7700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:14.08,lng:-87.2,code:"PG024760"},{name:"Vietnamese",country:"New Zealand",lang:"Vietnamese",rol3:"vie",pct_christian:7.5,pop:4900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:-36.89,lng:174.78,code:"PG018514"},{name:"Han Chinese, Cantonese",country:"Guyana",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:3300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:6.8,lng:-58.15,code:"PG016362"},{name:"Pako Kanai",country:"Laos",lang:"Pacoh",rol3:"pac",pct_christian:7.5,pop:2e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:16.53,lng:106.84,code:"PG050548"},{name:"Khmu",country:"France",lang:"Khmu",rol3:"kjg",pct_christian:7.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:48.88,lng:2.37,code:"PG048522"},{name:"Han Chinese, Cantonese",country:"Haiti",lang:"Chinese, Yue",rol3:"yue",pct_christian:7.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:18.55,lng:-72.32,code:"PG016380"},{name:"Han Chinese, Cantonese",country:"United States",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:103e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.02,lng:-113.16,code:"PG043259"},{name:"Han Chinese, Cantonese",country:"Canada",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:569e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:46.93,lng:-92.67,code:"PG047426"},{name:"Akha",country:"Myanmar",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:23e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:21.71,lng:99.8,code:"PG009402"},{name:"Kinh",country:"Laos",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:138e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:17.97,lng:102.64,code:"PG020963"},{name:"Vietnamese Migrant Workers",country:"Malaysia",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:85e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Confucianism",lat:5.35,lng:100.41,code:"PG046599"},{name:"Mien",country:"Thailand",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:46500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:19.13,lng:100.45,code:"PG010890"},{name:"Ta Oi",country:"Laos",lang:"Ta’oih, Upper",rol3:"tth",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:16.08,lng:106.7,code:"PG020964"},{name:"Han Chinese",country:"Reunion",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:31500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-20.92,lng:55.51,code:"PG015468"},{name:"Neisu",country:"China",lang:"Akha",rol3:"ahk",pct_christian:3.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.17,lng:100.64,code:"PG007334"},{name:"Lao",country:"Myanmar",lang:"Lao",rol3:"lao",pct_christian:3.5,pop:26e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Theravada",lat:16.85,lng:96.15,code:"PG009467"},{name:"Black Tai",country:"Thailand",lang:"Tai Dam",rol3:"blt",pct_christian:3.5,pop:25e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:19.92,lng:99.84,code:"PG010830"},{name:"Khmu",country:"United States",lang:"Khmu",rol3:"kjg",pct_christian:3.5,pop:9300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:32.77,lng:-117.08,code:"PG043302"},{name:"Macanese",country:"Macao",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:8900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:22.16,lng:113.56,code:"PG050585"},{name:"Vietnamese",country:"Netherlands",lang:"Vietnamese",rol3:"vie",pct_christian:3.5,pop:8800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Buddhism - Mahayana",lat:52.47,lng:5.36,code:"PG000445"},{name:"Ta-Oy Yin",country:"Laos",lang:"Ta’oih, Upper",rol3:"tth",pct_christian:3.5,pop:8500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:15.72,lng:106.48,code:"PG050569"},{name:"Meng",country:"China",lang:"Hani",rol3:"hni",pct_christian:3.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:22.89,lng:101.81,code:"PG007280"},{name:"Iu Mien",country:"France",lang:"Iu Mien",rol3:"ium",pct_christian:3.5,pop:2300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:43.61,lng:1.41,code:"PG000166"},{name:"Han Chinese, Cantonese",country:"Zimbabwe",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.83,lng:31.03,code:"PG015656"},{name:"Han Chinese",country:"Curacao",lang:"Chinese, Yue",rol3:"yue",pct_christian:3.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:12.19,lng:-68.97,code:"PG016401"},{name:"Sadang Duan",country:"Laos",lang:"Sedang",rol3:"sed",pct_christian:3.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:14.73,lng:107.51,code:"PG050560"},{name:"Ta-Oy Haang",country:"Laos",lang:"Ta’oih, Upper",rol3:"tth",pct_christian:3.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:15.93,lng:106.55,code:"PG050565"}]},Israel:{target_upg:42,target_pop:9176590,target_top_langs:["Hebrew","Arabic, Levantine","Russian","Yiddish, Eastern"],target_top_religion:"Ethnic Religions",neighbors:[{name:"Syrian Christian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:62.5,pop:4495e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:12.35,lng:76.09,code:"PG041308"},{name:"Pulayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:45,pop:154e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:10.06,lng:76.53,code:"PG041344"},{name:"Malai Arayan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:35,pop:48e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:9.65,lng:76.66,code:"PG041952"},{name:"Bakole",country:"Cameroon",lang:"French",rol3:"fra",pct_christian:35,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:4.43,lng:8.97,code:"PG012493"},{name:"Tupari",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:35,pop:175,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-12.09,lng:-63.32,code:"PG017148"},{name:"Paravar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:162e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:8.62,lng:77,code:"PG041743"},{name:"Koh",country:"India",lang:"Marathi",rol3:"mar",pct_christian:25,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.29,lng:76.9,code:"PG041285"},{name:"Mozambican",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:25,pop:40500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.77,lng:-9.25,code:"PG000493"},{name:"Amhara",country:"Canada",lang:"Amharic",rol3:"amh",pct_christian:25,pop:14e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG047403"},{name:"Romanian",country:"Czech Republic",lang:"Romanian",rol3:"ron",pct_christian:25,pop:12500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.07,lng:14.47,code:"PG050033"},{name:"Kerala Mudali",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:25,pop:11e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.44,lng:78.7,code:"PG049672"},{name:"PoaPoa",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:25,pop:50,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.87,lng:164.66,code:"PG018370"},{name:"Russian",country:"Moldova",lang:"Russian",rol3:"rus",pct_christian:17.5,pop:133e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.13,lng:29.34,code:"PG000867"},{name:"Brazilian",country:"French Guiana",lang:"Portuguese",rol3:"por",pct_christian:17.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:4.92,lng:-52.3,code:"PG016329"},{name:"Machineri",country:"Bolivia",lang:"Portuguese",rol3:"por",pct_christian:17.5,pop:35,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-10.96,lng:-69.48,code:"PG046933"},{name:"Mang",country:"India",lang:"Marathi",rol3:"mar",pct_christian:12.5,pop:304e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:20.38,lng:76.05,code:"PG041315"},{name:"Brazilian",country:"Paraguay",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:461e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-25.3,lng:-57.56,code:"PG046804"},{name:"Korean",country:"Uzbekistan",lang:"Russian",rol3:"rus",pct_christian:12.5,pop:254e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Atheism",lat:41.31,lng:69.26,code:"PG024684"},{name:"Mannan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:145e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.8,lng:76.55,code:"PG041756"},{name:"Arab, Egyptian",country:"Australia",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:12.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:-31.94,lng:115.89,code:"PG020254"},{name:"Pole",country:"Kazakhstan",lang:"Polish",rol3:"pol",pct_christian:12.5,pop:62e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:43.29,lng:76.91,code:"PG024292"},{name:"Euronesian",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:12.5,pop:58500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-17.56,lng:-149.57,code:"PG018408"},{name:"Moldovan",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:12.5,pop:49e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:40.17,lng:-74.79,code:"PG047277"},{name:"Euronesian",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:14500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-22.27,lng:166.45,code:"PG018406"},{name:"Sao Tomean",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:8500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.65,lng:-9.1,code:"PG000499"},{name:"Malayali",country:"Maldives",lang:"Malayalam",rol3:"mal",pct_christian:12.5,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:4.17,lng:73.51,code:"PG006163"},{name:"Brazilian",country:"Austria",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:48.18,lng:16.35,code:"PG000009"},{name:"Aeke",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:12.5,pop:350,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.07,lng:164.88,code:"PG009564"},{name:"Kanoe",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:12.5,pop:325,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-11.73,lng:-62.68,code:"PG016942"},{name:"Brazilian",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:20624e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:-12.63,lng:-48.09,code:"PG016600"},{name:"Cheruman",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:467e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.61,lng:76.25,code:"PG041452"},{name:"Brazilian",country:"United States",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:32e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:34.44,lng:-97.31,code:"PG046522"},{name:"Brazilian",country:"United Kingdom",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:275e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:51.5,lng:-.17,code:"PG048432"},{name:"Malayali",country:"Malaysia",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:206e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:3.07,lng:101.64,code:"PG020224"},{name:"Brazilian",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:182e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.04,lng:-8.79,code:"PG000471"},{name:"Romanian",country:"United States",lang:"Romanian",rol3:"ron",pct_christian:7.5,pop:173e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:36.09,lng:-110.56,code:"PG043611"},{name:"Malayali",country:"United States",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:165e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:40.72,lng:-73.97,code:"PG043340"},{name:"French",country:"New Caledonia",lang:"French",rol3:"fra",pct_christian:7.5,pop:93500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-21.33,lng:165.49,code:"PG018389"},{name:"Angolan",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:80500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:39,lng:-9.17,code:"PG000467"},{name:"Brazilian",country:"Italy",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:46500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:45.54,lng:9.19,code:"PG048554"},{name:"Mang Garodi",country:"India",lang:"Marathi",rol3:"mar",pct_christian:7.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:18.57,lng:74.08,code:"PG041892"},{name:"Assyrian",country:"Australia",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:7.5,pop:4e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.85,lng:151.03,code:"PG007833"},{name:"Hasidim",country:"United Kingdom",lang:"Hebrew",rol3:"heb",pct_christian:7.5,pop:32500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:51.5,lng:-.17,code:"PG000648"},{name:"Uraly",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:29500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:12.85,lng:75.26,code:"PG041815"},{name:"Russian",country:"Australia",lang:"Russian",rol3:"rus",pct_christian:7.5,pop:28500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:-33.52,lng:142.46,code:"PG008063"},{name:"Brazilian",country:"Canada",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:28e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:43.83,lng:-79.46,code:"PG047367"},{name:"Arab, Egyptian",country:"Germany",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:25500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:52.5,lng:13.4,code:"PG042462"},{name:"Brazilian",country:"Switzerland",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:21500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:47.43,lng:8.44,code:"PG048542"},{name:"Malai Vedan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:7.5,pop:18500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:9.91,lng:77.99,code:"PG042150"},{name:"Portuguese",country:"Argentina",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:18e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-34.65,lng:-58.56,code:"PG017360"},{name:"Brazilian",country:"Belgium",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:17e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:50.85,lng:4.38,code:"PG047834"},{name:"Sake",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:.07,lng:11.63,code:"PG013210"},{name:"Burundi",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050494"},{name:"Brazilian",country:"Guyana",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:10500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:6.49,lng:-58.12,code:"PG016369"},{name:"Burundi",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:37.74,lng:-92.31,code:"PG047181"},{name:"Kokama",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:9600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-3.43,lng:-64.82,code:"PG016815"},{name:"Arab, Lebanese",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024837"},{name:"Arab, Palestinian",country:"Panama",lang:"Arabic, Levantine",rol3:"apc",pct_christian:7.5,pop:9500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:9.34,lng:-79.87,code:"PG024839"},{name:"Iranian",country:"Armenia",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:7900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:40.17,lng:44.49,code:"PG050098"},{name:"Brazilian",country:"Jamaica",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:6e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Folk Catholicism",lat:18.05,lng:-76.95,code:"PG016388"},{name:"Arab, Egyptian",country:"Belgium",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:7.5,pop:5300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:50.85,lng:4.38,code:"PG000053"},{name:"Pole",country:"Uzbekistan",lang:"Polish",rol3:"pol",pct_christian:7.5,pop:3700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:41.31,lng:69.26,code:"PG024310"},{name:"Tremembe",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:3e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-3.09,lng:-40.02,code:"PG017135"},{name:"Iranian",country:"Greece",lang:"Persian, Iranian",rol3:"pes",pct_christian:7.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:38.05,lng:23.7,code:"PG047071"},{name:"Kande",country:"Gabon",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.09,lng:11.75,code:"PG013189"},{name:"Chadian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.58,lng:-73.7,code:"PG050504"},{name:"New Caledonian",country:"Canada",lang:"French",rol3:"fra",pct_christian:7.5,pop:1100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:49.22,lng:-122.99,code:"PG047444"},{name:"Rikbaktsa",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:950,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-11.27,lng:-58.27,code:"PG017085"},{name:"Kambeba",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-3.17,lng:-64.85,code:"PG016936"},{name:"Miranha",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:850,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-2.86,lng:-64.74,code:"PG017022"},{name:"Gabonese",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:38.9,lng:-77.19,code:"PG047191"},{name:"Makurap",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:475,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-12.56,lng:-62.57,code:"PG017001"},{name:"Chinese-Tahitian Creole",country:"French Polynesia",lang:"French",rol3:"fra",pct_christian:7.5,pop:300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Chinese Folk Religion",lat:-17.56,lng:-149.57,code:"PG018407"},{name:"Chadian",country:"United States",lang:"French",rol3:"fra",pct_christian:7.5,pop:250,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:38.02,lng:-84.5,code:"PG047189"},{name:"Kariri",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:7.5,pop:125,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-7.27,lng:-39.77,code:"PG016956"},{name:"Romanian",country:"Romania",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1637e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:45.84,lng:24.98,code:"PG000899"},{name:"Variyar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:1417e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:12.13,lng:78.55,code:"PG042083"},{name:"Izhattu Pillaimar",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:852e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:10.6,lng:77.56,code:"PG041254"},{name:"Russian",country:"Ukraine",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:708e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:47.69,lng:34.82,code:"PG042915"},{name:"Walloon",country:"Belgium",lang:"French",rol3:"fra",pct_christian:3.5,pop:3755e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:50.32,lng:4.95,code:"PG000076"},{name:"Swiss",country:"Switzerland",lang:"French",rol3:"fra",pct_christian:3.5,pop:2015e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.6,lng:6.93,code:"PG000585"},{name:"Kokna",country:"India",lang:"Marathi",rol3:"mar",pct_christian:3.5,pop:136e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:20.59,lng:73.8,code:"PG041403"},{name:"Romanian",country:"Italy",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:13e5,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:44.5,lng:9.8,code:"PG048833"},{name:"Portuguese",country:"France",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:984e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.39,lng:2.44,code:"PG000186"},{name:"Portuguese",country:"United States",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:861e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:39.45,lng:-96.6,code:"PG046462"},{name:"Portuguese",country:"Canada",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:307e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.93,lng:-92.67,code:"PG043365"},{name:"Thandan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:285e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:9.05,lng:76.86,code:"PG041497"},{name:"Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:26e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:52.48,lng:12.44,code:"PG049403"},{name:"Portuguese",country:"Venezuela",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.47,lng:-69.1,code:"PG016488"},{name:"Egyptian Copt",country:"United States",lang:"Arabic, Egyptian",rol3:"arz",pct_christian:3.5,pop:242e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:35.35,lng:-111.99,code:"PG047347"},{name:"Arab, Lebanese",country:"Canada",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:234e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.53,lng:-73.66,code:"PG043431"},{name:"Jew",country:"Russian Federation",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:208e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated - Agnosticism",lat:52.97,lng:74.32,code:"PG042910"},{name:"Persian",country:"Canada",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:201e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:46.93,lng:-92.67,code:"PG043458"},{name:"Arab, Syrian",country:"United States",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:193e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:40.7,lng:-73.87,code:"PG043644"},{name:"Iranian",country:"Germany",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:175e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:52.51,lng:11.69,code:"PG000259"},{name:"Russian",country:"Lithuania",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:155e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:55.25,lng:24.5,code:"PG000853"},{name:"Persian",country:"Turkiye",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:13e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:41.04,lng:28.87,code:"PG024581"},{name:"Jew, Russian",country:"Germany",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:99500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Judaism",lat:52.5,lng:13.4,code:"PG046578"},{name:"Romanian",country:"Hungary",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:96500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:46.8,lng:20.84,code:"PG000835"},{name:"Persian",country:"United Kingdom",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:86e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:51.5,lng:-.17,code:"PG000643"},{name:"Romanian ",country:"Austria",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:84500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.18,lng:16.35,code:"PG049963"},{name:"Franco-Mauritian",country:"Mauritius",lang:"French",rol3:"fra",pct_christian:3.5,pop:72500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:-20.25,lng:57.51,code:"PG015346"},{name:"Assyrian",country:"Germany",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:50.03,lng:8.25,code:"PG000214"},{name:"Assyrian",country:"United States",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:7e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:37.75,lng:-122.21,code:"PG043528"},{name:"Hungarian",country:"Austria",lang:"Hungarian",rol3:"hun",pct_christian:3.5,pop:64500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:47.59,lng:16.37,code:"PG000021"},{name:"Russian",country:"United Kingdom",lang:"Russian",rol3:"rus",pct_christian:3.5,pop:64e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:51.5,lng:-.17,code:"PG000675"},{name:"Kurichian",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:52500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism - Folk",lat:11.72,lng:76.1,code:"PG041910"},{name:"Hungarian",country:"Canada",lang:"Hungarian",rol3:"hun",pct_christian:3.5,pop:42e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Unaffiliated",lat:43.83,lng:-79.46,code:"PG043408"},{name:"Sillekyatha",country:"India",lang:"Marathi",rol3:"mar",pct_christian:3.5,pop:34500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:15.11,lng:76.53,code:"PG042138"},{name:"Romanian",country:"Ireland",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:32e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:53.39,lng:-6.28,code:"PG048049"},{name:"Bissau-Guineans",country:"Portugal",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:16500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:39,lng:-9.17,code:"PG000482"},{name:"Moldovan",country:"Canada",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:16e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:49.72,lng:-95.67,code:"PG047364"},{name:"Romanian",country:"France",lang:"French",rol3:"fra",pct_christian:3.5,pop:13e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:48.84,lng:2.35,code:"PG000192"},{name:"Assyrian",country:"Canada",lang:"Assyrian Neo-Aramaic",rol3:"aii",pct_christian:3.5,pop:11500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Orthodox",lat:43.83,lng:-79.46,code:"PG043355"},{name:"Portuguese",country:"Macao",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:1e4,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:22.16,lng:113.56,code:"PG050586"},{name:"Persian",country:"Indonesia",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:8e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:-6.21,lng:106.83,code:"PG050238"},{name:"Kummara , Kusuvan",country:"India",lang:"Malayalam",rol3:"mal",pct_christian:3.5,pop:7e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Hinduism",lat:12.31,lng:75.54,code:"PG048341"},{name:"French Caribbean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:6300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.5,lng:-73.81,code:"PG047395"},{name:"Togolese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:5600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:45.52,lng:-73.68,code:"PG050478"},{name:"Congolese",country:"Spain",lang:"French",rol3:"fra",pct_christian:3.5,pop:4800,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:40.41,lng:-3.69,code:"PG042340"},{name:"Abenaki",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:3900,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:46.07,lng:-72.82,code:"PG043348"},{name:"Ivorian",country:"United States",lang:"French",rol3:"fra",pct_christian:3.5,pop:3600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:40.74,lng:-73.72,code:"PG047266"},{name:"Persian",country:"South Korea",lang:"Persian, Iranian",rol3:"pes",pct_christian:3.5,pop:3500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Shia",lat:37.55,lng:126.99,code:"PG050237"},{name:"Guinean",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:2400,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:45.5,lng:-73.81,code:"PG047454"},{name:"Sighu",country:"Gabon",lang:"French",rol3:"fra",pct_christian:3.5,pop:2100,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Protestantism",lat:-.84,lng:12.69,code:"PG013213"},{name:"Rwandan",country:"Netherlands",lang:"French",rol3:"fra",pct_christian:3.5,pop:1700,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:51.9,lng:4.47,code:"PG000430"},{name:"Gabonese",country:"Canada",lang:"French",rol3:"fra",pct_christian:3.5,pop:1600,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:45.58,lng:-73.7,code:"PG050505"},{name:"Romanian",country:"Venezuela",lang:"Romanian",rol3:"ron",pct_christian:3.5,pop:1500,bridge:"same-language",adjacency:"shared-language",religion_bg:"Christianity - Roman Catholicism",lat:10.48,lng:-66.88,code:"PG016490"},{name:"Arab, Palestinian",country:"El Salvador",lang:"Arabic, Levantine",rol3:"apc",pct_christian:3.5,pop:1300,bridge:"same-language",adjacency:"shared-language",religion_bg:"Islam - Sunni",lat:13.71,lng:-89.19,code:"PG039263"},{name:"Chiquitano",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:1e3,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:-16.15,lng:-59.48,code:"PG050662"},{name:"Poyanawa",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:550,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-7.55,lng:-73.09,code:"PG017081"},{name:"Jabuti",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:200,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion",lat:-12.08,lng:-64.7,code:"PG016889"},{name:"Yuruti",country:"Brazil",lang:"Portuguese",rol3:"por",pct_christian:3.5,pop:40,bridge:"same-language",adjacency:"shared-language",religion_bg:"Ethnoreligion - Animism",lat:.61,lng:-69.19,code:"PG017210"}]}}},Bc={"a-ou":"Guizhou Province",accukattavandlu:"Andhra Pradesh",adi:"Tibet Autonomous Region",adiyan:"Karnātaka",agaria:"Gujarāt",agasa:"Karnātaka",agri:"Gujarāt",aguru:"Andhra Pradesh",ahmadiya:"Uttar Pradesh","ai-cham":"Guizhou Province","ainu-china":"Xinjiang Uyghur Autonomous Region",aiton:"Assam",aiyarakulu:"Andhra Pradesh",akeu:"Yunnan Province",alavan:"Tamil Nādu",aling:"Yunnan Province",allar:"Kerala",alu:"Yunnan Province","alxa-mongols":"Inner Mongolia Autonomous Region",ambalavasi:"Kerala",andamanese:"Andaman and Nicobar Islands","andhra-vaisnawa":"Andhra Pradesh",angarok:"West Bengal",angku:"Yunnan Province",ani:"Yunnan Province",anjana:"Madhya Pradesh","anjana-patel-gujarati":"Gujarāt","ansari-momin-bengali":"West Bengal","ansari-momin-kannada":"Karnātaka","ansari-momin-tamil":"Tamil Nādu","ansari-momin-telugu":"Andhra Pradesh","anthur-nair":"Kerala",anuppan:"Tamil Nādu",anwal:"Uttarākhand",aoka:"Hunan Province",apu:"Yunnan Province","arain-dogri":"Jammu and Kashmīr","arain-kannauji":"Uttar Pradesh","arain-punjabi":"Haryāna",arakala:"Andhra Pradesh",aranadan:"Tamil Nādu",arasu:"Karnātaka",arayavati:"Kerala","are-bondili":"Andhra Pradesh","are-kapu":"Telangāna","are-katika":"Andhra Pradesh",atollu:"Andhra Pradesh",attagara:"Telangāna","attar-saibulu":"Mahārāshtra",ayri:"Karnātaka",ayyanavar:"Kerala","badhai-chhattisgarhi":"Chhattīsgarh",badhik:"Uttar Pradesh",badi:"Uttar Pradesh","badi-marwari":"Rājasthān",bafan:"Gujarāt",bagga:"Karnātaka",bagti:"West Bengal","baha-i":"Odisha",baharupi:"Mahārāshtra",baida:"West Bengal",baig:"Tamil Nādu",baira:"Karnātaka","bairagi-chhattisgarhi":"Chhattīsgarh","bairagi-gujarati":"Gujarāt","bairagi-odia":"Odisha",baisya:"West Bengal",bajandar:"Tripura",bakuda:"Kerala",balahar:"Uttar Pradesh",balasantoshi:"Karnātaka",baloch:"Gujarāt",bamcha:"Gujarāt",banai:"Meghālaya",banchada:"Madhya Pradesh",bandi:"Karnātaka",bandollu:"Andhra Pradesh",bangti:"Odisha","bania-agarwal-telegu":"Andhra Pradesh","bania-dogri":"Jammu and Kashmīr","bania-kannada":"Karnātaka","bania-kashmiri":"Ladākh","bania-konkani":"Goa","bania-malayalam":"Kerala","banik-bania":"Tripura",banjania:"Gujarāt",banka:"Odisha",banpar:"Bihār",baonuo:"Guangxi Zhuang Autonomous Region",baraua:"Madhya Pradesh",barda:"Mahārāshtra",baret:"Rājasthān",bargah:"Chhattīsgarh",bargala:"Uttar Pradesh",bargi:"Rājasthān",bargujar:"Uttar Pradesh","bari-hindi":"Madhya Pradesh","bari-marathi":"Mahārāshtra","bari-odia":"Odisha",barot:"Gujarāt",barthari:"Gujarāt",barua:"Tripura",basudeva:"Madhya Pradesh",batada:"Karnātaka",bauti:"Odisha",bavuri:"Odisha","bayil-kammara":"Karnātaka","bayil-pattar":"Karnātaka","bayita-kammara":"Andhra Pradesh",beidongnuo:"Guizhou Province","beldar-chhattisgarhi":"Chhattīsgarh",bellara:"Karnātaka",berad:"Andhra Pradesh",berar:"Madhya Pradesh",bestha:"Karnātaka",bhakta:"West Bengal",bhalla:"West Bengal","bhand-kashmiri":"Jammu and Kashmīr","bhangi-chhattisgarhi":"Chhattīsgarh",bhanumati:"Madhya Pradesh",bharewa:"Chhattīsgarh","bharia-bhumia-chhattisgarhi":"Chhattīsgarh",bharwad:"Mahārāshtra",bhatrajulu:"Telangāna","bhattra-bhatri":"Chhattīsgarh","bhatu-andamani":"Andaman and Nicobar Islands",bhodala:"Gujarāt","bhoi-marathi":"Mahārāshtra","bhoi-odia":"Odisha",bhojki:"Himāchal Pradesh",bhondari:"Andhra Pradesh",bhopa:"Rājasthān",bhuiyar:"Uttar Pradesh",bhujel:"West Bengal",bhunjia:"Chhattīsgarh",bhurtia:"Madhya Pradesh",bhutta:"Rājasthān",bilaspuri:"Assam",bindla:"Telangāna",bisati:"Uttar Pradesh","bit-china":"Yunnan Province","black-thai":"Yunnan Province","bogar-lhoba":"Tibet Autonomous Region",bogol:"Inner Mongolia Autonomous Region",bolla:"Telangāna",bomba:"Jammu and Kashmīr",bondili:"Tamil Nādu",bondo:"Odisha",borpi:"Gujarāt","bowis-mogeyar":"Kerala","boyu-tibetans":"Gansu Province","brahman-jyoti":"Odisha","brahmin-andamani":"Andaman and Nicobar Islands",brukpa:"Ladākh",budakukkala:"Andhra Pradesh",budhan:"Jammu and Kashmīr",bugan:"Yunnan Province",bunan:"Tibet Autonomous Region",buryat:"Inner Mongolia Autonomous Region","butuo-nosu":"Sichuan Province",buyang:"Yunnan Province",byadh:"West Bengal",cai:"Guizhou Province",caki:"Gujarāt",cakkala:"Kerala",cakketakare:"Andhra Pradesh","cakkyar-nambiyar":"Kerala",camadollu:"Andhra Pradesh",camma:"Bihār",campa:"Ladākh","candhai-maru":"Odisha",cejara:"Rājasthān",cekkala:"Tamil Nādu",chadwa:"Rājasthān",chaikwa:"Chhattīsgarh",chakkiyar:"Kerala","chamar-assamese":"Assam","chamar-muchi-malayalam":"Kerala","chamar-muchi-tamil":"Tamil Nādu",champta:"Gujarāt",changpao:"Guizhou Province",chaptegar:"Karnātaka",chari:"Mahārāshtra",charodi:"Karnātaka",charwaha:"Uttar Pradesh",chatarkheya:"Odisha",chaudangsi:"Uttarākhand",chayakkaran:"Tamil Nādu",cheintz:"Jammu and Kashmīr","chengazhi-nambiar":"Kerala","chenna-dasar":"Karnātaka",cherua:"Odisha",chesu:"Yunnan Province",chheepi:"Rājasthān",chitari:"Mahārāshtra",chobdar:"Rājasthān",chopan:"Jammu and Kashmīr",chunari:"West Bengal",chungar:"Rājasthān",cingatanmar:"Kerala",cippollu:"Telangāna",citrakar:"Odisha",citrakathi:"Mahārāshtra","cona-monba":"Tibet Autonomous Region","coorgi-andamanese":"Andaman and Nicobar Islands",cudigar:"Rājasthān",cunara:"Gujarāt",cundollu:"Andhra Pradesh",dadupanthi:"Rājasthān",dafer:"Gujarāt",daitapati:"Odisha","dalu-india":"Meghālaya",damami:"Rājasthān",damla:"Odisha",dammali:"Andhra Pradesh",dangasiya:"Gujarāt",daoli:"Punjab","darang-deng":"Tibet Autonomous Region","darji-odia":"Odisha","dasa-palanjika":"Tamil Nādu",dasari:"Andhra Pradesh","dasnami-bawa":"Gujarāt",daule:"Himāchal Pradesh",dayare:"Tamil Nādu",depala:"Gujarāt","dhakad-halbi":"Chhattīsgarh",dhaki:"Himāchal Pradesh","dhal-kstriya":"West Bengal",dhamin:"Bihār",dhawad:"Mahārāshtra",dhed:"Madhya Pradesh",dheevara:"Kerala",dhekaro:"Jhārkhand",dhera:"Odisha",dhimal:"West Bengal","dhobi-dogri":"Jammu and Kashmīr","dhobi-tamil":"Tamil Nādu",dhola:"Rājasthān",dhyar:"Jammu and Kashmīr",dianbao:"Yunnan Province",diao:"Guizhou Province",didayi:"Odisha",dokhpa:"Ladākh","dom-chhattisgarhi":"Chhattīsgarh","dom-marathi":"Mahārāshtra",domal:"Jammu and Kashmīr","dombi-dasa":"Karnātaka",dosali:"Himāchal Pradesh",doupo:"Yunnan Province",dudhwala:"Gujarāt","durga-murga":"Karnātaka","eastern-samadu":"Yunnan Province","eastern-xiangxi-miao":"Hunan Province","eneti-dora":"Odisha","enger-yugur":"Gansu Province",erawallan:"Kerala",ersu:"Sichuan Province",ezhavathi:"Kerala","ga-mong":"Guizhou Province",gabit:"Goa",gachha:"Madhya Pradesh",gadhai:"Gujarāt",gadhia:"Uttar Pradesh",gadihar:"Bihār",gagra:"Punjab","galada-kokani":"Karnātaka",galiara:"Gujarāt",galwan:"Jammu and Kashmīr",gandalla:"Andhra Pradesh",gandharv:"Bihār",gandla:"Andhra Pradesh",gangawar:"Tamil Nādu",gangireddula:"Telangāna","ganta-sayebulu":"Andhra Pradesh","ganti-chores":"Karnātaka",ganz:"Jammu and Kashmīr",gao:"Guizhou Province",garadi:"Andhra Pradesh",gardi:"Jammu and Kashmīr",garmatan:"Gujarāt",garodi:"Mahārāshtra",garpagari:"Mahārāshtra",garvi:"Gujarāt",gatti:"Karnātaka",gauli:"Karnātaka",gavara:"Andhra Pradesh",gavli:"Gujarāt",gelao:"Guizhou Province","geman-deng":"Tibet Autonomous Region",ghadi:"Karnātaka",ghadwa:"Chhattīsgarh",ghantarghada:"Odisha",ghantiya:"Gujarāt",ghazi:"West Bengal",ghihara:"Rājasthān",ghogia:"Odisha",ghusuria:"Odisha",godagali:"Andhra Pradesh",godari:"Andhra Pradesh",godda:"Karnātaka",godra:"Odisha",golarana:"Gujarāt","gomantak-maratha":"Goa","gond-kannada":"Karnātaka",gondhali:"Mahārāshtra",gopal:"Mahārāshtra",gorkun:"Jammu and Kashmīr","gosain-chhattisgarhi":"Chhattīsgarh","gosain-gujarati":"Gujarāt","gosain-kangri":"Himāchal Pradesh","gosain-rajasthani":"Rājasthān",gosangi:"Telangāna","great-andamanese":"Andaman and Nicobar Islands",guaigun:"Yunnan Province","guddi-eluguwallu":"Andhra Pradesh",gudikara:"Karnātaka",gudugudupandi:"Tamil Nādu",guna:"Odisha",guraw:"Karnātaka",gurika:"Telangāna",gurru:"Rājasthān",gurukkal:"Tamil Nādu","ha-li":"Hainan Province",habura:"Uttar Pradesh",hadi:"Himāchal Pradesh",hagei:"Guizhou Province","hajjam-assamese":"Assam","hajjam-bengali":"West Bengal","hajjam-gujarati":"Gujarāt","hajjam-haryanvi":"Haryāna","hajjam-hindi":"Madhya Pradesh","hajjam-kannada":"Karnātaka","hajjam-kashmiri":"Jammu and Kashmīr","hajjam-telugu":"Andhra Pradesh",halaypotra:"Gujarāt",halleer:"Karnātaka",haluadas:"Tripura",hardas:"Mahārāshtra",harkantra:"Karnātaka",hasalaru:"Karnātaka",hatgar:"Andhra Pradesh",hatkar:"Mahārāshtra",heishui:"Sichuan Province",helawa:"Karnātaka","henan-mongols":"Qinghai Province",hesi:"Himāchal Pradesh",hijra:"Uttar Pradesh","hindu-santarash":"Bihār",hingora:"Gujarāt",hingorza:"Gujarāt",hiranbaj:"Rājasthān","holeya-dasari":"Karnātaka","hongjin-tai":"Yunnan Province",hu:"Yunnan Province","huishui-miao":"Guizhou Province",ilayatu:"Kerala","indo-french":"Puducherry","indo-vietnamese":"Puducherry",irika:"Odisha",jadam:"Madhya Pradesh",jadupetia:"Jhārkhand","jains-bengali":"West Bengal","jains-hindi":"Madhya Pradesh","jains-maithili":"Bihār","jains-tamil":"Tamil Nādu","jains-telugu":"Telangāna",jakkula:"Andhra Pradesh",jandra:"Andhra Pradesh",janughanta:"Odisha",jarawas:"Andaman and Nicobar Islands","jarkhandi-hajjam":"Jhārkhand","jarkhandi-julaha":"Jhārkhand","jat-muslim":"Gujarāt","jati-pillai":"Tamil Nādu",jatigar:"Karnātaka",jaweri:"Karnātaka",jethi:"Andhra Pradesh",jhadi:"Mahārāshtra","jharkhandi-nai":"Jhārkhand","jiamao-li":"Hainan Province",jiasou:"Yunnan Province",jimdar:"Uttarākhand",jino:"Yunnan Province","jogi-angika":"Bihār","jogi-halbi":"Chhattīsgarh","jogi-odia":"Odisha","jogi-telugu":"Karnātaka","jogi-tulu":"Karnātaka",juneja:"Gujarāt","kachchi-alia":"Odisha","kachchi-kushwaha":"Mahārāshtra","kachera-bagheli":"Madhya Pradesh",kachi:"Telangāna",kadar:"Bihār",kaghzi:"Mahārāshtra","kahar-gujarati":"Gujarāt",kaikali:"Andhra Pradesh",kakkalan:"Kerala",kakmara:"West Bengal","kalal-sadri":"Chhattīsgarh",kalanadies:"Kerala",kalladi:"Kerala","kallattu-kurup":"Kerala",kamalia:"Gujarāt",kambalattan:"Tamil Nādu",kambar:"Tamil Nādu","kambodia-bhagat":"Gujarāt",kamila:"Odisha",kanda:"Tripura",kandera:"Madhya Pradesh",kankali:"Uttar Pradesh","kannada-naicker":"Tamil Nādu","kannada-saineegar":"Tamil Nādu",kapadi:"Gujarāt",kapasiya:"Odisha",kapewar:"Mahārāshtra",kapuria:"West Bengal",karaiyar:"Tamil Nādu",karimpalan:"Kerala",karlar:"Tamil Nādu","karna-sale":"Tamil Nādu",karnam:"Andhra Pradesh",karnibhakthulu:"Andhra Pradesh","kasar-bengali":"West Bengal","kasar-gujarati":"Gujarāt","kasar-hindi":"Madhya Pradesh","kasar-odia":"Odisha",kasbati:"Gujarāt",kasikapadi:"Mahārāshtra",katesar:"Tamil Nādu",kathar:"Mahārāshtra",kathi:"Gujarāt",katipamula:"Telangāna",kattiakaran:"Tamil Nādu",kavara:"Kerala",kavuthiyan:"Kerala",kawoj:"Jammu and Kashmīr",kayalar:"Tamil Nādu",keji:"Tibet Autonomous Region",kepmari:"Tamil Nādu",ker:"Gujarāt",khadim:"Rājasthān",khadura:"Odisha","khairwar-bengali":"West Bengal","khairwar-chhattisgarhi":"Chhattīsgarh",khakar:"Karnātaka",khalifa:"West Bengal",khalpa:"Gujarāt",khamba:"Arunāchal Pradesh",khamyang:"Arunāchal Pradesh",khandwal:"Odisha","khangar-bundeli":"Uttar Pradesh",kharol:"Rājasthān",kharvi:"Mahārāshtra",khaskeli:"Gujarāt",khatbune:"Delhi","khati-odia":"Odisha","khatik-bengali":"West Bengal","khatik-chambeali":"Himāchal Pradesh","khatik-chhattisgarhi":"Chhattīsgarh","khatik-gujarati":"Gujarāt","khatik-marathi":"Mahārāshtra","khatik-punjabi":"Chandīgarh","khatik-telugu":"Telangāna",khmu:"Yunnan Province",khowa:"Arunāchal Pradesh",kidaran:"Kerala",kobari:"Odisha","kocu-wellan":"Kerala",koiren:"Manipur",kokaniz:"Mahārāshtra","kol-chhattisgarhi":"Chhattīsgarh",kolari:"Karnātaka",kolhati:"Mahārāshtra",koliyan:"Tamil Nādu",kollan:"Kerala","komara-panta":"Karnātaka","kommu-dasari":"Andhra Pradesh","konda-kammara":"Andhra Pradesh","kong-ge":"Yunnan Province","kongu-vaisnawa":"Tamil Nādu","kongu-vellala-gounder":"Tamil Nādu",koosa:"Karnātaka",kootan:"Kerala",koraga:"Odisha","koraga-korra":"Karnātaka",kota:"Tamil Nādu",kottari:"Karnātaka",koyava:"Karnātaka",kraal:"Jammu and Kashmīr",krishnavaka:"Tamil Nādu",kriyagar:"Rājasthān",kucband:"Haryāna",kucong:"Yunnan Province",kuda:"Odisha",kudimahan:"Mahārāshtra",kudiya:"Karnātaka",kudubi:"Karnātaka",kudumi:"Tamil Nādu",kuli:"Odisha",kuliya:"Andhra Pradesh",kuluvan:"Tamil Nādu","kumar-kshatriya":"Kerala","kumhar-assamese":"Assam","kummara-kumbara":"Karnātaka","kummara-kummari":"Tamil Nādu","kummara-kusuvan":"Kerala",kunduvadian:"Kerala","kunnuva-vellalar":"Tamil Nādu","kurahina-setti":"Karnātaka",kurakula:"Andhra Pradesh",kurol:"West Bengal",kurukkal:"Kerala",kurunga:"Odisha",kusta:"Odisha","kuthliya-bora":"Uttarākhand",kyrgyz:"Xinjiang Uyghur Autonomous Region",laba:"Guizhou Province",labapo:"Yunnan Province",laccadive:"Lakshadweep",ladar:"Karnātaka",ladia:"Madhya Pradesh",ladsi:"Mahārāshtra",lahangir:"Madhya Pradesh",lajjhar:"Mahārāshtra","lakhera-haryanvi":"Haryāna","lakkamari-kapu":"Telangāna",langa:"Gujarāt",laowu:"Yunnan Province",laskari:"Rājasthān","lati-china":"Yunnan Province",lawu:"Yunnan Province","liang-e":"Yunnan Province",liari:"Odisha",linghua:"Guangxi Zhuang Autonomous Region","liping-baheng":"Guizhou Province",liude:"Yunnan Province",liujia:"Guizhou Province","lodha-marathi":"Mahārāshtra","lohar-dogri":"Jammu and Kashmīr",lois:"Manipur",lonar:"Mahārāshtra",longjia:"Guizhou Province",lu:"Guizhou Province","lupanshui-miao":"Guizhou Province",luzu:"Sichuan Province",machhiyara:"Gujarāt","madiga-dasu":"Andhra Pradesh",maghia:"Odisha",mahisyadas:"Tripura",mahuria:"Odisha",maila:"Karnātaka",majjula:"Andhra Pradesh",majothi:"Gujarāt",makrani:"Gujarāt","mala-masti":"Telangāna","malai-pandaram":"Kerala","malai-vellala":"Tamil Nādu",malaikudi:"Karnātaka",malakar:"Tripura",malaneese:"Himāchal Pradesh",malayalar:"Kerala",maleru:"Karnātaka",maleyan:"Tamil Nādu",malia:"Odisha",malis:"Andhra Pradesh",man:"Assam",mana:"Mahārāshtra",manbhav:"Madhya Pradesh","mandali-muslims":"Gujarāt",mandula:"Andhra Pradesh","mang-china":"Yunnan Province","mangnyar-muslims":"Rājasthān",manhas:"Jammu and Kashmīr",maniyattikkaran:"Tamil Nādu","manjygur-muslims":"Jammu and Kashmīr",mankar:"Madhya Pradesh",manmet:"Yunnan Province","manna-dhora":"Andhra Pradesh",manser:"Karnātaka",manyak:"Sichuan Province","maran-nairs":"Kerala",marasari:"Kerala","maria-muslims":"Assam","markande-kanjia":"Odisha","mashan-miao":"Guizhou Province",masku:"Himāchal Pradesh",matak:"Assam",matangi:"Telangāna",mavilan:"Kerala",meda:"Karnātaka",medari:"Andhra Pradesh","medog-monba":"Tibet Autonomous Region","meifu-li":"Hainan Province",mengwu:"Yunnan Province",mer:"Gujarāt",mhalo:"Goa",miguba:"Tibet Autonomous Region",ming:"Sichuan Province",minyak:"Sichuan Province",mir:"Gujarāt",mirshikar:"West Bengal","mishaba-laluo":"Yunnan Province","mith-gauda":"Goa","mitha-ayyalavar":"Telangāna",mitna:"Mahārāshtra",miyana:"Gujarāt",mo:"Guizhou Province",modaks:"Jhārkhand",mogaveera:"Karnātaka","moger-malayalam":"Kerala","moghal-telugu":"Telangāna","moghol-dogri":"Jammu and Kashmīr","moghol-gujarati":"Gujarāt","moghol-marwari":"Rājasthān",mogia:"Rājasthān",momba:"Arunāchal Pradesh","mon-india":"Ladākh",mondivogula:"Andhra Pradesh",mondiwar:"Mahārāshtra",moothan:"Kerala",mosuo:"Yunnan Province",mozhihei:"Hunan Province","muchi-chamar":"Telangāna",muda:"Yunnan Province",mudugar:"Tamil Nādu",mujavar:"Gujarāt",mujavir:"Uttar Pradesh",mukeri:"Bihār",mukhi:"Assam",mukkari:"Kerala",muli:"Andhra Pradesh",mundala:"Karnātaka",mundapotta:"Odisha",munnewar:"Chhattīsgarh",murhid:"Rājasthān",musari:"Kerala",muskhan:"Madhya Pradesh","muslim-gond":"Madhya Pradesh","muslim-kachera":"Mahārāshtra","muslim-khatri":"Gujarāt","muslim-lakhera":"Gujarāt","muslim-patel":"Gujarāt","musti-chenchu":"Andhra Pradesh",muttatu:"Kerala",mutwa:"Gujarāt",muzi:"Yunnan Province",na:"Arunāchal Pradesh",nadors:"Karnātaka",nagavamsam:"Andhra Pradesh",nagbansi:"Jhārkhand","nagbansi-dogri":"Jammu and Kashmīr",nagda:"Rājasthān",nahal:"Mahārāshtra",naheng:"Yunnan Province","nai-assamese":"Assam","nai-kannada":"Karnātaka","nai-mewari":"Rājasthān","nai-odia":"Odisha",naikpod:"Mahārāshtra",nairy:"Karnātaka",naita:"Madhya Pradesh",najjar:"Jammu and Kashmīr",naju:"Sichuan Province",nakhasa:"Andhra Pradesh",nakkala:"Tamil Nādu",naksia:"Odisha",nalband:"Bihār",nalkadaya:"Kerala","namasudra-assamese":"Assam",nambutiris:"Kerala",namdagur:"Jammu and Kashmīr",namdeo:"Madhya Pradesh","namdeo-maratha":"Tamil Nādu",namuyi:"Sichuan Province",nandiwala:"Mahārāshtra","nanjil-mudali":"Tamil Nādu",nanjingren:"Guizhou Province",naoda:"Madhya Pradesh",naqqas:"Jammu and Kashmīr",nar:"Himāchal Pradesh",narsanna:"Kerala",narsinghpura:"Gujarāt",nasuvan:"Kerala","nat-bagheli":"Madhya Pradesh",natua:"Karnātaka",nawaiyat:"Karnātaka",nayadi:"Kerala","nayak-muslims":"Gujarāt",neeli:"Mahārāshtra",nema:"Madhya Pradesh",neyyala:"Andhra Pradesh","nghari-tibetans":"Tibet Autonomous Region",nicar:"Himāchal Pradesh",nilkanth:"Mahārāshtra",node:"Gujarāt",noliya:"Odisha","northern-awu":"Yunnan Province","northern-dong":"Guizhou Province","northern-muji":"Yunnan Province",numao:"Guizhou Province",nyaria:"Rājasthān",olot:"Heilongjiang Province",onge:"Andaman and Nicobar Islands",ongkor:"Xinjiang Uyghur Autonomous Region",ontaris:"Andhra Pradesh",oriya:"Odisha",otans:"Kerala",padannan:"Kerala",padarthis:"Karnātaka",padhar:"Gujarāt",padigarajulu:"Andhra Pradesh",padiyar:"Karnātaka",pagativeshagallu:"Andhra Pradesh",paharia:"West Bengal",pajabgar:"Rājasthān",pakhimara:"Rājasthān",paky:"Andhra Pradesh","palakad-tandans":"Kerala",palyu:"Guangxi Zhuang Autonomous Region",pambada:"Karnātaka",pambala:"Telangāna",pamidi:"Andhra Pradesh",pamula:"Andhra Pradesh",panar:"Gujarāt",panara:"Chhattīsgarh","pancaratra-srivaisnavas-brahmans":"Andhra Pradesh",pandithar:"Kerala",pando:"Chhattīsgarh",pangans:"Manipur",pangul:"Mahārāshtra","pangwal-buddhists":"Himāchal Pradesh",pangwala:"Himāchal Pradesh","panka-odia":"Odisha",pankhiya:"Uttar Pradesh",pannadi:"Tamil Nādu",panniandi:"Tamil Nādu","panxian-nasu":"Guizhou Province",paradhi:"Gujarāt",parenga:"Odisha","pariki-muggula":"Telangāna",parkavakulam:"Tamil Nādu",parvatarajakulam:"Tamil Nādu",patanwadia:"Gujarāt",patari:"Uttar Pradesh",pathinaickans:"Kerala",pathiyan:"Kerala",patkars:"Telangāna","patni-jamat":"Gujarāt","patni-vankars":"Gujarāt",pattanavan:"Tamil Nādu",pattegar:"Karnātaka",pendar:"Karnātaka",perumkollar:"Tamil Nādu",phularis:"Mahārāshtra","pingdi-yao":"Hunan Province","pinjara-dhunia-bengali":"West Bengal","pinjara-kannada":"Karnātaka","pinjara-marathi":"Mahārāshtra","pinjara-punjabi":"Punjab",pisaroti:"Kerala",pochammalollu:"Mahārāshtra",poduval:"Kerala",pohul:"Jammu and Kashmīr",pomla:"Gujarāt",popei:"Yunnan Province","prabhu-patane":"Mahārāshtra",pubiao:"Yunnan Province",pulisari:"Kerala",puman:"Yunnan Province",puran:"Jhārkhand","purig-pa":"Ladākh",puroik:"Tibet Autonomous Region",pusha:"Guangxi Zhuang Autonomous Region","puspakan-unni":"Kerala",putliwale:"Uttar Pradesh",qanu:"Guizhou Province","qiubei-zhuang":"Yunnan Province",qixingmin:"Guizhou Province",racband:"Punjab",rachavar:"Karnātaka",raddi:"Karnātaka",radhi:"Odisha","rai-bhat-muslims":"Uttar Pradesh",rajannalu:"Telangāna",rajapuri:"Karnātaka",rajdhop:"Bihār","raji-india":"Uttarākhand",rajkumhar:"Rājasthān",rajpurohit:"Rājasthān",rana:"Odisha",raneyar:"Karnātaka",rao:"Guizhou Province",rastogi:"Uttar Pradesh",ratal:"Jammu and Kashmīr",rath:"Rājasthān",rathodia:"Gujarāt",raval:"Karnātaka",rave:"Uttar Pradesh","raya-rawat":"Karnātaka",raysipotra:"Gujarāt",reddi:"Kerala","reddi-dora":"Andhra Pradesh",reddika:"Andhra Pradesh",rehar:"Himāchal Pradesh",royma:"Gujarāt",rujjhar:"Madhya Pradesh","rumai-de-ang":"Yunnan Province",runjalavallu:"Andhra Pradesh",runwalas:"Rājasthān",sabakhia:"Odisha",sabar:"Tripura",sadaru:"Andhra Pradesh","sadhu-chetty":"Andhra Pradesh",sagar:"Gujarāt",sagharias:"Dādra and Nagar Haveli and Damān and Diu",saha:"Tripura",sahi:"Mahārāshtra",sahisia:"Bihār",sain:"Rājasthān",sais:"Madhya Pradesh",sakunapaksollu:"Andhra Pradesh",salivahanam:"Tamil Nādu",saman:"Heilongjiang Province",samanthan:"Kerala",samasi:"Odisha",samayavallu:"Andhra Pradesh",sanchia:"Rājasthān",sanda:"Yunnan Province","sandhai-muslims":"Gujarāt",sanei:"Odisha",sanghar:"Mahārāshtra",sanhai:"Himāchal Pradesh",sanqiao:"Guizhou Province",sansoi:"Himāchal Pradesh",santia:"Rājasthān",sapalyas:"Karnātaka",saradagallu:"Telangāna","saragh-yugur":"Gansu Province",saranias:"Gujarāt",saraogi:"Rājasthān","sarikoli-tajiks":"Xinjiang Uyghur Autonomous Region",sarodi:"Mahārāshtra",savalakkarar:"Tamil Nādu","sayyid-chhattisgarhi":"Chhattīsgarh","sayyid-garhwali":"Uttarākhand","sayyid-gujarati":"Gujarāt","sayyid-kannada":"Karnātaka","sayyid-odia":"Odisha","sayyid-pahari":"Jammu and Kashmīr","sayyid-tamil":"Tamil Nādu",semman:"Tamil Nādu",senaithalaivar:"Tamil Nādu",senapathi:"Andhra Pradesh",sentinelese:"Andaman and Nicobar Islands",seok:"Himāchal Pradesh",serdukpen:"Arunāchal Pradesh",shabdakar:"Tripura",shaksaz:"Jammu and Kashmīr",sheikhzade:"Uttar Pradesh",shenzhou:"Guizhou Province",shershabadia:"Bihār",shikari:"Rājasthān","shina-india":"Jammu and Kashmīr",shixing:"Sichuan Province",shravan:"Gujarāt","sichuan-mongols":"Yunnan Province",siddi:"Gujarāt",sikligar:"Madhya Pradesh",silavantulu:"Andhra Pradesh",sindhollu:"Telangāna",sinduria:"Odisha",singiwala:"Rājasthān",sisgars:"Madhya Pradesh",siviar:"Tamil Nādu",siyalgar:"West Bengal",sofi:"Jammu and Kashmīr",soligaru:"Karnātaka","sompura-salat":"Gujarāt","son-koli":"Chhattīsgarh",sonavar:"Puducherry",sorgars:"Rājasthān",soria:"Madhya Pradesh",suda:"Odisha",sudhan:"Jammu and Kashmīr",sudir:"Karnātaka","sudra-das":"Assam",sukiyar:"Jhārkhand",sunga:"Rājasthān",sunuwar:"West Bengal","suodi-nosu":"Sichuan Province","sutar-mistry":"Mahārāshtra",sutradhar:"West Bengal","swakulasali-koshti":"Andhra Pradesh",swangla:"Himāchal Pradesh","ta-er":"Yunnan Province",tagewale:"Uttarākhand",tagu:"Yunnan Province",tai:"Gujarāt","tai-lu":"Yunnan Province","tai-pong":"Yunnan Province",taiphake:"Assam",tak:"Rājasthān",takari:"Mahārāshtra",tambiran:"Tamil Nādu","tamboli-bengali":"West Bengal","tamboli-telugu":"Andhra Pradesh",targala:"Gujarāt",telengi:"Andaman and Nicobar Islands","teli-assamese":"Assam","thachanad-moopan":"Kerala",thakurai:"Bihār",thammadi:"Karnātaka",thanapati:"Odisha",thanga:"Manipur",tharua:"Odisha",thavi:"Himāchal Pradesh",theba:"Gujarāt","thogataveera-kshatriya":"Andhra Pradesh","tholuva-naicker":"Tamil Nādu",thoraiyar:"Tamil Nādu",tikulhara:"Bihār",tilli:"Bihār",tirgar:"Gujarāt",tirugatigantla:"Andhra Pradesh",tiyattunni:"Kerala",tolakari:"Andhra Pradesh",tondman:"Tamil Nādu","tongren-bonan":"Qinghai Province","tripuri-kumhar":"West Bengal","tripuri-namasudra":"Tripura","tula-vina":"Odisha",tulao:"Yunnan Province","turi-barot":"Gujarāt","turuk-pasi":"Bihār",turun:"Assam",tusu:"Yunnan Province",udupula:"Andhra Pradesh",uppara:"Andhra Pradesh",uppillian:"Tamil Nādu","urikkar-naicker":"Tamil Nādu",urindavan:"Kerala",usta:"Rājasthān",uzbeks:"Xinjiang Uyghur Autonomous Region",vadi:"Gujarāt",vadugan:"Kerala","vahivanca-barot":"Gujarāt","vaikhanasa-brahmans":"Andhra Pradesh",valinjiyar:"Kerala","van-baoriya":"Rājasthān",vayati:"Gujarāt",ved:"Rājasthān",velip:"Mahārāshtra","vellaiyan-kuppam-padaiyaci":"Tamil Nādu","verra-musti":"Telangāna",vetan:"Kerala",vettaikkaran:"Tamil Nādu",vettalaikarans:"Puducherry",vettiyan:"Puducherry",vijabargiya:"Rājasthān",vilkurup:"Kerala",vilyagaras:"Karnātaka",vipravinodulu:"Andhra Pradesh",visavan:"Kerala",vyapari:"Gujarāt",wagheri:"Gujarāt",waidu:"Mahārāshtra","wainadan-cetti":"Kerala","wainadan-kader":"Kerala","wainadan-pulayan":"Kerala","wakhi-china":"Xinjiang Uyghur Autonomous Region",wandharo:"Gujarāt","wayanad-pathiyan":"Kerala",waza:"Jammu and Kashmīr","wenma-zhuang":"Yunnan Province","western-gaisu":"Yunnan Province","western-samadu":"Yunnan Province","western-xibe":"Xinjiang Uyghur Autonomous Region",wopu:"Guizhou Province",wunai:"Hunan Province",wutun:"Qinghai Province",xi:"Guizhou Province",xialusi:"Guizhou Province","xiaoliangshan-nosu":"Yunnan Province",xijima:"Yunnan Province","xinping-lalu":"Yunnan Province","xuzhang-lalu":"Yunnan Province",ya:"Yunnan Province",yakha:"Sikkim",yanghuang:"Guizhou Province",yata:"Andhra Pradesh",yatagiri:"Andhra Pradesh",yatibi:"Manipur",yatla:"Andhra Pradesh",yelmar:"Mahārāshtra",yerong:"Guangxi Zhuang Autonomous Region","yidu-lhoba":"Tibet Autonomous Region","yinuo-nosu":"Sichuan Province",yite:"Andhra Pradesh",yizi:"Guizhou Province",youmai:"Guizhou Province","younuo-bunu":"Guangxi Zhuang Autonomous Region","yunnan-mongol":"Yunnan Province","yunnan-shui":"Yunnan Province",za:"Tibet Autonomous Region",zakhrin:"Arunāchal Pradesh",zamral:"Madhya Pradesh"},ta={RED:"#e11d48",RED_DK:"#9f1239",NAVY:"#002e6e",GOLD:"#f59e0b",WHITE:"#ffffff",GREEN_BINS:["#9bcf9b","#5cb874","#1f9d55","#0f7a3d","#0a5c2e"],RED_RAMP:["#fdba74","#fb923c","#f97316","#ea580c","#c2410c"],CAT:["#002e6e","#1f9d55","#f59e0b","#e11d48","#7c3aed","#0891b2","#65a30d","#be123c","#a16207"]},tr=["2–10%","10–25%","25–50%","50–75%","75–100%"];function Ii(a){const e=+a||0;return e<10?0:e<25?1:e<50?2:e<75?3:4}function Vn(a){return ta.GREEN_BINS[Ii(a)]}function $t(a){const e=+a||0;return e>=80?ta.RED_RAMP[4]:e>=40?ta.RED_RAMP[3]:e>=15?ta.RED_RAMP[2]:e>=5?ta.RED_RAMP[1]:ta.RED_RAMP[0]}function Mt(a,e=4,n=22){const t=Math.max(1,+a||0),i=Math.min(1,Math.log10(t)/9);return e+(n-e)*i}function ir(a){return a==="same-language"?null:a==="related-cluster"?[4,3]:[1,3]}function Kc(a){const e=String(a||"").trim();return e&&e.split(" - ")[0].trim()||"Unknown"}function hn(a){const e=+a||0;return e>=1e9?(e/1e9).toFixed(1)+"B":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?Math.round(e/1e3)+"K":String(Math.round(e))}const Ke=a=>String(a||"").trim().toLowerCase(),Oc=a=>a&&typeof a=="object"?a.label??a.value??"":a??"",Dy=a=>a&&typeof a=="object"?a.value??a.label??"":a??"",Hy={"People's Republic of China":"China","Lao People’s Democratic Republic":"Laos","Lao People's Democratic Republic":"Laos"},zy=a=>Hy[a]||a;function Vy(){const a=ua(null),e=ua({languages:new Set,countries:new Set,religions:new Set,bridges:new Set,reachedMin:null}),n=ua(""),t=ua("pct"),i=ua(null),o=ua(!1),r=ua("map"),l=ua("mobilization"),s=ua(null),g=ua(!1),d=ua(""),_=ua(""),v=ua([]),w=ua([]),H=ua(Bc||{}),I=ua((nn==null?void 0:nn.meta)||{});async function M(k){const T=k||{};d.value="",w.value=Wy(nn);const R=Yy(w.value);let J=[];try{J=await Xy(T)}catch(y){d.value="Live unreached API unreachable — "+((y==null?void 0:y.message)||y),v.value=Zy(nn,R),_.value=new Date().toISOString(),g.value=!0;return}v.value=Jy(J,R),_.value=new Date().toISOString(),g.value=!0}const x=ra(()=>{let k=v.value;const T=e.value;T.countries.size&&(k=k.filter(J=>T.countries.has(J.country))),T.languages.size&&(k=k.filter(J=>J.langs.some(y=>T.languages.has(y))));const R=Ke(n.value);if(R&&(k=k.filter(J=>Ke(J.label).includes(R)||Ke(J.country).includes(R)||J.langs.some(y=>Ke(y).includes(R)))),i.value){const J=Ke(i.value),y=G(J);k=k.filter(E=>y.has(E.id))}return[...k].sort((J,y)=>y.senderCount-J.senderCount||y.target_pop-J.target_pop||y.count-J.count)}),A=ra(()=>a.value&&v.value.find(k=>k.id===a.value)||null),$=ra(()=>a.value?w.value.filter(k=>k.targetId===a.value):[]),S=ra(()=>{let k=$.value;const T=e.value;T.languages.size&&(k=k.filter(J=>T.languages.has(J.lang))),T.countries.size&&(k=k.filter(J=>T.countries.has(J.country))),T.religions.size&&(k=k.filter(J=>T.religions.has(J.religionFamily))),T.bridges.size&&(k=k.filter(J=>T.bridges.has(J.bridge))),T.reachedMin!=null&&(k=k.filter(J=>J.pct>=T.reachedMin));const R=Ke(n.value);return R&&(k=k.filter(J=>Ke(J.name).includes(R)||Ke(J.lang).includes(R)||Ke(J.country).includes(R))),k}),j=ra(()=>S.value.filter(k=>isFinite(k.lat)&&isFinite(k.lng)).map(k=>({...k,isPool:!1}))),b=ra(()=>{const k=x.value.length;if(a.value){const R=$.value.length,J=S.value.length;return{senders:J,clusters:k,hidden:Math.max(0,R-J)}}return{senders:x.value.reduce((R,J)=>R+J.senderCount,0),clusters:k,hidden:0}}),C=ra(()=>{const k=A.value;if(!k)return b.value.clusters+" unreached clusters · "+b.value.senders.toLocaleString()+" reached senders nearby — pick a red to send";const T=S.value,R=i.value||[...e.value.languages][0]||"",J=[...T].sort((h,N)=>N.pct-h.pct||N.pop-h.pop)[0],y=(R?R+" × ":"")+k.country,E=J?" · top "+J.name+" "+Math.round(J.pct)+"%, "+hn(J.pop):"";return y+": "+k.count+" unreached · "+T.length+(R?" nearby "+R+" senders":" nearby senders")+E}),F=ra(()=>{const k=[...S.value],T={"same-language":0,"related-cluster":1,"same-country":2};switch(l.value){case"pct":k.sort((R,J)=>J.pct-R.pct||J.pop-R.pop);break;case"pop":k.sort((R,J)=>J.pop-R.pop||J.pct-R.pct);break;case"name":k.sort((R,J)=>R.name.localeCompare(J.name));break;case"bridge":k.sort((R,J)=>(T[R.bridge]??9)-(T[J.bridge]??9)||J.pct-R.pct);break;case"frontier":k.sort((R,J)=>J.pop-R.pop||R.pct-J.pct);break;case"mobilization":default:k.sort((R,J)=>J.pct-R.pct||J.pop-R.pop);break}return k}),B=ra(()=>{const k=a.value?S.value:w.value.filter(T=>u().has(T.targetId));return{languageBar:Uc(k,T=>T.lang,12),countryBar:Uc(k,T=>T.country,12),reachedHist:tr.map((T,R)=>({key:R,label:T,value:k.filter(J=>J.bin===R).length,color:ta.GREEN_BINS[R]})),donut:t.value==="religion"?Dc(k,T=>T.religionFamily):Dc(k,T=>T.bridge)}}),ia=ra(()=>{var k,T,R;return{liveTargets:v.value.length,liveUnreached:v.value.reduce((J,y)=>J+y.count,0),loadedAt:_.value,bakedGenerated:((k=I.value)==null?void 0:k.generated)||"",bakedSenders:((T=I.value)==null?void 0:T.total_neighbors)||w.value.length,reachedFilter:((R=I.value)==null?void 0:R.reached_filter)||"",admin1Level:"IN/CN admin1 (point-in-polygon, "+Object.keys(H.value).length+" groups)",apiError:d.value}}),ga=ra(()=>{const k=[],T=e.value;a.value&&A.value&&k.push({kind:"focus",value:A.value.country,label:A.value.country});for(const R of T.languages)k.push({kind:"languages",value:R,label:R});for(const R of T.countries)k.push({kind:"countries",value:R,label:R});for(const R of T.religions)k.push({kind:"religions",value:R,label:R});for(const R of T.bridges)k.push({kind:"bridges",value:R,label:R});return T.reachedMin!=null&&k.push({kind:"reachedMin",value:T.reachedMin,label:"reached% ≥ "+T.reachedMin}),i.value&&k.push({kind:"lens",value:i.value,label:"lens: "+i.value}),k});function na(k){a.value=k}function ma(){a.value=null}function Sa(k,T){const R=e.value[k];R instanceof Set&&(R.has(T)?R.delete(T):R.add(T),e.value={...e.value})}function $a(k){e.value={...e.value,reachedMin:k==null||k===""?null:+k}}function ha(k){n.value=String(k??"")}function pa(k){t.value=k==="religion"?"religion":"pct"}function Y(k){i.value=k||null}function L(){o.value=!o.value}function D(k){r.value=k==="flower"?"flower":"map"}function la(k){l.value=k||"mobilization"}function X(k){s.value=k||null}function c(k){if(k)return k.kind==="focus"?ma():k.kind==="reachedMin"?$a(null):k.kind==="lens"?Y(null):Sa(k.kind,k.value)}function f(){e.value={languages:new Set,countries:new Set,religions:new Set,bridges:new Set,reachedMin:null},i.value=null,n.value=""}function O(k){var z,V,oa;const T=Array.isArray(k)?k:F.value,R=["name","country","lang","rol3","pct","pop","bridge","adjacency","religion_bg"],J=ea=>{let p=String(ea??"");return/^[=+\-@]/.test(p)&&(p="'"+p),'"'+p.replace(/"/g,'""')+'"'},y="# BloomField Cockpit — reached neighbors for "+(((z=A.value)==null?void 0:z.country)||"all targets")+" · baked "+(((V=I.value)==null?void 0:V.generated)||"")+" · "+T.length+" rows · "+(_.value||""),E=R.join(","),h=T.map(ea=>R.map(p=>J(ea[p])).join(",")).join(` +`),N=y+` +`+E+` +`+h+` +`;try{const ea=new Blob([N],{type:"text/csv;charset=utf-8;"}),p=URL.createObjectURL(ea),m=document.createElement("a");m.href=p,m.download="send-list-"+(((oa=A.value)==null?void 0:oa.country)||"all").replace(/\W+/g,"-").toLowerCase()+".csv",document.body.appendChild(m),m.click(),m.remove(),setTimeout(()=>URL.revokeObjectURL(p),1e3)}catch{}return N}function u(){return new Set(x.value.map(k=>k.id))}function G(k){const T=new Set;for(const R of w.value)Ke(R.lang)===k&&T.add(R.targetId);return T}return{focusedTargetId:a,facets:e,search:n,colorBy:t,languageLens:i,provinceDrill:o,mode:r,sortKey:l,hoveredId:s,hoveredSenderId:s,ready:g,loadError:d,loadedAt:_,meta:I,admin1:H,allClusters:v,allSenders:w,clusters:x,focusedTarget:A,sendersForFocus:$,visibleSenders:S,mapNodes:j,counts:b,headline:C,listRows:F,chartData:B,provenance:ia,chips:ga,loadData:M,selectTarget:na,clearFocus:ma,toggleFacet:Sa,setReachedMin:$a,setSearch:ha,setColorBy:pa,setLanguageLens:Y,toggleProvince:L,setMode:D,setSort:la,setHover:X,removeChip:c,clearAllFacets:f,exportSelectionCSV:O,quantileBin:Ii,reachedColor:Vn,redColor:$t,logRadius:Mt,bridgeDash:ir,religionFamily:Kc,fmtPop:hn,COLORS:ta}}function xi(){const a=Na("cockpitStore",null);if(!a)throw new Error("[useCockpitStore] no cockpitStore provided — mount inside ");return a}function Wy(a){const e=[],n=(a==null?void 0:a.countries)||{};for(const[t,i]of Object.entries(n))for(const o of i.neighbors||[]){const r=Number(o.lat),l=Number(o.lng);if(!isFinite(r)||!isFinite(l))continue;const s=+o.pct_christian||0;e.push({id:o.code||t+"|"+o.name+"|"+o.country+"|"+(o.rol3||""),targetId:t,name:o.name,country:o.country,lang:o.lang,rol3:o.rol3||"",pct:s,pop:+o.pop||0,bridge:o.bridge||"",adjacency:o.adjacency||"",religion_bg:o.religion_bg||"",religionFamily:Kc(o.religion_bg),lat:r,lng:l,code:o.code||"",bin:Ii(s),color:Vn(s)})}return e}function Yy(a){const e=new Map;for(const n of a){let t=e.get(n.targetId);t||(t={count:0,pop:0},e.set(n.targetId,t)),t.count++,t.pop+=n.pop}return e}function Jy(a,e){const n=new Map;for(const t of a){const i=Number(t.latitude),o=Number(t.longitude),r=zy(Oc(t.country_code)||"(unknown)"),l=Oc(t.primary_language)||"",s=t.slug||Dy(t.primary_language)+":"+t.name;let g=n.get(r);g||(g={id:r,country:r,label:r,count:0,target_pop:0,_sumLat:0,_sumLng:0,_n:0,langSet:new Set,members:[]},n.set(r,g)),g.count++,l&&g.langSet.add(l),g.members.push({name:t.name,slug:s,lang:l,lat:i,lng:o}),isFinite(i)&&isFinite(o)&&(g._sumLat+=i,g._sumLng+=o,g._n++)}return qy([...n.values()],e)}function Zy(a,e){const n=[];for(const[t,i]of Object.entries((a==null?void 0:a.countries)||{})){const o=e.get(t);n.push({id:t,country:t,label:t,count:+i.target_upg||0,target_pop:+i.target_pop||0,lat:null,lng:null,langs:i.target_top_langs||[],target_top_langs:i.target_top_langs||[],target_top_religion:i.target_top_religion||"",senderCount:o?o.count:0,hasSenders:!!o,color:$t(+i.target_upg||0)})}return n}function qy(a,e){const n=[];for(const t of a){t._n?(t.lat=t._sumLat/t._n,t.lng=t._sumLng/t._n):(t.lat=null,t.lng=null);const i=e.get(t.id);n.push({id:t.id,country:t.country,label:t.label,count:t.count,target_pop:t.target_pop,lat:t.lat,lng:t.lng,langs:[...t.langSet],target_top_langs:[...t.langSet].slice(0,4),target_top_religion:"",members:t.members,senderCount:i?i.count:0,hasSenders:!!i,color:$t(t.count)})}return n.sort((t,i)=>i.count-t.count),n}async function Xy(a){const t=(a.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL)||"https://pray.doxa.life").replace(/\/?$/,"")+"/api/people-groups/list?fields="+"slug,name,latitude,longitude,country_code,primary_language,wagf_block"+"&lang=en",i=await fetch(t,{cache:"no-store"});if(!i.ok)throw new Error("doxa list "+i.status);const o=await i.json();return o.posts||o.data||o.records||o.results||o.items||(Array.isArray(o)?o:[])}function Uc(a,e,n){const t=new Map;for(const i of a){const o=e(i)||"—";t.set(o,(t.get(o)||0)+1)}return[...t.entries()].map(([i,o])=>({key:i,label:i,value:o})).sort((i,o)=>o.value-i.value).slice(0,n)}function Dc(a,e){const n=new Map;for(const i of a){const o=e(i)||"—";n.set(o,(n.get(o)||0)+1)}return[...n.entries()].sort((i,o)=>o[1]-i[1]).map(([i,o],r)=>({key:i,label:i,value:o,color:ta.CAT[r%ta.CAT.length]}))}const Qy="rgba(120, 128, 134, 0.28)",Hc="36px",zc=()=>{};function ab(a,e={}){const{enabled:n=!0}=e;if(!n||!a)return zc;const t=Array.from(a.querySelectorAll(".map-scroll-edge"));if(!t.length)return zc;const i=A=>A.classList.contains("map-scroll-edge--left");for(const A of t)A.style.background=`linear-gradient(${i(A)?"to right":"to left"}, ${Qy} ${Hc}, transparent ${Hc})`,A.style.opacity="0",A.style.transition="opacity 0.16s ease",A.style.userSelect="none",A.style.webkitUserSelect="none";const o=A=>{A.style.opacity="1"},r=A=>{A.style.opacity="0"},l=()=>t.find(A=>!i(A))||null,s=new Set;let g=!1,d=null;const _=()=>{for(const A of t)s.has(A)||r(A)},v=()=>{const A=l();A&&(o(A),d&&clearTimeout(d),d=setTimeout(_,250))},w=()=>v(),H=A=>{if(!(A.touches&&A.touches.length===1))return;const $=A.target;$&&$.classList&&$.classList.contains("map-scroll-edge")||v()},I=()=>{d&&clearTimeout(d),_()};a.addEventListener("wheel",w,{passive:!0}),a.addEventListener("touchmove",H,{passive:!0}),a.addEventListener("touchend",I,{passive:!0}),a.addEventListener("touchcancel",I,{passive:!0});const M=()=>{g||v()};typeof window<"u"&&window.addEventListener("scroll",M,{passive:!0});const x=[];for(const A of t){const $=()=>{s.add(A),o(A)},S=()=>{s.delete(A),r(A)},j=()=>{g=!0,o(A)},b=()=>{g=!1,r(A)};A.addEventListener("mouseenter",$),A.addEventListener("mouseleave",S),A.addEventListener("touchstart",j,{passive:!0}),A.addEventListener("touchend",b,{passive:!0}),x.push(()=>{A.removeEventListener("mouseenter",$),A.removeEventListener("mouseleave",S),A.removeEventListener("touchstart",j),A.removeEventListener("touchend",b)})}return function(){d&&(clearTimeout(d),d=null),a.removeEventListener("wheel",w),a.removeEventListener("touchmove",H),a.removeEventListener("touchend",I),a.removeEventListener("touchcancel",I),typeof window<"u"&&window.removeEventListener("scroll",M);for(const $ of x)$();for(const $ of t)r($)}}const eb=Object.fromEntries([{id:"midnight-glow",label:"Midnight Glow",mood:"the prayer-map dark — pins glow like embers",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"night",maplibre:"https://tiles.openfreemap.org/styles/fiord",bestFor:["doxa-simple-map","my-upg-100-list"]},{id:"daylight",label:"Daylight",mood:"the same Standard world, lights on",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"day",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["doxa-research-map","gospel-resources"]},{id:"dawn",label:"Dawn",mood:"soft warm horizon — hopeful, quiet",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"dawn",maplibre:"https://tiles.openfreemap.org/styles/positron",bestFor:["doxa-simple-map"]},{id:"dusk",label:"Dusk",mood:"blue hour — calm contrast for bright pins",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"dusk",maplibre:"https://tiles.openfreemap.org/styles/fiord",bestFor:["my-upg-100-list"]},{id:"paper",label:"Paper",mood:"near-white minimal — data reads like print",mapbox:"mapbox://styles/mapbox/light-v11",maplibre:"https://tiles.openfreemap.org/styles/positron",bestFor:["research-dashboard","cities-internet"]},{id:"ink",label:"Ink",mood:"near-black minimal — maximum pin contrast",mapbox:"mapbox://styles/mapbox/dark-v11",maplibre:"https://tiles.openfreemap.org/styles/dark",bestFor:["my-upg-100-list","cities-internet"]},{id:"streetlife",label:"Street Life",mood:"full street detail — city-scale work",mapbox:"mapbox://styles/mapbox/streets-v12",maplibre:"https://tiles.openfreemap.org/styles/bright",bestFor:["cities-internet","key-cities"]},{id:"terrain",label:"Terrain",mood:"relief + parks — where people actually live",mapbox:"mapbox://styles/mapbox/outdoors-v12",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["doxa-research-map","country-posters"]},{id:"satellite",label:"Satellite",mood:"imagery — the real ground",mapbox:"mapbox://styles/mapbox/satellite-v9",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["country-posters"]},{id:"hybrid",label:"Hybrid",mood:"imagery + labels — orientation without losing ground truth",mapbox:"mapbox://styles/mapbox/satellite-streets-v12",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["key-cities"]},{id:"wayfinder-day",label:"Wayfinder Day",mood:"high-legibility navigation palette",mapbox:"mapbox://styles/mapbox/navigation-day-v1",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["gospel-resources"]},{id:"wayfinder-night",label:"Wayfinder Night",mood:"dark navigation — dashboards at night",mapbox:"mapbox://styles/mapbox/navigation-night-v1",maplibre:"https://tiles.openfreemap.org/styles/fiord",bestFor:["research-dashboard"]},{id:"galaxy",label:"Galaxy",mood:"the day side of Earth floating in space — normal land, blue oceans, black void behind the sphere",mapbox:"mapbox://styles/mapbox/standard",maplibre:"https://tiles.versatiles.org/assets/styles/colorful/style.json",bestFor:["research-dashboard","my-upg-100-list"]}].map(a=>[a.id,a]));function nb(a,e="mapbox"){if(typeof a!="string"||!a)return{style:void 0,lightPreset:void 0,paint:void 0};const n=eb[a];return n?e==="maplibre"?{style:n.maplibre,lightPreset:void 0,paint:n.paint}:{style:n.mapbox,lightPreset:n.lightPreset,paint:n.paint}:/^(mapbox:\/\/|https?:\/\/)/.test(a)?{style:a,lightPreset:void 0,paint:void 0}:{style:void 0,lightPreset:void 0,paint:void 0}}function tb(a,e){if(!a||!Array.isArray(e))return[];const n=[];for(const t of e)if(!(!t||!t.layer||!t.prop))try{if(!a.getLayer(t.layer))continue;a.setPaintProperty(t.layer,t.prop,t.value),n.push(t.layer+"."+t.prop)}catch{}return n}const ib=["mapbox","maplibre"],Vc="mapbox";function ob(a){return a&&typeof a=="object"&&"value"in a&&!("provider"in a)&&!("profile"in a)?a.value:a}function rb(a){const e=ob(a),n=e==null?void 0:e.provider,t=typeof location<"u"?new URLSearchParams(location.search).get("provider"):void 0,i=typeof window<"u"?window.MAP_PROVIDER:void 0,o=String(n||t||i||Vc).toLowerCase().trim();return ib.includes(o)?o:Vc}const Wn={mapbox:{global:"mapboxgl",js:"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js",css:"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css"},maplibre:{global:"maplibregl",js:"https://cdn.jsdelivr.net/npm/maplibre-gl@5/dist/maplibre-gl.js",css:"https://cdn.jsdelivr.net/npm/maplibre-gl@5/dist/maplibre-gl.css"}};function Wc(a){if(typeof window>"u")return;const e=window,n=()=>{try{const t=a.getContainer().querySelector(".mapboxgl-ctrl-logo, .maplibregl-ctrl-logo");t&&(t.style.display="none")}catch{}};if(e.__doxaLogoOwner&&e.__doxaLogoOwner!==a){a.once("load",n),n();return}e.__doxaLogoOwner=a,a.once("remove",()=>{e.__doxaLogoOwner===a&&(e.__doxaLogoOwner=null)})}const lb=Wn.mapbox.css,sb="https://tiles.openfreemap.org/styles/liberty",cb="https://tiles.openfreemap.org/styles/fiord";function or(a){var n;const e=((n=Wn[a])==null?void 0:n.global)||Wn.mapbox.global;return typeof window<"u"?window[e]:void 0}async function gb(a){const e=Wn[a]||Wn.mapbox;if(or(a)||typeof document>"u")return;if(!document.querySelector(`link[href="${e.css}"]`)){const t=document.createElement("link");t.rel="stylesheet",t.href=e.css,document.head.appendChild(t)}const n=document.querySelector(`script[src="${e.js}"]`);if(n){if(or(a))return;await new Promise(t=>{n.addEventListener("load",t,{once:!0}),n.addEventListener("error",t,{once:!0})});return}await new Promise((t,i)=>{const o=document.createElement("script");o.src=e.js,o.async=!1,o.addEventListener("load",t,{once:!0}),o.addEventListener("error",()=>i(new Error(`[useMapInstance] Failed to load ${a} engine script`)),{once:!0}),document.head.appendChild(o)})}async function ub(a,e){const n=a.getRootNode();if(!(n instanceof ShadowRoot))return;const t=r=>new Promise(l=>setTimeout(l,r)),i=n.querySelector(`link[href="${e}"]`);if(i){if(i.sheet)return;await Promise.race([new Promise(r=>{i.addEventListener("load",r,{once:!0}),i.addEventListener("error",r,{once:!0})}),t(2e3)]);return}const o=document.createElement("link");o.rel="stylesheet",o.href=e,await Promise.race([new Promise(r=>{o.addEventListener("load",r,{once:!0}),o.addEventListener("error",r,{once:!0}),n.prepend(o)}),t(2e3)])}function db(a,e){return typeof a=="string"&&/^https?:\/\//.test(a)?a:e==="night"||e==="dusk"?cb:sb}const pb=85.0511,rr=-2,mb=0,hb=-60;function Yc(a){return(1-Math.log(Math.tan(Math.PI/4+a*Math.PI/180/2))/Math.PI)/2}function yb(a,e,n,t){if(!a||a<=0||!e||e<=0)return mb;const i=Math.log2(a/512),o=Yc(t)-Yc(pb),r=Math.log2(e/(512*o)),l=Math.max(i,r);return Math.max(rr,Math.min(l,(n??18)-1))}function Ti({containerRef:a,accessToken:e,style:n,config:t=void 0,provider:i=void 0,center:o=[20,10],zoom:r=2,minZoom:l=void 0,skipWorldFloor:s=!1,maxZoom:g=18,pitch:d=0,bearing:_=0,renderWorldCopies:v=!0,showEdgeBorders:w=!0,southCutoff:H=hb,maxBounds:I=void 0}){const M=go(null),x=ua(!1);let A=null,$=null,S=null,j=null;try{j=Na("profileConfig",null)}catch{}i=i||rb(j);const b=i==="maplibre";async function C(){var X;const B=nb(n,i),ia=B.style||n;if(!a.value){console.error("containerRef.value is null — call initializeMap() inside onMounted()");return}await gb(i);const ga=or(i);if(!ga){console.error(`[useMapInstance] ${b?"maplibregl":"mapboxgl"} is not available. Add the ${b?"MapLibre":"Mapbox"} GL JS script to your page.`);return}if(!b){if(!e&&typeof window<"u"&&typeof window.MAP_TOKEN=="string"&&window.MAP_TOKEN&&(e=window.MAP_TOKEN),!e){console.error('No Mapbox access token provided. Pass "tk" in profile-config JSON or set window.MAP_TOKEN.');return}if(!e.startsWith("pk.")){console.error('Mapbox token looks invalid (expected "pk." prefix). Got:',e.slice(0,10)+"...");return}}await ub(a.value,b?Wn.maplibre.css:lb),await new Promise(c=>requestAnimationFrame(c));const na=a.value,ma=na.clientWidth,Sa=na.clientHeight;if(ma===0||Sa===0){console.error(`[useMapInstance] Container has ZERO dimensions (${ma}×${Sa}). Map will be invisible. Check that parent elements have CSS sizing.`);let c=na.parentElement,f=0;for(;c&&f<5;)c=c.parentElement,f++}const $a=e;b||(ga.accessToken=$a);const ha=()=>typeof window<"u"&&window.innerWidth>=1024,pa=(c,f)=>{if(s)return typeof l=="number"?l:rr;if(!ha())return rr;const O=yb(c,f,g,H);return typeof l=="number"?Math.max(l,O):O},Y=pa(na.clientWidth,na.clientHeight),L=B.lightPreset||(()=>{var c;try{const f=typeof t=="function"?t():t;return(c=f==null?void 0:f.basemap)==null?void 0:c.lightPreset}catch{return}})();if(b){M.value=new ga.Map({container:a.value,style:db(ia,L),center:o,zoom:r,minZoom:Y,maxZoom:g,pitch:d,bearing:_,dragRotate:!1,renderWorldCopies:v,...I?{maxBounds:I}:{},attributionControl:!0,logoPosition:typeof window<"u"&&window.matchMedia&&window.matchMedia("(max-width: 767px)").matches?"bottom-right":"bottom-left"}),Wc(M.value);try{a.value.__doxaMap=M.value}catch{}}else{const c=typeof t=="function"?t():t;M.value=new ga.Map({accessToken:$a,container:a.value,style:ia,...c?{config:c}:{},center:o,zoom:r,minZoom:Y,maxZoom:g,pitch:d,bearing:_,dragRotate:!1,touchPitch:!1,renderWorldCopies:v,...I?{maxBounds:I}:{},attributionControl:!0,logoPosition:typeof window<"u"&&window.matchMedia&&window.matchMedia("(max-width: 767px)").matches?"bottom-right":"bottom-left"}),Wc(M.value);try{a.value.__doxaMap=M.value}catch{}}try{let c=!1;M.value.on("error",f=>{var G,k;const O=((G=f==null?void 0:f.error)==null?void 0:G.status)??(f==null?void 0:f.status),u=String(((k=f==null?void 0:f.error)==null?void 0:k.url)||(f==null?void 0:f.sourceId)||"");O!==401&&O!==403||c||(c=!0,console.error(`[doxa-maps] Mapbox returned ${O} for a TILE request while the style loaded fine. That is a URL RESTRICTION on the access token, not a bad token and not a bug in this map. Add this page's origin (${typeof location<"u"?location.origin:"this origin"}) to the token's URL restrictions in the Mapbox account. The map will keep its data layer and stay blank underneath until then.`+(u?` First failing request: ${u.slice(0,120)}`:"")))})}catch{}try{M.value.touchZoomRotate.disableRotation()}catch{}S=ab(((X=a.value)==null?void 0:X.parentElement)||null,{enabled:w});let D=Y,la=null;A=()=>{const c=M.value;if(!c)return;const f=pa(na.clientWidth,na.clientHeight);f!==D&&(D=f,c.setMinZoom(f)),c.getZoom(){la=null;const O=M.value;if(!O)return;const u=pa(na.clientWidth,na.clientHeight);if(O.getZoom(){la&&(clearTimeout(la),la=null)},M.value.on("resize",A),typeof window<"u"&&(window.addEventListener("resize",A),window.addEventListener("orientationchange",A)),M.value.on("style.load",()=>{if(B.paint&&M.value){const c=tb(M.value,B.paint);console.info("[useMapInstance] style paint applied ("+i+"):",c.join(", ")||"NONE MATCHED")}requestAnimationFrame(()=>{var c;(c=M.value)==null||c.resize(),M.value&&M.value.setMinZoom(pa(na.clientWidth,na.clientHeight)),x.value=!0})})}function F(){if(M.value){if(A&&(M.value.off("resize",A),typeof window<"u"&&(window.removeEventListener("resize",A),window.removeEventListener("orientationchange",A)),A=null),$){try{$()}catch{}$=null}S&&(S(),S=null),M.value.remove(),M.value=null,x.value=!1}}return{map:M,isMapReady:x,initializeMap:C,destroy:F}}const bb={key:0,class:"cpt-mc-ctl"},_b={class:"cpt-mc-seg",role:"group","aria-label":"Green color encoding"},fb={key:1,class:"cpt-mc-headline"},Pb={key:2,class:"cpt-mc-loading"},Cb={key:0},kb={key:1},jb=["innerHTML"],lr="cpt-red-src",sr="cpt-green-src",Ni="cpt-arc-src",yn="cpt-red",Jc="cpt-red-lbl",tn="cpt-green",Zc="cpt-green-lbl",Li="cpt-arc-solid",Ri="cpt-arc-dash",Fi="cpt-arc-dot",wt="cpt-prov",Gb={__name:"MapCell",setup(a){const e=xi(),n=Na("profileConfig"),t=Na("mapboxToken"),i=ra(()=>(n==null?void 0:n.value)||{}),o=ra(()=>!(t!=null&&t.value||i.value.tk)),r=ua(null),l=ua(null),s=ua(!1),g=ua({show:!1,pinned:!1,x:0,y:0,html:""}),d=ta.GREEN_BINS[3],{map:_,initializeMap:v,destroy:w}=Ti({containerRef:l,accessToken:(t==null?void 0:t.value)||i.value.tk||"",style:i.value.style??"mapbox://styles/mapbox/light-v11",center:i.value.center??[55,22],zoom:i.value.zoom??1.7,minZoom:i.value.minZoom??1,maxZoom:i.value.maxZoom??12}),H=ra(()=>{const c=[...new Set(e.visibleSenders.value.map(O=>O.religionFamily).filter(Boolean))].sort(),f={};return c.forEach((O,u)=>{f[O]=ta.CAT[u%ta.CAT.length]}),f}),I=c=>({type:"FeatureCollection",features:c});function M(c,f,O=48){const u=Math.PI/180,G=180/Math.PI,k=c[1]*u,T=c[0]*u,R=f[1]*u,J=f[0]*u,y=(R-k)/2,E=(J-T)/2,h=Math.sin(y)**2+Math.cos(k)*Math.cos(R)*Math.sin(E)**2,N=2*Math.asin(Math.min(1,Math.sqrt(h)));if(!N)return[c,f];const z=[];for(let V=0;V<=O;V++){const oa=V/O,ea=Math.sin((1-oa)*N)/Math.sin(N),p=Math.sin(oa*N)/Math.sin(N),m=ea*Math.cos(k)*Math.cos(T)+p*Math.cos(R)*Math.cos(J),K=ea*Math.cos(k)*Math.sin(T)+p*Math.cos(R)*Math.sin(J),q=ea*Math.sin(k)+p*Math.sin(R);z.push([Math.atan2(K,m)*G,Math.atan2(q,Math.sqrt(m*m+K*K))*G])}return z}function x(){const c=[];for(const f of e.clusters.value)!isFinite(f.lat)||!isFinite(f.lng)||c.push({type:"Feature",geometry:{type:"Point",coordinates:[f.lng,f.lat]},properties:{id:f.id,count:f.count,hasSenders:!!f.hasSenders,senderCount:f.senderCount||0,color:$t(f.count),r:Math.min(34,6+Math.sqrt(Math.max(0,f.count))*2.4),label:f.country+" ("+f.count+")",country:f.country,langs:(f.target_top_langs||[]).slice(0,3).join(", ")}});return I(c)}function A(){const c=[],f=e.colorBy.value==="religion";for(const O of e.mapNodes.value){if(!isFinite(O.lng)||!isFinite(O.lat))continue;let u,G,k,T,R;if(O.isPool){const J=O.members||[],y=J.length?J.reduce((h,N)=>h+(N.pct||0),0)/J.length:0,E=J.reduce((h,N)=>h+(N.pop||0),0);u=Vn(y),G=Mt(E,7,26),k="",T=hn(E),R=""}else u=f?H.value[O.religionFamily]||ta.GREEN_BINS[2]:O.color||Vn(O.pct),G=Mt(O.pop),k=Math.round(O.pct)+"%",T=hn(O.pop),R=O.religionFamily||"";c.push({type:"Feature",geometry:{type:"Point",coordinates:[O.lng,O.lat]},properties:{id:O.id,name:O.name,label:O.name,color:u,r:G,isPool:!!O.isPool,country:O.country||"",lang:O.lang||"",pct:k,pop:T,religion:R,bridge:O.bridge||""}})}return I(c)}function $(){const c=e.focusedTarget.value;if(!c||!isFinite(c.lat)||!isFinite(c.lng))return I([]);const f=[c.lng,c.lat],O=[];for(const u of e.mapNodes.value){if(!isFinite(u.lng)||!isFinite(u.lat))continue;const G=u.isPool?"same-country":u.bridge||"same-country";O.push({type:"Feature",geometry:{type:"LineString",coordinates:M([u.lng,u.lat],f)},properties:{bridge:G}})}return I(O)}function S(c,f,O){const u=c.getSource(f);u?u.setData(O):c.addSource(f,{type:"geojson",data:O})}function j(c){const O=(c.getStyle&&c.getStyle().layers||[]).find(u=>u.type==="symbol");return O?O.id:void 0}function b(c){c.getLayer(Li)||c.addLayer({id:Li,type:"line",source:Ni,filter:["==",["get","bridge"],"same-language"],layout:{"line-cap":"round"},paint:{"line-color":ta.NAVY,"line-width":1.4,"line-opacity":.6}}),c.getLayer(Ri)||c.addLayer({id:Ri,type:"line",source:Ni,filter:["==",["get","bridge"],"related-cluster"],layout:{"line-cap":"butt"},paint:{"line-color":ta.NAVY,"line-width":1.4,"line-opacity":.6,"line-dasharray":[4,3]}}),c.getLayer(Fi)||c.addLayer({id:Fi,type:"line",source:Ni,filter:["all",["!=",["get","bridge"],"same-language"],["!=",["get","bridge"],"related-cluster"]],layout:{"line-cap":"round"},paint:{"line-color":ta.NAVY,"line-width":1.6,"line-opacity":.6,"line-dasharray":[1,3]}}),c.getLayer(tn)||c.addLayer({id:tn,type:"circle",source:sr,paint:{"circle-color":["get","color"],"circle-radius":["max",2,["*",["get","r"],.55]],"circle-stroke-width":["case",["get","isPool"],2.5,.8],"circle-stroke-color":["case",["get","isPool"],ta.GOLD,"#ffffff"],"circle-opacity":.92,"circle-opacity-transition":{duration:350}}}),c.getLayer(Zc)||c.addLayer({id:Zc,type:"symbol",source:sr,minzoom:3.4,layout:{"text-field":["get","label"],"text-size":10,"text-offset":[0,1.1],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":"#0b5e33","text-halo-color":"#ffffff","text-halo-width":1.3}}),c.getLayer(yn)||c.addLayer({id:yn,type:"circle",source:lr,paint:{"circle-color":["get","color"],"circle-radius":["get","r"],"circle-opacity":.82,"circle-stroke-width":2,"circle-stroke-color":d,"circle-opacity-transition":{duration:300}}}),c.getLayer(Jc)||c.addLayer({id:Jc,type:"symbol",source:lr,minzoom:2.4,layout:{"text-field":["get","label"],"text-size":11,"text-offset":[0,1.2],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":ta.RED_DK,"text-halo-color":"#ffffff","text-halo-width":1.4}})}function C(c){if(!c.getLayer(yn))return;const f=e.focusedTargetId.value;c.setPaintProperty(yn,"circle-opacity",f?["case",["==",["get","id"],f],.95,.5]:["case",["get","hasSenders"],.82,.14]),c.setPaintProperty(yn,"circle-stroke-color",f?["case",["==",["get","id"],f],ta.GOLD,["case",["get","hasSenders"],d,ta.RED_DK]]:["case",["get","hasSenders"],d,ta.RED_DK]),c.setPaintProperty(yn,"circle-stroke-width",f?["case",["==",["get","id"],f],4,["case",["get","hasSenders"],2.4,1.6]]:["case",["get","hasSenders"],2.4,1.6])}function F(c,f){if(f)if(c.getLayer(wt))try{c.setLayoutProperty(wt,"visibility","visible")}catch{}else try{const O=c.getLayer(Li)?Li:j(c);c.addLayer({id:wt,type:"line",source:"composite","source-layer":"admin",filter:["all",["==",["get","admin_level"],1],["==",["get","maritime"],"false"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":ta.NAVY,"line-width":.7,"line-opacity":.45,"line-dasharray":[2,2]}},O)}catch{}else if(c.getLayer(wt))try{c.setLayoutProperty(wt,"visibility","none")}catch{}}function B(){var f;const c=_.value;!c||!((f=c.isStyleLoaded)!=null&&f.call(c))||(S(c,Ni,$()),S(c,sr,A()),S(c,lr,x()),b(c),C(c),Y(pa),F(c,e.provinceDrill.value),e.focusedTargetId.value?$a():ha())}function ia(){const c=_.value;if(!c)return;const f=e.focusedTarget.value;if(!f){try{c.stop(),c.easeTo({center:i.value.center??[55,22],zoom:i.value.zoom??1.7,duration:700})}catch{}return}const O=[];isFinite(f.lat)&&isFinite(f.lng)&&O.push([f.lng,f.lat]);for(const R of e.mapNodes.value)isFinite(R.lng)&&isFinite(R.lat)&&O.push([R.lng,R.lat]);if(!O.length)return;let u=O[0][0],G=O[0][0],k=O[0][1],T=O[0][1];for(const R of O)u=Math.min(u,R[0]),G=Math.max(G,R[0]),k=Math.min(k,R[1]),T=Math.max(T,R[1]);try{c.stop(),u===G&&k===T?c.easeTo({center:[u,k],zoom:4.5,duration:800}):c.fitBounds([[u,k],[G,T]],{padding:80,maxZoom:6,duration:800})}catch{}}const ga=[[0,4,3],[.5,4,2.5],[1,4,2],[1.5,4,1.5],[2,4,1],[2.5,4,.5],[3,4,0],[0,.5,4,2.5],[0,1,4,2],[0,1.5,4,1.5],[0,2,4,1],[0,2.5,4,.5]],na=[[1,3],[0,.75,1,2.25],[0,1.5,1,1.5],[0,2.25,1,.75]];let ma=null,Sa=0;function $a(){ma||(ma=setInterval(()=>{const c=_.value;if(c){Sa++;try{c.getLayer(Ri)&&c.setPaintProperty(Ri,"line-dasharray",ga[Sa%ga.length]),c.getLayer(Fi)&&c.setPaintProperty(Fi,"line-dasharray",na[Sa%na.length])}catch{}}},80))}function ha(){ma&&(clearInterval(ma),ma=null)}let pa=null;function Y(c){pa=c;const f=_.value;!f||!f.getLayer(tn)||(f.setPaintProperty(tn,"circle-stroke-width",c?["case",["==",["get","id"],c],4,["case",["get","isPool"],2.5,1.2]]:["case",["get","isPool"],2.5,1.2]),f.setPaintProperty(tn,"circle-stroke-color",c?["case",["==",["get","id"],c],ta.GOLD,["case",["get","isPool"],ta.GOLD,"#ffffff"]]:["case",["get","isPool"],ta.GOLD,"#ffffff"]))}function L(c){return String(c??"").replace(/[&<>"']/g,f=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[f])}function D(c){g.value.show&&!g.value.pinned&&(g.value.x=c.clientX,g.value.y=c.clientY)}function la(c){return""+L(c.country)+'
'+L(c.count)+" unreached groups
"+(c.langs?'
langs '+L(c.langs)+"
":"")+'
senders '+(c.hasSenders?L(c.senderCount)+" reached nearby":"frontier — 0 (pray for laborers)")+'
click → SEND view
'}function X(c){return c.isPool?""+L(c.name)+'
same-country reached pool
pop '+L(c.pop)+'
spiderfies in the list
':""+L(c.name)+'
'+L(c.country)+" · "+L(c.lang)+'
reached '+L(c.pct)+' Christian
pop '+L(c.pop)+"
"+(c.bridge?'
bridge '+L(c.bridge)+"
":"")+(c.religion?'
religion '+L(c.religion)+"
":"")+'
click → pin · highlights the list
'}return ve(async()=>{var u,G,k,T,R,J;await v();const c=_.value;if(!c)return;try{c.setProjection("mercator")}catch{}if(i.value.debugExpose&&typeof window<"u")try{(((k=(G=(u=r.value)==null?void 0:u.getRootNode)==null?void 0:G.call(u))==null?void 0:k.host)||window).__cockpitmap=c}catch{}const f=(y,E)=>{c.on("mouseenter",y,()=>{c.getCanvas().style.cursor="pointer"}),c.on("mouseleave",y,()=>{c.getCanvas().style.cursor="",g.value.pinned||(g.value={...g.value,show:!1})}),c.on("mousemove",y,h=>{var z;const N=(z=h.features)==null?void 0:z[0];N&&(g.value={show:!0,x:h.originalEvent.clientX,y:h.originalEvent.clientY,html:E(N.properties)})})},O=()=>{B(),c.on("click",yn,y=>{var h;const E=(h=y.features)==null?void 0:h[0];E&&(g.value={...g.value,show:!1,pinned:!1},e.selectTarget(E.properties.id))}),f(yn,la),f(tn,X),c.on("mousemove",tn,y=>{var h;const E=(h=y.features)==null?void 0:h[0];if(E){Y(E.properties.id);try{e.setHover&&e.setHover(E.properties.id)}catch{}}}),c.on("mouseleave",tn,()=>{Y(null);try{e.setHover&&e.setHover(null)}catch{}}),c.on("click",tn,y=>{var N;const E=(N=y.features)==null?void 0:N[0];if(!E)return;const h=y.originalEvent||{};g.value={show:!0,pinned:!0,x:h.clientX||g.value.x,y:h.clientY||g.value.y,html:X(E.properties)};try{e.setHover&&e.setHover(E.properties.id)}catch{}try{c.stop(),c.easeTo({center:E.geometry.coordinates,zoom:Math.max(c.getZoom(),4.5),duration:700})}catch{}}),s.value=!0,e.focusedTargetId.value&&ia()};(T=c.isStyleLoaded)!=null&&T.call(c)?O():(R=c.once)==null||R.call(c,"load",O),(J=c.once)==null||J.call(c,"idle",()=>{s.value&&B()})}),re(()=>[e.ready.value,e.clusters.value,e.mapNodes.value,e.colorBy.value,e.provinceDrill.value],()=>B()),re(()=>e.focusedTargetId.value,()=>{B(),ia()}),re(()=>e.mode.value,()=>{Ln(()=>{var c;try{(c=_.value)==null||c.resize()}catch{}})}),e.hoveredId&&re(()=>e.hoveredId.value,c=>Y(c)),sn(()=>{ha(),w()}),$e(` + .cpt-mc-root { position:absolute; inset:0; overflow:hidden; background:#eef2f7; isolation:isolate; + font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } + .cpt-mc-map { position:absolute; inset:0; } + .cpt-mc-loading { position:absolute; inset:0; z-index:5; display:flex; align-items:center; justify-content:center; + background:#eef2f7; color:${ta.NAVY}; font:600 12px/1.5 ui-monospace,monospace; text-align:center; padding:18px; } + + /* on-map control cluster (top-left) — color-by + province drill + reset */ + .cpt-mc-ctl { position:absolute; top:8px; left:8px; z-index:30; display:flex; flex-direction:column; gap:6px; align-items:flex-start; } + .cpt-mc-seg { display:inline-flex; background:rgba(255,255,255,.95); border:1px solid #cbd5e1; border-radius:999px; padding:2px; gap:2px; box-shadow:0 2px 8px rgba(0,0,0,.14); } + .cpt-mc-seg button { border:0; background:transparent; color:#475569; cursor:pointer; font:700 10px/1 ui-monospace,monospace; padding:5px 9px; border-radius:999px; } + .cpt-mc-seg button.on { background:${ta.NAVY}; color:#fff; } + .cpt-mc-btn { border:1px solid #cbd5e1; background:rgba(255,255,255,.95); color:${ta.NAVY}; cursor:pointer; + font:700 10px/1 ui-monospace,monospace; padding:6px 10px; border-radius:8px; box-shadow:0 2px 8px rgba(0,0,0,.14); } + .cpt-mc-btn.on { background:${ta.NAVY}; color:#fff; border-color:${ta.NAVY}; } + .cpt-mc-btn.gold { background:${ta.GOLD}; color:#3a2600; border-color:${ta.GOLD}; } + + /* SEND headline (bottom-left) when a target is focused */ + .cpt-mc-headline { position:absolute; left:8px; bottom:8px; right:8px; z-index:28; pointer-events:none; + background:rgba(0,46,110,.92); color:#fff; border-radius:9px; padding:7px 11px; max-width:560px; + font:700 12px/1.35 -apple-system,sans-serif; box-shadow:0 4px 14px rgba(0,0,0,.28); } + + /* hover-pin tooltip */ + .cpt-mc-tip { position:fixed; z-index:60; pointer-events:none; max-width:250px; background:#0e1730; + border:1px solid #34508c; border-radius:9px; padding:9px 11px; box-shadow:0 6px 22px rgba(0,0,0,.5); font-size:11.5px; color:#dbe4f3; } + .cpt-mc-tip strong { font-size:13px; color:#fff; } + .cpt-mc-tsub { color:#fda4af; font:600 10px/1.3 ui-monospace,monospace; margin:2px 0 6px; } + .cpt-mc-trow { display:flex; gap:6px; line-height:1.5; } + .cpt-mc-tk { color:#7e90b6; min-width:62px; } + + @media (max-width:560px){ .cpt-mc-headline{ font-size:11px; } } +`,"cockpit-mapcell"),(c,f)=>(W(),Z("div",{ref_key:"mcRoot",ref:r,class:"cpt-mc-root",onMousemove:D},[P("div",{ref_key:"mapContainer",ref:l,class:"cpt-mc-map"},null,512),s.value?(W(),Z("div",bb,[P("div",_b,[P("button",{class:Ma({on:ya(e).colorBy.value==="pct"}),onClick:f[0]||(f[0]=O=>ya(e).setColorBy("pct"))},"% reached",2),P("button",{class:Ma({on:ya(e).colorBy.value==="religion"}),onClick:f[1]||(f[1]=O=>ya(e).setColorBy("religion"))},"religion",2)]),P("button",{class:Ma(["cpt-mc-btn",{on:ya(e).provinceDrill.value}]),onClick:f[2]||(f[2]=O=>ya(e).toggleProvince()),title:"Overlay IN/CN admin-1 boundaries"},"IN/CN provinces",2),ya(e).focusedTarget.value?(W(),Z("button",{key:0,class:"cpt-mc-btn gold",onClick:f[3]||(f[3]=O=>ya(e).clearFocus())},"✕ reset focus")):fa("",!0)])):fa("",!0),s.value&&ya(e).focusedTarget.value?(W(),Z("div",fb,aa(ya(e).headline.value),1)):fa("",!0),s.value?fa("",!0):(W(),Z("div",Pb,[o.value?(W(),Z("span",Cb,"Map needs a Mapbox token (tk in profile-config)…")):(W(),Z("span",kb,"Rendering the harvest field…"))])),g.value.show?(W(),Z("div",{key:3,class:"cpt-mc-tip",style:Oa({left:g.value.x+14+"px",top:g.value.y+14+"px"}),innerHTML:g.value.html},null,12,jb)):fa("",!0)],544))}},vb={class:"cf-bar"},Ab={key:0,class:"cf-meta"},Sb={class:"cf-stage"},Eb={key:0,class:"cf-empty"},$b=["viewBox"],Mb={key:0},wb=["cx","cy","fill","opacity","transform"],Ib=["d","stroke-dasharray"],xb=["d"],Tb=["onClick","onMouseenter"],Nb=["cx","cy","r"],Lb=["x","y"],Rb=["cx","cy","r","fill"],Fb=["x","y"],Bb={class:"cf-center",style:{"pointer-events":"none"}},Kb=["cx","cy","r","fill"],Ob=["cx","cy","fill"],Ub=["x","y"],Db=["x","y"],Hb={key:2,class:"cf-rings"},zb=["innerHTML"],Yn=1e3,Vb=212,Wb=372,qc=48,Yb=8,Jb=16,Zb={__name:"FlowerCell",setup(a){const e=xi(),n=Yn/2,t=Yn/2,i=ua(e.mode.value==="flower"?1:0),o=ua(!1),r=ua(null),l=ua(""),s=ua({show:!1,x:0,y:0,html:""});function g(Y,L,D,la){const X=(la-90)*Math.PI/180;return[Y+D*Math.cos(X),L+D*Math.sin(X)]}function d(Y){return String(Y&&(Y.rol3||Y.lang)||"").trim().toLowerCase()}function _(Y){return String(Y??"").replace(/[&<>"']/g,L=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[L])}const v=ra(()=>{const Y=[...new Set(e.visibleSenders.value.map(D=>D.religionFamily||"Unknown"))].sort(),L={};return Y.forEach((D,la)=>{L[D]=ta.CAT[la%ta.CAT.length]}),L}),w=ra(()=>{const Y=e.focusedTarget.value;if(!Y)return null;const L=[...e.visibleSenders.value].sort((Pa,Fa)=>Fa.pct-Pa.pct||Fa.pop-Pa.pop),D=L.filter(Pa=>Pa.adjacency==="same-country"),la=L.filter(Pa=>Pa.adjacency!=="same-country"),X=o.value?D:D.slice(0,Yb),c=o.value?la:la.slice(0,Jb),f=D.length-X.length+(la.length-c.length),O=f>0&&!o.value,u=v.value,G=Pa=>e.colorBy.value==="religion"?u[Pa.religionFamily||"Unknown"]||ta.CAT[0]:Vn(Pa.pct),k=[],T=[];for(const Pa of X)k.push(Pa.lng),T.push(Pa.lat);for(const Pa of c)k.push(Pa.lng),T.push(Pa.lat);let R=Y.lng,J=Y.lat;(!isFinite(R)||!isFinite(J))&&(R=k.length?k.reduce((Pa,Fa)=>Pa+Fa,0)/k.length:0,J=T.length?T.reduce((Pa,Fa)=>Pa+Fa,0)/T.length:0),k.push(R),T.push(J);const y=Math.min(...k),E=Math.max(...k),h=Math.min(...T),N=Math.max(...T),z=Math.max(E-y,.01),V=Math.max(N-h,.01),oa=130;let ea=Math.min((Yn-oa*2)/z,(Yn-oa*2)/V);(!isFinite(ea)||ea<=0)&&(ea=1);const p=(y+E)/2,m=(h+N)/2,K=(Pa,Fa)=>[n+(Pa-p)*ea,t-(Fa-m)*ea],q=[],ca=c.map(Pa=>({kind:"node",s:Pa}));O&&ca.push({kind:"more"});const sa=X.length;X.forEach((Pa,Fa)=>{const Ka=sa?(Fa+.5)/sa*360:0,[ue,$n]=g(n,t,Vb,Ka),[me,Ft]=K(Pa.lng,Pa.lat);q.push({id:Pa.id,s:Pa,isMore:!1,ring:"inner",ang:Ka,r:Mt(Pa.pop,7,20),color:G(Pa),lang:d(Pa),fx:ue,fy:$n,gx:me,gy:Ft})});const U=ca.length,Q=U?180/U:0;ca.forEach((Pa,Fa)=>{const Ka=U?(Fa+.5)/U*360+Q:0,[ue,$n]=g(n,t,Wb,Ka);if(Pa.kind==="more"){const[me,Ft]=K(R,J);q.push({id:"__more__",isMore:!0,ring:"outer",ang:Ka,r:18,color:ta.NAVY,lang:"",fx:ue,fy:$n,gx:me,gy:Ft,hidden:f})}else{const me=Pa.s,[Ft,W5]=K(me.lng,me.lat);q.push({id:me.id,s:me,isMore:!1,ring:"outer",ang:Ka,r:Mt(me.pop,7,20),color:G(me),lang:d(me),fx:ue,fy:$n,gx:Ft,gy:W5})}});const[_a,va]=K(R,J),Ra={fx:n,fy:t,gx:_a,gy:va,country:Y.country,count:Y.count,color:$t(Y.count)},ae=new Map;for(const Pa of q){if(Pa.isMore||!Pa.lang)continue;let Fa=ae.get(Pa.lang);Fa||(Fa=[],ae.set(Pa.lang,Fa)),Fa.push(Pa)}const qa=[];for(const[Pa,Fa]of ae)if(!(Fa.length<2))for(let Ka=0;Ka{const Y={};if(w.value)for(const L of w.value.nodes)Y[L.id]=L;return Y});function I(Y){return!l.value||!Y.isMore&&Y.lang===l.value}function M(Y){return!l.value||Y.lang===l.value}function x(Y){return!Y.isMore&&e.facets.value.languages.has(Y.s.lang)}function A(Y){return Y.gx+(Y.fx-Y.gx)*i.value}function $(Y){return Y.gy+(Y.fy-Y.gy)*i.value}function S(){const Y=w.value.center;return Y.gx+(Y.fx-Y.gx)*i.value}function j(){const Y=w.value.center;return Y.gy+(Y.fy-Y.gy)*i.value}function b(Y){return"M "+S().toFixed(1)+" "+j().toFixed(1)+" L "+A(Y).toFixed(1)+" "+$(Y).toFixed(1)}function C(Y){const L=H.value[Y.from],D=H.value[Y.to];if(!L||!D)return"";const la=A(L),X=$(L),c=A(D),f=$(D),O=(la+c)/2,u=(X+f)/2,G=O+(n-O)*.45*i.value,k=u+(t-u)*.45*i.value;return"M "+la.toFixed(1)+" "+X.toFixed(1)+" Q "+G.toFixed(1)+" "+k.toFixed(1)+" "+c.toFixed(1)+" "+f.toFixed(1)}function F(Y){if(Y.isMore)return"4 6";const L=ir(Y.s.bridge);return L?L.map(D=>D*3).join(" "):"none"}function B(Y){return[A(Y),$(Y)]}function ia(Y,L){if(r.value=Y.id,l.value=Y.isMore?"":Y.lang,!Y.isMore)try{e.setHover&&e.setHover(Y.id)}catch{}if(Y.isMore){s.value={show:!0,x:L.clientX,y:L.clientY,html:"+"+Y.hidden+' more senders
click to bloom the full roster
'};return}const D=Y.s;s.value={show:!0,x:L.clientX,y:L.clientY,html:""+_(D.name)+'
'+_(D.country)+" · "+_(D.lang||"—")+'
reached '+Math.round(D.pct||0)+'% Christian
people '+hn(D.pop)+'
bridge '+_(D.bridge||"—")+'
near '+_(D.adjacency||"—")+"
"}}function ga(Y){s.value.show&&(s.value.x=Y.clientX,s.value.y=Y.clientY)}function na(){r.value=null,l.value="";try{e.setHover&&e.setHover(null)}catch{}s.value={...s.value,show:!1}}function ma(Y){if(Y.isMore){o.value=!0;return}e.toggleFacet("languages",Y.s.lang)}function Sa(){e.setMode(e.mode.value==="flower"?"map":"flower")}const $a=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;let ha=0;function pa(Y){if(cancelAnimationFrame(ha),$a||typeof requestAnimationFrame>"u"){i.value=Y;return}const L=i.value,D=performance.now(),la=720,X=f=>f<.5?2*f*f:1-Math.pow(-2*f+2,2)/2,c=f=>{const O=Math.min(1,(f-D)/la);i.value=L+(Y-L)*X(O),O<1&&(ha=requestAnimationFrame(c))};ha=requestAnimationFrame(c)}return re(()=>e.mode.value,Y=>pa(Y==="flower"?1:0)),re(()=>e.focusedTargetId.value,()=>{o.value=!1}),sn(()=>cancelAnimationFrame(ha)),$e(".cpt-flower{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 50% 44%, #16203a 0%, #0b1020 72%);color:#e5e7eb;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;}.cf-bar{position:absolute;top:10px;left:10px;right:10px;z-index:30;display:flex;gap:8px;align-items:center;flex-wrap:wrap;pointer-events:none;}.cf-bar > *{pointer-events:auto;}.cf-title{background:"+ta.NAVY+";color:#fff;font:700 11px/1 ui-monospace,monospace;letter-spacing:.07em;text-transform:uppercase;padding:8px 12px;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.4);}.cf-meta{font:600 11px/1.4 ui-monospace,monospace;color:#9fb3d9;background:rgba(8,12,24,.7);border:1px solid #1c2742;border-radius:8px;padding:6px 10px;}.cf-meta b{color:#fff;}.cf-bloom{margin-left:auto;background:#13224a;border:1px solid #3f7bd6;color:#fff;cursor:pointer;font:700 11px/1 ui-monospace,monospace;letter-spacing:.04em;padding:8px 13px;border-radius:8px;display:inline-flex;align-items:center;gap:7px;user-select:none;}.cf-bloom:hover{background:#1b2e5e;}.cf-bloom .cf-dot{width:8px;height:8px;border-radius:50%;background:"+ta.GOLD+";}.cf-stage{flex:1 1 0;position:relative;}.cf-svg{position:absolute;inset:0;width:100%;height:100%;display:block;}.cf-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;color:#7e90b6;font:600 12px/1.6 ui-monospace,monospace;padding:24px;}.cf-petal{transition:opacity .15s;}.cf-spoke{fill:none;stroke:"+ta.NAVY+";stroke-width:2;opacity:.45;transition:opacity .15s;}.cf-spoke.lit{opacity:.9;stroke-width:2.6;}.cf-spoke.dim{opacity:.06;}.cf-mesh{fill:none;stroke:"+ta.GOLD+";stroke-width:1.6;opacity:.5;stroke-linecap:round;transition:opacity .15s;}.cf-mesh.lit{opacity:.95;stroke-width:2.6;}.cf-mesh.dim{opacity:.05;}.cf-node{cursor:pointer;transition:opacity .15s;}.cf-node.dim{opacity:.2;}.cf-node circle{stroke:#0b1020;stroke-width:2;}.cf-node.hov circle{stroke:#fff;stroke-width:3;}.cf-node.fac circle{stroke:"+ta.GOLD+";stroke-width:3.5;}.cf-more circle{fill:"+ta.NAVY+";stroke:#3f7bd6;stroke-width:2;stroke-dasharray:4 4;}.cf-more text{fill:#cfe0ff;font:700 13px/1 ui-monospace,monospace;text-anchor:middle;}.cf-label{fill:#cdd9f2;font:600 12px/1 -apple-system,sans-serif;text-anchor:middle;paint-order:stroke;stroke:#0b1020;stroke-width:3px;pointer-events:none;}.cf-center-glow{opacity:.18;}.cf-center circle{stroke:#ffd9bd;stroke-width:3;}.cf-center-name{fill:#fff;font:800 18px/1 -apple-system,sans-serif;text-anchor:middle;paint-order:stroke;stroke:"+ta.RED_DK+";stroke-width:3px;}.cf-center-sub{fill:#ffe1cb;font:600 11px/1 ui-monospace,monospace;text-anchor:middle;}.cf-rings{position:absolute;left:10px;bottom:10px;z-index:25;background:rgba(8,12,24,.8);border:1px solid #1c2742;border-radius:8px;padding:7px 10px;font:600 10px/1.5 ui-monospace,monospace;color:#9fb3d9;}.cf-rings b{color:#dbe4f3;}.cf-tip{position:fixed;z-index:60;pointer-events:none;max-width:240px;background:#0e1730;border:1px solid #34508c;border-radius:9px;padding:9px 11px;box-shadow:0 6px 22px rgba(0,0,0,.55);font-size:11.5px;color:#dbe4f3;}.cf-tip strong{font-size:13px;color:#fff;}.cf-tip-sub{color:"+ta.GOLD+";font:600 10px/1.3 ui-monospace,monospace;margin:2px 0 6px;}.cf-tip-row{display:flex;gap:6px;line-height:1.5;}.cf-tip-k{color:#7e90b6;min-width:54px;}@media (max-width:720px){.cf-meta{display:none;}}","cockpit-flowercell"),(Y,L)=>(W(),Z("div",{class:"cpt-flower",onMousemove:ga},[P("div",vb,[L[1]||(L[1]=P("span",{class:"cf-title"},"Bloom",-1)),w.value?(W(),Z("span",Ab,[P("b",null,aa(w.value.center.country),1),ba(" · "+aa(w.value.center.count)+" unreached · ",1),P("b",null,aa(w.value.shown),1),ba("/"+aa(w.value.total)+" senders ",1)])):fa("",!0),P("button",{class:"cf-bloom",type:"button",onClick:Sa},[L[0]||(L[0]=P("span",{class:"cf-dot"},null,-1)),ba(aa(ya(e).mode.value==="flower"?"To map":"Bloom")+" ▸ ",1)])]),P("div",Sb,[w.value?(W(),Z("svg",{key:1,class:"cf-svg",viewBox:"0 0 "+Yn+" "+Yn,preserveAspectRatio:"xMidYMid meet"},[i.value>.05?(W(),Z("g",Mb,[(W(!0),Z(Aa,null,Da(w.value.nodes,D=>uu((W(),Z("ellipse",{key:"pt-"+D.id,class:"cf-petal",cx:B(D)[0],cy:B(D)[1],rx:"74",ry:"38",fill:D.color,opacity:.13*i.value,transform:"rotate("+D.ang+" "+B(D)[0]+" "+B(D)[1]+")"},null,8,wb)),[[jd,D.ring==="outer"&&!D.isMore]])),128))])):fa("",!0),P("g",null,[(W(!0),Z(Aa,null,Da(w.value.nodes,D=>(W(),Z("path",{key:"sp-"+D.id,class:Ma(["cf-spoke",{lit:l.value&&I(D),dim:l.value&&!I(D)}]),d:b(D),"stroke-dasharray":F(D)},null,10,Ib))),128))]),P("g",null,[(W(!0),Z(Aa,null,Da(w.value.mesh,D=>(W(),Z("path",{key:D.id,class:Ma(["cf-mesh",{lit:l.value&&M(D),dim:l.value&&!M(D)}]),d:C(D)},null,10,xb))),128))]),P("g",null,[(W(!0),Z(Aa,null,Da(w.value.nodes,D=>(W(),Z("g",{key:"nd-"+D.id,class:Ma(["cf-node",{dim:l.value&&!I(D),hov:r.value===D.id||ya(e).hoveredId.value===D.id,fac:x(D),"cf-more":D.isMore}]),onClick:Xe(la=>ma(D),["stop"]),onMouseenter:la=>ia(D,la),onMouseleave:na},[D.isMore?(W(),Z(Aa,{key:0},[P("circle",{cx:A(D),cy:$(D),r:D.r},null,8,Nb),P("text",{x:A(D),y:$(D)+4},"+"+aa(D.hidden),9,Lb)],64)):(W(),Z(Aa,{key:1},[P("circle",{cx:A(D),cy:$(D),r:D.r,fill:D.color},null,8,Rb),r.value===D.id||D.r>=12?(W(),Z("text",{key:0,class:"cf-label",x:A(D),y:$(D)+D.r+14},aa(D.s.name),9,Fb)):fa("",!0)],64))],42,Tb))),128))]),P("g",Bb,[P("circle",{class:"cf-center-glow",cx:S(),cy:j(),r:qc+26,fill:w.value.center.color},null,8,Kb),P("circle",{cx:S(),cy:j(),r:qc,fill:w.value.center.color},null,8,Ob),P("text",{class:"cf-center-name",x:S(),y:j()-1},aa(w.value.center.country),9,Ub),P("text",{class:"cf-center-sub",x:S(),y:j()+16},aa(w.value.center.count)+" unreached",9,Db)])],8,$b)):(W(),Z("div",Eb,[...L[2]||(L[2]=[ba(" Pick a red target on the map —",-1),P("br",null,null,-1),ba("its reached neighbors bloom here as a flower. ",-1)])])),w.value?(W(),Z("div",Hb,[L[3]||(L[3]=P("b",null,"inner",-1)),L[4]||(L[4]=ba(" same-country · ",-1)),L[5]||(L[5]=P("b",null,"petals",-1)),L[6]||(L[6]=ba(" cross-border",-1)),L[7]||(L[7]=P("br",null,null,-1)),L[8]||(L[8]=ba(" navy = SEND · ",-1)),P("span",{style:Oa({color:ya(ta).GOLD})},"gold",4),L[9]||(L[9]=ba(" = same-language mesh ",-1))])):fa("",!0)]),s.value.show?(W(),Z("div",{key:0,class:"cf-tip",style:Oa({left:s.value.x+14+"px",top:s.value.y+14+"px"}),innerHTML:s.value.html},null,12,zb)):fa("",!0)],32))}},qb={class:"cpt-list",style:{"container-type":"inline-size"}},Xb={class:"cpt-l-head"},Qb={class:"cpt-l-title"},a1={key:0,class:"cpt-l-sub"},e1={class:"cpt-l-badge"},n1={key:0,class:"cpt-l-hidden"},t1={key:1,class:"cpt-l-sorts"},i1=["onClick"],o1={key:0,class:"cpt-l-actions"},r1={class:"cpt-l-selall"},l1=["checked"],s1={key:0,class:"cpt-l-selcount"},c1=["disabled"],g1=["disabled"],u1=["data-sid","onMouseenter","onClick"],d1=["checked","onChange"],p1=["title"],m1={class:"cpt-l-body"},h1=["title"],y1={class:"cpt-l-meta"},b1={class:"cpt-l-lang"},_1={key:0,class:"cpt-l-rol3"},f1=["title"],P1=["title"],C1={class:"cpt-l-right"},k1={class:"cpt-l-pop"},j1=["onClick"],G1={key:0},v1={key:0},A1={key:1},S1={key:2,class:"cpt-l-empty"},E1={key:0,class:"sm"},$1={key:1,class:"sm"},M1={key:3,class:"cpt-l-empty"},w1={class:"sm"},I1={__name:"ListCell",setup(a){const e=xi(),n=ra(()=>e.listRows.value),t=ra(()=>e.focusedTarget.value),i=ra(()=>e.counts.value),o=ra(()=>e.sortKey.value),r=ra(()=>{const X=t.value;return X&&(X.target_top_langs&&X.target_top_langs.length?X.target_top_langs:X.langs||[])[0]||""}),l=ra(()=>{const X=t.value;if(!X)return"Pick a red target to build a send list";const c=n.value.length,f=r.value?" — they speak "+r.value:"";return"Send "+c.toLocaleString()+" reached neighbor"+(c===1?"":"s")+" INTO "+X.country+f}),s=ra(()=>t.value&&t.value.senderCount||0),g=ra(()=>i.value.hidden||0),d=[{key:"mobilization",label:"Mobilization"},{key:"pct",label:"%Christian"},{key:"pop",label:"Population"},{key:"bridge",label:"Bridge"},{key:"name",label:"Name"},{key:"frontier",label:"Frontier first"}];function _(X){e.setSort(X)}const v=ua(new Set);function w(X){const c=new Set(v.value);c.has(X)?c.delete(X):c.add(X),v.value=c,j.value=""}const H=ra(()=>n.value.filter(X=>v.value.has(X.id))),I=ra(()=>H.value.length),M=ra(()=>n.value.length>0&&n.value.every(X=>v.value.has(X.id)));function x(){v.value=M.value?new Set:new Set(n.value.map(X=>X.id)),j.value=""}function A(){v.value=new Set,j.value=""}const $=ra(()=>I.value?H.value:n.value);function S(){$.value.length&&(e.exportSelectionCSV($.value),j.value="CSV downloaded ("+$.value.length+")",C())}const j=ua("");let b=null;function C(){b&&clearTimeout(b),b=setTimeout(()=>{j.value=""},1900)}function F(X){const c=t.value,f="Send list — "+(c?c.country:"all targets")+(r.value?" ("+r.value+")":"")+" · "+X.length+" senders",O=X.map(u=>u.name+" · "+u.country+" · "+u.lang+(u.rol3?" ("+u.rol3+")":"")+" · "+Math.round(u.pct)+"% Christian · "+hn(u.pop)+" · "+u.bridge);return f+` +`+O.join(` +`)+` +`}function B(X){try{const c=document.createElement("textarea");c.value=X,c.style.position="fixed",c.style.opacity="0",c.style.top="0",document.body.appendChild(c),c.focus(),c.select();const f=document.execCommand&&document.execCommand("copy");return document.body.removeChild(c),!!f}catch{return!1}}async function ia(){const X=$.value;if(!X.length)return;const c=F(X);let f=!1;try{navigator.clipboard&&navigator.clipboard.writeText?(await navigator.clipboard.writeText(c),f=!0):f=B(c)}catch{f=B(c)}j.value=f?"Copied ("+X.length+")":"Copy failed — press Ctrl/Cmd-C",C()}function ga(X){typeof e.setHover=="function"&&e.setHover(X)}const na=ra(()=>e.hoveredSenderId&&typeof e.hoveredSenderId=="object"?e.hoveredSenderId.value:null),ma=ua(null);re(na,X=>{!X||!ma.value||Ln(()=>{const c=ma.value&&ma.value.querySelector('[data-sid="'+Sa(X)+'"]');c&&typeof c.scrollIntoView=="function"&&c.scrollIntoView({block:"nearest"})})});function Sa(X){return String(X).replace(/["\\]/g,"\\$&")}function $a(X){ga(na.value===X?null:X)}const ha=ua(null);function pa(X){ha.value=ha.value===X?null:X}function Y(X){return Vn(X)}function L(X){return tr[Ii(X)]}function D(X){const c=ir(X);return c===null?"solid":c[0]===4?"dashed":"dotted"}function la(X){return Math.round(+X||0)+"%"}return $e(` +.cpt-list{position:absolute;inset:0;display:flex;flex-direction:column;background:#ffffff; + color:${ta.NAVY};font:400 12px/1.4 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; + overflow:hidden} +.cpt-list *{box-sizing:border-box} + +/* header */ +.cpt-l-head{flex:0 0 auto;padding:8px 10px 6px;border-bottom:1px solid #e6eaf2;background:#fbfcfe} +.cpt-l-title{font-size:12.5px;font-weight:700;color:${ta.NAVY};line-height:1.35} +.cpt-l-sub{margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap; + font-size:10.5px;color:#5b6577} +.cpt-l-badge{display:inline-flex;align-items:center;gap:5px;font-weight:700;font-size:10px; + letter-spacing:.03em;text-transform:uppercase;color:${ta.NAVY}; + background:rgba(0,46,110,.08);border:1px solid rgba(0,46,110,.18); + padding:2px 7px;border-radius:999px} +.cpt-l-badge b{font-size:11px} +.cpt-l-hidden{color:#9aa3b2} + +/* sort row */ +.cpt-l-sorts{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px} +.cpt-l-sort{cursor:pointer;border:1px solid #d6dceb;background:#fff;color:#4a5468; + font:600 10px/1 ui-monospace,monospace;padding:5px 8px;border-radius:7px;white-space:nowrap} +.cpt-l-sort:hover{border-color:${ta.NAVY};color:${ta.NAVY}} +.cpt-l-sort.active{background:${ta.NAVY};border-color:${ta.NAVY};color:#fff} +.cpt-l-sort.frontier.active{background:${ta.GOLD};border-color:${ta.GOLD};color:#3a2a00} + +/* action bar */ +.cpt-l-actions{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap; + padding:6px 10px;border-bottom:1px solid #eef1f7;background:#fff} +.cpt-l-selall{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;color:#5b6577; + cursor:pointer;user-select:none} +.cpt-l-selcount{font-weight:700;color:${ta.NAVY}} +.cpt-l-btn{margin-left:0;cursor:pointer;border:1px solid #cdd5e6;background:#fff; + color:${ta.NAVY};font:600 11px/1 ui-monospace,monospace;padding:7px 10px;border-radius:8px} +.cpt-l-btn:hover{border-color:${ta.NAVY};background:rgba(0,46,110,.06)} +.cpt-l-btn:disabled{opacity:.45;cursor:not-allowed} +.cpt-l-btn.primary{background:${ta.NAVY};border-color:${ta.NAVY};color:#fff} +.cpt-l-btn.primary:hover{background:#013a8a} +.cpt-l-btn.ghost{color:#7b8498;border-color:#e0e5f0} +.cpt-l-spacer{flex:1 1 auto} +.cpt-l-flash{font-size:10px;color:#0f7a3d;min-height:12px;white-space:nowrap} +.cpt-l-flash.warn{color:${ta.RED}} + +/* rows */ +.cpt-l-rows{flex:1 1 auto;overflow:auto;padding:2px 0} +.cpt-l-row{display:grid;grid-template-columns:auto 12px 1fr auto;align-items:center;gap:8px; + padding:6px 10px;border-bottom:1px solid #f1f3f8;cursor:pointer;position:relative} +.cpt-l-row:hover,.cpt-l-row.hovered{background:rgba(245,158,11,.10)} +.cpt-l-row.hovered{box-shadow:inset 3px 0 0 0 ${ta.GOLD}} +.cpt-l-row.picked{background:rgba(0,46,110,.05)} +.cpt-l-chk{width:15px;height:15px;cursor:pointer;accent-color:${ta.NAVY};margin:0} +.cpt-l-swatch{width:12px;height:12px;border-radius:3px;border:1px solid rgba(0,0,0,.18)} +.cpt-l-body{min-width:0} +.cpt-l-name{font-weight:700;font-size:12px;color:${ta.NAVY}; + white-space:nowrap;overflow:hidden;text-overflow:ellipsis} +.cpt-l-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:2px; + font-size:10px;color:#6b7587} +.cpt-l-meta .sep{color:#c4ccda} +.cpt-l-lang{font-family:ui-monospace,monospace} +.cpt-l-rol3{color:#9aa3b2} +.cpt-l-right{display:flex;align-items:center;gap:8px;justify-self:end;white-space:nowrap} +.cpt-l-pct{font-weight:700;font-size:11.5px;font-family:ui-monospace,monospace} +.cpt-l-pop{font-size:10px;color:#6b7587;font-family:ui-monospace,monospace;min-width:34px;text-align:right} + +/* chips */ +.cpt-l-chip{display:inline-flex;align-items:center;gap:4px;font-size:9.5px; + padding:1px 6px;border-radius:999px;border:1px solid #dde3ef;color:#4a5468;background:#f7f9fc; + white-space:nowrap} +.cpt-l-chip.relig{border-color:#e3dcf0;background:#f6f3fc;color:#5b4a86} +.cpt-l-bridgeline{display:inline-block;width:14px;height:0; + border-top:2px solid ${ta.NAVY}} +.cpt-l-info{flex:0 0 auto;width:16px;height:16px;border-radius:50%;cursor:pointer; + border:1px solid #d6dceb;background:#fff;color:#7b8498;font:700 10px/14px ui-monospace,monospace; + text-align:center} +.cpt-l-info:hover,.cpt-l-info.on{border-color:${ta.NAVY};color:${ta.NAVY}} + +/* pinned tooltip */ +.cpt-l-tip{grid-column:1 / -1;margin-top:6px;padding:7px 9px;border-radius:8px; + background:${ta.NAVY};color:#eef3fb;font-size:10px;line-height:1.5} +.cpt-l-tip dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:2px 10px} +.cpt-l-tip dt{color:#9fb6db;font-weight:600} +.cpt-l-tip dd{margin:0;color:#eef3fb;word-break:break-word} + +/* empty / placeholder states */ +.cpt-l-empty{flex:1 1 auto;display:flex;flex-direction:column;align-items:center; + justify-content:center;gap:6px;text-align:center;color:#8a93a5;padding:24px} +.cpt-l-empty .big{font-size:13px;font-weight:700;color:${ta.NAVY}} +.cpt-l-empty .sm{font-size:11px} + +/* container-query polish for narrow frames */ +@container (max-width: 420px){ + .cpt-l-pop{display:none} + .cpt-l-meta .relig{display:none} +} +`,"cockpit-listcell"),(X,c)=>(W(),Z("div",qb,[P("div",Xb,[P("div",Qb,aa(l.value),1),t.value?(W(),Z("div",a1,[P("span",e1,[P("b",null,aa(s.value.toLocaleString()),1),c[3]||(c[3]=ba(" senders available ",-1))]),g.value?(W(),Z("span",n1,"· "+aa(g.value.toLocaleString())+" hidden by filters",1)):fa("",!0)])):fa("",!0),t.value?(W(),Z("div",t1,[(W(),Z(Aa,null,Da(d,f=>P("button",{key:f.key,class:Ma(["cpt-l-sort",{active:o.value===f.key,frontier:f.key==="frontier"}]),type:"button",onClick:O=>_(f.key)},aa(f.label),11,i1)),64))])):fa("",!0)]),t.value&&n.value.length?(W(),Z("div",o1,[P("label",r1,[P("input",{class:"cpt-l-chk",type:"checkbox",checked:M.value,onChange:x},null,40,l1),c[4]||(c[4]=ba(" Build send list ",-1)),I.value?(W(),Z("span",s1,"("+aa(I.value)+")",1)):fa("",!0)]),c[5]||(c[5]=P("span",{class:"cpt-l-spacer"},null,-1)),P("span",{class:Ma(["cpt-l-flash",{warn:j.value.indexOf("fail")!==-1}])},aa(j.value),3),I.value?(W(),Z("button",{key:0,class:"cpt-l-btn ghost",type:"button",onClick:A},"Clear")):fa("",!0),P("button",{class:"cpt-l-btn",type:"button",disabled:!$.value.length,onClick:ia},"Copy",8,c1),P("button",{class:"cpt-l-btn primary",type:"button",disabled:!$.value.length,onClick:S}," Export "+aa(I.value?"selection":"all")+" · CSV ",9,g1)])):fa("",!0),t.value&&n.value.length?(W(),Z("div",{key:1,class:"cpt-l-rows",ref_key:"rowsEl",ref:ma},[(W(!0),Z(Aa,null,Da(n.value,f=>(W(),Z("div",{key:f.id,class:Ma(["cpt-l-row",{hovered:na.value===f.id,picked:v.value.has(f.id)}]),"data-sid":f.id,onMouseenter:O=>ga(f.id),onMouseleave:c[2]||(c[2]=O=>ga(null)),onClick:O=>$a(f.id)},[P("input",{class:"cpt-l-chk",type:"checkbox",checked:v.value.has(f.id),onClick:c[0]||(c[0]=Xe(()=>{},["stop"])),onChange:O=>w(f.id)},null,40,d1),P("span",{class:"cpt-l-swatch",style:Oa({background:Y(f.pct)}),title:L(f.pct)},null,12,p1),P("div",m1,[P("div",{class:"cpt-l-name",title:f.name},aa(f.name),9,h1),P("div",y1,[P("span",null,aa(f.country),1),c[6]||(c[6]=P("span",{class:"sep"},"·",-1)),P("span",b1,[ba(aa(f.lang),1),f.rol3?(W(),Z("span",_1," ("+aa(f.rol3)+")",1)):fa("",!0)]),P("span",{class:"cpt-l-chip",title:"bridge: "+f.bridge},[P("span",{class:"cpt-l-bridgeline",style:Oa({borderTopStyle:D(f.bridge)})},null,4),ba(" "+aa(f.bridge),1)],8,f1),P("span",{class:"cpt-l-chip relig",title:f.religion_bg},aa(f.religionFamily),9,P1)])]),P("div",C1,[P("span",{class:"cpt-l-pct",style:Oa({color:Y(f.pct)})},aa(la(f.pct)),5),P("span",k1,aa(ya(hn)(f.pop)),1),P("button",{class:Ma(["cpt-l-info",{on:ha.value===f.id}]),type:"button",title:"Details",onClick:Xe(O=>pa(f.id),["stop"])},"i",10,j1)]),ha.value===f.id?(W(),Z("div",{key:0,class:"cpt-l-tip",onClick:c[1]||(c[1]=Xe(()=>{},["stop"]))},[P("dl",null,[c[7]||(c[7]=P("dt",null,"People group",-1)),P("dd",null,aa(f.name),1),c[8]||(c[8]=P("dt",null,"Country",-1)),P("dd",null,aa(f.country),1),c[9]||(c[9]=P("dt",null,"Language",-1)),P("dd",null,[ba(aa(f.lang),1),f.rol3?(W(),Z("span",G1," · "+aa(f.rol3),1)):fa("",!0)]),c[10]||(c[10]=P("dt",null,"%Christian",-1)),P("dd",null,aa(la(f.pct))+" · "+aa(L(f.pct)),1),c[11]||(c[11]=P("dt",null,"Population",-1)),P("dd",null,aa(ya(hn)(f.pop)),1),c[12]||(c[12]=P("dt",null,"Bridge",-1)),P("dd",null,aa(f.bridge),1),c[13]||(c[13]=P("dt",null,"Adjacency",-1)),P("dd",null,aa(f.adjacency),1),c[14]||(c[14]=P("dt",null,"Religion",-1)),P("dd",null,aa(f.religion_bg||f.religionFamily),1),f.code?(W(),Z("dt",v1,"Code")):fa("",!0),f.code?(W(),Z("dd",A1,aa(f.code),1)):fa("",!0)])])):fa("",!0)],42,u1))),128))],512)):t.value?(W(),Z("div",S1,[c[15]||(c[15]=P("div",{class:"big"},"No senders match the current filters",-1)),g.value?(W(),Z("div",E1,aa(g.value.toLocaleString())+" senders hidden — clear a facet to see them",1)):(W(),Z("div",$1,"This target has no reached neighbors in the baked set yet"))])):(W(),Z("div",M1,[c[16]||(c[16]=P("div",{class:"big"},"Pick a red target",-1)),P("div",w1,aa(i.value.clusters.toLocaleString())+" unreached clusters · "+aa(i.value.senders.toLocaleString())+" reached senders nearby",1),c[17]||(c[17]=P("div",{class:"sm"},"Tap a red bubble on the map to build its send list.",-1))]))]))}},x1={class:"cpt-cs"},T1={class:"cs-controls"},N1={class:"cs-searchwrap"},L1=["value"],R1={key:0,class:"cs-suggest",role:"listbox"},F1=["onMousedown"],B1={class:"cs-tag"},K1={class:"cs-lens"},O1=["value"],U1=["value"],D1={class:"cs-colorby",role:"group","aria-label":"Color reached senders by"},H1={class:"cs-grid"},z1={class:"cs-card"},V1=["viewBox"],W1=["onClick"],Y1=["x","y"],J1=["x","y","width","height"],Z1=["x","y"],q1={key:1,class:"cs-empty"},X1={class:"cs-card"},Q1=["viewBox"],a3=["onClick"],e3=["x","y"],n3=["x","y","width","height"],t3=["x","y"],i3={key:1,class:"cs-empty"},o3={class:"cs-card"},r3=["viewBox"],l3=["x2"],s3=["onClick"],c3=["x","y","width","height","fill"],g3=["x","y"],u3=["x","y"],d3={class:"cs-card"},p3={class:"cs-donutwrap"},m3={key:0,class:"cs-donut",viewBox:"0 0 160 160",preserveAspectRatio:"xMidYMid meet",role:"img","aria-label":"Donut by category"},h3=["d","fill","onClick"],y3={class:"cs-dctr",x:"80",y:"84","text-anchor":"middle"},b3={class:"cs-legend"},_3=["onClick"],f3={key:0,class:"cs-empty"},Xc=300,Jn=15,cr=5,Bi=94,P3=150,gr=230,C3=120,k3=10,It=96,ur=12,j3=80,G3=80,Zn=70,qn=42,v3={__name:"ChartStrip",setup(a){const e=xi(),n=ua(!1),t=[0,10,25,50,75],i=(j,b)=>{const C=String(j??"");return C.length>b?C.slice(0,b-1)+"…":C},o=ra(()=>e.chartData.value),r=ra(()=>e.colorBy.value==="religion"?"religions":"bridges"),l=ra(()=>{const j=new Map;for(const b of e.allSenders.value){const C=b.lang||"—";j.set(C,(j.get(C)||0)+1)}return[...j.entries()].map(([b,C])=>({lang:b,count:C})).sort((b,C)=>C.count-b.count)}),s=ra(()=>{const j=e.search.value.trim().toLowerCase();if(j.length<1)return[];const b=[];for(const C of e.allClusters.value)if(C.country.toLowerCase().includes(j)&&(b.push({type:"target",label:C.country+" · "+C.count+" unreached",value:C.id,targetId:C.id}),b.length>=6))break;for(const C of l.value)if(C.lang.toLowerCase().includes(j)&&(b.push({type:"lang",label:C.lang+" · "+C.count+" senders",value:C.lang}),b.length>=9))break;for(const C of e.allSenders.value)if(C.name.toLowerCase().includes(j)&&(b.push({type:"sender",label:C.name+" → "+C.country,value:C.name,targetId:C.targetId}),b.length>=13))break;return b.slice(0,11)});function g(j,b){const C=e.facets.value[b],F=C&&C.size>0;let B=1;for(const ia of j)ia.value>B&&(B=ia.value);return j.map((ia,ga)=>{const na=Math.max(2,ia.value/B*P3),ma=C?C.has(ia.key):!1;return{key:ia.key,label:ia.label,value:ia.value,y:ga*(Jn+cr),h:Jn,x:Bi,w:na,ty:ga*(Jn+cr)+Jn-4,vx:Bi+na+4,active:ma,dim:F&&!ma}})}const d=j=>Math.max(Jn,j.length*(Jn+cr)),_=ra(()=>g(o.value.languageBar,"languages")),v=ra(()=>g(o.value.countryBar,"countries")),w=ra(()=>{const j=o.value.reachedHist;let b=1;for(const na of j)na.value>b&&(b=na.value);const C=j.length,F=(gr-ur-8)/C,B=F*.7,ia=e.facets.value.reachedMin,ga=It-k3;return j.map((na,ma)=>{const Sa=na.value/b*ga,$a=ur+ma*F+(F-B)/2,ha=t[ma],pa=ia!=null&&ia===ha;return{key:ma,label:tr[ma],value:na.value,color:na.color,x:$a,w:B,y:It-Sa,h:Sa,cx:$a+B/2,min:ha,active:pa,dim:ia!=null&&ia!==ha&&ha>0}})});function H(j){j.min<=0||e.facets.value.reachedMin===j.min?e.setReachedMin(null):e.setReachedMin(j.min)}function I(j,b){const C=(ia,ga)=>j3+ia*Math.cos(ga),F=(ia,ga)=>G3+ia*Math.sin(ga),B=b-j>Math.PI?1:0;return"M"+C(Zn,j)+" "+F(Zn,j)+" A"+Zn+" "+Zn+" 0 "+B+" 1 "+C(Zn,b)+" "+F(Zn,b)+" L"+C(qn,b)+" "+F(qn,b)+" A"+qn+" "+qn+" 0 "+B+" 0 "+C(qn,j)+" "+F(qn,j)+" Z"}const M=ra(()=>{const j=o.value.donut,b=e.facets.value[r.value],C=b&&b.size>0;let F=0;for(const ia of j)F+=ia.value;F=F||1;let B=-Math.PI/2;return j.map(ia=>{let ga=ia.value/F*Math.PI*2;ga>=Math.PI*2&&(ga=Math.PI*2-1e-4);const na=B,ma=B+ga;B=ma;const Sa=b?b.has(ia.key):!1;return{key:ia.key,label:ia.label,value:ia.value,color:ia.color,path:I(na,ma),active:Sa,dim:C&&!Sa}})}),x=ra(()=>M.value.reduce((j,b)=>j+b.value,0));function A(j){e.setSearch(j.target.value),n.value=!0}function $(j){j.type==="target"?(e.selectTarget(j.targetId),e.setSearch("")):(j.type==="sender"&&j.targetId&&e.selectTarget(j.targetId),e.setSearch(j.value)),n.value=!1}function S(j){e.setLanguageLens(j.target.value||null)}return $e(` + .cpt-cs{position:absolute;inset:0;display:flex;flex-direction:column;overflow:auto; + background:#f8fafc;color:${ta.NAVY}; + font:600 11px/1.35 ui-monospace,SFMono-Regular,Menlo,monospace;} + + /* control bar */ + .cs-controls{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center; + gap:8px;padding:8px 10px;background:rgba(248,250,252,.96);border-bottom:1px solid #e2e8f0;} + .cs-searchwrap{position:relative;flex:1 1 180px;min-width:140px;} + .cs-search{width:100%;box-sizing:border-box;padding:6px 9px;border:1px solid #cbd5e1;border-radius:8px; + background:#fff;color:${ta.NAVY};font:600 11px/1.2 ui-monospace,monospace;outline:none;} + .cs-search:focus{border-color:${ta.NAVY};box-shadow:0 0 0 2px rgba(0,46,110,.12);} + .cs-suggest{position:absolute;left:0;right:0;top:calc(100% + 3px);z-index:60;margin:0;padding:4px; + list-style:none;background:#fff;border:1px solid #cbd5e1;border-radius:8px; + box-shadow:0 8px 22px rgba(0,0,0,.16);max-height:230px;overflow:auto;} + .cs-suggest li{display:flex;align-items:center;gap:6px;padding:5px 7px;border-radius:6px;cursor:pointer; + font:600 11px/1.25 ui-monospace,monospace;color:${ta.NAVY};} + .cs-suggest li:hover{background:#eef2f7;} + .cs-tag{flex:0 0 auto;font:700 8px/1 ui-monospace,monospace;letter-spacing:.5px;color:#fff; + padding:2px 4px;border-radius:4px;background:#94a3b8;} + .cs-suggest li.t-target .cs-tag{background:${ta.RED};} + .cs-suggest li.t-lang .cs-tag{background:${ta.GOLD};} + .cs-suggest li.t-sender .cs-tag{background:${ta.NAVY};} + + .cs-lens{display:inline-flex;align-items:center;gap:5px;font:700 10px/1 ui-monospace,monospace;color:#475569;} + .cs-lens select{padding:5px 6px;border:1px solid #cbd5e1;border-radius:7px;background:#fff; + color:${ta.NAVY};font:600 10px/1.1 ui-monospace,monospace;max-width:140px;} + .cs-colorby{display:inline-flex;align-items:center;gap:4px;font:700 10px/1 ui-monospace,monospace;color:#475569;} + .cs-colorby button{border:1px solid #cbd5e1;background:#fff;color:#475569;cursor:pointer; + font:700 10px/1 ui-monospace,monospace;padding:5px 8px;border-radius:7px;} + .cs-colorby button.on{background:${ta.NAVY};color:#fff;border-color:${ta.NAVY};} + + /* charts grid */ + .cs-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 10px 12px;} + @container (max-width:520px){ .cs-grid{grid-template-columns:1fr;} } + .cs-card{display:flex;flex-direction:column;min-width:0;background:#fff;border:1px solid #e2e8f0; + border-radius:10px;padding:7px 8px;} + .cs-card header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;} + .cs-card h4{margin:0;font:700 10px/1.2 ui-monospace,monospace;letter-spacing:.3px; + text-transform:uppercase;color:#475569;} + .cs-clr{border:0;background:transparent;color:${ta.RED};cursor:pointer; + font:700 9px/1 ui-monospace,monospace;padding:2px 4px;} + .cs-clr:hover{text-decoration:underline;} + .cs-svg{width:100%;height:auto;display:block;} + .cs-empty{margin:8px 0;color:#94a3b8;font:600 10px/1 ui-monospace,monospace;text-align:center;} + + /* horizontal bars */ + .cs-barrow{cursor:pointer;} + .cs-bar{fill:${ta.NAVY};transition:opacity .15s;} + .cs-bar--country{fill:#1f5fa8;} + .cs-barrow:hover .cs-bar{fill:${ta.GOLD};} + .cs-barrow.active .cs-bar{fill:${ta.GOLD};} + .cs-barrow.dim{opacity:.4;} + .cs-blabel{fill:#334155;font:600 9px/1 ui-monospace,monospace;} + .cs-bval{fill:#64748b;font:600 8.5px/1 ui-monospace,monospace;dominant-baseline:alphabetic;} + .cs-barrow.active .cs-blabel,.cs-barrow.active .cs-bval{fill:${ta.NAVY};} + + /* histogram */ + .cs-axis{stroke:#cbd5e1;stroke-width:1;} + .cs-histbar{cursor:pointer;transition:opacity .15s;} + .cs-histbar rect{stroke:#fff;stroke-width:.5;} + .cs-histbar:hover rect{stroke:${ta.NAVY};stroke-width:1.5;} + .cs-histbar.active rect{stroke:${ta.GOLD};stroke-width:2;} + .cs-histbar.dim{opacity:.4;} + .cs-hval{fill:#334155;font:700 8px/1 ui-monospace,monospace;} + .cs-hlabel{fill:#64748b;font:600 6.5px/1 ui-monospace,monospace;} + + /* donut */ + .cs-donutwrap{display:flex;align-items:center;gap:8px;} + .cs-donut{flex:0 0 96px;width:96px;height:96px;} + .cs-arc{cursor:pointer;stroke:#fff;stroke-width:1;transition:opacity .15s;} + .cs-arc:hover{stroke:${ta.NAVY};stroke-width:1.5;} + .cs-arc.active{stroke:${ta.GOLD};stroke-width:2.5;} + .cs-arc.dim{opacity:.4;} + .cs-dctr{fill:${ta.NAVY};font:700 16px/1 ui-monospace,monospace;} + .cs-legend{flex:1 1 auto;margin:0;padding:0;list-style:none;max-height:104px;overflow:auto;min-width:0;} + .cs-legend li{display:flex;align-items:center;gap:5px;padding:2px 2px;cursor:pointer;border-radius:4px; + font:600 9.5px/1.3 ui-monospace,monospace;color:#334155;white-space:nowrap;overflow:hidden;} + .cs-legend li:hover{background:#eef2f7;} + .cs-legend li.active{color:${ta.NAVY};font-weight:800;} + .cs-legend li.dim{opacity:.45;} + .cs-legend li i{flex:0 0 auto;width:10px;height:10px;border-radius:3px;border:1px solid rgba(0,0,0,.12);} + .cs-legend li b{margin-left:auto;color:#64748b;} +`,"chartstrip"),(j,b)=>(W(),Z("div",x1,[P("div",T1,[P("div",N1,[P("input",{class:"cs-search",type:"search",value:ya(e).search.value,onInput:A,onFocus:b[0]||(b[0]=C=>n.value=!0),onBlur:b[1]||(b[1]=C=>n.value=!1),placeholder:"Search target / language / sender…","aria-label":"Search and brush"},null,40,L1),n.value&&s.value.length?(W(),Z("ul",R1,[(W(!0),Z(Aa,null,Da(s.value,(C,F)=>(W(),Z("li",{key:F,class:Ma("t-"+C.type),role:"option",onMousedown:Xe(B=>$(C),["prevent"])},[P("span",B1,aa(C.type==="target"?"RED":C.type==="lang"?"LANG":"SEND"),1),ba(" "+aa(C.label),1)],42,F1))),128))])):fa("",!0)]),P("label",K1,[b[9]||(b[9]=P("span",null,"Lens",-1)),P("select",{value:ya(e).languageLens.value||"",onChange:S,"aria-label":"Language lens"},[b[8]||(b[8]=P("option",{value:""},"— no lens —",-1)),(W(!0),Z(Aa,null,Da(l.value.slice(0,40),C=>(W(),Z("option",{key:C.lang,value:C.lang},aa(C.lang)+" ("+aa(C.count)+") ",9,U1))),128))],40,O1)]),P("div",D1,[b[10]||(b[10]=P("span",null,"Color",-1)),P("button",{class:Ma({on:ya(e).colorBy.value==="pct"}),onClick:b[2]||(b[2]=C=>ya(e).setColorBy("pct"))},"% reached",2),P("button",{class:Ma({on:ya(e).colorBy.value==="religion"}),onClick:b[3]||(b[3]=C=>ya(e).setColorBy("religion"))},"religion",2)])]),P("div",H1,[P("section",z1,[P("header",null,[b[11]||(b[11]=P("h4",null,"Sender language",-1)),ya(e).facets.value.languages.size?(W(),Z("button",{key:0,class:"cs-clr",onClick:b[4]||(b[4]=C=>ya(e).facets.value.languages.forEach(F=>ya(e).toggleFacet("languages",F)))},"clear")):fa("",!0)]),_.value.length?(W(),Z("svg",{key:0,class:"cs-svg",viewBox:"0 0 "+Xc+" "+d(o.value.languageBar),preserveAspectRatio:"xMinYMin meet",role:"img","aria-label":"Senders by language"},[(W(!0),Z(Aa,null,Da(_.value,C=>(W(),Z("g",{key:C.key,class:Ma(["cs-barrow",{active:C.active,dim:C.dim}]),onClick:F=>ya(e).toggleFacet("languages",C.key)},[P("text",{class:"cs-blabel",x:Bi-4,y:C.ty,"text-anchor":"end"},aa(i(C.label,13)),9,Y1),P("rect",{class:"cs-bar",x:C.x,y:C.y,width:C.w,height:C.h},null,8,J1),P("text",{class:"cs-bval",x:C.vx,y:C.ty},aa(C.value),9,Z1)],10,W1))),128))],8,V1)):(W(),Z("p",q1,"no senders"))]),P("section",X1,[P("header",null,[b[12]||(b[12]=P("h4",null,"Sender country",-1)),ya(e).facets.value.countries.size?(W(),Z("button",{key:0,class:"cs-clr",onClick:b[5]||(b[5]=C=>ya(e).facets.value.countries.forEach(F=>ya(e).toggleFacet("countries",F)))},"clear")):fa("",!0)]),v.value.length?(W(),Z("svg",{key:0,class:"cs-svg",viewBox:"0 0 "+Xc+" "+d(o.value.countryBar),preserveAspectRatio:"xMinYMin meet",role:"img","aria-label":"Senders by country"},[(W(!0),Z(Aa,null,Da(v.value,C=>(W(),Z("g",{key:C.key,class:Ma(["cs-barrow cs-barrow--country",{active:C.active,dim:C.dim}]),onClick:F=>ya(e).toggleFacet("countries",C.key)},[P("text",{class:"cs-blabel",x:Bi-4,y:C.ty,"text-anchor":"end"},aa(i(C.label,13)),9,e3),P("rect",{class:"cs-bar cs-bar--country",x:C.x,y:C.y,width:C.w,height:C.h},null,8,n3),P("text",{class:"cs-bval",x:C.vx,y:C.ty},aa(C.value),9,t3)],10,a3))),128))],8,Q1)):(W(),Z("p",i3,"no senders"))]),P("section",o3,[P("header",null,[b[13]||(b[13]=P("h4",null,"% reached (quantile)",-1)),ya(e).facets.value.reachedMin!=null?(W(),Z("button",{key:0,class:"cs-clr",onClick:b[6]||(b[6]=C=>ya(e).setReachedMin(null))},"clear")):fa("",!0)]),(W(),Z("svg",{class:"cs-svg",viewBox:"0 0 "+gr+" "+C3,preserveAspectRatio:"xMidYMid meet",role:"img","aria-label":"Reached percent histogram"},[P("line",{class:"cs-axis",x1:ur,y1:It,x2:gr-4,y2:It},null,8,l3),(W(!0),Z(Aa,null,Da(w.value,C=>(W(),Z("g",{key:C.key,class:Ma(["cs-histbar",{active:C.active,dim:C.dim}]),onClick:F=>H(C)},[P("rect",{x:C.x,y:C.y,width:C.w,height:C.h,fill:C.color},null,8,c3),P("text",{class:"cs-hval",x:C.cx,y:C.y-3,"text-anchor":"middle"},aa(C.value),9,g3),P("text",{class:"cs-hlabel",x:C.cx,y:It+12,"text-anchor":"middle"},aa(C.label),9,u3)],10,s3))),128))],8,r3))]),P("section",d3,[P("header",null,[P("h4",null,aa(ya(e).colorBy.value==="religion"?"Religion family":"Bridge type"),1),ya(e).facets.value[r.value].size?(W(),Z("button",{key:0,class:"cs-clr",onClick:b[7]||(b[7]=C=>ya(e).facets.value[r.value].forEach(F=>ya(e).toggleFacet(r.value,F)))},"clear")):fa("",!0)]),P("div",p3,[x.value?(W(),Z("svg",m3,[(W(!0),Z(Aa,null,Da(M.value,C=>(W(),Z("path",{key:C.key,class:Ma(["cs-arc",{active:C.active,dim:C.dim}]),d:C.path,fill:C.color,onClick:F=>ya(e).toggleFacet(r.value,C.key)},null,10,h3))),128)),P("text",y3,aa(x.value),1)])):fa("",!0),P("ul",b3,[(W(!0),Z(Aa,null,Da(M.value,C=>(W(),Z("li",{key:C.key,class:Ma({active:C.active,dim:C.dim}),onClick:F=>ya(e).toggleFacet(r.value,C.key)},[P("i",{style:Oa({background:C.color})},null,4),ba(aa(i(C.label,16))+" ",1),P("b",null,aa(C.value),1)],10,_3))),128))])]),x.value?fa("",!0):(W(),Z("p",f3,"no senders"))])])]))}},A3={class:"cpt-header"},S3={class:"cpt-chips"},E3=["onClick","title"],$3=["value"],M3={class:"cpt-counter"},w3=["title"],I3={class:"cpt-cell map"},x3={class:"cpt-cell flower"},T3={class:"cpt-seg",role:"tablist","aria-label":"Map or flower view"},N3={class:"cpt-lower"},L3={class:"cpt-cell"},R3={class:"cpt-cell"},F3={class:"cpt-legend"},B3={class:"cpt-lg"},K3={class:"cpt-lg"},O3={class:"cpt-ramp"},U3={class:"cpt-lg"},D3={class:"cpt-lg"},H3={key:0,class:"cpt-overlay"},z3={key:1,class:"cpt-overlay err"},V3={__name:"bloom-cockpit",setup(a){const e=Na("profileConfig"),n=Na("mapboxToken"),t=ra(()=>(e==null?void 0:e.value)||{}),i=Vy();Ge("cockpitStore",i);const o=ua(null);ve(()=>{var s,g,d;if(i.loadData({...t.value,tk:(n==null?void 0:n.value)||t.value.tk}),t.value.debugExpose&&typeof window<"u")try{(((d=(g=(s=o.value)==null?void 0:s.getRootNode)==null?void 0:g.call(s))==null?void 0:d.host)||window).__cockpit=i}catch{}});function r(s){i.setSearch(s.target.value)}function l(s){i.setMode(s)}return $e(` + .cpt-root { position:absolute; inset:0; display:grid; overflow:hidden; + grid-template-rows: auto minmax(0,1.45fr) minmax(0,1fr) auto; + grid-template-areas: "header" "upper" "lower" "legend"; + background:#eef2f7; color:#1f2937; isolation:isolate; container-type:inline-size; + font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } + + /* ── HEADER ── */ + .cpt-header { grid-area:header; display:flex; flex-wrap:wrap; gap:8px; align-items:center; + padding:8px 12px; background:${ta.NAVY}; color:#fff; border-bottom:1px solid #001b44; } + .cpt-brand { font:800 12px/1 ui-monospace,monospace; letter-spacing:.05em; text-transform:uppercase; + padding:6px 10px; background:rgba(255,255,255,.1); border-radius:7px; } + .cpt-chips { display:flex; flex-wrap:wrap; gap:5px; align-items:center; } + .cpt-chip { display:inline-flex; align-items:center; gap:5px; font:600 11px/1 -apple-system,sans-serif; + padding:4px 8px; border-radius:999px; background:#fff; color:${ta.NAVY}; cursor:pointer; border:0; } + .cpt-chip.focus { background:${ta.GOLD}; color:#3a2600; } + .cpt-chip .x { font-weight:800; opacity:.6; } + .cpt-chip:hover .x { opacity:1; } + .cpt-search { flex:1 1 180px; min-width:120px; max-width:360px; margin-left:auto; + background:#0e1f44; border:1px solid #284a86; color:#dbe4f3; font:600 12px/1 -apple-system,sans-serif; + padding:7px 11px; border-radius:8px; } + .cpt-search::placeholder { color:#7e90b6; } + .cpt-counter { font:700 11px/1.3 ui-monospace,monospace; color:#cdd9f2; text-align:right; white-space:nowrap; } + .cpt-counter b { color:#fff; } + .cpt-prov { font:600 10px/1.3 ui-monospace,monospace; color:#9fb3d9; background:rgba(0,0,0,.25); + border:1px solid #284a86; border-radius:7px; padding:5px 9px; max-width:280px; } + .cpt-prov.err { color:#fecaca; border-color:#9f1239; } + + /* ── UPPER ROW: map + flower ── */ + .cpt-upper { grid-area:upper; display:grid; grid-template-columns: 58fr 42fr; gap:1px; + background:#cbd5e1; position:relative; min-height:0; } + .cpt-cell { position:relative; overflow:hidden; min-height:0; background:#fff; } + .cpt-seg { position:absolute; top:8px; left:50%; transform:translateX(-50%); z-index:40; + display:inline-flex; background:rgba(255,255,255,.95); border:1px solid #cbd5e1; border-radius:999px; + padding:3px; gap:2px; box-shadow:0 2px 10px rgba(0,0,0,.15); } + .cpt-seg button { border:0; background:transparent; color:#475569; cursor:pointer; + font:700 11px/1 ui-monospace,monospace; padding:6px 12px; border-radius:999px; } + .cpt-seg button.on { background:${ta.NAVY}; color:#fff; } + + /* ── LOWER ROW: charts + list ── */ + .cpt-lower { grid-area:lower; display:grid; grid-template-columns: 42fr 58fr; gap:1px; + background:#cbd5e1; min-height:0; } + + /* ── LEGEND RIBBON ── */ + .cpt-legend { grid-area:legend; display:flex; flex-wrap:wrap; gap:6px 16px; align-items:center; + padding:6px 12px; background:#0e1730; color:#cdd9f2; font:600 10px/1.4 ui-monospace,monospace; + border-top:1px solid #1c2742; } + .cpt-lg { display:inline-flex; align-items:center; gap:6px; } + .cpt-sw { width:12px; height:12px; border-radius:50%; flex:0 0 auto; border:1px solid rgba(255,255,255,.3); } + .cpt-line { width:18px; height:0; border-top:2px solid; flex:0 0 auto; } + .cpt-ramp { display:inline-flex; gap:0; } + .cpt-ramp i { width:13px; height:11px; display:inline-block; } + + /* ── loading / error overlay ── */ + .cpt-overlay { position:absolute; inset:0; z-index:80; display:flex; align-items:center; + justify-content:center; background:rgba(238,242,247,.92); color:${ta.NAVY}; + font:600 13px/1.5 ui-monospace,monospace; text-align:center; padding:24px; } + .cpt-overlay.err { color:${ta.RED_DK}; } + + /* ── responsive: stack the two cells per row on narrow frames ── */ + @container (max-width: 720px) { + .cpt-upper { grid-template-columns: 1fr; grid-template-rows: 1fr; } + .cpt-upper .cpt-cell.flower { display:none; } + .cpt-upper.flower-mode .cpt-cell.map { display:none; } + .cpt-upper.flower-mode .cpt-cell.flower { display:block; } + .cpt-lower { grid-template-columns: 1fr; grid-template-rows: 1fr 1fr; } + .cpt-prov { display:none; } + } +`,"cockpit-shell"),(s,g)=>(W(),Z("div",{ref_key:"rootEl",ref:o,class:"cpt-root"},[P("div",A3,[g[4]||(g[4]=P("span",{class:"cpt-brand"},"My UPG Neighbor · Overview",-1)),P("div",S3,[(W(!0),Z(Aa,null,Da(ya(i).chips.value,(d,_)=>(W(),Z("button",{key:_,class:Ma(["cpt-chip",{focus:d.kind==="focus"}]),onClick:v=>ya(i).removeChip(d),title:"remove "+d.label},[ba(aa(d.label)+" ",1),g[2]||(g[2]=P("span",{class:"x"},"×",-1))],10,E3))),128))]),P("input",{class:"cpt-search",type:"search",value:ya(i).search.value,onInput:r,placeholder:"Search target / sender / language…","aria-label":"Search"},null,40,$3),P("span",M3,[P("b",null,aa(ya(i).counts.value.senders.toLocaleString()),1),g[3]||(g[3]=ba(" senders → ",-1)),P("b",null,aa(ya(i).counts.value.clusters.toLocaleString()),1),ba(" clusters · "+aa(ya(i).counts.value.hidden)+" hidden ",1)]),P("span",{class:Ma(["cpt-prov",{err:ya(i).provenance.value.apiError}]),title:ya(i).provenance.value.reachedFilter},[ya(i).provenance.value.apiError?(W(),Z(Aa,{key:0},[ba(aa(ya(i).provenance.value.apiError),1)],64)):(W(),Z(Aa,{key:1},[ba(" LIVE "+aa(ya(i).provenance.value.liveUnreached.toLocaleString())+" unreached · baked senders "+aa(ya(i).provenance.value.bakedGenerated),1)],64))],10,w3)]),P("div",{class:Ma(["cpt-upper",{"flower-mode":ya(i).mode.value==="flower"}])},[P("div",I3,[Ya(Gb)]),P("div",x3,[Ya(Zb)]),P("div",T3,[P("button",{class:Ma({on:ya(i).mode.value==="map"}),onClick:g[0]||(g[0]=d=>l("map"))},"MAP",2),P("button",{class:Ma({on:ya(i).mode.value==="flower"}),onClick:g[1]||(g[1]=d=>l("flower"))},"FLOWER",2)])],2),P("div",N3,[P("div",L3,[Ya(v3)]),P("div",R3,[Ya(I1)])]),P("div",F3,[P("span",B3,[P("span",{class:"cpt-sw",style:Oa({background:ya(ta).RED})},null,4),g[5]||(g[5]=ba(" unreached target",-1))]),P("span",K3,[g[6]||(g[6]=ba("reached % ",-1)),P("span",O3,[(W(!0),Z(Aa,null,Da(ya(ta).GREEN_BINS,(d,_)=>(W(),Z("i",{key:_,style:Oa({background:d})},null,4))),128))])]),P("span",U3,[P("span",{class:"cpt-line",style:Oa({borderColor:ya(ta).NAVY})},null,4),g[7]||(g[7]=ba(" SEND (solid=same-lang · dashed=cluster · dotted=in-country)",-1))]),P("span",D3,[P("span",{class:"cpt-sw",style:Oa({background:ya(ta).GOLD})},null,4),g[8]||(g[8]=ba(" selection · pop = log radius · Luke 10:2",-1))])]),ya(i).ready.value?ya(i).loadError.value&&!ya(i).allClusters.value.length?(W(),Z("div",z3,aa(ya(i).loadError.value),1)):fa("",!0):(W(),Z("div",H3,"Loading the harvest field…"))],512))}},W3={class:"sn-map-area"},Y3={key:0,class:"sn-loading"},J3={class:"sn-top"},Z3=["value"],q3=["value"],X3={class:"sn-legend"},Q3={class:"sn-legend-row"},a_={class:"sn-legend-row"},e_={key:1,class:"sn-panel"},n_={class:"sn-panel-head"},t_={class:"sn-target"},i_={class:"sn-sub"},o_={class:"sn-panel-body"},r_=["onClick"],l_={class:"sn-sender-name"},s_={class:"sn-sender-meta"},c_={class:"sn-chip pct"},g_={class:"sn-chip bridge"},u_={class:"sn-chip adj"},d_={class:"sn-chip"},p_={key:0,style:{padding:"14px","font-size":"12px",color:"#6b7280"}},m_={class:"sn-footer"},Ki="#FF6600",on="#002e6e",Qc="#1f9d55",h_="#9bcf9b",ag="sn-arrows-src",dr="sn-senders-src",pr="sn-target-src",eg="sn-targets-all-src",ng="sn-arrows",xt="sn-senders",tg="sn-sender-labels",ig="sn-target",og="sn-target-label",bn="sn-targets-all",y_={__name:"send-map",setup(a){var ma,Sa,$a,ha,pa,Y;$e(` + .sn-root { position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;background:#ffffff;color:#1f2937;isolation:isolate; + font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } + .sn-map-area { flex:1 1 0;position:relative;overflow:hidden; } + .sn-map-canvas { position:absolute;inset:0; } + .sn-loading { position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#ffffff;color:${on};font-size:13px;z-index:5; } + + /* ── Top bar: title + target selector ── */ + .sn-top { position:absolute;top:10px;left:10px;z-index:30;display:flex;flex-wrap:wrap;gap:8px;align-items:center; } + .sn-title { background:${on};color:#fff;font:700 12px/1 ui-monospace,monospace;letter-spacing:.04em;text-transform:uppercase;padding:8px 12px;border-radius:8px; } + .sn-select { background:#fff;border:1px solid ${on};color:${on};font:600 12px/1 -apple-system,sans-serif;padding:7px 10px;border-radius:8px;cursor:pointer;max-width:240px; } + + /* ── Left: 4-D JOIN legend (the gate the connectors pass through) ── */ + .sn-legend { position:absolute;top:58px;left:10px;z-index:25;background:rgba(255,255,255,0.95);border:1px solid #d1d5db;border-radius:10px;padding:9px 12px;box-shadow:0 4px 14px rgba(0,0,0,0.12);max-width:230px; } + .sn-legend h4 { font:700 9px/1 ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;color:#6b7280;margin-bottom:8px; } + .sn-legend-row { display:flex;align-items:flex-start;gap:7px;padding:3px 0;font-size:11px;color:#374151;line-height:1.3; } + .sn-dot { width:11px;height:11px;border-radius:50%;flex:0 0 auto;border:1px solid rgba(0,0,0,0.35);margin-top:1px; } + .sn-legend .sn-num { font-weight:700;color:${on};flex:0 0 auto; } + + /* ── Right: worked sender table for the selected target ── */ + .sn-panel { position:absolute;top:10px;right:10px;bottom:42px;z-index:25;width:280px;max-width:46vw;background:rgba(255,255,255,0.97);border:1px solid #d1d5db;border-radius:10px;box-shadow:0 4px 14px rgba(0,0,0,0.12);display:flex;flex-direction:column;overflow:hidden; } + .sn-panel-head { padding:10px 12px;border-bottom:1px solid #e5e7eb;background:${on};color:#fff; } + .sn-panel-head .sn-target { font:700 13px/1.2 -apple-system,sans-serif; } + .sn-panel-head .sn-sub { margin-top:4px;font:11px/1.3 ui-monospace,monospace;color:#c7d2fe; } + .sn-panel-body { flex:1 1 0;overflow-y:auto;padding:6px 8px; } + .sn-sender { border:1px solid #e5e7eb;border-radius:8px;padding:7px 9px;margin-bottom:6px;cursor:pointer;transition:border-color .12s,box-shadow .12s; } + .sn-sender:hover { border-color:${Ki};box-shadow:0 2px 8px rgba(255,102,0,0.18); } + .sn-sender-name { font:700 12px/1.2 -apple-system,sans-serif;color:#111827;display:flex;align-items:center;gap:6px; } + .sn-sender-meta { margin-top:4px;display:flex;flex-wrap:wrap;gap:4px; } + .sn-chip { font:600 10px/1 ui-monospace,monospace;padding:3px 6px;border-radius:999px;border:1px solid #d1d5db;color:#374151;background:#f9fafb; } + .sn-chip.pct { color:#0b5e33;background:#e7f6ec;border-color:#b7e0c4; } + .sn-chip.bridge { color:${on};background:#e7edf8;border-color:#c2d2ee; } + .sn-chip.adj { color:#7a3e00;background:#fdeedd;border-color:#f3d4ac; } + + /* ── Footer: provenance (honesty contract, spec §3 + §5) ── */ + .sn-footer { flex:0 0 auto;background:${on};color:#dbe4f3;font:10px/1.4 ui-monospace,monospace;padding:6px 12px;display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center; } + .sn-footer strong { color:#fff; } + + @media(max-width:760px){ + .sn-panel { width:200px; } + .sn-legend { max-width:180px; } + } +`,"send-map");const e=Na("profileConfig"),n=Na("mapboxToken"),t=Na("instanceId",null);t!=null&&t.value||t||""+Date.now().toString(36)+Math.random().toString(36).slice(2,8);const i=ua(null),o=ua(null),r=ua(!1),l=ua(null),s=ua(((ma=e==null?void 0:e.value)==null?void 0:ma.target)??"India"),g={India:[79,22],Pakistan:[69.3,30],Indonesia:[113,-1],Bangladesh:[90.3,23.7],China:[104,35],Japan:[138,37],Iran:[53,32],"Türkiye (Turkey)":[35,39],Egypt:[30,26.5],Nigeria:[8,9.5],Thailand:[101,15],Sudan:[30,15.5],Algeria:[3,28],Iraq:[44,33],"Myanmar (Burma)":[96,21],Afghanistan:[66,34],Yemen:[47.5,15.5],Morocco:[-6,32],Uzbekistan:[64,41.5],"Saudi Arabia":[45,24],Ethiopia:[39.5,9],Niger:[9,17.5],"Korea, North":[127,40],Nepal:[84,28.2],Mali:[-3.5,17],Somalia:[46.5,5.5],Malaysia:[108,3.5],Russia:[90,60],Cambodia:[105,12.7],Kazakhstan:[67,48],Senegal:[-14.5,14.5],"United States":[-98,39],Guinea:[-11,10.5],Tunisia:[9.5,34],Chad:[19,15.5],Tajikistan:[71,38.7],Jordan:[36.5,31],Azerbaijan:[47.5,40.3],Vietnam:[106,16],Israel:[35,31.3],Armenia:[45,40.2],Austria:[14.5,47.5],Bahrain:[50.6,26],Brunei:[114.7,4.5],Bulgaria:[25.5,42.7],"Burkina Faso":[-1.7,12.3],Cameroon:[12.5,6],Canada:[-106,56],"Cape Verde":[-23.6,16],"China, Hong Kong":[114.2,22.3],"China, Macau":[113.5,22.2],Cyprus:[33.2,35.1],"Côte d'Ivoire":[-5.5,7.5],Eritrea:[39,15.3],France:[2.5,47],Georgia:[43.5,42],Ghana:[-1,7.9],Greece:[22,39],"Guinea-Bissau":[-15,12],Italy:[12.5,42.5],Kenya:[38,.2],"Korea, South":[128,36.5],Kuwait:[47.7,29.3],Kyrgyzstan:[74.5,41.3],Lebanon:[35.8,33.9],Liberia:[-9.4,6.5],Moldova:[28.5,47.2],Oman:[56,21],Portugal:[-8,39.5],Qatar:[51.2,25.3],Serbia:[21,44],"Sierra Leone":[-11.8,8.5],Singapore:[103.8,1.35],"South Sudan":[31,7.5],Spain:[-3.7,40.3],Syria:[38,35],Tanzania:[35,-6.3],Togo:[1,8.6],Turkmenistan:[59,39],Uganda:[32.5,1.4],Ukraine:[31,49],"United Arab Emirates":[54,24]};function d(L,D){const la=g[L];if(!la)return null;let X=0;const c=String(D||"");for(let u=0;u>8&255)/255-.5)*3.2;return[la[0]+f,la[1]+O]}const{map:_,initializeMap:v,destroy:w}=Ti({containerRef:o,accessToken:n.value,style:((Sa=e==null?void 0:e.value)==null?void 0:Sa.style)??"mapbox://styles/mapbox/light-v11",center:(($a=e==null?void 0:e.value)==null?void 0:$a.center)??[60,25],zoom:((ha=e==null?void 0:e.value)==null?void 0:ha.zoom)??2.4,minZoom:((pa=e==null?void 0:e.value)==null?void 0:pa.minZoom)??1,maxZoom:((Y=e==null?void 0:e.value)==null?void 0:Y.maxZoom)??12}),H=ra(()=>l.value?Object.keys(l.value.countries):[]),I=ra(()=>{var L,D;return((D=(L=l.value)==null?void 0:L.countries)==null?void 0:D[s.value])??null}),M=ra(()=>{const L=I.value;return L?[...L.neighbors||[]].filter(D=>g[D.country]).sort((D,la)=>(la.pct_christian||0)-(D.pct_christian||0)):[]});function x(L){return L>=50?Qc:h_}function A(){var la;const L=l.value;if(!L)return S([]);const D=[];for(const X of Object.keys(L.countries)){const c=g[X];c&&D.push({type:"Feature",geometry:{type:"Point",coordinates:c},properties:{name:X,kind:"target",upg:((la=L.countries[X])==null?void 0:la.target_upg)||0}})}return S(D)}function $(){if(!I.value)return{arrows:S([]),senders:S([]),target:S([])};const D=g[s.value]||[60,25],la={type:"Feature",geometry:{type:"Point",coordinates:D},properties:{name:s.value,kind:"target"}},X=[],c=[];for(const f of M.value){const O=d(f.country,f.name+f.lang);O&&(X.push({type:"Feature",geometry:{type:"Point",coordinates:O},properties:{name:f.name,country:f.country,pct:f.pct_christian||0,color:x(f.pct_christian||0)}}),c.push({type:"Feature",geometry:{type:"LineString",coordinates:[O,D]},properties:{bridge:f.bridge,adjacency:f.adjacency}}))}return{arrows:S(c),senders:S(X),target:S([la])}}function S(L){return{type:"FeatureCollection",features:L}}function j(){var c;const L=_.value;if(!L||!((c=L.isStyleLoaded)!=null&&c.call(L)))return;const{arrows:D,senders:la,target:X}=$();C(L,ag,D),C(L,dr,la),C(L,pr,X),C(L,eg,A()),L.getLayer(bn)||L.addLayer({id:bn,type:"circle",source:eg,paint:{"circle-color":Ki,"circle-radius":["interpolate",["linear"],["zoom"],1,5,5,9,9,13],"circle-stroke-width":1.5,"circle-stroke-color":"#ffffff"}}),L.getLayer(ng)||L.addLayer({id:ng,type:"line",source:ag,layout:{"line-cap":"round"},paint:{"line-color":on,"line-width":1.4,"line-opacity":.55,"line-dasharray":[2,2]}}),L.getLayer(xt)||L.addLayer({id:xt,type:"circle",source:dr,paint:{"circle-color":["get","color"],"circle-radius":["interpolate",["linear"],["zoom"],1,2.5,5,4,9,6],"circle-stroke-width":.8,"circle-stroke-color":"#ffffff","circle-opacity":.92}}),L.getLayer(tg)||L.addLayer({id:tg,type:"symbol",source:dr,minzoom:3.4,layout:{"text-field":["get","name"],"text-size":10,"text-offset":[0,1.1],"text-anchor":"top","text-allow-overlap":!1},paint:{"text-color":"#0b5e33","text-halo-color":"#ffffff","text-halo-width":1.3}}),L.getLayer(ig)||L.addLayer({id:ig,type:"circle",source:pr,paint:{"circle-color":Ki,"circle-radius":["interpolate",["linear"],["zoom"],1,8,5,13,9,18],"circle-stroke-width":2.5,"circle-stroke-color":"#ffffff","circle-opacity":.95}}),L.getLayer(og)||L.addLayer({id:og,type:"symbol",source:pr,layout:{"text-field":["get","name"],"text-size":13,"text-font":["DIN Offc Pro Bold","Arial Unicode MS Bold"],"text-offset":[0,-1.4],"text-anchor":"bottom","text-allow-overlap":!0},paint:{"text-color":"#8a3800","text-halo-color":"#ffffff","text-halo-width":1.6}}),b(L)}function b(L){if(!L||!L.getLayer(bn))return;const D=s.value;L.setPaintProperty(bn,"circle-opacity",D?["case",["==",["get","name"],D],0,.28]:.9),L.setPaintProperty(bn,"circle-stroke-opacity",D?["case",["==",["get","name"],D],0,.5]:.9)}function C(L,D,la){L.getSource(D)?L.getSource(D).setData(la):L.addSource(D,{type:"geojson",data:la})}function F(){const L=_.value;if(!L)return;const D=g[s.value];if(!D)return;let la=D[0],X=D[0],c=D[1],f=D[1];for(const O of M.value){const u=g[O.country];u&&(la=Math.min(la,u[0]),X=Math.max(X,u[0]),c=Math.min(c,u[1]),f=Math.max(f,u[1]))}try{L.stop(),la===X&&c===f?L.easeTo({center:D,zoom:4,duration:900}):L.fitBounds([[la,c],[X,f]],{padding:90,maxZoom:5.5,duration:900})}catch{}}function B(L){!L||!g[L]||(s.value=L,j(),F())}function ia(L){B(L.target.value)}function ga(L){const D=_.value,la=g[L.country];if(!(!D||!la))try{D.stop(),D.easeTo({center:la,zoom:4.5,duration:800})}catch{}}async function na(){var D;const L=(D=e==null?void 0:e.value)==null?void 0:D.dataUrl;if(L)try{const la=await fetch(L);if(la.ok)return await la.json()}catch{}return nn}return ve(async()=>{var la,X,c,f,O,u;await v();const L=_.value;try{L&&L.setProjection("mercator")}catch{}if((la=e==null?void 0:e.value)!=null&&la.debugExpose&&typeof window<"u")try{(((f=(c=(X=i.value)==null?void 0:X.getRootNode)==null?void 0:c.call(X))==null?void 0:f.host)||window).__sendmap=L}catch{}if(l.value=await na(),!l.value){r.value=!0;return}H.value.includes(s.value)||(s.value=H.value[0]||s.value);const D=()=>{j(),L.on("click",bn,G=>{var T;const k=(T=G.features)==null?void 0:T[0];k&&B(k.properties.name)}),L.on("mouseenter",bn,()=>{L.getCanvas().style.cursor="pointer"}),L.on("mouseleave",bn,()=>{L.getCanvas().style.cursor=""}),L.on("click",xt,G=>{var T;const k=(T=G.features)==null?void 0:T[0];if(k)try{L.stop(),L.easeTo({center:k.geometry.coordinates,zoom:4.5,duration:800})}catch{}}),L.on("mouseenter",xt,()=>{L.getCanvas().style.cursor="pointer"}),L.on("mouseleave",xt,()=>{L.getCanvas().style.cursor=""}),F(),r.value=!0};(O=L==null?void 0:L.isStyleLoaded)!=null&&O.call(L)?D():(u=L==null?void 0:L.once)==null||u.call(L,"load",D)}),sn(()=>{w()}),(L,D)=>{var la,X,c,f,O,u;return W(),Z("div",{ref_key:"snRoot",ref:i,class:"sn-root"},[P("div",W3,[P("div",{ref_key:"mapContainer",ref:o,class:"sn-map-canvas"},null,512),r.value?fa("",!0):(W(),Z("div",Y3,"Loading SEND map…")),P("div",J3,[D[0]||(D[0]=P("span",{class:"sn-title"},"My UPG Neighbor · SEND",-1)),H.value.length?(W(),Z("select",{key:0,class:"sn-select",value:s.value,onChange:ia,"aria-label":"Select unreached target country"},[(W(!0),Z(Aa,null,Da(H.value,G=>(W(),Z("option",{key:G,value:G},aa(G),9,q3))),128))],40,Z3)):fa("",!0)]),P("div",X3,[D[3]||(D[3]=Wl('

4-D SEND join

1·Adjacency — same-country, else neighbor ≤1500 km
2·Language pair — same language (strong) / cluster (soft)
3·Reached % — sender ≥10% Christian (more = more laborers)
4·Lower persecution — sender from a freer place
',6)),P("div",Q3,[P("span",{class:"sn-dot",style:Oa({background:Ki})},null,4),D[1]||(D[1]=P("span",null,[ba("Unreached target — "),P("strong",null,"click one"),ba(" to SEND-focus")],-1))]),P("div",a_,[P("span",{class:"sn-dot",style:Oa({background:Qc})},null,4),D[2]||(D[2]=P("span",null,"Reached sender (SEND →)",-1))])]),I.value?(W(),Z("div",e_,[P("div",n_,[P("div",t_,aa(s.value),1),P("div",i_,aa((I.value.target_upg||0).toLocaleString())+" UPGs · "+aa(M.value.length)+" reached senders ",1)]),P("div",o_,[(W(!0),Z(Aa,null,Da(M.value,(G,k)=>(W(),Z("div",{key:G.name+k,class:"sn-sender",onClick:T=>ga(G)},[P("div",l_,[P("span",{class:"sn-dot",style:Oa({background:x(G.pct_christian||0)})},null,4),ba(" "+aa(G.name),1)]),P("div",s_,[P("span",c_,aa(Math.round(G.pct_christian||0))+"% Christian",1),P("span",g_,aa(G.bridge),1),P("span",u_,aa(G.adjacency),1),P("span",d_,aa(G.lang),1)])],8,r_))),128)),M.value.length?fa("",!0):(W(),Z("div",p_," No qualifying reached senders with a known country centroid for this target. "))])])):fa("",!0),P("div",m_,[D[4]||(D[4]=P("span",null,[P("strong",null,"SEND"),ba(" reached neighbor → unreached target")],-1)),D[5]||(D[5]=P("span",null,"target = LIVE (JP UnreachedPeoplesByCountry)",-1)),P("span",null,"senders = baked "+aa(((X=(la=l.value)==null?void 0:la.meta)==null?void 0:X.generated)||"2026-06-12")+" (≥"+aa(((f=(c=l.value)==null?void 0:c.meta)==null?void 0:f.threshold_pct_christian)||10)+"% Christian, "+aa(((u=(O=l.value)==null?void 0:O.meta)==null?void 0:u.adjacency_km)||1500)+" km)",1),D[6]||(D[6]=P("span",null,"Hab 2:2 · mobilize existing laborers",-1)),D[7]||(D[7]=P("span",null,"chain: UPG-100 → FPG base → My UPG Neighbor",-1))])])],512)}}},b_={class:"fm-top"},__=["value"],f_=["value"],P_=["aria-checked"],C_={key:1,class:"fm-stats"},k_={class:"fm-stage"},j_={key:0,class:"fm-loading"},G_={key:1,class:"fm-loading"},v_=["viewBox"],A_=["cx","cy","fill","transform"],S_=["x1","y1","x2","y2","stroke-dasharray"],E_=["d"],$_=["onClick","onMouseenter"],M_=["cx","cy","r","fill"],w_=["x","y"],I_=["r"],x_=["y"],T_=["y"],N_=["y"],L_={key:3,class:"fm-legend"},R_={class:"fm-lrow"},F_={class:"fm-lrow"},B_={class:"fm-footer"},K_=["innerHTML"],mr="#FF6600",O_="#002e6e",U_="#0b1020",Oi=1e3,rg=205,hr=360,lg=46,D_={__name:"flower-mesh",setup(a){function e(u){const G=+u||0;return G>=80?"#0f7a3d":G>=40?"#1f9d55":G>=15?"#5cb874":"#9bcf9b"}const n=Na("profileConfig");Na("dataSource",null);const t=ra(()=>(n==null?void 0:n.value)||{}),i=ua(null),o=ua(!1),r=ua(""),l=ua(t.value.target??"India"),s=ua(!0),g=ua(null),d=ua(null),_=ua({show:!1,x:0,y:0,html:""}),v=Oi/2,w=Oi/2;function H(u,G,k,T){const R=(T-90)*Math.PI/180;return[u+k*Math.cos(R),G+k*Math.sin(R)]}function I(u){const G=Math.max(0,+u||0);return Math.max(7,Math.min(22,6+Math.sqrt(G)/320))}function M(u){return String(u||"").trim().toLowerCase()}const x=ra(()=>i.value?Object.keys(i.value.countries):[]),A=ra(()=>{var u,G;return((G=(u=i.value)==null?void 0:u.countries)==null?void 0:G[l.value])??null}),$=ra(()=>{const u=A.value;return u?(u.neighbors||[]).map((G,k)=>({...G,_i:k})):[]}),S=ra(()=>$.value.filter(u=>u.adjacency==="same-country")),j=ra(()=>$.value.filter(u=>u.adjacency!=="same-country")),b=ra(()=>{const u=[],G=(k,T,R)=>{const J=k.length;k.forEach((y,E)=>{const h=J?(E+.5)/J*360+R:0,[N,z]=H(v,w,T,h);u.push({id:"n"+y._i,node:y,x:N,y:z,ang:h,r:I(y.pop),color:e(y.pct_christian),ring:T===rg?"inner":"outer"})})};return G(S.value,rg,0),G(j.value,hr,j.value.length?180/j.value.length:0),u}),C=ra(()=>b.value.map(u=>({id:"s-"+u.id,x1:v,y1:w,x2:u.x,y2:u.y,strong:u.node.bridge==="same-language",to:u.id}))),F=ra(()=>{if(!s.value)return[];const u=b.value,G=[];for(let k=0;kb.value.filter(u=>u.ring==="outer").map(u=>({id:"p-"+u.id,cx:H(v,w,hr-6,u.ang)[0],cy:H(v,w,hr-6,u.ang)[1],rot:u.ang,color:u.color}))),ia=ra(()=>{const u=A.value,G=d.value;return{name:l.value,upg:(G==null?void 0:G.upg)??(u==null?void 0:u.target_upg)??0,pop:(G==null?void 0:G.pop)??(u==null?void 0:u.target_pop)??0,religion:(u==null?void 0:u.target_top_religion)??"",langs:(u==null?void 0:u.target_top_langs)??[]}}),ga=ra(()=>({total:$.value.length,inner:S.value.length,outer:j.value.length,countries:new Set($.value.map(u=>u.country)).size,meshes:F.value.length}));function na(u){return g.value?u.from===g.value||u.to===g.value:!0}function ma(u){return g.value?u.to===g.value:!0}function Sa(u){return!g.value||u.id===g.value?!0:F.value.some(G=>G.from===g.value&&G.to===u.id||G.to===g.value&&G.from===u.id)}const $a=u=>(+u||0).toLocaleString();function ha(u){const G=+u||0;return G>=1e9?(G/1e9).toFixed(1)+"B":G>=1e6?(G/1e6).toFixed(1)+"M":G>=1e3?(G/1e3).toFixed(0)+"K":String(G)}function pa(u,G){const k=u.node,T=k.province||k.segment;_.value={show:!0,x:G.clientX,y:G.clientY,html:`${c(k.name)}
${c(k.country)}${T?" · "+c(T):""}
reached ${Math.round(k.pct_christian||0)}% Christian
language ${c(k.lang||"—")}
people ${ha(k.pop)}
bridge ${c(k.bridge||"—")}
near ${c(k.adjacency||"—")}
`}}function Y(u){_.value.show&&(_.value.x=u.clientX,_.value.y=u.clientY)}function L(){_.value={..._.value,show:!1}}function D(u){g.value=g.value===u.id?null:u.id}function la(){g.value=null}function X(u){l.value=u.target.value,g.value=null}function c(u){return String(u??"").replace(/[&<>"']/g,G=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[G])}async function f(){const u=t.value.dataUrl;if(u)try{const G=await fetch(u);if(G.ok)return await G.json()}catch{}return nn}async function O(){const u=t.value.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL);if(u)try{const G=await fetch(u.replace(/\/?$/,"")+"/api/people-groups/statistics");if(G.ok){const k=await G.json();k&&typeof k.total=="number"&&(d.value=null)}}catch{}}return ve(async()=>{if(i.value=await f(),!i.value){r.value="Could not load reached-neighbors.json",o.value=!0;return}x.value.includes(l.value)||(l.value=x.value[0]||l.value),o.value=!0,O()}),$e(` + .fm-root { position:absolute; inset:0; display:flex; flex-direction:column; overflow:hidden; + background:radial-gradient(circle at 50% 42%, #16203a 0%, ${U_} 70%); color:#e5e7eb; + isolation:isolate; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } + + /* top bar */ + .fm-top { position:absolute; top:12px; left:12px; right:12px; z-index:30; + display:flex; flex-wrap:wrap; gap:8px; align-items:center; pointer-events:none; } + .fm-top > * { pointer-events:auto; } + .fm-title { background:${O_}; color:#fff; font:700 12px/1 ui-monospace,monospace; + letter-spacing:.05em; text-transform:uppercase; padding:9px 13px; border-radius:9px; + box-shadow:0 2px 10px rgba(0,0,0,.4); } + .fm-select { background:#0e1730; border:1px solid #2b3b63; color:#dbe4f3; + font:600 12px/1 -apple-system,sans-serif; padding:8px 11px; border-radius:9px; cursor:pointer; max-width:240px; } + .fm-toggle { background:#0e1730; border:1px solid #2b3b63; color:#9fb3d9; + font:600 11px/1 ui-monospace,monospace; padding:8px 11px; border-radius:9px; cursor:pointer; + display:inline-flex; align-items:center; gap:7px; user-select:none; } + .fm-toggle.on { color:#fff; border-color:#3f7bd6; background:#13224a; } + .fm-toggle .fm-sw { width:9px; height:9px; border-radius:50%; background:#3f7bd6; opacity:.35; } + .fm-toggle.on .fm-sw { opacity:1; } + .fm-stats { margin-left:auto; font:600 11px/1.5 ui-monospace,monospace; color:#9fb3d9; + background:rgba(8,12,24,.7); border:1px solid #1c2742; border-radius:9px; padding:7px 11px; text-align:right; } + .fm-stats b { color:#fff; } + + /* canvas */ + .fm-stage { flex:1 1 0; position:relative; } + .fm-svg { position:absolute; inset:0; width:100%; height:100%; display:block; } + + .fm-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; + color:#9fb3d9; font:13px/1 ui-monospace,monospace; z-index:5; } + + /* svg node + link styling driven by classes */ + .fm-spoke { stroke:#3a4f86; stroke-width:1.4; fill:none; opacity:.5; transition:opacity .15s; } + .fm-spoke.strong { stroke:#5b7fd0; stroke-width:2; opacity:.7; } + .fm-spoke.dim { opacity:.06; } + .fm-mesh { stroke:#ffae66; stroke-width:1.3; fill:none; opacity:.5; stroke-linecap:round; transition:opacity .15s; } + .fm-mesh.lit { opacity:.92; stroke-width:2; } + .fm-mesh.dim { opacity:.05; } + .fm-petal { opacity:.13; transition:opacity .15s; } + .fm-petal.dim { opacity:.04; } + .fm-node { cursor:pointer; transition:opacity .15s; } + .fm-node.dim { opacity:.18; } + .fm-node circle { stroke:#0b1020; stroke-width:2; } + .fm-node.sel circle { stroke:#ffffff; stroke-width:3; } + .fm-node-label { fill:#cdd9f2; font:600 12px/1 -apple-system,sans-serif; paint-order:stroke; + stroke:#0b1020; stroke-width:3px; text-anchor:middle; pointer-events:none; } + .fm-center-glow { fill:${mr}; opacity:.16; } + .fm-center circle { fill:${mr}; stroke:#ffd9bd; stroke-width:3; } + .fm-center-name { fill:#fff; font:800 19px/1 -apple-system,sans-serif; text-anchor:middle; + paint-order:stroke; stroke:#7a2e00; stroke-width:3px; } + .fm-center-sub { fill:#ffe1cb; font:600 11px/1 ui-monospace,monospace; text-anchor:middle; } + + /* legend */ + .fm-legend { position:absolute; left:12px; bottom:38px; z-index:25; background:rgba(8,12,24,.82); + border:1px solid #1c2742; border-radius:10px; padding:10px 12px; max-width:230px; + box-shadow:0 4px 16px rgba(0,0,0,.45); } + .fm-legend h4 { font:700 9px/1 ui-monospace,monospace; letter-spacing:.12em; text-transform:uppercase; + color:#7e90b6; margin-bottom:8px; } + .fm-lrow { display:flex; align-items:center; gap:8px; padding:3px 0; font-size:11px; color:#c4d0e8; } + .fm-dot { width:12px; height:12px; border-radius:50%; flex:0 0 auto; } + .fm-line { width:18px; height:0; border-top:2px solid; flex:0 0 auto; } + + /* footer provenance (honesty contract) */ + .fm-footer { position:absolute; left:0; right:0; bottom:0; z-index:20; background:rgba(8,12,24,.86); + color:#8fa2c8; font:10px/1.4 ui-monospace,monospace; padding:6px 12px; + display:flex; flex-wrap:wrap; gap:3px 14px; align-items:center; border-top:1px solid #1c2742; } + .fm-footer b { color:#dbe4f3; } + + /* tooltip */ + .fm-tip { position:fixed; z-index:60; pointer-events:none; max-width:240px; + background:#0e1730; border:1px solid #34508c; border-radius:9px; padding:9px 11px; + box-shadow:0 6px 22px rgba(0,0,0,.55); font-size:11.5px; color:#dbe4f3; } + .fm-tip strong { font-size:13px; color:#fff; } + .fm-tip-sub { color:#ffae66; font:600 10px/1.3 ui-monospace,monospace; margin:2px 0 6px; } + .fm-tip-row { display:flex; gap:6px; line-height:1.5; } + .fm-tip-k { color:#7e90b6; min-width:56px; } + + @media (max-width:720px) { + .fm-stats { display:none; } + .fm-legend { max-width:170px; } + } +`,"flower-mesh"),(u,G)=>{var k,T,R,J,y,E;return W(),Z("div",{class:"fm-root",onMousemove:Y},[P("div",b_,[G[9]||(G[9]=P("span",{class:"fm-title"},"My UPG Neighbor · Flower-Mesh",-1)),x.value.length?(W(),Z("select",{key:0,class:"fm-select",value:l.value,onChange:X,"aria-label":"Select unreached target country"},[(W(!0),Z(Aa,null,Da(x.value,h=>(W(),Z("option",{key:h,value:h},aa(h),9,f_))),128))],40,__)):fa("",!0),P("span",{class:Ma(["fm-toggle",{on:s.value}]),role:"switch","aria-checked":s.value,tabindex:"0",onClick:G[0]||(G[0]=h=>s.value=!s.value),onKeydown:[G[1]||(G[1]=ds(Xe(h=>s.value=!s.value,["prevent"]),["enter"])),G[2]||(G[2]=ds(Xe(h=>s.value=!s.value,["prevent"]),["space"]))]},[...G[3]||(G[3]=[P("span",{class:"fm-sw"},null,-1),ba(" language mesh ",-1)])],42,P_),A.value?(W(),Z("span",C_,[P("b",null,aa(ga.value.total),1),G[4]||(G[4]=ba(" reached neighbors · ",-1)),P("b",null,aa(ga.value.countries),1),G[5]||(G[5]=ba(" countries",-1)),G[6]||(G[6]=P("br",null,null,-1)),P("b",null,aa($a(ia.value.upg)),1),G[7]||(G[7]=ba(" UPGs in center · ",-1)),P("b",null,aa(ga.value.meshes),1),G[8]||(G[8]=ba(" mesh links ",-1))])):fa("",!0)]),P("div",k_,[o.value?r.value?(W(),Z("div",G_,aa(r.value),1)):(W(),Z("svg",{key:2,class:"fm-svg",viewBox:`0 0 ${Oi} ${Oi}`,preserveAspectRatio:"xMidYMid meet",onClick:la},[P("g",null,[(W(!0),Z(Aa,null,Da(B.value,h=>(W(),Z("ellipse",{key:h.id,class:Ma(["fm-petal",{dim:g.value}]),cx:h.cx,cy:h.cy,rx:"78",ry:"40",fill:h.color,transform:`rotate(${h.rot} ${h.cx} ${h.cy})`},null,10,A_))),128))]),P("g",null,[(W(!0),Z(Aa,null,Da(C.value,h=>(W(),Z("line",{key:h.id,class:Ma(["fm-spoke",{strong:h.strong,dim:!ma(h)}]),x1:h.x1,y1:h.y1,x2:h.x2,y2:h.y2,"stroke-dasharray":h.strong?"0":"5 5"},null,10,S_))),128))]),P("g",null,[(W(!0),Z(Aa,null,Da(F.value,h=>(W(),Z("path",{key:h.id,class:Ma(["fm-mesh",{lit:na(h)&&g.value,dim:g.value&&!na(h)}]),d:h.d},null,10,E_))),128))]),P("g",null,[(W(!0),Z(Aa,null,Da(b.value,h=>(W(),Z("g",{key:h.id,class:Ma(["fm-node",{dim:!Sa(h),sel:h.id===g.value}]),onClick:Xe(N=>D(h),["stop"]),onMouseenter:N=>pa(h,N),onMouseleave:L},[P("title",null,aa(h.node.name)+" — "+aa(Math.round(h.node.pct_christian||0))+"% Christian, "+aa(h.node.lang),1),P("circle",{cx:h.x,cy:h.y,r:h.r,fill:h.color},null,8,M_),h.r>=9||h.id===g.value?(W(),Z("text",{key:0,class:"fm-node-label",x:h.x,y:h.y+h.r+14},aa(h.node.name),9,w_)):fa("",!0)],42,$_))),128))]),P("g",{class:"fm-center",onClick:Xe(la,["stop"]),style:{cursor:"default"}},[P("circle",{class:"fm-center-glow",cx:v,cy:w,r:lg+26},null,8,I_),P("circle",{cx:v,cy:w,r:lg}),P("text",{class:"fm-center-name",x:v,y:w-2},aa(ia.value.name),9,x_),P("text",{class:"fm-center-sub",x:v,y:w+16},aa($a(ia.value.upg))+" UPGs",9,T_),P("text",{class:"fm-center-sub",x:v,y:w+30,style:{opacity:".85"}},aa(ha(ia.value.pop))+" people",9,N_)])],8,v_)):(W(),Z("div",j_,"Growing the flower…")),o.value&&!r.value?(W(),Z("div",L_,[G[12]||(G[12]=P("h4",null,"The flower",-1)),P("div",R_,[P("span",{class:"fm-dot",style:Oa({background:mr})},null,4),G[10]||(G[10]=ba(" Unreached target (doxa-2000)",-1))]),P("div",F_,[P("span",{class:"fm-dot",style:Oa({background:e(90)})},null,4),G[11]||(G[11]=ba(" Reached neighbor (deeper = more Christian)",-1))]),G[13]||(G[13]=Wl('
SEND path → into the unreached
via related language cluster
Same-language collaboration mesh
inner whorl = same country · petals = surrounding countries
',4))])):fa("",!0)]),P("div",B_,[G[14]||(G[14]=P("span",null,[P("b",null,"Flower-Mesh"),ba(" reached neighbor → unreached center")],-1)),G[15]||(G[15]=P("span",null,"center = doxa-2000 (pray.doxa.life)",-1)),P("span",null,"neighbors = baked "+aa(((T=(k=i.value)==null?void 0:k.meta)==null?void 0:T.generated)||"2026-06-12")+" (≥"+aa(((J=(R=i.value)==null?void 0:R.meta)==null?void 0:J.threshold_pct_christian)||10)+"% Christian, "+aa(((E=(y=i.value)==null?void 0:y.meta)==null?void 0:E.adjacency_km)||1500)+" km)",1),G[16]||(G[16]=P("span",null,"province N/A in source — finest grain = country (see RE)",-1)),G[17]||(G[17]=P("span",null,"Luke 10:2 · send laborers into the harvest",-1))]),_.value.show?(W(),Z("div",{key:0,class:"fm-tip",style:Oa({left:_.value.x+14+"px",top:_.value.y+14+"px"}),innerHTML:_.value.html},null,12,K_)):fa("",!0)],32)}}},H_={key:0,class:"lc-loading"},z_={class:"lc-top"},V_={key:0,class:"lc-stats"},W_={key:1,class:"lc-legend"},Y_={class:"lc-lrow"},J_={class:"lc-lrow"},Z_={key:2,class:"lc-panel"},q_={class:"lc-panel-head"},X_={class:"lc-h-lang"},Q_={class:"lc-h-sub"},a5={class:"lc-panel-body"},e5={class:"lc-sec"},n5={key:0,class:"lc-chip"},t5={class:"lc-sec",style:{"margin-top":"10px"}},i5={key:1,class:"lc-muted"},o5={class:"lc-re-name"},r5={class:"lc-re-meta"},l5={key:3,class:"lc-footer"},s5=["innerHTML"],Ui="#e11d48",Tt="#9f1239",Di="#002e6e",yr="#f59e0b",br="lc-clusters-src",sg="lc-pins-src",_r="lc-reached-src",fr="lc-links-src",An="lc-clusters",cg="lc-cluster-labels",gg="lc-pins",Pr="lc-reached",ug="lc-links",c5={__name:"lang-cluster",setup(a){function e(u){const G=+u||0;return G>=80?"#0f7a3d":G>=40?"#1f9d55":G>=15?"#5cb874":"#9bcf9b"}const n=Na("profileConfig"),t=Na("mapboxToken"),i=Na("instanceId",null),o=ra(()=>(n==null?void 0:n.value)||{});i!=null&&i.value||i||""+Date.now().toString(36)+Math.random().toString(36).slice(2,8);const r=ua(null),l=ua(null),s=ua(!1),g=ua("Loading people groups…"),d=ua([]),_=ua([]),v=ua(null),w=ua({show:!1,x:0,y:0,html:""}),H={India:[79,22],Pakistan:[69.3,30],Indonesia:[113,-1],Bangladesh:[90.3,23.7],China:[104,35],Japan:[138,37],Iran:[53,32],"Türkiye (Turkey)":[35,39],Egypt:[30,26.5],Nigeria:[8,9.5],Thailand:[101,15],Sudan:[30,15.5],Algeria:[3,28],Iraq:[44,33],"Myanmar (Burma)":[96,21],Afghanistan:[66,34],Yemen:[47.5,15.5],Morocco:[-6,32],Uzbekistan:[64,41.5],"Saudi Arabia":[45,24],Ethiopia:[39.5,9],Niger:[9,17.5],"Korea, North":[127,40],Nepal:[84,28.2],Mali:[-3.5,17],Somalia:[46.5,5.5],Malaysia:[108,3.5],Russia:[90,60],Cambodia:[105,12.7],Kazakhstan:[67,48],Senegal:[-14.5,14.5],"United States":[-98,39],Guinea:[-11,10.5],Tunisia:[9.5,34],Chad:[19,15.5],Tajikistan:[71,38.7],Jordan:[36.5,31],Azerbaijan:[47.5,40.3],Vietnam:[106,16],Israel:[35,31.3],Armenia:[45,40.2],Austria:[14.5,47.5],Bahrain:[50.6,26],Brunei:[114.7,4.5],Bulgaria:[25.5,42.7],"Burkina Faso":[-1.7,12.3],Cameroon:[12.5,6],Canada:[-106,56],"Cape Verde":[-23.6,16],"China, Hong Kong":[114.2,22.3],"China, Macau":[113.5,22.2],Cyprus:[33.2,35.1],"Côte d'Ivoire":[-5.5,7.5],Eritrea:[39,15.3],France:[2.5,47],Georgia:[43.5,42],Ghana:[-1,7.9],Greece:[22,39],"Guinea-Bissau":[-15,12],Italy:[12.5,42.5],Kenya:[38,.2],"Korea, South":[128,36.5],Kuwait:[47.7,29.3],Kyrgyzstan:[74.5,41.3],Lebanon:[35.8,33.9],Liberia:[-9.4,6.5],Moldova:[28.5,47.2],Oman:[56,21],Portugal:[-8,39.5],Qatar:[51.2,25.3],Serbia:[21,44],"Sierra Leone":[-11.8,8.5],Singapore:[103.8,1.35],"South Sudan":[31,7.5],Spain:[-3.7,40.3],Switzerland:[8.2,46.8],Syria:[38,35],Tanzania:[35,-6.3],Togo:[1,8.6],Turkmenistan:[59,39],Uganda:[32.5,1.4],Ukraine:[31,49],"United Arab Emirates":[54,24]};function I(u,G){const k=H[u];if(!k)return null;let T=0;const R=String(G||"");for(let J=0;J>8&255)/255-.5)*4]}const M=u=>String(u||"").trim().toLowerCase(),{map:x,initializeMap:A,destroy:$}=Ti({containerRef:l,accessToken:(t==null?void 0:t.value)||o.value.tk||"",style:o.value.style??"mapbox://styles/mapbox/light-v11",center:o.value.center??[55,22],zoom:o.value.zoom??1.7,minZoom:o.value.minZoom??1,maxZoom:o.value.maxZoom??12}),S=ra(()=>{const u=d.value,G=new Set(u.filter(T=>T.scope==="province").map(T=>T.province)),k=new Set(u.map(T=>T.lang));return{clusters:u.length,pgs:u.reduce((T,R)=>T+R.count,0),provinces:G.size,langs:k.size,withReach:u.filter(T=>T.reached.length).length}}),j=ra(()=>d.value.find(u=>u.key===v.value)||null);function b(u){return u&&typeof u=="object"?u.label??u.value??"":u??""}function C(u){return u&&typeof u=="object"?u.value??u.label??"":u??""}const F={"People's Republic of China":"China","Lao People’s Democratic Republic":"Laos","Lao People's Democratic Republic":"Laos"};function B(u){return F[u]||u}function ia(u,G){const k=new Map;for(const R of u){const J=Number(R.latitude),y=Number(R.longitude),E=b(R.primary_language)||"(unknown language)",h=B(b(R.country_code)||"(unknown)"),N=R.slug||C(R.primary_language)+":"+R.name,z=G[N]||null,V=z?"province":"country",oa=z||h,ea=E+" · "+oa+(z?" ("+h+")":"");let p=k.get(ea);p||(p={key:ea,lang:E,rol3:C(R.primary_language)||"",country:h,province:z,scope:V,scopeName:oa,count:0,_sumLat:0,_sumLng:0,_n:0,members:[],reached:[]},k.set(ea,p)),p.count++,p.members.push({name:R.name,slug:N,lang:E,country:h}),isFinite(J)&&isFinite(y)&&(p._sumLat+=J,p._sumLng+=y,p._n++)}const T=[];for(const R of k.values())R._n&&(R.lat=R._sumLat/R._n,R.lng=R._sumLng/R._n,delete R._sumLat,delete R._sumLng,delete R._n,T.push(R));return T.sort((R,J)=>J.count-R.count),T}function ga(u,G){const k=new Set(G.map(h=>h.rol3).filter(Boolean)),T=new Set(G.map(h=>M(h.lang))),R=new Set,J=[],y=new Map,E=new Map;for(const h of Object.values(u.countries||{}))for(const N of h.neighbors||[]){const z=M(N.lang),V=N.rol3||"";if(!(V&&k.has(V))&&!T.has(z))continue;const ea=N.name+"|"+N.country+"|"+(V||z);if(R.has(ea))continue;R.add(ea);const p=Number(N.lng)&&Number(N.lat)?[Number(N.lng),Number(N.lat)]:I(N.country,ea);if(!p)continue;const m={name:N.name,country:N.country,lang:N.lang,rol3:V,lk:z,pct:N.pct_christian||0,pop:N.pop||0,lng:p[0],lat:p[1]};J.push(m),V&&(y.has(V)||y.set(V,[]),y.get(V).push(m)),E.has(z)||E.set(z,[]),E.get(z).push(m)}for(const h of G){const N=h.rol3?y.get(h.rol3)||[]:[],z=E.get(M(h.lang))||[];h.reached=N.length&&z.length?[...new Set([...N,...z])]:N.length?N:z}return J}const na=u=>({type:"FeatureCollection",features:u});function ma(){return na(d.value.map(u=>({type:"Feature",geometry:{type:"Point",coordinates:[u.lng,u.lat]},properties:{key:u.key,lang:u.lang,count:u.count,scope:u.scope,hasReach:u.reached.length>0,label:u.lang+" ("+u.count+")"}})))}function Sa(){var G;const u=[];for(const k of d.value)for(const T of k.members){const J=I(k.country,T.slug)||[k.lng,k.lat];u.push({type:"Feature",geometry:{type:"Point",coordinates:[k.lng+(J[0]-(((G=H[k.country])==null?void 0:G[0])??J[0]))*.15,k.lat]},properties:{key:k.key}})}return na(u)}function $a(){const u=j.value,G=u&&u.rol3||"",k=u?M(u.lang):null;return na(_.value.map(T=>({type:"Feature",geometry:{type:"Point",coordinates:[T.lng,T.lat]},properties:{name:T.name,country:T.country,lang:T.lang,pct:T.pct,color:e(T.pct),matched:u?G&&T.rol3===G||!!k&&T.lk===k:!1}})))}function ha(){const u=j.value;return na(u?u.reached.map(G=>({type:"Feature",geometry:{type:"LineString",coordinates:[[u.lng,u.lat],[G.lng,G.lat]]},properties:{}})):[])}function pa(u,G,k){const T=u.getSource(G);T?T.setData(k):u.addSource(G,{type:"geojson",data:k})}function Y(){var G;const u=x.value;!u||!((G=u.isStyleLoaded)!=null&&G.call(u))||(pa(u,fr,ha()),pa(u,sg,Sa()),pa(u,_r,$a()),pa(u,br,ma()),u.getLayer(ug)||u.addLayer({id:ug,type:"line",source:fr,paint:{"line-color":yr,"line-width":1.1,"line-opacity":.5,"line-dasharray":[2,2]}}),u.getLayer(gg)||u.addLayer({id:gg,type:"circle",source:sg,minzoom:3.6,paint:{"circle-radius":["interpolate",["linear"],["zoom"],3.6,1.6,8,4],"circle-color":Ui,"circle-opacity":.5}}),u.getLayer(Pr)||u.addLayer({id:Pr,type:"circle",source:_r,paint:{"circle-radius":["case",["get","matched"],4.5,["interpolate",["linear"],["zoom"],1,2,6,3.5]],"circle-color":["get","color"],"circle-stroke-width":["case",["get","matched"],1.5,.5],"circle-stroke-color":["case",["get","matched"],yr,"#ffffff"],"circle-opacity":["case",["boolean",["feature-state","dim"],!1],.15,["case",["get","matched"],.95,.6]]}}),u.getLayer(An)||u.addLayer({id:An,type:"circle",source:br,paint:{"circle-radius":["interpolate",["linear"],["get","count"],1,7,25,16,80,26,130,34],"circle-color":Ui,"circle-opacity":["case",["==",["get","key"],["literal",""]],.6,.55],"circle-stroke-width":["case",["get","hasReach"],2.4,1],"circle-stroke-color":["case",["get","hasReach"],e(80),Tt]}}),u.getLayer(cg)||u.addLayer({id:cg,type:"symbol",source:br,minzoom:2.6,layout:{"text-field":["get","label"],"text-size":11,"text-offset":[0,1.3],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":Tt,"text-halo-color":"#ffffff","text-halo-width":1.4}}),L())}function L(){const u=x.value;!u||!u.getLayer(An)||(u.setPaintProperty(An,"circle-stroke-color",v.value?["case",["==",["get","key"],v.value],yr,["case",["get","hasReach"],e(80),Tt]]:["case",["get","hasReach"],e(80),Tt]),u.setPaintProperty(An,"circle-stroke-width",v.value?["case",["==",["get","key"],v.value],4,["case",["get","hasReach"],2.4,1]]:["case",["get","hasReach"],2.4,1]))}function D(u){v.value=v.value===u?null:u;const G=x.value;G&&(pa(G,_r,$a()),pa(G,fr,ha()),L());const k=j.value;if(k&&G)try{let T=k.lng,R=k.lng,J=k.lat,y=k.lat;for(const E of k.reached)T=Math.min(T,E.lng),R=Math.max(R,E.lng),J=Math.min(J,E.lat),y=Math.max(y,E.lat);G.stop(),T===R&&J===y?G.easeTo({center:[k.lng,k.lat],zoom:4,duration:800}):G.fitBounds([[T,J],[R,y]],{padding:110,maxZoom:5.5,duration:800})}catch{}}function la(){const u=j.value;if(!u)return;const G={target:u.country,language:u.lang,province:u.province||null,scope:u.scope,clusterKey:u.key};try{const T=r.value&&r.value.getRootNode&&r.value.getRootNode().host||r.value;T&&T.dispatchEvent(new CustomEvent("upgn:drill-flower",{bubbles:!0,composed:!0,detail:G}))}catch{}}function X(u){return String(u??"").replace(/[&<>"']/g,G=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[G])}function c(u){w.value.show&&(w.value.x=u.clientX,w.value.y=u.clientY)}async function f(u){for(const G of u)try{const k=await fetch(G);if(k.ok)return await k.json()}catch{}return null}async function O(){const k=(o.value.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL)||"https://pray.doxa.life").replace(/\/?$/,"")+"/api/people-groups/list?fields="+"slug,name,latitude,longitude,country_code,primary_language,wagf_block,population"+"&lang=en",T=await fetch(k,{cache:"no-store"});if(!T.ok)throw new Error("doxa list "+T.status);const R=await T.json();return R.posts||R.data||R.records||R.results||R.items||(Array.isArray(R)?R:[])}return ve(async()=>{var E,h,N;await A();const u=x.value;try{u&&u.setProjection("mercator")}catch{}const G=o.value.dataBase||typeof window<"u"&&window.MAP_APP_BASE_URL||"",k=z=>G?G.replace(/\/?$/,"/")+"data/"+z:null,T=await f([o.value.adminUrl,k("admin1-membership.json")].filter(Boolean))||Bc||{},R=await f([o.value.dataUrl,k("reached-neighbors.json")].filter(Boolean))||nn||{countries:{}};let J=[];try{J=await O()}catch(z){g.value="Live doxa API unreachable — "+z.message,s.value=!0;return}d.value=ia(J,T),_.value=ga(R,d.value),s.value=!0;try{window.__lcStats={reachedPins:_.value.length,matchedClusters:d.value.filter(z=>z.reached&&z.reached.length).length,totalClusters:d.value.length,matchedByRol3:_.value.filter(z=>z.rol3).length}}catch{}const y=()=>{Y(),u.on("click",An,V=>{var ea;const oa=(ea=V.features)==null?void 0:ea[0];oa&&D(oa.properties.key)});const z=(V,oa)=>{u.on("mouseenter",V,()=>{u.getCanvas().style.cursor="pointer"}),u.on("mouseleave",V,()=>{u.getCanvas().style.cursor="",w.value={...w.value,show:!1}}),u.on("mousemove",V,ea=>{var m;const p=(m=ea.features)==null?void 0:m[0];p&&(w.value={show:!0,x:ea.originalEvent.clientX,y:ea.originalEvent.clientY,html:oa(p.properties)})})};z(An,V=>`${X(V.lang)}
${X(V.key)}
unreached ${V.count} groups
reached ${V.hasReach?"matching neighbors ✓":"none found"}
click → bounded set + flower
`),z(Pr,V=>`${X(V.name)}
${X(V.country)} · ${X(V.lang)}
reached ${Math.round(V.pct)}% Christian
`)};(E=u==null?void 0:u.isStyleLoaded)!=null&&E.call(u)?y():(h=u==null?void 0:u.once)==null||h.call(u,"load",y),(N=u==null?void 0:u.once)==null||N.call(u,"idle",()=>{s.value&&Y()})}),sn(()=>{$()}),$e(` + .lc-root { position:absolute; inset:0; display:flex; flex-direction:column; overflow:hidden; + background:#ffffff; color:#1f2937; isolation:isolate; + font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } + .lc-map { position:absolute; inset:0; } + .lc-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; + background:#ffffff; color:${Di}; font:13px/1 ui-monospace,monospace; z-index:5; } + + .lc-top { position:absolute; top:10px; left:10px; right:10px; z-index:30; display:flex; + flex-wrap:wrap; gap:8px; align-items:center; pointer-events:none; } + .lc-top > * { pointer-events:auto; } + .lc-title { background:${Di}; color:#fff; font:700 12px/1 ui-monospace,monospace; + letter-spacing:.04em; text-transform:uppercase; padding:8px 12px; border-radius:8px; } + .lc-stats { margin-left:auto; background:rgba(255,255,255,.94); border:1px solid #d1d5db; + border-radius:8px; padding:7px 11px; font:600 11px/1.5 ui-monospace,monospace; color:#374151; text-align:right; } + .lc-stats b { color:${Tt}; } + + .lc-legend { position:absolute; left:10px; bottom:34px; z-index:25; background:rgba(255,255,255,.95); + border:1px solid #d1d5db; border-radius:10px; padding:9px 12px; max-width:240px; box-shadow:0 4px 14px rgba(0,0,0,.12); } + .lc-legend h4 { font:700 9px/1 ui-monospace,monospace; letter-spacing:.1em; text-transform:uppercase; color:#6b7280; margin-bottom:8px; } + .lc-lrow { display:flex; align-items:center; gap:8px; padding:3px 0; font-size:11px; color:#374151; } + .lc-dot { width:12px; height:12px; border-radius:50%; flex:0 0 auto; border:1px solid rgba(0,0,0,.25); } + + .lc-panel { position:absolute; top:52px; right:10px; bottom:34px; z-index:26; width:290px; max-width:48vw; + background:rgba(255,255,255,.98); border:1px solid #d1d5db; border-radius:10px; box-shadow:0 4px 16px rgba(0,0,0,.16); + display:flex; flex-direction:column; overflow:hidden; } + .lc-panel-head { padding:11px 13px; background:${Ui}; color:#fff; } + .lc-panel-head .lc-h-lang { font:800 15px/1.2 -apple-system,sans-serif; } + .lc-panel-head .lc-h-sub { margin-top:3px; font:600 11px/1.3 ui-monospace,monospace; color:#ffe4e6; } + .lc-panel-body { flex:1 1 0; overflow-y:auto; padding:9px 11px; } + .lc-sec { font:700 9px/1 ui-monospace,monospace; letter-spacing:.1em; text-transform:uppercase; color:#6b7280; margin:6px 0 6px; } + .lc-chip { display:inline-block; font:600 10px/1 ui-monospace,monospace; padding:3px 7px; border-radius:999px; + border:1px solid #d1d5db; color:#374151; background:#f9fafb; margin:0 4px 4px 0; } + .lc-re { border:1px solid #e5e7eb; border-radius:8px; padding:6px 8px; margin-bottom:5px; } + .lc-re-name { font:700 12px/1.2 -apple-system,sans-serif; color:#111827; display:flex; align-items:center; gap:6px; } + .lc-re-meta { margin-top:3px; font:11px/1.3 ui-monospace,monospace; color:#4b5563; } + .lc-drill { display:block; width:100%; margin-top:8px; padding:9px; border:0; border-radius:8px; cursor:pointer; + background:${Di}; color:#fff; font:700 12px/1 -apple-system,sans-serif; } + .lc-drill:hover { background:#013a8a; } + .lc-muted { color:#6b7280; font-size:11px; padding:8px 2px; } + + .lc-footer { position:absolute; left:0; right:0; bottom:0; z-index:20; background:${Di}; color:#dbe4f3; + font:10px/1.4 ui-monospace,monospace; padding:5px 12px; display:flex; flex-wrap:wrap; gap:3px 14px; align-items:center; } + .lc-footer b { color:#fff; } + + .lc-tip { position:fixed; z-index:60; pointer-events:none; max-width:240px; background:#0e1730; + border:1px solid #34508c; border-radius:9px; padding:9px 11px; box-shadow:0 6px 22px rgba(0,0,0,.5); font-size:11.5px; color:#dbe4f3; } + .lc-tip strong { font-size:13px; color:#fff; } + .lc-tip-sub { color:#fda4af; font:600 10px/1.3 ui-monospace,monospace; margin:2px 0 6px; } + .lc-tip-row { display:flex; gap:6px; line-height:1.5; } + .lc-tip-k { color:#7e90b6; min-width:64px; } + + @media (max-width:720px){ .lc-stats{ display:none; } .lc-panel{ width:210px; } .lc-legend{ max-width:160px; } } +`,"lang-cluster"),(u,G)=>(W(),Z("div",{ref_key:"lcRoot",ref:r,class:"lc-root",onMousemove:c},[P("div",{ref_key:"mapContainer",ref:l,class:"lc-map"},null,512),s.value?fa("",!0):(W(),Z("div",H_,aa(g.value),1)),P("div",z_,[G[5]||(G[5]=P("span",{class:"lc-title"},"My UPG Neighbor · Language Clusters",-1)),s.value?(W(),Z("span",V_,[P("b",null,aa(S.value.clusters),1),G[0]||(G[0]=ba(" language clusters · ",-1)),P("b",null,aa(S.value.pgs),1),G[1]||(G[1]=ba(" unreached",-1)),G[2]||(G[2]=P("br",null,null,-1)),P("b",null,aa(S.value.provinces),1),G[3]||(G[3]=ba(" IN/CN provinces · ",-1)),P("b",null,aa(S.value.withReach),1),G[4]||(G[4]=ba(" with reached match ",-1))])):fa("",!0)]),s.value?(W(),Z("div",W_,[G[8]||(G[8]=P("h4",null,"Bounded sets",-1)),P("div",Y_,[P("span",{class:"lc-dot",style:Oa({background:Ui})},null,4),G[6]||(G[6]=ba(" Unreached language cluster (size = #groups)",-1))]),P("div",J_,[P("span",{class:"lc-dot",style:Oa({background:e(80)})},null,4),G[7]||(G[7]=ba(" Reached neighbor (matched by language)",-1))]),G[9]||(G[9]=P("div",{class:"lc-lrow",style:{color:"#6b7280","font-size":"10px","margin-top":"4px"}},"green ring = cluster has a reached match · click a cluster to drill",-1))])):fa("",!0),s.value&&j.value?(W(),Z("div",Z_,[P("div",q_,[P("div",X_,aa(j.value.lang),1),P("div",Q_,aa(j.value.scope==="province"?j.value.province+" · "+j.value.country:j.value.country),1)]),P("div",a5,[P("div",e5,"Bounded set — "+aa(j.value.count)+" unreached groups",1),(W(!0),Z(Aa,null,Da(j.value.members.slice(0,18),(k,T)=>(W(),Z("span",{key:T,class:"lc-chip"},aa(k.name),1))),128)),j.value.members.length>18?(W(),Z("span",n5,"+"+aa(j.value.members.length-18)+" more",1)):fa("",!0),P("div",t5,"Reached neighbors (same language) — "+aa(j.value.reached.length),1),j.value.reached.length?fa("",!0):(W(),Z("div",i5,"No reached people-group shares this language in the baked set. A frontier — pray for laborers (Luke 10:2).")),(W(!0),Z(Aa,null,Da(j.value.reached,(k,T)=>(W(),Z("div",{key:"r"+T,class:"lc-re"},[P("div",o5,[P("span",{class:"lc-dot",style:Oa({background:e(k.pct)})},null,4),ba(aa(k.name),1)]),P("div",r5,aa(k.country)+" · "+aa(Math.round(k.pct))+"% Christian · "+aa(k.lang),1)]))),128)),P("button",{class:"lc-drill",onClick:la},"Open flower view ▸")])])):fa("",!0),s.value?(W(),Z("div",l5,[G[10]||(G[10]=P("span",null,[P("b",null,"Language clusters"),ba(" red unreached · green reached-by-language")],-1)),P("span",null,"unreached = LIVE pray.doxa.life ("+aa(S.value.pgs)+")",1),G[11]||(G[11]=P("span",null,"IN/CN province = real ADM1 (my-upg-100-list point-in-polygon)",-1)),G[12]||(G[12]=P("span",null,"reached = baked reached-neighbors",-1)),G[13]||(G[13]=P("span",null,"Luke 10:2 · bounded sets → flowers",-1))])):fa("",!0),w.value.show?(W(),Z("div",{key:4,class:"lc-tip",style:Oa({left:w.value.x+14+"px",top:w.value.y+14+"px"}),innerHTML:w.value.html},null,12,s5)):fa("",!0)],544))}},g5="#000000",Cr={"Indo-European":"#e74c3c",Dravidian:"#ff9800","Afro-Asiatic":"#27ae60","Sino-Tibetan":"#3498db","Niger-Congo":"#9b59b6",Unclassified:"#95a5a6","Nilo-Saharan":"#e91e63","Khoe-Kwadi":"#00bcd4","Austro-Asiatic":"#00bcd4","Kra-Dai":"#8e44ad",Austronesian:"#ff69b4","Hmong-Mien":"#f44336",Turkic:"#ffc107","Nakh-Daghestanian":"#009688",Mongolic:"#795548",Uralic:"#607d8b",Tungusic:"#4caf50",Japonic:"#ff5722",Cariban:"#673ab7",Tupian:"#03a9f4",Tucanoan:"#8bc34a",Maipurean:"#ffc107",Panoan:"#cddc39",Guajiboan:"#9e9e9e",Chibchan:"#ff7043",Quechuan:"#ab47bc",Jean:"#26a69a",Harákmbut:"#7e57c2",Nambikwara:"#42a5f5",Muran:"#66bb6a",Karajá:"#ffa726",Bororoan:"#ef5350",Arauan:"#5c6bc0",Yanomaman:"#26c6da",Yaguan:"#d4e157",Witotoan:"#78909c",Zamucoan:"#8d6e63",Puinavean:"#aed581",Barbacoan:"#4db6ac","Eyak-Athabaskan":"#7986cb","Trans-New Guinea":"#ba68c8",Andamanese:"#4dd0e1","Atlantic-Congo":"#7D3C98",Mande:"#B9770E","Sign Language":"#212121",Creole:"#9575cd","Mixed language":"#a1887f","Language isolate":"#90a4ae",Unknown:"#000000"},u5=Cr;function Sn(a){return Cr[a]||g5}const d5=(()=>{const a=n=>String(n||"").toLowerCase().trim(),e={};for(const n of Object.keys(Cr))e[a(n)]=n;return e})(),p5={"tai-kadai":"Kra-Dai",none:"Unknown"};function m5(a){if(!a)return"Unknown";const e=String(a).trim(),n=e.toLowerCase();return p5[n]||d5[n]||e}const le={Chamacoco:"Zamucoan",Ninam:"Yanomaman",Yagua:"Yaguan",Muinane:"Witotoan",Finnish:"Uralic","Hill Mari":"Uralic",Mansi:"Uralic","Meadow Mari":"Uralic","North Saami":"Uralic",Carabayo:"Unclassified",Kujarge:"Unclassified",Shabo:"Unclassified",Ainu:"Turkic",Kazakh:"Turkic","Khorasani Turkish":"Turkic",Kyrgyz:"Turkic","Northern Uzbek":"Turkic","South Azerbaijani":"Turkic",Turkish:"Turkic",Tuvan:"Turkic",Uyghur:"Turkic",Amundava:"Tupian",Araweté:"Tupian","Asurini of Xingú":"Tupian","Avá-Canoeiro":"Tupian",Awetí:"Tupian",Kamayurá:"Tupian",Karo:"Tupian",Morerebi:"Tupian",Tenharim:"Tupian","Uru-Eu-Wau-Wau":"Tupian","Uru-Pa-In":"Tupian",Wayampi:"Tupian","Zo’é":"Tupian",Evenki:"Tungusic",Xibe:"Tungusic",Carapana:"Tucanoan",Cubeo:"Tucanoan",Desano:"Tucanoan",Macuna:"Tucanoan",Piratapuyo:"Tucanoan",Siona:"Tucanoan",Siriano:"Tucanoan",Tucano:"Tucanoan",Tuyuca:"Tucanoan",Waimaha:"Tucanoan",Tay:"Trans-New Guinea",Adi:"Sino-Tibetan",Akha:"Sino-Tibetan","Amdo Tibetan":"Sino-Tibetan",Axi:"Sino-Tibetan",Biyo:"Sino-Tibetan","Boro (India)":"Sino-Tibetan",Brokkat:"Sino-Tibetan",Bugun:"Sino-Tibetan",Byangsi:"Sino-Tibetan","Central Lalo":"Sino-Tibetan","Central Tibetan":"Sino-Tibetan",Chak:"Sino-Tibetan",Chalikha:"Sino-Tibetan",Chaudangsi:"Sino-Tibetan",Chocangacakha:"Sino-Tibetan",Darlong:"Sino-Tibetan",Dhimal:"Sino-Tibetan","Digaro-Mishmi":"Sino-Tibetan",Dzalakha:"Sino-Tibetan","Eastern Nisu":"Sino-Tibetan",Ersu:"Sino-Tibetan",Gahri:"Sino-Tibetan",Gongduk:"Sino-Tibetan",Gyalsumdo:"Sino-Tibetan",Hani:"Sino-Tibetan","Idu-Mishmi":"Sino-Tibetan",Kaike:"Sino-Tibetan",Kanashi:"Sino-Tibetan",Katso:"Sino-Tibetan",Khamba:"Sino-Tibetan",Koireng:"Sino-Tibetan",Kucong:"Sino-Tibetan",Kurtokha:"Sino-Tibetan",Ladakhi:"Sino-Tibetan",Lakha:"Sino-Tibetan","Lang’e":"Sino-Tibetan",Lhokpu:"Sino-Tibetan",Lolopo:"Sino-Tibetan",Lunanakha:"Sino-Tibetan","Mandarin Chinese":"Sino-Tibetan",Meitei:"Sino-Tibetan","Miju-Mishmi":"Sino-Tibetan",Mpi:"Sino-Tibetan",Na:"Sino-Tibetan",Namuyi:"Sino-Tibetan",Narua:"Sino-Tibetan",Naxi:"Sino-Tibetan","Northern Muji":"Sino-Tibetan",Nuosu:"Sino-Tibetan",Nupbikha:"Sino-Tibetan",Nyenkha:"Sino-Tibetan",Olekha:"Sino-Tibetan",Pahari:"Sino-Tibetan",Pattani:"Sino-Tibetan","Phana’":"Sino-Tibetan",Phula:"Sino-Tibetan",Phunoi:"Sino-Tibetan",Puma:"Sino-Tibetan",Puroik:"Sino-Tibetan",Raji:"Sino-Tibetan",Rawat:"Sino-Tibetan",Sani:"Sino-Tibetan",Sherdukpen:"Sino-Tibetan",Sherpa:"Sino-Tibetan",Shuhi:"Sino-Tibetan",Sila:"Sino-Tibetan",Singpho:"Sino-Tibetan",Sunwar:"Sino-Tibetan","Tawang Monpa":"Sino-Tibetan",Tseku:"Sino-Tibetan",Tshangla:"Sino-Tibetan",Usoi:"Sino-Tibetan","Western Minyag":"Sino-Tibetan","Wusa Nasu":"Sino-Tibetan","Xiang Chinese":"Sino-Tibetan",Yakkha:"Sino-Tibetan","Youle Jinuo":"Sino-Tibetan","Yue Chinese":"Sino-Tibetan",Zakhring:"Sino-Tibetan","Afghan Sign Language":"Sign Language","Albanian Sign Language":"Sign Language","Algerian Sign Language":"Sign Language","American Sign Language":"Sign Language","Armenian Sign Language":"Sign Language","British Sign Language":"Sign Language","Bulgarian Sign Language":"Sign Language","Cambodian Sign Language":"Sign language","Cuban Sign Language":"Sign Language","Egyptian Sign Language":"Sign Language","Greek Sign Language":"Sign Language","Guinean Sign Language":"Sign Language","Hong Kong Sign Language":"Sign Language","Icelandic Sign Language":"Sign Language","Iranian Sign Language":"Sign Language","Israeli Sign Language":"Sign Language","Jamaican Sign Language":"Sign Language","Jordanian Sign Language":"Sign Language","Laos Sign Language":"Sign Language","Libyan Sign Language":"Sign Language","Maltese Sign Language":"Sign Language","Mauritian Sign Language":"Sign Language","Moroccan Sign Language":"Sign Language","Mozambican Sign Language":"Sign Language","Myanmar Sign Language":"Sign language","Natural Sign Language":"Sign Language","Pakistan Sign Language":"Sign Language","Papua New Guinean Sign Language":"Sign language","Russian Sign Language":"Sign Language","Saudi Arabian Sign Language":"Sign Language","Sign Language of the Netherlands":"Sign Language","Solomon Islands Sign Language":"Sign Language","Sri Lankan Sign Language":"Sign Language","Swedish Sign Language":"Sign Language","Turkish Sign Language":"Sign Language","Northern Conchucos Ancash Quechua":"Quechuan","Northern Pastaza Quichua":"Quechuan",Hupdë:"Puinavean",Amahuaca:"Panoan",Korubo:"Panoan",Sharanahua:"Panoan","Shipibo-Conibo":"Panoan",Yaminahua:"Panoan",Yawanawa:"Panoan",Afitti:"Nilo-Saharan",Assangori:"Nilo-Saharan","Beli (South Sudan)":"Nilo-Saharan",Berta:"Nilo-Saharan",Burun:"Nilo-Saharan","Dar Daju Daju":"Nilo-Saharan","Dar Fur Daju":"Nilo-Saharan","Dar Sila Daju":"Nilo-Saharan",Dazaga:"Nilo-Saharan","Dendi (Benin)":"Nilo-Saharan",Dilling:"Nilo-Saharan",Fur:"Nilo-Saharan",Gbaya:"Nilo-Saharan",Ghulfan:"Nilo-Saharan",Gwama:"Nilo-Saharan","Humburi Senni Songhay":"Nilo-Saharan",Jopadhola:"Nilo-Saharan",Kadaru:"Nilo-Saharan",Kanga:"Nilo-Saharan",Karanga:"Nilo-Saharan",Karko:"Nilo-Saharan",Kebu:"Nilo-Saharan",Keiga:"Nilo-Saharan",Keliko:"Nilo-Saharan",Kendeje:"Nilo-Saharan",Kibet:"Nilo-Saharan","Komo (Sudan)":"Nilo-Saharan",Korandje:"Nilo-Saharan",Kulfa:"Nilo-Saharan",Kwegu:"Nilo-Saharan",Laarim:"Nilo-Saharan",Logorik:"Nilo-Saharan",Majang:"Nilo-Saharan","Manga Kanuri":"Nilo-Saharan",Mango:"Nilo-Saharan",Mararit:"Nilo-Saharan",Marfa:"Nilo-Saharan",Midob:"Nilo-Saharan","Mo’da":"Nilo-Saharan",Morom:"Nilo-Saharan",Moru:"Nilo-Saharan",Naba:"Nilo-Saharan",Nara:"Nilo-Saharan",Njalgulgule:"Nilo-Saharan",Nuer:"Nilo-Saharan","Nyamusa-Molo":"Nilo-Saharan",Nyangatom:"Nilo-Saharan","Olu’bo":"Nilo-Saharan",Opo:"Nilo-Saharan",Päri:"Nilo-Saharan","Sara Kaba Naa":"Nilo-Saharan",Surbakhal:"Nilo-Saharan",Tadaksahak:"Nilo-Saharan","Tama (Chad)":"Nilo-Saharan",Temein:"Nilo-Saharan",Thuri:"Nilo-Saharan","Tirmaga-Chai Suri":"Nilo-Saharan",Toposa:"Nilo-Saharan",Tumtum:"Nilo-Saharan","Wali (Sudan)":"Nilo-Saharan","Yerwa Kanuri":"Nilo-Saharan",Yulu:"Nilo-Saharan",Zaghawa:"Nilo-Saharan","Adamawa Fulfulde":"Niger-Congo",Akaselem:"Niger-Congo","Amba (Uganda)":"Niger-Congo",Anii:"Niger-Congo",Baangi:"Niger-Congo",Badyara:"Niger-Congo","Bago-Kusuntu":"Niger-Congo",Bai:"Niger-Congo","Bainouk-Gunyaamolo":"Niger-Congo",Bamanankan:"Niger-Congo","Banda-Mbrès":"Niger-Congo",Bandial:"Niger-Congo",Bankagooma:"Niger-Congo","Belanda Viri":"Niger-Congo",Bemba:"Niger-Congo",Bolgo:"Niger-Congo","Bon Gula":"Niger-Congo",Bua:"Niger-Congo",Chichewa:"Niger-Congo","Chung (Cameroon)":"Niger-Congo","Ci Gbe":"Niger-Congo",Degema:"Niger-Congo",Dek:"Niger-Congo",Dhimba:"Niger-Congo",Dogoso:"Niger-Congo","East Limba":"Niger-Congo",Engenni:"Niger-Congo",Epie:"Niger-Congo",Éwé:"Niger-Congo",Fania:"Niger-Congo",Foodo:"Niger-Congo",Fwe:"Niger-Congo",Gciriku:"Niger-Congo",Gwa:"Niger-Congo",Herero:"Niger-Congo",Ibuoro:"Niger-Congo","Jenaama Bozo":"Niger-Congo",Jita:"Niger-Congo",Jula:"Niger-Congo",Kabiyè:"Niger-Congo",Kadung:"Niger-Congo",Kakabe:"Niger-Congo",Kalamsé:"Niger-Congo","Kami (Tanzania)":"Niger-Congo","Kango (Bas-Uélé District)":"Niger-Congo",Kasem:"Niger-Congo","Kelengaxo Bozo":"Niger-Congo",Khe:"Niger-Congo",Khisa:"Niger-Congo",Kim:"Niger-Congo",Kinyarwanda:"Niger-Congo",Kipfokomu:"Niger-Congo",Kitharaka:"Niger-Congo",Kiyombe:"Niger-Congo",Ko:"Niger-Congo",Koalib:"Niger-Congo",Koke:"Niger-Congo",Konongo:"Niger-Congo","Koro Nulu":"Niger-Congo","Koro Zuba":"Niger-Congo",Kuhane:"Niger-Congo",Kunda:"Niger-Congo",Kuranko:"Niger-Congo",Kuria:"Niger-Congo",Kwangali:"Niger-Congo",Lame:"Niger-Congo",Laru:"Niger-Congo",Lopa:"Niger-Congo","Makhuwa-Meetto":"Niger-Congo","Makhuwa-Shirima":"Niger-Congo","Malawi Nyiha":"Niger-Congo",Mandinka:"Niger-Congo",Mankanya:"Niger-Congo",Mansoanka:"Niger-Congo",Mbukushu:"Niger-Congo","Mende (Sierra Leone)":"Niger-Congo",Miyobe:"Niger-Congo",Mushungulu:"Niger-Congo","Mwali Comorian":"Niger-Congo","Mwera (Chimwera)":"Niger-Congo",Ndemli:"Niger-Congo",Ndengereko:"Niger-Congo",Ndumu:"Niger-Congo",Ndunga:"Niger-Congo","Ndzwani Comorian":"Niger-Congo",Ngile:"Niger-Congo","Northwest Gbaya":"Niger-Congo",Notre:"Niger-Congo",Nyamwanga:"Niger-Congo",Nyankore:"Niger-Congo",Nyengo:"Niger-Congo",Okpamheri:"Niger-Congo",Osatu:"Niger-Congo","Pana (Burkina Faso)":"Niger-Congo",Pulaar:"Niger-Congo",Pular:"Niger-Congo",Rufiji:"Niger-Congo","Sankaran Maninka":"Niger-Congo",Sapo:"Niger-Congo","Senara Sénoufo":"Niger-Congo",Shanga:"Niger-Congo",Sininkere:"Niger-Congo","Southern Ngbandi":"Niger-Congo",Swahili:"Niger-Congo","Syenara Sénoufo":"Niger-Congo",Tagbu:"Niger-Congo",Tagoi:"Niger-Congo",Tegali:"Niger-Congo",Tem:"Niger-Congo","Tiéyaxo Bozo":"Niger-Congo",Tiyaa:"Niger-Congo",Tocho:"Niger-Congo","Tonga (Zambia)":"Niger-Congo",Totela:"Niger-Congo","Toura (Côte d’Ivoire)":"Niger-Congo",Tswa:"Niger-Congo",Tumbuka:"Niger-Congo",Ukaan:"Niger-Congo",Uneme:"Niger-Congo",Vai:"Niger-Congo",Vute:"Niger-Congo",Waama:"Niger-Congo",Warnang:"Niger-Congo",Wolof:"Niger-Congo",Yao:"Niger-Congo",Yauma:"Niger-Congo",Yom:"Niger-Congo","Zan Gula":"Niger-Congo",Zande:"Niger-Congo",Zigula:"Niger-Congo",Mamaindê:"Nambikwara",Aghul:"Nakh-Daghestanian",Akhvakh:"Nakh-Daghestanian",Andi:"Nakh-Daghestanian",Avar:"Nakh-Daghestanian",Bagvalal:"Nakh-Daghestanian",Botlikh:"Nakh-Daghestanian",Chamalal:"Nakh-Daghestanian",Chechen:"Nakh-Daghestanian",Dargwa:"Nakh-Daghestanian",Kaitag:"Nakh-Daghestanian",Karata:"Nakh-Daghestanian",Khvarshi:"Nakh-Daghestanian",Tindi:"Nakh-Daghestanian",Pirahã:"Muran",Bonan:"Mongolic","China Buriat":"Mongolic",Daur:"Mongolic","Kalmyk-Oirat":"Mongolic","Peripheral Mongolian":"Mongolic","Russia Buriat":"Mongolic",Tagdal:"Mixed language",Wutunhua:"Mixed language","Ashéninka Perené":"Maipurean",Baniwa:"Maipurean",Cabiyarí:"Maipurean",Curripaco:"Maipurean","Enawené-Nawé":"Maipurean",Kanamarí:"Maipurean",Mehináku:"Maipurean","Pichis Ashéninka":"Maipurean",Waurá:"Maipurean",Bangime:"Language isolate",Burushaski:"Language isolate","Ai-Cham":"Kra-Dai",Aiton:"Kra-Dai","Dai Zhuang":"Kra-Dai",Duoluo:"Kra-Dai","Green Gelao":"Kra-Dai","Guibian Zhuang":"Kra-Dai",Hlai:"Kra-Dai",Jiamao:"Kra-Dai",Kang:"Kra-Dai",Khün:"Kra-Dai",Kuan:"Kra-Dai",Lachi:"Kra-Dai","Laha (Viet Nam)":"Kra-Dai",Lao:"Kra-Dai",Lü:"Kra-Dai","Mak (China)":"Kra-Dai","Northeastern Thai":"Kra-Dai","Northern Dong":"Kra-Dai","Northern Thai":"Kra-Dai",Nyaw:"Kra-Dai",Phake:"Kra-Dai","Phu Thai":"Kra-Dai",Qabiao:"Kra-Dai",Qau:"Kra-Dai","Qiubei Zhuang":"Kra-Dai",Shan:"Kra-Dai","Southern Dong":"Kra-Dai",Sui:"Kra-Dai","T’en":"Kra-Dai","Tai Daeng":"Kra-Dai","Tai Dam":"Kra-Dai","Tai Hongjin":"Kra-Dai","Tai Nüa":"Kra-Dai","Tai Ya":"Kra-Dai","Tai Yo":"Kra-Dai","Ts’ün-Lao":"Kra-Dai","Yang Zhuang":"Kra-Dai",Yerong:"Kra-Dai",Yong:"Kra-Dai",Yoy:"Kra-Dai",Khoekhoe:"Khoe-Kwadi",Karajá:"Karajá","Pará Gavião":"Jean",Suyá:"Jean",Japanese:"Japonic","Oki-No-Erabu":"Japonic","Toku-No-Shima":"Japonic",Yaeyama:"Japonic",Yoron:"Japonic","Adivasi Oriya":"Indo-European",Afrikaans:"Indo-European","Alviri-Vidari":"Indo-European",Angika:"Indo-European",Assamese:"Indo-European",Bagheli:"Indo-European",Bagri:"Indo-European",Bashkardi:"Indo-European",Bateri:"Indo-European",Bengali:"Indo-European",Bhojpuri:"Indo-European",Bhunjia:"Indo-European",Bilaspuri:"Indo-European",Bosnian:"Indo-European","Braj Bhasha":"Indo-European",Brokskat:"Indo-European",Bundeli:"Indo-European",Catalan:"Indo-European",Chambeali:"Indo-European",Chhattisgarhi:"Indo-European",Dameli:"Indo-European",Dari:"Indo-European",Dhundari:"Indo-European",Dogri:"Indo-European",Domari:"Indo-European",Dutch:"Indo-European","Eastern Balochi":"Indo-European","Eastern Panjabi":"Indo-European","Eastern Yiddish":"Indo-European",English:"Indo-European",French:"Indo-European",Gaddi:"Indo-European",Garhwali:"Indo-European",Gawri:"Indo-European",Gowro:"Indo-European",Gujarati:"Indo-European",Gujari:"Indo-European",Halbi:"Indo-European",Haroti:"Indo-European",Haryanvi:"Indo-European",Hindi:"Indo-European","Indus Kohistani":"Indo-European","Iranian Persian":"Indo-European",Ishkashimi:"Indo-European",Kacchi:"Indo-European",Kalkoti:"Indo-European",Kanauji:"Indo-European",Kangri:"Indo-European",Karingani:"Indo-European",Kashmiri:"Indo-European",Kati:"Indo-European",Khunsari:"Indo-European",Konkani:"Indo-European",Kudmali:"Indo-European",Kumaoni:"Indo-European",Kumzari:"Indo-European",Laki:"Indo-European",Lasi:"Indo-European",Luwati:"Indo-European",Magahi:"Indo-European",Maithili:"Indo-European",Maldivian:"Indo-European",Malvi:"Indo-European",Marathi:"Indo-European","Marwari (India)":"Indo-European",Mewari:"Indo-European",Munji:"Indo-European",Nepali:"Indo-European",Nimadi:"Indo-European","Northern Kurdish":"Indo-European",Odia:"Indo-European","Pahari-Potwari":"Indo-European",Palula:"Indo-European",Panchpargania:"Indo-European",Pangwali:"Indo-European",Parachi:"Indo-European",Portuguese:"Indo-European",Russian:"Indo-European",Sadri:"Indo-European",Sanglechi:"Indo-European",Sarikoli:"Indo-European",Savi:"Indo-European",Semnani:"Indo-European",Serbian:"Indo-European",Shabak:"Indo-European",Shahrudi:"Indo-European",Shekhawati:"Indo-European",Shina:"Indo-European",Shughni:"Indo-European",Shumashti:"Indo-European",Sindhi:"Indo-European",Sivandi:"Indo-European",Soi:"Indo-European","Southern Balochi":"Indo-European",Spanish:"Indo-European",Tajik:"Indo-European",Talysh:"Indo-European",Urdu:"Indo-European",Ushojo:"Indo-European",Vaghri:"Indo-European","Vlax Romani":"Indo-European",Wagdi:"Indo-European",Wakhi:"Indo-European",Waneci:"Indo-European","Western Balochi":"Indo-European",Yadgha:"Indo-European","Bu-Nao Bunu":"Hmong-Mien","Central Mashan Miao":"Hmong-Mien","Chuanqiandian Cluster Miao":"Hmong-Mien","Eastern Xiangxi Miao":"Hmong-Mien","Iu Mien":"Hmong-Mien","Luopohe Miao":"Hmong-Mien","Northern Qiandong Miao":"Hmong-Mien","Pa-Hng":"Hmong-Mien","Southwestern Huishui Miao":"Hmong-Mien","Wunai Bunu":"Hmong-Mien","Younuo Bunu":"Hmong-Mien",Amarakaeri:"Harákmbut",Huachipaeri:"Harákmbut",Cuiba:"Guajiboan",Macaguán:"Guajiboan",Tlicho:"Eyak-Athabaskan",Kannada:"Dravidian",Kodava:"Dravidian","Korra Koraga":"Dravidian","Kota (India)":"Dravidian",Kudiya:"Dravidian",Malapandaram:"Dravidian",Malayalam:"Dravidian",Muthuvan:"Dravidian",Ravula:"Dravidian",Sholaga:"Dravidian",Tamil:"Dravidian",Telugu:"Dravidian",Tulu:"Dravidian",Vishavan:"Dravidian","Andaman Hindi Creole":"Creole","Cocos Islands Malay":"Creole","Juba Arabic":"Creole",Nubi:"Creole",Barí:"Chibchan","Barro Negro Tunebo":"Chibchan","Western Tunebo":"Chibchan",Ikpeng:"Cariban","Kuikúro-Kalapálo":"Cariban",Pemon:"Cariban",Trió:"Cariban","Waimiri-Atroarí":"Cariban",Waiwai:"Cariban",Yukpa:"Cariban",Borôro:"Bororoan",Chachi:"Barbacoan","Abai Sungai":"Austronesian",Ambelau:"Austronesian",Asilulu:"Austronesian",Balaesang:"Austronesian","Batak Alas-Kluet":"Austronesian","Batak Dairi":"Austronesian","Batak Karo":"Austronesian",Bonerate:"Austronesian",Bonggi:"Austronesian",Brunei:"Austronesian","Brunei Bisaya":"Austronesian",Buol:"Austronesian","Central Malay":"Austronesian","Central Sama":"Austronesian","Coastal Konjo":"Austronesian",Dampelas:"Austronesian","Dibabawon Manobo":"Austronesian",Dondo:"Austronesian",Gane:"Austronesian","Geser-Gorom":"Austronesian","Highland Konjo":"Austronesian",Hitu:"Austronesian",Iban:"Austronesian",Indonesian:"Austronesian","Kadazan Dusun":"Austronesian",Kiput:"Austronesian",Komodo:"Austronesian",Kompane:"Austronesian",Lahanan:"Austronesian","Lampung Nyo":"Austronesian","Larike-Wakasihu":"Austronesian",Lola:"Austronesian",Luhu:"Austronesian",Malay:"Austronesian",Mariri:"Austronesian",Moronene:"Austronesian",Rukai:"Austronesian","Sabah Bisaya":"Austronesian","Seit-Kaitetu":"Austronesian",Sula:"Austronesian","Tae’":"Austronesian",Tajio:"Austronesian",Tomini:"Austronesian",Tutong:"Austronesian",Ujir:"Austronesian",Aheu:"Austro-Asiatic",Alak:"Austro-Asiatic",Bit:"Austro-Asiatic","Bo (Laos)":"Austro-Asiatic",Bondo:"Austro-Asiatic",Brao:"Austro-Asiatic",Bugan:"Austro-Asiatic",Chong:"Austro-Asiatic",Chut:"Austro-Asiatic",Danau:"Austro-Asiatic",Halang:"Austro-Asiatic","Halang Doan":"Austro-Asiatic",Hu:"Austro-Asiatic",Hung:"Austro-Asiatic",Ir:"Austro-Asiatic",Kensiu:"Austro-Asiatic",Khmu:"Austro-Asiatic",Khua:"Austro-Asiatic",Khuen:"Austro-Asiatic",Koda:"Austro-Asiatic","Kon Keu":"Austro-Asiatic",Kriang:"Austro-Asiatic",Kuay:"Austro-Asiatic",Laven:"Austro-Asiatic",Maleng:"Austro-Asiatic","Man Met":"Austro-Asiatic",Mang:"Austro-Asiatic",Minriq:"Austro-Asiatic",Mlabri:"Austro-Asiatic",Nguôn:"Austro-Asiatic",Nyaheun:"Austro-Asiatic",Nyahkur:"Austro-Asiatic","O’du":"Austro-Asiatic",Ong:"Austro-Asiatic",Oy:"Austro-Asiatic",Pacoh:"Austro-Asiatic","Phong-Kniang":"Austro-Asiatic",Prai:"Austro-Asiatic",Puoc:"Austro-Asiatic",Rengao:"Austro-Asiatic",Rmeet:"Austro-Asiatic","Rumai Palaung":"Austro-Asiatic",Sapuan:"Austro-Asiatic","Shwe Palaung":"Austro-Asiatic","So (Laos)":"Austro-Asiatic",Sou:"Austro-Asiatic","Tai Loi":"Austro-Asiatic",Talieng:"Austro-Asiatic",Tareng:"Austro-Asiatic",Tho:"Austro-Asiatic",U:"Austro-Asiatic","Upper Ta’oih":"Austro-Asiatic",Vietnamese:"Austro-Asiatic","Western Katu":"Austro-Asiatic",Suruahá:"Arauan",Jarawa:"Andamanese",Öñge:"Andamanese",Sentinel:"Andamanese",Afar:"Afro-Asiatic","Alaba-K’abeena":"Afro-Asiatic",Alagwa:"Afro-Asiatic",Ale:"Afro-Asiatic","Algerian Arabic":"Afro-Asiatic",Amharic:"Afro-Asiatic",Arbore:"Afro-Asiatic","Baharna Arabic":"Afro-Asiatic",Barein:"Afro-Asiatic",Bedawiyet:"Afro-Asiatic",Bidiyo:"Afro-Asiatic",Bilen:"Afro-Asiatic",Birgit:"Afro-Asiatic",Boor:"Afro-Asiatic","Borana-Arsi-Guji Oromo":"Afro-Asiatic",Buduma:"Afro-Asiatic","Central Atlas Tamazight":"Afro-Asiatic","Chadian Arabic":"Afro-Asiatic",Chenoua:"Afro-Asiatic",Ciwogai:"Afro-Asiatic",Daasanach:"Afro-Asiatic",Dabarre:"Afro-Asiatic",Dangaléat:"Afro-Asiatic",Deno:"Afro-Asiatic",Diri:"Afro-Asiatic",Duwai:"Afro-Asiatic","Eastern Egyptian Bedawi Arabic":"Afro-Asiatic","Eastern Oromo":"Afro-Asiatic",Garre:"Afro-Asiatic",Geruma:"Afro-Asiatic",Giiwo:"Afro-Asiatic",Gorowa:"Afro-Asiatic","Gulf Arabic":"Afro-Asiatic","Hadrami Arabic":"Afro-Asiatic",Harsusi:"Afro-Asiatic",Hassaniyya:"Afro-Asiatic",Hausa:"Afro-Asiatic",Hebrew:"Afro-Asiatic","Hijazi Arabic":"Afro-Asiatic",Hobyót:"Afro-Asiatic",Hozo:"Afro-Asiatic",Jiiddu:"Afro-Asiatic",Jimi:"Afro-Asiatic",Jina:"Afro-Asiatic","Jonkor Bourmataguil":"Afro-Asiatic","Judeo-Iraqi Arabic":"Afro-Asiatic","Judeo-Moroccan Arabic":"Afro-Asiatic",Kabalai:"Afro-Asiatic",Kajakse:"Afro-Asiatic",Kariya:"Afro-Asiatic","Karo (Ethiopia)":"Afro-Asiatic",Kutto:"Afro-Asiatic","Levantine Arabic":"Afro-Asiatic",Libido:"Afro-Asiatic","Libyan Arabic":"Afro-Asiatic","Lishana Deni":"Afro-Asiatic",Maaka:"Afro-Asiatic",Maay:"Afro-Asiatic",Majera:"Afro-Asiatic",Male:"Afro-Asiatic",Maslam:"Afro-Asiatic",Masmaje:"Afro-Asiatic",Mburku:"Afro-Asiatic",Mehri:"Afro-Asiatic","Mesopotamian Arabic":"Afro-Asiatic",Migaama:"Afro-Asiatic",Mogum:"Afro-Asiatic","Moroccan Arabic":"Afro-Asiatic",Mositacha:"Afro-Asiatic",Mubi:"Afro-Asiatic",Mukulu:"Afro-Asiatic",Nafusi:"Afro-Asiatic","Najdi Arabic":"Afro-Asiatic",Nyam:"Afro-Asiatic","Omani Arabic":"Afro-Asiatic","Pa’a":"Afro-Asiatic",Saba:"Afro-Asiatic",Saho:"Afro-Asiatic","Sanaani Arabic":"Afro-Asiatic",Seze:"Afro-Asiatic",Shehri:"Afro-Asiatic",Shekkacho:"Afro-Asiatic",Sheko:"Afro-Asiatic","Shihhi Arabic":"Afro-Asiatic",Siwi:"Afro-Asiatic",Sokoro:"Afro-Asiatic",Soqotri:"Afro-Asiatic","South Levantine Arabic":"Afro-Asiatic","Standard Arabic":"Afro-Asiatic","Sudanese Arabic":"Afro-Asiatic","Ta’izzi-Adeni Arabic":"Afro-Asiatic","Tahaggart Tamahaq":"Afro-Asiatic",Taznatit:"Afro-Asiatic",Tigré:"Afro-Asiatic",Toram:"Afro-Asiatic",Tsamai:"Afro-Asiatic",Tumzabt:"Afro-Asiatic",Tunni:"Afro-Asiatic",Waata:"Afro-Asiatic","West Central Oromo":"Afro-Asiatic",Xamtanga:"Afro-Asiatic",Zumbun:"Afro-Asiatic"};function h5(a){return(a==null?void 0:a.properties)||a||{}}function Hi(a){return a&&typeof a=="object"&&"label"in a?a.label||a.value||"":a}function y5(a){if(!a||typeof a!="string")return null;const e=a.split(",").map(t=>t.trim()).filter(Boolean);if(e.length>=2){const t=[...e].reverse().join(" ");if(le[t])return le[t];if(e.length>=3){const i=[e[1],e[0]].join(" ");if(le[i])return le[i]}}if(le[a])return le[a];const n=a.replace(/\s*\(.*?\)\s*$/,"").trim();return n!==a&&le[n]?le[n]:null}const b5=[[/ sign language$/i,"Sign Language"]];function _5(a){if(!a||typeof a!="string")return"— Unknown —";const e=a.indexOf(",");return e>0?a.slice(0,e).trim():a.trim()}function f5(a){if(!a||typeof a!="string")return null;const e=a.indexOf(",");return e>=0&&a.slice(e+1).trim()||null}function P5(a){var r,l,s,g;const e=a.language_family??a.languageFamily??((r=a._raw)==null?void 0:r.LanguageFamily)??((l=a._raw)==null?void 0:l.language_family),n=Hi(e),t=m5(n);if(t&&t!=="Unknown")return t;const i=a.primary_language??a.primaryLanguage??((s=a._raw)==null?void 0:s.PrimaryLanguage)??((g=a._raw)==null?void 0:g.primary_language),o=Hi(i);if(o){const d=String(o).trim(),_=y5(d);if(_)return _;for(const[v,w]of b5)if(v.test(d))return w}return"Unknown"}function C5(a){var i,o;const e=((i=a._raw)==null?void 0:i.primary_language)??((o=a._raw)==null?void 0:o.PrimaryLanguage);if(e){const r=Hi(e);if(r)return String(r).trim()}const n=a.primary_language??a.primaryLanguage??a.language,t=Hi(n);return t&&String(t).trim()||"— Unknown —"}function k5(a){var n,t;const e=a.population??((n=a._raw)==null?void 0:n.Population)??((t=a._raw)==null?void 0:t.population)??0;return parseInt(e,10)||0}function j5(a,e){var n,t;return(a==null?void 0:a.id)??e.id??e.peopleGroupId??((n=e._raw)==null?void 0:n.PeopleID3)??((t=e._raw)==null?void 0:t.PeopleID)??null}function G5(a,e){return(a==null?void 0:a.clusterId)??e.clusterId??null}function v5(a,e){var i,o,r,l;const n=parseFloat(e.latitude??e.lat??((i=e._raw)==null?void 0:i.Latitude)??((o=e._raw)==null?void 0:o.latitude)),t=parseFloat(e.longitude??e.lng??((r=e._raw)==null?void 0:r.Longitude)??((l=e._raw)==null?void 0:l.longitude));return!isFinite(n)||!isFinite(t)?null:[t,n]}function A5(a,e){return e.peopleGroupCount!==a.peopleGroupCount?e.peopleGroupCount-a.peopleGroupCount:(e.population||0)-(a.population||0)}function zi(a,e){return(e.population||0)!==(a.population||0)?(e.population||0)-(a.population||0):e.peopleGroupCount-a.peopleGroupCount}function S5(a,e={}){e.aggregator;const n=rt({});function t(I){return!!n[I]}function i(I){n[I]=!n[I]}function o(I){const M=new Set(Array.isArray(I)?I:[]);for(const x of Object.keys(n))M.has(x)||(n[x]=!1);for(const x of M)n[x]=!0}const r=ra(()=>{const I=(a==null?void 0:a.value)||[],M=new Map;for(const x of I){const A=h5(x),$=P5(A),S=C5(A),j=_5(S),b=f5(S),C=k5(A),F=j5(x,A),B=G5(x,A),ia=v5(x,A);let ga=M.get($);ga||(ga={key:$,peopleGroupCount:0,population:0,pinIds:[],coords:[],clusterId:null,languages:new Map},M.set($,ga)),ga.peopleGroupCount+=1,ga.population+=C,F!=null&&ga.pinIds.push(F),ia&&ga.coords.push(ia),B&&!ga.clusterId&&(ga.clusterId=B);let na=ga.languages.get(j);if(na||(na={key:j,peopleGroupCount:0,population:0,pinIds:[],coords:[],clusterId:null,dialects:new Map},ga.languages.set(j,na)),na.peopleGroupCount+=1,na.population+=C,F!=null&&na.pinIds.push(F),ia&&na.coords.push(ia),B&&!na.clusterId&&(na.clusterId=B),b){let ma=na.dialects.get(b);ma?ma.originalLabels.add(S):(ma={key:b,peopleGroupCount:0,population:0,pinIds:[],coords:[],originalLabels:new Set([S])},na.dialects.set(b,ma)),ma.peopleGroupCount+=1,ma.population+=C,F!=null&&ma.pinIds.push(F),ia&&ma.coords.push(ia)}}return M}),l=e.showAllKnown!==!1,s=ra(()=>{const I=r.value,M=[],x=new Set;for(const A of I.values())M.push({key:A.key,label:A.key,color:Sn(A.key),peopleGroupCount:A.peopleGroupCount,population:A.population,kind:A.clusterId?"cluster":"family",clusterId:A.clusterId||void 0,pinIds:A.pinIds,coords:A.coords}),x.add(A.key);if(l)for(const A of Object.keys(u5))x.has(A)||M.push({key:A,label:A,color:Sn(A),peopleGroupCount:0,population:0,kind:"family",pinIds:[],coords:[]});return M.sort(A5),M});function g(I){const M=r.value.get(I);if(!M)return[];const x=[];for(const A of M.languages.values())x.push({key:`${I}__${A.key}`,label:A.key,color:Sn(I),peopleGroupCount:A.peopleGroupCount,population:A.population,kind:A.clusterId?"cluster":"language",familyKey:I,clusterId:A.clusterId||void 0,pinIds:A.pinIds,coords:A.coords,hasDialects:A.dialects.size>0});return x.sort(zi),x}function d(I){const M=I.indexOf("__");if(M<0)return[];const x=I.slice(0,M),A=I.slice(M+2),$=r.value.get(x);if(!$)return[];const S=$.languages.get(A);if(!S)return[];const j=[];for(const b of S.dialects.values())j.push({key:`${I}__${b.key}`,label:`${A}, ${b.key}`,dialectOnly:b.key,color:Sn(x),peopleGroupCount:b.peopleGroupCount,population:b.population,kind:"dialect",languageKey:A,familyKey:x,pinIds:b.pinIds,coords:b.coords,originalLabels:Array.from(b.originalLabels)});return j.sort(zi),j}const _=ra(()=>{const I=r.value,M=[];for(const x of I.values())for(const A of x.languages.values())M.push({key:`${x.key}__${A.key}`,label:A.key,color:Sn(x.key),peopleGroupCount:A.peopleGroupCount,population:A.population,kind:A.clusterId?"cluster":"language",familyKey:x.key,clusterId:A.clusterId||void 0,pinIds:A.pinIds,coords:A.coords,hasDialects:A.dialects.size>0});return M.sort(zi),M}),v=ra(()=>{const I=r.value,M=[];for(const x of I.values())for(const A of x.languages.values())for(const $ of A.dialects.values())M.push({key:`${x.key}__${A.key}__${$.key}`,label:`${A.key}, ${$.key}`,dialectOnly:$.key,color:Sn(x.key),peopleGroupCount:$.peopleGroupCount,population:$.population,kind:"dialect",languageKey:A.key,familyKey:x.key,pinIds:$.pinIds,coords:$.coords,originalLabels:Array.from($.originalLabels)});return M.sort(zi),M});function w(I){let M=I;if(typeof I=="string"&&(M=s.value.find(A=>A.key===I),!M))return;const x={kind:M.kind,pinIds:M.pinIds||[],coords:M.coords||[]};M.kind==="family"&&(x.familyKey=M.label),M.kind==="language"&&(x.languageKey=M.label,x.familyKey=M.familyKey),M.kind==="dialect"&&(x.dialectKey=M.key,x.dialectOnly=M.dialectOnly||M.label,x.languageKey=M.languageKey,x.familyKey=M.familyKey,x.originalLabels=M.originalLabels||[]),M.kind==="cluster"&&(x.clusterId=M.clusterId),typeof window<"u"&&typeof window.CustomEvent=="function"&&window.dispatchEvent(new CustomEvent("legend:highlight",{detail:x}))}const H=ra(()=>{const I=r.value,M=[];for(const x of I.values()){const A=Sn(x.key),$=[];for(const j of x.languages.values()){j.key&&j.key!=="— Unknown —"&&$.push(j.key);for(const b of j.dialects.values())for(const C of b.originalLabels)C&&$.push(C)}const S={id:`fam:${x.key}`,label:x.key,color:A,count:x.peopleGroupCount,pop:x.population,filter:$.length>0?["any",["==",["get","languageFamily"],x.key],["in",["get","language"],["literal",Array.from(new Set($))]]]:["==",["get","languageFamily"],x.key],children:[]};for(const j of x.languages.values()){const b=j.key,C={id:`lang:${x.key}__${b}`,label:b,color:A,count:j.peopleGroupCount,pop:j.population,filter:["any",["==",["get","language"],b],["==",["slice",["get","language"],0,b.length+1],b+","],["in"," "+b,["get","language"]]],children:[]};for(const F of j.dialects.values()){const B=Array.from(F.originalLabels);C.children.push({id:`dial:${x.key}__${b}__${F.key}`,label:`${b}, ${F.key}`,color:A,count:F.peopleGroupCount,pop:F.population,filter:B.length===1?["==",["get","language"],B[0]]:["in",["get","language"],["literal",B]],originalLabels:B,children:[]})}S.children.push(C)}M.push(S)}return M.sort((x,A)=>A.pop-x.pop||A.count-x.count),M});return{rows:s,languageRows:_,dialectRows:v,langTree:H,toggle:i,isExpanded:t,setExpansionToOnly:o,childRowsFor:g,dialectRowsFor:d,highlight:w}}const E5={key:0,class:"fc-loading"},$5={class:"fc-modes",role:"tablist","aria-label":"Cluster by"},M5=["aria-selected","onClick"],w5={class:"fc-circle"},I5={class:"fc-mode-lbl"},x5={class:"fc-mode-sz"},T5={key:1,class:"fc-stats"},N5={key:2,class:"fc-legend"},L5={class:"fc-lrow"},R5={class:"fc-lrow"},F5={key:3,class:"fc-footer"},Xn="#e11d48",Nt="#9f1239",Lt="#002e6e",B5="#f59e0b",kr="fc-core-src",dg="fc-green-src",pg="fc-link-src",En="fc-core",mg="fc-core-lbl",Vi="fc-green",Rt="fc-link",K5={__name:"FlowerClusters",setup(a){function e(c){const f=+c||0;return f>=80?"#0f7a3d":f>=40?"#1f9d55":f>=15?"#5cb874":"#9bcf9b"}const n=Na("profileConfig"),t=Na("mapboxToken"),i=ra(()=>(n==null?void 0:n.value)||{}),o=ua(null),r=ua(null),l=ua(!1),s=ua("Clustering the harvest by language…"),g=ua("language"),d=ua(null),_=ua([]),{rows:v,languageRows:w}=S5(_,{showAllKnown:!1});function H(c){return c&&typeof c=="object"?c.label||c.value||"":c||""}const I=ra(()=>{const c=new Map;for(const f of _.value){const O=(H(f.primary_language)||"— Unknown —").trim(),u=parseFloat(f.latitude),G=parseFloat(f.longitude);let k=c.get(O);k||(k={key:"full:"+O,label:O,color:Xn,peopleGroupCount:0,population:0,coords:[],originalLabels:[O]},c.set(O,k)),k.peopleGroupCount++,k.population+=parseInt(f.population,10)||0,isFinite(u)&&isFinite(G)&&k.coords.push([G,u])}return[...c.values()].sort((f,O)=>O.peopleGroupCount-f.peopleGroupCount)});function M(c){if(!c||typeof c!="string")return"";const f=c.indexOf(",");return(f>0?c.slice(0,f):c).trim()}function x(c){return(c||"").trim()}function A(c){if(!c||typeof c!="string")return"Unknown";const f=c.split(",").map(u=>u.trim()).filter(Boolean);if(f.length>=2){const u=[...f].reverse().join(" ");if(le[u])return le[u];if(f.length>=3){const G=[f[1],f[0]].join(" ");if(le[G])return le[G]}}if(le[c])return le[c];const O=c.replace(/\s*\(.*?\)\s*$/,"").trim();return O!==c&&le[O]?le[O]:/ sign language$/i.test(c)?"Sign Language":"Unknown"}const $=ra(()=>{const c=[],f=new Set;for(const O of Object.values(nn.countries||{}))for(const u of O.neighbors||[]){const G=Number(u.lat),k=Number(u.lng);if(!isFinite(G)||!isFinite(k))continue;const T=(u.code||u.name)+"|"+u.country;f.has(T)||(f.add(T),c.push({id:T,name:u.name,country:u.country,lang:u.lang,pct:u.pct_christian||0,pop:u.pop||0,lat:G,lng:k,family:A(u.lang),base:M(u.lang),full:x(u.lang)}))}return c});function S(c){let f=0,O=0,u=0;for(const G of c||[])Array.isArray(G)&&(f+=G[0],O+=G[1],u++);return u?[f/u,O/u]:null}const j=ra(()=>{const c=g.value,f=c==="family"?v.value:c==="dialect"?I.value:w.value,O=[];for(const u of f){if(!u.peopleGroupCount)continue;const G=S(u.coords);if(!G)continue;let k;c==="family"?k={kind:"family",set:new Set([u.label])}:c==="dialect"?k={kind:"full",set:new Set(u.originalLabels||[u.label])}:k={kind:"base",set:new Set([u.label])},O.push({key:u.key||u.label,label:u.label,level:c,count:u.peopleGroupCount,pop:u.population||0,lng:G[0],lat:G[1],color:u.color||Xn,match:k})}return O.sort((u,G)=>G.count-u.count),O}),b=ra(()=>{const c=[],f=[],O=$.value;for(const u of j.value){const{kind:G,set:k}=u.match;for(const T of O){const R=G==="family"?T.family:G==="full"?T.full:T.base;k.has(R)&&(c.push({...T,coreKey:u.key,color:e(T.pct)}),f.push({coreKey:u.key,from:[T.lng,T.lat],to:[u.lng,u.lat]}))}}return{greens:c,links:f}}),C=ra(()=>({cores:j.value.length,unreached:j.value.reduce((c,f)=>c+f.count,0),petals:b.value.greens.length})),F=ra(()=>j.value.find(c=>c.key===d.value)||null),{map:B,initializeMap:ia,destroy:ga}=Ti({containerRef:r,accessToken:(t==null?void 0:t.value)||i.value.tk||"",style:i.value.style??"mapbox://styles/mapbox/light-v11",center:i.value.center??[55,22],zoom:i.value.zoom??1.7,minZoom:1,maxZoom:12}),na=c=>({type:"FeatureCollection",features:c});function ma(){return na(j.value.map(c=>({type:"Feature",geometry:{type:"Point",coordinates:[c.lng,c.lat]},properties:{key:c.key,label:c.label+" ("+c.count+")",count:c.count,color:c.color}})))}function Sa(){return na(b.value.greens.map(c=>({type:"Feature",geometry:{type:"Point",coordinates:[c.lng,c.lat]},properties:{name:c.name,country:c.country,lang:c.lang,pct:c.pct,color:c.color,coreKey:c.coreKey}})))}function $a(){return na(b.value.links.map(c=>({type:"Feature",geometry:{type:"LineString",coordinates:[c.from,c.to]},properties:{coreKey:c.coreKey}})))}function ha(c,f,O){const u=c.getSource(f);u?u.setData(O):c.addSource(f,{type:"geojson",data:O})}function pa(){var f;const c=B.value;!c||!((f=c.isStyleLoaded)!=null&&f.call(c))||(ha(c,pg,$a()),ha(c,dg,Sa()),ha(c,kr,ma()),c.getLayer(Rt)||c.addLayer({id:Rt,type:"line",source:pg,paint:{"line-color":Lt,"line-width":.6,"line-opacity":.12}}),c.getLayer(Vi)||c.addLayer({id:Vi,type:"circle",source:dg,paint:{"circle-radius":["interpolate",["linear"],["zoom"],1,1.4,6,3],"circle-color":["get","color"],"circle-stroke-width":.4,"circle-stroke-color":"#fff","circle-opacity":.82}}),c.getLayer(En)||c.addLayer({id:En,type:"circle",source:kr,paint:{"circle-radius":["interpolate",["linear"],["get","count"],1,8,25,18,120,30],"circle-color":Xn,"circle-opacity":.5,"circle-stroke-width":2,"circle-stroke-color":Nt}}),c.getLayer(mg)||c.addLayer({id:mg,type:"symbol",source:kr,minzoom:2.2,layout:{"text-field":["get","label"],"text-size":11,"text-offset":[0,1.4],"text-anchor":"top","text-allow-overlap":!1,"text-optional":!0},paint:{"text-color":Nt,"text-halo-color":"#fff","text-halo-width":1.4}}),Y())}function Y(){const c=B.value;if(!c||!c.getLayer(Rt))return;const f=d.value;c.setPaintProperty(Rt,"line-opacity",f?["case",["==",["get","coreKey"],f],.7,.04]:.12),c.setPaintProperty(Rt,"line-color",f?["case",["==",["get","coreKey"],f],B5,Lt]:Lt),c.getLayer(Vi)&&c.setPaintProperty(Vi,"circle-opacity",f?["case",["==",["get","coreKey"],f],.95,.18]:.82),c.getLayer(En)&&c.setPaintProperty(En,"circle-opacity",f?["case",["==",["get","key"],f],.9,.4]:.5)}function L(c){d.value=d.value===c?null:c,Y();const f=F.value,O=B.value;if(f&&O){const u=b.value.links.filter(J=>J.coreKey===f.key).map(J=>J.from).concat([[f.lng,f.lat]]);let G=f.lng,k=f.lng,T=f.lat,R=f.lat;for(const J of u)G=Math.min(G,J[0]),k=Math.max(k,J[0]),T=Math.min(T,J[1]),R=Math.max(R,J[1]);try{O.stop(),O.fitBounds([[G,T],[k,R]],{padding:90,maxZoom:5.5,duration:700})}catch{}}}function D(c){g.value!==c&&(g.value=c,d.value=null)}re([g,()=>_.value.length],()=>{l.value&&pa()});async function la(){const c=i.value.apiBase||typeof window<"u"&&(window.MAP_APP_API_URL||window.VITE_API_BASE_URL)||"https://pray.doxa.life",O=await fetch(c.replace(/\/?$/,"")+"/api/people-groups/list?fields="+"slug,name,latitude,longitude,country_code,primary_language,wagf_block"+"&lang=en",{cache:"no-store"});if(!O.ok)throw new Error("doxa list "+O.status);const u=await O.json();return(u.posts||u.data||u.records||u.results||(Array.isArray(u)?u:[])).map(k=>({...k,id:k.slug}))}ve(async()=>{var O,u,G,k,T,R;await ia();const c=B.value;try{c&&c.setProjection("mercator")}catch{}try{_.value=await la()}catch(J){s.value="Live doxa API unreachable — "+J.message,l.value=!0;return}if(l.value=!0,i.value.debugExpose&&typeof window<"u")try{(((G=(u=(O=o.value)==null?void 0:O.getRootNode)==null?void 0:u.call(O))==null?void 0:G.host)||window).__flowers={get mode(){return g.value},setMode:D,get stats(){return C.value},selectCore:L}}catch{}const f=()=>{pa(),c.on("click",En,J=>{var E;const y=(E=J.features)==null?void 0:E[0];y&&L(y.properties.key)}),c.on("mouseenter",En,()=>{c.getCanvas().style.cursor="pointer"}),c.on("mouseleave",En,()=>{c.getCanvas().style.cursor=""})};(k=c==null?void 0:c.isStyleLoaded)!=null&&k.call(c)?f():(T=c==null?void 0:c.once)==null||T.call(c,"load",f),(R=c==null?void 0:c.once)==null||R.call(c,"idle",()=>{l.value&&pa()})}),sn(()=>{ga()}),$e(` + .fc-root { position:absolute; inset:0; overflow:hidden; background:#ffffff; color:#1f2937; isolation:isolate; + font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } + .fc-map { position:absolute; inset:0; } + .fc-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:${Lt}; font:13px/1 ui-monospace,monospace; z-index:5; } + /* the 3 MODE CIRCLES at the top */ + .fc-modes { position:absolute; top:12px; left:50%; transform:translateX(-50%); z-index:30; display:flex; gap:14px; align-items:flex-start; } + .fc-mode { display:flex; flex-direction:column; align-items:center; gap:5px; cursor:pointer; background:none; border:0; } + .fc-circle { width:54px; height:54px; border-radius:50%; background:#fff; border:3px solid #d1d5db; display:flex; + align-items:center; justify-content:center; font:800 11px/1 ui-monospace,monospace; color:#9ca3af; box-shadow:0 2px 10px rgba(0,0,0,.12); transition:all .15s; } + .fc-mode.on .fc-circle { border-color:${Xn}; color:${Nt}; transform:scale(1.08); box-shadow:0 4px 16px rgba(225,29,72,.3); } + .fc-mode:hover .fc-circle { border-color:${Xn}; } + .fc-mode-lbl { font:700 10px/1 ui-monospace,monospace; letter-spacing:.04em; text-transform:uppercase; color:#6b7280; } + .fc-mode.on .fc-mode-lbl { color:${Nt}; } + .fc-mode-sz { font:600 9px/1 ui-monospace,monospace; color:#9ca3af; } + .fc-stats { position:absolute; top:14px; right:12px; z-index:30; background:rgba(255,255,255,.95); border:1px solid #d1d5db; + border-radius:8px; padding:7px 11px; font:600 11px/1.5 ui-monospace,monospace; color:#374151; text-align:right; } + .fc-stats b { color:${Nt}; } + .fc-legend { position:absolute; left:12px; bottom:30px; z-index:25; background:rgba(255,255,255,.95); border:1px solid #d1d5db; + border-radius:10px; padding:9px 12px; max-width:250px; box-shadow:0 4px 14px rgba(0,0,0,.12); font-size:11px; color:#374151; } + .fc-legend h4 { font:700 9px/1 ui-monospace,monospace; letter-spacing:.1em; text-transform:uppercase; color:#6b7280; margin-bottom:6px; } + .fc-lrow { display:flex; align-items:center; gap:8px; padding:2px 0; } + .fc-dot { width:12px; height:12px; border-radius:50%; border:1px solid rgba(0,0,0,.25); flex:0 0 auto; } + .fc-footer { position:absolute; left:0; right:0; bottom:0; z-index:20; background:${Lt}; color:#dbe4f3; + font:10px/1.4 ui-monospace,monospace; padding:5px 12px; display:flex; flex-wrap:wrap; gap:3px 14px; } + .fc-footer b { color:#fff; } +`,"flower-clusters");const X=[{key:"family",label:"Family",sz:"fewer · bigger"},{key:"language",label:"Language",sz:"more"},{key:"dialect",label:"Dialect",sz:"most"}];return(c,f)=>(W(),Z("div",{ref_key:"fcRoot",ref:o,class:"fc-root"},[P("div",{ref_key:"mapContainer",ref:r,class:"fc-map"},null,512),l.value?fa("",!0):(W(),Z("div",E5,aa(s.value),1)),P("div",$5,[(W(),Z(Aa,null,Da(X,O=>P("button",{key:O.key,class:Ma(["fc-mode",{on:g.value===O.key}]),role:"tab","aria-selected":g.value===O.key,onClick:u=>D(O.key)},[P("span",w5,aa(O.label.slice(0,3).toUpperCase()),1),P("span",I5,aa(O.label),1),P("span",x5,aa(O.sz),1)],10,M5)),64))]),l.value?(W(),Z("div",T5,[P("b",null,aa(C.value.cores),1),f[0]||(f[0]=ba(" flowers · ",-1)),P("b",null,aa(C.value.unreached.toLocaleString()),1),f[1]||(f[1]=ba(" unreached",-1)),f[2]||(f[2]=P("br",null,null,-1)),P("b",null,aa(C.value.petals.toLocaleString()),1),ba(" reached petals · by "+aa(g.value),1)])):fa("",!0),l.value?(W(),Z("div",N5,[f[5]||(f[5]=P("h4",null,"Flower clusters",-1)),P("div",L5,[P("span",{class:"fc-dot",style:Oa({background:Xn})},null,4),f[3]||(f[3]=ba(" Unreached language cluster (core, size = #PGs)",-1))]),P("div",R5,[P("span",{class:"fc-dot",style:Oa({background:e(80)})},null,4),f[4]||(f[4]=ba(" Reached neighbor (granular, real coord)",-1))]),f[6]||(f[6]=P("div",{class:"fc-lrow",style:{color:"#6b7280","font-size":"10px","margin-top":"4px"}},"click a top circle to re-cluster · click a core to bloom its petals",-1))])):fa("",!0),l.value?(W(),Z("div",F5,[...f[7]||(f[7]=[P("span",null,[P("b",null,"Flower-clusters"),ba(" red cores (clustered) → granular green reached petals (same language)")],-1),P("span",null,"taxonomy = research-map semantic tree (family→language→dialect)",-1),P("span",null,"unreached = LIVE pray.doxa.life · reached = baked PPLR",-1),P("span",null,"Luke 10:2",-1)])])):fa("",!0)],512))}},O5={class:"dun-bar"},U5={class:"dun-seg",role:"tablist","aria-label":"Choose a view"},D5=["aria-selected","onClick"],H5={class:"dun-hint"},z5={class:"dun-stage"},V5=Object.freeze(Object.defineProperty({__proto__:null,default:{__name:"upg-neighbor",setup(a){const e=Na("profileConfig"),n=ra(()=>(e==null?void 0:e.value)||{}),t=[{key:"cockpit",label:"Overview",hint:"crossfilter hub"},{key:"send-map",label:"Send Map",hint:"reached → unreached arcs"},{key:"flower-mesh",label:"Flower Mesh",hint:"radial bloom"},{key:"lang-cluster",label:"Lang Cluster",hint:"language bounded-sets"},{key:"flowers",label:"Flowers",hint:"family · language · dialect cores + granular petals"}],i=new Set(t.map(_=>_.key)),o={"upg-neighbors":"cockpit","bloom-cockpit":"cockpit"},r=n.value.view||o[n.value.legacyElement]||n.value.legacyElement,l=ua(i.has(r)?r:"send-map"),s=ua(null);function g(_){i.has(_)&&(l.value=_)}ve(()=>{var _,v,w;if(n.value.debugExpose&&typeof window<"u")try{const H=((w=(v=(_=s.value)==null?void 0:_.getRootNode)==null?void 0:v.call(_))==null?void 0:w.host)||window;H.__neighbors={get view(){return l.value},setView:g}}catch{}}),$e(` + .dun-root { position:absolute; inset:0; display:flex; flex-direction:column; overflow:hidden; + background:#0e1730; isolation:isolate; + font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } + .dun-bar { flex:0 0 auto; display:flex; align-items:center; gap:10px; padding:7px 12px; + background:#001b44; border-bottom:1px solid #002e6e; z-index:50; } + .dun-brand { font:800 11px/1 ui-monospace,monospace; letter-spacing:.06em; text-transform:uppercase; + color:#fff; background:rgba(255,255,255,.1); padding:6px 10px; border-radius:7px; white-space:nowrap; } + .dun-seg { display:inline-flex; background:#0e1730; border:1px solid #284a86; border-radius:999px; + padding:3px; gap:2px; flex-wrap:wrap; } + .dun-seg button { border:0; background:transparent; color:#9fb3d9; cursor:pointer; + font:700 11px/1 ui-monospace,monospace; padding:6px 12px; border-radius:999px; } + .dun-seg button.on { background:#002e6e; color:#fff; } + .dun-seg button:hover:not(.on) { color:#dbe4f3; } + .dun-hint { margin-left:auto; font:600 10px/1.3 ui-monospace,monospace; color:#7e90b6; white-space:nowrap; } + .dun-stage { flex:1 1 0; position:relative; min-height:0; background:#fff; } + @media (max-width:640px){ .dun-hint{ display:none; } .dun-brand{ display:none; } } +`,"upg-neighbor");const d=ra(()=>{var _;return((_=t.find(v=>v.key===l.value))==null?void 0:_.hint)||""});return(_,v)=>(W(),Z("div",{ref_key:"rootEl",ref:s,class:"dun-root"},[P("div",O5,[v[0]||(v[0]=P("span",{class:"dun-brand"},"My UPG Neighbors",-1)),P("div",U5,[(W(),Z(Aa,null,Da(t,w=>P("button",{key:w.key,role:"tab","aria-selected":l.value===w.key,class:Ma({on:l.value===w.key}),onClick:H=>g(w.key)},aa(w.label),11,D5)),64))]),P("span",H5,aa(d.value),1)]),P("div",z5,[l.value==="cockpit"?(W(),Ye(V3,{key:0})):l.value==="send-map"?(W(),Ye(y_,{key:1})):l.value==="flower-mesh"?(W(),Ye(D_,{key:2})):l.value==="lang-cluster"?(W(),Ye(c5,{key:3})):l.value==="flowers"?(W(),Ye(K5,{key:4})):fa("",!0)])],512))}}},Symbol.toStringTag,{value:"Module"}))})(); diff --git a/public/doxa-maps/upg-neighbor/upg-neighbor/bloom-cockpit/index.html b/public/doxa-maps/upg-neighbor/upg-neighbor/bloom-cockpit/index.html index 276a20909..8d83947be 100644 --- a/public/doxa-maps/upg-neighbor/upg-neighbor/bloom-cockpit/index.html +++ b/public/doxa-maps/upg-neighbor/upg-neighbor/bloom-cockpit/index.html @@ -3,12 +3,15 @@ - Bloom Cockpit (legacy) · upg-neighbor + Bloom Cockpit · upg-neighbor - + + + + + +