diff --git a/.github/ISSUE_TEMPLATE/1_streams_add.yml b/.github/ISSUE_TEMPLATE/1_streams_add.yml index 75d89b54f..2d3f9c793 100644 --- a/.github/ISSUE_TEMPLATE/1_streams_add.yml +++ b/.github/ISSUE_TEMPLATE/1_streams_add.yml @@ -6,9 +6,9 @@ labels: ['streams:add'] body: - type: input attributes: - label: Channel ID (required) - description: Unique channel ID from [iptv-org.github.io](https://iptv-org.github.io/). If you can't find the channel you want in the list, please let us know through this [form](https://github.com/iptv-org/database/issues/new?assignees=&labels=channels%3Aadd&projects=&template=channels_add.yml&title=Add%3A+) before posting your request. - placeholder: 'BBCAmericaEast.us' + label: Stream ID (required) + description: "ID of the stream consisting of `` or `@`. Full list of supported channels with corresponding ID could be found on [iptv-org.github.io](https://iptv-org.github.io/). If you can't find the channel you want in the list, please let us know through this [form](https://github.com/iptv-org/database/issues/new?assignees=&labels=channels%3Aadd&projects=&template=channels_add.yml&title=Add%3A+) before posting your request." + placeholder: 'BBCAmerica.us@East' validations: required: true @@ -28,9 +28,12 @@ body: - 2160p - 1280p - 1080p + - 1080i - 720p - 576p + - 576i - 480p + - 480i - 360p - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/2_streams_edit.yml b/.github/ISSUE_TEMPLATE/2_streams_edit.yml index 0231d30c0..1c9ab6200 100644 --- a/.github/ISSUE_TEMPLATE/2_streams_edit.yml +++ b/.github/ISSUE_TEMPLATE/2_streams_edit.yml @@ -19,9 +19,9 @@ body: - type: input attributes: - label: Channel ID - description: Channel ID from [iptv-org.github.io](https://iptv-org.github.io/). - placeholder: 'BBCAmericaEast.us' + label: Stream ID + description: "ID of the stream consisting of `` or `@`. Full list of supported channels with corresponding ID could be found on [iptv-org.github.io](https://iptv-org.github.io/). If you can't find the channel you want in the list, please let us know through this [form](https://github.com/iptv-org/database/issues/new?assignees=&labels=channels%3Aadd&projects=&template=channels_add.yml&title=Add%3A+) before posting your request." + placeholder: 'BBCAmerica.us@East' - type: dropdown attributes: @@ -31,9 +31,12 @@ body: - 2160p - 1280p - 1080p + - 1080i - 720p - 576p + - 576i - 480p + - 480i - 360p - '~' diff --git a/.github/ISSUE_TEMPLATE/3_broken-stream.yml b/.github/ISSUE_TEMPLATE/3_broken-stream.yml index 12ed63a5b..67dcb462a 100644 --- a/.github/ISSUE_TEMPLATE/3_broken-stream.yml +++ b/.github/ISSUE_TEMPLATE/3_broken-stream.yml @@ -1,7 +1,7 @@ name: ๐Ÿšง Report broken stream description: Report a broken or unstable stream title: 'Broken: ' -labels: ['broken stream'] +labels: ['broken stream', 'streams:remove'] body: - type: markdown diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 470dcbaf0..da6c69a7f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,15 +20,23 @@ Regardless of which option you choose, before posting your request please do the - Make sure the link you want to add works stably. To check this, open it in one of the players (for example, [VLC player](https://www.videolan.org/vlc/index.html)) and watch the broadcast for at least a minute (some test streams are interrupted after 15-30 seconds). - Make sure the link is not already in the playlist. This can be done by [searching](https://github.com/search?q=repo%3Aiptv-org%2Fiptv+http%3A%2F%2Fexample.com&type=code) the repository. -- Find the ID of the channel you want to add in our [database](https://iptv-org.github.io/). If this particular channel is not in the database, then leave a request to add it [here](https://github.com/iptv-org/database/issues/new/choose) and wait until it is approved before continuing. -- Make sure the channel is not blocklisted. This can be done by checking the [blocklist.csv](https://github.com/iptv-org/database/blob/master/data/blocklist.csv) file. +- Find the ID of the channel you want on [iptv-org.github.io](https://iptv-org.github.io/). If your desired channel is not on the list you can leave a request to add it [here](https://github.com/iptv-org/database/issues/new/choose). +- Make sure the channel is not blocklisted. It can also be done through [iptv-org.github.io](https://iptv-org.github.io/). - The link does not lead to the Xtream Codes server. [Why don't you accept links to Xtream Codes server?](FAQ.md#why-dont-you-accept-links-to-xtream-codes-server) - If you know that the broadcast only works in certain countries or it is periodically interrupted, do not forget to indicate this in the request. -A requests without a valid channel ID or working link to the stream will be closed immediately. +A requests without a valid stream ID or working link to the stream will be closed immediately. Note all links in playlists are sorted automatically by scripts so there is no need to sort them manually. For more info, see [Scripts](#scripts). +### How to fix the stream description? + +Most of the stream description (channel name, categories, languages, broadcast area, logo) we load from the [iptv-org/database](https://github.com/iptv-org/database) using the stream ID. + +So first of all, make sure that the desired stream has the correct ID. A full list of all supported channels and their corresponding IDs can be found on [iptv-org.github.io](https://iptv-org.github.io/). To change the stream ID of any link in the playlist, just fill out this [form](https://github.com/iptv-org/iptv/issues/new?assignees=&labels=streams%3Aedit&projects=&template=2_streams_edit.yml&title=Edit%3A+). + +If, however, you have found an error in the database itself, this is the place to go: [How to edit channel description?](https://github.com/iptv-org/database/blob/master/CONTRIBUTING.md#how-to-edit-channel-description) + ### How to distinguish a link to an Xtream Codes server from a regular one? Most of them have this form: @@ -52,6 +60,37 @@ The only thing before publishing your report is to make sure that: An issue without a valid link will be closed immediately. +### How to find a broken stream? + +For starters, you can just try to open the playlist in [VLC player](https://www.videolan.org/vlc/). The player outputs all errors to the log (Tools -> Messages) so you'll be able to determine pretty accurately why a link isn't working. + +Another way to test links is to use the NPM script. To do this, first make sure you have [Node.js](https://nodejs.org/en) installed on your system. Then go to the `iptv` folder using [Console](https://en.wikipedia.org/wiki/Windows_Console) (or [Terminal]() if you have macOS) and run the command: + +```sh +npm run playlist:test path/to/playlist.m3u +``` + +This command will run an automatic check of all links in the playlist and display their status: + +```sh +npm run playlist:test streams/fr.m3u + +streams/fr.m3u +โ”Œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ tvg-id โ”‚ url โ”‚ status โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ 0 โ”‚ 6ter.fr โ”‚ https://origin-caf900c010ea8046.live.6cloud.fr/out/v1/29c7a579af3348b48230f76cd75699a5/dash_short... โ”‚ LOADING... โ”‚ +โ”‚ 1 โ”‚ 20MinutesTV.fr โ”‚ https://lives.digiteka.com/stream/86d3e867-a272-496b-8412-f59aa0104771/index.m3u8 โ”‚ FFMPEG_STREAMS_NOT_FOUND โ”‚ +โ”‚ 2 โ”‚ โ”‚ https://video1.getstreamhosting.com:1936/8420/8420/playlist.m3u8 โ”‚ OK โ”‚ +โ”‚ 3 โ”‚ ADNTVPlus.fr โ”‚ https://samsunguk-adn-samsung-fre-qfrlc.amagi.tv/playlist/samsunguk-adn-samsung-fre/playlist.m3u8 โ”‚ HTTP_FORBIDDEN โ”‚ +โ”‚ 4 โ”‚ Africa24.fr โ”‚ https://edge12.vedge.infomaniak.com/livecast/ik:africa24/manifest.m3u8 โ”‚ OK โ”‚ +โ”‚ 5 โ”‚ Africa24English.fr โ”‚ https://edge17.vedge.infomaniak.com/livecast/ik:africa24sport/manifest.m3u8 โ”‚ OK โ”‚ +โ”‚ 6 โ”‚ AfricanewsEnglish.fr โ”‚ https://37c774660687468c821a51190046facf.mediatailor.us-east-1.amazonaws.com/v1/master/04fd913bb2... โ”‚ HTTP_GATEWAY_TIMEOUT โ”‚ +โ”‚ 7 โ”‚ AlpedHuezTV.fr โ”‚ https://edge.vedge.infomaniak.com/livecast/ik:adhtv/chunklist.m3u8 โ”‚ HTTP_NOT_FOUND โ”‚ +``` + +After that, all you have to do is report any broken streams you find. + ### How do I remove my channel from playlist? To request removal of a link to a channel from the repository, you need to fill out this [form](https://github.com/iptv-org/iptv/issues/new?assignees=&labels=removal+request&projects=&template=-removal-request.yml&title=Remove%3A+) and wait for the request to be reviewed (this usually takes no more than 1 business day). And if the request is approved, links to the channel will be immediately removed from the repository. @@ -65,22 +104,22 @@ Please note that we only accept removal requests from channel owners and their o For a stream to be approved, its description must follow this template: ``` -#EXTINF:-1 tvg-id="CHANNEL_ID",CHANNEL_NAME (RESOLUTION) [LABEL] +#EXTINF:-1 tvg-id="STREAM_ID",CHANNEL_NAME (RESOLUTION) [LABEL] STREAM_URL ``` -| Attribute | Description | Required | Valid values | -| -------------- | ------------------------------------------------------------------------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------- | -| `CHANNEL_ID` | Channel ID. | Optional | Full list of supported channels with corresponding ID could be found on [iptv-org.github.io](https://iptv-org.github.io/). | -| `CHANNEL_NAME` | Full name of the channel. May contain any characters except: `,`, `[`, `]`. | Required | - | -| `RESOLUTION` | Maximum stream resolution. | Optional | `2160p`, `1080p`, `720p`, `480p`, `360p` etc | -| `LABEL` | Specified in cases where the broadcast for some reason may not be available to some users. | Optional | `Geo-blocked` or `Not 24/7` | -| `STREAM_URL` | Stream URL. | Required | - | +| Attribute | Description | Required | Valid values | +| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------- | +| `STREAM_ID` | ID of the stream. Full list of supported channels with corresponding ID could be found on [iptv-org.github.io](https://iptv-org.github.io/). | Optional | `` or `@` | +| `CHANNEL_NAME` | Full name of the channel. May contain any characters except: `,`, `[`, `]`. | Required | - | +| `RESOLUTION` | Maximum stream resolution. | Optional | `2160p`, `1080p`, `720p`, `480p`, `360p` etc | +| `LABEL` | Specified in cases where the broadcast for some reason may not be available to some users. | Optional | `Geo-blocked` or `Not 24/7` | +| `STREAM_URL` | Stream URL. | Required | - | Example: ```xml -#EXTINF:-1 tvg-id="ExampleTV.ua",Example TV (720p) [Not 24/7] +#EXTINF:-1 tvg-id="ExampleTV.ua@HD",Example TV (720p) [Not 24/7] https://example.com/playlist.m3u8 ``` diff --git a/package-lock.json b/package-lock.json index 94161cfca..a9d29de73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@eslint/eslintrc": "^3.3.0", "@eslint/js": "^9.21.0", - "@freearhey/core": "^0.2.1", + "@freearhey/core": "^0.7.0", "@octokit/core": "^6.1.4", "@octokit/plugin-paginate-rest": "^11.4.3", "@octokit/plugin-rest-endpoint-methods": "^7.1.3", @@ -1063,9 +1063,9 @@ } }, "node_modules/@freearhey/core": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.2.1.tgz", - "integrity": "sha512-kEdIxZClykKhGpgyCSlkwuVuSCCAWr3J5YvOUMJQDPgVAYvT5VbD8MYKPm+OwNi9T4HFmF6qqY90qwKJPoOXCA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.7.0.tgz", + "integrity": "sha512-HXkKPYGY7ife7JAc1q/Qxzy0WUdSnyt3rHThCShZHgnH3rz0tpkjHFW7LNegB3he0IKn/Zc95/YSOQ97Fq8ctA==", "dependencies": { "@types/fs-extra": "^11.0.2", "@types/lodash": "^4.14.198", @@ -1078,6 +1078,7 @@ "node-gzip": "^1.1.2", "normalize-url": "^6.1.0", "object-treeify": "^2.1.1", + "run-script-os": "^1.1.6", "signale": "^1.4.0" } }, @@ -6059,6 +6060,15 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/run-script-os": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz", + "integrity": "sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==", + "bin": { + "run-os": "index.js", + "run-script-os": "index.js" + } + }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -7455,9 +7465,9 @@ } }, "@freearhey/core": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.2.1.tgz", - "integrity": "sha512-kEdIxZClykKhGpgyCSlkwuVuSCCAWr3J5YvOUMJQDPgVAYvT5VbD8MYKPm+OwNi9T4HFmF6qqY90qwKJPoOXCA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.7.0.tgz", + "integrity": "sha512-HXkKPYGY7ife7JAc1q/Qxzy0WUdSnyt3rHThCShZHgnH3rz0tpkjHFW7LNegB3he0IKn/Zc95/YSOQ97Fq8ctA==", "requires": { "@types/fs-extra": "^11.0.2", "@types/lodash": "^4.14.198", @@ -7470,6 +7480,7 @@ "node-gzip": "^1.1.2", "normalize-url": "^6.1.0", "object-treeify": "^2.1.1", + "run-script-os": "^1.1.6", "signale": "^1.4.0" }, "dependencies": { @@ -11122,6 +11133,11 @@ "queue-microtask": "^1.2.2" } }, + "run-script-os": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz", + "integrity": "sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==" + }, "semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", diff --git a/package.json b/package.json index 7db699386..d3aec1ea8 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "dependencies": { "@eslint/eslintrc": "^3.3.0", "@eslint/js": "^9.21.0", - "@freearhey/core": "^0.2.1", + "@freearhey/core": "^0.7.0", "@octokit/core": "^6.1.4", "@octokit/plugin-paginate-rest": "^11.4.3", "@octokit/plugin-rest-endpoint-methods": "^7.1.3", diff --git a/scripts/commands/api/generate.ts b/scripts/commands/api/generate.ts index 9f311fd38..670fa091d 100644 --- a/scripts/commands/api/generate.ts +++ b/scripts/commands/api/generate.ts @@ -1,21 +1,37 @@ -import { Logger, Storage } from '@freearhey/core' -import { API_DIR, STREAMS_DIR } from '../../constants' +import { Logger, Storage, Collection } from '@freearhey/core' +import { API_DIR, STREAMS_DIR, DATA_DIR } from '../../constants' import { PlaylistParser } from '../../core' -import { Stream } from '../../models' +import { Stream, Channel, Feed } from '../../models' +import { uniqueId } from 'lodash' async function main() { const logger = new Logger() + logger.info('loading api data...') + const dataStorage = new Storage(DATA_DIR) + const channelsData = await dataStorage.json('channels.json') + const channels = new Collection(channelsData).map(data => new Channel(data)) + const channelsGroupedById = channels.keyBy((channel: Channel) => channel.id) + const feedsData = await dataStorage.json('feeds.json') + const feeds = new Collection(feedsData).map(data => + new Feed(data).withChannel(channelsGroupedById) + ) + const feedsGroupedByChannelId = feeds.groupBy((feed: Feed) => + feed.channel ? feed.channel.id : uniqueId() + ) + logger.info('loading streams...') const streamsStorage = new Storage(STREAMS_DIR) - const parser = new PlaylistParser({ storage: streamsStorage }) + const parser = new PlaylistParser({ + storage: streamsStorage, + channelsGroupedById, + feedsGroupedByChannelId + }) const files = await streamsStorage.list('**/*.m3u') let streams = await parser.parse(files) streams = streams - .map(data => new Stream(data)) - .orderBy([(stream: Stream) => stream.channel]) + .orderBy((stream: Stream) => stream.getId()) .map((stream: Stream) => stream.toJSON()) - logger.info(`found ${streams.count()} streams`) logger.info('saving to .api/streams.json...') diff --git a/scripts/commands/api/load.ts b/scripts/commands/api/load.ts index 68e6e18a4..fbb1fea43 100644 --- a/scripts/commands/api/load.ts +++ b/scripts/commands/api/load.ts @@ -12,7 +12,9 @@ async function main() { client.download('countries.json'), client.download('languages.json'), client.download('regions.json'), - client.download('subdivisions.json') + client.download('subdivisions.json'), + client.download('feeds.json'), + client.download('timezones.json') ] await Promise.all(requests) diff --git a/scripts/commands/playlist/format.ts b/scripts/commands/playlist/format.ts index d532db607..6ac14cb62 100644 --- a/scripts/commands/playlist/format.ts +++ b/scripts/commands/playlist/format.ts @@ -1,25 +1,36 @@ import { Logger, Storage, Collection } from '@freearhey/core' import { STREAMS_DIR, DATA_DIR } from '../../constants' import { PlaylistParser } from '../../core' -import { Stream, Playlist, Channel } from '../../models' +import { Stream, Playlist, Channel, Feed } from '../../models' import { program } from 'commander' +import { uniqueId } from 'lodash' program.argument('[filepath]', 'Path to file to validate').parse(process.argv) async function main() { - const storage = new Storage(STREAMS_DIR) + const streamsStorage = new Storage(STREAMS_DIR) const logger = new Logger() - logger.info('loading channels from api...') + logger.info('loading data from api...') const dataStorage = new Storage(DATA_DIR) - const channelsContent = await dataStorage.json('channels.json') - const groupedChannels = new Collection(channelsContent) - .map(data => new Channel(data)) - .keyBy((channel: Channel) => channel.id) + const channelsData = await dataStorage.json('channels.json') + const channels = new Collection(channelsData).map(data => new Channel(data)) + const channelsGroupedById = channels.keyBy((channel: Channel) => channel.id) + const feedsData = await dataStorage.json('feeds.json') + const feeds = new Collection(feedsData).map(data => + new Feed(data).withChannel(channelsGroupedById) + ) + const feedsGroupedByChannelId = feeds.groupBy(feed => + feed.channel ? feed.channel.id : uniqueId() + ) logger.info('loading streams...') - const parser = new PlaylistParser({ storage }) - const files = program.args.length ? program.args : await storage.list('**/*.m3u') + const parser = new PlaylistParser({ + storage: streamsStorage, + channelsGroupedById, + feedsGroupedByChannelId + }) + const files = program.args.length ? program.args : await streamsStorage.list('**/*.m3u') let streams = await parser.parse(files) logger.info(`found ${streams.count()} streams`) @@ -35,8 +46,8 @@ async function main() { logger.info('removing wrong id...') streams = streams.map((stream: Stream) => { - if (groupedChannels.missing(stream.channel)) { - stream.channel = '' + if (!stream.channel || channelsGroupedById.missing(stream.channel.id)) { + stream.id = '' } return stream @@ -46,22 +57,22 @@ async function main() { streams = streams.orderBy( [ (stream: Stream) => stream.name, - (stream: Stream) => parseInt(stream.quality.replace('p', '')), - (stream: Stream) => stream.label, + (stream: Stream) => stream.getVerticalResolution(), + (stream: Stream) => stream.getLabel(), (stream: Stream) => stream.url ], ['asc', 'desc', 'asc', 'asc'] ) logger.info('saving...') - const groupedStreams = streams.groupBy((stream: Stream) => stream.filepath) + const groupedStreams = streams.groupBy((stream: Stream) => stream.getFilepath()) for (let filepath of groupedStreams.keys()) { const streams = groupedStreams.get(filepath) || [] if (!streams.length) return const playlist = new Playlist(streams, { public: false }) - await storage.save(filepath, playlist.toString()) + await streamsStorage.save(filepath, playlist.toString()) } } diff --git a/scripts/commands/playlist/generate.ts b/scripts/commands/playlist/generate.ts index bab7839fd..7acbbba4b 100644 --- a/scripts/commands/playlist/generate.ts +++ b/scripts/commands/playlist/generate.ts @@ -1,14 +1,23 @@ -import { Logger, Storage, Collection, File } from '@freearhey/core' +import { Logger, Storage, Collection } from '@freearhey/core' import { PlaylistParser } from '../../core' -import { Stream, Category, Channel, Language, Country, Region, Subdivision } from '../../models' -import _ from 'lodash' +import { + Stream, + Category, + Channel, + Language, + Country, + Region, + Subdivision, + Feed, + Timezone +} from '../../models' +import { uniqueId } from 'lodash' import { CategoriesGenerator, CountriesGenerator, LanguagesGenerator, RegionsGenerator, IndexGenerator, - IndexNsfwGenerator, IndexCategoryGenerator, IndexCountryGenerator, IndexLanguageGenerator, @@ -19,123 +28,136 @@ import { DATA_DIR, LOGS_DIR, STREAMS_DIR } from '../../constants' async function main() { const logger = new Logger() const dataStorage = new Storage(DATA_DIR) + const generatorsLogger = new Logger({ + stream: await new Storage(LOGS_DIR).createStream(`generators.log`) + }) logger.info('loading data from api...') - const channelsContent = await dataStorage.json('channels.json') - const channels = new Collection(channelsContent).map(data => new Channel(data)) - const categoriesContent = await dataStorage.json('categories.json') - const categories = new Collection(categoriesContent).map(data => new Category(data)) - const countriesContent = await dataStorage.json('countries.json') - const countries = new Collection(countriesContent).map(data => new Country(data)) - const languagesContent = await dataStorage.json('languages.json') - const languages = new Collection(languagesContent).map(data => new Language(data)) - const regionsContent = await dataStorage.json('regions.json') - const regions = new Collection(regionsContent).map(data => new Region(data)) - const subdivisionsContent = await dataStorage.json('subdivisions.json') - const subdivisions = new Collection(subdivisionsContent).map(data => new Subdivision(data)) + const categoriesData = await dataStorage.json('categories.json') + const countriesData = await dataStorage.json('countries.json') + const languagesData = await dataStorage.json('languages.json') + const regionsData = await dataStorage.json('regions.json') + const subdivisionsData = await dataStorage.json('subdivisions.json') + const timezonesData = await dataStorage.json('timezones.json') + const channelsData = await dataStorage.json('channels.json') + const feedsData = await dataStorage.json('feeds.json') + + logger.info('preparing data...') + const subdivisions = new Collection(subdivisionsData).map(data => new Subdivision(data)) + const subdivisionsGroupedByCode = subdivisions.keyBy( + (subdivision: Subdivision) => subdivision.code + ) + const subdivisionsGroupedByCountryCode = subdivisions.groupBy( + (subdivision: Subdivision) => subdivision.countryCode + ) + let regions = new Collection(regionsData).map(data => + new Region(data).withSubdivisions(subdivisions) + ) + const regionsGroupedByCode = regions.keyBy((region: Region) => region.code) + const categories = new Collection(categoriesData).map(data => new Category(data)) + const categoriesGroupedById = categories.keyBy((category: Category) => category.id) + const languages = new Collection(languagesData).map(data => new Language(data)) + const languagesGroupedByCode = languages.keyBy((language: Language) => language.code) + const countries = new Collection(countriesData).map(data => + new Country(data) + .withRegions(regions) + .withLanguage(languagesGroupedByCode) + .withSubdivisions(subdivisionsGroupedByCountryCode) + ) + const countriesGroupedByCode = countries.keyBy((country: Country) => country.code) + regions = regions.map((region: Region) => region.withCountries(countriesGroupedByCode)) + + const timezones = new Collection(timezonesData).map(data => + new Timezone(data).withCountries(countriesGroupedByCode) + ) + const timezonesGroupedById = timezones.keyBy((timezone: Timezone) => timezone.id) + + const channels = new Collection(channelsData).map(data => + new Channel(data) + .withCategories(categoriesGroupedById) + .withCountry(countriesGroupedByCode) + .withSubdivision(subdivisionsGroupedByCode) + ) + const channelsGroupedById = channels.keyBy((channel: Channel) => channel.id) + const feeds = new Collection(feedsData).map(data => + new Feed(data) + .withChannel(channelsGroupedById) + .withLanguages(languagesGroupedByCode) + .withTimezones(timezonesGroupedById) + .withBroadcastCountries( + countriesGroupedByCode, + regionsGroupedByCode, + subdivisionsGroupedByCode + ) + .withBroadcastRegions(regions) + .withBroadcastSubdivisions(subdivisionsGroupedByCode) + ) + const feedsGroupedByChannelId = feeds.groupBy((feed: Feed) => + feed.channel ? feed.channel.id : uniqueId() + ) logger.info('loading streams...') - let streams = await loadStreams({ channels, categories, languages }) - let totalStreams = streams.count() - streams = streams.uniqBy((stream: Stream) => (stream.channel || _.uniqueId()) + stream.timeshift) + const storage = new Storage(STREAMS_DIR) + const parser = new PlaylistParser({ + storage, + channelsGroupedById, + feedsGroupedByChannelId + }) + const files = await storage.list('**/*.m3u') + let streams = await parser.parse(files) + const totalStreams = streams.count() + streams = streams.uniqBy((stream: Stream) => + stream.hasId() ? stream.getChannelId() + stream.getFeedId() : uniqueId() + ) logger.info(`found ${totalStreams} streams (including ${streams.count()} unique)`) - const generatorsLogger = new Logger({ - stream: await new Storage(LOGS_DIR).createStream(`generators.log`) - }) + logger.info('sorting streams...') + streams = streams.orderBy( + [ + (stream: Stream) => stream.getId(), + (stream: Stream) => stream.getVerticalResolution(), + (stream: Stream) => stream.getLabel() + ], + ['asc', 'asc', 'desc'] + ) logger.info('generating categories/...') await new CategoriesGenerator({ categories, streams, logger: generatorsLogger }).generate() + logger.info('generating countries/...') await new CountriesGenerator({ countries, streams, - regions, - subdivisions, logger: generatorsLogger }).generate() + logger.info('generating languages/...') await new LanguagesGenerator({ streams, logger: generatorsLogger }).generate() + logger.info('generating regions/...') await new RegionsGenerator({ streams, regions, - subdivisions, logger: generatorsLogger }).generate() + logger.info('generating index.m3u...') await new IndexGenerator({ streams, logger: generatorsLogger }).generate() + logger.info('generating index.category.m3u...') await new IndexCategoryGenerator({ streams, logger: generatorsLogger }).generate() + logger.info('generating index.country.m3u...') await new IndexCountryGenerator({ streams, - countries, - regions, - subdivisions, logger: generatorsLogger }).generate() + logger.info('generating index.language.m3u...') await new IndexLanguageGenerator({ streams, logger: generatorsLogger }).generate() + logger.info('generating index.region.m3u...') await new IndexRegionGenerator({ streams, regions, logger: generatorsLogger }).generate() } main() - -async function loadStreams({ - channels, - categories, - languages -}: { - channels: Collection - categories: Collection - languages: Collection -}) { - const groupedChannels = channels.keyBy(channel => channel.id) - const groupedCategories = categories.keyBy(category => category.id) - const groupedLanguages = languages.keyBy(language => language.code) - - const storage = new Storage(STREAMS_DIR) - const parser = new PlaylistParser({ storage }) - const files = await storage.list('**/*.m3u') - let streams = await parser.parse(files) - - streams = streams - .orderBy( - [ - (stream: Stream) => stream.channel, - (stream: Stream) => parseInt(stream.quality.replace('p', '')), - (stream: Stream) => stream.label - ], - ['asc', 'asc', 'desc', 'asc'] - ) - .map((stream: Stream) => { - const channel: Channel | undefined = groupedChannels.get(stream.channel) - - if (channel) { - const channelCategories = channel.categories - .map((id: string) => groupedCategories.get(id)) - .filter(Boolean) - const channelLanguages = channel.languages - .map((id: string) => groupedLanguages.get(id)) - .filter(Boolean) - - stream.categories = channelCategories - stream.languages = channelLanguages - stream.broadcastArea = channel.broadcastArea - stream.isNSFW = channel.isNSFW - if (channel.logo) stream.logo = channel.logo - } else { - const file = new File(stream.filepath) - const [_, countryCode] = file.name().match(/^([a-z]{2})(_|$)/) || [null, null] - const defaultBroadcastArea = countryCode ? [`c/${countryCode.toUpperCase()}`] : [] - - stream.broadcastArea = new Collection(defaultBroadcastArea) - } - - return stream - }) - - return streams -} diff --git a/scripts/commands/playlist/test.ts b/scripts/commands/playlist/test.ts index 74c19e66c..f32f2e0c2 100644 --- a/scripts/commands/playlist/test.ts +++ b/scripts/commands/playlist/test.ts @@ -1,7 +1,7 @@ import { Logger, Storage, Collection } from '@freearhey/core' -import { ROOT_DIR, STREAMS_DIR } from '../../constants' +import { ROOT_DIR, STREAMS_DIR, DATA_DIR } from '../../constants' import { PlaylistParser, StreamTester, CliTable } from '../../core' -import { Stream } from '../../models' +import { Stream, Feed, Channel } from '../../models' import { program } from 'commander' import { eachLimit } from 'async-es' import commandExists from 'command-exists' @@ -38,8 +38,6 @@ const logger = new Logger() const tester = new StreamTester() async function main() { - const storage = new Storage(ROOT_DIR) - if (await isOffline()) { logger.error(chalk.red('Internet connection is required for the script to work')) @@ -56,9 +54,25 @@ async function main() { return } + logger.info('loading channels from api...') + const dataStorage = new Storage(DATA_DIR) + const channelsData = await dataStorage.json('channels.json') + const channels = new Collection(channelsData).map(data => new Channel(data)) + const channelsGroupedById = channels.keyBy((channel: Channel) => channel.id) + const feedsData = await dataStorage.json('feeds.json') + const feeds = new Collection(feedsData).map(data => + new Feed(data).withChannel(channelsGroupedById) + ) + const feedsGroupedByChannelId = feeds.groupBy(feed => feed.channel) + logger.info('loading streams...') - const parser = new PlaylistParser({ storage }) - const files = program.args.length ? program.args : await storage.list(`${STREAMS_DIR}/*.m3u`) + const rootStorage = new Storage(ROOT_DIR) + const parser = new PlaylistParser({ + storage: rootStorage, + channelsGroupedById, + feedsGroupedByChannelId + }) + const files = program.args.length ? program.args : await rootStorage.list(`${STREAMS_DIR}/*.m3u`) streams = await parser.parse(files) logger.info(`found ${streams.count()} streams`) @@ -89,7 +103,7 @@ async function main() { main() async function runTest(stream: Stream) { - const key = stream.filepath + stream.channel + stream.url + const key = stream.filepath + stream.getId() + stream.url results[key] = chalk.white('LOADING...') const result = await tester.test(stream) @@ -125,11 +139,11 @@ function drawTable() { ] }) streams.forEach((stream: Stream, index: number) => { - const status = results[stream.filepath + stream.channel + stream.url] || chalk.gray('PENDING') + const status = results[stream.filepath + stream.getId() + stream.url] || chalk.gray('PENDING') const row = { '': index, - 'tvg-id': stream.channel.length > 25 ? stream.channel.slice(0, 22) + '...' : stream.channel, + 'tvg-id': stream.getId().length > 25 ? stream.getId().slice(0, 22) + '...' : stream.getId(), url: stream.url.length > 100 ? stream.url.slice(0, 97) + '...' : stream.url, status } diff --git a/scripts/commands/playlist/update.ts b/scripts/commands/playlist/update.ts index 1fb56ee03..b2ac5b814 100644 --- a/scripts/commands/playlist/update.ts +++ b/scripts/commands/playlist/update.ts @@ -1,45 +1,63 @@ import { Logger, Storage, Collection, Dictionary } from '@freearhey/core' import { DATA_DIR, STREAMS_DIR } from '../../constants' import { IssueLoader, PlaylistParser } from '../../core' -import { Stream, Playlist, Channel, Issue } from '../../models' +import { Stream, Playlist, Channel, Feed, Issue } from '../../models' import validUrl from 'valid-url' +import { uniqueId } from 'lodash' let processedIssues = new Collection() -let streams: Collection -let groupedChannels: Dictionary -let issues: Collection async function main() { const logger = new Logger({ disabled: true }) const loader = new IssueLoader() logger.info('loading issues...') - issues = await loader.load() + const issues = await loader.load() logger.info('loading channels from api...') const dataStorage = new Storage(DATA_DIR) - const channelsContent = await dataStorage.json('channels.json') - groupedChannels = new Collection(channelsContent) - .map(data => new Channel(data)) - .keyBy((channel: Channel) => channel.id) + const channelsData = await dataStorage.json('channels.json') + const channels = new Collection(channelsData).map(data => new Channel(data)) + const channelsGroupedById = channels.keyBy((channel: Channel) => channel.id) + const feedsData = await dataStorage.json('feeds.json') + const feeds = new Collection(feedsData).map(data => + new Feed(data).withChannel(channelsGroupedById) + ) + const feedsGroupedByChannelId = feeds.groupBy((feed: Feed) => + feed.channel ? feed.channel.id : uniqueId() + ) logger.info('loading streams...') const streamsStorage = new Storage(STREAMS_DIR) - const parser = new PlaylistParser({ storage: streamsStorage }) + const parser = new PlaylistParser({ + storage: streamsStorage, + feedsGroupedByChannelId, + channelsGroupedById + }) const files = await streamsStorage.list('**/*.m3u') - streams = await parser.parse(files) + const streams = await parser.parse(files) logger.info('removing broken streams...') - await removeStreams(loader) + await removeStreams({ streams, issues }) logger.info('edit stream description...') - await editStreams(loader) + await editStreams({ + streams, + issues, + channelsGroupedById, + feedsGroupedByChannelId + }) logger.info('add new streams...') - await addStreams(loader) + await addStreams({ + streams, + issues, + channelsGroupedById, + feedsGroupedByChannelId + }) logger.info('saving...') - const groupedStreams = streams.groupBy((stream: Stream) => stream.filepath) + const groupedStreams = streams.groupBy((stream: Stream) => stream.getFilepath()) for (let filepath of groupedStreams.keys()) { let streams = groupedStreams.get(filepath) || [] streams = streams.filter((stream: Stream) => stream.removed === false) @@ -54,7 +72,7 @@ async function main() { main() -async function removeStreams(loader: IssueLoader) { +async function removeStreams({ streams, issues }: { streams: Collection; issues: Collection }) { const requests = issues.filter( issue => issue.labels.includes('streams:remove') && issue.labels.includes('approved') ) @@ -62,22 +80,35 @@ async function removeStreams(loader: IssueLoader) { const data = issue.data if (data.missing('brokenLinks')) return - const brokenLinks = data.getString('brokenLinks').split(/\r?\n/).filter(Boolean) + const brokenLinks = data.getString('brokenLinks') || '' let changed = false - brokenLinks.forEach(link => { - const found: Stream = streams.first((_stream: Stream) => _stream.url === link.trim()) - if (found) { - found.removed = true - changed = true - } - }) + brokenLinks + .split(/\r?\n/) + .filter(Boolean) + .forEach(link => { + const found: Stream = streams.first((_stream: Stream) => _stream.url === link.trim()) + if (found) { + found.removed = true + changed = true + } + }) if (changed) processedIssues.add(issue.number) }) } -async function editStreams(loader: IssueLoader) { +async function editStreams({ + streams, + issues, + channelsGroupedById, + feedsGroupedByChannelId +}: { + streams: Collection + issues: Collection + channelsGroupedById: Dictionary + feedsGroupedByChannelId: Dictionary +}) { const requests = issues.filter( issue => issue.labels.includes('streams:edit') && issue.labels.includes('approved') ) @@ -86,59 +117,110 @@ async function editStreams(loader: IssueLoader) { if (data.missing('streamUrl')) return - let stream = streams.first( + let stream: Stream = streams.first( (_stream: Stream) => _stream.url === data.getString('streamUrl') - ) as Stream - + ) if (!stream) return - if (data.has('channelId')) { - const channel = groupedChannels.get(data.getString('channelId')) - - if (!channel) return - - stream.channel = data.getString('channelId') - stream.filepath = `${channel.country.toLowerCase()}.m3u` - stream.line = -1 - stream.name = channel.name + const streamId = data.getString('streamId') || '' + const [channelId, feedId] = streamId.split('@') + + if (channelId) { + stream + .setChannelId(channelId) + .setFeedId(feedId) + .withChannel(channelsGroupedById) + .withFeed(feedsGroupedByChannelId) + .updateId() + .updateName() + .updateFilepath() } - if (data.has('label')) stream.label = data.getString('label') - if (data.has('quality')) stream.quality = data.getString('quality') - if (data.has('httpUserAgent')) stream.httpUserAgent = data.getString('httpUserAgent') - if (data.has('httpReferrer')) stream.httpReferrer = data.getString('httpReferrer') + const label = data.getString('label') || '' + const quality = data.getString('quality') || '' + const httpUserAgent = data.getString('httpUserAgent') || '' + const httpReferrer = data.getString('httpReferrer') || '' + + if (data.has('label')) stream.setLabel(label) + if (data.has('quality')) stream.setQuality(quality) + if (data.has('httpUserAgent')) stream.setHttpUserAgent(httpUserAgent) + if (data.has('httpReferrer')) stream.setHttpReferrer(httpReferrer) processedIssues.add(issue.number) }) } -async function addStreams(loader: IssueLoader) { +async function addStreams({ + streams, + issues, + channelsGroupedById, + feedsGroupedByChannelId +}: { + streams: Collection + issues: Collection + channelsGroupedById: Dictionary + feedsGroupedByChannelId: Dictionary +}) { const requests = issues.filter( issue => issue.labels.includes('streams:add') && issue.labels.includes('approved') ) requests.forEach((issue: Issue) => { const data = issue.data - if (data.missing('channelId') || data.missing('streamUrl')) return + if (data.missing('streamId') || data.missing('streamUrl')) return if (streams.includes((_stream: Stream) => _stream.url === data.getString('streamUrl'))) return - if (!validUrl.isUri(data.getString('streamUrl'))) return + const stringUrl = data.getString('streamUrl') || '' + if (!isUri(stringUrl)) return - const channel = groupedChannels.get(data.getString('channelId')) + const streamId = data.getString('streamId') || '' + const [channelId] = streamId.split('@') + const channel: Channel = channelsGroupedById.get(channelId) if (!channel) return + const label = data.getString('label') || '' + const quality = data.getString('quality') || '' + const httpUserAgent = data.getString('httpUserAgent') || '' + const httpReferrer = data.getString('httpReferrer') || '' + const stream = new Stream({ - channel: data.getString('channelId'), - url: data.getString('streamUrl'), - label: data.getString('label'), - quality: data.getString('quality'), - httpUserAgent: data.getString('httpUserAgent'), - httpReferrer: data.getString('httpReferrer'), - filepath: `${channel.country.toLowerCase()}.m3u`, + tvg: { + id: streamId, + name: '', + url: '', + logo: '', + rec: '', + shift: '' + }, + name: data.getString('channelName') || channel.name, + url: stringUrl, + group: { + title: '' + }, + http: { + 'user-agent': httpUserAgent, + referrer: httpReferrer + }, line: -1, - name: data.getString('channelName') || channel.name + raw: '', + timeshift: '', + catchup: { + type: '', + source: '', + days: '' + } }) + .withChannel(channelsGroupedById) + .withFeed(feedsGroupedByChannelId) + .setLabel(label) + .setQuality(quality) + .updateName() + .updateFilepath() streams.add(stream) processedIssues.add(issue.number) }) } + +function isUri(string: string) { + return validUrl.isUri(encodeURI(string)) +} diff --git a/scripts/commands/playlist/validate.ts b/scripts/commands/playlist/validate.ts index b0c140dcf..6296b5651 100644 --- a/scripts/commands/playlist/validate.ts +++ b/scripts/commands/playlist/validate.ts @@ -1,9 +1,9 @@ import { Logger, Storage, Collection, Dictionary } from '@freearhey/core' import { PlaylistParser } from '../../core' -import { Channel, Stream, Blocked } from '../../models' +import { Channel, Stream, Blocked, Feed } from '../../models' import { program } from 'commander' import chalk from 'chalk' -import _ from 'lodash' +import { uniqueId } from 'lodash' import { DATA_DIR, STREAMS_DIR } from '../../constants' program.argument('[filepath]', 'Path to file to validate').parse(process.argv) @@ -17,41 +17,52 @@ type LogItem = { async function main() { const logger = new Logger() - logger.info(`loading blocklist...`) + logger.info('loading data from api...') const dataStorage = new Storage(DATA_DIR) - const channelsContent = await dataStorage.json('channels.json') - const channels = new Collection(channelsContent).map(data => new Channel(data)) + const channelsData = await dataStorage.json('channels.json') + const channels = new Collection(channelsData).map(data => new Channel(data)) + const channelsGroupedById = channels.keyBy((channel: Channel) => channel.id) + const feedsData = await dataStorage.json('feeds.json') + const feeds = new Collection(feedsData).map(data => + new Feed(data).withChannel(channelsGroupedById) + ) + const feedsGroupedByChannelId = feeds.groupBy((feed: Feed) => + feed.channel ? feed.channel.id : uniqueId() + ) const blocklistContent = await dataStorage.json('blocklist.json') const blocklist = new Collection(blocklistContent).map(data => new Blocked(data)) - - logger.info(`found ${blocklist.count()} records`) + const blocklistGroupedByChannelId = blocklist.keyBy((blocked: Blocked) => blocked.channelId) logger.info('loading streams...') const streamsStorage = new Storage(STREAMS_DIR) - const parser = new PlaylistParser({ storage: streamsStorage }) + const parser = new PlaylistParser({ + storage: streamsStorage, + channelsGroupedById, + feedsGroupedByChannelId + }) const files = program.args.length ? program.args : await streamsStorage.list('**/*.m3u') const streams = await parser.parse(files) - logger.info(`found ${streams.count()} streams`) let errors = new Collection() let warnings = new Collection() - let groupedStreams = streams.groupBy((stream: Stream) => stream.filepath) - for (const filepath of groupedStreams.keys()) { - const streams = groupedStreams.get(filepath) + let streamsGroupedByFilepath = streams.groupBy((stream: Stream) => stream.getFilepath()) + for (const filepath of streamsGroupedByFilepath.keys()) { + const streams = streamsGroupedByFilepath.get(filepath) if (!streams) continue const log = new Collection() const buffer = new Dictionary() streams.forEach((stream: Stream) => { - const invalidId = - stream.channel && !channels.first((channel: Channel) => channel.id === stream.channel) - if (invalidId) { - log.add({ - type: 'warning', - line: stream.line, - message: `"${stream.channel}" is not in the database` - }) + if (stream.channelId) { + const channel = channelsGroupedById.get(stream.channelId) + if (!channel) { + log.add({ + type: 'warning', + line: stream.line, + message: `"${stream.id}" is not in the database` + }) + } } const duplicate = stream.url && buffer.has(stream.url) @@ -65,19 +76,19 @@ async function main() { buffer.set(stream.url, true) } - const blocked = blocklist.first(blocked => stream.channel === blocked.channel) + const blocked = stream.channel ? blocklistGroupedByChannelId.get(stream.channel.id) : false if (blocked) { if (blocked.reason === 'dmca') { log.add({ type: 'error', line: stream.line, - message: `"${stream.channel}" is on the blocklist due to claims of copyright holders (${blocked.ref})` + message: `"${blocked.channelId}" is on the blocklist due to claims of copyright holders (${blocked.ref})` }) } else if (blocked.reason === 'nsfw') { log.add({ type: 'error', line: stream.line, - message: `"${stream.channel}" is on the blocklist due to NSFW content (${blocked.ref})` + message: `"${blocked.channelId}" is on the blocklist due to NSFW content (${blocked.ref})` }) } } diff --git a/scripts/commands/report/create.ts b/scripts/commands/report/create.ts index 6b440547b..7584105d1 100644 --- a/scripts/commands/report/create.ts +++ b/scripts/commands/report/create.ts @@ -1,154 +1,164 @@ import { Logger, Storage, Collection, Dictionary } from '@freearhey/core' import { DATA_DIR, STREAMS_DIR } from '../../constants' import { IssueLoader, PlaylistParser } from '../../core' -import { Blocked, Channel, Issue, Stream } from '../../models' +import { Blocked, Channel, Issue, Stream, Feed } from '../../models' +import { uniqueId } from 'lodash' async function main() { const logger = new Logger() const loader = new IssueLoader() - - const storage = new Storage(DATA_DIR) + let report = new Collection() logger.info('loading issues...') const issues = await loader.load() + logger.info('loading data from api...') + const dataStorage = new Storage(DATA_DIR) + const channelsData = await dataStorage.json('channels.json') + const channels = new Collection(channelsData).map(data => new Channel(data)) + const channelsGroupedById = channels.keyBy((channel: Channel) => channel.id) + const feedsData = await dataStorage.json('feeds.json') + const feeds = new Collection(feedsData).map(data => + new Feed(data).withChannel(channelsGroupedById) + ) + const feedsGroupedByChannelId = feeds.groupBy((feed: Feed) => + feed.channel ? feed.channel.id : uniqueId() + ) + const blocklistContent = await dataStorage.json('blocklist.json') + const blocklist = new Collection(blocklistContent).map(data => new Blocked(data)) + const blocklistGroupedByChannelId = blocklist.keyBy((blocked: Blocked) => blocked.channelId) + logger.info('loading streams...') const streamsStorage = new Storage(STREAMS_DIR) - const parser = new PlaylistParser({ storage: streamsStorage }) + const parser = new PlaylistParser({ + storage: streamsStorage, + channelsGroupedById, + feedsGroupedByChannelId + }) const files = await streamsStorage.list('**/*.m3u') const streams = await parser.parse(files) const streamsGroupedByUrl = streams.groupBy((stream: Stream) => stream.url) - const streamsGroupedByChannel = streams.groupBy((stream: Stream) => stream.channel) + const streamsGroupedByChannelId = streams.groupBy((stream: Stream) => stream.channelId) + + logger.info('checking broken streams reports...') + const brokenStreamReports = issues.filter(issue => + issue.labels.find((label: string) => label === 'broken stream') + ) + brokenStreamReports.forEach((issue: Issue) => { + const brokenLinks = issue.data.getArray('brokenLinks') || [] + + if (!brokenLinks.length) { + const result = { + issueNumber: issue.number, + type: 'broken stream', + streamId: undefined, + streamUrl: undefined, + status: 'missing_link' + } - logger.info('loading channels from api...') - const channelsContent = await storage.json('channels.json') - const channelsGroupedById = new Collection(channelsContent) - .map(data => new Channel(data)) - .groupBy((channel: Channel) => channel.id) + report.add(result) + } else { + for (const streamUrl of brokenLinks) { + const result = { + issueNumber: issue.number, + type: 'broken stream', + streamId: undefined, + streamUrl: truncate(streamUrl), + status: 'pending' + } - logger.info('loading blocklist from api...') - const blocklistContent = await storage.json('blocklist.json') - const blocklistGroupedByChannel = new Collection(blocklistContent) - .map(data => new Blocked(data)) - .groupBy((blocked: Blocked) => blocked.channel) + if (streamsGroupedByUrl.missing(streamUrl)) { + result.status = 'wrong_link' + } - let report = new Collection() + report.add(result) + } + } + }) logger.info('checking streams:add requests...') const addRequests = issues.filter(issue => issue.labels.includes('streams:add')) const addRequestsBuffer = new Dictionary() addRequests.forEach((issue: Issue) => { - const channelId = issue.data.getString('channelId') || undefined - const streamUrl = issue.data.getString('streamUrl') + const streamId = issue.data.getString('streamId') || '' + const streamUrl = issue.data.getString('streamUrl') || '' + const [channelId] = streamId.split('@') - const result = new Dictionary({ + const result = { issueNumber: issue.number, type: 'streams:add', - channelId, - streamUrl, + streamId: streamId || undefined, + streamUrl: truncate(streamUrl), status: 'pending' - }) + } - if (!channelId) result.set('status', 'missing_id') - else if (!streamUrl) result.set('status', 'missing_link') - else if (blocklistGroupedByChannel.has(channelId)) result.set('status', 'blocked') - else if (channelsGroupedById.missing(channelId)) result.set('status', 'wrong_id') - else if (streamsGroupedByUrl.has(streamUrl)) result.set('status', 'on_playlist') - else if (addRequestsBuffer.has(streamUrl)) result.set('status', 'duplicate') - else result.set('status', 'pending') + if (!channelId) result.status = 'missing_id' + else if (!streamUrl) result.status = 'missing_link' + else if (blocklistGroupedByChannelId.has(channelId)) result.status = 'blocked' + else if (channelsGroupedById.missing(channelId)) result.status = 'wrong_id' + else if (streamsGroupedByUrl.has(streamUrl)) result.status = 'on_playlist' + else if (addRequestsBuffer.has(streamUrl)) result.status = 'duplicate' + else result.status = 'pending' addRequestsBuffer.set(streamUrl, true) - report.add(result.data()) + report.add(result) }) logger.info('checking streams:edit requests...') - const editRequests = issues.filter(issue => issue.labels.find(label => label === 'streams:edit')) + const editRequests = issues.filter(issue => + issue.labels.find((label: string) => label === 'streams:edit') + ) editRequests.forEach((issue: Issue) => { - const channelId = issue.data.getString('channelId') || undefined - const streamUrl = issue.data.getString('streamUrl') || undefined + const streamId = issue.data.getString('streamId') || '' + const streamUrl = issue.data.getString('streamUrl') || '' + const [channelId] = streamId.split('@') - const result = new Dictionary({ + const result = { issueNumber: issue.number, type: 'streams:edit', - channelId, - streamUrl, + streamId: streamId || undefined, + streamUrl: truncate(streamUrl), status: 'pending' - }) - - if (!streamUrl) result.set('status', 'missing_link') - else if (streamsGroupedByUrl.missing(streamUrl)) result.set('status', 'invalid_link') - else if (channelId && channelsGroupedById.missing(channelId)) result.set('status', 'invalid_id') - - report.add(result.data()) - }) - - logger.info('checking broken streams reports...') - const brokenStreamReports = issues.filter(issue => - issue.labels.find(label => label === 'broken stream') - ) - brokenStreamReports.forEach((issue: Issue) => { - const brokenLinks = issue.data.getArray('brokenLinks') || [] - - if (!brokenLinks.length) { - const result = new Dictionary({ - issueNumber: issue.number, - type: 'broken stream', - channelId: undefined, - streamUrl: undefined, - status: 'missing_link' - }) + } - report.add(result.data()) - } else { - for (const streamUrl of brokenLinks) { - const result = new Dictionary({ - issueNumber: issue.number, - type: 'broken stream', - channelId: undefined, - streamUrl: undefined, - status: 'pending' - }) + if (!streamUrl) result.status = 'missing_link' + else if (streamsGroupedByUrl.missing(streamUrl)) result.status = 'invalid_link' + else if (channelId && channelsGroupedById.missing(channelId)) result.status = 'invalid_id' - if (streamsGroupedByUrl.missing(streamUrl)) { - result.set('streamUrl', streamUrl) - result.set('status', 'wrong_link') - } - - report.add(result.data()) - } - } + report.add(result) }) logger.info('checking channel search requests...') const channelSearchRequests = issues.filter(issue => - issue.labels.find(label => label === 'channel search') + issue.labels.find((label: string) => label === 'channel search') ) const channelSearchRequestsBuffer = new Dictionary() channelSearchRequests.forEach((issue: Issue) => { - const channelId = issue.data.getString('channelId') + const streamId = issue.data.getString('channelId') || '' + const [channelId] = streamId.split('@') - const result = new Dictionary({ + const result = { issueNumber: issue.number, type: 'channel search', - channelId, + streamId: streamId || undefined, streamUrl: undefined, status: 'pending' - }) + } - if (!channelId) result.set('status', 'missing_id') - else if (channelsGroupedById.missing(channelId)) result.set('status', 'invalid_id') - else if (channelSearchRequestsBuffer.has(channelId)) result.set('status', 'duplicate') - else if (blocklistGroupedByChannel.has(channelId)) result.set('status', 'blocked') - else if (streamsGroupedByChannel.has(channelId)) result.set('status', 'fulfilled') + if (!channelId) result.status = 'missing_id' + else if (channelsGroupedById.missing(channelId)) result.status = 'invalid_id' + else if (channelSearchRequestsBuffer.has(channelId)) result.status = 'duplicate' + else if (blocklistGroupedByChannelId.has(channelId)) result.status = 'blocked' + else if (streamsGroupedByChannelId.has(channelId)) result.status = 'fulfilled' else { const channelData = channelsGroupedById.get(channelId) - if (channelData.length && channelData[0].closed) result.set('status', 'closed') + if (channelData.length && channelData[0].closed) result.status = 'closed' } channelSearchRequestsBuffer.set(channelId, true) - report.add(result.data()) + report.add(result) }) report = report.orderBy(item => item.issueNumber).filter(item => item.status !== 'pending') @@ -157,3 +167,10 @@ async function main() { } main() + +function truncate(string: string, limit: number = 100) { + if (!string) return string + if (string.length < limit) return string + + return string.slice(0, limit) + '...' +} diff --git a/scripts/core/apiClient.ts b/scripts/core/apiClient.ts index 66fa28a87..3b6291908 100644 --- a/scripts/core/apiClient.ts +++ b/scripts/core/apiClient.ts @@ -41,7 +41,7 @@ export class ApiClient { } async download(filename: string) { - const stream = await this.storage.createStream(`/temp/data/${filename}`) + const stream = await this.storage.createStream(`temp/data/${filename}`) const bar = this.progressBar.create(0, 0, { filename }) diff --git a/scripts/core/cliTable.ts b/scripts/core/cliTable.ts index 4d1fe3253..61d9e608e 100644 --- a/scripts/core/cliTable.ts +++ b/scripts/core/cliTable.ts @@ -1,9 +1,10 @@ import { Table } from 'console-table-printer' +import { ComplexOptions } from 'console-table-printer/dist/src/models/external-table' export class CliTable { table: Table - constructor(options?) { + constructor(options?: ComplexOptions | string[]) { this.table = new Table(options) } diff --git a/scripts/core/issueData.ts b/scripts/core/issueData.ts index ee8918b65..61123f4aa 100644 --- a/scripts/core/issueData.ts +++ b/scripts/core/issueData.ts @@ -18,7 +18,7 @@ export class IssueData { return Boolean(this._data.get(key)) } - getString(key: string): string { + getString(key: string): string | undefined { const deleteSymbol = '~' return this._data.get(key) === deleteSymbol ? '' : this._data.get(key) diff --git a/scripts/core/issueLoader.ts b/scripts/core/issueLoader.ts index 535e2e744..1594eeb37 100644 --- a/scripts/core/issueLoader.ts +++ b/scripts/core/issueLoader.ts @@ -16,7 +16,7 @@ export class IssueLoader { } let issues: object[] = [] if (TESTING) { - issues = (await import('../../tests/__data__/input/issues/all.js')).default + issues = (await import('../../tests/__data__/input/playlist_update/issues.js')).default } else { issues = await octokit.paginate(octokit.rest.issues.listForRepo, { owner: OWNER, diff --git a/scripts/core/issueParser.ts b/scripts/core/issueParser.ts index e43f505d0..61e61c6d9 100644 --- a/scripts/core/issueParser.ts +++ b/scripts/core/issueParser.ts @@ -3,11 +3,10 @@ import { Issue } from '../models' import { IssueData } from './issueData' const FIELDS = new Dictionary({ + 'Stream ID': 'streamId', 'Channel ID': 'channelId', - 'Channel ID (required)': 'channelId', + 'Feed ID': 'feedId', 'Stream URL': 'streamUrl', - 'Stream URL (optional)': 'streamUrl', - 'Stream URL (required)': 'streamUrl', 'Broken Link': 'brokenLinks', 'Broken Links': 'brokenLinks', Label: 'label', @@ -18,8 +17,7 @@ const FIELDS = new Dictionary({ 'HTTP Referrer': 'httpReferrer', 'What happened to the stream?': 'reason', Reason: 'reason', - Notes: 'notes', - 'Notes (optional)': 'notes' + Notes: 'notes' }) export class IssueParser { @@ -30,7 +28,7 @@ export class IssueParser { fields.forEach((field: string) => { const parsed = typeof field === 'string' ? field.split(/\r?\n/).filter(Boolean) : [] let _label = parsed.shift() - _label = _label ? _label.trim() : '' + _label = _label ? _label.replace(/ \(optional\)| \(required\)/, '').trim() : '' let _value = parsed.join('\r\n') _value = _value ? _value.trim() : '' diff --git a/scripts/core/logParser.ts b/scripts/core/logParser.ts index 322858e0c..fb888f6b5 100644 --- a/scripts/core/logParser.ts +++ b/scripts/core/logParser.ts @@ -1,4 +1,5 @@ export type LogItem = { + type: string filepath: string count: number } diff --git a/scripts/core/playlistParser.ts b/scripts/core/playlistParser.ts index d615f5c6c..b28876663 100644 --- a/scripts/core/playlistParser.ts +++ b/scripts/core/playlistParser.ts @@ -1,12 +1,22 @@ -import { Collection, Storage } from '@freearhey/core' +import { Collection, Storage, Dictionary } from '@freearhey/core' import parser from 'iptv-playlist-parser' import { Stream } from '../models' +type PlaylistPareserProps = { + storage: Storage + feedsGroupedByChannelId: Dictionary + channelsGroupedById: Dictionary +} + export class PlaylistParser { storage: Storage + feedsGroupedByChannelId: Dictionary + channelsGroupedById: Dictionary - constructor({ storage }: { storage: Storage }) { + constructor({ storage, feedsGroupedByChannelId, channelsGroupedById }: PlaylistPareserProps) { this.storage = storage + this.feedsGroupedByChannelId = feedsGroupedByChannelId + this.channelsGroupedById = channelsGroupedById } async parse(files: string[]): Promise { @@ -21,41 +31,18 @@ export class PlaylistParser { } async parseFile(filepath: string): Promise { - const streams = new Collection() - const content = await this.storage.load(filepath) const parsed: parser.Playlist = parser.parse(content) - parsed.items.forEach((item: parser.PlaylistItem) => { - const { name, label, quality } = parseTitle(item.name) - const stream = new Stream({ - channel: item.tvg.id, - name, - label, - quality, - filepath, - line: item.line, - url: item.url, - httpReferrer: item.http.referrer, - httpUserAgent: item.http['user-agent'] - }) - - streams.add(stream) + const streams = new Collection(parsed.items).map((data: parser.PlaylistItem) => { + const stream = new Stream(data) + .withFeed(this.feedsGroupedByChannelId) + .withChannel(this.channelsGroupedById) + .setFilepath(filepath) + + return stream }) return streams } } - -function parseTitle(title: string): { name: string; label: string; quality: string } { - const [, label] = title.match(/ \[(.*)\]$/) || [null, ''] - title = title.replace(new RegExp(` \\[${escapeRegExp(label)}\\]$`), '') - const [, quality] = title.match(/ \(([0-9]+p)\)$/) || [null, ''] - title = title.replace(new RegExp(` \\(${quality}\\)$`), '') - - return { name: title, label, quality } -} - -function escapeRegExp(text) { - return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -} diff --git a/scripts/core/streamTester.ts b/scripts/core/streamTester.ts index d3f772f97..89c44de74 100644 --- a/scripts/core/streamTester.ts +++ b/scripts/core/streamTester.ts @@ -11,15 +11,15 @@ export class StreamTester { async test(stream: Stream) { if (TESTING) { - const results = (await import('../../tests/__data__/input/test_results/all.js')).default + const results = (await import('../../tests/__data__/input/playlist_test/results.js')).default return results[stream.url] } else { return this.checker.checkStream({ url: stream.url, http: { - referrer: stream.httpReferrer, - 'user-agent': stream.httpUserAgent + referrer: stream.getHttpReferrer(), + 'user-agent': stream.getHttpUserAgent() } }) } diff --git a/scripts/generators/categoriesGenerator.ts b/scripts/generators/categoriesGenerator.ts index 672af3d90..cd20b6ea4 100644 --- a/scripts/generators/categoriesGenerator.ts +++ b/scripts/generators/categoriesGenerator.ts @@ -29,11 +29,7 @@ export class CategoriesGenerator implements Generator { const categoryStreams = streams .filter((stream: Stream) => stream.hasCategory(category)) .map((stream: Stream) => { - const streamCategories = stream.categories - .map((category: Category) => category.name) - .sort() - const groupTitle = stream.categories ? streamCategories.join(';') : '' - stream.groupTitle = groupTitle + stream.groupTitle = stream.getCategoryNames().join(';') return stream }) @@ -41,13 +37,17 @@ export class CategoriesGenerator implements Generator { const playlist = new Playlist(categoryStreams, { public: true }) const filepath = `categories/${category.id}.m3u` await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info( + JSON.stringify({ type: 'category', filepath, count: playlist.streams.count() }) + ) }) - const undefinedStreams = streams.filter((stream: Stream) => stream.noCategories()) + const undefinedStreams = streams.filter((stream: Stream) => !stream.hasCategories()) const playlist = new Playlist(undefinedStreams, { public: true }) const filepath = 'categories/undefined.m3u' await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info( + JSON.stringify({ type: 'category', filepath, count: playlist.streams.count() }) + ) } } diff --git a/scripts/generators/countriesGenerator.ts b/scripts/generators/countriesGenerator.ts index 0b5bc8c11..c935da5a4 100644 --- a/scripts/generators/countriesGenerator.ts +++ b/scripts/generators/countriesGenerator.ts @@ -1,12 +1,10 @@ import { Generator } from './generator' import { Collection, Storage, Logger } from '@freearhey/core' -import { Country, Region, Subdivision, Stream, Playlist } from '../models' +import { Country, Subdivision, Stream, Playlist } from '../models' import { PUBLIC_DIR } from '../constants' type CountriesGeneratorProps = { streams: Collection - regions: Collection - subdivisions: Collection countries: Collection logger: Logger } @@ -14,55 +12,37 @@ type CountriesGeneratorProps = { export class CountriesGenerator implements Generator { streams: Collection countries: Collection - regions: Collection - subdivisions: Collection storage: Storage logger: Logger - constructor({ streams, countries, regions, subdivisions, logger }: CountriesGeneratorProps) { + constructor({ streams, countries, logger }: CountriesGeneratorProps) { this.streams = streams this.countries = countries - this.regions = regions - this.subdivisions = subdivisions this.storage = new Storage(PUBLIC_DIR) this.logger = logger } async generate(): Promise { const streams = this.streams - .orderBy([stream => stream.getTitle()]) + .orderBy((stream: Stream) => stream.getTitle()) .filter((stream: Stream) => stream.isSFW()) - const regions = this.regions.filter((region: Region) => region.code !== 'INT') this.countries.forEach(async (country: Country) => { - const countrySubdivisions = this.subdivisions.filter( - (subdivision: Subdivision) => subdivision.country === country.code + const countryStreams = streams.filter((stream: Stream) => + stream.isBroadcastInCountry(country) ) - - const countrySubdivisionsCodes = countrySubdivisions.map( - (subdivision: Subdivision) => `s/${subdivision.code}` - ) - - const countryAreaCodes = regions - .filter((region: Region) => region.countries.includes(country.code)) - .map((region: Region) => `r/${region.code}`) - .concat(countrySubdivisionsCodes) - .add(`c/${country.code}`) - - const countryStreams = streams.filter(stream => - stream.broadcastArea.intersects(countryAreaCodes) - ) - if (countryStreams.isEmpty()) return const playlist = new Playlist(countryStreams, { public: true }) const filepath = `countries/${country.code.toLowerCase()}.m3u` await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info( + JSON.stringify({ type: 'country', filepath, count: playlist.streams.count() }) + ) - countrySubdivisions.forEach(async (subdivision: Subdivision) => { - const subdivisionStreams = streams.filter(stream => - stream.broadcastArea.includes(`s/${subdivision.code}`) + country.getSubdivisions().forEach(async (subdivision: Subdivision) => { + const subdivisionStreams = streams.filter((stream: Stream) => + stream.isBroadcastInSubdivision(subdivision) ) if (subdivisionStreams.isEmpty()) return @@ -70,16 +50,22 @@ export class CountriesGenerator implements Generator { const playlist = new Playlist(subdivisionStreams, { public: true }) const filepath = `subdivisions/${subdivision.code.toLowerCase()}.m3u` await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info( + JSON.stringify({ type: 'subdivision', filepath, count: playlist.streams.count() }) + ) }) }) - const internationalStreams = streams.filter(stream => stream.isInternational()) - if (internationalStreams.notEmpty()) { - const playlist = new Playlist(internationalStreams, { public: true }) - const filepath = 'countries/int.m3u' - await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) - } + const undefinedStreams = streams.filter((stream: Stream) => !stream.hasBroadcastArea()) + const undefinedPlaylist = new Playlist(undefinedStreams, { public: true }) + const undefinedFilepath = 'countries/undefined.m3u' + await this.storage.save(undefinedFilepath, undefinedPlaylist.toString()) + this.logger.info( + JSON.stringify({ + type: 'country', + filepath: undefinedFilepath, + count: undefinedPlaylist.streams.count() + }) + ) } } diff --git a/scripts/generators/indexCategoryGenerator.ts b/scripts/generators/indexCategoryGenerator.ts index 8fd5f2cbf..529ee8336 100644 --- a/scripts/generators/indexCategoryGenerator.ts +++ b/scripts/generators/indexCategoryGenerator.ts @@ -26,14 +26,14 @@ export class IndexCategoryGenerator implements Generator { let groupedStreams = new Collection() streams.forEach((stream: Stream) => { - if (stream.noCategories()) { + if (!stream.hasCategories()) { const streamClone = stream.clone() streamClone.groupTitle = 'Undefined' groupedStreams.add(streamClone) return } - stream.categories.forEach((category: Category) => { + stream.getCategories().forEach((category: Category) => { const streamClone = stream.clone() streamClone.groupTitle = category.name groupedStreams.push(streamClone) @@ -48,6 +48,6 @@ export class IndexCategoryGenerator implements Generator { const playlist = new Playlist(groupedStreams, { public: true }) const filepath = 'index.category.m3u' await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info(JSON.stringify({ type: 'index', filepath, count: playlist.streams.count() })) } } diff --git a/scripts/generators/indexCountryGenerator.ts b/scripts/generators/indexCountryGenerator.ts index dcdb214f8..c65a43734 100644 --- a/scripts/generators/indexCountryGenerator.ts +++ b/scripts/generators/indexCountryGenerator.ts @@ -1,29 +1,20 @@ import { Generator } from './generator' import { Collection, Storage, Logger } from '@freearhey/core' -import { Stream, Playlist, Country, Subdivision, Region } from '../models' +import { Stream, Playlist, Country } from '../models' import { PUBLIC_DIR } from '../constants' type IndexCountryGeneratorProps = { streams: Collection - regions: Collection - countries: Collection - subdivisions: Collection logger: Logger } export class IndexCountryGenerator implements Generator { streams: Collection - countries: Collection - regions: Collection - subdivisions: Collection storage: Storage logger: Logger - constructor({ streams, regions, countries, subdivisions, logger }: IndexCountryGeneratorProps) { + constructor({ streams, logger }: IndexCountryGeneratorProps) { this.streams = streams - this.countries = countries - this.regions = regions - this.subdivisions = subdivisions this.storage = new Storage(PUBLIC_DIR) this.logger = logger } @@ -32,10 +23,10 @@ export class IndexCountryGenerator implements Generator { let groupedStreams = new Collection() this.streams - .orderBy(stream => stream.getTitle()) - .filter(stream => stream.isSFW()) - .forEach(stream => { - if (stream.noBroadcastArea()) { + .orderBy((stream: Stream) => stream.getTitle()) + .filter((stream: Stream) => stream.isSFW()) + .forEach((stream: Stream) => { + if (!stream.hasBroadcastArea()) { const streamClone = stream.clone() streamClone.groupTitle = 'Undefined' groupedStreams.add(streamClone) @@ -48,7 +39,7 @@ export class IndexCountryGenerator implements Generator { groupedStreams.add(streamClone) } - this.getStreamBroadcastCountries(stream).forEach((country: Country) => { + stream.getBroadcastCountries().forEach((country: Country) => { const streamClone = stream.clone() streamClone.groupTitle = country.name groupedStreams.add(streamClone) @@ -65,40 +56,6 @@ export class IndexCountryGenerator implements Generator { const playlist = new Playlist(groupedStreams, { public: true }) const filepath = 'index.country.m3u' await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) - } - - getStreamBroadcastCountries(stream: Stream) { - const groupedRegions = this.regions.keyBy((region: Region) => region.code) - const groupedCountries = this.countries.keyBy((country: Country) => country.code) - const groupedSubdivisions = this.subdivisions.keyBy( - (subdivision: Subdivision) => subdivision.code - ) - - let broadcastCountries = new Collection() - - stream.broadcastArea.forEach(broadcastAreaCode => { - const [type, code] = broadcastAreaCode.split('/') - switch (type) { - case 'c': - broadcastCountries.add(code) - break - case 'r': - if (code !== 'INT' && groupedRegions.has(code)) { - broadcastCountries = broadcastCountries.concat(groupedRegions.get(code).countries) - } - break - case 's': - if (groupedSubdivisions.has(code)) { - broadcastCountries.add(groupedSubdivisions.get(code).country) - } - break - } - }) - - return broadcastCountries - .uniq() - .map(code => groupedCountries.get(code)) - .filter(Boolean) + this.logger.info(JSON.stringify({ type: 'index', filepath, count: playlist.streams.count() })) } } diff --git a/scripts/generators/indexGenerator.ts b/scripts/generators/indexGenerator.ts index b4389ff5f..fafda061f 100644 --- a/scripts/generators/indexGenerator.ts +++ b/scripts/generators/indexGenerator.ts @@ -27,6 +27,6 @@ export class IndexGenerator implements Generator { const playlist = new Playlist(sfwStreams, { public: true }) const filepath = 'index.m3u' await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info(JSON.stringify({ type: 'index', filepath, count: playlist.streams.count() })) } } diff --git a/scripts/generators/indexLanguageGenerator.ts b/scripts/generators/indexLanguageGenerator.ts index a64ffaada..1116eb740 100644 --- a/scripts/generators/indexLanguageGenerator.ts +++ b/scripts/generators/indexLanguageGenerator.ts @@ -22,17 +22,17 @@ export class IndexLanguageGenerator implements Generator { async generate(): Promise { let groupedStreams = new Collection() this.streams - .orderBy(stream => stream.getTitle()) - .filter(stream => stream.isSFW()) - .forEach(stream => { - if (stream.noLanguages()) { + .orderBy((stream: Stream) => stream.getTitle()) + .filter((stream: Stream) => stream.isSFW()) + .forEach((stream: Stream) => { + if (!stream.hasLanguages()) { const streamClone = stream.clone() streamClone.groupTitle = 'Undefined' groupedStreams.add(streamClone) return } - stream.languages.forEach((language: Language) => { + stream.getLanguages().forEach((language: Language) => { const streamClone = stream.clone() streamClone.groupTitle = language.name groupedStreams.add(streamClone) @@ -47,6 +47,6 @@ export class IndexLanguageGenerator implements Generator { const playlist = new Playlist(groupedStreams, { public: true }) const filepath = 'index.language.m3u' await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info(JSON.stringify({ type: 'index', filepath, count: playlist.streams.count() })) } } diff --git a/scripts/generators/indexNsfwGenerator.ts b/scripts/generators/indexNsfwGenerator.ts index a1f0a8062..a89cf0a10 100644 --- a/scripts/generators/indexNsfwGenerator.ts +++ b/scripts/generators/indexNsfwGenerator.ts @@ -25,6 +25,6 @@ export class IndexNsfwGenerator implements Generator { const playlist = new Playlist(allStreams, { public: true }) const filepath = 'index.nsfw.m3u' await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info(JSON.stringify({ type: 'index', filepath, count: playlist.streams.count() })) } } diff --git a/scripts/generators/indexRegionGenerator.ts b/scripts/generators/indexRegionGenerator.ts index 55affcaa3..94537c9af 100644 --- a/scripts/generators/indexRegionGenerator.ts +++ b/scripts/generators/indexRegionGenerator.ts @@ -28,14 +28,21 @@ export class IndexRegionGenerator implements Generator { .orderBy((stream: Stream) => stream.getTitle()) .filter((stream: Stream) => stream.isSFW()) .forEach((stream: Stream) => { - if (stream.noBroadcastArea()) { + if (stream.isInternational()) { + const streamClone = stream.clone() + streamClone.groupTitle = 'International' + groupedStreams.push(streamClone) + return + } + + if (!stream.hasBroadcastArea()) { const streamClone = stream.clone() streamClone.groupTitle = 'Undefined' groupedStreams.push(streamClone) return } - this.getStreamRegions(stream).forEach((region: Region) => { + stream.getBroadcastRegions().forEach((region: Region) => { const streamClone = stream.clone() streamClone.groupTitle = region.name groupedStreams.push(streamClone) @@ -43,41 +50,14 @@ export class IndexRegionGenerator implements Generator { }) groupedStreams = groupedStreams.orderBy((stream: Stream) => { - if (stream.groupTitle === 'Undefined') return 'ZZ' + if (stream.groupTitle === 'International') return 'ZZ' + if (stream.groupTitle === 'Undefined') return 'ZZZ' return stream.groupTitle }) const playlist = new Playlist(groupedStreams, { public: true }) const filepath = 'index.region.m3u' await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) - } - - getStreamRegions(stream: Stream) { - let streamRegions = new Collection() - stream.broadcastArea.forEach(broadcastAreaCode => { - const [type, code] = broadcastAreaCode.split('/') - switch (type) { - case 'r': - const groupedRegions = this.regions.keyBy((region: Region) => region.code) - streamRegions.add(groupedRegions.get(code)) - break - case 's': - const [countryCode] = code.split('-') - const subdivisionRegions = this.regions.filter((region: Region) => - region.countries.includes(countryCode) - ) - streamRegions = streamRegions.concat(subdivisionRegions) - break - case 'c': - const countryRegions = this.regions.filter((region: Region) => - region.countries.includes(code) - ) - streamRegions = streamRegions.concat(countryRegions) - break - } - }) - - return streamRegions + this.logger.info(JSON.stringify({ type: 'index', filepath, count: playlist.streams.count() })) } } diff --git a/scripts/generators/languagesGenerator.ts b/scripts/generators/languagesGenerator.ts index d40d53d9b..114fcddb2 100644 --- a/scripts/generators/languagesGenerator.ts +++ b/scripts/generators/languagesGenerator.ts @@ -18,35 +18,40 @@ export class LanguagesGenerator implements Generator { async generate(): Promise { const streams = this.streams - .orderBy(stream => stream.getTitle()) - .filter(stream => stream.isSFW()) + .orderBy((stream: Stream) => stream.getTitle()) + .filter((stream: Stream) => stream.isSFW()) let languages = new Collection() streams.forEach((stream: Stream) => { - languages = languages.concat(stream.languages) + languages = languages.concat(stream.getLanguages()) }) languages + .filter(Boolean) .uniqBy((language: Language) => language.code) .orderBy((language: Language) => language.name) .forEach(async (language: Language) => { - const languageStreams = streams.filter(stream => stream.hasLanguage(language)) + const languageStreams = streams.filter((stream: Stream) => stream.hasLanguage(language)) if (languageStreams.isEmpty()) return const playlist = new Playlist(languageStreams, { public: true }) const filepath = `languages/${language.code}.m3u` await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info( + JSON.stringify({ type: 'language', filepath, count: playlist.streams.count() }) + ) }) - const undefinedStreams = streams.filter(stream => stream.noLanguages()) + const undefinedStreams = streams.filter((stream: Stream) => !stream.hasLanguages()) if (undefinedStreams.isEmpty()) return const playlist = new Playlist(undefinedStreams, { public: true }) const filepath = 'languages/undefined.m3u' await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info( + JSON.stringify({ type: 'language', filepath, count: playlist.streams.count() }) + ) } } diff --git a/scripts/generators/regionsGenerator.ts b/scripts/generators/regionsGenerator.ts index 9c29ee3a2..fb0a5d688 100644 --- a/scripts/generators/regionsGenerator.ts +++ b/scripts/generators/regionsGenerator.ts @@ -1,53 +1,61 @@ import { Generator } from './generator' import { Collection, Storage, Logger } from '@freearhey/core' -import { Playlist, Subdivision, Region } from '../models' +import { Playlist, Region, Stream } from '../models' import { PUBLIC_DIR } from '../constants' type RegionsGeneratorProps = { streams: Collection regions: Collection - subdivisions: Collection logger: Logger } export class RegionsGenerator implements Generator { streams: Collection regions: Collection - subdivisions: Collection storage: Storage logger: Logger - constructor({ streams, regions, subdivisions, logger }: RegionsGeneratorProps) { + constructor({ streams, regions, logger }: RegionsGeneratorProps) { this.streams = streams this.regions = regions - this.subdivisions = subdivisions this.storage = new Storage(PUBLIC_DIR) this.logger = logger } async generate(): Promise { const streams = this.streams - .orderBy(stream => stream.getTitle()) - .filter(stream => stream.isSFW()) + .orderBy((stream: Stream) => stream.getTitle()) + .filter((stream: Stream) => stream.isSFW()) this.regions.forEach(async (region: Region) => { - if (region.code === 'INT') return + if (region.isWorldwide()) return - const regionSubdivisionsCodes = this.subdivisions - .filter((subdivision: Subdivision) => region.countries.indexOf(subdivision.country) > -1) - .map((subdivision: Subdivision) => `s/${subdivision.code}`) - - const regionCodes = region.countries - .map((code: string) => `c/${code}`) - .concat(regionSubdivisionsCodes) - .add(`r/${region.code}`) - - const regionStreams = streams.filter(stream => stream.broadcastArea.intersects(regionCodes)) + const regionStreams = streams.filter((stream: Stream) => stream.isBroadcastInRegion(region)) const playlist = new Playlist(regionStreams, { public: true }) const filepath = `regions/${region.code.toLowerCase()}.m3u` await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + this.logger.info( + JSON.stringify({ type: 'region', filepath, count: playlist.streams.count() }) + ) }) + + const internationalStreams = streams.filter((stream: Stream) => stream.isInternational()) + const internationalPlaylist = new Playlist(internationalStreams, { public: true }) + const internationalFilepath = 'regions/int.m3u' + await this.storage.save(internationalFilepath, internationalPlaylist.toString()) + this.logger.info( + JSON.stringify({ + type: 'region', + filepath: internationalFilepath, + count: internationalPlaylist.streams.count() + }) + ) + + const undefinedStreams = streams.filter((stream: Stream) => !stream.hasBroadcastArea()) + const playlist = new Playlist(undefinedStreams, { public: true }) + const filepath = 'regions/undefined.m3u' + await this.storage.save(filepath, playlist.toString()) + this.logger.info(JSON.stringify({ type: 'region', filepath, count: playlist.streams.count() })) } } diff --git a/scripts/models/blocked.ts b/scripts/models/blocked.ts index 1bc38886b..29041278b 100644 --- a/scripts/models/blocked.ts +++ b/scripts/models/blocked.ts @@ -5,13 +5,13 @@ type BlockedProps = { } export class Blocked { - channel: string + channelId: string reason: string ref: string - constructor({ ref, reason, channel }: BlockedProps) { - this.channel = channel - this.reason = reason - this.ref = ref + constructor(data: BlockedProps) { + this.channelId = data.channel + this.reason = data.reason + this.ref = data.ref } } diff --git a/scripts/models/broadcastArea.ts b/scripts/models/broadcastArea.ts new file mode 100644 index 000000000..2b96b7f91 --- /dev/null +++ b/scripts/models/broadcastArea.ts @@ -0,0 +1,11 @@ +type BroadcastAreaProps = { + code: string +} + +export class BroadcastArea { + code: string + + constructor(data: BroadcastAreaProps) { + this.code = data.code + } +} diff --git a/scripts/models/category.ts b/scripts/models/category.ts index 885cea849..17ff9af12 100644 --- a/scripts/models/category.ts +++ b/scripts/models/category.ts @@ -1,4 +1,4 @@ -type CategoryProps = { +type CategoryData = { id: string name: string } @@ -7,8 +7,8 @@ export class Category { id: string name: string - constructor({ id, name }: CategoryProps) { - this.id = id - this.name = name + constructor(data: CategoryData) { + this.id = data.id + this.name = data.name } } diff --git a/scripts/models/channel.ts b/scripts/models/channel.ts index dd7a7a1d9..1d4c5cf8d 100644 --- a/scripts/models/channel.ts +++ b/scripts/models/channel.ts @@ -1,17 +1,16 @@ -import { Collection } from '@freearhey/core' +import { Collection, Dictionary } from '@freearhey/core' +import { Category, Country, Subdivision } from './index' -type ChannelProps = { +type ChannelData = { id: string name: string alt_names: string[] network: string - owners: string[] + owners: Collection country: string subdivision: string city: string - broadcast_area: string[] - languages: string[] - categories: string[] + categories: Collection is_nsfw: boolean launched: string closed: string @@ -24,56 +23,86 @@ export class Channel { id: string name: string altNames: Collection - network: string + network?: string owners: Collection - country: string - subdivision: string - city: string - broadcastArea: Collection - languages: Collection - categories: Collection + countryCode: string + country?: Country + subdivisionCode?: string + subdivision?: Subdivision + cityName?: string + categoryIds: Collection + categories?: Collection isNSFW: boolean - launched: string - closed: string - replacedBy: string - website: string + launched?: string + closed?: string + replacedBy?: string + website?: string logo: string - constructor({ - id, - name, - alt_names, - network, - owners, - country, - subdivision, - city, - broadcast_area, - languages, - categories, - is_nsfw, - launched, - closed, - replaced_by, - website, - logo - }: ChannelProps) { - this.id = id - this.name = name - this.altNames = new Collection(alt_names) - this.network = network - this.owners = new Collection(owners) - this.country = country - this.subdivision = subdivision - this.city = city - this.broadcastArea = new Collection(broadcast_area) - this.languages = new Collection(languages) - this.categories = new Collection(categories) - this.isNSFW = is_nsfw - this.launched = launched - this.closed = closed - this.replacedBy = replaced_by - this.website = website - this.logo = logo + constructor(data: ChannelData) { + this.id = data.id + this.name = data.name + this.altNames = new Collection(data.alt_names) + this.network = data.network || undefined + this.owners = new Collection(data.owners) + this.countryCode = data.country + this.subdivisionCode = data.subdivision || undefined + this.cityName = data.city || undefined + this.categoryIds = new Collection(data.categories) + this.isNSFW = data.is_nsfw + this.launched = data.launched || undefined + this.closed = data.closed || undefined + this.replacedBy = data.replaced_by || undefined + this.website = data.website || undefined + this.logo = data.logo + } + + withSubdivision(subdivisionsGroupedByCode: Dictionary): this { + if (!this.subdivisionCode) return this + + this.subdivision = subdivisionsGroupedByCode.get(this.subdivisionCode) + + return this + } + + withCountry(countriesGroupedByCode: Dictionary): this { + this.country = countriesGroupedByCode.get(this.countryCode) + + return this + } + + withCategories(groupedCategories: Dictionary): this { + this.categories = this.categoryIds + .map((id: string) => groupedCategories.get(id)) + .filter(Boolean) + + return this + } + + getCountry(): Country | undefined { + return this.country + } + + getSubdivision(): Subdivision | undefined { + return this.subdivision + } + + getCategories(): Collection { + return this.categories || new Collection() + } + + hasCategories(): boolean { + return !!this.categories && this.categories.notEmpty() + } + + hasCategory(category: Category): boolean { + return ( + !!this.categories && + this.categories.includes((_category: Category) => _category.id === category.id) + ) + } + + isSFW(): boolean { + return this.isNSFW === false } } diff --git a/scripts/models/country.ts b/scripts/models/country.ts index 5b33858ce..ac822a235 100644 --- a/scripts/models/country.ts +++ b/scripts/models/country.ts @@ -1,20 +1,58 @@ -type CountryProps = { +import { Collection, Dictionary } from '@freearhey/core' +import { Region, Language } from '.' + +type CountryData = { code: string name: string - languages: string[] + lang: string flag: string } export class Country { code: string name: string - languages: string[] flag: string + languageCode: string + language?: Language + subdivisions?: Collection + regions?: Collection + + constructor(data: CountryData) { + this.code = data.code + this.name = data.name + this.flag = data.flag + this.languageCode = data.lang + } + + withSubdivisions(subdivisionsGroupedByCountryCode: Dictionary): this { + this.subdivisions = subdivisionsGroupedByCountryCode.get(this.code) || new Collection() + + return this + } + + withRegions(regions: Collection): this { + this.regions = regions.filter( + (region: Region) => region.code !== 'INT' && region.includesCountryCode(this.code) + ) + + return this + } + + withLanguage(languagesGroupedByCode: Dictionary): this { + this.language = languagesGroupedByCode.get(this.languageCode) + + return this + } + + getLanguage(): Language | undefined { + return this.language + } + + getRegions(): Collection { + return this.regions || new Collection() + } - constructor({ code, name, languages, flag }: CountryProps) { - this.code = code - this.name = name - this.languages = languages - this.flag = flag + getSubdivisions(): Collection { + return this.subdivisions || new Collection() } } diff --git a/scripts/models/feed.ts b/scripts/models/feed.ts new file mode 100644 index 000000000..03e34762b --- /dev/null +++ b/scripts/models/feed.ts @@ -0,0 +1,200 @@ +import { Collection, Dictionary } from '@freearhey/core' +import { Country, Language, Region, Channel, Subdivision } from './index' + +type FeedData = { + channel: string + id: string + name: string + is_main: boolean + broadcast_area: Collection + languages: Collection + timezones: Collection + video_format: string +} + +export class Feed { + channelId: string + channel?: Channel + id: string + name: string + isMain: boolean + broadcastAreaCodes: Collection + broadcastCountryCodes: Collection + broadcastCountries?: Collection + broadcastRegionCodes: Collection + broadcastRegions?: Collection + broadcastSubdivisionCodes: Collection + broadcastSubdivisions?: Collection + languageCodes: Collection + languages?: Collection + timezoneIds: Collection + timezones?: Collection + videoFormat: string + + constructor(data: FeedData) { + this.channelId = data.channel + this.id = data.id + this.name = data.name + this.isMain = data.is_main + this.broadcastAreaCodes = new Collection(data.broadcast_area) + this.languageCodes = new Collection(data.languages) + this.timezoneIds = new Collection(data.timezones) + this.videoFormat = data.video_format + this.broadcastCountryCodes = new Collection() + this.broadcastRegionCodes = new Collection() + this.broadcastSubdivisionCodes = new Collection() + + this.broadcastAreaCodes.forEach((areaCode: string) => { + const [type, code] = areaCode.split('/') + + switch (type) { + case 'c': + this.broadcastCountryCodes.add(code) + break + case 'r': + this.broadcastRegionCodes.add(code) + break + case 's': + this.broadcastSubdivisionCodes.add(code) + break + } + }) + } + + withChannel(channelsGroupedById: Dictionary): this { + this.channel = channelsGroupedById.get(this.channelId) + + return this + } + + withLanguages(languagesGroupedByCode: Dictionary): this { + this.languages = this.languageCodes + .map((code: string) => languagesGroupedByCode.get(code)) + .filter(Boolean) + + return this + } + + withTimezones(timezonesGroupedById: Dictionary): this { + this.timezones = this.timezoneIds + .map((id: string) => timezonesGroupedById.get(id)) + .filter(Boolean) + + return this + } + + withBroadcastSubdivisions(subdivisionsGroupedByCode: Dictionary): this { + this.broadcastSubdivisions = this.broadcastSubdivisionCodes.map((code: string) => + subdivisionsGroupedByCode.get(code) + ) + + return this + } + + withBroadcastCountries( + countriesGroupedByCode: Dictionary, + regionsGroupedByCode: Dictionary, + subdivisionsGroupedByCode: Dictionary + ): this { + let broadcastCountries = new Collection() + + if (this.isInternational()) { + this.broadcastCountries = broadcastCountries + return this + } + + this.broadcastCountryCodes.forEach((code: string) => { + broadcastCountries.add(countriesGroupedByCode.get(code)) + }) + + this.broadcastRegionCodes.forEach((code: string) => { + const region: Region = regionsGroupedByCode.get(code) + if (region) { + region.countryCodes.forEach((countryCode: string) => { + broadcastCountries.add(countriesGroupedByCode.get(countryCode)) + }) + } + }) + + this.broadcastSubdivisionCodes.forEach((code: string) => { + const subdivision: Subdivision = subdivisionsGroupedByCode.get(code) + if (subdivision) { + broadcastCountries.add(countriesGroupedByCode.get(subdivision.countryCode)) + } + }) + + this.broadcastCountries = broadcastCountries.uniq().filter(Boolean) + + return this + } + + withBroadcastRegions(regions: Collection): this { + if (!this.broadcastCountries) return this + const countriesCodes = this.broadcastCountries.map((country: Country) => country.code) + + this.broadcastRegions = regions.filter((region: Region) => { + if (region.code === 'INT') return false + + return region.countryCodes.intersects(countriesCodes) + }) + + return this + } + + hasBroadcastArea(): boolean { + return ( + this.isInternational() || (!!this.broadcastCountries && this.broadcastCountries.notEmpty()) + ) + } + + getBroadcastCountries(): Collection { + return this.broadcastCountries || new Collection() + } + + getBroadcastRegions(): Collection { + return this.broadcastRegions || new Collection() + } + + getTimezones(): Collection { + return this.timezones || new Collection() + } + + getLanguages(): Collection { + return this.languages || new Collection() + } + + hasLanguages(): boolean { + return !!this.languages && this.languages.notEmpty() + } + + hasLanguage(language: Language): boolean { + return ( + !!this.languages && + this.languages.includes((_language: Language) => _language.code === language.code) + ) + } + + isInternational(): boolean { + return this.broadcastAreaCodes.includes('r/INT') + } + + isBroadcastInSubdivision(subdivision: Subdivision): boolean { + if (this.isInternational()) return false + + return this.broadcastSubdivisionCodes.includes(subdivision.code) + } + + isBroadcastInCountry(country: Country): boolean { + if (this.isInternational()) return false + + return this.getBroadcastCountries().includes( + (_country: Country) => _country.code === country.code + ) + } + + isBroadcastInRegion(region: Region): boolean { + if (this.isInternational()) return false + + return this.getBroadcastRegions().includes((_region: Region) => _region.code === region.code) + } +} diff --git a/scripts/models/index.ts b/scripts/models/index.ts index 9782fdae8..83a9380ed 100644 --- a/scripts/models/index.ts +++ b/scripts/models/index.ts @@ -8,3 +8,6 @@ export * from './language' export * from './country' export * from './region' export * from './subdivision' +export * from './feed' +export * from './broadcastArea' +export * from './timezone' diff --git a/scripts/models/language.ts b/scripts/models/language.ts index 84433abca..aeda5e6c2 100644 --- a/scripts/models/language.ts +++ b/scripts/models/language.ts @@ -1,4 +1,4 @@ -type LanguageProps = { +type LanguageData = { code: string name: string } @@ -7,8 +7,8 @@ export class Language { code: string name: string - constructor({ code, name }: LanguageProps) { - this.code = code - this.name = name + constructor(data: LanguageData) { + this.code = data.code + this.name = data.name } } diff --git a/scripts/models/region.ts b/scripts/models/region.ts index 72b30c192..928b48f06 100644 --- a/scripts/models/region.ts +++ b/scripts/models/region.ts @@ -1,6 +1,7 @@ -import { Collection } from '@freearhey/core' +import { Collection, Dictionary } from '@freearhey/core' +import { Subdivision } from '.' -type RegionProps = { +type RegionData = { code: string name: string countries: string[] @@ -9,11 +10,43 @@ type RegionProps = { export class Region { code: string name: string - countries: Collection + countryCodes: Collection + countries?: Collection + subdivisions?: Collection - constructor({ code, name, countries }: RegionProps) { - this.code = code - this.name = name - this.countries = new Collection(countries) + constructor(data: RegionData) { + this.code = data.code + this.name = data.name + this.countryCodes = new Collection(data.countries) + } + + withCountries(countriesGroupedByCode: Dictionary): this { + this.countries = this.countryCodes.map((code: string) => countriesGroupedByCode.get(code)) + + return this + } + + withSubdivisions(subdivisions: Collection): this { + this.subdivisions = subdivisions.filter( + (subdivision: Subdivision) => this.countryCodes.indexOf(subdivision.countryCode) > -1 + ) + + return this + } + + getSubdivisions(): Collection { + return this.subdivisions || new Collection() + } + + getCountries(): Collection { + return this.countries || new Collection() + } + + includesCountryCode(code: string): boolean { + return this.countryCodes.includes((countryCode: string) => countryCode === code) + } + + isWorldwide(): boolean { + return this.code === 'INT' } } diff --git a/scripts/models/stream.ts b/scripts/models/stream.ts index 53d244126..383790900 100644 --- a/scripts/models/stream.ts +++ b/scripts/models/stream.ts @@ -1,64 +1,193 @@ -import { URL, Collection } from '@freearhey/core' -import { Category, Language } from './index' +import { URL, Collection, Dictionary } from '@freearhey/core' +import { Feed, Channel, Category, Region, Subdivision, Country, Language } from './index' +import parser from 'iptv-playlist-parser' -type StreamProps = { +export class Stream { name: string url: string - filepath: string + id?: string + groupTitle: string + channelId?: string + channel?: Channel + feedId?: string + feed?: Feed + filepath?: string line: number - channel?: string + label?: string + verticalResolution?: number + isInterlaced?: boolean httpReferrer?: string httpUserAgent?: string - label?: string - quality?: string -} - -export class Stream { - channel: string - filepath: string - line: number - httpReferrer: string - label: string - name: string - quality: string - url: string - httpUserAgent: string - logo: string - broadcastArea: Collection - categories: Collection - languages: Collection - isNSFW: boolean - groupTitle: string removed: boolean = false - constructor({ - channel, - filepath, - line, - httpReferrer, - label, - name, - quality, - url, - httpUserAgent - }: StreamProps) { - this.channel = channel || '' - this.filepath = filepath - this.line = line - this.httpReferrer = httpReferrer || '' - this.label = label || '' + constructor(data: parser.PlaylistItem) { + if (!data.name) throw new Error('"name" property is required') + if (!data.url) throw new Error('"url" property is required') + + const [channelId, feedId] = data.tvg.id.split('@') + const { name, label, quality } = parseTitle(data.name) + const { verticalResolution, isInterlaced } = parseQuality(quality) + + this.id = data.tvg.id || undefined + this.feedId = feedId || undefined + this.channelId = channelId || undefined + this.line = data.line + this.label = label || undefined this.name = name - this.quality = quality || '' - this.url = url - this.httpUserAgent = httpUserAgent || '' - this.logo = '' - this.broadcastArea = new Collection() - this.categories = new Collection() - this.languages = new Collection() - this.isNSFW = false + this.verticalResolution = verticalResolution || undefined + this.isInterlaced = isInterlaced || undefined + this.url = data.url + this.httpReferrer = data.http.referrer || undefined + this.httpUserAgent = data.http['user-agent'] || undefined this.groupTitle = 'Undefined' } + withChannel(channelsGroupedById: Dictionary): this { + if (!this.channelId) return this + + this.channel = channelsGroupedById.get(this.channelId) + + return this + } + + withFeed(feedsGroupedByChannelId: Dictionary): this { + if (!this.channelId) return this + + const channelFeeds = feedsGroupedByChannelId.get(this.channelId) || [] + if (this.feedId) this.feed = channelFeeds.find((feed: Feed) => feed.id === this.feedId) + if (!this.feedId && !this.feed) this.feed = channelFeeds.find((feed: Feed) => feed.isMain) + + return this + } + + setId(id: string): this { + this.id = id + + return this + } + + setChannelId(channelId: string): this { + this.channelId = channelId + + return this + } + + setFeedId(feedId: string | undefined): this { + this.feedId = feedId + + return this + } + + setLabel(label: string): this { + this.label = label + + return this + } + + setQuality(quality: string): this { + const { verticalResolution, isInterlaced } = parseQuality(quality) + + this.verticalResolution = verticalResolution || undefined + this.isInterlaced = isInterlaced || undefined + + return this + } + + setHttpUserAgent(httpUserAgent: string): this { + this.httpUserAgent = httpUserAgent + + return this + } + + setHttpReferrer(httpReferrer: string): this { + this.httpReferrer = httpReferrer + + return this + } + + setFilepath(filepath: string): this { + this.filepath = filepath + + return this + } + + updateFilepath(): this { + if (!this.channel) return this + + this.filepath = `${this.channel.countryCode.toLowerCase()}.m3u` + + return this + } + + getChannelId(): string { + return this.channelId || '' + } + + getFeedId(): string { + if (this.feedId) return this.feedId + if (this.feed) return this.feed.id + return '' + } + + getFilepath(): string { + return this.filepath || '' + } + + getHttpReferrer(): string { + return this.httpReferrer || '' + } + + getHttpUserAgent(): string { + return this.httpUserAgent || '' + } + + getQuality(): string { + if (!this.verticalResolution) return '' + + let quality = this.verticalResolution.toString() + + if (this.isInterlaced) quality += 'i' + else quality += 'p' + + return quality + } + + hasId(): boolean { + return !!this.id + } + + hasQuality(): boolean { + return !!this.verticalResolution + } + + getVerticalResolution(): number { + if (!this.hasQuality()) return 0 + + return parseInt(this.getQuality().replace(/p|i/, '')) + } + + updateName(): this { + if (!this.channel) return this + + this.name = this.channel.name + if (this.feed && !this.feed.isMain) { + this.name += ` ${this.feed.name}` + } + + return this + } + + updateId(): this { + if (!this.channel) return this + if (this.feed) { + this.id = `${this.channel.id}@${this.feed.id}` + } else { + this.id = this.channel.id + } + + return this + } + normalizeURL() { const url = new URL(this.url) @@ -81,43 +210,82 @@ export class Stream { return !!this.channel } - hasCategories(): boolean { - return this.categories.notEmpty() + getBroadcastRegions(): Collection { + return this.feed ? this.feed.getBroadcastRegions() : new Collection() + } + + getBroadcastCountries(): Collection { + return this.feed ? this.feed.getBroadcastCountries() : new Collection() + } + + hasBroadcastArea(): boolean { + return this.feed ? this.feed.hasBroadcastArea() : false + } + + isSFW(): boolean { + return this.channel ? this.channel.isSFW() : true } - noCategories(): boolean { - return this.categories.isEmpty() + hasCategories(): boolean { + return this.channel ? this.channel.hasCategories() : false } hasCategory(category: Category): boolean { - return this.categories.includes((_category: Category) => _category.id === category.id) + return this.channel ? this.channel.hasCategory(category) : false + } + + getCategoryNames(): string[] { + return this.getCategories() + .map((category: Category) => category.name) + .sort() + .all() + } + + getCategories(): Collection { + return this.channel ? this.channel.getCategories() : new Collection() + } + + getLanguages(): Collection { + return this.feed ? this.feed.getLanguages() : new Collection() + } + + hasLanguages() { + return this.feed ? this.feed.hasLanguages() : false + } + + hasLanguage(language: Language) { + return this.feed ? this.feed.hasLanguage(language) : false + } + + getBroadcastAreaCodes(): Collection { + return this.feed ? this.feed.broadcastAreaCodes : new Collection() } - noLanguages(): boolean { - return this.languages.isEmpty() + isBroadcastInSubdivision(subdivision: Subdivision): boolean { + return this.feed ? this.feed.isBroadcastInSubdivision(subdivision) : false } - hasLanguage(language: Language): boolean { - return this.languages.includes((_language: Language) => _language.code === language.code) + isBroadcastInCountry(country: Country): boolean { + return this.feed ? this.feed.isBroadcastInCountry(country) : false } - noBroadcastArea(): boolean { - return this.broadcastArea.isEmpty() + isBroadcastInRegion(region: Region): boolean { + return this.feed ? this.feed.isBroadcastInRegion(region) : false } isInternational(): boolean { - return this.broadcastArea.includes('r/INT') + return this.feed ? this.feed.isInternational() : false } - isSFW(): boolean { - return this.isNSFW === false + getLogo(): string { + return this?.channel?.logo || '' } getTitle(): string { let title = `${this.name}` - if (this.quality) { - title += ` (${this.quality})` + if (this.getQuality()) { + title += ` (${this.getQuality()})` } if (this.label) { @@ -127,15 +295,26 @@ export class Stream { return title } + getLabel(): string { + return this.label || '' + } + + getId(): string { + return this.id || '' + } + data() { return { + id: this.id, channel: this.channel, + feed: this.feed, filepath: this.filepath, - httpReferrer: this.httpReferrer, label: this.label, name: this.name, - quality: this.quality, + verticalResolution: this.verticalResolution, + isInterlaced: this.isInterlaced, url: this.url, + httpReferrer: this.httpReferrer, httpUserAgent: this.httpUserAgent, line: this.line } @@ -143,7 +322,8 @@ export class Stream { toJSON() { return { - channel: this.channel || null, + channel: this.channelId || null, + feed: this.feedId || null, url: this.url, referrer: this.httpReferrer || null, user_agent: this.httpUserAgent || null @@ -151,10 +331,10 @@ export class Stream { } toString(options: { public: boolean }) { - let output = `#EXTINF:-1 tvg-id="${this.channel}"` + let output = `#EXTINF:-1 tvg-id="${this.getId()}"` if (options.public) { - output += ` tvg-logo="${this.logo}" group-title="${this.groupTitle}"` + output += ` tvg-logo="${this.getLogo()}" group-title="${this.groupTitle}"` } if (this.httpReferrer) { @@ -180,3 +360,29 @@ export class Stream { return output } } + +function parseTitle(title: string): { + name: string + label: string + quality: string +} { + const [, label] = title.match(/ \[(.*)\]$/) || [null, ''] + title = title.replace(new RegExp(` \\[${escapeRegExp(label)}\\]$`), '') + const [, quality] = title.match(/ \(([0-9]+p)\)$/) || [null, ''] + title = title.replace(new RegExp(` \\(${quality}\\)$`), '') + + return { name: title, label, quality } +} + +function escapeRegExp(text) { + return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} + +function parseQuality(quality: string): { verticalResolution: number; isInterlaced: boolean } { + let [, verticalResolutionString] = quality.match(/^(\d+)/) || [null, undefined] + const isInterlaced = /i$/i.test(quality) + let verticalResolution = 0 + if (verticalResolutionString) verticalResolution = parseInt(verticalResolutionString) + + return { verticalResolution, isInterlaced } +} diff --git a/scripts/models/subdivision.ts b/scripts/models/subdivision.ts index c3209ca3d..d6795fea3 100644 --- a/scripts/models/subdivision.ts +++ b/scripts/models/subdivision.ts @@ -1,4 +1,7 @@ -type SubdivisionProps = { +import { Dictionary } from '@freearhey/core' +import { Country } from '.' + +type SubdivisionData = { code: string name: string country: string @@ -7,11 +10,18 @@ type SubdivisionProps = { export class Subdivision { code: string name: string - country: string + countryCode: string + country?: Country + + constructor(data: SubdivisionData) { + this.code = data.code + this.name = data.name + this.countryCode = data.country + } + + withCountry(countriesGroupedByCode: Dictionary): this { + this.country = countriesGroupedByCode.get(this.countryCode) - constructor({ code, name, country }: SubdivisionProps) { - this.code = code - this.name = name - this.country = country + return this } } diff --git a/scripts/models/timezone.ts b/scripts/models/timezone.ts new file mode 100644 index 000000000..b519f0e06 --- /dev/null +++ b/scripts/models/timezone.ts @@ -0,0 +1,30 @@ +import { Collection, Dictionary } from '@freearhey/core' + +type TimezoneData = { + id: string + utc_offset: string + countries: string[] +} + +export class Timezone { + id: string + utcOffset: string + countryCodes: Collection + countries?: Collection + + constructor(data: TimezoneData) { + this.id = data.id + this.utcOffset = data.utc_offset + this.countryCodes = new Collection(data.countries) + } + + withCountries(countriesGroupedByCode: Dictionary): this { + this.countries = this.countryCodes.map((code: string) => countriesGroupedByCode.get(code)) + + return this + } + + getCountries(): Collection { + return this.countries || new Collection() + } +} diff --git a/scripts/tables/categoryTable.ts b/scripts/tables/categoryTable.ts index a3fb49f14..f82f3ffd4 100644 --- a/scripts/tables/categoryTable.ts +++ b/scripts/tables/categoryTable.ts @@ -11,6 +11,7 @@ export class CategoryTable implements Table { const dataStorage = new Storage(DATA_DIR) const categoriesContent = await dataStorage.json('categories.json') const categories = new Collection(categoriesContent).map(data => new Category(data)) + const categoriesGroupedById = categories.keyBy((category: Category) => category.id) const parser = new LogParser() const logsStorage = new Storage(LOGS_DIR) @@ -19,13 +20,12 @@ export class CategoryTable implements Table { let data = new Collection() parser .parse(generatorsLog) - .filter((logItem: LogItem) => logItem.filepath.includes('categories/')) + .filter((logItem: LogItem) => logItem.type === 'category') .forEach((logItem: LogItem) => { const file = new File(logItem.filepath) const categoryId = file.name() - const category: Category = categories.first( - (category: Category) => category.id === categoryId - ) + const category: Category = categoriesGroupedById.get(categoryId) + data.add([ category ? category.name : 'ZZ', category ? category.name : 'Undefined', diff --git a/scripts/tables/countryTable.ts b/scripts/tables/countryTable.ts index 06a72490e..2f50ccedf 100644 --- a/scripts/tables/countryTable.ts +++ b/scripts/tables/countryTable.ts @@ -12,34 +12,31 @@ export class CountryTable implements Table { const countriesContent = await dataStorage.json('countries.json') const countries = new Collection(countriesContent).map(data => new Country(data)) - + const countriesGroupedByCode = countries.keyBy((country: Country) => country.code) const subdivisionsContent = await dataStorage.json('subdivisions.json') const subdivisions = new Collection(subdivisionsContent).map(data => new Subdivision(data)) + const subdivisionsGroupedByCode = subdivisions.keyBy( + (subdivision: Subdivision) => subdivision.code + ) const parser = new LogParser() const logsStorage = new Storage(LOGS_DIR) const generatorsLog = await logsStorage.load('generators.log') + const parsed = parser.parse(generatorsLog) let data = new Collection() - parser - .parse(generatorsLog) - .filter( - (logItem: LogItem) => - logItem.filepath.includes('countries/') || logItem.filepath.includes('subdivisions/') - ) + + parsed + .filter((logItem: LogItem) => logItem.type === 'subdivision') .forEach((logItem: LogItem) => { const file = new File(logItem.filepath) const code = file.name().toUpperCase() const [countryCode, subdivisionCode] = code.split('-') || ['', ''] + const country = countriesGroupedByCode.get(countryCode) - if (subdivisionCode) { - const subdivision = subdivisions.first( - (subdivision: Subdivision) => subdivision.code === code - ) + if (country && subdivisionCode) { + const subdivision = subdivisionsGroupedByCode.get(code) if (subdivision) { - const country = countries.first( - (country: Country) => country.code === subdivision.country - ) data.add([ `${country.name}/${subdivision.name}`, `      ${subdivision.name}`, @@ -47,18 +44,28 @@ export class CountryTable implements Table { `https://iptv-org.github.io/iptv/${logItem.filepath}` ]) } - } else if (countryCode === 'INT') { + } + }) + + parsed + .filter((logItem: LogItem) => logItem.type === 'country') + .forEach((logItem: LogItem) => { + const file = new File(logItem.filepath) + const code = file.name().toUpperCase() + const [countryCode] = code.split('-') || ['', ''] + const country = countriesGroupedByCode.get(countryCode) + + if (country) { data.add([ - 'ZZ', - '๐ŸŒ International', + country.name, + `${country.flag} ${country.name}`, logItem.count, `https://iptv-org.github.io/iptv/${logItem.filepath}` ]) } else { - const country = countries.first((country: Country) => country.code === countryCode) data.add([ - country.name, - `${country.flag} ${country.name}`, + 'ZZ', + 'Undefined', logItem.count, `https://iptv-org.github.io/iptv/${logItem.filepath}` ]) diff --git a/scripts/tables/languageTable.ts b/scripts/tables/languageTable.ts index f0b54d242..2014ba676 100644 --- a/scripts/tables/languageTable.ts +++ b/scripts/tables/languageTable.ts @@ -11,6 +11,7 @@ export class LanguageTable implements Table { const dataStorage = new Storage(DATA_DIR) const languagesContent = await dataStorage.json('languages.json') const languages = new Collection(languagesContent).map(data => new Language(data)) + const languagesGroupedByCode = languages.keyBy((language: Language) => language.code) const parser = new LogParser() const logsStorage = new Storage(LOGS_DIR) @@ -19,13 +20,11 @@ export class LanguageTable implements Table { let data = new Collection() parser .parse(generatorsLog) - .filter((logItem: LogItem) => logItem.filepath.includes('languages/')) + .filter((logItem: LogItem) => logItem.type === 'language') .forEach((logItem: LogItem) => { const file = new File(logItem.filepath) const languageCode = file.name() - const language: Language = languages.first( - (language: Language) => language.code === languageCode - ) + const language: Language = languagesGroupedByCode.get(languageCode) data.add([ language ? language.name : 'ZZ', diff --git a/scripts/tables/regionTable.ts b/scripts/tables/regionTable.ts index 60a6e5ff7..84eeaaa4a 100644 --- a/scripts/tables/regionTable.ts +++ b/scripts/tables/regionTable.ts @@ -11,6 +11,7 @@ export class RegionTable implements Table { const dataStorage = new Storage(DATA_DIR) const regionsContent = await dataStorage.json('regions.json') const regions = new Collection(regionsContent).map(data => new Region(data)) + const regionsGroupedByCode = regions.keyBy((region: Region) => region.code) const parser = new LogParser() const logsStorage = new Storage(LOGS_DIR) @@ -19,22 +20,35 @@ export class RegionTable implements Table { let data = new Collection() parser .parse(generatorsLog) - .filter((logItem: LogItem) => logItem.filepath.includes('regions/')) + .filter((logItem: LogItem) => logItem.type === 'region') .forEach((logItem: LogItem) => { const file = new File(logItem.filepath) const regionCode = file.name().toUpperCase() - const region: Region = regions.first((region: Region) => region.code === regionCode) + const region: Region = regionsGroupedByCode.get(regionCode) if (region) { data.add([ region.name, + region.name, + logItem.count, + `https://iptv-org.github.io/iptv/${logItem.filepath}` + ]) + } else { + data.add([ + 'ZZZ', + 'Undefined', logItem.count, `https://iptv-org.github.io/iptv/${logItem.filepath}` ]) } }) - data = data.orderBy(item => item[0]) + data = data + .orderBy(item => item[0]) + .map(item => { + item.shift() + return item + }) const table = new HTMLTable(data.all(), [ { name: 'Region', align: 'left' }, diff --git a/tests/__data__/expected/.api/streams.json b/tests/__data__/expected/.api/streams.json deleted file mode 100644 index 2dfb3cd3e..000000000 --- a/tests/__data__/expected/.api/streams.json +++ /dev/null @@ -1 +0,0 @@ -[{"channel":null,"url":"http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8","referrer":null,"user_agent":null},{"channel":null,"url":"http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index2.m3u8","referrer":"http://imn.iq","user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"},{"channel":"AndorraTV.ad","url":"https://iptv-all.lanesh4d0w.repl.co/andorra/atv","referrer":null,"user_agent":null},{"channel":"BBCNews.uk","url":"http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8","referrer":null,"user_agent":null},{"channel":"LDPRTV.ru","url":"http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8","referrer":null,"user_agent":null},{"channel":"MeteoMedia.ca","url":"http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8","referrer":null,"user_agent":null},{"channel":"VisitXTV.nl","url":"https://stream.visit-x.tv/vxtv/ngrp:live_all/30fps.m3u8","referrer":null,"user_agent":null},{"channel":"Zoo.ad","url":"https://iptv-all.lanesh4d0w.repl.co/andorra/zoo","referrer":null,"user_agent":null}] \ No newline at end of file diff --git a/tests/__data__/expected/.gh-pages/categories/general.m3u b/tests/__data__/expected/.gh-pages/categories/general.m3u deleted file mode 100644 index d3b81a411..000000000 --- a/tests/__data__/expected/.gh-pages/categories/general.m3u +++ /dev/null @@ -1,5 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="BBCNews.uk" tvg-logo="https://raw.githubusercontent.com/Tapiosinn/tv-logos/master/countries/united-kingdom/bbc-news-uk.png" group-title="General;News",BBC News HD -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8 -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="General",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 diff --git a/tests/__data__/expected/.gh-pages/categories/legislative.m3u b/tests/__data__/expected/.gh-pages/categories/legislative.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/categories/legislative.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/categories/news.m3u b/tests/__data__/expected/.gh-pages/categories/news.m3u deleted file mode 100644 index cf4e62a9a..000000000 --- a/tests/__data__/expected/.gh-pages/categories/news.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="BBCNews.uk" tvg-logo="https://raw.githubusercontent.com/Tapiosinn/tv-logos/master/countries/united-kingdom/bbc-news-uk.png" group-title="General;News",BBC News HD -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8 diff --git a/tests/__data__/expected/.gh-pages/categories/undefined.m3u b/tests/__data__/expected/.gh-pages/categories/undefined.m3u deleted file mode 100644 index 33ab86e59..000000000 --- a/tests/__data__/expected/.gh-pages/categories/undefined.m3u +++ /dev/null @@ -1,11 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined" http-referrer="http://imn.iq" http-user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",Andorra TV (720p) [Not 24/7] -#EXTVLCOPT:http-referrer=http://imn.iq -#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index2.m3u8 -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Undefined",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Undefined",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo diff --git a/tests/__data__/expected/.gh-pages/categories/weather.m3u b/tests/__data__/expected/.gh-pages/categories/weather.m3u deleted file mode 100644 index 4686c68f4..000000000 --- a/tests/__data__/expected/.gh-pages/categories/weather.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Weather",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 diff --git a/tests/__data__/expected/.gh-pages/categories/xxx.m3u b/tests/__data__/expected/.gh-pages/categories/xxx.m3u deleted file mode 100644 index d1e3a69bc..000000000 --- a/tests/__data__/expected/.gh-pages/categories/xxx.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="VisitXTV.nl" tvg-logo="https://i.imgur.com/RJ9wbNF.jpg" group-title="XXX",Visit-X TV -https://stream.visit-x.tv/vxtv/ngrp:live_all/30fps.m3u8 diff --git a/tests/__data__/expected/.gh-pages/countries/ad.m3u b/tests/__data__/expected/.gh-pages/countries/ad.m3u deleted file mode 100644 index ea69856d8..000000000 --- a/tests/__data__/expected/.gh-pages/countries/ad.m3u +++ /dev/null @@ -1,5 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Undefined",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Undefined",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo diff --git a/tests/__data__/expected/.gh-pages/countries/ca.m3u b/tests/__data__/expected/.gh-pages/countries/ca.m3u deleted file mode 100644 index 4686c68f4..000000000 --- a/tests/__data__/expected/.gh-pages/countries/ca.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Weather",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 diff --git a/tests/__data__/expected/.gh-pages/countries/in.m3u b/tests/__data__/expected/.gh-pages/countries/in.m3u deleted file mode 100644 index 4708e622d..000000000 --- a/tests/__data__/expected/.gh-pages/countries/in.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 diff --git a/tests/__data__/expected/.gh-pages/countries/ru.m3u b/tests/__data__/expected/.gh-pages/countries/ru.m3u deleted file mode 100644 index cbfde9249..000000000 --- a/tests/__data__/expected/.gh-pages/countries/ru.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="General",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 diff --git a/tests/__data__/expected/.gh-pages/index.category.m3u b/tests/__data__/expected/.gh-pages/index.category.m3u deleted file mode 100644 index f63d34846..000000000 --- a/tests/__data__/expected/.gh-pages/index.category.m3u +++ /dev/null @@ -1,19 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="BBCNews.uk" tvg-logo="https://raw.githubusercontent.com/Tapiosinn/tv-logos/master/countries/united-kingdom/bbc-news-uk.png" group-title="General",BBC News HD -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8 -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="General",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 -#EXTINF:-1 tvg-id="BBCNews.uk" tvg-logo="https://raw.githubusercontent.com/Tapiosinn/tv-logos/master/countries/united-kingdom/bbc-news-uk.png" group-title="News",BBC News HD -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8 -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Weather",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined" http-referrer="http://imn.iq" http-user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",Andorra TV (720p) [Not 24/7] -#EXTVLCOPT:http-referrer=http://imn.iq -#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index2.m3u8 -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Undefined",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Undefined",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo diff --git a/tests/__data__/expected/.gh-pages/index.country.m3u b/tests/__data__/expected/.gh-pages/index.country.m3u deleted file mode 100644 index 2df73910b..000000000 --- a/tests/__data__/expected/.gh-pages/index.country.m3u +++ /dev/null @@ -1,17 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Andorra",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Andorra",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Canada",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="India",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="Russia",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 -#EXTINF:-1 tvg-id="BBCNews.uk" tvg-logo="https://raw.githubusercontent.com/Tapiosinn/tv-logos/master/countries/united-kingdom/bbc-news-uk.png" group-title="International",BBC News HD -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined" http-referrer="http://imn.iq" http-user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",Andorra TV (720p) [Not 24/7] -#EXTVLCOPT:http-referrer=http://imn.iq -#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index2.m3u8 diff --git a/tests/__data__/expected/.gh-pages/index.language.m3u b/tests/__data__/expected/.gh-pages/index.language.m3u deleted file mode 100644 index 94479bedb..000000000 --- a/tests/__data__/expected/.gh-pages/index.language.m3u +++ /dev/null @@ -1,17 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="BBCNews.uk" tvg-logo="https://raw.githubusercontent.com/Tapiosinn/tv-logos/master/countries/united-kingdom/bbc-news-uk.png" group-title="English",BBC News HD -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8 -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="Russian",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Valencian",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined" http-referrer="http://imn.iq" http-user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",Andorra TV (720p) [Not 24/7] -#EXTVLCOPT:http-referrer=http://imn.iq -#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index2.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Undefined",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Undefined",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo diff --git a/tests/__data__/expected/.gh-pages/index.m3u b/tests/__data__/expected/.gh-pages/index.m3u deleted file mode 100644 index 52b63d17a..000000000 --- a/tests/__data__/expected/.gh-pages/index.m3u +++ /dev/null @@ -1,17 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined" http-referrer="http://imn.iq" http-user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",Andorra TV (720p) [Not 24/7] -#EXTVLCOPT:http-referrer=http://imn.iq -#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index2.m3u8 -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Undefined",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="BBCNews.uk" tvg-logo="https://raw.githubusercontent.com/Tapiosinn/tv-logos/master/countries/united-kingdom/bbc-news-uk.png" group-title="General;News",BBC News HD -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Weather",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Undefined",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="General",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 diff --git a/tests/__data__/expected/.gh-pages/index.region.m3u b/tests/__data__/expected/.gh-pages/index.region.m3u deleted file mode 100644 index c1594ab58..000000000 --- a/tests/__data__/expected/.gh-pages/index.region.m3u +++ /dev/null @@ -1,45 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Americas",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Asia",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="Asia",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Asia-Pacific",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="Commonwealth of Independent States",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Europe",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Europe",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="Europe",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Europe, the Middle East and Africa",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Europe, the Middle East and Africa",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="Europe, the Middle East and Africa",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="North America",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Northern America",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="South Asia",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Worldwide",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="BBCNews.uk" tvg-logo="https://raw.githubusercontent.com/Tapiosinn/tv-logos/master/countries/united-kingdom/bbc-news-uk.png" group-title="Worldwide",BBC News HD -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Worldwide",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Worldwide",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Worldwide",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="Worldwide",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined" http-referrer="http://imn.iq" http-user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",Andorra TV (720p) [Not 24/7] -#EXTVLCOPT:http-referrer=http://imn.iq -#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index2.m3u8 diff --git a/tests/__data__/expected/.gh-pages/languages/eng.m3u b/tests/__data__/expected/.gh-pages/languages/eng.m3u deleted file mode 100644 index cf4e62a9a..000000000 --- a/tests/__data__/expected/.gh-pages/languages/eng.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="BBCNews.uk" tvg-logo="https://raw.githubusercontent.com/Tapiosinn/tv-logos/master/countries/united-kingdom/bbc-news-uk.png" group-title="General;News",BBC News HD -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8 diff --git a/tests/__data__/expected/.gh-pages/languages/rus.m3u b/tests/__data__/expected/.gh-pages/languages/rus.m3u deleted file mode 100644 index cbfde9249..000000000 --- a/tests/__data__/expected/.gh-pages/languages/rus.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="General",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 diff --git a/tests/__data__/expected/.gh-pages/languages/undefined.m3u b/tests/__data__/expected/.gh-pages/languages/undefined.m3u deleted file mode 100644 index 7267ae5e1..000000000 --- a/tests/__data__/expected/.gh-pages/languages/undefined.m3u +++ /dev/null @@ -1,11 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined" http-referrer="http://imn.iq" http-user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",Andorra TV (720p) [Not 24/7] -#EXTVLCOPT:http-referrer=http://imn.iq -#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 -http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index2.m3u8 -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Weather",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Undefined",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo diff --git a/tests/__data__/expected/.gh-pages/regions/afr.m3u b/tests/__data__/expected/.gh-pages/regions/afr.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/afr.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/amer.m3u b/tests/__data__/expected/.gh-pages/regions/amer.m3u deleted file mode 100644 index 4686c68f4..000000000 --- a/tests/__data__/expected/.gh-pages/regions/amer.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Weather",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 diff --git a/tests/__data__/expected/.gh-pages/regions/apac.m3u b/tests/__data__/expected/.gh-pages/regions/apac.m3u deleted file mode 100644 index 4708e622d..000000000 --- a/tests/__data__/expected/.gh-pages/regions/apac.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 diff --git a/tests/__data__/expected/.gh-pages/regions/arab.m3u b/tests/__data__/expected/.gh-pages/regions/arab.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/arab.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/asia.m3u b/tests/__data__/expected/.gh-pages/regions/asia.m3u deleted file mode 100644 index 27e5170bd..000000000 --- a/tests/__data__/expected/.gh-pages/regions/asia.m3u +++ /dev/null @@ -1,5 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="General",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 diff --git a/tests/__data__/expected/.gh-pages/regions/carib.m3u b/tests/__data__/expected/.gh-pages/regions/carib.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/carib.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/cas.m3u b/tests/__data__/expected/.gh-pages/regions/cas.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/cas.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/cis.m3u b/tests/__data__/expected/.gh-pages/regions/cis.m3u deleted file mode 100644 index cbfde9249..000000000 --- a/tests/__data__/expected/.gh-pages/regions/cis.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="General",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 diff --git a/tests/__data__/expected/.gh-pages/regions/emea.m3u b/tests/__data__/expected/.gh-pages/regions/emea.m3u deleted file mode 100644 index 6b40ee03c..000000000 --- a/tests/__data__/expected/.gh-pages/regions/emea.m3u +++ /dev/null @@ -1,7 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Undefined",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Undefined",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="General",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 diff --git a/tests/__data__/expected/.gh-pages/regions/eur.m3u b/tests/__data__/expected/.gh-pages/regions/eur.m3u deleted file mode 100644 index 6b40ee03c..000000000 --- a/tests/__data__/expected/.gh-pages/regions/eur.m3u +++ /dev/null @@ -1,7 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="AndorraTV.ad" tvg-logo="" group-title="Undefined",ATV -https://iptv-all.lanesh4d0w.repl.co/andorra/atv -#EXTINF:-1 tvg-id="Zoo.ad" tvg-logo="" group-title="Undefined",Zoo (720p) -https://iptv-all.lanesh4d0w.repl.co/andorra/zoo -#EXTINF:-1 tvg-id="LDPRTV.ru" tvg-logo="https://iptvx.one/icn/ldpr-tv.png" group-title="General",ะ›ะ”ะŸะ  ะขะ’ (1080p) -http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 diff --git a/tests/__data__/expected/.gh-pages/regions/hispam.m3u b/tests/__data__/expected/.gh-pages/regions/hispam.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/hispam.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/lac.m3u b/tests/__data__/expected/.gh-pages/regions/lac.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/lac.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/latam.m3u b/tests/__data__/expected/.gh-pages/regions/latam.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/latam.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/maghreb.m3u b/tests/__data__/expected/.gh-pages/regions/maghreb.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/maghreb.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/mena.m3u b/tests/__data__/expected/.gh-pages/regions/mena.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/mena.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/mideast.m3u b/tests/__data__/expected/.gh-pages/regions/mideast.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/mideast.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/nam.m3u b/tests/__data__/expected/.gh-pages/regions/nam.m3u deleted file mode 100644 index 4686c68f4..000000000 --- a/tests/__data__/expected/.gh-pages/regions/nam.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Weather",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 diff --git a/tests/__data__/expected/.gh-pages/regions/noram.m3u b/tests/__data__/expected/.gh-pages/regions/noram.m3u deleted file mode 100644 index 4686c68f4..000000000 --- a/tests/__data__/expected/.gh-pages/regions/noram.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Weather",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 diff --git a/tests/__data__/expected/.gh-pages/regions/nord.m3u b/tests/__data__/expected/.gh-pages/regions/nord.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/nord.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/oce.m3u b/tests/__data__/expected/.gh-pages/regions/oce.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/oce.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/sas.m3u b/tests/__data__/expected/.gh-pages/regions/sas.m3u deleted file mode 100644 index 4708e622d..000000000 --- a/tests/__data__/expected/.gh-pages/regions/sas.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="" tvg-logo="" group-title="Undefined",Daawah TV -http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 diff --git a/tests/__data__/expected/.gh-pages/regions/ssa.m3u b/tests/__data__/expected/.gh-pages/regions/ssa.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/ssa.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/regions/wafr.m3u b/tests/__data__/expected/.gh-pages/regions/wafr.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/.gh-pages/regions/wafr.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/expected/.gh-pages/subdivisions/ca-on.m3u b/tests/__data__/expected/.gh-pages/subdivisions/ca-on.m3u deleted file mode 100644 index 4686c68f4..000000000 --- a/tests/__data__/expected/.gh-pages/subdivisions/ca-on.m3u +++ /dev/null @@ -1,3 +0,0 @@ -#EXTM3U -#EXTINF:-1 tvg-id="MeteoMedia.ca" tvg-logo="https://s1.twnmm.com/images/en_ca/mobile/logos/twn-mobile-logo.png" group-title="Weather",Meteomedia -http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 diff --git a/tests/__data__/expected/logs/generators.log b/tests/__data__/expected/logs/generators.log deleted file mode 100644 index 6bb3175f4..000000000 --- a/tests/__data__/expected/logs/generators.log +++ /dev/null @@ -1,70 +0,0 @@ -{"filepath":"categories/auto.m3u","count":0} -{"filepath":"categories/animation.m3u","count":0} -{"filepath":"categories/business.m3u","count":0} -{"filepath":"categories/classic.m3u","count":0} -{"filepath":"categories/comedy.m3u","count":0} -{"filepath":"categories/cooking.m3u","count":0} -{"filepath":"categories/culture.m3u","count":0} -{"filepath":"categories/documentary.m3u","count":0} -{"filepath":"categories/education.m3u","count":0} -{"filepath":"categories/entertainment.m3u","count":0} -{"filepath":"categories/family.m3u","count":0} -{"filepath":"categories/general.m3u","count":2} -{"filepath":"categories/kids.m3u","count":0} -{"filepath":"categories/legislative.m3u","count":0} -{"filepath":"categories/lifestyle.m3u","count":0} -{"filepath":"categories/movies.m3u","count":0} -{"filepath":"categories/music.m3u","count":0} -{"filepath":"categories/news.m3u","count":1} -{"filepath":"categories/outdoor.m3u","count":0} -{"filepath":"categories/relax.m3u","count":0} -{"filepath":"categories/religious.m3u","count":0} -{"filepath":"categories/series.m3u","count":0} -{"filepath":"categories/science.m3u","count":0} -{"filepath":"categories/shop.m3u","count":0} -{"filepath":"categories/sports.m3u","count":0} -{"filepath":"categories/travel.m3u","count":0} -{"filepath":"categories/weather.m3u","count":1} -{"filepath":"categories/xxx.m3u","count":1} -{"filepath":"categories/undefined.m3u","count":4} -{"filepath":"countries/ad.m3u","count":2} -{"filepath":"countries/ca.m3u","count":1} -{"filepath":"subdivisions/ca-on.m3u","count":1} -{"filepath":"countries/in.m3u","count":1} -{"filepath":"countries/ru.m3u","count":1} -{"filepath":"countries/int.m3u","count":1} -{"filepath":"index.category.m3u","count":8} -{"filepath":"index.country.m3u","count":7} -{"filepath":"index.language.m3u","count":7} -{"filepath":"index.m3u","count":7} -{"filepath":"index.region.m3u","count":21} -{"filepath":"languages/eng.m3u","count":1} -{"filepath":"languages/rus.m3u","count":1} -{"filepath":"languages/cat.m3u","count":1} -{"filepath":"languages/undefined.m3u","count":4} -{"filepath":"regions/afr.m3u","count":0} -{"filepath":"regions/amer.m3u","count":1} -{"filepath":"regions/apac.m3u","count":1} -{"filepath":"regions/arab.m3u","count":0} -{"filepath":"regions/asean.m3u","count":0} -{"filepath":"regions/asia.m3u","count":2} -{"filepath":"regions/carib.m3u","count":0} -{"filepath":"regions/cas.m3u","count":0} -{"filepath":"regions/cenamer.m3u","count":0} -{"filepath":"regions/cis.m3u","count":1} -{"filepath":"regions/emea.m3u","count":3} -{"filepath":"regions/eur.m3u","count":3} -{"filepath":"regions/hispam.m3u","count":0} -{"filepath":"regions/lac.m3u","count":0} -{"filepath":"regions/latam.m3u","count":0} -{"filepath":"regions/maghreb.m3u","count":0} -{"filepath":"regions/mena.m3u","count":0} -{"filepath":"regions/mideast.m3u","count":0} -{"filepath":"regions/nam.m3u","count":1} -{"filepath":"regions/noram.m3u","count":1} -{"filepath":"regions/nord.m3u","count":0} -{"filepath":"regions/oce.m3u","count":0} -{"filepath":"regions/sas.m3u","count":1} -{"filepath":"regions/southam.m3u","count":0} -{"filepath":"regions/ssa.m3u","count":0} -{"filepath":"regions/wafr.m3u","count":0} diff --git a/tests/__data__/expected/streams_format/in.m3u b/tests/__data__/expected/playlist_format/in.m3u similarity index 100% rename from tests/__data__/expected/streams_format/in.m3u rename to tests/__data__/expected/playlist_format/in.m3u diff --git a/tests/__data__/expected/streams_format/nl.m3u b/tests/__data__/expected/playlist_format/nl.m3u similarity index 77% rename from tests/__data__/expected/streams_format/nl.m3u rename to tests/__data__/expected/playlist_format/nl.m3u index 2eef58b98..8f1e0ba2a 100644 --- a/tests/__data__/expected/streams_format/nl.m3u +++ b/tests/__data__/expected/playlist_format/nl.m3u @@ -1,5 +1,5 @@ #EXTM3U -#EXTINF:-1 tvg-id="NPO1.nl",NPO 1 (342p) [Geo-blocked] +#EXTINF:-1 tvg-id="NPO1.nl@SD",NPO 1 (342p) [Geo-blocked] http://resolver.streaming.api.nos.nl/livestream?url=/live/npo/tvlive/npo1/npo1.isml/.m3u8 #EXTINF:-1 tvg-id="NPO2.nl",NPO 2 (342p) http://resolver.streaming.api.nos.nl/livestream?url=/live/npo/tvlive/npo2/npo2.isml/.m3u8 @@ -7,3 +7,5 @@ http://resolver.streaming.api.nos.nl/livestream?url=/live/npo/tvlive/npo2/npo2.i #EXTVLCOPT:http-referrer=http://imn.iq #EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 http://stream.tvtap.net:8081/live/nl-npo2.stream/playlist.m3u8 +#EXTINF:-1 tvg-id="NPO2.nl",NPO 2 [Geo-blocked] +http://resolver.streaming.api.nos.nl/livestream?url=/live/npo/tvlive/npo2/npo22.isml/.m3u8 diff --git a/tests/__data__/expected/playlist_generate/logs/generators.log b/tests/__data__/expected/playlist_generate/logs/generators.log new file mode 100644 index 000000000..720731423 --- /dev/null +++ b/tests/__data__/expected/playlist_generate/logs/generators.log @@ -0,0 +1,76 @@ +{"type":"category","filepath":"categories/auto.m3u","count":0} +{"type":"category","filepath":"categories/cooking.m3u","count":0} +{"type":"category","filepath":"categories/comedy.m3u","count":0} +{"type":"category","filepath":"categories/documentary.m3u","count":0} +{"type":"category","filepath":"categories/business.m3u","count":0} +{"type":"category","filepath":"categories/classic.m3u","count":0} +{"type":"category","filepath":"categories/entertainment.m3u","count":0} +{"type":"category","filepath":"categories/education.m3u","count":0} +{"type":"category","filepath":"categories/animation.m3u","count":0} +{"type":"category","filepath":"categories/family.m3u","count":0} +{"type":"category","filepath":"categories/kids.m3u","count":0} +{"type":"category","filepath":"categories/culture.m3u","count":0} +{"type":"category","filepath":"categories/lifestyle.m3u","count":0} +{"type":"category","filepath":"categories/general.m3u","count":3} +{"type":"category","filepath":"categories/outdoor.m3u","count":0} +{"type":"category","filepath":"categories/music.m3u","count":0} +{"type":"category","filepath":"categories/legislative.m3u","count":0} +{"type":"category","filepath":"categories/series.m3u","count":0} +{"type":"category","filepath":"categories/news.m3u","count":1} +{"type":"category","filepath":"categories/movies.m3u","count":0} +{"type":"category","filepath":"categories/relax.m3u","count":0} +{"type":"category","filepath":"categories/religious.m3u","count":0} +{"type":"category","filepath":"categories/weather.m3u","count":1} +{"type":"category","filepath":"categories/science.m3u","count":0} +{"type":"category","filepath":"categories/shop.m3u","count":0} +{"type":"category","filepath":"categories/xxx.m3u","count":1} +{"type":"category","filepath":"categories/sports.m3u","count":0} +{"type":"category","filepath":"categories/travel.m3u","count":0} +{"type":"category","filepath":"categories/undefined.m3u","count":6} +{"type":"country","filepath":"countries/ad.m3u","count":1} +{"type":"country","filepath":"countries/ca.m3u","count":1} +{"type":"country","filepath":"countries/kg.m3u","count":1} +{"type":"country","filepath":"countries/kz.m3u","count":1} +{"type":"country","filepath":"countries/tj.m3u","count":1} +{"type":"country","filepath":"countries/ru.m3u","count":1} +{"type":"country","filepath":"countries/tm.m3u","count":1} +{"type":"country","filepath":"countries/undefined.m3u","count":4} +{"type":"country","filepath":"countries/uz.m3u","count":1} +{"type":"language","filepath":"languages/cat.m3u","count":1} +{"type":"language","filepath":"languages/rus.m3u","count":1} +{"type":"subdivision","filepath":"subdivisions/ca-on.m3u","count":1} +{"type":"language","filepath":"languages/undefined.m3u","count":7} +{"type":"language","filepath":"languages/eng.m3u","count":1} +{"type":"region","filepath":"regions/afr.m3u","count":0} +{"type":"region","filepath":"regions/apac.m3u","count":0} +{"type":"region","filepath":"regions/amer.m3u","count":1} +{"type":"region","filepath":"regions/arab.m3u","count":0} +{"type":"region","filepath":"regions/asean.m3u","count":0} +{"type":"region","filepath":"regions/cenamer.m3u","count":0} +{"type":"region","filepath":"regions/asia.m3u","count":2} +{"type":"region","filepath":"regions/carib.m3u","count":0} +{"type":"region","filepath":"regions/cis.m3u","count":2} +{"type":"region","filepath":"regions/hispam.m3u","count":0} +{"type":"region","filepath":"regions/emea.m3u","count":3} +{"type":"region","filepath":"regions/lac.m3u","count":0} +{"type":"region","filepath":"regions/cas.m3u","count":1} +{"type":"region","filepath":"regions/latam.m3u","count":0} +{"type":"region","filepath":"regions/eur.m3u","count":3} +{"type":"region","filepath":"regions/nam.m3u","count":1} +{"type":"region","filepath":"regions/mena.m3u","count":0} +{"type":"region","filepath":"regions/noram.m3u","count":1} +{"type":"region","filepath":"regions/mideast.m3u","count":0} +{"type":"region","filepath":"regions/maghreb.m3u","count":0} +{"type":"region","filepath":"regions/ssa.m3u","count":0} +{"type":"region","filepath":"regions/nord.m3u","count":0} +{"type":"region","filepath":"regions/oce.m3u","count":0} +{"type":"region","filepath":"regions/southam.m3u","count":0} +{"type":"region","filepath":"regions/wafr.m3u","count":0} +{"type":"region","filepath":"regions/int.m3u","count":2} +{"type":"region","filepath":"regions/sas.m3u","count":0} +{"type":"region","filepath":"regions/undefined.m3u","count":4} +{"type":"index","filepath":"index.m3u","count":10} +{"type":"index","filepath":"index.category.m3u","count":11} +{"type":"index","filepath":"index.country.m3u","count":14} +{"type":"index","filepath":"index.language.m3u","count":10} +{"type":"index","filepath":"index.region.m3u","count":20} diff --git a/tests/__data__/expected/playlist_update/cy.m3u b/tests/__data__/expected/playlist_update/cy.m3u new file mode 100644 index 000000000..987825ca1 --- /dev/null +++ b/tests/__data__/expected/playlist_update/cy.m3u @@ -0,0 +1,3 @@ +#EXTM3U +#EXTINF:-1 tvg-id="AdaTV.cy",AdaTV +https://ythls.onrender.com/channel/UC40TUSUx490U5uR1lZt3Ajg.m3u8 diff --git a/tests/__data__/expected/streams_update/fr.m3u b/tests/__data__/expected/playlist_update/fr.m3u similarity index 51% rename from tests/__data__/expected/streams_update/fr.m3u rename to tests/__data__/expected/playlist_update/fr.m3u index 2dcf9fed5..82856b338 100644 --- a/tests/__data__/expected/streams_update/fr.m3u +++ b/tests/__data__/expected/playlist_update/fr.m3u @@ -2,4 +2,4 @@ #EXTINF:-1 tvg-id="TFX.fr" http-referrer="https://pkpakiplay.xyz/" http-user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 17_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1",TFX #EXTVLCOPT:http-referrer=https://pkpakiplay.xyz/ #EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 17_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1 -http://livetv.ktv.zone/13/play.m3u8 +https://stitcher-ipv4.pluto.tv/v1/stitch/embed/hls/channel/64c109a4798def0008a6e03e/master.m3u8?advertisingId={PSID}&appVersion=unknown&deviceDNT={TARGETOPT}&deviceId={PSID}&deviceLat=0&deviceLon=0&deviceMake=samsung&deviceModel=samsung&deviceType=samsung-tvplus&deviceVersion=unknown&embedPartner=samsung-tvplus&profileFloor=&profileLimit=&samsung_app_domain={APP_DOMAIN}&samsung_app_name={APP_NAME}&us_privacy=1YNY diff --git a/tests/__data__/expected/streams_update/uk.m3u b/tests/__data__/expected/playlist_update/uk.m3u similarity index 100% rename from tests/__data__/expected/streams_update/uk.m3u rename to tests/__data__/expected/playlist_update/uk.m3u diff --git a/tests/__data__/expected/streams_update/us.m3u b/tests/__data__/expected/playlist_update/us.m3u similarity index 65% rename from tests/__data__/expected/streams_update/us.m3u rename to tests/__data__/expected/playlist_update/us.m3u index 1562c6075..5271483e5 100644 --- a/tests/__data__/expected/streams_update/us.m3u +++ b/tests/__data__/expected/playlist_update/us.m3u @@ -1,5 +1,5 @@ #EXTM3U -#EXTINF:-1 tvg-id="BBCAmericaEast.us" http-user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edge/12.246",BBC America East (720p) +#EXTINF:-1 tvg-id="BBCAmerica.us@East" http-user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edge/12.246",BBC America East (720p) #EXTVLCOPT:http-user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edge/12.246 https://servilive.com:3126/live/tele2000live.m3u8 #EXTINF:-1 tvg-id="FastTV.us",Fast TV diff --git a/tests/__data__/expected/_readme.md b/tests/__data__/expected/readme_update/_readme.md similarity index 97% rename from tests/__data__/expected/_readme.md rename to tests/__data__/expected/readme_update/_readme.md index 7cd308c41..9fc78acc2 100644 --- a/tests/__data__/expected/_readme.md +++ b/tests/__data__/expected/readme_update/_readme.md @@ -155,7 +155,7 @@ Same thing, but split up into separate files: ๐Ÿ‡ง๐Ÿ‡ฑ Saint Barthรฉlemy1https://iptv-org.github.io/iptv/countries/bl.m3u ๐Ÿ‡ธ๐Ÿ‡ญ Saint Helena1https://iptv-org.github.io/iptv/countries/sh.m3u ๐Ÿ‡ฐ๐Ÿ‡ณ Saint Kitts and Nevis1https://iptv-org.github.io/iptv/countries/kn.m3u - ๐ŸŒ International1https://iptv-org.github.io/iptv/countries/int.m3u + Undefined2https://iptv-org.github.io/iptv/countries/undefined.m3u @@ -207,6 +207,8 @@ Same thing, but split up into separate files: South Asia1https://iptv-org.github.io/iptv/regions/sas.m3u Sub-Saharan Africa0https://iptv-org.github.io/iptv/regions/ssa.m3u West Africa0https://iptv-org.github.io/iptv/regions/wafr.m3u + Worldwide1https://iptv-org.github.io/iptv/regions/int.m3u + Undefined2https://iptv-org.github.io/iptv/regions/undefined.m3u diff --git a/tests/__data__/expected/streams_update/cy.m3u b/tests/__data__/expected/streams_update/cy.m3u deleted file mode 100644 index fcd718794..000000000 --- a/tests/__data__/expected/streams_update/cy.m3u +++ /dev/null @@ -1 +0,0 @@ -#EXTM3U diff --git a/tests/__data__/input/streams_generate/ad.m3u b/tests/__data__/input/api_generate/ad.m3u similarity index 78% rename from tests/__data__/input/streams_generate/ad.m3u rename to tests/__data__/input/api_generate/ad.m3u index aed019154..64a1dc0cf 100644 --- a/tests/__data__/input/streams_generate/ad.m3u +++ b/tests/__data__/input/api_generate/ad.m3u @@ -1,5 +1,5 @@ #EXTM3U #EXTINF:-1 tvg-id="Zoo.ad",Zoo (720p) https://iptv-all.lanesh4d0w.repl.co/andorra/zoo -#EXTINF:-1 tvg-id="AndorraTV.ad",ATV +#EXTINF:-1 tvg-id="AndorraTV.ad@SD",ATV https://iptv-all.lanesh4d0w.repl.co/andorra/atv diff --git a/tests/__data__/input/streams_generate/ca.m3u b/tests/__data__/input/api_generate/ca.m3u similarity index 100% rename from tests/__data__/input/streams_generate/ca.m3u rename to tests/__data__/input/api_generate/ca.m3u diff --git a/tests/__data__/input/streams_generate/in.m3u b/tests/__data__/input/api_generate/in.m3u similarity index 100% rename from tests/__data__/input/streams_generate/in.m3u rename to tests/__data__/input/api_generate/in.m3u diff --git a/tests/__data__/input/streams_generate/uk.m3u b/tests/__data__/input/api_generate/uk.m3u similarity index 100% rename from tests/__data__/input/streams_generate/uk.m3u rename to tests/__data__/input/api_generate/uk.m3u diff --git a/tests/__data__/input/streams_generate/unsorted.m3u b/tests/__data__/input/api_generate/unsorted.m3u similarity index 100% rename from tests/__data__/input/streams_generate/unsorted.m3u rename to tests/__data__/input/api_generate/unsorted.m3u diff --git a/tests/__data__/input/data/blocklist.json b/tests/__data__/input/data/blocklist.json index cfba11f57..10dace03f 100644 --- a/tests/__data__/input/data/blocklist.json +++ b/tests/__data__/input/data/blocklist.json @@ -1 +1 @@ -[{"channel":"FoxSports1.us","reason":"dmca","ref":"https://github.com/iptv-org/iptv/issues/0001"},{"channel":"FoxSports2Asia.us","reason":"dmca","ref":"https://github.com/iptv-org/iptv/issues/0002"},{"channel":"TVN.pl","reason":"nsfw","ref":"https://github.com/iptv-org/iptv/issues/0003"},{"channel":"TV3.my","reason":"dmca","ref":"https://github.com/iptv-org/iptv/issues/0004"}] \ No newline at end of file +[{"channel":"FoxSports1.us","reason":"dmca","ref":"https://github.com/iptv-org/iptv/issues/0001"},{"channel":"FoxSports2.us","reason":"dmca","ref":"https://github.com/iptv-org/iptv/issues/0002"},{"channel":"TVN.pl","reason":"nsfw","ref":"https://github.com/iptv-org/iptv/issues/0003"},{"channel":"TV3.my","reason":"dmca","ref":"https://github.com/iptv-org/iptv/issues/0004"}] \ No newline at end of file diff --git a/tests/__data__/input/data/channels.json b/tests/__data__/input/data/channels.json index 59bc80b71..fe31e8dc0 100644 --- a/tests/__data__/input/data/channels.json +++ b/tests/__data__/input/data/channels.json @@ -6,12 +6,6 @@ "country": "AD", "subdivision": null, "city": null, - "broadcast_area": [ - "c/AD" - ], - "languages": [ - "cat" - ], "categories": [], "is_nsfw": false, "logo": null @@ -23,12 +17,6 @@ "country": "UK", "subdivision": null, "city": null, - "broadcast_area": [ - "r/INT" - ], - "languages": [ - "eng" - ], "categories": [ "news", "general" @@ -43,12 +31,6 @@ "country": "US", "subdivision": null, "city": null, - "broadcast_area": [ - "c/US" - ], - "languages": [ - "eng" - ], "categories": [], "is_nsfw": false, "logo": "https://www.lyngsat.com/logo/tv/ee/eve_us.png" @@ -60,12 +42,6 @@ "country": "US", "subdivision": null, "city": null, - "broadcast_area": [ - "c/US" - ], - "languages": [ - "eng" - ], "categories": [], "is_nsfw": false, "logo": "https://i.imgur.com/Iam3ol3.png" @@ -77,29 +53,17 @@ "country": "US", "subdivision": null, "city": null, - "broadcast_area": [ - "c/US" - ], - "languages": [ - "eng" - ], "categories": [], "is_nsfw": false, "logo": "https://cdn.tvpassport.com/image/station/100x100/fs1.png" }, { - "id": "FoxSports2Asia.us", - "name": "Fox Sports 2 Asia", + "id": "FoxSports2.us", + "name": "Fox Sports 2", "network": null, "country": "US", "subdivision": null, "city": null, - "broadcast_area": [ - "c/US" - ], - "languages": [ - "eng" - ], "categories": [], "is_nsfw": false, "logo": null @@ -111,12 +75,6 @@ "country": "RU", "subdivision": null, "city": null, - "broadcast_area": [ - "c/RU" - ], - "languages": [ - "rus" - ], "categories": [ "general" ], @@ -130,12 +88,6 @@ "country": "LY", "subdivision": null, "city": null, - "broadcast_area": [ - "c/LY" - ], - "languages": [ - "eng" - ], "categories": [], "is_nsfw": false, "logo": "https://i.imgur.com/RD9wbNF.jpg" @@ -147,12 +99,6 @@ "country": "CA", "subdivision": null, "city": null, - "broadcast_area": [ - "s/CA-ON" - ], - "languages": [ - "fru" - ], "categories": [ "weather" ], @@ -166,12 +112,6 @@ "country": "PL", "subdivision": null, "city": null, - "broadcast_area": [ - "c/PL" - ], - "languages": [ - "pol" - ], "categories": [], "is_nsfw": false, "logo": "https://www.sms.cz/kategorie/televize/bmp/loga/velka/TVN.png" @@ -183,12 +123,6 @@ "country": "NL", "subdivision": null, "city": null, - "broadcast_area": [ - "r/INT" - ], - "languages": [ - "nld" - ], "categories": [ "xxx" ], @@ -202,12 +136,6 @@ "country": "US", "subdivision": null, "city": null, - "broadcast_area": [ - "c/US" - ], - "languages": [ - "eng" - ], "categories": [ "general" ], @@ -225,12 +153,6 @@ "country": "IN", "subdivision": null, "city": null, - "broadcast_area": [ - "c/IN" - ], - "languages": [ - "mal" - ], "categories": [ "news" ], @@ -250,12 +172,6 @@ "country": "MY", "subdivision": null, "city": null, - "broadcast_area": [ - "c/MY" - ], - "languages": [ - "eng" - ], "categories": [ "news" ], @@ -267,20 +183,14 @@ "logo": "https://i.imgur.com/adjRrVx.png" }, { - "id": "BBCAmericaEast.us", - "name": "BBC America East", + "id": "BBCAmerica.us", + "name": "BBC America", "alt_names": [], "network": null, "owners": [], "country": "US", "subdivision": null, "city": null, - "broadcast_area": [ - "c/US" - ], - "languages": [ - "eng" - ], "categories": [ "news" ], @@ -302,12 +212,6 @@ "country": "PE", "subdivision": "PE-LIM", "city": "Lima", - "broadcast_area": [ - "c/PE" - ], - "languages": [ - "spa" - ], "categories": [ "news" ], @@ -327,12 +231,6 @@ "country": "UK", "subdivision": null, "city": "London", - "broadcast_area": [ - "c/UK" - ], - "languages": [ - "eng" - ], "categories": [ "series" ], @@ -356,12 +254,6 @@ "country": "JP", "subdivision": null, "city": "Tokyo", - "broadcast_area": [ - "c/JP" - ], - "languages": [ - "jpn" - ], "categories": [ "animation" ], @@ -383,13 +275,6 @@ "country": "IN", "subdivision": null, "city": "Noida", - "broadcast_area": [ - "c/IN", - "c/UK" - ], - "languages": [ - "hin" - ], "categories": [ "news" ], @@ -409,12 +294,6 @@ "country": "JP", "subdivision": null, "city": null, - "broadcast_area": [ - "c/JP" - ], - "languages": [ - "jpn" - ], "categories": [ "weather" ], @@ -436,12 +315,6 @@ "country": "LK", "subdivision": null, "city": "Athurugiriya", - "broadcast_area": [ - "c/LK" - ], - "languages": [ - "tam" - ], "categories": [ "religious" ], @@ -461,12 +334,6 @@ "country": "HU", "subdivision": null, "city": null, - "broadcast_area": [ - "c/HU" - ], - "languages": [ - "hun" - ], "categories": [ "sports" ], @@ -491,12 +358,6 @@ "country": "US", "subdivision": null, "city": null, - "broadcast_area": [ - "c/US" - ], - "languages": [ - "eng" - ], "categories": [], "is_nsfw": false, "launched": "2022-10-26", @@ -518,12 +379,6 @@ "country": "TH", "subdivision": null, "city": "Bangkok", - "broadcast_area": [ - "c/TH" - ], - "languages": [ - "tha" - ], "categories": [ "general" ], @@ -547,12 +402,6 @@ "country": "TH", "subdivision": null, "city": "Bangkok", - "broadcast_area": [ - "c/TH" - ], - "languages": [ - "tha" - ], "categories": [ "entertainment" ], @@ -574,12 +423,6 @@ "country": "FR", "subdivision": null, "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], "categories": [ "general" ], @@ -601,12 +444,6 @@ "country": "FR", "subdivision": null, "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], "categories": [ "general" ], @@ -628,12 +465,6 @@ "country": "FR", "subdivision": null, "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], "categories": [ "general" ], @@ -645,8 +476,8 @@ "logo": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/France_5_2018.svg/512px-France_5_2018.svg.png" }, { - "id": "France3Aquitaine.fr", - "name": "France 3 Aquitaine", + "id": "France3.fr", + "name": "France 3", "alt_names": [], "network": null, "owners": [ @@ -655,12 +486,6 @@ "country": "FR", "subdivision": null, "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], "categories": [ "general" ], @@ -671,363 +496,6 @@ "website": "https://france3-regions.francetvinfo.fr/nouvelle-aquitaine/", "logo": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/France_3_Aquitaine_-_Logo_2018.svg/512px-France_3_Aquitaine_-_Logo_2018.svg.png" }, - { - "id": "France3Auvergne.fr", - "name": "France 3 Auvergne", - "alt_names": [], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/auvergne-rhone-alpes/", - "logo": "https://i.imgur.com/OOEHRei.png" - }, - { - "id": "France3BasseNormandie.fr", - "name": "France 3 Basse-Normandie", - "alt_names": [], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/normandie/", - "logo": "https://i.imgur.com/nTM78Ig.png" - }, - { - "id": "France3Bourgogne.fr", - "name": "France 3 Bourgogne", - "alt_names": [], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": "1965-11-15", - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/bourgogne-franche-comte/", - "logo": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/France_3_Bourgogne_-_Logo_2018.svg/512px-France_3_Bourgogne_-_Logo_2018.svg.png" - }, - { - "id": "France3Bretagne.fr", - "name": "France 3 Bretagne", - "alt_names": [], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/bretagne/", - "logo": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/France_3_Bretagne_-_Logo_2018.svg/512px-France_3_Bretagne_-_Logo_2018.svg.png" - }, - { - "id": "France3CentreValdeLoire.fr", - "name": "France 3 Centre-Val de Loire", - "alt_names": [], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/centre-val-de-loire/", - "logo": "https://i.imgur.com/jDh4rUk.png" - }, - { - "id": "France3ChampagneArdenne.fr", - "name": "France 3 Champagne-Ardenne", - "alt_names": [], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/grand-est/", - "logo": "https://i.imgur.com/V9nhfLC.png" - }, - { - "id": "France3CorseViaStella.fr", - "name": "France 3 Corse Via Stella", - "alt_names": [], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/corse/", - "logo": "https://i.imgur.com/Sx9VLAt.png" - }, - { - "id": "France3CotedAzur.fr", - "name": "France 3 Cote d'Azur", - "alt_names": [ - "France 3 Cรดte d'Azur" - ], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/provence-alpes-cote-d-azur/", - "logo": "https://i.imgur.com/dQC6Rm3.png" - }, - { - "id": "France3FrancheComte.fr", - "name": "France 3 Franche-Comte", - "alt_names": [ - "France 3 Franche-Comtรฉ" - ], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/bourgogne-franche-comte/", - "logo": "https://i.imgur.com/41b7194.png" - }, - { - "id": "France3HauteNormandie.fr", - "name": "France 3 Haute-Normandie", - "alt_names": [], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/normandie/", - "logo": "https://i.imgur.com/nTM78Ig.png" - }, - { - "id": "France3NouvelleAquitaine.fr", - "name": "France 3 Nouvelle-Aquitaine", - "alt_names": [], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/nouvelle-aquitaine/", - "logo": "https://i.imgur.com/ScAQW1B.png" - }, - { - "id": "France3ProvenceAlpes.fr", - "name": "France 3 Provence-Alpes", - "alt_names": [], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/provence-alpes-cote-d-azur/", - "logo": "https://i.imgur.com/W6TyDLx.png" - }, - { - "id": "France3RhoneAlpes.fr", - "name": "France 3 Rhone-Alpes", - "alt_names": [ - "France 3 Rhรดne-Alpes" - ], - "network": null, - "owners": [ - "France Tรฉlรฉvisions" - ], - "country": "FR", - "subdivision": null, - "city": "Paris", - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], - "categories": [ - "general" - ], - "is_nsfw": false, - "launched": null, - "closed": null, - "replaced_by": null, - "website": "https://france3-regions.francetvinfo.fr/auvergne-rhone-alpes/", - "logo": "https://i.imgur.com/XIdPu3o.png" - }, { "id": "TF1.fr", "name": "TF1", @@ -1039,12 +507,6 @@ "country": "FR", "subdivision": null, "city": null, - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], "categories": [ "entertainment" ], @@ -1068,12 +530,6 @@ "country": "FR", "subdivision": null, "city": null, - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra" - ], "categories": [ "movies" ], @@ -1095,13 +551,6 @@ "country": "FR", "subdivision": null, "city": null, - "broadcast_area": [ - "c/FR", - "c/MC" - ], - "languages": [ - "fra" - ], "categories": [ "general" ], @@ -1121,13 +570,6 @@ "country": "FR", "subdivision": null, "city": null, - "broadcast_area": [ - "c/FR" - ], - "languages": [ - "fra", - "eng" - ], "categories": [], "is_nsfw": false, "launched": null, @@ -1147,12 +589,6 @@ "country": "IN", "subdivision": null, "city": "Kottayam", - "broadcast_area": [ - "c/IN" - ], - "languages": [ - "mal" - ], "categories": [ "news" ], @@ -1174,12 +610,6 @@ "country": "AU", "subdivision": null, "city": "New York City", - "broadcast_area": [ - "c/AU" - ], - "languages": [ - "eng" - ], "categories": [ "entertainment" ], @@ -1189,5 +619,63 @@ "replaced_by": "Sleuth.au", "website": "http://www.13thstreet.com.au/", "logo": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/13th_street_logo_uk_master_rgb_black.png/512px-13th_street_logo_uk_master_rgb_black.png" + }, + { + "id": "Zoo.ad", + "name": "Zoo", + "network": null, + "country": "CA", + "subdivision": null, + "city": null, + "categories": [], + "is_nsfw": false, + "logo": null + }, + { + "id": "DunaWorld.hu", + "name": "Duna World", + "network": null, + "country": "HU", + "subdivision": null, + "city": null, + "categories": [ + "General" + ], + "is_nsfw": false, + "logo": "https://i.imgur.com/uOBQJZS.png" + }, + { + "id": "ElTR.kg", + "name": "ElTR", + "alt_names": [ + "ะญะปะขะ ", + "ะœะขะ ะš ะญะปะขะ ", + "ะญะป ะบะฐะฝะฐะปั‹", + "ะญะปะขะ  ะšั‹ั€ะณั‹ะทัั‚ะฐะฝ", + "ELTR Kyrgyzstan" + ], + "network": "ElTR", + "owners": [ + "ElTR" + ], + "country": "KG", + "subdivision": null, + "city": "Bishkek", + "broadcast_area": [ + "r/CAS" + ], + "languages": [ + "kir", + "rus" + ], + "categories": [ + "general" + ], + "is_nsfw": false, + "launched": null, + "closed": null, + "replaced_by": null, + "website": "https://eltr.kg", + "logo": "https://i.ibb.co/r6czQwQ/365049798-774721644658455-5702658175909463406-n-2.png" } ] \ No newline at end of file diff --git a/tests/__data__/input/data/feeds.json b/tests/__data__/input/data/feeds.json new file mode 100644 index 000000000..5170ebf26 --- /dev/null +++ b/tests/__data__/input/data/feeds.json @@ -0,0 +1,830 @@ +[ + { + "channel": "AndorraTV.ad", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/AD" + ], + "languages": [ + "cat" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "AdaTV.cy", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/CY" + ], + "languages": [ + "tur" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "BBCNews.uk", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "r/INT" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "Eve.us", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/US" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "EverydayHeroes.us", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/US" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "FoxSports1.us", + "id": "SD", + "name": "SD", + "broadcast_area": [ + "c/US" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "FoxSports2.us", + "id": "Asia", + "name": "Asia", + "is_main": false, + "broadcast_area": [ + "c/US" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "LDPRTV.ru", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/RU" + ], + "languages": [ + "rus" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "LibyasChannel.ly", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/LY" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "MeteoMedia.ca", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "s/CA-ON" + ], + "languages": [ + "fru" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "TVN.pl", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/PL" + ], + "languages": [ + "pol" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "VisitXTV.nl", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "r/INT" + ], + "languages": [ + "nld" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "TUTV.us", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/US" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "ManoramaNews.in", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/IN" + ], + "languages": [ + "mal" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "TV3.my", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/MY" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "BBCAmerica.us", + "id": "East", + "name": "East", + "is_main": false, + "broadcast_area": [ + "c/US" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "ATVPlus.pe", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/PE" + ], + "languages": [ + "spa" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "BeanoTV.uk", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/UK" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "ATX.jp", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/JP" + ], + "languages": [ + "jpn" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "AajTak.in", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/IN", + "c/UK" + ], + "languages": [ + "hin" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "Weathernews.jp", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/JP" + ], + "languages": [ + "jpn" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "MethTV.lk", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/LK" + ], + "languages": [ + "tam" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "Match4.hu", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/HU" + ], + "languages": [ + "hun" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "FastTV.us", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/US" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "MCOTHD.th", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/TH" + ], + "languages": [ + "tha" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "AmarinTV.th", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/TH" + ], + "languages": [ + "tha" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France2.fr", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France5.fr", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "Aquitaine", + "name": "Aquitaine", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "Auvergne", + "name": "Auvergne", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "BasseNormandie", + "name": "Basse-Normandie", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "Bourgogne", + "name": "Bourgogne", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "Bretagne", + "name": "Bretagne", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "CentreValdeLoire", + "name": "Centre-Val de Loire", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "ChampagneArdenne", + "name": "Champagne-Ardenne", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "CorseViaStella", + "name": "Corse Via Stella", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "CotedAzur", + "name": "Cote d'Azur", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "FrancheComte", + "name": "Franche-Comte", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "HauteNormandie", + "name": "Haute-Normandie", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "NouvelleAquitaine", + "name": "Nouvelle-Aquitaine", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "ProvenceAlpes", + "name": "Provence-Alpes", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "France3.fr", + "id": "RhoneAlpes", + "name": "Rhone-Alpes", + "is_main": false, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "TF1.fr", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "TF1SeriesFilms.fr", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "TMC.fr", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/FR", + "c/MC" + ], + "languages": [ + "fra" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "TFX.fr", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/FR" + ], + "languages": [ + "fra", + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "ManoramaNews.in", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/IN" + ], + "languages": [ + "mal" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "13thStreet.au", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/AU" + ], + "languages": [ + "eng" + ], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "Zoo.ad", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "c/AD" + ], + "languages": [], + "timezones": [ + "America/Port_of_Spain" + ], + "video_format": "576i" + }, + { + "channel": "DunaWorld.hu", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "r/INT" + ], + "languages": [], + "timezones": [ + "Europe/London" + ], + "video_format": "576i" + }, + { + "channel": "ElTR.kg", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "r/CAS" + ], + "timezones": [ + "Asia/Bishkek" + ], + "languages": [], + "video_format": "576i" + } +] \ No newline at end of file diff --git a/tests/__data__/input/data/languages.json b/tests/__data__/input/data/languages.json index 6b2570a79..7997d55ca 100644 --- a/tests/__data__/input/data/languages.json +++ b/tests/__data__/input/data/languages.json @@ -1 +1 @@ -[{"name":"Ghotuo","code":"aaa"},{"name":"Alumu-Tesu","code":"aab"},{"name":"Ari","code":"aac"},{"name":"Amal","code":"aad"},{"name":"Arbรซreshรซ Albanian","code":"aae"},{"name":"Aranadan","code":"aaf"},{"name":"Ambrak","code":"aag"},{"name":"Abu' Arapesh","code":"aah"},{"name":"Arifama-Miniafia","code":"aai"},{"name":"Ankave","code":"aak"},{"name":"Afade","code":"aal"},{"name":"Anambรฉ","code":"aan"},{"name":"Algerian Saharan Arabic","code":"aao"},{"name":"Parรก Arรกra","code":"aap"},{"name":"Eastern Abnaki","code":"aaq"},{"name":"Afar","code":"aar"},{"name":"Aasรกx","code":"aas"},{"name":"Arvanitika Albanian","code":"aat"},{"name":"Abau","code":"aau"},{"name":"Solong","code":"aaw"},{"name":"Mandobo Atas","code":"aax"},{"name":"Amarasi","code":"aaz"},{"name":"Abรฉ","code":"aba"},{"name":"Bankon","code":"abb"},{"name":"Ambala Ayta","code":"abc"},{"name":"Manide","code":"abd"},{"name":"Western Abnaki","code":"abe"},{"name":"Abai Sungai","code":"abf"},{"name":"Abaga","code":"abg"},{"name":"Tajiki Arabic","code":"abh"},{"name":"Abidji","code":"abi"},{"name":"Aka-Bea","code":"abj"},{"name":"Abkhazian","code":"abk"},{"name":"Lampung Nyo","code":"abl"},{"name":"Abanyom","code":"abm"},{"name":"Abua","code":"abn"},{"name":"Abon","code":"abo"},{"name":"Abellen Ayta","code":"abp"},{"name":"Abaza","code":"abq"},{"name":"Abron","code":"abr"},{"name":"Ambonese Malay","code":"abs"},{"name":"Ambulas","code":"abt"},{"name":"Abure","code":"abu"},{"name":"Baharna Arabic","code":"abv"},{"name":"Pal","code":"abw"},{"name":"Inabaknon","code":"abx"},{"name":"Aneme Wake","code":"aby"},{"name":"Abui","code":"abz"},{"name":"Achagua","code":"aca"},{"name":"รncรก","code":"acb"},{"name":"Gikyode","code":"acd"},{"name":"Achinese","code":"ace"},{"name":"Saint Lucian Creole French","code":"acf"},{"name":"Acoli","code":"ach"},{"name":"Aka-Cari","code":"aci"},{"name":"Aka-Kora","code":"ack"},{"name":"Akar-Bale","code":"acl"},{"name":"Mesopotamian Arabic","code":"acm"},{"name":"Achang","code":"acn"},{"name":"Eastern Acipa","code":"acp"},{"name":"Ta'izzi-Adeni Arabic","code":"acq"},{"name":"Achi","code":"acr"},{"name":"Acroรก","code":"acs"},{"name":"Achterhoeks","code":"act"},{"name":"Achuar-Shiwiar","code":"acu"},{"name":"Achumawi","code":"acv"},{"name":"Hijazi Arabic","code":"acw"},{"name":"Omani Arabic","code":"acx"},{"name":"Cypriot Arabic","code":"acy"},{"name":"Acheron","code":"acz"},{"name":"Adangme","code":"ada"},{"name":"Atauran","code":"adb"},{"name":"Dzodinka","code":"add"},{"name":"Lidzonka","code":"add"},{"name":"Adele","code":"ade"},{"name":"Dhofari Arabic","code":"adf"},{"name":"Andegerebinha","code":"adg"},{"name":"Adhola","code":"adh"},{"name":"Adi","code":"adi"},{"name":"Adioukrou","code":"adj"},{"name":"Galo","code":"adl"},{"name":"Adang","code":"adn"},{"name":"Abu","code":"ado"},{"name":"Adangbe","code":"adq"},{"name":"Adonara","code":"adr"},{"name":"Adamorobe Sign Language","code":"ads"},{"name":"Adnyamathanha","code":"adt"},{"name":"Aduge","code":"adu"},{"name":"Amundava","code":"adw"},{"name":"Amdo Tibetan","code":"adx"},{"name":"Adygei","code":"ady"},{"name":"Adyghe","code":"ady"},{"name":"Adzera","code":"adz"},{"name":"Areba","code":"aea"},{"name":"Tunisian Arabic","code":"aeb"},{"name":"Saidi Arabic","code":"aec"},{"name":"Argentine Sign Language","code":"aed"},{"name":"Northeast Pashai","code":"aee"},{"name":"Northeast Pashayi","code":"aee"},{"name":"Haeke","code":"aek"},{"name":"Ambele","code":"ael"},{"name":"Arem","code":"aem"},{"name":"Armenian Sign Language","code":"aen"},{"name":"Aer","code":"aeq"},{"name":"Eastern Arrernte","code":"aer"},{"name":"Alsea","code":"aes"},{"name":"Akeu","code":"aeu"},{"name":"Ambakich","code":"aew"},{"name":"Amele","code":"aey"},{"name":"Aeka","code":"aez"},{"name":"Gulf Arabic","code":"afb"},{"name":"Andai","code":"afd"},{"name":"Putukwam","code":"afe"},{"name":"Afghan Sign Language","code":"afg"},{"name":"Afrihili","code":"afh"},{"name":"Akrukay","code":"afi"},{"name":"Chini","code":"afi"},{"name":"Nanubae","code":"afk"},{"name":"Defaka","code":"afn"},{"name":"Eloyi","code":"afo"},{"name":"Tapei","code":"afp"},{"name":"Afrikaans","code":"afr"},{"name":"Afro-Seminole Creole","code":"afs"},{"name":"Afitti","code":"aft"},{"name":"Awutu","code":"afu"},{"name":"Obokuitai","code":"afz"},{"name":"Aguano","code":"aga"},{"name":"Legbo","code":"agb"},{"name":"Agatu","code":"agc"},{"name":"Agarabi","code":"agd"},{"name":"Angal","code":"age"},{"name":"Arguni","code":"agf"},{"name":"Angor","code":"agg"},{"name":"Ngelima","code":"agh"},{"name":"Agariya","code":"agi"},{"name":"Argobba","code":"agj"},{"name":"Isarog Agta","code":"agk"},{"name":"Fembe","code":"agl"},{"name":"Angaataha","code":"agm"},{"name":"Agutaynen","code":"agn"},{"name":"Tainae","code":"ago"},{"name":"Aghem","code":"agq"},{"name":"Aguaruna","code":"agr"},{"name":"Esimbi","code":"ags"},{"name":"Central Cagayan Agta","code":"agt"},{"name":"Aguacateco","code":"agu"},{"name":"Remontado Dumagat","code":"agv"},{"name":"Kahua","code":"agw"},{"name":"Aghul","code":"agx"},{"name":"Southern Alta","code":"agy"},{"name":"Mt. Iriga Agta","code":"agz"},{"name":"Ahanta","code":"aha"},{"name":"Axamb","code":"ahb"},{"name":"Qimant","code":"ahg"},{"name":"Aghu","code":"ahh"},{"name":"Tiagbamrin Aizi","code":"ahi"},{"name":"Akha","code":"ahk"},{"name":"Igo","code":"ahl"},{"name":"Mobumrin Aizi","code":"ahm"},{"name":"ร€hร n","code":"ahn"},{"name":"Ahom","code":"aho"},{"name":"Aproumu Aizi","code":"ahp"},{"name":"Ahirani","code":"ahr"},{"name":"Ashe","code":"ahs"},{"name":"Ahtena","code":"aht"},{"name":"Arosi","code":"aia"},{"name":"Ainu (China)","code":"aib"},{"name":"Ainbai","code":"aic"},{"name":"Alngith","code":"aid"},{"name":"Amara","code":"aie"},{"name":"Agi","code":"aif"},{"name":"Antigua and Barbuda Creole English","code":"aig"},{"name":"Ai-Cham","code":"aih"},{"name":"Assyrian Neo-Aramaic","code":"aii"},{"name":"Lishanid Noshan","code":"aij"},{"name":"Ake","code":"aik"},{"name":"Aimele","code":"ail"},{"name":"Aimol","code":"aim"},{"name":"Ainu (Japan)","code":"ain"},{"name":"Aiton","code":"aio"},{"name":"Burumakok","code":"aip"},{"name":"Aimaq","code":"aiq"},{"name":"Airoran","code":"air"},{"name":"Arikem","code":"ait"},{"name":"Aari","code":"aiw"},{"name":"Aighon","code":"aix"},{"name":"Ali","code":"aiy"},{"name":"Aja (South Sudan)","code":"aja"},{"name":"Aja (Benin)","code":"ajg"},{"name":"Ajiรซ","code":"aji"},{"name":"Andajin","code":"ajn"},{"name":"South Levantine Arabic","code":"ajp"},{"name":"Judeo-Tunisian Arabic","code":"ajt"},{"name":"Judeo-Moroccan Arabic","code":"aju"},{"name":"Ajawa","code":"ajw"},{"name":"Amri Karbi","code":"ajz"},{"name":"Akan","code":"aka"},{"name":"Batak Angkola","code":"akb"},{"name":"Mpur","code":"akc"},{"name":"Ukpet-Ehom","code":"akd"},{"name":"Akawaio","code":"ake"},{"name":"Akpa","code":"akf"},{"name":"Anakalangu","code":"akg"},{"name":"Angal Heneng","code":"akh"},{"name":"Aiome","code":"aki"},{"name":"Aka-Jeru","code":"akj"},{"name":"Akkadian","code":"akk"},{"name":"Aklanon","code":"akl"},{"name":"Aka-Bo","code":"akm"},{"name":"Akurio","code":"ako"},{"name":"Siwu","code":"akp"},{"name":"Ak","code":"akq"},{"name":"Araki","code":"akr"},{"name":"Akaselem","code":"aks"},{"name":"Akolet","code":"akt"},{"name":"Akum","code":"aku"},{"name":"Akhvakh","code":"akv"},{"name":"Akwa","code":"akw"},{"name":"Aka-Kede","code":"akx"},{"name":"Aka-Kol","code":"aky"},{"name":"Alabama","code":"akz"},{"name":"Alago","code":"ala"},{"name":"Qawasqar","code":"alc"},{"name":"Alladian","code":"ald"},{"name":"Aleut","code":"ale"},{"name":"Alege","code":"alf"},{"name":"Alawa","code":"alh"},{"name":"Amaimon","code":"ali"},{"name":"Alangan","code":"alj"},{"name":"Alak","code":"alk"},{"name":"Allar","code":"all"},{"name":"Amblong","code":"alm"},{"name":"Gheg Albanian","code":"aln"},{"name":"Larike-Wakasihu","code":"alo"},{"name":"Alune","code":"alp"},{"name":"Algonquin","code":"alq"},{"name":"Alutor","code":"alr"},{"name":"Tosk Albanian","code":"als"},{"name":"Southern Altai","code":"alt"},{"name":"'Are'are","code":"alu"},{"name":"Alaba-Kโ€™abeena","code":"alw"},{"name":"Wanbasana","code":"alw"},{"name":"Amol","code":"alx"},{"name":"Alyawarr","code":"aly"},{"name":"Alur","code":"alz"},{"name":"Amanayรฉ","code":"ama"},{"name":"Ambo","code":"amb"},{"name":"Amahuaca","code":"amc"},{"name":"Yanesha'","code":"ame"},{"name":"Hamer-Banna","code":"amf"},{"name":"Amurdak","code":"amg"},{"name":"Amharic","code":"amh"},{"name":"Amis","code":"ami"},{"name":"Amdang","code":"amj"},{"name":"Ambai","code":"amk"},{"name":"War-Jaintia","code":"aml"},{"name":"Ama (Papua New Guinea)","code":"amm"},{"name":"Amanab","code":"amn"},{"name":"Amo","code":"amo"},{"name":"Alamblak","code":"amp"},{"name":"Amahai","code":"amq"},{"name":"Amarakaeri","code":"amr"},{"name":"Southern Amami-Oshima","code":"ams"},{"name":"Amto","code":"amt"},{"name":"Guerrero Amuzgo","code":"amu"},{"name":"Ambelau","code":"amv"},{"name":"Western Neo-Aramaic","code":"amw"},{"name":"Anmatyerre","code":"amx"},{"name":"Ami","code":"amy"},{"name":"Atampaya","code":"amz"},{"name":"Andaqui","code":"ana"},{"name":"Andoa","code":"anb"},{"name":"Ngas","code":"anc"},{"name":"Ansus","code":"and"},{"name":"Xรขrรขcรนรน","code":"ane"},{"name":"Animere","code":"anf"},{"name":"Old English (ca. 450-1100)","code":"ang"},{"name":"Nend","code":"anh"},{"name":"Andi","code":"ani"},{"name":"Anor","code":"anj"},{"name":"Goemai","code":"ank"},{"name":"Anu-Hkongso Chin","code":"anl"},{"name":"Anal","code":"anm"},{"name":"Obolo","code":"ann"},{"name":"Andoque","code":"ano"},{"name":"Angika","code":"anp"},{"name":"Jarawa (India)","code":"anq"},{"name":"Andh","code":"anr"},{"name":"Anserma","code":"ans"},{"name":"Antakarinya","code":"ant"},{"name":"Antikarinya","code":"ant"},{"name":"Anuak","code":"anu"},{"name":"Denya","code":"anv"},{"name":"Anaang","code":"anw"},{"name":"Andra-Hus","code":"anx"},{"name":"Anyin","code":"any"},{"name":"Anem","code":"anz"},{"name":"Angolar","code":"aoa"},{"name":"Abom","code":"aob"},{"name":"Pemon","code":"aoc"},{"name":"Andarum","code":"aod"},{"name":"Angal Enen","code":"aoe"},{"name":"Bragat","code":"aof"},{"name":"Angoram","code":"aog"},{"name":"Anindilyakwa","code":"aoi"},{"name":"Mufian","code":"aoj"},{"name":"Arhรถ","code":"aok"},{"name":"Alor","code":"aol"},{"name":"ร–mie","code":"aom"},{"name":"Bumbita Arapesh","code":"aon"},{"name":"Aore","code":"aor"},{"name":"Taikat","code":"aos"},{"name":"A'tong","code":"aot"},{"name":"Atong (India)","code":"aot"},{"name":"A'ou","code":"aou"},{"name":"Atorada","code":"aox"},{"name":"Uab Meto","code":"aoz"},{"name":"Sa'a","code":"apb"},{"name":"North Levantine Arabic","code":"apc"},{"name":"Sudanese Arabic","code":"apd"},{"name":"Bukiyip","code":"ape"},{"name":"Pahanan Agta","code":"apf"},{"name":"Ampanang","code":"apg"},{"name":"Athpariya","code":"aph"},{"name":"Apiakรก","code":"api"},{"name":"Jicarilla Apache","code":"apj"},{"name":"Kiowa Apache","code":"apk"},{"name":"Lipan Apache","code":"apl"},{"name":"Mescalero-Chiricahua Apache","code":"apm"},{"name":"Apinayรฉ","code":"apn"},{"name":"Ambul","code":"apo"},{"name":"Apma","code":"app"},{"name":"A-Pucikwar","code":"apq"},{"name":"Arop-Lokep","code":"apr"},{"name":"Arop-Sissano","code":"aps"},{"name":"Apatani","code":"apt"},{"name":"Apurinรฃ","code":"apu"},{"name":"Alapmunte","code":"apv"},{"name":"Western Apache","code":"apw"},{"name":"Aputai","code":"apx"},{"name":"Apalaรญ","code":"apy"},{"name":"Safeyoka","code":"apz"},{"name":"Archi","code":"aqc"},{"name":"Ampari Dogon","code":"aqd"},{"name":"Arigidi","code":"aqg"},{"name":"Aninka","code":"aqk"},{"name":"Atohwaim","code":"aqm"},{"name":"Northern Alta","code":"aqn"},{"name":"Atakapa","code":"aqp"},{"name":"Arhรข","code":"aqr"},{"name":"Angaitรฉ","code":"aqt"},{"name":"Akuntsu","code":"aqz"},{"name":"Arabic","code":"ara"},{"name":"Standard Arabic","code":"arb"},{"name":"Imperial Aramaic (700-300 BCE)","code":"arc"},{"name":"Official Aramaic (700-300 BCE)","code":"arc"},{"name":"Arabana","code":"ard"},{"name":"Western Arrarnta","code":"are"},{"name":"Aragonese","code":"arg"},{"name":"Arhuaco","code":"arh"},{"name":"Arikara","code":"ari"},{"name":"Arapaso","code":"arj"},{"name":"Arikapรบ","code":"ark"},{"name":"Arabela","code":"arl"},{"name":"Mapuche","code":"arn"},{"name":"Mapudungun","code":"arn"},{"name":"Araona","code":"aro"},{"name":"Arapaho","code":"arp"},{"name":"Algerian Arabic","code":"arq"},{"name":"Karo (Brazil)","code":"arr"},{"name":"Najdi Arabic","code":"ars"},{"name":"Arawรก","code":"aru"},{"name":"Aruรก (Amazonas State)","code":"aru"},{"name":"Arbore","code":"arv"},{"name":"Arawak","code":"arw"},{"name":"Aruรก (Rodonia State)","code":"arx"},{"name":"Moroccan Arabic","code":"ary"},{"name":"Egyptian Arabic","code":"arz"},{"name":"Asu (Tanzania)","code":"asa"},{"name":"Assiniboine","code":"asb"},{"name":"Casuarina Coast Asmat","code":"asc"},{"name":"American Sign Language","code":"ase"},{"name":"Auslan","code":"asf"},{"name":"Australian Sign Language","code":"asf"},{"name":"Cishingini","code":"asg"},{"name":"Abishira","code":"ash"},{"name":"Buruwai","code":"asi"},{"name":"Sari","code":"asj"},{"name":"Ashkun","code":"ask"},{"name":"Asilulu","code":"asl"},{"name":"Assamese","code":"asm"},{"name":"Xingรบ Asurinรญ","code":"asn"},{"name":"Dano","code":"aso"},{"name":"Algerian Sign Language","code":"asp"},{"name":"Austrian Sign Language","code":"asq"},{"name":"Asuri","code":"asr"},{"name":"Ipulo","code":"ass"},{"name":"Asturian","code":"ast"},{"name":"Asturleonese","code":"ast"},{"name":"Bable","code":"ast"},{"name":"Leonese","code":"ast"},{"name":"Tocantins Asurini","code":"asu"},{"name":"Asoa","code":"asv"},{"name":"Australian Aborigines Sign Language","code":"asw"},{"name":"Muratayak","code":"asx"},{"name":"Yaosakor Asmat","code":"asy"},{"name":"As","code":"asz"},{"name":"Pele-Ata","code":"ata"},{"name":"Zaiwa","code":"atb"},{"name":"Atsahuaca","code":"atc"},{"name":"Ata Manobo","code":"atd"},{"name":"Atemble","code":"ate"},{"name":"Ivbie North-Okpela-Arhe","code":"atg"},{"name":"Attiรฉ","code":"ati"},{"name":"Atikamekw","code":"atj"},{"name":"Ati","code":"atk"},{"name":"Mt. Iraya Agta","code":"atl"},{"name":"Ata","code":"atm"},{"name":"Ashtiani","code":"atn"},{"name":"Atong (Cameroon)","code":"ato"},{"name":"Pudtol Atta","code":"atp"},{"name":"Aralle-Tabulahan","code":"atq"},{"name":"Waimiri-Atroari","code":"atr"},{"name":"Gros Ventre","code":"ats"},{"name":"Pamplona Atta","code":"att"},{"name":"Reel","code":"atu"},{"name":"Northern Altai","code":"atv"},{"name":"Atsugewi","code":"atw"},{"name":"Arutani","code":"atx"},{"name":"Aneityum","code":"aty"},{"name":"Arta","code":"atz"},{"name":"Asumboa","code":"aua"},{"name":"Alugu","code":"aub"},{"name":"Waorani","code":"auc"},{"name":"Anuta","code":"aud"},{"name":"Aguna","code":"aug"},{"name":"Aushi","code":"auh"},{"name":"Anuki","code":"aui"},{"name":"Awjilah","code":"auj"},{"name":"Heyo","code":"auk"},{"name":"Aulua","code":"aul"},{"name":"Asu (Nigeria)","code":"aum"},{"name":"Molmo One","code":"aun"},{"name":"Auyokawa","code":"auo"},{"name":"Makayam","code":"aup"},{"name":"Anus","code":"auq"},{"name":"Korur","code":"auq"},{"name":"Aruek","code":"aur"},{"name":"Austral","code":"aut"},{"name":"Auye","code":"auu"},{"name":"Awyi","code":"auw"},{"name":"Aurรก","code":"aux"},{"name":"Awiyaana","code":"auy"},{"name":"Uzbeki Arabic","code":"auz"},{"name":"Avaric","code":"ava"},{"name":"Avau","code":"avb"},{"name":"Alviri-Vidari","code":"avd"},{"name":"Avestan","code":"ave"},{"name":"Avikam","code":"avi"},{"name":"Kotava","code":"avk"},{"name":"Eastern Egyptian Bedawi Arabic","code":"avl"},{"name":"Angkamuthi","code":"avm"},{"name":"Avatime","code":"avn"},{"name":"Agavotaguerra","code":"avo"},{"name":"Aushiri","code":"avs"},{"name":"Au","code":"avt"},{"name":"Avokaya","code":"avu"},{"name":"Avรก-Canoeiro","code":"avv"},{"name":"Awadhi","code":"awa"},{"name":"Awa (Papua New Guinea)","code":"awb"},{"name":"Cicipu","code":"awc"},{"name":"Awetรญ","code":"awe"},{"name":"Anguthimri","code":"awg"},{"name":"Awbono","code":"awh"},{"name":"Aekyom","code":"awi"},{"name":"Awabakal","code":"awk"},{"name":"Arawum","code":"awm"},{"name":"Awngi","code":"awn"},{"name":"Awak","code":"awo"},{"name":"Awera","code":"awr"},{"name":"South Awyu","code":"aws"},{"name":"Arawetรฉ","code":"awt"},{"name":"Central Awyu","code":"awu"},{"name":"Jair Awyu","code":"awv"},{"name":"Awun","code":"aww"},{"name":"Awara","code":"awx"},{"name":"Edera Awyu","code":"awy"},{"name":"Abipon","code":"axb"},{"name":"Ayerrerenge","code":"axe"},{"name":"Mato Grosso Arรกra","code":"axg"},{"name":"Yaka (Central African Republic)","code":"axk"},{"name":"Lower Southern Aranda","code":"axl"},{"name":"Middle Armenian","code":"axm"},{"name":"Xรขrรขgurรจ","code":"axx"},{"name":"Awar","code":"aya"},{"name":"Ayizo Gbe","code":"ayb"},{"name":"Southern Aymara","code":"ayc"},{"name":"Ayabadhu","code":"ayd"},{"name":"Ayere","code":"aye"},{"name":"Ginyanga","code":"ayg"},{"name":"Hadrami Arabic","code":"ayh"},{"name":"Leyigha","code":"ayi"},{"name":"Akuku","code":"ayk"},{"name":"Libyan Arabic","code":"ayl"},{"name":"Aymara","code":"aym"},{"name":"Sanaani Arabic","code":"ayn"},{"name":"Ayoreo","code":"ayo"},{"name":"North Mesopotamian Arabic","code":"ayp"},{"name":"Ayi (Papua New Guinea)","code":"ayq"},{"name":"Central Aymara","code":"ayr"},{"name":"Sorsogon Ayta","code":"ays"},{"name":"Magbukun Ayta","code":"ayt"},{"name":"Ayu","code":"ayu"},{"name":"Mai Brat","code":"ayz"},{"name":"Azha","code":"aza"},{"name":"South Azerbaijani","code":"azb"},{"name":"Eastern Durango Nahuatl","code":"azd"},{"name":"Azerbaijani","code":"aze"},{"name":"San Pedro Amuzgos Amuzgo","code":"azg"},{"name":"North Azerbaijani","code":"azj"},{"name":"Ipalapa Amuzgo","code":"azm"},{"name":"Western Durango Nahuatl","code":"azn"},{"name":"Awing","code":"azo"},{"name":"Faire Atta","code":"azt"},{"name":"Highland Puebla Nahuatl","code":"azz"},{"name":"Babatana","code":"baa"},{"name":"Bainouk-Gunyuรฑo","code":"bab"},{"name":"Badui","code":"bac"},{"name":"Barรฉ","code":"bae"},{"name":"Nubaca","code":"baf"},{"name":"Tuki","code":"bag"},{"name":"Bahamas Creole English","code":"bah"},{"name":"Barakai","code":"baj"},{"name":"Bashkir","code":"bak"},{"name":"Baluchi","code":"bal"},{"name":"Bambara","code":"bam"},{"name":"Balinese","code":"ban"},{"name":"Waimaha","code":"bao"},{"name":"Bantawa","code":"bap"},{"name":"Bavarian","code":"bar"},{"name":"Basa (Cameroon)","code":"bas"},{"name":"Bada (Nigeria)","code":"bau"},{"name":"Vengo","code":"bav"},{"name":"Bambili-Bambui","code":"baw"},{"name":"Bamun","code":"bax"},{"name":"Batuley","code":"bay"},{"name":"Baatonum","code":"bba"},{"name":"Barai","code":"bbb"},{"name":"Batak Toba","code":"bbc"},{"name":"Bau","code":"bbd"},{"name":"Bangba","code":"bbe"},{"name":"Baibai","code":"bbf"},{"name":"Barama","code":"bbg"},{"name":"Bugan","code":"bbh"},{"name":"Barombi","code":"bbi"},{"name":"Ghomรกlรก'","code":"bbj"},{"name":"Babanki","code":"bbk"},{"name":"Bats","code":"bbl"},{"name":"Babango","code":"bbm"},{"name":"Uneapa","code":"bbn"},{"name":"Konabรฉrรฉ","code":"bbo"},{"name":"Northern Bobo Madarรฉ","code":"bbo"},{"name":"West Central Banda","code":"bbp"},{"name":"Bamali","code":"bbq"},{"name":"Girawa","code":"bbr"},{"name":"Bakpinka","code":"bbs"},{"name":"Mburku","code":"bbt"},{"name":"Kulung (Nigeria)","code":"bbu"},{"name":"Karnai","code":"bbv"},{"name":"Baba","code":"bbw"},{"name":"Bubia","code":"bbx"},{"name":"Befang","code":"bby"},{"name":"Central Bai","code":"bca"},{"name":"Bainouk-Samik","code":"bcb"},{"name":"Southern Balochi","code":"bcc"},{"name":"North Babar","code":"bcd"},{"name":"Bamenyam","code":"bce"},{"name":"Bamu","code":"bcf"},{"name":"Baga Pokur","code":"bcg"},{"name":"Bariai","code":"bch"},{"name":"Baoulรฉ","code":"bci"},{"name":"Bardi","code":"bcj"},{"name":"Bunuba","code":"bck"},{"name":"Central Bikol","code":"bcl"},{"name":"Bannoni","code":"bcm"},{"name":"Bali (Nigeria)","code":"bcn"},{"name":"Kaluli","code":"bco"},{"name":"Bali (Democratic Republic of Congo)","code":"bcp"},{"name":"Bench","code":"bcq"},{"name":"Babine","code":"bcr"},{"name":"Kohumono","code":"bcs"},{"name":"Bendi","code":"bct"},{"name":"Awad Bing","code":"bcu"},{"name":"Shoo-Minda-Nye","code":"bcv"},{"name":"Bana","code":"bcw"},{"name":"Bacama","code":"bcy"},{"name":"Bainouk-Gunyaamolo","code":"bcz"},{"name":"Bayot","code":"bda"},{"name":"Basap","code":"bdb"},{"name":"Emberรก-Baudรณ","code":"bdc"},{"name":"Bunama","code":"bdd"},{"name":"Bade","code":"bde"},{"name":"Biage","code":"bdf"},{"name":"Bonggi","code":"bdg"},{"name":"Baka (South Sudan)","code":"bdh"},{"name":"Burun","code":"bdi"},{"name":"Bai","code":"bdj"},{"name":"Bai (South Sudan)","code":"bdj"},{"name":"Budukh","code":"bdk"},{"name":"Indonesian Bajau","code":"bdl"},{"name":"Buduma","code":"bdm"},{"name":"Baldemu","code":"bdn"},{"name":"Morom","code":"bdo"},{"name":"Bende","code":"bdp"},{"name":"Bahnar","code":"bdq"},{"name":"West Coast Bajau","code":"bdr"},{"name":"Burunge","code":"bds"},{"name":"Bokoto","code":"bdt"},{"name":"Oroko","code":"bdu"},{"name":"Bodo Parja","code":"bdv"},{"name":"Baham","code":"bdw"},{"name":"Budong-Budong","code":"bdx"},{"name":"Bandjalang","code":"bdy"},{"name":"Badeshi","code":"bdz"},{"name":"Beaver","code":"bea"},{"name":"Bebele","code":"beb"},{"name":"Iceve-Maci","code":"bec"},{"name":"Bedoanas","code":"bed"},{"name":"Byangsi","code":"bee"},{"name":"Benabena","code":"bef"},{"name":"Belait","code":"beg"},{"name":"Biali","code":"beh"},{"name":"Bekati'","code":"bei"},{"name":"Bedawiyet","code":"bej"},{"name":"Beja","code":"bej"},{"name":"Bebeli","code":"bek"},{"name":"Belarusian","code":"bel"},{"name":"Bemba (Zambia)","code":"bem"},{"name":"Bengali","code":"ben"},{"name":"Beami","code":"beo"},{"name":"Besoa","code":"bep"},{"name":"Beembe","code":"beq"},{"name":"Besme","code":"bes"},{"name":"Guiberoua Bรฉte","code":"bet"},{"name":"Blagar","code":"beu"},{"name":"Daloa Bรฉtรฉ","code":"bev"},{"name":"Betawi","code":"bew"},{"name":"Jur Modo","code":"bex"},{"name":"Beli (Papua New Guinea)","code":"bey"},{"name":"Bena (Tanzania)","code":"bez"},{"name":"Bari","code":"bfa"},{"name":"Pauri Bareli","code":"bfb"},{"name":"Northern Bai","code":"bfc"},{"name":"Panyi Bai","code":"bfc"},{"name":"Bafut","code":"bfd"},{"name":"Betaf","code":"bfe"},{"name":"Tena","code":"bfe"},{"name":"Bofi","code":"bff"},{"name":"Busang Kayan","code":"bfg"},{"name":"Blafe","code":"bfh"},{"name":"British Sign Language","code":"bfi"},{"name":"Bafanji","code":"bfj"},{"name":"Ban Khor Sign Language","code":"bfk"},{"name":"Banda-Ndรฉlรฉ","code":"bfl"},{"name":"Mmen","code":"bfm"},{"name":"Bunak","code":"bfn"},{"name":"Malba Birifor","code":"bfo"},{"name":"Beba","code":"bfp"},{"name":"Badaga","code":"bfq"},{"name":"Bazigar","code":"bfr"},{"name":"Southern Bai","code":"bfs"},{"name":"Balti","code":"bft"},{"name":"Gahri","code":"bfu"},{"name":"Bondo","code":"bfw"},{"name":"Bantayanon","code":"bfx"},{"name":"Bagheli","code":"bfy"},{"name":"Mahasu Pahari","code":"bfz"},{"name":"Gwamhi-Wuri","code":"bga"},{"name":"Bobongko","code":"bgb"},{"name":"Haryanvi","code":"bgc"},{"name":"Rathwi Bareli","code":"bgd"},{"name":"Bauria","code":"bge"},{"name":"Bangandu","code":"bgf"},{"name":"Bugun","code":"bgg"},{"name":"Giangan","code":"bgi"},{"name":"Bangolan","code":"bgj"},{"name":"Bit","code":"bgk"},{"name":"Buxinhua","code":"bgk"},{"name":"Bo (Laos)","code":"bgl"},{"name":"Western Balochi","code":"bgn"},{"name":"Baga Koga","code":"bgo"},{"name":"Eastern Balochi","code":"bgp"},{"name":"Bagri","code":"bgq"},{"name":"Bawm Chin","code":"bgr"},{"name":"Tagabawa","code":"bgs"},{"name":"Bughotu","code":"bgt"},{"name":"Mbongno","code":"bgu"},{"name":"Warkay-Bipim","code":"bgv"},{"name":"Bhatri","code":"bgw"},{"name":"Balkan Gagauz Turkish","code":"bgx"},{"name":"Benggoi","code":"bgy"},{"name":"Banggai","code":"bgz"},{"name":"Bharia","code":"bha"},{"name":"Bhili","code":"bhb"},{"name":"Biga","code":"bhc"},{"name":"Bhadrawahi","code":"bhd"},{"name":"Bhaya","code":"bhe"},{"name":"Odiai","code":"bhf"},{"name":"Binandere","code":"bhg"},{"name":"Bukharic","code":"bhh"},{"name":"Bhilali","code":"bhi"},{"name":"Bahing","code":"bhj"},{"name":"Bimin","code":"bhl"},{"name":"Bathari","code":"bhm"},{"name":"Bohtan Neo-Aramaic","code":"bhn"},{"name":"Bhojpuri","code":"bho"},{"name":"Bima","code":"bhp"},{"name":"Tukang Besi South","code":"bhq"},{"name":"Bara Malagasy","code":"bhr"},{"name":"Buwal","code":"bhs"},{"name":"Bhattiyali","code":"bht"},{"name":"Bhunjia","code":"bhu"},{"name":"Bahau","code":"bhv"},{"name":"Biak","code":"bhw"},{"name":"Bhalay","code":"bhx"},{"name":"Bhele","code":"bhy"},{"name":"Bada (Indonesia)","code":"bhz"},{"name":"Badimaya","code":"bia"},{"name":"Bisa","code":"bib"},{"name":"Bissa","code":"bib"},{"name":"Bidiyo","code":"bid"},{"name":"Bepour","code":"bie"},{"name":"Biafada","code":"bif"},{"name":"Biangai","code":"big"},{"name":"Bikol","code":"bik"},{"name":"Bile","code":"bil"},{"name":"Bimoba","code":"bim"},{"name":"Bini","code":"bin"},{"name":"Edo","code":"bin"},{"name":"Nai","code":"bio"},{"name":"Bila","code":"bip"},{"name":"Bipi","code":"biq"},{"name":"Bisorio","code":"bir"},{"name":"Bislama","code":"bis"},{"name":"Berinomo","code":"bit"},{"name":"Biete","code":"biu"},{"name":"Southern Birifor","code":"biv"},{"name":"Kol (Cameroon)","code":"biw"},{"name":"Bijori","code":"bix"},{"name":"Birhor","code":"biy"},{"name":"Baloi","code":"biz"},{"name":"Budza","code":"bja"},{"name":"Banggarla","code":"bjb"},{"name":"Bariji","code":"bjc"},{"name":"Biao-Jiao Mien","code":"bje"},{"name":"Barzani Jewish Neo-Aramaic","code":"bjf"},{"name":"Bidyogo","code":"bjg"},{"name":"Bahinemo","code":"bjh"},{"name":"Burji","code":"bji"},{"name":"Kanauji","code":"bjj"},{"name":"Barok","code":"bjk"},{"name":"Bulu (Papua New Guinea)","code":"bjl"},{"name":"Bajelani","code":"bjm"},{"name":"Banjar","code":"bjn"},{"name":"Mid-Southern Banda","code":"bjo"},{"name":"Fanamaket","code":"bjp"},{"name":"Binumarien","code":"bjr"},{"name":"Bajan","code":"bjs"},{"name":"Balanta-Ganja","code":"bjt"},{"name":"Busuu","code":"bju"},{"name":"Bedjond","code":"bjv"},{"name":"Bakwรฉ","code":"bjw"},{"name":"Banao Itneg","code":"bjx"},{"name":"Bayali","code":"bjy"},{"name":"Baruga","code":"bjz"},{"name":"Kyak","code":"bka"},{"name":"Baka (Cameroon)","code":"bkc"},{"name":"Binukid","code":"bkd"},{"name":"Talaandig","code":"bkd"},{"name":"Beeke","code":"bkf"},{"name":"Buraka","code":"bkg"},{"name":"Bakoko","code":"bkh"},{"name":"Baki","code":"bki"},{"name":"Pande","code":"bkj"},{"name":"Brokskat","code":"bkk"},{"name":"Berik","code":"bkl"},{"name":"Kom (Cameroon)","code":"bkm"},{"name":"Bukitan","code":"bkn"},{"name":"Kwa'","code":"bko"},{"name":"Boko (Democratic Republic of Congo)","code":"bkp"},{"name":"Bakairรญ","code":"bkq"},{"name":"Bakumpai","code":"bkr"},{"name":"Northern Sorsoganon","code":"bks"},{"name":"Boloki","code":"bkt"},{"name":"Buhid","code":"bku"},{"name":"Bekwarra","code":"bkv"},{"name":"Bekwel","code":"bkw"},{"name":"Baikeno","code":"bkx"},{"name":"Bokyi","code":"bky"},{"name":"Bungku","code":"bkz"},{"name":"Siksika","code":"bla"},{"name":"Bilua","code":"blb"},{"name":"Bella Coola","code":"blc"},{"name":"Bolango","code":"bld"},{"name":"Balanta-Kentohe","code":"ble"},{"name":"Buol","code":"blf"},{"name":"Kuwaa","code":"blh"},{"name":"Bolia","code":"bli"},{"name":"Bolongan","code":"blj"},{"name":"Pa'O","code":"blk"},{"name":"Pa'o Karen","code":"blk"},{"name":"Biloxi","code":"bll"},{"name":"Beli (South Sudan)","code":"blm"},{"name":"Southern Catanduanes Bikol","code":"bln"},{"name":"Anii","code":"blo"},{"name":"Blablanga","code":"blp"},{"name":"Baluan-Pam","code":"blq"},{"name":"Blang","code":"blr"},{"name":"Balaesang","code":"bls"},{"name":"Tai Dam","code":"blt"},{"name":"Bolo","code":"blv"},{"name":"Kibala","code":"blv"},{"name":"Balangao","code":"blw"},{"name":"Mag-Indi Ayta","code":"blx"},{"name":"Notre","code":"bly"},{"name":"Balantak","code":"blz"},{"name":"Lame","code":"bma"},{"name":"Bembe","code":"bmb"},{"name":"Biem","code":"bmc"},{"name":"Baga Manduri","code":"bmd"},{"name":"Limassa","code":"bme"},{"name":"Bom-Kim","code":"bmf"},{"name":"Bamwe","code":"bmg"},{"name":"Kein","code":"bmh"},{"name":"Bagirmi","code":"bmi"},{"name":"Bote-Majhi","code":"bmj"},{"name":"Ghayavi","code":"bmk"},{"name":"Bomboli","code":"bml"},{"name":"Northern Betsimisaraka Malagasy","code":"bmm"},{"name":"Bina (Papua New Guinea)","code":"bmn"},{"name":"Bambalang","code":"bmo"},{"name":"Bulgebi","code":"bmp"},{"name":"Bomu","code":"bmq"},{"name":"Muinane","code":"bmr"},{"name":"Bilma Kanuri","code":"bms"},{"name":"Biao Mon","code":"bmt"},{"name":"Somba-Siawari","code":"bmu"},{"name":"Bum","code":"bmv"},{"name":"Bomwali","code":"bmw"},{"name":"Baimak","code":"bmx"},{"name":"Baramu","code":"bmz"},{"name":"Bonerate","code":"bna"},{"name":"Bookan","code":"bnb"},{"name":"Bontok","code":"bnc"},{"name":"Banda (Indonesia)","code":"bnd"},{"name":"Bintauna","code":"bne"},{"name":"Masiwang","code":"bnf"},{"name":"Benga","code":"bng"},{"name":"Bangi","code":"bni"},{"name":"Eastern Tawbuid","code":"bnj"},{"name":"Bierebo","code":"bnk"},{"name":"Boon","code":"bnl"},{"name":"Batanga","code":"bnm"},{"name":"Bunun","code":"bnn"},{"name":"Bantoanon","code":"bno"},{"name":"Bola","code":"bnp"},{"name":"Bantik","code":"bnq"},{"name":"Butmas-Tur","code":"bnr"},{"name":"Bundeli","code":"bns"},{"name":"Bentong","code":"bnu"},{"name":"Beneraf","code":"bnv"},{"name":"Bonerif","code":"bnv"},{"name":"Edwas","code":"bnv"},{"name":"Bisis","code":"bnw"},{"name":"Bangubangu","code":"bnx"},{"name":"Bintulu","code":"bny"},{"name":"Beezen","code":"bnz"},{"name":"Bora","code":"boa"},{"name":"Aweer","code":"bob"},{"name":"Tibetan","code":"bod"},{"name":"Mundabli","code":"boe"},{"name":"Bolon","code":"bof"},{"name":"Bamako Sign Language","code":"bog"},{"name":"Boma","code":"boh"},{"name":"Barbareรฑo","code":"boi"},{"name":"Anjam","code":"boj"},{"name":"Bonjo","code":"bok"},{"name":"Bole","code":"bol"},{"name":"Berom","code":"bom"},{"name":"Bine","code":"bon"},{"name":"Tiemacรจwรจ Bozo","code":"boo"},{"name":"Bonkiman","code":"bop"},{"name":"Bogaya","code":"boq"},{"name":"Borรดro","code":"bor"},{"name":"Bosnian","code":"bos"},{"name":"Bongo","code":"bot"},{"name":"Bondei","code":"bou"},{"name":"Tuwuli","code":"bov"},{"name":"Rema","code":"bow"},{"name":"Buamu","code":"box"},{"name":"Bodo (Central African Republic)","code":"boy"},{"name":"Tiรฉyaxo Bozo","code":"boz"},{"name":"Daakaka","code":"bpa"},{"name":"Banda-Banda","code":"bpd"},{"name":"Bauni","code":"bpe"},{"name":"Bonggo","code":"bpg"},{"name":"Botlikh","code":"bph"},{"name":"Bagupi","code":"bpi"},{"name":"Binji","code":"bpj"},{"name":"'ร”rรดรช","code":"bpk"},{"name":"Orowe","code":"bpk"},{"name":"Broome Pearling Lugger Pidgin","code":"bpl"},{"name":"Biyom","code":"bpm"},{"name":"Dzao Min","code":"bpn"},{"name":"Anasi","code":"bpo"},{"name":"Kaure","code":"bpp"},{"name":"Banda Malay","code":"bpq"},{"name":"Koronadal Blaan","code":"bpr"},{"name":"Sarangani Blaan","code":"bps"},{"name":"Barrow Point","code":"bpt"},{"name":"Bongu","code":"bpu"},{"name":"Bian Marind","code":"bpv"},{"name":"Bo (Papua New Guinea)","code":"bpw"},{"name":"Palya Bareli","code":"bpx"},{"name":"Bishnupriya","code":"bpy"},{"name":"Bilba","code":"bpz"},{"name":"Tchumbuli","code":"bqa"},{"name":"Bagusa","code":"bqb"},{"name":"Boko (Benin)","code":"bqc"},{"name":"Boo","code":"bqc"},{"name":"Bung","code":"bqd"},{"name":"Baga Kaloum","code":"bqf"},{"name":"Bago-Kusuntu","code":"bqg"},{"name":"Baima","code":"bqh"},{"name":"Bakhtiari","code":"bqi"},{"name":"Bandial","code":"bqj"},{"name":"Banda-Mbrรจs","code":"bqk"},{"name":"Bilakura","code":"bql"},{"name":"Wumboko","code":"bqm"},{"name":"Bulgarian Sign Language","code":"bqn"},{"name":"Balo","code":"bqo"},{"name":"Busa","code":"bqp"},{"name":"Biritai","code":"bqq"},{"name":"Burusu","code":"bqr"},{"name":"Bosngun","code":"bqs"},{"name":"Bamukumbit","code":"bqt"},{"name":"Boguru","code":"bqu"},{"name":"Begbere-Ejar","code":"bqv"},{"name":"Koro Wachi","code":"bqv"},{"name":"Buru (Nigeria)","code":"bqw"},{"name":"Baangi","code":"bqx"},{"name":"Bengkala Sign Language","code":"bqy"},{"name":"Bakaka","code":"bqz"},{"name":"Braj","code":"bra"},{"name":"Lave","code":"brb"},{"name":"Berbice Creole Dutch","code":"brc"},{"name":"Baraamu","code":"brd"},{"name":"Breton","code":"bre"},{"name":"Bira","code":"brf"},{"name":"Baure","code":"brg"},{"name":"Brahui","code":"brh"},{"name":"Mokpwe","code":"bri"},{"name":"Bieria","code":"brj"},{"name":"Birked","code":"brk"},{"name":"Birwa","code":"brl"},{"name":"Barambu","code":"brm"},{"name":"Boruca","code":"brn"},{"name":"Brokkat","code":"bro"},{"name":"Barapasi","code":"brp"},{"name":"Breri","code":"brq"},{"name":"Birao","code":"brr"},{"name":"Baras","code":"brs"},{"name":"Bitare","code":"brt"},{"name":"Eastern Bru","code":"bru"},{"name":"Western Bru","code":"brv"},{"name":"Bellari","code":"brw"},{"name":"Bodo (India)","code":"brx"},{"name":"Burui","code":"bry"},{"name":"Bilbil","code":"brz"},{"name":"Abinomn","code":"bsa"},{"name":"Brunei Bisaya","code":"bsb"},{"name":"Bassari","code":"bsc"},{"name":"Oniyan","code":"bsc"},{"name":"Wushi","code":"bse"},{"name":"Bauchi","code":"bsf"},{"name":"Bashkardi","code":"bsg"},{"name":"Kati","code":"bsh"},{"name":"Bassossi","code":"bsi"},{"name":"Bangwinji","code":"bsj"},{"name":"Burushaski","code":"bsk"},{"name":"Basa-Gumna","code":"bsl"},{"name":"Busami","code":"bsm"},{"name":"Barasana-Eduria","code":"bsn"},{"name":"Buso","code":"bso"},{"name":"Baga Sitemu","code":"bsp"},{"name":"Bassa","code":"bsq"},{"name":"Bassa-Kontagora","code":"bsr"},{"name":"Akoose","code":"bss"},{"name":"Basketo","code":"bst"},{"name":"Bahonsuai","code":"bsu"},{"name":"Baga Sobanรฉ","code":"bsv"},{"name":"Baiso","code":"bsw"},{"name":"Yangkam","code":"bsx"},{"name":"Sabah Bisaya","code":"bsy"},{"name":"Bata","code":"bta"},{"name":"Bati (Cameroon)","code":"btc"},{"name":"Batak Dairi","code":"btd"},{"name":"Gamo-Ningi","code":"bte"},{"name":"Birgit","code":"btf"},{"name":"Gagnoa Bรฉtรฉ","code":"btg"},{"name":"Biatah Bidayuh","code":"bth"},{"name":"Burate","code":"bti"},{"name":"Bacanese Malay","code":"btj"},{"name":"Batak Mandailing","code":"btm"},{"name":"Ratagnon","code":"btn"},{"name":"Rinconada Bikol","code":"bto"},{"name":"Budibud","code":"btp"},{"name":"Batek","code":"btq"},{"name":"Baetora","code":"btr"},{"name":"Batak Simalungun","code":"bts"},{"name":"Bete-Bendi","code":"btt"},{"name":"Batu","code":"btu"},{"name":"Bateri","code":"btv"},{"name":"Butuanon","code":"btw"},{"name":"Batak Karo","code":"btx"},{"name":"Bobot","code":"bty"},{"name":"Batak Alas-Kluet","code":"btz"},{"name":"Buriat","code":"bua"},{"name":"Bua","code":"bub"},{"name":"Bushi","code":"buc"},{"name":"Ntcham","code":"bud"},{"name":"Beothuk","code":"bue"},{"name":"Bushoong","code":"buf"},{"name":"Buginese","code":"bug"},{"name":"Younuo Bunu","code":"buh"},{"name":"Bongili","code":"bui"},{"name":"Basa-Gurmana","code":"buj"},{"name":"Bugawac","code":"buk"},{"name":"Bulgarian","code":"bul"},{"name":"Bulu (Cameroon)","code":"bum"},{"name":"Sherbro","code":"bun"},{"name":"Terei","code":"buo"},{"name":"Busoa","code":"bup"},{"name":"Brem","code":"buq"},{"name":"Bokobaru","code":"bus"},{"name":"Bungain","code":"but"},{"name":"Budu","code":"buu"},{"name":"Bun","code":"buv"},{"name":"Bubi","code":"buw"},{"name":"Boghom","code":"bux"},{"name":"Bullom So","code":"buy"},{"name":"Bukwen","code":"buz"},{"name":"Barein","code":"bva"},{"name":"Bube","code":"bvb"},{"name":"Baelelea","code":"bvc"},{"name":"Baeggu","code":"bvd"},{"name":"Berau Malay","code":"bve"},{"name":"Boor","code":"bvf"},{"name":"Bonkeng","code":"bvg"},{"name":"Bure","code":"bvh"},{"name":"Belanda Viri","code":"bvi"},{"name":"Baan","code":"bvj"},{"name":"Bukat","code":"bvk"},{"name":"Bolivian Sign Language","code":"bvl"},{"name":"Bamunka","code":"bvm"},{"name":"Buna","code":"bvn"},{"name":"Bolgo","code":"bvo"},{"name":"Bumang","code":"bvp"},{"name":"Birri","code":"bvq"},{"name":"Burarra","code":"bvr"},{"name":"Bati (Indonesia)","code":"bvt"},{"name":"Bukit Malay","code":"bvu"},{"name":"Baniva","code":"bvv"},{"name":"Boga","code":"bvw"},{"name":"Dibole","code":"bvx"},{"name":"Baybayanon","code":"bvy"},{"name":"Bauzi","code":"bvz"},{"name":"Bwatoo","code":"bwa"},{"name":"Namosi-Naitasiri-Serua","code":"bwb"},{"name":"Bwile","code":"bwc"},{"name":"Bwaidoka","code":"bwd"},{"name":"Bwe Karen","code":"bwe"},{"name":"Boselewa","code":"bwf"},{"name":"Barwe","code":"bwg"},{"name":"Bishuo","code":"bwh"},{"name":"Baniwa","code":"bwi"},{"name":"Lรกรก Lรกรก Bwamu","code":"bwj"},{"name":"Bauwaki","code":"bwk"},{"name":"Bwela","code":"bwl"},{"name":"Biwat","code":"bwm"},{"name":"Wunai Bunu","code":"bwn"},{"name":"Borna (Ethiopia)","code":"bwo"},{"name":"Boro (Ethiopia)","code":"bwo"},{"name":"Mandobo Bawah","code":"bwp"},{"name":"Southern Bobo Madarรฉ","code":"bwq"},{"name":"Bura-Pabir","code":"bwr"},{"name":"Bomboma","code":"bws"},{"name":"Bafaw-Balong","code":"bwt"},{"name":"Buli (Ghana)","code":"bwu"},{"name":"Bwa","code":"bww"},{"name":"Bu-Nao Bunu","code":"bwx"},{"name":"Cwi Bwamu","code":"bwy"},{"name":"Bwisi","code":"bwz"},{"name":"Tairaha","code":"bxa"},{"name":"Belanda Bor","code":"bxb"},{"name":"Molengue","code":"bxc"},{"name":"Pela","code":"bxd"},{"name":"Birale","code":"bxe"},{"name":"Bilur","code":"bxf"},{"name":"Minigir","code":"bxf"},{"name":"Bangala","code":"bxg"},{"name":"Buhutu","code":"bxh"},{"name":"Pirlatapa","code":"bxi"},{"name":"Bayungu","code":"bxj"},{"name":"Bukusu","code":"bxk"},{"name":"Lubukusu","code":"bxk"},{"name":"Jalkunan","code":"bxl"},{"name":"Mongolia Buriat","code":"bxm"},{"name":"Burduna","code":"bxn"},{"name":"Barikanchi","code":"bxo"},{"name":"Bebil","code":"bxp"},{"name":"Beele","code":"bxq"},{"name":"Russia Buriat","code":"bxr"},{"name":"Busam","code":"bxs"},{"name":"China Buriat","code":"bxu"},{"name":"Berakou","code":"bxv"},{"name":"Bankagooma","code":"bxw"},{"name":"Binahari","code":"bxz"},{"name":"Batak","code":"bya"},{"name":"Bikya","code":"byb"},{"name":"Ubaghara","code":"byc"},{"name":"Benyadu'","code":"byd"},{"name":"Pouye","code":"bye"},{"name":"Bete","code":"byf"},{"name":"Baygo","code":"byg"},{"name":"Bhujel","code":"byh"},{"name":"Buyu","code":"byi"},{"name":"Bina (Nigeria)","code":"byj"},{"name":"Biao","code":"byk"},{"name":"Bayono","code":"byl"},{"name":"Bidjara","code":"bym"},{"name":"Bilin","code":"byn"},{"name":"Blin","code":"byn"},{"name":"Biyo","code":"byo"},{"name":"Bumaji","code":"byp"},{"name":"Basay","code":"byq"},{"name":"Baruya","code":"byr"},{"name":"Yipma","code":"byr"},{"name":"Burak","code":"bys"},{"name":"Berti","code":"byt"},{"name":"Medumba","code":"byv"},{"name":"Belhariya","code":"byw"},{"name":"Qaqet","code":"byx"},{"name":"Banaro","code":"byz"},{"name":"Bandi","code":"bza"},{"name":"Andio","code":"bzb"},{"name":"Southern Betsimisaraka Malagasy","code":"bzc"},{"name":"Bribri","code":"bzd"},{"name":"Jenaama Bozo","code":"bze"},{"name":"Boikin","code":"bzf"},{"name":"Babuza","code":"bzg"},{"name":"Mapos Buang","code":"bzh"},{"name":"Bisu","code":"bzi"},{"name":"Belize Kriol English","code":"bzj"},{"name":"Nicaragua Creole English","code":"bzk"},{"name":"Boano (Sulawesi)","code":"bzl"},{"name":"Bolondo","code":"bzm"},{"name":"Boano (Maluku)","code":"bzn"},{"name":"Bozaba","code":"bzo"},{"name":"Kemberano","code":"bzp"},{"name":"Buli (Indonesia)","code":"bzq"},{"name":"Biri","code":"bzr"},{"name":"Brazilian Sign Language","code":"bzs"},{"name":"Brithenig","code":"bzt"},{"name":"Burmeso","code":"bzu"},{"name":"Naami","code":"bzv"},{"name":"Basa (Nigeria)","code":"bzw"},{"name":"Kษ›lษ›ngaxo Bozo","code":"bzx"},{"name":"Obanliku","code":"bzy"},{"name":"Evant","code":"bzz"},{"name":"Chortรญ","code":"caa"},{"name":"Garifuna","code":"cab"},{"name":"Chuj","code":"cac"},{"name":"Caddo","code":"cad"},{"name":"Laalaa","code":"cae"},{"name":"Lehar","code":"cae"},{"name":"Southern Carrier","code":"caf"},{"name":"Nivaclรฉ","code":"cag"},{"name":"Cahuarano","code":"cah"},{"name":"Chanรฉ","code":"caj"},{"name":"Cakchiquel","code":"cak"},{"name":"Kaqchikel","code":"cak"},{"name":"Carolinian","code":"cal"},{"name":"Cemuhรฎ","code":"cam"},{"name":"Chambri","code":"can"},{"name":"Chรกcobo","code":"cao"},{"name":"Chipaya","code":"cap"},{"name":"Car Nicobarese","code":"caq"},{"name":"Galibi Carib","code":"car"},{"name":"Tsimanรฉ","code":"cas"},{"name":"Catalan","code":"cat"},{"name":"Valencian","code":"cat"},{"name":"Cavineรฑa","code":"cav"},{"name":"Callawalla","code":"caw"},{"name":"Chiquitano","code":"cax"},{"name":"Cayuga","code":"cay"},{"name":"Canichana","code":"caz"},{"name":"Cabiyarรญ","code":"cbb"},{"name":"Carapana","code":"cbc"},{"name":"Carijona","code":"cbd"},{"name":"Chimila","code":"cbg"},{"name":"Chachi","code":"cbi"},{"name":"Ede Cabe","code":"cbj"},{"name":"Chavacano","code":"cbk"},{"name":"Bualkhaw Chin","code":"cbl"},{"name":"Nyahkur","code":"cbn"},{"name":"Izora","code":"cbo"},{"name":"Cuba","code":"cbq"},{"name":"Tsucuba","code":"cbq"},{"name":"Cashibo-Cacataibo","code":"cbr"},{"name":"Cashinahua","code":"cbs"},{"name":"Chayahuita","code":"cbt"},{"name":"Candoshi-Shapra","code":"cbu"},{"name":"Cacua","code":"cbv"},{"name":"Kinabalian","code":"cbw"},{"name":"Carabayo","code":"cby"},{"name":"Chamicuro","code":"ccc"},{"name":"Cafundo Creole","code":"ccd"},{"name":"Chopi","code":"cce"},{"name":"Samba Daka","code":"ccg"},{"name":"Atsam","code":"cch"},{"name":"Kasanga","code":"ccj"},{"name":"Cutchi-Swahili","code":"ccl"},{"name":"Malaccan Creole Malay","code":"ccm"},{"name":"Comaltepec Chinantec","code":"cco"},{"name":"Chakma","code":"ccp"},{"name":"Cacaopera","code":"ccr"},{"name":"Choni","code":"cda"},{"name":"Chenchu","code":"cde"},{"name":"Chiru","code":"cdf"},{"name":"Chambeali","code":"cdh"},{"name":"Chodri","code":"cdi"},{"name":"Churahi","code":"cdj"},{"name":"Chepang","code":"cdm"},{"name":"Chaudangsi","code":"cdn"},{"name":"Min Dong Chinese","code":"cdo"},{"name":"Cinda-Regi-Tiyal","code":"cdr"},{"name":"Chadian Sign Language","code":"cds"},{"name":"Chadong","code":"cdy"},{"name":"Koda","code":"cdz"},{"name":"Lower Chehalis","code":"cea"},{"name":"Cebuano","code":"ceb"},{"name":"Chamacoco","code":"ceg"},{"name":"Eastern Khumi Chin","code":"cek"},{"name":"Cen","code":"cen"},{"name":"Czech","code":"ces"},{"name":"Centรบรบm","code":"cet"},{"name":"Ekai Chin","code":"cey"},{"name":"Dijim-Bwilim","code":"cfa"},{"name":"Cara","code":"cfd"},{"name":"Como Karim","code":"cfg"},{"name":"Falam Chin","code":"cfm"},{"name":"Changriwa","code":"cga"},{"name":"Kagayanen","code":"cgc"},{"name":"Chiga","code":"cgg"},{"name":"Chocangacakha","code":"cgk"},{"name":"Chamorro","code":"cha"},{"name":"Chibcha","code":"chb"},{"name":"Catawba","code":"chc"},{"name":"Highland Oaxaca Chontal","code":"chd"},{"name":"Chechen","code":"che"},{"name":"Tabasco Chontal","code":"chf"},{"name":"Chagatai","code":"chg"},{"name":"Chinook","code":"chh"},{"name":"Ojitlรกn Chinantec","code":"chj"},{"name":"Chuukese","code":"chk"},{"name":"Cahuilla","code":"chl"},{"name":"Mari (Russia)","code":"chm"},{"name":"Chinook jargon","code":"chn"},{"name":"Choctaw","code":"cho"},{"name":"Chipewyan","code":"chp"},{"name":"Dene Suline","code":"chp"},{"name":"Quiotepec Chinantec","code":"chq"},{"name":"Cherokee","code":"chr"},{"name":"Cholรณn","code":"cht"},{"name":"Church Slavic","code":"chu"},{"name":"Church Slavonic","code":"chu"},{"name":"Old Bulgarian","code":"chu"},{"name":"Old Church Slavonic","code":"chu"},{"name":"Old Slavonic","code":"chu"},{"name":"Chuvash","code":"chv"},{"name":"Chuwabu","code":"chw"},{"name":"Chantyal","code":"chx"},{"name":"Cheyenne","code":"chy"},{"name":"Ozumacรญn Chinantec","code":"chz"},{"name":"Cia-Cia","code":"cia"},{"name":"Ci Gbe","code":"cib"},{"name":"Chickasaw","code":"cic"},{"name":"Chimariko","code":"cid"},{"name":"Cineni","code":"cie"},{"name":"Chinali","code":"cih"},{"name":"Chitkuli Kinnauri","code":"cik"},{"name":"Cimbrian","code":"cim"},{"name":"Cinta Larga","code":"cin"},{"name":"Chiapanec","code":"cip"},{"name":"Hamรฉa","code":"cir"},{"name":"Mรฉa","code":"cir"},{"name":"Tiri","code":"cir"},{"name":"Chippewa","code":"ciw"},{"name":"Chaima","code":"ciy"},{"name":"Western Cham","code":"cja"},{"name":"Chru","code":"cje"},{"name":"Upper Chehalis","code":"cjh"},{"name":"Chamalal","code":"cji"},{"name":"Chokwe","code":"cjk"},{"name":"Eastern Cham","code":"cjm"},{"name":"Chenapian","code":"cjn"},{"name":"Ashรฉninka Pajonal","code":"cjo"},{"name":"Cabรฉcar","code":"cjp"},{"name":"Shor","code":"cjs"},{"name":"Chuave","code":"cjv"},{"name":"Jinyu Chinese","code":"cjy"},{"name":"Central Kurdish","code":"ckb"},{"name":"Chak","code":"ckh"},{"name":"Cibak","code":"ckl"},{"name":"Chakavian","code":"ckm"},{"name":"Kaang Chin","code":"ckn"},{"name":"Anufo","code":"cko"},{"name":"Kajakse","code":"ckq"},{"name":"Kairak","code":"ckr"},{"name":"Tayo","code":"cks"},{"name":"Chukot","code":"ckt"},{"name":"Koasati","code":"cku"},{"name":"Kavalan","code":"ckv"},{"name":"Caka","code":"ckx"},{"name":"Cakfem-Mushere","code":"cky"},{"name":"Cakchiquel-Quichรฉ Mixed Language","code":"ckz"},{"name":"Ron","code":"cla"},{"name":"Chilcotin","code":"clc"},{"name":"Chaldean Neo-Aramaic","code":"cld"},{"name":"Lealao Chinantec","code":"cle"},{"name":"Chilisso","code":"clh"},{"name":"Chakali","code":"cli"},{"name":"Laitu Chin","code":"clj"},{"name":"Idu-Mishmi","code":"clk"},{"name":"Chala","code":"cll"},{"name":"Clallam","code":"clm"},{"name":"Lowland Oaxaca Chontal","code":"clo"},{"name":"Lautu Chin","code":"clt"},{"name":"Caluyanun","code":"clu"},{"name":"Chulym","code":"clw"},{"name":"Eastern Highland Chatino","code":"cly"},{"name":"Maa","code":"cma"},{"name":"Cerma","code":"cme"},{"name":"Classical Mongolian","code":"cmg"},{"name":"Emberรก-Chamรญ","code":"cmi"},{"name":"Campalagian","code":"cml"},{"name":"Michigamea","code":"cmm"},{"name":"Mandarin Chinese","code":"cmn"},{"name":"Central Mnong","code":"cmo"},{"name":"Mro-Khimi Chin","code":"cmr"},{"name":"Messapic","code":"cms"},{"name":"Camtho","code":"cmt"},{"name":"Changthang","code":"cna"},{"name":"Chinbon Chin","code":"cnb"},{"name":"Cรดรดng","code":"cnc"},{"name":"Northern Qiang","code":"cng"},{"name":"Haka Chin","code":"cnh"},{"name":"Hakha Chin","code":"cnh"},{"name":"Ashรกninka","code":"cni"},{"name":"Khumi Chin","code":"cnk"},{"name":"Lalana Chinantec","code":"cnl"},{"name":"Con","code":"cno"},{"name":"Northern Ping Chinese","code":"cnp"},{"name":"Northern Pinghua","code":"cnp"},{"name":"Montenegrin","code":"cnr"},{"name":"Central Asmat","code":"cns"},{"name":"Tepetotutla Chinantec","code":"cnt"},{"name":"Chenoua","code":"cnu"},{"name":"Ngawn Chin","code":"cnw"},{"name":"Middle Cornish","code":"cnx"},{"name":"Cocos Islands Malay","code":"coa"},{"name":"Chicomuceltec","code":"cob"},{"name":"Cocopa","code":"coc"},{"name":"Cocama-Cocamilla","code":"cod"},{"name":"Koreguaje","code":"coe"},{"name":"Colorado","code":"cof"},{"name":"Chong","code":"cog"},{"name":"Chichonyi-Chidzihana-Chikauma","code":"coh"},{"name":"Chonyi-Dzihana-Kauma","code":"coh"},{"name":"Cochimi","code":"coj"},{"name":"Santa Teresa Cora","code":"cok"},{"name":"Columbia-Wenatchi","code":"col"},{"name":"Comanche","code":"com"},{"name":"Cofรกn","code":"con"},{"name":"Comox","code":"coo"},{"name":"Coptic","code":"cop"},{"name":"Coquille","code":"coq"},{"name":"Cornish","code":"cor"},{"name":"Corsican","code":"cos"},{"name":"Caquinte","code":"cot"},{"name":"Wamey","code":"cou"},{"name":"Cao Miao","code":"cov"},{"name":"Cowlitz","code":"cow"},{"name":"Nanti","code":"cox"},{"name":"Chochotec","code":"coz"},{"name":"Palantla Chinantec","code":"cpa"},{"name":"Ucayali-Yurรบa Ashรฉninka","code":"cpb"},{"name":"Ajyรญninka Apurucayali","code":"cpc"},{"name":"Cappadocian Greek","code":"cpg"},{"name":"Chinese Pidgin English","code":"cpi"},{"name":"Cherepon","code":"cpn"},{"name":"Kpeego","code":"cpo"},{"name":"Capiznon","code":"cps"},{"name":"Pichis Ashรฉninka","code":"cpu"},{"name":"Pu-Xian Chinese","code":"cpx"},{"name":"South Ucayali Ashรฉninka","code":"cpy"},{"name":"Chuanqiandian Cluster Miao","code":"cqd"},{"name":"Chara","code":"cra"},{"name":"Island Carib","code":"crb"},{"name":"Lonwolwol","code":"crc"},{"name":"Coeur d'Alene","code":"crd"},{"name":"Cree","code":"cre"},{"name":"Caramanta","code":"crf"},{"name":"Michif","code":"crg"},{"name":"Crimean Tatar","code":"crh"},{"name":"Crimean Turkish","code":"crh"},{"name":"Sรฃotomense","code":"cri"},{"name":"Southern East Cree","code":"crj"},{"name":"Plains Cree","code":"crk"},{"name":"Northern East Cree","code":"crl"},{"name":"Moose Cree","code":"crm"},{"name":"El Nayar Cora","code":"crn"},{"name":"Crow","code":"cro"},{"name":"Iyo'wujwa Chorote","code":"crq"},{"name":"Carolina Algonquian","code":"crr"},{"name":"Seselwa Creole French","code":"crs"},{"name":"Iyojwa'ja Chorote","code":"crt"},{"name":"Chaura","code":"crv"},{"name":"Chrau","code":"crw"},{"name":"Carrier","code":"crx"},{"name":"Cori","code":"cry"},{"name":"Cruzeรฑo","code":"crz"},{"name":"Chiltepec Chinantec","code":"csa"},{"name":"Kashubian","code":"csb"},{"name":"Catalan Sign Language","code":"csc"},{"name":"Lengua de seรฑas catalana","code":"csc"},{"name":"Llengua de Signes Catalana","code":"csc"},{"name":"Chiangmai Sign Language","code":"csd"},{"name":"Czech Sign Language","code":"cse"},{"name":"Cuba Sign Language","code":"csf"},{"name":"Chilean Sign Language","code":"csg"},{"name":"Asho Chin","code":"csh"},{"name":"Coast Miwok","code":"csi"},{"name":"Songlai Chin","code":"csj"},{"name":"Jola-Kasa","code":"csk"},{"name":"Chinese Sign Language","code":"csl"},{"name":"Central Sierra Miwok","code":"csm"},{"name":"Colombian Sign Language","code":"csn"},{"name":"Sochiapam Chinantec","code":"cso"},{"name":"Sochiapan Chinantec","code":"cso"},{"name":"Southern Ping Chinese","code":"csp"},{"name":"Southern Pinghua","code":"csp"},{"name":"Croatia Sign Language","code":"csq"},{"name":"Costa Rican Sign Language","code":"csr"},{"name":"Southern Ohlone","code":"css"},{"name":"Northern Ohlone","code":"cst"},{"name":"Sumtu Chin","code":"csv"},{"name":"Swampy Cree","code":"csw"},{"name":"Cambodian Sign Language","code":"csx"},{"name":"Siyin Chin","code":"csy"},{"name":"Coos","code":"csz"},{"name":"Tataltepec Chatino","code":"cta"},{"name":"Chetco","code":"ctc"},{"name":"Tedim Chin","code":"ctd"},{"name":"Tepinapa Chinantec","code":"cte"},{"name":"Chittagonian","code":"ctg"},{"name":"Thaiphum Chin","code":"cth"},{"name":"Tlacoatzintepec Chinantec","code":"ctl"},{"name":"Chitimacha","code":"ctm"},{"name":"Chhintange","code":"ctn"},{"name":"Emberรก-Catรญo","code":"cto"},{"name":"Western Highland Chatino","code":"ctp"},{"name":"Northern Catanduanes Bikol","code":"cts"},{"name":"Wayanad Chetti","code":"ctt"},{"name":"Chol","code":"ctu"},{"name":"Moundadan Chetty","code":"cty"},{"name":"Zacatepec Chatino","code":"ctz"},{"name":"Cua","code":"cua"},{"name":"Cubeo","code":"cub"},{"name":"Usila Chinantec","code":"cuc"},{"name":"Chungmboko","code":"cug"},{"name":"Cung","code":"cug"},{"name":"Chuka","code":"cuh"},{"name":"Gichuka","code":"cuh"},{"name":"Cuiba","code":"cui"},{"name":"Mashco Piro","code":"cuj"},{"name":"San Blas Kuna","code":"cuk"},{"name":"Culina","code":"cul"},{"name":"Kulina","code":"cul"},{"name":"Cumanagoto","code":"cuo"},{"name":"Cupeรฑo","code":"cup"},{"name":"Cun","code":"cuq"},{"name":"Chhulung","code":"cur"},{"name":"Teutila Cuicatec","code":"cut"},{"name":"Tai Ya","code":"cuu"},{"name":"Cuvok","code":"cuv"},{"name":"Chukwa","code":"cuw"},{"name":"Tepeuxila Cuicatec","code":"cux"},{"name":"Cuitlatec","code":"cuy"},{"name":"Chug","code":"cvg"},{"name":"Valle Nacional Chinantec","code":"cvn"},{"name":"Kabwa","code":"cwa"},{"name":"Maindo","code":"cwb"},{"name":"Woods Cree","code":"cwd"},{"name":"Kwere","code":"cwe"},{"name":"Cheq Wong","code":"cwg"},{"name":"Chewong","code":"cwg"},{"name":"Kuwaataay","code":"cwt"},{"name":"Nopala Chatino","code":"cya"},{"name":"Cayubaba","code":"cyb"},{"name":"Welsh","code":"cym"},{"name":"Cuyonon","code":"cyo"},{"name":"Huizhou Chinese","code":"czh"},{"name":"Knaanic","code":"czk"},{"name":"Zenzontepec Chatino","code":"czn"},{"name":"Min Zhong Chinese","code":"czo"},{"name":"Zotung Chin","code":"czt"},{"name":"Dangalรฉat","code":"daa"},{"name":"Dambi","code":"dac"},{"name":"Marik","code":"dad"},{"name":"Duupa","code":"dae"},{"name":"Dagbani","code":"dag"},{"name":"Gwahatike","code":"dah"},{"name":"Day","code":"dai"},{"name":"Dar Fur Daju","code":"daj"},{"name":"Dakota","code":"dak"},{"name":"Dahalo","code":"dal"},{"name":"Damakawa","code":"dam"},{"name":"Danish","code":"dan"},{"name":"Daai Chin","code":"dao"},{"name":"Dandami Maria","code":"daq"},{"name":"Dargwa","code":"dar"},{"name":"Daho-Doo","code":"das"},{"name":"Dar Sila Daju","code":"dau"},{"name":"Dawida","code":"dav"},{"name":"Taita","code":"dav"},{"name":"Davawenyo","code":"daw"},{"name":"Dayi","code":"dax"},{"name":"Dao","code":"daz"},{"name":"Bangime","code":"dba"},{"name":"Deno","code":"dbb"},{"name":"Dadiya","code":"dbd"},{"name":"Dabe","code":"dbe"},{"name":"Edopi","code":"dbf"},{"name":"Dogul Dom Dogon","code":"dbg"},{"name":"Doka","code":"dbi"},{"name":"Ida'an","code":"dbj"},{"name":"Dyirbal","code":"dbl"},{"name":"Duguri","code":"dbm"},{"name":"Duriankere","code":"dbn"},{"name":"Dulbu","code":"dbo"},{"name":"Duwai","code":"dbp"},{"name":"Daba","code":"dbq"},{"name":"Dabarre","code":"dbr"},{"name":"Ben Tey Dogon","code":"dbt"},{"name":"Bondum Dom Dogon","code":"dbu"},{"name":"Dungu","code":"dbv"},{"name":"Bankan Tey Dogon","code":"dbw"},{"name":"Dibiyaso","code":"dby"},{"name":"Deccan","code":"dcc"},{"name":"Negerhollands","code":"dcr"},{"name":"Dadi Dadi","code":"dda"},{"name":"Dongotono","code":"ddd"},{"name":"Doondo","code":"dde"},{"name":"Fataluku","code":"ddg"},{"name":"West Goodenough","code":"ddi"},{"name":"Jaru","code":"ddj"},{"name":"Dendi (Benin)","code":"ddn"},{"name":"Dido","code":"ddo"},{"name":"Dhudhuroa","code":"ddr"},{"name":"Donno So Dogon","code":"dds"},{"name":"Dawera-Daweloor","code":"ddw"},{"name":"Dagik","code":"dec"},{"name":"Dedua","code":"ded"},{"name":"Dewoin","code":"dee"},{"name":"Dezfuli","code":"def"},{"name":"Degema","code":"deg"},{"name":"Dehwari","code":"deh"},{"name":"Demisa","code":"dei"},{"name":"Dek","code":"dek"},{"name":"Delaware","code":"del"},{"name":"Dem","code":"dem"},{"name":"Slave (Athapascan)","code":"den"},{"name":"Pidgin Delaware","code":"dep"},{"name":"Dendi (Central African Republic)","code":"deq"},{"name":"Deori","code":"der"},{"name":"Desano","code":"des"},{"name":"German","code":"deu"},{"name":"Domung","code":"dev"},{"name":"Dengese","code":"dez"},{"name":"Southern Dagaare","code":"dga"},{"name":"Bunoge Dogon","code":"dgb"},{"name":"Casiguran Dumagat Agta","code":"dgc"},{"name":"Dagaari Dioula","code":"dgd"},{"name":"Degenan","code":"dge"},{"name":"Doga","code":"dgg"},{"name":"Dghwede","code":"dgh"},{"name":"Northern Dagara","code":"dgi"},{"name":"Dagba","code":"dgk"},{"name":"Andaandi","code":"dgl"},{"name":"Dongolawi","code":"dgl"},{"name":"Dagoman","code":"dgn"},{"name":"Dogri (individual language)","code":"dgo"},{"name":"Dogrib","code":"dgr"},{"name":"Tล‚ฤฑฬจchoฬจ","code":"dgr"},{"name":"Dogoso","code":"dgs"},{"name":"Ndra'ngith","code":"dgt"},{"name":"Daungwurrung","code":"dgw"},{"name":"Doghoro","code":"dgx"},{"name":"Daga","code":"dgz"},{"name":"Dhundari","code":"dhd"},{"name":"Dhangu","code":"dhg"},{"name":"Dhangu-Djangu","code":"dhg"},{"name":"Djangu","code":"dhg"},{"name":"Dhimal","code":"dhi"},{"name":"Dhalandji","code":"dhl"},{"name":"Zemba","code":"dhm"},{"name":"Dhanki","code":"dhn"},{"name":"Dhodia","code":"dho"},{"name":"Dhargari","code":"dhr"},{"name":"Dhaiso","code":"dhs"},{"name":"Dhurga","code":"dhu"},{"name":"Dehu","code":"dhv"},{"name":"Drehu","code":"dhv"},{"name":"Dhanwar (Nepal)","code":"dhw"},{"name":"Dhungaloo","code":"dhx"},{"name":"Dia","code":"dia"},{"name":"South Central Dinka","code":"dib"},{"name":"Lakota Dida","code":"dic"},{"name":"Didinga","code":"did"},{"name":"Dieri","code":"dif"},{"name":"Diyari","code":"dif"},{"name":"Chidigo","code":"dig"},{"name":"Digo","code":"dig"},{"name":"Kumiai","code":"dih"},{"name":"Dimbong","code":"dii"},{"name":"Dai","code":"dij"},{"name":"Southwestern Dinka","code":"dik"},{"name":"Dilling","code":"dil"},{"name":"Dime","code":"dim"},{"name":"Dinka","code":"din"},{"name":"Dibo","code":"dio"},{"name":"Northeastern Dinka","code":"dip"},{"name":"Dimli (individual language)","code":"diq"},{"name":"Dirim","code":"dir"},{"name":"Dimasa","code":"dis"},{"name":"Diriku","code":"diu"},{"name":"Dhivehi","code":"div"},{"name":"Divehi","code":"div"},{"name":"Maldivian","code":"div"},{"name":"Northwestern Dinka","code":"diw"},{"name":"Dixon Reef","code":"dix"},{"name":"Diuwe","code":"diy"},{"name":"Ding","code":"diz"},{"name":"Djadjawurrung","code":"dja"},{"name":"Djinba","code":"djb"},{"name":"Dar Daju Daju","code":"djc"},{"name":"Djamindjung","code":"djd"},{"name":"Ngaliwurru","code":"djd"},{"name":"Zarma","code":"dje"},{"name":"Djangun","code":"djf"},{"name":"Djinang","code":"dji"},{"name":"Djeebbana","code":"djj"},{"name":"Businenge Tongo","code":"djk"},{"name":"Eastern Maroon Creole","code":"djk"},{"name":"Nenge","code":"djk"},{"name":"Jamsay Dogon","code":"djm"},{"name":"Djauan","code":"djn"},{"name":"Jawoyn","code":"djn"},{"name":"Jangkang","code":"djo"},{"name":"Djambarrpuyngu","code":"djr"},{"name":"Kapriman","code":"dju"},{"name":"Djawi","code":"djw"},{"name":"Dakpakha","code":"dka"},{"name":"Kadung","code":"dkg"},{"name":"Dakka","code":"dkk"},{"name":"Kuijau","code":"dkr"},{"name":"Southeastern Dinka","code":"dks"},{"name":"Mazagway","code":"dkx"},{"name":"Dolgan","code":"dlg"},{"name":"Dahalik","code":"dlk"},{"name":"Dalmatian","code":"dlm"},{"name":"Darlong","code":"dln"},{"name":"Duma","code":"dma"},{"name":"Mombo Dogon","code":"dmb"},{"name":"Gavak","code":"dmc"},{"name":"Madhi Madhi","code":"dmd"},{"name":"Dugwor","code":"dme"},{"name":"Medefaidrin","code":"dmf"},{"name":"Upper Kinabatangan","code":"dmg"},{"name":"Domaaki","code":"dmk"},{"name":"Dameli","code":"dml"},{"name":"Dama","code":"dmm"},{"name":"Kemedzung","code":"dmo"},{"name":"East Damar","code":"dmr"},{"name":"Dampelas","code":"dms"},{"name":"Dubu","code":"dmu"},{"name":"Tebi","code":"dmu"},{"name":"Dumpas","code":"dmv"},{"name":"Mudburra","code":"dmw"},{"name":"Dema","code":"dmx"},{"name":"Demta","code":"dmy"},{"name":"Sowari","code":"dmy"},{"name":"Upper Grand Valley Dani","code":"dna"},{"name":"Daonda","code":"dnd"},{"name":"Ndendeule","code":"dne"},{"name":"Dungan","code":"dng"},{"name":"Lower Grand Valley Dani","code":"dni"},{"name":"Dan","code":"dnj"},{"name":"Dengka","code":"dnk"},{"name":"Dzรนรนngoo","code":"dnn"},{"name":"Ndrulo","code":"dno"},{"name":"Northern Lendu","code":"dno"},{"name":"Danaru","code":"dnr"},{"name":"Mid Grand Valley Dani","code":"dnt"},{"name":"Danau","code":"dnu"},{"name":"Danu","code":"dnv"},{"name":"Western Dani","code":"dnw"},{"name":"Denรญ","code":"dny"},{"name":"Dom","code":"doa"},{"name":"Dobu","code":"dob"},{"name":"Northern Dong","code":"doc"},{"name":"Doe","code":"doe"},{"name":"Domu","code":"dof"},{"name":"Dong","code":"doh"},{"name":"Dogri (macrolanguage)","code":"doi"},{"name":"Dondo","code":"dok"},{"name":"Doso","code":"dol"},{"name":"Toura (Papua New Guinea)","code":"don"},{"name":"Dongo","code":"doo"},{"name":"Lukpa","code":"dop"},{"name":"Dominican Sign Language","code":"doq"},{"name":"Dori'o","code":"dor"},{"name":"Dogosรฉ","code":"dos"},{"name":"Dass","code":"dot"},{"name":"Dombe","code":"dov"},{"name":"Doyayo","code":"dow"},{"name":"Bussa","code":"dox"},{"name":"Dompo","code":"doy"},{"name":"Dorze","code":"doz"},{"name":"Papar","code":"dpp"},{"name":"Dair","code":"drb"},{"name":"Minderico","code":"drc"},{"name":"Darmiya","code":"drd"},{"name":"Dolpo","code":"dre"},{"name":"Rungus","code":"drg"},{"name":"C'Lela","code":"dri"},{"name":"Paakantyi","code":"drl"},{"name":"West Damar","code":"drn"},{"name":"Daro-Matu Melanau","code":"dro"},{"name":"Dura","code":"drq"},{"name":"Gedeo","code":"drs"},{"name":"Drents","code":"drt"},{"name":"Rukai","code":"dru"},{"name":"Darai","code":"dry"},{"name":"Lower Sorbian","code":"dsb"},{"name":"Dutch Sign Language","code":"dse"},{"name":"Daasanach","code":"dsh"},{"name":"Disa","code":"dsi"},{"name":"Danish Sign Language","code":"dsl"},{"name":"Dusner","code":"dsn"},{"name":"Desiya","code":"dso"},{"name":"Tadaksahak","code":"dsq"},{"name":"Daur","code":"dta"},{"name":"Labuk-Kinabatangan Kadazan","code":"dtb"},{"name":"Ditidaht","code":"dtd"},{"name":"Adithinngithigh","code":"dth"},{"name":"Ana Tinga Dogon","code":"dti"},{"name":"Tene Kan Dogon","code":"dtk"},{"name":"Tomo Kan Dogon","code":"dtm"},{"name":"Daatsสผiฬin","code":"dtn"},{"name":"Tommo So Dogon","code":"dto"},{"name":"Central Dusun","code":"dtp"},{"name":"Kadazan Dusun","code":"dtp"},{"name":"Lotud","code":"dtr"},{"name":"Toro So Dogon","code":"dts"},{"name":"Toro Tegu Dogon","code":"dtt"},{"name":"Tebul Ure Dogon","code":"dtu"},{"name":"Dotyali","code":"dty"},{"name":"Duala","code":"dua"},{"name":"Dubli","code":"dub"},{"name":"Duna","code":"duc"},{"name":"Umiray Dumaget Agta","code":"due"},{"name":"Drubea","code":"duf"},{"name":"Dumbea","code":"duf"},{"name":"Chiduruma","code":"dug"},{"name":"Duruma","code":"dug"},{"name":"Dungra Bhil","code":"duh"},{"name":"Dumun","code":"dui"},{"name":"Uyajitaya","code":"duk"},{"name":"Alabat Island Agta","code":"dul"},{"name":"Middle Dutch (ca. 1050-1350)","code":"dum"},{"name":"Dusun Deyah","code":"dun"},{"name":"Dupaninan Agta","code":"duo"},{"name":"Duano","code":"dup"},{"name":"Dusun Malang","code":"duq"},{"name":"Dii","code":"dur"},{"name":"Dumi","code":"dus"},{"name":"Drung","code":"duu"},{"name":"Duvle","code":"duv"},{"name":"Dusun Witu","code":"duw"},{"name":"Duungooma","code":"dux"},{"name":"Dicamay Agta","code":"duy"},{"name":"Duli-Gey","code":"duz"},{"name":"Duau","code":"dva"},{"name":"Diri","code":"dwa"},{"name":"Dawik Kui","code":"dwk"},{"name":"Dawro","code":"dwr"},{"name":"Dutton World Speedwords","code":"dws"},{"name":"Dhuwal","code":"dwu"},{"name":"Dawawa","code":"dww"},{"name":"Dhuwaya","code":"dwy"},{"name":"Dewas Rai","code":"dwz"},{"name":"Dyan","code":"dya"},{"name":"Dyaberdyaber","code":"dyb"},{"name":"Dyugun","code":"dyd"},{"name":"Villa Viciosa Agta","code":"dyg"},{"name":"Djimini Senoufo","code":"dyi"},{"name":"Yanda Dom Dogon","code":"dym"},{"name":"Dhanggatti","code":"dyn"},{"name":"Dyangadi","code":"dyn"},{"name":"Jola-Fonyi","code":"dyo"},{"name":"Dyula","code":"dyu"},{"name":"Djabugay","code":"dyy"},{"name":"Dyaabugay","code":"dyy"},{"name":"Tunzu","code":"dza"},{"name":"Djiwarli","code":"dze"},{"name":"Dazaga","code":"dzg"},{"name":"Dzalakha","code":"dzl"},{"name":"Dzando","code":"dzn"},{"name":"Dzongkha","code":"dzo"},{"name":"Karenggapa","code":"eaa"},{"name":"Beginci","code":"ebc"},{"name":"Ebughu","code":"ebg"},{"name":"Eastern Bontok","code":"ebk"},{"name":"Teke-Ebo","code":"ebo"},{"name":"Ebriรฉ","code":"ebr"},{"name":"Embu","code":"ebu"},{"name":"Kiembu","code":"ebu"},{"name":"Eteocretan","code":"ecr"},{"name":"Ecuadorian Sign Language","code":"ecs"},{"name":"Eteocypriot","code":"ecy"},{"name":"E","code":"eee"},{"name":"Efai","code":"efa"},{"name":"Efe","code":"efe"},{"name":"Efik","code":"efi"},{"name":"Ega","code":"ega"},{"name":"Emilian","code":"egl"},{"name":"Eggon","code":"ego"},{"name":"Egyptian (Ancient)","code":"egy"},{"name":"Miyakubo Sign Language","code":"ehs"},{"name":"Ehueun","code":"ehu"},{"name":"Eipomek","code":"eip"},{"name":"Eitiep","code":"eit"},{"name":"Askopan","code":"eiv"},{"name":"Ejamat","code":"eja"},{"name":"Ekajuk","code":"eka"},{"name":"Ekit","code":"eke"},{"name":"Ekari","code":"ekg"},{"name":"Eki","code":"eki"},{"name":"Standard Estonian","code":"ekk"},{"name":"Kol","code":"ekl"},{"name":"Kol (Bangladesh)","code":"ekl"},{"name":"Elip","code":"ekm"},{"name":"Koti","code":"eko"},{"name":"Ekpeye","code":"ekp"},{"name":"Yace","code":"ekr"},{"name":"Eastern Kayah","code":"eky"},{"name":"Elepi","code":"ele"},{"name":"El Hugeirat","code":"elh"},{"name":"Nding","code":"eli"},{"name":"Elkei","code":"elk"},{"name":"Greek","code":"ell"},{"name":"Modern Greek (1453-)","code":"ell"},{"name":"Eleme","code":"elm"},{"name":"El Molo","code":"elo"},{"name":"Elu","code":"elu"},{"name":"Elamite","code":"elx"},{"name":"Emai-Iuleha-Ora","code":"ema"},{"name":"Embaloh","code":"emb"},{"name":"Emerillon","code":"eme"},{"name":"Eastern Meohang","code":"emg"},{"name":"Mussau-Emira","code":"emi"},{"name":"Eastern Maninkakan","code":"emk"},{"name":"Mamulique","code":"emm"},{"name":"Eman","code":"emn"},{"name":"Northern Emberรก","code":"emp"},{"name":"Eastern Minyag","code":"emq"},{"name":"Pacific Gulf Yupik","code":"ems"},{"name":"Eastern Muria","code":"emu"},{"name":"Emplawas","code":"emw"},{"name":"Erromintxela","code":"emx"},{"name":"Epigraphic Mayan","code":"emy"},{"name":"Mbessa","code":"emz"},{"name":"Apali","code":"ena"},{"name":"Markweeta","code":"enb"},{"name":"En","code":"enc"},{"name":"Ende","code":"end"},{"name":"Forest Enets","code":"enf"},{"name":"English","code":"eng"},{"name":"Tundra Enets","code":"enh"},{"name":"Enlhet","code":"enl"},{"name":"Middle English (1100-1500)","code":"enm"},{"name":"Engenni","code":"enn"},{"name":"Enggano","code":"eno"},{"name":"Enga","code":"enq"},{"name":"Emem","code":"enr"},{"name":"Emumu","code":"enr"},{"name":"Enu","code":"enu"},{"name":"Enwan (Edu State)","code":"env"},{"name":"Enwan (Akwa Ibom State)","code":"enw"},{"name":"Enxet","code":"enx"},{"name":"Beti (Cรดte d'Ivoire)","code":"eot"},{"name":"Epie","code":"epi"},{"name":"Esperanto","code":"epo"},{"name":"Eravallan","code":"era"},{"name":"Sie","code":"erg"},{"name":"Eruwa","code":"erh"},{"name":"Ogea","code":"eri"},{"name":"South Efate","code":"erk"},{"name":"Horpa","code":"ero"},{"name":"Erre","code":"err"},{"name":"Ersu","code":"ers"},{"name":"Eritai","code":"ert"},{"name":"Erokwanas","code":"erw"},{"name":"Ese Ejja","code":"ese"},{"name":"Aheri Gondi","code":"esg"},{"name":"Eshtehardi","code":"esh"},{"name":"North Alaskan Inupiatun","code":"esi"},{"name":"Northwest Alaska Inupiatun","code":"esk"},{"name":"Egypt Sign Language","code":"esl"},{"name":"Esuma","code":"esm"},{"name":"Salvadoran Sign Language","code":"esn"},{"name":"Estonian Sign Language","code":"eso"},{"name":"Esselen","code":"esq"},{"name":"Central Siberian Yupik","code":"ess"},{"name":"Estonian","code":"est"},{"name":"Central Yupik","code":"esu"},{"name":"Eskayan","code":"esy"},{"name":"Etebi","code":"etb"},{"name":"Etchemin","code":"etc"},{"name":"Ethiopian Sign Language","code":"eth"},{"name":"Eton (Vanuatu)","code":"etn"},{"name":"Eton (Cameroon)","code":"eto"},{"name":"Edolo","code":"etr"},{"name":"Yekhee","code":"ets"},{"name":"Etruscan","code":"ett"},{"name":"Ejagham","code":"etu"},{"name":"Eten","code":"etx"},{"name":"Semimi","code":"etz"},{"name":"Basque","code":"eus"},{"name":"Even","code":"eve"},{"name":"Uvbie","code":"evh"},{"name":"Evenki","code":"evn"},{"name":"Ewe","code":"ewe"},{"name":"Ewondo","code":"ewo"},{"name":"Extremaduran","code":"ext"},{"name":"Eyak","code":"eya"},{"name":"Keiyo","code":"eyo"},{"name":"Ezaa","code":"eza"},{"name":"Uzekwe","code":"eze"},{"name":"Fasu","code":"faa"},{"name":"Fa d'Ambu","code":"fab"},{"name":"Wagi","code":"fad"},{"name":"Fagani","code":"faf"},{"name":"Finongan","code":"fag"},{"name":"Baissa Fali","code":"fah"},{"name":"Faiwol","code":"fai"},{"name":"Faita","code":"faj"},{"name":"Fang (Cameroon)","code":"fak"},{"name":"South Fali","code":"fal"},{"name":"Fam","code":"fam"},{"name":"Fang (Equatorial Guinea)","code":"fan"},{"name":"Faroese","code":"fao"},{"name":"Paloor","code":"fap"},{"name":"Fataleka","code":"far"},{"name":"Persian","code":"fas"},{"name":"Fanti","code":"fat"},{"name":"Fayu","code":"fau"},{"name":"Fala","code":"fax"},{"name":"Southwestern Fars","code":"fay"},{"name":"Northwestern Fars","code":"faz"},{"name":"West Albay Bikol","code":"fbl"},{"name":"Quebec Sign Language","code":"fcs"},{"name":"Feroge","code":"fer"},{"name":"Foia Foia","code":"ffi"},{"name":"Maasina Fulfulde","code":"ffm"},{"name":"Fongoro","code":"fgr"},{"name":"Nobiin","code":"fia"},{"name":"Fyer","code":"fie"},{"name":"Faifi","code":"fif"},{"name":"Fijian","code":"fij"},{"name":"Filipino","code":"fil"},{"name":"Pilipino","code":"fil"},{"name":"Finnish","code":"fin"},{"name":"Fipa","code":"fip"},{"name":"Firan","code":"fir"},{"name":"Tornedalen Finnish","code":"fit"},{"name":"Fiwaga","code":"fiw"},{"name":"Kirya-Konzษ™l","code":"fkk"},{"name":"Kven Finnish","code":"fkv"},{"name":"Kalispel-Pend d'Oreille","code":"fla"},{"name":"Foau","code":"flh"},{"name":"Fali","code":"fli"},{"name":"North Fali","code":"fll"},{"name":"Flinders Island","code":"fln"},{"name":"Fuliiru","code":"flr"},{"name":"Flaaitaal","code":"fly"},{"name":"Tsotsitaal","code":"fly"},{"name":"Fe'fe'","code":"fmp"},{"name":"Far Western Muria","code":"fmu"},{"name":"Fanbak","code":"fnb"},{"name":"Fanagalo","code":"fng"},{"name":"Fania","code":"fni"},{"name":"Foodo","code":"fod"},{"name":"Foi","code":"foi"},{"name":"Foma","code":"fom"},{"name":"Fon","code":"fon"},{"name":"Fore","code":"for"},{"name":"Siraya","code":"fos"},{"name":"Fernando Po Creole English","code":"fpe"},{"name":"Fas","code":"fqs"},{"name":"French","code":"fra"},{"name":"Cajun French","code":"frc"},{"name":"Fordata","code":"frd"},{"name":"Frankish","code":"frk"},{"name":"Middle French (ca. 1400-1600)","code":"frm"},{"name":"Old French (842-ca. 1400)","code":"fro"},{"name":"Arpitan","code":"frp"},{"name":"Francoprovenรงal","code":"frp"},{"name":"Forak","code":"frq"},{"name":"Northern Frisian","code":"frr"},{"name":"Eastern Frisian","code":"frs"},{"name":"Fortsenal","code":"frt"},{"name":"Western Frisian","code":"fry"},{"name":"Finnish Sign Language","code":"fse"},{"name":"French Sign Language","code":"fsl"},{"name":"finlandssvenskt teckensprรฅk","code":"fss"},{"name":"Finland-Swedish Sign Language","code":"fss"},{"name":"suomenruotsalainen viittomakieli","code":"fss"},{"name":"Adamawa Fulfulde","code":"fub"},{"name":"Pulaar","code":"fuc"},{"name":"East Futuna","code":"fud"},{"name":"Borgu Fulfulde","code":"fue"},{"name":"Pular","code":"fuf"},{"name":"Western Niger Fulfulde","code":"fuh"},{"name":"Bagirmi Fulfulde","code":"fui"},{"name":"Ko","code":"fuj"},{"name":"Fulah","code":"ful"},{"name":"Fum","code":"fum"},{"name":"Fulniรด","code":"fun"},{"name":"Central-Eastern Niger Fulfulde","code":"fuq"},{"name":"Friulian","code":"fur"},{"name":"Futuna-Aniwa","code":"fut"},{"name":"Furu","code":"fuu"},{"name":"Nigerian Fulfulde","code":"fuv"},{"name":"Fuyug","code":"fuy"},{"name":"Fur","code":"fvr"},{"name":"Fwรขi","code":"fwa"},{"name":"Fwe","code":"fwe"},{"name":"Ga","code":"gaa"},{"name":"Gabri","code":"gab"},{"name":"Mixed Great Andamanese","code":"gac"},{"name":"Gaddang","code":"gad"},{"name":"Guarequena","code":"gae"},{"name":"Gende","code":"gaf"},{"name":"Gagauz","code":"gag"},{"name":"Alekano","code":"gah"},{"name":"Borei","code":"gai"},{"name":"Gadsup","code":"gaj"},{"name":"Gamkonora","code":"gak"},{"name":"Galolen","code":"gal"},{"name":"Kandawo","code":"gam"},{"name":"Gan Chinese","code":"gan"},{"name":"Gants","code":"gao"},{"name":"Gal","code":"gap"},{"name":"Gata'","code":"gaq"},{"name":"Galeya","code":"gar"},{"name":"Adiwasi Garasia","code":"gas"},{"name":"Kenati","code":"gat"},{"name":"Mudhili Gadaba","code":"gau"},{"name":"Nobonob","code":"gaw"},{"name":"Borana-Arsi-Guji Oromo","code":"gax"},{"name":"Gayo","code":"gay"},{"name":"West Central Oromo","code":"gaz"},{"name":"Gbaya (Central African Republic)","code":"gba"},{"name":"Kaytetye","code":"gbb"},{"name":"Karajarri","code":"gbd"},{"name":"Niksek","code":"gbe"},{"name":"Gaikundi","code":"gbf"},{"name":"Gbanziri","code":"gbg"},{"name":"Defi Gbe","code":"gbh"},{"name":"Galela","code":"gbi"},{"name":"Bodo Gadaba","code":"gbj"},{"name":"Gaddi","code":"gbk"},{"name":"Gamit","code":"gbl"},{"name":"Garhwali","code":"gbm"},{"name":"Mo'da","code":"gbn"},{"name":"Northern Grebo","code":"gbo"},{"name":"Gbaya-Bossangoa","code":"gbp"},{"name":"Gbaya-Bozoum","code":"gbq"},{"name":"Gbagyi","code":"gbr"},{"name":"Gbesi Gbe","code":"gbs"},{"name":"Gagadu","code":"gbu"},{"name":"Gbanu","code":"gbv"},{"name":"Gabi-Gabi","code":"gbw"},{"name":"Eastern Xwla Gbe","code":"gbx"},{"name":"Gbari","code":"gby"},{"name":"Zoroastrian Dari","code":"gbz"},{"name":"Mali","code":"gcc"},{"name":"Ganggalida","code":"gcd"},{"name":"Galice","code":"gce"},{"name":"Guadeloupean Creole French","code":"gcf"},{"name":"Grenadian Creole English","code":"gcl"},{"name":"Gaina","code":"gcn"},{"name":"Guianese Creole French","code":"gcr"},{"name":"Colonia Tovar German","code":"gct"},{"name":"Gade Lohar","code":"gda"},{"name":"Pottangi Ollar Gadaba","code":"gdb"},{"name":"Gugu Badhun","code":"gdc"},{"name":"Gedaged","code":"gdd"},{"name":"Gude","code":"gde"},{"name":"Guduf-Gava","code":"gdf"},{"name":"Ga'dang","code":"gdg"},{"name":"Gadjerawang","code":"gdh"},{"name":"Gajirrabeng","code":"gdh"},{"name":"Gundi","code":"gdi"},{"name":"Gurdjar","code":"gdj"},{"name":"Gadang","code":"gdk"},{"name":"Dirasha","code":"gdl"},{"name":"Laal","code":"gdm"},{"name":"Umanakaina","code":"gdn"},{"name":"Ghodoberi","code":"gdo"},{"name":"Mehri","code":"gdq"},{"name":"Wipi","code":"gdr"},{"name":"Ghandruk Sign Language","code":"gds"},{"name":"Kungardutyi","code":"gdt"},{"name":"Gudu","code":"gdu"},{"name":"Godwari","code":"gdx"},{"name":"Geruma","code":"gea"},{"name":"Kire","code":"geb"},{"name":"Gboloo Grebo","code":"gec"},{"name":"Gade","code":"ged"},{"name":"Gerai","code":"gef"},{"name":"Gengle","code":"geg"},{"name":"Hutterisch","code":"geh"},{"name":"Hutterite German","code":"geh"},{"name":"Gebe","code":"gei"},{"name":"Gen","code":"gej"},{"name":"Ywom","code":"gek"},{"name":"ut-Ma'in","code":"gel"},{"name":"Geme","code":"geq"},{"name":"Geser-Gorom","code":"ges"},{"name":"Eviya","code":"gev"},{"name":"Gera","code":"gew"},{"name":"Garre","code":"gex"},{"name":"Enya","code":"gey"},{"name":"Geez","code":"gez"},{"name":"Patpatar","code":"gfk"},{"name":"Gafat","code":"gft"},{"name":"Gao","code":"gga"},{"name":"Gbii","code":"ggb"},{"name":"Gugadj","code":"ggd"},{"name":"Gurr-goni","code":"gge"},{"name":"Gurgula","code":"ggg"},{"name":"Kungarakany","code":"ggk"},{"name":"Ganglau","code":"ggl"},{"name":"Gitua","code":"ggt"},{"name":"Gagu","code":"ggu"},{"name":"Gban","code":"ggu"},{"name":"Gogodala","code":"ggw"},{"name":"Ghadamรจs","code":"gha"},{"name":"Hiberno-Scottish Gaelic","code":"ghc"},{"name":"Southern Ghale","code":"ghe"},{"name":"Northern Ghale","code":"ghh"},{"name":"Geko Karen","code":"ghk"},{"name":"Ghulfan","code":"ghl"},{"name":"Ghanongga","code":"ghn"},{"name":"Ghomara","code":"gho"},{"name":"Ghera","code":"ghr"},{"name":"Guhu-Samane","code":"ghs"},{"name":"Kuke","code":"ght"},{"name":"Kutang Ghale","code":"ght"},{"name":"Kija","code":"gia"},{"name":"Gibanawa","code":"gib"},{"name":"Gail","code":"gic"},{"name":"Gidar","code":"gid"},{"name":"Gaษ“ogbo","code":"gie"},{"name":"Guรฉbie","code":"gie"},{"name":"Goaria","code":"gig"},{"name":"Githabul","code":"gih"},{"name":"Girirra","code":"gii"},{"name":"Gilbertese","code":"gil"},{"name":"Gimi (Eastern Highlands)","code":"gim"},{"name":"Hinukh","code":"gin"},{"name":"Gimi (West New Britain)","code":"gip"},{"name":"Green Gelao","code":"giq"},{"name":"Red Gelao","code":"gir"},{"name":"North Giziga","code":"gis"},{"name":"Gitxsan","code":"git"},{"name":"Mulao","code":"giu"},{"name":"White Gelao","code":"giw"},{"name":"Gilima","code":"gix"},{"name":"Giyug","code":"giy"},{"name":"South Giziga","code":"giz"},{"name":"Kachi Koli","code":"gjk"},{"name":"Gunditjmara","code":"gjm"},{"name":"Gonja","code":"gjn"},{"name":"Gurindji Kriol","code":"gjr"},{"name":"Gujari","code":"gju"},{"name":"Guya","code":"gka"},{"name":"Magษจ (Madang Province)","code":"gkd"},{"name":"Ndai","code":"gke"},{"name":"Gokana","code":"gkn"},{"name":"Kok-Nar","code":"gko"},{"name":"Guinea Kpelle","code":"gkp"},{"name":"ว‚Ungkue","code":"gku"},{"name":"Gaelic","code":"gla"},{"name":"Scottish Gaelic","code":"gla"},{"name":"Belning","code":"glb"},{"name":"Bon Gula","code":"glc"},{"name":"Nanai","code":"gld"},{"name":"Irish","code":"gle"},{"name":"Galician","code":"glg"},{"name":"Northwest Pashai","code":"glh"},{"name":"Northwest Pashayi","code":"glh"},{"name":"Gula Iro","code":"glj"},{"name":"Gilaki","code":"glk"},{"name":"Garlali","code":"gll"},{"name":"Galambu","code":"glo"},{"name":"Glaro-Twabo","code":"glr"},{"name":"Gula (Chad)","code":"glu"},{"name":"Manx","code":"glv"},{"name":"Glavda","code":"glw"},{"name":"Gule","code":"gly"},{"name":"Gambera","code":"gma"},{"name":"Gula'alaa","code":"gmb"},{"name":"Mรกghdรฌ","code":"gmd"},{"name":"Magษจyi","code":"gmg"},{"name":"Middle High German (ca. 1050-1500)","code":"gmh"},{"name":"Middle Low German","code":"gml"},{"name":"Gbaya-Mbodomo","code":"gmm"},{"name":"Gimnime","code":"gmn"},{"name":"Mirning","code":"gmr"},{"name":"Mirniny","code":"gmr"},{"name":"Gumalu","code":"gmu"},{"name":"Gamo","code":"gmv"},{"name":"Magoma","code":"gmx"},{"name":"Mycenaean Greek","code":"gmy"},{"name":"Mgbolizhia","code":"gmz"},{"name":"Kaansa","code":"gna"},{"name":"Gangte","code":"gnb"},{"name":"Guanche","code":"gnc"},{"name":"Zulgo-Gemzek","code":"gnd"},{"name":"Ganang","code":"gne"},{"name":"Ngangam","code":"gng"},{"name":"Lere","code":"gnh"},{"name":"Gooniyandi","code":"gni"},{"name":"Ngen","code":"gnj"},{"name":"วGana","code":"gnk"},{"name":"Gangulu","code":"gnl"},{"name":"Ginuman","code":"gnm"},{"name":"Gumatj","code":"gnn"},{"name":"Northern Gondi","code":"gno"},{"name":"Gana","code":"gnq"},{"name":"Gureng Gureng","code":"gnr"},{"name":"Guntai","code":"gnt"},{"name":"Gnau","code":"gnu"},{"name":"Western Bolivian Guaranรญ","code":"gnw"},{"name":"Ganzi","code":"gnz"},{"name":"Guro","code":"goa"},{"name":"Playero","code":"gob"},{"name":"Gorakor","code":"goc"},{"name":"Godiรฉ","code":"god"},{"name":"Gongduk","code":"goe"},{"name":"Gofa","code":"gof"},{"name":"Gogo","code":"gog"},{"name":"Old High German (ca. 750-1050)","code":"goh"},{"name":"Gobasi","code":"goi"},{"name":"Gowlan","code":"goj"},{"name":"Gowli","code":"gok"},{"name":"Gola","code":"gol"},{"name":"Goan Konkani","code":"gom"},{"name":"Gondi","code":"gon"},{"name":"Gone Dau","code":"goo"},{"name":"Yeretuar","code":"gop"},{"name":"Gorap","code":"goq"},{"name":"Gorontalo","code":"gor"},{"name":"Gronings","code":"gos"},{"name":"Gothic","code":"got"},{"name":"Gavar","code":"gou"},{"name":"Gorowa","code":"gow"},{"name":"Gobu","code":"gox"},{"name":"Goundo","code":"goy"},{"name":"Gozarkhani","code":"goz"},{"name":"Gupa-Abawa","code":"gpa"},{"name":"Ghanaian Pidgin English","code":"gpe"},{"name":"Taiap","code":"gpn"},{"name":"Ga'anda","code":"gqa"},{"name":"Guiqiong","code":"gqi"},{"name":"Guana (Brazil)","code":"gqn"},{"name":"Gor","code":"gqr"},{"name":"Qau","code":"gqu"},{"name":"Rajput Garasia","code":"gra"},{"name":"Grebo","code":"grb"},{"name":"Ancient Greek (to 1453)","code":"grc"},{"name":"Guruntum-Mbaaru","code":"grd"},{"name":"Madi","code":"grg"},{"name":"Gbiri-Niragu","code":"grh"},{"name":"Ghari","code":"gri"},{"name":"Southern Grebo","code":"grj"},{"name":"Kota Marudu Talantang","code":"grm"},{"name":"Guarani","code":"grn"},{"name":"Groma","code":"gro"},{"name":"Gorovu","code":"grq"},{"name":"Taznatit","code":"grr"},{"name":"Gresi","code":"grs"},{"name":"Garo","code":"grt"},{"name":"Kistane","code":"gru"},{"name":"Central Grebo","code":"grv"},{"name":"Gweda","code":"grw"},{"name":"Guriaso","code":"grx"},{"name":"Barclayville Grebo","code":"gry"},{"name":"Guramalum","code":"grz"},{"name":"Ghanaian Sign Language","code":"gse"},{"name":"German Sign Language","code":"gsg"},{"name":"Gusilay","code":"gsl"},{"name":"Guatemalan Sign Language","code":"gsm"},{"name":"Gusan","code":"gsn"},{"name":"Nema","code":"gsn"},{"name":"Southwest Gbaya","code":"gso"},{"name":"Wasembo","code":"gsp"},{"name":"Greek Sign Language","code":"gss"},{"name":"Alemannic","code":"gsw"},{"name":"Alsatian","code":"gsw"},{"name":"Swiss German","code":"gsw"},{"name":"Guatรณ","code":"gta"},{"name":"Aghu-Tharnggala","code":"gtu"},{"name":"Shiki","code":"gua"},{"name":"Guajajรกra","code":"gub"},{"name":"Wayuu","code":"guc"},{"name":"Yocobouรฉ Dida","code":"gud"},{"name":"Gurindji","code":"gue"},{"name":"Gupapuyngu","code":"guf"},{"name":"Paraguayan Guaranรญ","code":"gug"},{"name":"Guahibo","code":"guh"},{"name":"Eastern Bolivian Guaranรญ","code":"gui"},{"name":"Gujarati","code":"guj"},{"name":"Gumuz","code":"guk"},{"name":"Sea Island Creole English","code":"gul"},{"name":"Guambiano","code":"gum"},{"name":"Mbyรก Guaranรญ","code":"gun"},{"name":"Guayabero","code":"guo"},{"name":"Gunwinggu","code":"gup"},{"name":"Achรฉ","code":"guq"},{"name":"Farefare","code":"gur"},{"name":"Guinean Sign Language","code":"gus"},{"name":"Malรฉku Jaรญka","code":"gut"},{"name":"Yanomamรถ","code":"guu"},{"name":"Gun","code":"guw"},{"name":"Gourmanchรฉma","code":"gux"},{"name":"Ekegusii","code":"guz"},{"name":"Gusii","code":"guz"},{"name":"Guana (Paraguay)","code":"gva"},{"name":"Guanano","code":"gvc"},{"name":"Duwet","code":"gve"},{"name":"Golin","code":"gvf"},{"name":"Guajรก","code":"gvj"},{"name":"Gulay","code":"gvl"},{"name":"Gurmana","code":"gvm"},{"name":"Kuku-Yalanji","code":"gvn"},{"name":"Gaviรฃo Do Jiparanรก","code":"gvo"},{"name":"Parรก Gaviรฃo","code":"gvp"},{"name":"Gurung","code":"gvr"},{"name":"Gumawana","code":"gvs"},{"name":"Guyani","code":"gvy"},{"name":"Mbato","code":"gwa"},{"name":"Gwa","code":"gwb"},{"name":"Gawri","code":"gwc"},{"name":"Kalami","code":"gwc"},{"name":"Gawwada","code":"gwd"},{"name":"Gweno","code":"gwe"},{"name":"Gowro","code":"gwf"},{"name":"Moo","code":"gwg"},{"name":"Gwichสผin","code":"gwi"},{"name":"ว€Gwi","code":"gwj"},{"name":"Awngthim","code":"gwm"},{"name":"Gwandara","code":"gwn"},{"name":"Gwere","code":"gwr"},{"name":"Gawar-Bati","code":"gwt"},{"name":"Guwamu","code":"gwu"},{"name":"Kwini","code":"gww"},{"name":"Gua","code":"gwx"},{"name":"Wรจ Southern","code":"gxx"},{"name":"Northwest Gbaya","code":"gya"},{"name":"Garus","code":"gyb"},{"name":"Kayardild","code":"gyd"},{"name":"Gyem","code":"gye"},{"name":"Gungabula","code":"gyf"},{"name":"Gbayi","code":"gyg"},{"name":"Gyele","code":"gyi"},{"name":"Gayil","code":"gyl"},{"name":"Ngรคbere","code":"gym"},{"name":"Guyanese Creole English","code":"gyn"},{"name":"Gyalsumdo","code":"gyo"},{"name":"Guarayu","code":"gyr"},{"name":"Gunya","code":"gyy"},{"name":"Geji","code":"gyz"},{"name":"Gyaazi","code":"gyz"},{"name":"Ganza","code":"gza"},{"name":"Gazi","code":"gzi"},{"name":"Gane","code":"gzn"},{"name":"Han","code":"haa"},{"name":"Hanoi Sign Language","code":"hab"},{"name":"Gurani","code":"hac"},{"name":"Hatam","code":"had"},{"name":"Eastern Oromo","code":"hae"},{"name":"Haiphong Sign Language","code":"haf"},{"name":"Hanga","code":"hag"},{"name":"Hahon","code":"hah"},{"name":"Haida","code":"hai"},{"name":"Hajong","code":"haj"},{"name":"Hakka Chinese","code":"hak"},{"name":"Halang","code":"hal"},{"name":"Hewa","code":"ham"},{"name":"Hangaza","code":"han"},{"name":"Hakรถ","code":"hao"},{"name":"Hupla","code":"hap"},{"name":"Ha","code":"haq"},{"name":"Harari","code":"har"},{"name":"Haisla","code":"has"},{"name":"Haitian","code":"hat"},{"name":"Haitian Creole","code":"hat"},{"name":"Hausa","code":"hau"},{"name":"Havu","code":"hav"},{"name":"Hawaiian","code":"haw"},{"name":"Southern Haida","code":"hax"},{"name":"Haya","code":"hay"},{"name":"Hazaragi","code":"haz"},{"name":"Hamba","code":"hba"},{"name":"Huba","code":"hbb"},{"name":"Heiban","code":"hbn"},{"name":"Ancient Hebrew","code":"hbo"},{"name":"Serbo-Croatian","code":"hbs"},{"name":"Habu","code":"hbu"},{"name":"Andaman Creole Hindi","code":"hca"},{"name":"Huichol","code":"hch"},{"name":"Northern Haida","code":"hdn"},{"name":"Honduras Sign Language","code":"hds"},{"name":"Hadiyya","code":"hdy"},{"name":"Northern Qiandong Miao","code":"hea"},{"name":"Hebrew","code":"heb"},{"name":"Herdรฉ","code":"hed"},{"name":"Helong","code":"heg"},{"name":"Hehe","code":"heh"},{"name":"Heiltsuk","code":"hei"},{"name":"Hemba","code":"hem"},{"name":"Herero","code":"her"},{"name":"Haiวom","code":"hgm"},{"name":"Haigwai","code":"hgw"},{"name":"Hoia Hoia","code":"hhi"},{"name":"Kerak","code":"hhr"},{"name":"Hoyahoya","code":"hhy"},{"name":"Lamang","code":"hia"},{"name":"Hibito","code":"hib"},{"name":"Hidatsa","code":"hid"},{"name":"Fiji Hindi","code":"hif"},{"name":"Kamwe","code":"hig"},{"name":"Pamosu","code":"hih"},{"name":"Hinduri","code":"hii"},{"name":"Hijuk","code":"hij"},{"name":"Seit-Kaitetu","code":"hik"},{"name":"Hiligaynon","code":"hil"},{"name":"Hindi","code":"hin"},{"name":"Tsoa","code":"hio"},{"name":"Himarimรฃ","code":"hir"},{"name":"Hittite","code":"hit"},{"name":"Hiw","code":"hiw"},{"name":"Hixkaryรกna","code":"hix"},{"name":"Haji","code":"hji"},{"name":"Kahe","code":"hka"},{"name":"Hunde","code":"hke"},{"name":"Khah","code":"hkh"},{"name":"Poguli","code":"hkh"},{"name":"Hunjara-Kaina Ke","code":"hkk"},{"name":"Mel-Khaonh","code":"hkn"},{"name":"Heung Kong Sau Yue","code":"hks"},{"name":"Hong Kong Sign Language","code":"hks"},{"name":"Halia","code":"hla"},{"name":"Halbi","code":"hlb"},{"name":"Halang Doan","code":"hld"},{"name":"Hlersu","code":"hle"},{"name":"Matu Chin","code":"hlt"},{"name":"Hieroglyphic Luwian","code":"hlu"},{"name":"Southern Mashan Hmong","code":"hma"},{"name":"Southern Mashan Miao","code":"hma"},{"name":"Humburi Senni Songhay","code":"hmb"},{"name":"Central Huishui Hmong","code":"hmc"},{"name":"Central Huishui Miao","code":"hmc"},{"name":"A-hmaos","code":"hmd"},{"name":"Da-Hua Miao","code":"hmd"},{"name":"Large Flowery Miao","code":"hmd"},{"name":"Eastern Huishui Hmong","code":"hme"},{"name":"Eastern Huishui Miao","code":"hme"},{"name":"Hmong Don","code":"hmf"},{"name":"Southwestern Guiyang Hmong","code":"hmg"},{"name":"Southwestern Huishui Hmong","code":"hmh"},{"name":"Southwestern Huishui Miao","code":"hmh"},{"name":"Northern Huishui Hmong","code":"hmi"},{"name":"Northern Huishui Miao","code":"hmi"},{"name":"Ge","code":"hmj"},{"name":"Gejia","code":"hmj"},{"name":"Maek","code":"hmk"},{"name":"Luopohe Hmong","code":"hml"},{"name":"Luopohe Miao","code":"hml"},{"name":"Central Mashan Hmong","code":"hmm"},{"name":"Central Mashan Miao","code":"hmm"},{"name":"Hmong","code":"hmn"},{"name":"Mong","code":"hmn"},{"name":"Hiri Motu","code":"hmo"},{"name":"Northern Mashan Hmong","code":"hmp"},{"name":"Northern Mashan Miao","code":"hmp"},{"name":"Eastern Qiandong Miao","code":"hmq"},{"name":"Hmar","code":"hmr"},{"name":"Southern Qiandong Miao","code":"hms"},{"name":"Hamtai","code":"hmt"},{"name":"Hamap","code":"hmu"},{"name":"Hmong Dรด","code":"hmv"},{"name":"Western Mashan Hmong","code":"hmw"},{"name":"Western Mashan Miao","code":"hmw"},{"name":"Southern Guiyang Hmong","code":"hmy"},{"name":"Southern Guiyang Miao","code":"hmy"},{"name":"Hmong Shua","code":"hmz"},{"name":"Sinicized Miao","code":"hmz"},{"name":"Mina (Cameroon)","code":"hna"},{"name":"Southern Hindko","code":"hnd"},{"name":"Chhattisgarhi","code":"hne"},{"name":"Hungu","code":"hng"},{"name":"วAni","code":"hnh"},{"name":"Hani","code":"hni"},{"name":"Hmong Njua","code":"hnj"},{"name":"Mong Leng","code":"hnj"},{"name":"Mong Njua","code":"hnj"},{"name":"Hanunoo","code":"hnn"},{"name":"Northern Hindko","code":"hno"},{"name":"Caribbean Hindustani","code":"hns"},{"name":"Hung","code":"hnu"},{"name":"Hoava","code":"hoa"},{"name":"Mari (Madang Province)","code":"hob"},{"name":"Ho","code":"hoc"},{"name":"Holma","code":"hod"},{"name":"Horom","code":"hoe"},{"name":"Hobyรณt","code":"hoh"},{"name":"Holikachuk","code":"hoi"},{"name":"Hadothi","code":"hoj"},{"name":"Haroti","code":"hoj"},{"name":"Holu","code":"hol"},{"name":"Homa","code":"hom"},{"name":"Holoholo","code":"hoo"},{"name":"Hopi","code":"hop"},{"name":"Horo","code":"hor"},{"name":"Ho Chi Minh City Sign Language","code":"hos"},{"name":"Hote","code":"hot"},{"name":"Malรช","code":"hot"},{"name":"Hovongan","code":"hov"},{"name":"Honi","code":"how"},{"name":"Holiya","code":"hoy"},{"name":"Hozo","code":"hoz"},{"name":"Hpon","code":"hpo"},{"name":"Hawai'i Pidgin Sign Language","code":"hps"},{"name":"Hawai'i Sign Language (HSL)","code":"hps"},{"name":"Hrangkhol","code":"hra"},{"name":"Niwer Mil","code":"hrc"},{"name":"Hre","code":"hre"},{"name":"Haruku","code":"hrk"},{"name":"Horned Miao","code":"hrm"},{"name":"Haroi","code":"hro"},{"name":"Nhirrpi","code":"hrp"},{"name":"Hรฉrtevin","code":"hrt"},{"name":"Hruso","code":"hru"},{"name":"Croatian","code":"hrv"},{"name":"Warwar Feni","code":"hrw"},{"name":"Hunsrik","code":"hrx"},{"name":"Harzani","code":"hrz"},{"name":"Upper Sorbian","code":"hsb"},{"name":"Hungarian Sign Language","code":"hsh"},{"name":"Hausa Sign Language","code":"hsl"},{"name":"Xiang Chinese","code":"hsn"},{"name":"Harsusi","code":"hss"},{"name":"Hoti","code":"hti"},{"name":"Minica Huitoto","code":"hto"},{"name":"Hadza","code":"hts"},{"name":"Hitu","code":"htu"},{"name":"Middle Hittite","code":"htx"},{"name":"Huambisa","code":"hub"},{"name":"ว‚'Amkhoe","code":"huc"},{"name":"ว‚Hua","code":"huc"},{"name":"Huaulu","code":"hud"},{"name":"San Francisco Del Mar Huave","code":"hue"},{"name":"Humene","code":"huf"},{"name":"Huachipaeri","code":"hug"},{"name":"Huilliche","code":"huh"},{"name":"Huli","code":"hui"},{"name":"Northern Guiyang Hmong","code":"huj"},{"name":"Northern Guiyang Miao","code":"huj"},{"name":"Hulung","code":"huk"},{"name":"Hula","code":"hul"},{"name":"Hungana","code":"hum"},{"name":"Hungarian","code":"hun"},{"name":"Hu","code":"huo"},{"name":"Hupa","code":"hup"},{"name":"Tsat","code":"huq"},{"name":"Halkomelem","code":"hur"},{"name":"Huastec","code":"hus"},{"name":"Humla","code":"hut"},{"name":"Murui Huitoto","code":"huu"},{"name":"San Mateo Del Mar Huave","code":"huv"},{"name":"Hukumina","code":"huw"},{"name":"Nรผpode Huitoto","code":"hux"},{"name":"Hulaulรก","code":"huy"},{"name":"Hunzib","code":"huz"},{"name":"Haitian Vodoun Culture Language","code":"hvc"},{"name":"San Dionisio Del Mar Huave","code":"hve"},{"name":"Haveke","code":"hvk"},{"name":"Sabu","code":"hvn"},{"name":"Santa Marรญa Del Mar Huave","code":"hvv"},{"name":"Wanรฉ","code":"hwa"},{"name":"Hawai'i Creole English","code":"hwc"},{"name":"Hawai'i Pidgin","code":"hwc"},{"name":"Hwana","code":"hwo"},{"name":"Hya","code":"hya"},{"name":"Armenian","code":"hye"},{"name":"Western Armenian","code":"hyw"},{"name":"Iaai","code":"iai"},{"name":"Iatmul","code":"ian"},{"name":"Purari","code":"iar"},{"name":"Iban","code":"iba"},{"name":"Ibibio","code":"ibb"},{"name":"Iwaidja","code":"ibd"},{"name":"Akpes","code":"ibe"},{"name":"Ibanag","code":"ibg"},{"name":"Bih","code":"ibh"},{"name":"Ibaloi","code":"ibl"},{"name":"Agoi","code":"ibm"},{"name":"Ibino","code":"ibn"},{"name":"Igbo","code":"ibo"},{"name":"Ibuoro","code":"ibr"},{"name":"Ibu","code":"ibu"},{"name":"Ibani","code":"iby"},{"name":"Ede Ica","code":"ica"},{"name":"Etkywan","code":"ich"},{"name":"Icelandic Sign Language","code":"icl"},{"name":"Islander Creole English","code":"icr"},{"name":"Idakho-Isukha-Tiriki","code":"ida"},{"name":"Luidakho-Luisukha-Lutirichi","code":"ida"},{"name":"Indo-Portuguese","code":"idb"},{"name":"Ajiya","code":"idc"},{"name":"Idon","code":"idc"},{"name":"Ede Idaca","code":"idd"},{"name":"Idere","code":"ide"},{"name":"Idi","code":"idi"},{"name":"Ido","code":"ido"},{"name":"Indri","code":"idr"},{"name":"Idesa","code":"ids"},{"name":"Idatรฉ","code":"idt"},{"name":"Idoma","code":"idu"},{"name":"Amganad Ifugao","code":"ifa"},{"name":"Ayangan Ifugao","code":"ifb"},{"name":"Batad Ifugao","code":"ifb"},{"name":"Ifรจ","code":"ife"},{"name":"Ifo","code":"iff"},{"name":"Tuwali Ifugao","code":"ifk"},{"name":"Teke-Fuumu","code":"ifm"},{"name":"Mayoyao Ifugao","code":"ifu"},{"name":"Keley-I Kallahan","code":"ify"},{"name":"Ebira","code":"igb"},{"name":"Igede","code":"ige"},{"name":"Igana","code":"igg"},{"name":"Igala","code":"igl"},{"name":"Kanggape","code":"igm"},{"name":"Ignaciano","code":"ign"},{"name":"Isebe","code":"igo"},{"name":"Interglossa","code":"igs"},{"name":"Igwe","code":"igw"},{"name":"Iha Based Pidgin","code":"ihb"},{"name":"Ihievbe","code":"ihi"},{"name":"Iha","code":"ihp"},{"name":"Bidhawal","code":"ihw"},{"name":"Nuosu","code":"iii"},{"name":"Sichuan Yi","code":"iii"},{"name":"Thiin","code":"iin"},{"name":"Izon","code":"ijc"},{"name":"Biseni","code":"ije"},{"name":"Ede Ije","code":"ijj"},{"name":"Kalabari","code":"ijn"},{"name":"Southeast Ijo","code":"ijs"},{"name":"Eastern Canadian Inuktitut","code":"ike"},{"name":"Iko","code":"iki"},{"name":"Ika","code":"ikk"},{"name":"Ikulu","code":"ikl"},{"name":"Olulumo-Ikom","code":"iko"},{"name":"Ikpeshi","code":"ikp"},{"name":"Ikaranggal","code":"ikr"},{"name":"Inuit Sign Language","code":"iks"},{"name":"Inuinnaqtun","code":"ikt"},{"name":"Western Canadian Inuktitut","code":"ikt"},{"name":"Inuktitut","code":"iku"},{"name":"Iku-Gora-Ankwa","code":"ikv"},{"name":"Ikwere","code":"ikw"},{"name":"Ik","code":"ikx"},{"name":"Ikizu","code":"ikz"},{"name":"Ile Ape","code":"ila"},{"name":"Ila","code":"ilb"},{"name":"Interlingue","code":"ile"},{"name":"Occidental","code":"ile"},{"name":"Garig-Ilgar","code":"ilg"},{"name":"Ili Turki","code":"ili"},{"name":"Ilongot","code":"ilk"},{"name":"Iranun (Malaysia)","code":"ilm"},{"name":"Iloko","code":"ilo"},{"name":"Iranun (Philippines)","code":"ilp"},{"name":"International Sign","code":"ils"},{"name":"Ili'uun","code":"ilu"},{"name":"Ilue","code":"ilv"},{"name":"Mala Malasar","code":"ima"},{"name":"Anamgura","code":"imi"},{"name":"Miluk","code":"iml"},{"name":"Imonda","code":"imn"},{"name":"Imbongu","code":"imo"},{"name":"Imroing","code":"imr"},{"name":"Marsian","code":"ims"},{"name":"Milyan","code":"imy"},{"name":"Interlingua (International Auxiliary Language Association)","code":"ina"},{"name":"Inga","code":"inb"},{"name":"Indonesian","code":"ind"},{"name":"Degexit'an","code":"ing"},{"name":"Ingush","code":"inh"},{"name":"Jungle Inga","code":"inj"},{"name":"Indonesian Sign Language","code":"inl"},{"name":"Minaean","code":"inm"},{"name":"Isinai","code":"inn"},{"name":"Inoke-Yate","code":"ino"},{"name":"Iรฑapari","code":"inp"},{"name":"Indian Sign Language","code":"ins"},{"name":"Intha","code":"int"},{"name":"Ineseรฑo","code":"inz"},{"name":"Inor","code":"ior"},{"name":"Tuma-Irumu","code":"iou"},{"name":"Iowa-Oto","code":"iow"},{"name":"Ipili","code":"ipi"},{"name":"Inupiaq","code":"ipk"},{"name":"Ipiko","code":"ipo"},{"name":"Iquito","code":"iqu"},{"name":"Ikwo","code":"iqw"},{"name":"Iresim","code":"ire"},{"name":"Irarutu","code":"irh"},{"name":"Irigwe","code":"iri"},{"name":"Rigwe","code":"iri"},{"name":"Iraqw","code":"irk"},{"name":"Irรกntxe","code":"irn"},{"name":"Ir","code":"irr"},{"name":"Irula","code":"iru"},{"name":"Kamberau","code":"irx"},{"name":"Iraya","code":"iry"},{"name":"Isabi","code":"isa"},{"name":"Isconahua","code":"isc"},{"name":"Isnag","code":"isd"},{"name":"Italian Sign Language","code":"ise"},{"name":"Irish Sign Language","code":"isg"},{"name":"Esan","code":"ish"},{"name":"Nkem-Nkum","code":"isi"},{"name":"Ishkashimi","code":"isk"},{"name":"Icelandic","code":"isl"},{"name":"Masimasi","code":"ism"},{"name":"Isanzu","code":"isn"},{"name":"Isoko","code":"iso"},{"name":"Israeli Sign Language","code":"isr"},{"name":"Istriot","code":"ist"},{"name":"Isu (Menchum Division)","code":"isu"},{"name":"Italian","code":"ita"},{"name":"Binongan Itneg","code":"itb"},{"name":"Southern Tidung","code":"itd"},{"name":"Itene","code":"ite"},{"name":"Inlaod Itneg","code":"iti"},{"name":"Judeo-Italian","code":"itk"},{"name":"Itelmen","code":"itl"},{"name":"Itu Mbon Uzo","code":"itm"},{"name":"Itonama","code":"ito"},{"name":"Iteri","code":"itr"},{"name":"Isekiri","code":"its"},{"name":"Maeng Itneg","code":"itt"},{"name":"Itawit","code":"itv"},{"name":"Ito","code":"itw"},{"name":"Itik","code":"itx"},{"name":"Moyadan Itneg","code":"ity"},{"name":"Itzรก","code":"itz"},{"name":"Iu Mien","code":"ium"},{"name":"Ibatan","code":"ivb"},{"name":"Ivatan","code":"ivv"},{"name":"I-Wak","code":"iwk"},{"name":"Iwam","code":"iwm"},{"name":"Iwur","code":"iwo"},{"name":"Sepik Iwam","code":"iws"},{"name":"Ixcatec","code":"ixc"},{"name":"Ixil","code":"ixl"},{"name":"Iyayu","code":"iya"},{"name":"Mesaka","code":"iyo"},{"name":"Yaka (Congo)","code":"iyx"},{"name":"Ingrian","code":"izh"},{"name":"Izere","code":"izr"},{"name":"Izii","code":"izz"},{"name":"Jamamadรญ","code":"jaa"},{"name":"Hyam","code":"jab"},{"name":"Jakalteko","code":"jac"},{"name":"Popti'","code":"jac"},{"name":"Jahanka","code":"jad"},{"name":"Yabem","code":"jae"},{"name":"Jara","code":"jaf"},{"name":"Jah Hut","code":"jah"},{"name":"Zazao","code":"jaj"},{"name":"Jakun","code":"jak"},{"name":"Yalahatan","code":"jal"},{"name":"Jamaican Creole English","code":"jam"},{"name":"Jandai","code":"jan"},{"name":"Yanyuwa","code":"jao"},{"name":"Yaqay","code":"jaq"},{"name":"New Caledonian Javanese","code":"jas"},{"name":"Jakati","code":"jat"},{"name":"Yaur","code":"jau"},{"name":"Javanese","code":"jav"},{"name":"Jambi Malay","code":"jax"},{"name":"Nhangu","code":"jay"},{"name":"Yan-nhangu","code":"jay"},{"name":"Jawe","code":"jaz"},{"name":"Judeo-Berber","code":"jbe"},{"name":"Badjiri","code":"jbi"},{"name":"Arandai","code":"jbj"},{"name":"Barikewa","code":"jbk"},{"name":"Bijim","code":"jbm"},{"name":"Nafusi","code":"jbn"},{"name":"Lojban","code":"jbo"},{"name":"Jofotek-Bromnya","code":"jbr"},{"name":"Jabutรญ","code":"jbt"},{"name":"Jukun Takum","code":"jbu"},{"name":"Yawijibaya","code":"jbw"},{"name":"Jamaican Country Sign Language","code":"jcs"},{"name":"Krymchak","code":"jct"},{"name":"Jad","code":"jda"},{"name":"Jadgali","code":"jdg"},{"name":"Judeo-Tat","code":"jdt"},{"name":"Jebero","code":"jeb"},{"name":"Jerung","code":"jee"},{"name":"Jeh","code":"jeh"},{"name":"Yei","code":"jei"},{"name":"Jeri Kuo","code":"jek"},{"name":"Yelmek","code":"jel"},{"name":"Dza","code":"jen"},{"name":"Jere","code":"jer"},{"name":"Manem","code":"jet"},{"name":"Jonkor Bourmataguil","code":"jeu"},{"name":"Ngbee","code":"jgb"},{"name":"Judeo-Georgian","code":"jge"},{"name":"Gwak","code":"jgk"},{"name":"Ngomba","code":"jgo"},{"name":"Jehai","code":"jhi"},{"name":"Jhankot Sign Language","code":"jhs"},{"name":"Jina","code":"jia"},{"name":"Jibu","code":"jib"},{"name":"Tol","code":"jic"},{"name":"Bu (Kaduna State)","code":"jid"},{"name":"Jilbe","code":"jie"},{"name":"Djingili","code":"jig"},{"name":"Jingulu","code":"jig"},{"name":"Shangzhai","code":"jih"},{"name":"sTodsde","code":"jih"},{"name":"Jiiddu","code":"jii"},{"name":"Jilim","code":"jil"},{"name":"Jimi (Cameroon)","code":"jim"},{"name":"Jiamao","code":"jio"},{"name":"Guanyinqiao","code":"jiq"},{"name":"Lavrung","code":"jiq"},{"name":"Jita","code":"jit"},{"name":"Youle Jinuo","code":"jiu"},{"name":"Shuar","code":"jiv"},{"name":"Buyuan Jinuo","code":"jiy"},{"name":"Jejueo","code":"jje"},{"name":"Bankal","code":"jjr"},{"name":"Kaera","code":"jka"},{"name":"Mobwa Karen","code":"jkm"},{"name":"Kubo","code":"jko"},{"name":"Paku Karen","code":"jkp"},{"name":"Koro (India)","code":"jkr"},{"name":"Amami Koniya Sign Language","code":"jks"},{"name":"Labir","code":"jku"},{"name":"Ngile","code":"jle"},{"name":"Jamaican Sign Language","code":"jls"},{"name":"Dima","code":"jma"},{"name":"Zumbun","code":"jmb"},{"name":"Machame","code":"jmc"},{"name":"Yamdena","code":"jmd"},{"name":"Jimi (Nigeria)","code":"jmi"},{"name":"Jumli","code":"jml"},{"name":"Makuri Naga","code":"jmn"},{"name":"Kamara","code":"jmr"},{"name":"Mashi (Nigeria)","code":"jms"},{"name":"Mouwase","code":"jmw"},{"name":"Western Juxtlahuaca Mixtec","code":"jmx"},{"name":"Jangshung","code":"jna"},{"name":"Jandavra","code":"jnd"},{"name":"Yangman","code":"jng"},{"name":"Janji","code":"jni"},{"name":"Yemsa","code":"jnj"},{"name":"Rawat","code":"jnl"},{"name":"Jaunsari","code":"jns"},{"name":"Joba","code":"job"},{"name":"Wojenaka","code":"jod"},{"name":"Jogi","code":"jog"},{"name":"Jorรก","code":"jor"},{"name":"Jordanian Sign Language","code":"jos"},{"name":"Jowulu","code":"jow"},{"name":"Jewish Palestinian Aramaic","code":"jpa"},{"name":"Japanese","code":"jpn"},{"name":"Judeo-Persian","code":"jpr"},{"name":"Jaqaru","code":"jqr"},{"name":"Jarai","code":"jra"},{"name":"Judeo-Arabic","code":"jrb"},{"name":"Jiru","code":"jrr"},{"name":"Jakattoe","code":"jrt"},{"name":"Japrerรญa","code":"jru"},{"name":"Japanese Sign Language","code":"jsl"},{"name":"Jรบma","code":"jua"},{"name":"Wannu","code":"jub"},{"name":"Jurchen","code":"juc"},{"name":"Worodougou","code":"jud"},{"name":"Hรตne","code":"juh"},{"name":"Ngadjuri","code":"jui"},{"name":"Wapan","code":"juk"},{"name":"Jirel","code":"jul"},{"name":"Jumjum","code":"jum"},{"name":"Juang","code":"jun"},{"name":"Jiba","code":"juo"},{"name":"Hupdรซ","code":"jup"},{"name":"Jurรบna","code":"jur"},{"name":"Jumla Sign Language","code":"jus"},{"name":"Jutish","code":"jut"},{"name":"Ju","code":"juu"},{"name":"Wรฃpha","code":"juw"},{"name":"Juray","code":"juy"},{"name":"Javindo","code":"jvd"},{"name":"Caribbean Javanese","code":"jvn"},{"name":"Jwira-Pepesa","code":"jwi"},{"name":"Jiarong","code":"jya"},{"name":"Judeo-Yemeni Arabic","code":"jye"},{"name":"Jaya","code":"jyy"},{"name":"Karakalpak","code":"kaa"},{"name":"Kara-Kalpak","code":"kaa"},{"name":"Kabyle","code":"kab"},{"name":"Jingpho","code":"kac"},{"name":"Kachin","code":"kac"},{"name":"Adara","code":"kad"},{"name":"Ketangalan","code":"kae"},{"name":"Katso","code":"kaf"},{"name":"Kajaman","code":"kag"},{"name":"Kara (Central African Republic)","code":"kah"},{"name":"Karekare","code":"kai"},{"name":"Jju","code":"kaj"},{"name":"Kalanguya","code":"kak"},{"name":"Kayapa Kallahan","code":"kak"},{"name":"Greenlandic","code":"kal"},{"name":"Kalaallisut","code":"kal"},{"name":"Kamba (Kenya)","code":"kam"},{"name":"Kannada","code":"kan"},{"name":"Xaasongaxango","code":"kao"},{"name":"Bezhta","code":"kap"},{"name":"Capanahua","code":"kaq"},{"name":"Kashmiri","code":"kas"},{"name":"Georgian","code":"kat"},{"name":"Kanuri","code":"kau"},{"name":"Katukรญna","code":"kav"},{"name":"Kawi","code":"kaw"},{"name":"Kao","code":"kax"},{"name":"Kamayurรก","code":"kay"},{"name":"Kazakh","code":"kaz"},{"name":"Kalarko","code":"kba"},{"name":"Kaxuiรขna","code":"kbb"},{"name":"Kadiwรฉu","code":"kbc"},{"name":"Kabardian","code":"kbd"},{"name":"Kanju","code":"kbe"},{"name":"Khamba","code":"kbg"},{"name":"Camsรก","code":"kbh"},{"name":"Kaptiau","code":"kbi"},{"name":"Kari","code":"kbj"},{"name":"Grass Koiari","code":"kbk"},{"name":"Kanembu","code":"kbl"},{"name":"Iwal","code":"kbm"},{"name":"Kare (Central African Republic)","code":"kbn"},{"name":"Keliko","code":"kbo"},{"name":"Kabiyรจ","code":"kbp"},{"name":"Kamano","code":"kbq"},{"name":"Kafa","code":"kbr"},{"name":"Kande","code":"kbs"},{"name":"Abadi","code":"kbt"},{"name":"Kabutra","code":"kbu"},{"name":"Dera (Indonesia)","code":"kbv"},{"name":"Kaiep","code":"kbw"},{"name":"Ap Ma","code":"kbx"},{"name":"Manga Kanuri","code":"kby"},{"name":"Duhwa","code":"kbz"},{"name":"Khanty","code":"kca"},{"name":"Kawacha","code":"kcb"},{"name":"Lubila","code":"kcc"},{"name":"Ngkรขlmpw Kanum","code":"kcd"},{"name":"Kaivi","code":"kce"},{"name":"Ukaan","code":"kcf"},{"name":"Tyap","code":"kcg"},{"name":"Vono","code":"kch"},{"name":"Kamantan","code":"kci"},{"name":"Kobiana","code":"kcj"},{"name":"Kalanga","code":"kck"},{"name":"Kala","code":"kcl"},{"name":"Kela (Papua New Guinea)","code":"kcl"},{"name":"Gula (Central African Republic)","code":"kcm"},{"name":"Nubi","code":"kcn"},{"name":"Kinalakna","code":"kco"},{"name":"Kanga","code":"kcp"},{"name":"Kamo","code":"kcq"},{"name":"Katla","code":"kcr"},{"name":"Koenoem","code":"kcs"},{"name":"Kaian","code":"kct"},{"name":"Kami (Tanzania)","code":"kcu"},{"name":"Kete","code":"kcv"},{"name":"Kabwari","code":"kcw"},{"name":"Kachama-Ganjule","code":"kcx"},{"name":"Korandje","code":"kcy"},{"name":"Konongo","code":"kcz"},{"name":"Worimi","code":"kda"},{"name":"Kutu","code":"kdc"},{"name":"Yankunytjatjara","code":"kdd"},{"name":"Makonde","code":"kde"},{"name":"Mamusi","code":"kdf"},{"name":"Seba","code":"kdg"},{"name":"Tem","code":"kdh"},{"name":"Kumam","code":"kdi"},{"name":"Karamojong","code":"kdj"},{"name":"Kwรฉnyi","code":"kdk"},{"name":"Numรจรจ","code":"kdk"},{"name":"Tsikimba","code":"kdl"},{"name":"Kagoma","code":"kdm"},{"name":"Kunda","code":"kdn"},{"name":"Kaningdon-Nindem","code":"kdp"},{"name":"Koch","code":"kdq"},{"name":"Karaim","code":"kdr"},{"name":"Kuy","code":"kdt"},{"name":"Kadaru","code":"kdu"},{"name":"Koneraw","code":"kdw"},{"name":"Kam","code":"kdx"},{"name":"Keder","code":"kdy"},{"name":"Keijar","code":"kdy"},{"name":"Kwaja","code":"kdz"},{"name":"Kabuverdianu","code":"kea"},{"name":"Kรฉlรฉ","code":"keb"},{"name":"Keiga","code":"kec"},{"name":"Kerewe","code":"ked"},{"name":"Eastern Keres","code":"kee"},{"name":"Kpessi","code":"kef"},{"name":"Tese","code":"keg"},{"name":"Keak","code":"keh"},{"name":"Kei","code":"kei"},{"name":"Kadar","code":"kej"},{"name":"Kekchรญ","code":"kek"},{"name":"Kela (Democratic Republic of Congo)","code":"kel"},{"name":"Kemak","code":"kem"},{"name":"Kenyang","code":"ken"},{"name":"Kakwa","code":"keo"},{"name":"Kaikadi","code":"kep"},{"name":"Kamar","code":"keq"},{"name":"Kera","code":"ker"},{"name":"Kugbo","code":"kes"},{"name":"Ket","code":"ket"},{"name":"Akebu","code":"keu"},{"name":"Kanikkaran","code":"kev"},{"name":"West Kewa","code":"kew"},{"name":"Kukna","code":"kex"},{"name":"Kupia","code":"key"},{"name":"Kukele","code":"kez"},{"name":"Kodava","code":"kfa"},{"name":"Northwestern Kolami","code":"kfb"},{"name":"Konda-Dora","code":"kfc"},{"name":"Korra Koraga","code":"kfd"},{"name":"Kota (India)","code":"kfe"},{"name":"Koya","code":"kff"},{"name":"Kudiya","code":"kfg"},{"name":"Kurichiya","code":"kfh"},{"name":"Kannada Kurumba","code":"kfi"},{"name":"Kemiehua","code":"kfj"},{"name":"Kinnauri","code":"kfk"},{"name":"Kung","code":"kfl"},{"name":"Khunsari","code":"kfm"},{"name":"Kuk","code":"kfn"},{"name":"Koro (Cรดte d'Ivoire)","code":"kfo"},{"name":"Korwa","code":"kfp"},{"name":"Korku","code":"kfq"},{"name":"Kachhi","code":"kfr"},{"name":"Kutchi","code":"kfr"},{"name":"Bilaspuri","code":"kfs"},{"name":"Kanjari","code":"kft"},{"name":"Katkari","code":"kfu"},{"name":"Kurmukar","code":"kfv"},{"name":"Kharam Naga","code":"kfw"},{"name":"Kullu Pahari","code":"kfx"},{"name":"Kumaoni","code":"kfy"},{"name":"Koromfรฉ","code":"kfz"},{"name":"Koyaga","code":"kga"},{"name":"Kawe","code":"kgb"},{"name":"Komering","code":"kge"},{"name":"Kube","code":"kgf"},{"name":"Kusunda","code":"kgg"},{"name":"Selangor Sign Language","code":"kgi"},{"name":"Gamale Kham","code":"kgj"},{"name":"Kaiwรก","code":"kgk"},{"name":"Kunggari","code":"kgl"},{"name":"Karipรบna","code":"kgm"},{"name":"Karingani","code":"kgn"},{"name":"Krongo","code":"kgo"},{"name":"Kaingang","code":"kgp"},{"name":"Kamoro","code":"kgq"},{"name":"Abun","code":"kgr"},{"name":"Kumbainggar","code":"kgs"},{"name":"Somyev","code":"kgt"},{"name":"Kobol","code":"kgu"},{"name":"Karas","code":"kgv"},{"name":"Karon Dori","code":"kgw"},{"name":"Kamaru","code":"kgx"},{"name":"Kyerung","code":"kgy"},{"name":"Khasi","code":"kha"},{"name":"Lรผ","code":"khb"},{"name":"Tukang Besi North","code":"khc"},{"name":"Bรคdi Kanum","code":"khd"},{"name":"Korowai","code":"khe"},{"name":"Khuen","code":"khf"},{"name":"Khams Tibetan","code":"khg"},{"name":"Kehu","code":"khh"},{"name":"Kuturmi","code":"khj"},{"name":"Halh Mongolian","code":"khk"},{"name":"Lusi","code":"khl"},{"name":"Khmer","code":"khm"},{"name":"Central Khmer","code":"khm"},{"name":"Khandesi","code":"khn"},{"name":"Khotanese","code":"kho"},{"name":"Sakan","code":"kho"},{"name":"Kapauri","code":"khp"},{"name":"Kapori","code":"khp"},{"name":"Koyra Chiini Songhay","code":"khq"},{"name":"Kharia","code":"khr"},{"name":"Kasua","code":"khs"},{"name":"Khamti","code":"kht"},{"name":"Nkhumbi","code":"khu"},{"name":"Khvarshi","code":"khv"},{"name":"Khowar","code":"khw"},{"name":"Kanu","code":"khx"},{"name":"Kele (Democratic Republic of Congo)","code":"khy"},{"name":"Keapara","code":"khz"},{"name":"Kim","code":"kia"},{"name":"Koalib","code":"kib"},{"name":"Kickapoo","code":"kic"},{"name":"Koshin","code":"kid"},{"name":"Kibet","code":"kie"},{"name":"Eastern Parbate Kham","code":"kif"},{"name":"Kimaama","code":"kig"},{"name":"Kimaghima","code":"kig"},{"name":"Kilmeri","code":"kih"},{"name":"Kitsai","code":"kii"},{"name":"Kilivila","code":"kij"},{"name":"Gikuyu","code":"kik"},{"name":"Kikuyu","code":"kik"},{"name":"Kariya","code":"kil"},{"name":"Karagas","code":"kim"},{"name":"Kinyarwanda","code":"kin"},{"name":"Kiowa","code":"kio"},{"name":"Sheshi Kham","code":"kip"},{"name":"Kosadle","code":"kiq"},{"name":"Kosare","code":"kiq"},{"name":"Kirghiz","code":"kir"},{"name":"Kyrgyz","code":"kir"},{"name":"Kis","code":"kis"},{"name":"Agob","code":"kit"},{"name":"Kirmanjki (individual language)","code":"kiu"},{"name":"Kimbu","code":"kiv"},{"name":"Northeast Kiwai","code":"kiw"},{"name":"Khiamniungan Naga","code":"kix"},{"name":"Kirikiri","code":"kiy"},{"name":"Kisi","code":"kiz"},{"name":"Mlap","code":"kja"},{"name":"Kanjobal","code":"kjb"},{"name":"Q'anjob'al","code":"kjb"},{"name":"Coastal Konjo","code":"kjc"},{"name":"Southern Kiwai","code":"kjd"},{"name":"Kisar","code":"kje"},{"name":"Khmu","code":"kjg"},{"name":"Khakas","code":"kjh"},{"name":"Zabana","code":"kji"},{"name":"Khinalugh","code":"kjj"},{"name":"Highland Konjo","code":"kjk"},{"name":"Western Parbate Kham","code":"kjl"},{"name":"Khรกng","code":"kjm"},{"name":"Kunjen","code":"kjn"},{"name":"Harijan Kinnauri","code":"kjo"},{"name":"Pwo Eastern Karen","code":"kjp"},{"name":"Western Keres","code":"kjq"},{"name":"Kurudu","code":"kjr"},{"name":"East Kewa","code":"kjs"},{"name":"Phrae Pwo Karen","code":"kjt"},{"name":"Kashaya","code":"kju"},{"name":"Kaikavian Literary Language","code":"kjv"},{"name":"Ramopa","code":"kjx"},{"name":"Erave","code":"kjy"},{"name":"Bumthangkha","code":"kjz"},{"name":"Kakanda","code":"kka"},{"name":"Kwerisa","code":"kkb"},{"name":"Odoodee","code":"kkc"},{"name":"Kinuku","code":"kkd"},{"name":"Kakabe","code":"kke"},{"name":"Kalaktang Monpa","code":"kkf"},{"name":"Mabaka Valley Kalinga","code":"kkg"},{"name":"Khรผn","code":"kkh"},{"name":"Kagulu","code":"kki"},{"name":"Kako","code":"kkj"},{"name":"Kokota","code":"kkk"},{"name":"Kosarek Yale","code":"kkl"},{"name":"Kiong","code":"kkm"},{"name":"Kon Keu","code":"kkn"},{"name":"Karko","code":"kko"},{"name":"Gugubera","code":"kkp"},{"name":"Koko-Bera","code":"kkp"},{"name":"Kaeku","code":"kkq"},{"name":"Kir-Balar","code":"kkr"},{"name":"Giiwo","code":"kks"},{"name":"Koi","code":"kkt"},{"name":"Tumi","code":"kku"},{"name":"Kangean","code":"kkv"},{"name":"Teke-Kukuya","code":"kkw"},{"name":"Kohin","code":"kkx"},{"name":"Guguyimidjir","code":"kky"},{"name":"Guugu Yimidhirr","code":"kky"},{"name":"Kaska","code":"kkz"},{"name":"Klamath-Modoc","code":"kla"},{"name":"Kiliwa","code":"klb"},{"name":"Kolbila","code":"klc"},{"name":"Gamilaraay","code":"kld"},{"name":"Kulung (Nepal)","code":"kle"},{"name":"Kendeje","code":"klf"},{"name":"Tagakaulo","code":"klg"},{"name":"Weliki","code":"klh"},{"name":"Kalumpang","code":"kli"},{"name":"Khalaj","code":"klj"},{"name":"Kono (Nigeria)","code":"klk"},{"name":"Kagan Kalagan","code":"kll"},{"name":"Migum","code":"klm"},{"name":"Kalenjin","code":"kln"},{"name":"Kapya","code":"klo"},{"name":"Kamasa","code":"klp"},{"name":"Rumu","code":"klq"},{"name":"Khaling","code":"klr"},{"name":"Kalasha","code":"kls"},{"name":"Nukna","code":"klt"},{"name":"Klao","code":"klu"},{"name":"Maskelynes","code":"klv"},{"name":"Lindu","code":"klw"},{"name":"Tado","code":"klw"},{"name":"Koluwawa","code":"klx"},{"name":"Kalao","code":"kly"},{"name":"Kabola","code":"klz"},{"name":"Konni","code":"kma"},{"name":"Kimbundu","code":"kmb"},{"name":"Southern Dong","code":"kmc"},{"name":"Majukayang Kalinga","code":"kmd"},{"name":"Bakole","code":"kme"},{"name":"Kare (Papua New Guinea)","code":"kmf"},{"name":"Kรขte","code":"kmg"},{"name":"Kalam","code":"kmh"},{"name":"Kami (Nigeria)","code":"kmi"},{"name":"Kumarbhag Paharia","code":"kmj"},{"name":"Limos Kalinga","code":"kmk"},{"name":"Tanudan Kalinga","code":"kml"},{"name":"Kom (India)","code":"kmm"},{"name":"Awtuw","code":"kmn"},{"name":"Kwoma","code":"kmo"},{"name":"Gimme","code":"kmp"},{"name":"Kwama","code":"kmq"},{"name":"Northern Kurdish","code":"kmr"},{"name":"Kamasau","code":"kms"},{"name":"Kemtuik","code":"kmt"},{"name":"Kanite","code":"kmu"},{"name":"Karipรบna Creole French","code":"kmv"},{"name":"Komo (Democratic Republic of Congo)","code":"kmw"},{"name":"Waboda","code":"kmx"},{"name":"Koma","code":"kmy"},{"name":"Khorasani Turkish","code":"kmz"},{"name":"Dera (Nigeria)","code":"kna"},{"name":"Lubuagan Kalinga","code":"knb"},{"name":"Central Kanuri","code":"knc"},{"name":"Konda","code":"knd"},{"name":"Kankanaey","code":"kne"},{"name":"Mankanya","code":"knf"},{"name":"Koongo","code":"kng"},{"name":"Kanufi","code":"kni"},{"name":"Western Kanjobal","code":"knj"},{"name":"Kuranko","code":"knk"},{"name":"Keninjal","code":"knl"},{"name":"Kanamarรญ","code":"knm"},{"name":"Konkani (individual language)","code":"knn"},{"name":"Kono (Sierra Leone)","code":"kno"},{"name":"Kwanja","code":"knp"},{"name":"Kintaq","code":"knq"},{"name":"Kaningra","code":"knr"},{"name":"Kensiu","code":"kns"},{"name":"Panoan Katukรญna","code":"knt"},{"name":"Kono (Guinea)","code":"knu"},{"name":"Tabo","code":"knv"},{"name":"Kung-Ekoka","code":"knw"},{"name":"Kendayan","code":"knx"},{"name":"Salako","code":"knx"},{"name":"Kanyok","code":"kny"},{"name":"Kalamsรฉ","code":"knz"},{"name":"Konomala","code":"koa"},{"name":"Kpati","code":"koc"},{"name":"Kodi","code":"kod"},{"name":"Kacipo-Bale Suri","code":"koe"},{"name":"Kubi","code":"kof"},{"name":"Cogui","code":"kog"},{"name":"Kogi","code":"kog"},{"name":"Koyo","code":"koh"},{"name":"Komi-Permyak","code":"koi"},{"name":"Konkani (macrolanguage)","code":"kok"},{"name":"Kol (Papua New Guinea)","code":"kol"},{"name":"Komi","code":"kom"},{"name":"Kongo","code":"kon"},{"name":"Konzo","code":"koo"},{"name":"Waube","code":"kop"},{"name":"Kota (Gabon)","code":"koq"},{"name":"Korean","code":"kor"},{"name":"Kosraean","code":"kos"},{"name":"Lagwan","code":"kot"},{"name":"Koke","code":"kou"},{"name":"Kudu-Camo","code":"kov"},{"name":"Kugama","code":"kow"},{"name":"Koyukon","code":"koy"},{"name":"Korak","code":"koz"},{"name":"Kutto","code":"kpa"},{"name":"Mullu Kurumba","code":"kpb"},{"name":"Curripaco","code":"kpc"},{"name":"Koba","code":"kpd"},{"name":"Kpelle","code":"kpe"},{"name":"Komba","code":"kpf"},{"name":"Kapingamarangi","code":"kpg"},{"name":"Kplang","code":"kph"},{"name":"Kofei","code":"kpi"},{"name":"Karajรก","code":"kpj"},{"name":"Kpan","code":"kpk"},{"name":"Kpala","code":"kpl"},{"name":"Koho","code":"kpm"},{"name":"Kepkiriwรกt","code":"kpn"},{"name":"Ikposo","code":"kpo"},{"name":"Korupun-Sela","code":"kpq"},{"name":"Korafe-Yegha","code":"kpr"},{"name":"Tehit","code":"kps"},{"name":"Karata","code":"kpt"},{"name":"Kafoa","code":"kpu"},{"name":"Komi-Zyrian","code":"kpv"},{"name":"Kobon","code":"kpw"},{"name":"Mountain Koiali","code":"kpx"},{"name":"Koryak","code":"kpy"},{"name":"Kupsabiny","code":"kpz"},{"name":"Mum","code":"kqa"},{"name":"Kovai","code":"kqb"},{"name":"Doromu-Koki","code":"kqc"},{"name":"Koy Sanjaq Surat","code":"kqd"},{"name":"Kalagan","code":"kqe"},{"name":"Kakabai","code":"kqf"},{"name":"Khe","code":"kqg"},{"name":"Kisankasa","code":"kqh"},{"name":"Koitabu","code":"kqi"},{"name":"Koromira","code":"kqj"},{"name":"Kotafon Gbe","code":"kqk"},{"name":"Kyenele","code":"kql"},{"name":"Khisa","code":"kqm"},{"name":"Kaonde","code":"kqn"},{"name":"Eastern Krahn","code":"kqo"},{"name":"Kimrรฉ","code":"kqp"},{"name":"Krenak","code":"kqq"},{"name":"Kimaragang","code":"kqr"},{"name":"Northern Kissi","code":"kqs"},{"name":"Klias River Kadazan","code":"kqt"},{"name":"Seroa","code":"kqu"},{"name":"Okolod","code":"kqv"},{"name":"Kandas","code":"kqw"},{"name":"Mser","code":"kqx"},{"name":"Koorete","code":"kqy"},{"name":"Korana","code":"kqz"},{"name":"Kumhali","code":"kra"},{"name":"Karkin","code":"krb"},{"name":"Karachay-Balkar","code":"krc"},{"name":"Kairui-Midiki","code":"krd"},{"name":"Panarรก","code":"kre"},{"name":"Koro (Vanuatu)","code":"krf"},{"name":"Kurama","code":"krh"},{"name":"Krio","code":"kri"},{"name":"Kinaray-A","code":"krj"},{"name":"Kerek","code":"krk"},{"name":"Karelian","code":"krl"},{"name":"Sapo","code":"krn"},{"name":"Korop","code":"krp"},{"name":"Krung","code":"krr"},{"name":"Gbaya (Sudan)","code":"krs"},{"name":"Tumari Kanuri","code":"krt"},{"name":"Kurukh","code":"kru"},{"name":"Kavet","code":"krv"},{"name":"Western Krahn","code":"krw"},{"name":"Karon","code":"krx"},{"name":"Kryts","code":"kry"},{"name":"Sota Kanum","code":"krz"},{"name":"Shuwa-Zamani","code":"ksa"},{"name":"Shambala","code":"ksb"},{"name":"Southern Kalinga","code":"ksc"},{"name":"Kuanua","code":"ksd"},{"name":"Kuni","code":"kse"},{"name":"Bafia","code":"ksf"},{"name":"Kusaghe","code":"ksg"},{"name":"Kรถlsch","code":"ksh"},{"name":"I'saka","code":"ksi"},{"name":"Krisa","code":"ksi"},{"name":"Uare","code":"ksj"},{"name":"Kansa","code":"ksk"},{"name":"Kumalu","code":"ksl"},{"name":"Kumba","code":"ksm"},{"name":"Kasiguranin","code":"ksn"},{"name":"Kofa","code":"kso"},{"name":"Kaba","code":"ksp"},{"name":"Kwaami","code":"ksq"},{"name":"Borong","code":"ksr"},{"name":"Southern Kisi","code":"kss"},{"name":"Winyรฉ","code":"kst"},{"name":"Khamyang","code":"ksu"},{"name":"Kusu","code":"ksv"},{"name":"S'gaw Karen","code":"ksw"},{"name":"Kedang","code":"ksx"},{"name":"Kharia Thar","code":"ksy"},{"name":"Kodaku","code":"ksz"},{"name":"Katua","code":"kta"},{"name":"Kambaata","code":"ktb"},{"name":"Kholok","code":"ktc"},{"name":"Kokata","code":"ktd"},{"name":"Kukatha","code":"ktd"},{"name":"Nubri","code":"kte"},{"name":"Kwami","code":"ktf"},{"name":"Kalkutung","code":"ktg"},{"name":"Karanga","code":"kth"},{"name":"North Muyu","code":"kti"},{"name":"Plapo Krumen","code":"ktj"},{"name":"Kaniet","code":"ktk"},{"name":"Koroshi","code":"ktl"},{"name":"Kurti","code":"ktm"},{"name":"Karitiรขna","code":"ktn"},{"name":"Kuot","code":"kto"},{"name":"Kaduo","code":"ktp"},{"name":"Katabaga","code":"ktq"},{"name":"South Muyu","code":"kts"},{"name":"Ketum","code":"ktt"},{"name":"Kituba (Democratic Republic of Congo)","code":"ktu"},{"name":"Eastern Katu","code":"ktv"},{"name":"Kato","code":"ktw"},{"name":"Kaxararรญ","code":"ktx"},{"name":"Kango (Bas-Uรฉlรฉ District)","code":"kty"},{"name":"Juว€สผhoan","code":"ktz"},{"name":"Juว€สผhoansi","code":"ktz"},{"name":"Kuanyama","code":"kua"},{"name":"Kwanyama","code":"kua"},{"name":"Kutep","code":"kub"},{"name":"Kwinsu","code":"kuc"},{"name":"'Auhelawa","code":"kud"},{"name":"Kuman (Papua New Guinea)","code":"kue"},{"name":"Western Katu","code":"kuf"},{"name":"Kupa","code":"kug"},{"name":"Kushi","code":"kuh"},{"name":"Kalapalo","code":"kui"},{"name":"Kuikรบro-Kalapรกlo","code":"kui"},{"name":"Kuria","code":"kuj"},{"name":"Kepo'","code":"kuk"},{"name":"Kulere","code":"kul"},{"name":"Kumyk","code":"kum"},{"name":"Kunama","code":"kun"},{"name":"Kumukio","code":"kuo"},{"name":"Kunimaipa","code":"kup"},{"name":"Karipuna","code":"kuq"},{"name":"Kurdish","code":"kur"},{"name":"Kusaal","code":"kus"},{"name":"Kutenai","code":"kut"},{"name":"Upper Kuskokwim","code":"kuu"},{"name":"Kur","code":"kuv"},{"name":"Kpagua","code":"kuw"},{"name":"Kukatja","code":"kux"},{"name":"Kuuku-Ya'u","code":"kuy"},{"name":"Kunza","code":"kuz"},{"name":"Bagvalal","code":"kva"},{"name":"Kubu","code":"kvb"},{"name":"Kove","code":"kvc"},{"name":"Kui (Indonesia)","code":"kvd"},{"name":"Kalabakan","code":"kve"},{"name":"Kabalai","code":"kvf"},{"name":"Kuni-Boazi","code":"kvg"},{"name":"Komodo","code":"kvh"},{"name":"Kwang","code":"kvi"},{"name":"Psikye","code":"kvj"},{"name":"Korean Sign Language","code":"kvk"},{"name":"Kayaw","code":"kvl"},{"name":"Kendem","code":"kvm"},{"name":"Border Kuna","code":"kvn"},{"name":"Dobel","code":"kvo"},{"name":"Kompane","code":"kvp"},{"name":"Geba Karen","code":"kvq"},{"name":"Kerinci","code":"kvr"},{"name":"Lahta","code":"kvt"},{"name":"Lahta Karen","code":"kvt"},{"name":"Yinbaw Karen","code":"kvu"},{"name":"Kola","code":"kvv"},{"name":"Wersing","code":"kvw"},{"name":"Parkari Koli","code":"kvx"},{"name":"Yintale","code":"kvy"},{"name":"Yintale Karen","code":"kvy"},{"name":"Tsakwambo","code":"kvz"},{"name":"Tsaukambo","code":"kvz"},{"name":"Dรขw","code":"kwa"},{"name":"Kwa","code":"kwb"},{"name":"Likwala","code":"kwc"},{"name":"Kwaio","code":"kwd"},{"name":"Kwerba","code":"kwe"},{"name":"Kwara'ae","code":"kwf"},{"name":"Sara Kaba Deme","code":"kwg"},{"name":"Kowiai","code":"kwh"},{"name":"Awa-Cuaiquer","code":"kwi"},{"name":"Kwanga","code":"kwj"},{"name":"Kwakiutl","code":"kwk"},{"name":"Kofyar","code":"kwl"},{"name":"Kwambi","code":"kwm"},{"name":"Kwangali","code":"kwn"},{"name":"Kwomtari","code":"kwo"},{"name":"Kodia","code":"kwp"},{"name":"Kwer","code":"kwr"},{"name":"Kwese","code":"kws"},{"name":"Kwesten","code":"kwt"},{"name":"Kwakum","code":"kwu"},{"name":"Sara Kaba Nรกร ","code":"kwv"},{"name":"Kwinti","code":"kww"},{"name":"Khirwar","code":"kwx"},{"name":"San Salvador Kongo","code":"kwy"},{"name":"Kwadi","code":"kwz"},{"name":"Kairiru","code":"kxa"},{"name":"Krobu","code":"kxb"},{"name":"Khonso","code":"kxc"},{"name":"Konso","code":"kxc"},{"name":"Brunei","code":"kxd"},{"name":"Manumanaw","code":"kxf"},{"name":"Manumanaw Karen","code":"kxf"},{"name":"Karo (Ethiopia)","code":"kxh"},{"name":"Keningau Murut","code":"kxi"},{"name":"Kulfa","code":"kxj"},{"name":"Zayein Karen","code":"kxk"},{"name":"Northern Khmer","code":"kxm"},{"name":"Kanowit-Tanjong Melanau","code":"kxn"},{"name":"Kanoรฉ","code":"kxo"},{"name":"Wadiyara Koli","code":"kxp"},{"name":"Smรคrky Kanum","code":"kxq"},{"name":"Koro (Papua New Guinea)","code":"kxr"},{"name":"Kangjia","code":"kxs"},{"name":"Koiwat","code":"kxt"},{"name":"Kuvi","code":"kxv"},{"name":"Konai","code":"kxw"},{"name":"Likuba","code":"kxx"},{"name":"Kayong","code":"kxy"},{"name":"Kerewo","code":"kxz"},{"name":"Kwaya","code":"kya"},{"name":"Butbut Kalinga","code":"kyb"},{"name":"Kyaka","code":"kyc"},{"name":"Karey","code":"kyd"},{"name":"Krache","code":"kye"},{"name":"Kouya","code":"kyf"},{"name":"Keyagana","code":"kyg"},{"name":"Karok","code":"kyh"},{"name":"Kiput","code":"kyi"},{"name":"Karao","code":"kyj"},{"name":"Kamayo","code":"kyk"},{"name":"Kalapuya","code":"kyl"},{"name":"Kpatili","code":"kym"},{"name":"Northern Binukidnon","code":"kyn"},{"name":"Kelon","code":"kyo"},{"name":"Kang","code":"kyp"},{"name":"Kenga","code":"kyq"},{"name":"Kuruรกya","code":"kyr"},{"name":"Baram Kayan","code":"kys"},{"name":"Kayagar","code":"kyt"},{"name":"Western Kayah","code":"kyu"},{"name":"Kayort","code":"kyv"},{"name":"Kudmali","code":"kyw"},{"name":"Rapoisi","code":"kyx"},{"name":"Kambaira","code":"kyy"},{"name":"Kayabรญ","code":"kyz"},{"name":"Western Karaboro","code":"kza"},{"name":"Kaibobo","code":"kzb"},{"name":"Bondoukou Kulango","code":"kzc"},{"name":"Kadai","code":"kzd"},{"name":"Kosena","code":"kze"},{"name":"Da'a Kaili","code":"kzf"},{"name":"Kikai","code":"kzg"},{"name":"Kelabit","code":"kzi"},{"name":"Kazukuru","code":"kzk"},{"name":"Kayeli","code":"kzl"},{"name":"Kais","code":"kzm"},{"name":"Kokola","code":"kzn"},{"name":"Kaningi","code":"kzo"},{"name":"Kaidipang","code":"kzp"},{"name":"Kaike","code":"kzq"},{"name":"Karang","code":"kzr"},{"name":"Sugut Dusun","code":"kzs"},{"name":"Kayupulau","code":"kzu"},{"name":"Komyandaret","code":"kzv"},{"name":"Karirรญ-Xocรณ","code":"kzw"},{"name":"Kamarian","code":"kzx"},{"name":"Kango (Tshopo District)","code":"kzy"},{"name":"Kalabra","code":"kzz"},{"name":"Southern Subanen","code":"laa"},{"name":"Linear A","code":"lab"},{"name":"Lacandon","code":"lac"},{"name":"Ladino","code":"lad"},{"name":"Pattani","code":"lae"},{"name":"Lafofa","code":"laf"},{"name":"Langi","code":"lag"},{"name":"Lahnda","code":"lah"},{"name":"Lambya","code":"lai"},{"name":"Lango (Uganda)","code":"laj"},{"name":"Laka (Nigeria)","code":"lak"},{"name":"Lalia","code":"lal"},{"name":"Lamba","code":"lam"},{"name":"Laru","code":"lan"},{"name":"Lao","code":"lao"},{"name":"Laka (Chad)","code":"lap"},{"name":"Qabiao","code":"laq"},{"name":"Larteh","code":"lar"},{"name":"Lama (Togo)","code":"las"},{"name":"Latin","code":"lat"},{"name":"Laba","code":"lau"},{"name":"Latvian","code":"lav"},{"name":"Lauje","code":"law"},{"name":"Tiwa","code":"lax"},{"name":"Lama Bai","code":"lay"},{"name":"Aribwatsa","code":"laz"},{"name":"Label","code":"lbb"},{"name":"Lakkia","code":"lbc"},{"name":"Lak","code":"lbe"},{"name":"Tinani","code":"lbf"},{"name":"Laopang","code":"lbg"},{"name":"La'bi","code":"lbi"},{"name":"Ladakhi","code":"lbj"},{"name":"Central Bontok","code":"lbk"},{"name":"Libon Bikol","code":"lbl"},{"name":"Lodhi","code":"lbm"},{"name":"Rmeet","code":"lbn"},{"name":"Laven","code":"lbo"},{"name":"Wampar","code":"lbq"},{"name":"Lohorung","code":"lbr"},{"name":"Libyan Sign Language","code":"lbs"},{"name":"Lachi","code":"lbt"},{"name":"Labu","code":"lbu"},{"name":"Lavatbura-Lamusong","code":"lbv"},{"name":"Tolaki","code":"lbw"},{"name":"Lawangan","code":"lbx"},{"name":"Lamalama","code":"lby"},{"name":"Lamu-Lamu","code":"lby"},{"name":"Lardil","code":"lbz"},{"name":"Legenyem","code":"lcc"},{"name":"Lola","code":"lcd"},{"name":"Loncong","code":"lce"},{"name":"Sekak","code":"lce"},{"name":"Lubu","code":"lcf"},{"name":"Luchazi","code":"lch"},{"name":"Lisela","code":"lcl"},{"name":"Tungag","code":"lcm"},{"name":"Western Lawa","code":"lcp"},{"name":"Luhu","code":"lcq"},{"name":"Lisabata-Nuniali","code":"lcs"},{"name":"Kla-Dan","code":"lda"},{"name":"Duฬƒya","code":"ldb"},{"name":"Luri","code":"ldd"},{"name":"Lenyima","code":"ldg"},{"name":"Lamja-Dengsa-Tola","code":"ldh"},{"name":"Laari","code":"ldi"},{"name":"Lemoro","code":"ldj"},{"name":"Leelau","code":"ldk"},{"name":"Kaan","code":"ldl"},{"name":"Landoma","code":"ldm"},{"name":"Lรกadan","code":"ldn"},{"name":"Loo","code":"ldo"},{"name":"Tso","code":"ldp"},{"name":"Lufu","code":"ldq"},{"name":"Lega-Shabunda","code":"lea"},{"name":"Lala-Bisa","code":"leb"},{"name":"Leco","code":"lec"},{"name":"Lendu","code":"led"},{"name":"Lyรฉlรฉ","code":"lee"},{"name":"Lelemi","code":"lef"},{"name":"Lenje","code":"leh"},{"name":"Lemio","code":"lei"},{"name":"Lengola","code":"lej"},{"name":"Leipon","code":"lek"},{"name":"Lele (Democratic Republic of Congo)","code":"lel"},{"name":"Nomaande","code":"lem"},{"name":"Lenca","code":"len"},{"name":"Leti (Cameroon)","code":"leo"},{"name":"Lepcha","code":"lep"},{"name":"Lembena","code":"leq"},{"name":"Lenkau","code":"ler"},{"name":"Lese","code":"les"},{"name":"Amio-Gelimi","code":"let"},{"name":"Lesing-Gelimi","code":"let"},{"name":"Kara (Papua New Guinea)","code":"leu"},{"name":"Lamma","code":"lev"},{"name":"Ledo Kaili","code":"lew"},{"name":"Luang","code":"lex"},{"name":"Lemolang","code":"ley"},{"name":"Lezghian","code":"lez"},{"name":"Lefa","code":"lfa"},{"name":"Lingua Franca Nova","code":"lfn"},{"name":"Lungga","code":"lga"},{"name":"Laghu","code":"lgb"},{"name":"Lugbara","code":"lgg"},{"name":"Laghuu","code":"lgh"},{"name":"Lengilu","code":"lgi"},{"name":"Lingarak","code":"lgk"},{"name":"Neverver","code":"lgk"},{"name":"Wala","code":"lgl"},{"name":"Lega-Mwenga","code":"lgm"},{"name":"Opuuo","code":"lgn"},{"name":"T'apo","code":"lgn"},{"name":"Logba","code":"lgq"},{"name":"Lengo","code":"lgr"},{"name":"Pahi","code":"lgt"},{"name":"Longgu","code":"lgu"},{"name":"Ligenza","code":"lgz"},{"name":"Laha (Viet Nam)","code":"lha"},{"name":"Laha (Indonesia)","code":"lhh"},{"name":"Lahu Shi","code":"lhi"},{"name":"Lahul Lohar","code":"lhl"},{"name":"Lhomi","code":"lhm"},{"name":"Lahanan","code":"lhn"},{"name":"Lhokpu","code":"lhp"},{"name":"Mlahsรถ","code":"lhs"},{"name":"Lo-Toga","code":"lht"},{"name":"Lahu","code":"lhu"},{"name":"West-Central Limba","code":"lia"},{"name":"Likum","code":"lib"},{"name":"Hlai","code":"lic"},{"name":"Nyindrou","code":"lid"},{"name":"Likila","code":"lie"},{"name":"Limbu","code":"lif"},{"name":"Ligbi","code":"lig"},{"name":"Lihir","code":"lih"},{"name":"Ligurian","code":"lij"},{"name":"Lika","code":"lik"},{"name":"Lillooet","code":"lil"},{"name":"Limburgan","code":"lim"},{"name":"Limburger","code":"lim"},{"name":"Limburgish","code":"lim"},{"name":"Lingala","code":"lin"},{"name":"Liki","code":"lio"},{"name":"Sekpele","code":"lip"},{"name":"Libido","code":"liq"},{"name":"Liberian English","code":"lir"},{"name":"Lisu","code":"lis"},{"name":"Lithuanian","code":"lit"},{"name":"Logorik","code":"liu"},{"name":"Liv","code":"liv"},{"name":"Col","code":"liw"},{"name":"Liabuku","code":"lix"},{"name":"Banda-Bambari","code":"liy"},{"name":"Libinza","code":"liz"},{"name":"Golpa","code":"lja"},{"name":"Rampi","code":"lje"},{"name":"Laiyolo","code":"lji"},{"name":"Li'o","code":"ljl"},{"name":"Lampung Api","code":"ljp"},{"name":"Yirandali","code":"ljw"},{"name":"Yuru","code":"ljx"},{"name":"Lakalei","code":"lka"},{"name":"Kabras","code":"lkb"},{"name":"Lukabaras","code":"lkb"},{"name":"Kucong","code":"lkc"},{"name":"Lakondรช","code":"lkd"},{"name":"Kenyi","code":"lke"},{"name":"Lakha","code":"lkh"},{"name":"Laki","code":"lki"},{"name":"Remun","code":"lkj"},{"name":"Laeko-Libuat","code":"lkl"},{"name":"Kalaamaya","code":"lkm"},{"name":"Lakon","code":"lkn"},{"name":"Vure","code":"lkn"},{"name":"Khayo","code":"lko"},{"name":"Olukhayo","code":"lko"},{"name":"Pรคri","code":"lkr"},{"name":"Kisa","code":"lks"},{"name":"Olushisa","code":"lks"},{"name":"Lakota","code":"lkt"},{"name":"Kungkari","code":"lku"},{"name":"Lokoya","code":"lky"},{"name":"Lala-Roba","code":"lla"},{"name":"Lolo","code":"llb"},{"name":"Lele (Guinea)","code":"llc"},{"name":"Ladin","code":"lld"},{"name":"Lele (Papua New Guinea)","code":"lle"},{"name":"Hermit","code":"llf"},{"name":"Lole","code":"llg"},{"name":"Lamu","code":"llh"},{"name":"Teke-Laali","code":"lli"},{"name":"Ladji Ladji","code":"llj"},{"name":"Lelak","code":"llk"},{"name":"Lilau","code":"lll"},{"name":"Lasalimu","code":"llm"},{"name":"Lele (Chad)","code":"lln"},{"name":"North Efate","code":"llp"},{"name":"Lolak","code":"llq"},{"name":"Lithuanian Sign Language","code":"lls"},{"name":"Lau","code":"llu"},{"name":"Lauan","code":"llx"},{"name":"East Limba","code":"lma"},{"name":"Merei","code":"lmb"},{"name":"Limilngan","code":"lmc"},{"name":"Lumun","code":"lmd"},{"name":"Pรฉvรฉ","code":"lme"},{"name":"South Lembata","code":"lmf"},{"name":"Lamogai","code":"lmg"},{"name":"Lambichhong","code":"lmh"},{"name":"Lombi","code":"lmi"},{"name":"West Lembata","code":"lmj"},{"name":"Lamkang","code":"lmk"},{"name":"Hano","code":"lml"},{"name":"Lambadi","code":"lmn"},{"name":"Lombard","code":"lmo"},{"name":"Limbum","code":"lmp"},{"name":"Lamatuka","code":"lmq"},{"name":"Lamalera","code":"lmr"},{"name":"Lamenu","code":"lmu"},{"name":"Lomaiviti","code":"lmv"},{"name":"Lake Miwok","code":"lmw"},{"name":"Laimbue","code":"lmx"},{"name":"Lamboya","code":"lmy"},{"name":"Langbashe","code":"lna"},{"name":"Mbalanhu","code":"lnb"},{"name":"Lun Bawang","code":"lnd"},{"name":"Lundayeh","code":"lnd"},{"name":"Langobardic","code":"lng"},{"name":"Lanoh","code":"lnh"},{"name":"Daantanai'","code":"lni"},{"name":"Leningitij","code":"lnj"},{"name":"South Central Banda","code":"lnl"},{"name":"Langam","code":"lnm"},{"name":"Lorediakarkar","code":"lnn"},{"name":"Lango (South Sudan)","code":"lno"},{"name":"Lamnso'","code":"lns"},{"name":"Longuda","code":"lnu"},{"name":"Lanima","code":"lnw"},{"name":"Lonzo","code":"lnz"},{"name":"Loloda","code":"loa"},{"name":"Lobi","code":"lob"},{"name":"Inonhan","code":"loc"},{"name":"Saluan","code":"loe"},{"name":"Logol","code":"lof"},{"name":"Logo","code":"log"},{"name":"Narim","code":"loh"},{"name":"Loma (Cรดte d'Ivoire)","code":"loi"},{"name":"Lou","code":"loj"},{"name":"Loko","code":"lok"},{"name":"Mongo","code":"lol"},{"name":"Loma (Liberia)","code":"lom"},{"name":"Malawi Lomwe","code":"lon"},{"name":"Lombo","code":"loo"},{"name":"Lopa","code":"lop"},{"name":"Lobala","code":"loq"},{"name":"Tรฉรฉn","code":"lor"},{"name":"Loniu","code":"los"},{"name":"Otuho","code":"lot"},{"name":"Louisiana Creole","code":"lou"},{"name":"Lopi","code":"lov"},{"name":"Tampias Lobu","code":"low"},{"name":"Loun","code":"lox"},{"name":"Loke","code":"loy"},{"name":"Lozi","code":"loz"},{"name":"Lelepa","code":"lpa"},{"name":"Lepki","code":"lpe"},{"name":"Long Phuri Naga","code":"lpn"},{"name":"Lipo","code":"lpo"},{"name":"Lopit","code":"lpx"},{"name":"Rara Bakati'","code":"lra"},{"name":"Northern Luri","code":"lrc"},{"name":"Laurentian","code":"lre"},{"name":"Laragia","code":"lrg"},{"name":"Marachi","code":"lri"},{"name":"Olumarachi","code":"lri"},{"name":"Loarki","code":"lrk"},{"name":"Lari","code":"lrl"},{"name":"Marama","code":"lrm"},{"name":"Olumarama","code":"lrm"},{"name":"Lorang","code":"lrn"},{"name":"Laro","code":"lro"},{"name":"Southern Yamphu","code":"lrr"},{"name":"Larantuka Malay","code":"lrt"},{"name":"Larevat","code":"lrv"},{"name":"Lemerig","code":"lrz"},{"name":"Lasgerdi","code":"lsa"},{"name":"Burundian Sign Language","code":"lsb"},{"name":"Langue des Signes Burundaise","code":"lsb"},{"name":"Lishana Deni","code":"lsd"},{"name":"Lusengo","code":"lse"},{"name":"Lish","code":"lsh"},{"name":"Lashi","code":"lsi"},{"name":"Latvian Sign Language","code":"lsl"},{"name":"Olusamia","code":"lsm"},{"name":"Saamia","code":"lsm"},{"name":"Tibetan Sign Language","code":"lsn"},{"name":"Laos Sign Language","code":"lso"},{"name":"Lengua de Seรฑas Panameรฑas","code":"lsp"},{"name":"Panamanian Sign Language","code":"lsp"},{"name":"Aruop","code":"lsr"},{"name":"Lasi","code":"lss"},{"name":"Trinidad and Tobago Sign Language","code":"lst"},{"name":"Sivia Sign Language","code":"lsv"},{"name":"Mauritian Sign Language","code":"lsy"},{"name":"Late Middle Chinese","code":"ltc"},{"name":"Latgalian","code":"ltg"},{"name":"Thur","code":"lth"},{"name":"Leti (Indonesia)","code":"lti"},{"name":"Latundรช","code":"ltn"},{"name":"Olutsotso","code":"lto"},{"name":"Tsotso","code":"lto"},{"name":"Lutachoni","code":"lts"},{"name":"Tachoni","code":"lts"},{"name":"Latu","code":"ltu"},{"name":"Letzeburgesch","code":"ltz"},{"name":"Luxembourgish","code":"ltz"},{"name":"Luba-Lulua","code":"lua"},{"name":"Luba-Katanga","code":"lub"},{"name":"Aringa","code":"luc"},{"name":"Ludian","code":"lud"},{"name":"Luvale","code":"lue"},{"name":"Laua","code":"luf"},{"name":"Ganda","code":"lug"},{"name":"Luiseno","code":"lui"},{"name":"Luna","code":"luj"},{"name":"Lunanakha","code":"luk"},{"name":"Olu'bo","code":"lul"},{"name":"Luimbi","code":"lum"},{"name":"Lunda","code":"lun"},{"name":"Dholuo","code":"luo"},{"name":"Luo (Kenya and Tanzania)","code":"luo"},{"name":"Lumbu","code":"lup"},{"name":"Lucumi","code":"luq"},{"name":"Laura","code":"lur"},{"name":"Lushai","code":"lus"},{"name":"Lushootseed","code":"lut"},{"name":"Lumba-Yakkha","code":"luu"},{"name":"Luwati","code":"luv"},{"name":"Luo (Cameroon)","code":"luw"},{"name":"Luyia","code":"luy"},{"name":"Oluluyia","code":"luy"},{"name":"Southern Luri","code":"luz"},{"name":"Maku'a","code":"lva"},{"name":"Lavi","code":"lvi"},{"name":"Lavukaleve","code":"lvk"},{"name":"Standard Latvian","code":"lvs"},{"name":"Levuka","code":"lvu"},{"name":"Lwalu","code":"lwa"},{"name":"Lewo Eleng","code":"lwe"},{"name":"Oluwanga","code":"lwg"},{"name":"Wanga","code":"lwg"},{"name":"White Lachi","code":"lwh"},{"name":"Eastern Lawa","code":"lwl"},{"name":"Laomian","code":"lwm"},{"name":"Luwo","code":"lwo"},{"name":"Malawian Sign Language","code":"lws"},{"name":"Lewotobi","code":"lwt"},{"name":"Lawu","code":"lwu"},{"name":"Lewo","code":"lww"},{"name":"Lakurumau","code":"lxm"},{"name":"Layakha","code":"lya"},{"name":"Lyngngam","code":"lyg"},{"name":"Luyana","code":"lyn"},{"name":"Literary Chinese","code":"lzh"},{"name":"Litzlitz","code":"lzl"},{"name":"Leinong Naga","code":"lzn"},{"name":"Laz","code":"lzz"},{"name":"San Jerรณnimo Tecรณatl Mazatec","code":"maa"},{"name":"Yutanduchi Mixtec","code":"mab"},{"name":"Madurese","code":"mad"},{"name":"Bo-Rukul","code":"mae"},{"name":"Mafa","code":"maf"},{"name":"Magahi","code":"mag"},{"name":"Marshallese","code":"mah"},{"name":"Maithili","code":"mai"},{"name":"Jalapa De Dรญaz Mazatec","code":"maj"},{"name":"Makasar","code":"mak"},{"name":"Malayalam","code":"mal"},{"name":"Mam","code":"mam"},{"name":"Manding","code":"man"},{"name":"Mandingo","code":"man"},{"name":"Chiquihuitlรกn Mazatec","code":"maq"},{"name":"Marathi","code":"mar"},{"name":"Masai","code":"mas"},{"name":"San Francisco Matlatzinca","code":"mat"},{"name":"Huautla Mazatec","code":"mau"},{"name":"Saterรฉ-Mawรฉ","code":"mav"},{"name":"Mampruli","code":"maw"},{"name":"North Moluccan Malay","code":"max"},{"name":"Central Mazahua","code":"maz"},{"name":"Higaonon","code":"mba"},{"name":"Western Bukidnon Manobo","code":"mbb"},{"name":"Macushi","code":"mbc"},{"name":"Dibabawon Manobo","code":"mbd"},{"name":"Molale","code":"mbe"},{"name":"Baba Malay","code":"mbf"},{"name":"Mangseng","code":"mbh"},{"name":"Ilianen Manobo","code":"mbi"},{"name":"Nadรซb","code":"mbj"},{"name":"Malol","code":"mbk"},{"name":"Maxakalรญ","code":"mbl"},{"name":"Ombamba","code":"mbm"},{"name":"Macaguรกn","code":"mbn"},{"name":"Mbo (Cameroon)","code":"mbo"},{"name":"Malayo","code":"mbp"},{"name":"Maisin","code":"mbq"},{"name":"Nukak Makรบ","code":"mbr"},{"name":"Sarangani Manobo","code":"mbs"},{"name":"Matigsalug Manobo","code":"mbt"},{"name":"Mbula-Bwazza","code":"mbu"},{"name":"Mbulungish","code":"mbv"},{"name":"Maring","code":"mbw"},{"name":"Mari (East Sepik Province)","code":"mbx"},{"name":"Memoni","code":"mby"},{"name":"Amoltepec Mixtec","code":"mbz"},{"name":"Maca","code":"mca"},{"name":"Machiguenga","code":"mcb"},{"name":"Bitur","code":"mcc"},{"name":"Sharanahua","code":"mcd"},{"name":"Itundujia Mixtec","code":"mce"},{"name":"Matsรฉs","code":"mcf"},{"name":"Mapoyo","code":"mcg"},{"name":"Maquiritari","code":"mch"},{"name":"Mese","code":"mci"},{"name":"Mvanip","code":"mcj"},{"name":"Mbunda","code":"mck"},{"name":"Macaguaje","code":"mcl"},{"name":"Malaccan Creole Portuguese","code":"mcm"},{"name":"Masana","code":"mcn"},{"name":"Coatlรกn Mixe","code":"mco"},{"name":"Makaa","code":"mcp"},{"name":"Ese","code":"mcq"},{"name":"Menya","code":"mcr"},{"name":"Mambai","code":"mcs"},{"name":"Mengisa","code":"mct"},{"name":"Cameroon Mambila","code":"mcu"},{"name":"Minanibai","code":"mcv"},{"name":"Mawa (Chad)","code":"mcw"},{"name":"Mpiemo","code":"mcx"},{"name":"South Watut","code":"mcy"},{"name":"Mawan","code":"mcz"},{"name":"Mada (Nigeria)","code":"mda"},{"name":"Morigi","code":"mdb"},{"name":"Male (Papua New Guinea)","code":"mdc"},{"name":"Mbum","code":"mdd"},{"name":"Maba (Chad)","code":"mde"},{"name":"Moksha","code":"mdf"},{"name":"Massalat","code":"mdg"},{"name":"Maguindanaon","code":"mdh"},{"name":"Mamvu","code":"mdi"},{"name":"Mangbetu","code":"mdj"},{"name":"Mangbutu","code":"mdk"},{"name":"Maltese Sign Language","code":"mdl"},{"name":"Mayogo","code":"mdm"},{"name":"Mbati","code":"mdn"},{"name":"Mbala","code":"mdp"},{"name":"Mbole","code":"mdq"},{"name":"Mandar","code":"mdr"},{"name":"Maria (Papua New Guinea)","code":"mds"},{"name":"Mbere","code":"mdt"},{"name":"Mboko","code":"mdu"},{"name":"Santa Lucรญa Monteverde Mixtec","code":"mdv"},{"name":"Mbosi","code":"mdw"},{"name":"Dizin","code":"mdx"},{"name":"Male (Ethiopia)","code":"mdy"},{"name":"Suruรญ Do Parรก","code":"mdz"},{"name":"Menka","code":"mea"},{"name":"Ikobi","code":"meb"},{"name":"Marra","code":"mec"},{"name":"Melpa","code":"med"},{"name":"Mengen","code":"mee"},{"name":"Megam","code":"mef"},{"name":"Southwestern Tlaxiaco Mixtec","code":"meh"},{"name":"Midob","code":"mei"},{"name":"Meyah","code":"mej"},{"name":"Mekeo","code":"mek"},{"name":"Central Melanau","code":"mel"},{"name":"Mangala","code":"mem"},{"name":"Mende (Sierra Leone)","code":"men"},{"name":"Kedah Malay","code":"meo"},{"name":"Miriwoong","code":"mep"},{"name":"Merey","code":"meq"},{"name":"Meru","code":"mer"},{"name":"Masmaje","code":"mes"},{"name":"Mato","code":"met"},{"name":"Motu","code":"meu"},{"name":"Mano","code":"mev"},{"name":"Maaka","code":"mew"},{"name":"Hassaniyya","code":"mey"},{"name":"Menominee","code":"mez"},{"name":"Pattani Malay","code":"mfa"},{"name":"Bangka","code":"mfb"},{"name":"Mba","code":"mfc"},{"name":"Mendankwe-Nkwen","code":"mfd"},{"name":"Morisyen","code":"mfe"},{"name":"Naki","code":"mff"},{"name":"Mogofin","code":"mfg"},{"name":"Matal","code":"mfh"},{"name":"Wandala","code":"mfi"},{"name":"Mefele","code":"mfj"},{"name":"North Mofu","code":"mfk"},{"name":"Putai","code":"mfl"},{"name":"Marghi South","code":"mfm"},{"name":"Cross River Mbembe","code":"mfn"},{"name":"Mbe","code":"mfo"},{"name":"Makassar Malay","code":"mfp"},{"name":"Moba","code":"mfq"},{"name":"Marrithiyel","code":"mfr"},{"name":"Mexican Sign Language","code":"mfs"},{"name":"Mokerang","code":"mft"},{"name":"Mbwela","code":"mfu"},{"name":"Mandjak","code":"mfv"},{"name":"Mulaha","code":"mfw"},{"name":"Melo","code":"mfx"},{"name":"Mayo","code":"mfy"},{"name":"Mabaan","code":"mfz"},{"name":"Middle Irish (900-1200)","code":"mga"},{"name":"Mararit","code":"mgb"},{"name":"Morokodo","code":"mgc"},{"name":"Moru","code":"mgd"},{"name":"Mango","code":"mge"},{"name":"Maklew","code":"mgf"},{"name":"Mpumpong","code":"mgg"},{"name":"Makhuwa-Meetto","code":"mgh"},{"name":"Lijili","code":"mgi"},{"name":"Abureni","code":"mgj"},{"name":"Mawes","code":"mgk"},{"name":"Maleu-Kilenge","code":"mgl"},{"name":"Mambae","code":"mgm"},{"name":"Mbangi","code":"mgn"},{"name":"Meta'","code":"mgo"},{"name":"Eastern Magar","code":"mgp"},{"name":"Malila","code":"mgq"},{"name":"Mambwe-Lungu","code":"mgr"},{"name":"Manda (Tanzania)","code":"mgs"},{"name":"Mongol","code":"mgt"},{"name":"Mailu","code":"mgu"},{"name":"Matengo","code":"mgv"},{"name":"Matumbi","code":"mgw"},{"name":"Mbunga","code":"mgy"},{"name":"Mbugwe","code":"mgz"},{"name":"Manda (India)","code":"mha"},{"name":"Mahongwe","code":"mhb"},{"name":"Mocho","code":"mhc"},{"name":"Mbugu","code":"mhd"},{"name":"Besisi","code":"mhe"},{"name":"Mah Meri","code":"mhe"},{"name":"Mamaa","code":"mhf"},{"name":"Margu","code":"mhg"},{"name":"Ma'di","code":"mhi"},{"name":"Mogholi","code":"mhj"},{"name":"Mungaka","code":"mhk"},{"name":"Mauwake","code":"mhl"},{"name":"Makhuwa-Moniga","code":"mhm"},{"name":"Mรณcheno","code":"mhn"},{"name":"Mashi (Zambia)","code":"mho"},{"name":"Balinese Malay","code":"mhp"},{"name":"Mandan","code":"mhq"},{"name":"Eastern Mari","code":"mhr"},{"name":"Buru (Indonesia)","code":"mhs"},{"name":"Mandahuaca","code":"mht"},{"name":"Darang Deng","code":"mhu"},{"name":"Digaro-Mishmi","code":"mhu"},{"name":"Mbukushu","code":"mhw"},{"name":"Lhaovo","code":"mhx"},{"name":"Maru","code":"mhx"},{"name":"Ma'anyan","code":"mhy"},{"name":"Mor (Mor Islands)","code":"mhz"},{"name":"Miami","code":"mia"},{"name":"Atatlรกhuca Mixtec","code":"mib"},{"name":"Micmac","code":"mic"},{"name":"Mi'kmaq","code":"mic"},{"name":"Mandaic","code":"mid"},{"name":"Ocotepec Mixtec","code":"mie"},{"name":"Mofu-Gudur","code":"mif"},{"name":"San Miguel El Grande Mixtec","code":"mig"},{"name":"Chayuco Mixtec","code":"mih"},{"name":"Chigmecatitlรกn Mixtec","code":"mii"},{"name":"Abar","code":"mij"},{"name":"Mungbam","code":"mij"},{"name":"Mikasuki","code":"mik"},{"name":"Peรฑoles Mixtec","code":"mil"},{"name":"Alacatlatzala Mixtec","code":"mim"},{"name":"Minangkabau","code":"min"},{"name":"Pinotepa Nacional Mixtec","code":"mio"},{"name":"Apasco-Apoala Mixtec","code":"mip"},{"name":"Mรญskito","code":"miq"},{"name":"Isthmus Mixe","code":"mir"},{"name":"Uncoded languages","code":"mis"},{"name":"Southern Puebla Mixtec","code":"mit"},{"name":"Cacaloxtepec Mixtec","code":"miu"},{"name":"Akoye","code":"miw"},{"name":"Mixtepec Mixtec","code":"mix"},{"name":"Ayutla Mixtec","code":"miy"},{"name":"Coatzospan Mixtec","code":"miz"},{"name":"Makalero","code":"mjb"},{"name":"San Juan Colorado Mixtec","code":"mjc"},{"name":"Northwest Maidu","code":"mjd"},{"name":"Muskum","code":"mje"},{"name":"Tu","code":"mjg"},{"name":"Mwera (Nyasa)","code":"mjh"},{"name":"Kim Mun","code":"mji"},{"name":"Mawak","code":"mjj"},{"name":"Matukar","code":"mjk"},{"name":"Mandeali","code":"mjl"},{"name":"Medebur","code":"mjm"},{"name":"Ma (Papua New Guinea)","code":"mjn"},{"name":"Malankuravan","code":"mjo"},{"name":"Malapandaram","code":"mjp"},{"name":"Malaryan","code":"mjq"},{"name":"Malavedan","code":"mjr"},{"name":"Miship","code":"mjs"},{"name":"Sauria Paharia","code":"mjt"},{"name":"Manna-Dora","code":"mju"},{"name":"Mannan","code":"mjv"},{"name":"Karbi","code":"mjw"},{"name":"Mahali","code":"mjx"},{"name":"Mahican","code":"mjy"},{"name":"Majhi","code":"mjz"},{"name":"Mbre","code":"mka"},{"name":"Mal Paharia","code":"mkb"},{"name":"Siliput","code":"mkc"},{"name":"Macedonian","code":"mkd"},{"name":"Mawchi","code":"mke"},{"name":"Miya","code":"mkf"},{"name":"Mak (China)","code":"mkg"},{"name":"Dhatki","code":"mki"},{"name":"Mokilese","code":"mkj"},{"name":"Byep","code":"mkk"},{"name":"Mokole","code":"mkl"},{"name":"Moklen","code":"mkm"},{"name":"Kupang Malay","code":"mkn"},{"name":"Mingang Doso","code":"mko"},{"name":"Moikodi","code":"mkp"},{"name":"Bay Miwok","code":"mkq"},{"name":"Malas","code":"mkr"},{"name":"Silacayoapan Mixtec","code":"mks"},{"name":"Vamale","code":"mkt"},{"name":"Konyanka Maninka","code":"mku"},{"name":"Mafea","code":"mkv"},{"name":"Kituba (Congo)","code":"mkw"},{"name":"Kinamiging Manobo","code":"mkx"},{"name":"East Makian","code":"mky"},{"name":"Makasae","code":"mkz"},{"name":"Malo","code":"mla"},{"name":"Mbule","code":"mlb"},{"name":"Cao Lan","code":"mlc"},{"name":"Manambu","code":"mle"},{"name":"Mal","code":"mlf"},{"name":"Malagasy","code":"mlg"},{"name":"Mape","code":"mlh"},{"name":"Malimpung","code":"mli"},{"name":"Miltu","code":"mlj"},{"name":"Ilwana","code":"mlk"},{"name":"Kiwilwana","code":"mlk"},{"name":"Malua Bay","code":"mll"},{"name":"Mulam","code":"mlm"},{"name":"Malango","code":"mln"},{"name":"Mlomp","code":"mlo"},{"name":"Bargam","code":"mlp"},{"name":"Western Maninkakan","code":"mlq"},{"name":"Vame","code":"mlr"},{"name":"Masalit","code":"mls"},{"name":"Maltese","code":"mlt"},{"name":"To'abaita","code":"mlu"},{"name":"Motlav","code":"mlv"},{"name":"Mwotlap","code":"mlv"},{"name":"Moloko","code":"mlw"},{"name":"Malfaxal","code":"mlx"},{"name":"Naha'ai","code":"mlx"},{"name":"Malaynon","code":"mlz"},{"name":"Mama","code":"mma"},{"name":"Momina","code":"mmb"},{"name":"Michoacรกn Mazahua","code":"mmc"},{"name":"Maonan","code":"mmd"},{"name":"Mae","code":"mme"},{"name":"Mundat","code":"mmf"},{"name":"North Ambrym","code":"mmg"},{"name":"Mehinรกku","code":"mmh"},{"name":"Musar","code":"mmi"},{"name":"Majhwar","code":"mmj"},{"name":"Mukha-Dora","code":"mmk"},{"name":"Man Met","code":"mml"},{"name":"Maii","code":"mmm"},{"name":"Mamanwa","code":"mmn"},{"name":"Mangga Buang","code":"mmo"},{"name":"Siawi","code":"mmp"},{"name":"Musak","code":"mmq"},{"name":"Western Xiangxi Miao","code":"mmr"},{"name":"Malalamai","code":"mmt"},{"name":"Mmaala","code":"mmu"},{"name":"Miriti","code":"mmv"},{"name":"Emae","code":"mmw"},{"name":"Madak","code":"mmx"},{"name":"Migaama","code":"mmy"},{"name":"Mabaale","code":"mmz"},{"name":"Mbula","code":"mna"},{"name":"Muna","code":"mnb"},{"name":"Manchu","code":"mnc"},{"name":"Mondรฉ","code":"mnd"},{"name":"Naba","code":"mne"},{"name":"Mundani","code":"mnf"},{"name":"Eastern Mnong","code":"mng"},{"name":"Mono (Democratic Republic of Congo)","code":"mnh"},{"name":"Manipuri","code":"mni"},{"name":"Munji","code":"mnj"},{"name":"Mandinka","code":"mnk"},{"name":"Tiale","code":"mnl"},{"name":"Mapena","code":"mnm"},{"name":"Southern Mnong","code":"mnn"},{"name":"Min Bei Chinese","code":"mnp"},{"name":"Minriq","code":"mnq"},{"name":"Mono (USA)","code":"mnr"},{"name":"Mansi","code":"mns"},{"name":"Mer","code":"mnu"},{"name":"Rennell-Bellona","code":"mnv"},{"name":"Mon","code":"mnw"},{"name":"Manikion","code":"mnx"},{"name":"Manyawa","code":"mny"},{"name":"Moni","code":"mnz"},{"name":"Mwan","code":"moa"},{"name":"Mocovรญ","code":"moc"},{"name":"Mobilian","code":"mod"},{"name":"Innu","code":"moe"},{"name":"Montagnais","code":"moe"},{"name":"Mongondow","code":"mog"},{"name":"Mohawk","code":"moh"},{"name":"Mboi","code":"moi"},{"name":"Monzombo","code":"moj"},{"name":"Morori","code":"mok"},{"name":"Mangue","code":"mom"},{"name":"Mongolian","code":"mon"},{"name":"Monom","code":"moo"},{"name":"Mopรกn Maya","code":"mop"},{"name":"Mor (Bomberai Peninsula)","code":"moq"},{"name":"Moro","code":"mor"},{"name":"Mossi","code":"mos"},{"name":"Barรญ","code":"mot"},{"name":"Mogum","code":"mou"},{"name":"Mohave","code":"mov"},{"name":"Moi (Congo)","code":"mow"},{"name":"Molima","code":"mox"},{"name":"Shekkacho","code":"moy"},{"name":"Gergiko","code":"moz"},{"name":"Mukulu","code":"moz"},{"name":"Mpoto","code":"mpa"},{"name":"Malak Malak","code":"mpb"},{"name":"Mullukmulluk","code":"mpb"},{"name":"Mangarrayi","code":"mpc"},{"name":"Machinere","code":"mpd"},{"name":"Majang","code":"mpe"},{"name":"Marba","code":"mpg"},{"name":"Maung","code":"mph"},{"name":"Mpade","code":"mpi"},{"name":"Martu Wangka","code":"mpj"},{"name":"Wangkajunga","code":"mpj"},{"name":"Mbara (Chad)","code":"mpk"},{"name":"Middle Watut","code":"mpl"},{"name":"Yosondรบa Mixtec","code":"mpm"},{"name":"Mindiri","code":"mpn"},{"name":"Miu","code":"mpo"},{"name":"Migabac","code":"mpp"},{"name":"Matรญs","code":"mpq"},{"name":"Vangunu","code":"mpr"},{"name":"Dadibi","code":"mps"},{"name":"Mian","code":"mpt"},{"name":"Makurรกp","code":"mpu"},{"name":"Mungkip","code":"mpv"},{"name":"Mapidian","code":"mpw"},{"name":"Misima-Panaeati","code":"mpx"},{"name":"Mapia","code":"mpy"},{"name":"Mpi","code":"mpz"},{"name":"Maba (Indonesia)","code":"mqa"},{"name":"Mbuko","code":"mqb"},{"name":"Mangole","code":"mqc"},{"name":"Matepi","code":"mqe"},{"name":"Momuna","code":"mqf"},{"name":"Kota Bangun Kutai Malay","code":"mqg"},{"name":"Tlazoyaltepec Mixtec","code":"mqh"},{"name":"Mariri","code":"mqi"},{"name":"Mamasa","code":"mqj"},{"name":"Rajah Kabunsuwan Manobo","code":"mqk"},{"name":"Mbelime","code":"mql"},{"name":"South Marquesan","code":"mqm"},{"name":"Moronene","code":"mqn"},{"name":"Modole","code":"mqo"},{"name":"Manipa","code":"mqp"},{"name":"Minokok","code":"mqq"},{"name":"Mander","code":"mqr"},{"name":"West Makian","code":"mqs"},{"name":"Mok","code":"mqt"},{"name":"Mandari","code":"mqu"},{"name":"Mosimo","code":"mqv"},{"name":"Murupi","code":"mqw"},{"name":"Mamuju","code":"mqx"},{"name":"Manggarai","code":"mqy"},{"name":"Pano","code":"mqz"},{"name":"Mlabri","code":"mra"},{"name":"Marino","code":"mrb"},{"name":"Maricopa","code":"mrc"},{"name":"Western Magar","code":"mrd"},{"name":"Martha's Vineyard Sign Language","code":"mre"},{"name":"Elseng","code":"mrf"},{"name":"Mising","code":"mrg"},{"name":"Mara Chin","code":"mrh"},{"name":"Maori","code":"mri"},{"name":"Western Mari","code":"mrj"},{"name":"Hmwaveke","code":"mrk"},{"name":"Mortlockese","code":"mrl"},{"name":"Merlav","code":"mrm"},{"name":"Mwerlap","code":"mrm"},{"name":"Cheke Holo","code":"mrn"},{"name":"Mru","code":"mro"},{"name":"Morouas","code":"mrp"},{"name":"North Marquesan","code":"mrq"},{"name":"Maria (India)","code":"mrr"},{"name":"Maragus","code":"mrs"},{"name":"Marghi Central","code":"mrt"},{"name":"Mono (Cameroon)","code":"mru"},{"name":"Mangareva","code":"mrv"},{"name":"Maranao","code":"mrw"},{"name":"Dineor","code":"mrx"},{"name":"Maremgi","code":"mrx"},{"name":"Mandaya","code":"mry"},{"name":"Marind","code":"mrz"},{"name":"Malay","code":"msa"},{"name":"Malay (macrolanguage)","code":"msa"},{"name":"Masbatenyo","code":"msb"},{"name":"Sankaran Maninka","code":"msc"},{"name":"Yucatec Maya Sign Language","code":"msd"},{"name":"Musey","code":"mse"},{"name":"Mekwei","code":"msf"},{"name":"Moraid","code":"msg"},{"name":"Masikoro Malagasy","code":"msh"},{"name":"Sabah Malay","code":"msi"},{"name":"Ma (Democratic Republic of Congo)","code":"msj"},{"name":"Mansaka","code":"msk"},{"name":"Molof","code":"msl"},{"name":"Poule","code":"msl"},{"name":"Agusan Manobo","code":"msm"},{"name":"Vurรซs","code":"msn"},{"name":"Mombum","code":"mso"},{"name":"Maritsauรก","code":"msp"},{"name":"Caac","code":"msq"},{"name":"Mongolian Sign Language","code":"msr"},{"name":"West Masela","code":"mss"},{"name":"Musom","code":"msu"},{"name":"Maslam","code":"msv"},{"name":"Mansoanka","code":"msw"},{"name":"Moresada","code":"msx"},{"name":"Aruamu","code":"msy"},{"name":"Momare","code":"msz"},{"name":"Cotabato Manobo","code":"mta"},{"name":"Anyin Morofo","code":"mtb"},{"name":"Munit","code":"mtc"},{"name":"Mualang","code":"mtd"},{"name":"Mono (Solomon Islands)","code":"mte"},{"name":"Murik (Papua New Guinea)","code":"mtf"},{"name":"Una","code":"mtg"},{"name":"Munggui","code":"mth"},{"name":"Maiwa (Papua New Guinea)","code":"mti"},{"name":"Moskona","code":"mtj"},{"name":"Mbe'","code":"mtk"},{"name":"Montol","code":"mtl"},{"name":"Mator","code":"mtm"},{"name":"Matagalpa","code":"mtn"},{"name":"Totontepec Mixe","code":"mto"},{"name":"Wichรญ Lhamtรฉs Nocten","code":"mtp"},{"name":"Muong","code":"mtq"},{"name":"Mewari","code":"mtr"},{"name":"Yora","code":"mts"},{"name":"Mota","code":"mtt"},{"name":"Tututepec Mixtec","code":"mtu"},{"name":"Asaro'o","code":"mtv"},{"name":"Southern Binukidnon","code":"mtw"},{"name":"Tidaรก Mixtec","code":"mtx"},{"name":"Nabi","code":"mty"},{"name":"Mundang","code":"mua"},{"name":"Mubi","code":"mub"},{"name":"Ajumbu","code":"muc"},{"name":"Mednyj Aleut","code":"mud"},{"name":"Media Lengua","code":"mue"},{"name":"Musgu","code":"mug"},{"name":"Mรผndรผ","code":"muh"},{"name":"Musi","code":"mui"},{"name":"Mabire","code":"muj"},{"name":"Mugom","code":"muk"},{"name":"Multiple languages","code":"mul"},{"name":"Maiwala","code":"mum"},{"name":"Nyong","code":"muo"},{"name":"Malvi","code":"mup"},{"name":"Eastern Xiangxi Miao","code":"muq"},{"name":"Murle","code":"mur"},{"name":"Creek","code":"mus"},{"name":"Western Muria","code":"mut"},{"name":"Yaaku","code":"muu"},{"name":"Muthuvan","code":"muv"},{"name":"Bo-Ung","code":"mux"},{"name":"Muyang","code":"muy"},{"name":"Mursi","code":"muz"},{"name":"Manam","code":"mva"},{"name":"Mattole","code":"mvb"},{"name":"Mamboru","code":"mvd"},{"name":"Marwari (Pakistan)","code":"mve"},{"name":"Peripheral Mongolian","code":"mvf"},{"name":"Yucuaรฑe Mixtec","code":"mvg"},{"name":"Mulgi","code":"mvh"},{"name":"Miyako","code":"mvi"},{"name":"Mekmek","code":"mvk"},{"name":"Mbara (Australia)","code":"mvl"},{"name":"Minaveha","code":"mvn"},{"name":"Marovo","code":"mvo"},{"name":"Duri","code":"mvp"},{"name":"Moere","code":"mvq"},{"name":"Marau","code":"mvr"},{"name":"Massep","code":"mvs"},{"name":"Mpotovoro","code":"mvt"},{"name":"Marfa","code":"mvu"},{"name":"Tagal Murut","code":"mvv"},{"name":"Machinga","code":"mvw"},{"name":"Meoswar","code":"mvx"},{"name":"Indus Kohistani","code":"mvy"},{"name":"Mesqan","code":"mvz"},{"name":"Mwatebu","code":"mwa"},{"name":"Juwal","code":"mwb"},{"name":"Are","code":"mwc"},{"name":"Mwera (Chimwera)","code":"mwe"},{"name":"Murrinh-Patha","code":"mwf"},{"name":"Aiklep","code":"mwg"},{"name":"Mouk-Aria","code":"mwh"},{"name":"Labo","code":"mwi"},{"name":"Ninde","code":"mwi"},{"name":"Kita Maninkakan","code":"mwk"},{"name":"Mirandese","code":"mwl"},{"name":"Sar","code":"mwm"},{"name":"Nyamwanga","code":"mwn"},{"name":"Central Maewo","code":"mwo"},{"name":"Kala Lagaw Ya","code":"mwp"},{"name":"Mรผn Chin","code":"mwq"},{"name":"Marwari","code":"mwr"},{"name":"Mwimbi-Muthambi","code":"mws"},{"name":"Moken","code":"mwt"},{"name":"Mittu","code":"mwu"},{"name":"Mentawai","code":"mwv"},{"name":"Hmong Daw","code":"mww"},{"name":"Moingi","code":"mwz"},{"name":"Northwest Oaxaca Mixtec","code":"mxa"},{"name":"Tezoatlรกn Mixtec","code":"mxb"},{"name":"Manyika","code":"mxc"},{"name":"Modang","code":"mxd"},{"name":"Mele-Fila","code":"mxe"},{"name":"Malgbe","code":"mxf"},{"name":"Mbangala","code":"mxg"},{"name":"Mvuba","code":"mxh"},{"name":"Mozarabic","code":"mxi"},{"name":"Geman Deng","code":"mxj"},{"name":"Miju-Mishmi","code":"mxj"},{"name":"Monumbo","code":"mxk"},{"name":"Maxi Gbe","code":"mxl"},{"name":"Meramera","code":"mxm"},{"name":"Moi (Indonesia)","code":"mxn"},{"name":"Mbowe","code":"mxo"},{"name":"Tlahuitoltepec Mixe","code":"mxp"},{"name":"Juquila Mixe","code":"mxq"},{"name":"Murik (Malaysia)","code":"mxr"},{"name":"Huitepec Mixtec","code":"mxs"},{"name":"Jamiltepec Mixtec","code":"mxt"},{"name":"Mada (Cameroon)","code":"mxu"},{"name":"Metlatรณnoc Mixtec","code":"mxv"},{"name":"Namo","code":"mxw"},{"name":"Mahou","code":"mxx"},{"name":"Mawukakan","code":"mxx"},{"name":"Southeastern Nochixtlรกn Mixtec","code":"mxy"},{"name":"Central Masela","code":"mxz"},{"name":"Burmese","code":"mya"},{"name":"Mbay","code":"myb"},{"name":"Mayeka","code":"myc"},{"name":"Myene","code":"mye"},{"name":"Bambassi","code":"myf"},{"name":"Manta","code":"myg"},{"name":"Makah","code":"myh"},{"name":"Mangayat","code":"myj"},{"name":"Mamara Senoufo","code":"myk"},{"name":"Moma","code":"myl"},{"name":"Me'en","code":"mym"},{"name":"Anfillo","code":"myo"},{"name":"Pirahรฃ","code":"myp"},{"name":"Muniche","code":"myr"},{"name":"Mesmes","code":"mys"},{"name":"Mundurukรบ","code":"myu"},{"name":"Erzya","code":"myv"},{"name":"Muyuw","code":"myw"},{"name":"Masaaba","code":"myx"},{"name":"Macuna","code":"myy"},{"name":"Classical Mandaic","code":"myz"},{"name":"Santa Marรญa Zacatepec Mixtec","code":"mza"},{"name":"Tumzabt","code":"mzb"},{"name":"Madagascar Sign Language","code":"mzc"},{"name":"Malimba","code":"mzd"},{"name":"Morawa","code":"mze"},{"name":"Monastic Sign Language","code":"mzg"},{"name":"Wichรญ Lhamtรฉs Gรผisnay","code":"mzh"},{"name":"Ixcatlรกn Mazatec","code":"mzi"},{"name":"Manya","code":"mzj"},{"name":"Nigeria Mambila","code":"mzk"},{"name":"Mazatlรกn Mixe","code":"mzl"},{"name":"Mumuye","code":"mzm"},{"name":"Mazanderani","code":"mzn"},{"name":"Matipuhy","code":"mzo"},{"name":"Movima","code":"mzp"},{"name":"Mori Atas","code":"mzq"},{"name":"Marรบbo","code":"mzr"},{"name":"Macanese","code":"mzs"},{"name":"Mintil","code":"mzt"},{"name":"Inapang","code":"mzu"},{"name":"Manza","code":"mzv"},{"name":"Deg","code":"mzw"},{"name":"Mawayana","code":"mzx"},{"name":"Mozambican Sign Language","code":"mzy"},{"name":"Maiadomu","code":"mzz"},{"name":"Namla","code":"naa"},{"name":"Southern Nambikuรกra","code":"nab"},{"name":"Narak","code":"nac"},{"name":"Naka'ela","code":"nae"},{"name":"Nabak","code":"naf"},{"name":"Naga Pidgin","code":"nag"},{"name":"Nalu","code":"naj"},{"name":"Nakanai","code":"nak"},{"name":"Nalik","code":"nal"},{"name":"Ngan'gityemerri","code":"nam"},{"name":"Min Nan Chinese","code":"nan"},{"name":"Naaba","code":"nao"},{"name":"Neapolitan","code":"nap"},{"name":"Khoekhoe","code":"naq"},{"name":"Nama (Namibia)","code":"naq"},{"name":"Iguta","code":"nar"},{"name":"Naasioi","code":"nas"},{"name":"Caฬฑhungwaฬฑryaฬฑ","code":"nat"},{"name":"Hungworo","code":"nat"},{"name":"Nauru","code":"nau"},{"name":"Navaho","code":"nav"},{"name":"Navajo","code":"nav"},{"name":"Nawuri","code":"naw"},{"name":"Nakwi","code":"nax"},{"name":"Ngarrindjeri","code":"nay"},{"name":"Coatepec Nahuatl","code":"naz"},{"name":"Nyemba","code":"nba"},{"name":"Ndoe","code":"nbb"},{"name":"Chang Naga","code":"nbc"},{"name":"Ngbinda","code":"nbd"},{"name":"Konyak Naga","code":"nbe"},{"name":"Nagarchal","code":"nbg"},{"name":"Ngamo","code":"nbh"},{"name":"Mao Naga","code":"nbi"},{"name":"Ngarinyman","code":"nbj"},{"name":"Nake","code":"nbk"},{"name":"South Ndebele","code":"nbl"},{"name":"Ngbaka Ma'bo","code":"nbm"},{"name":"Kuri","code":"nbn"},{"name":"Nkukoli","code":"nbo"},{"name":"Nnam","code":"nbp"},{"name":"Nggem","code":"nbq"},{"name":"Numana","code":"nbr"},{"name":"Namibian Sign Language","code":"nbs"},{"name":"Na","code":"nbt"},{"name":"Rongmei Naga","code":"nbu"},{"name":"Ngamambo","code":"nbv"},{"name":"Southern Ngbandi","code":"nbw"},{"name":"Ningera","code":"nby"},{"name":"Iyo","code":"nca"},{"name":"Central Nicobarese","code":"ncb"},{"name":"Ponam","code":"ncc"},{"name":"Nachering","code":"ncd"},{"name":"Yale","code":"nce"},{"name":"Notsi","code":"ncf"},{"name":"Nisga'a","code":"ncg"},{"name":"Central Huasteca Nahuatl","code":"nch"},{"name":"Classical Nahuatl","code":"nci"},{"name":"Northern Puebla Nahuatl","code":"ncj"},{"name":"Na-kara","code":"nck"},{"name":"Michoacรกn Nahuatl","code":"ncl"},{"name":"Nambo","code":"ncm"},{"name":"Nauna","code":"ncn"},{"name":"Sibe","code":"nco"},{"name":"Northern Katang","code":"ncq"},{"name":"Ncane","code":"ncr"},{"name":"Nicaraguan Sign Language","code":"ncs"},{"name":"Chothe Naga","code":"nct"},{"name":"Chumburung","code":"ncu"},{"name":"Central Puebla Nahuatl","code":"ncx"},{"name":"Natchez","code":"ncz"},{"name":"Ndasa","code":"nda"},{"name":"Kenswei Nsei","code":"ndb"},{"name":"Ndau","code":"ndc"},{"name":"Nde-Nsele-Nta","code":"ndd"},{"name":"North Ndebele","code":"nde"},{"name":"Nadruvian","code":"ndf"},{"name":"Ndengereko","code":"ndg"},{"name":"Ndali","code":"ndh"},{"name":"Samba Leko","code":"ndi"},{"name":"Ndamba","code":"ndj"},{"name":"Ndaka","code":"ndk"},{"name":"Ndolo","code":"ndl"},{"name":"Ndam","code":"ndm"},{"name":"Ngundi","code":"ndn"},{"name":"Ndonga","code":"ndo"},{"name":"Ndo","code":"ndp"},{"name":"Ndombe","code":"ndq"},{"name":"Ndoola","code":"ndr"},{"name":"Low German","code":"nds"},{"name":"Low Saxon","code":"nds"},{"name":"Ndunga","code":"ndt"},{"name":"Dugun","code":"ndu"},{"name":"Ndut","code":"ndv"},{"name":"Ndobo","code":"ndw"},{"name":"Nduga","code":"ndx"},{"name":"Lutos","code":"ndy"},{"name":"Ndogo","code":"ndz"},{"name":"Eastern Ngad'a","code":"nea"},{"name":"Toura (Cรดte d'Ivoire)","code":"neb"},{"name":"Nedebang","code":"nec"},{"name":"Nde-Gbite","code":"ned"},{"name":"Nรชlรชmwa-Nixumwak","code":"nee"},{"name":"Nefamese","code":"nef"},{"name":"Negidal","code":"neg"},{"name":"Nyenkha","code":"neh"},{"name":"Neo-Hittite","code":"nei"},{"name":"Neko","code":"nej"},{"name":"Neku","code":"nek"},{"name":"Nemi","code":"nem"},{"name":"Nengone","code":"nen"},{"name":"Nรก-Meo","code":"neo"},{"name":"Nepali","code":"nep"},{"name":"Nepali (macrolanguage)","code":"nep"},{"name":"North Central Mixe","code":"neq"},{"name":"Yahadian","code":"ner"},{"name":"Bhoti Kinnauri","code":"nes"},{"name":"Nete","code":"net"},{"name":"Neo","code":"neu"},{"name":"Nyaheun","code":"nev"},{"name":"Nepal Bhasa","code":"new"},{"name":"Newari","code":"new"},{"name":"Neme","code":"nex"},{"name":"Neyo","code":"ney"},{"name":"Nez Perce","code":"nez"},{"name":"Dhao","code":"nfa"},{"name":"Ahwai","code":"nfd"},{"name":"ร„iwoo","code":"nfl"},{"name":"Ayiwo","code":"nfl"},{"name":"Nafaanra","code":"nfr"},{"name":"Mfumte","code":"nfu"},{"name":"Ngbaka","code":"nga"},{"name":"Northern Ngbandi","code":"ngb"},{"name":"Ngombe (Democratic Republic of Congo)","code":"ngc"},{"name":"Ngando (Central African Republic)","code":"ngd"},{"name":"Ngemba","code":"nge"},{"name":"Ngbaka Manza","code":"ngg"},{"name":"Nวng","code":"ngh"},{"name":"Ngizim","code":"ngi"},{"name":"Ngie","code":"ngj"},{"name":"Dalabon","code":"ngk"},{"name":"Lomwe","code":"ngl"},{"name":"Ngatik Men's Creole","code":"ngm"},{"name":"Ngwo","code":"ngn"},{"name":"Ngulu","code":"ngp"},{"name":"Ngoreme","code":"ngq"},{"name":"Ngurimi","code":"ngq"},{"name":"Engdewu","code":"ngr"},{"name":"Gvoko","code":"ngs"},{"name":"Kriang","code":"ngt"},{"name":"Ngeq","code":"ngt"},{"name":"Guerrero Nahuatl","code":"ngu"},{"name":"Nagumi","code":"ngv"},{"name":"Ngwaba","code":"ngw"},{"name":"Nggwahyi","code":"ngx"},{"name":"Tibea","code":"ngy"},{"name":"Ngungwel","code":"ngz"},{"name":"Nhanda","code":"nha"},{"name":"Beng","code":"nhb"},{"name":"Tabasco Nahuatl","code":"nhc"},{"name":"Ava Guaranรญ","code":"nhd"},{"name":"Chiripรก","code":"nhd"},{"name":"Eastern Huasteca Nahuatl","code":"nhe"},{"name":"Nhuwala","code":"nhf"},{"name":"Tetelcingo Nahuatl","code":"nhg"},{"name":"Nahari","code":"nhh"},{"name":"Zacatlรกn-Ahuacatlรกn-Tepetzintla Nahuatl","code":"nhi"},{"name":"Isthmus-Cosoleacaque Nahuatl","code":"nhk"},{"name":"Morelos Nahuatl","code":"nhm"},{"name":"Central Nahuatl","code":"nhn"},{"name":"Takuu","code":"nho"},{"name":"Isthmus-Pajapan Nahuatl","code":"nhp"},{"name":"Huaxcaleca Nahuatl","code":"nhq"},{"name":"Naro","code":"nhr"},{"name":"Ometepec Nahuatl","code":"nht"},{"name":"Noone","code":"nhu"},{"name":"Temascaltepec Nahuatl","code":"nhv"},{"name":"Western Huasteca Nahuatl","code":"nhw"},{"name":"Isthmus-Mecayapan Nahuatl","code":"nhx"},{"name":"Northern Oaxaca Nahuatl","code":"nhy"},{"name":"Santa Marรญa La Alta Nahuatl","code":"nhz"},{"name":"Nias","code":"nia"},{"name":"Nakame","code":"nib"},{"name":"Ngandi","code":"nid"},{"name":"Niellim","code":"nie"},{"name":"Nek","code":"nif"},{"name":"Ngalakgan","code":"nig"},{"name":"Nyiha (Tanzania)","code":"nih"},{"name":"Nii","code":"nii"},{"name":"Ngaju","code":"nij"},{"name":"Southern Nicobarese","code":"nik"},{"name":"Nila","code":"nil"},{"name":"Nilamba","code":"nim"},{"name":"Ninzo","code":"nin"},{"name":"Nganasan","code":"nio"},{"name":"Nandi","code":"niq"},{"name":"Nimboran","code":"nir"},{"name":"Nimi","code":"nis"},{"name":"Southeastern Kolami","code":"nit"},{"name":"Niuean","code":"niu"},{"name":"Gilyak","code":"niv"},{"name":"Nimo","code":"niw"},{"name":"Hema","code":"nix"},{"name":"Ngiti","code":"niy"},{"name":"Ningil","code":"niz"},{"name":"Nzanyi","code":"nja"},{"name":"Nocte Naga","code":"njb"},{"name":"Ndonde Hamba","code":"njd"},{"name":"Lotha Naga","code":"njh"},{"name":"Gudanji","code":"nji"},{"name":"Njen","code":"njj"},{"name":"Njalgulgule","code":"njl"},{"name":"Angami Naga","code":"njm"},{"name":"Liangmai Naga","code":"njn"},{"name":"Ao Naga","code":"njo"},{"name":"Njerep","code":"njr"},{"name":"Nisa","code":"njs"},{"name":"Ndyuka-Trio Pidgin","code":"njt"},{"name":"Ngadjunmaya","code":"nju"},{"name":"Kunyi","code":"njx"},{"name":"Njyem","code":"njy"},{"name":"Nyishi","code":"njz"},{"name":"Nkoya","code":"nka"},{"name":"Khoibu Naga","code":"nkb"},{"name":"Nkongho","code":"nkc"},{"name":"Koireng","code":"nkd"},{"name":"Duke","code":"nke"},{"name":"Inpui Naga","code":"nkf"},{"name":"Nekgini","code":"nkg"},{"name":"Khezha Naga","code":"nkh"},{"name":"Thangal Naga","code":"nki"},{"name":"Nakai","code":"nkj"},{"name":"Nokuku","code":"nkk"},{"name":"Namat","code":"nkm"},{"name":"Nkangala","code":"nkn"},{"name":"Nkonya","code":"nko"},{"name":"Niuatoputapu","code":"nkp"},{"name":"Nkami","code":"nkq"},{"name":"Nukuoro","code":"nkr"},{"name":"North Asmat","code":"nks"},{"name":"Nyika (Tanzania)","code":"nkt"},{"name":"Bouna Kulango","code":"nku"},{"name":"Nyika (Malawi and Zambia)","code":"nkv"},{"name":"Nkutu","code":"nkw"},{"name":"Nkoroo","code":"nkx"},{"name":"Nkari","code":"nkz"},{"name":"Ngombale","code":"nla"},{"name":"Nalca","code":"nlc"},{"name":"Dutch","code":"nld"},{"name":"Flemish","code":"nld"},{"name":"East Nyala","code":"nle"},{"name":"Gela","code":"nlg"},{"name":"Grangali","code":"nli"},{"name":"Nyali","code":"nlj"},{"name":"Ninia Yali","code":"nlk"},{"name":"Nihali","code":"nll"},{"name":"Mankiyali","code":"nlm"},{"name":"Ngul","code":"nlo"},{"name":"Lao Naga","code":"nlq"},{"name":"Nchumbulu","code":"nlu"},{"name":"Orizaba Nahuatl","code":"nlv"},{"name":"Walangama","code":"nlw"},{"name":"Nahali","code":"nlx"},{"name":"Nyamal","code":"nly"},{"name":"Nalรถgo","code":"nlz"},{"name":"Maram Naga","code":"nma"},{"name":"Big Nambas","code":"nmb"},{"name":"V'รซnen Taut","code":"nmb"},{"name":"Ngam","code":"nmc"},{"name":"Ndumu","code":"nmd"},{"name":"Mzieme Naga","code":"nme"},{"name":"Tangkhul Naga (India)","code":"nmf"},{"name":"Kwasio","code":"nmg"},{"name":"Monsang Naga","code":"nmh"},{"name":"Nyam","code":"nmi"},{"name":"Ngombe (Central African Republic)","code":"nmj"},{"name":"Namakura","code":"nmk"},{"name":"Ndemli","code":"nml"},{"name":"Manangba","code":"nmm"},{"name":"วƒXรณรต","code":"nmn"},{"name":"Moyon Naga","code":"nmo"},{"name":"Nimanbur","code":"nmp"},{"name":"Nambya","code":"nmq"},{"name":"Nimbari","code":"nmr"},{"name":"Letemboi","code":"nms"},{"name":"Namonuito","code":"nmt"},{"name":"Northeast Maidu","code":"nmu"},{"name":"Ngamini","code":"nmv"},{"name":"Nimoa","code":"nmw"},{"name":"Rifao","code":"nmw"},{"name":"Nama (Papua New Guinea)","code":"nmx"},{"name":"Namuyi","code":"nmy"},{"name":"Nawdm","code":"nmz"},{"name":"Nyangumarta","code":"nna"},{"name":"Nande","code":"nnb"},{"name":"Nancere","code":"nnc"},{"name":"West Ambae","code":"nnd"},{"name":"Ngandyera","code":"nne"},{"name":"Ngaing","code":"nnf"},{"name":"Maring Naga","code":"nng"},{"name":"Ngiemboon","code":"nnh"},{"name":"North Nuaulu","code":"nni"},{"name":"Nyangatom","code":"nnj"},{"name":"Nankina","code":"nnk"},{"name":"Northern Rengma Naga","code":"nnl"},{"name":"Namia","code":"nnm"},{"name":"Ngete","code":"nnn"},{"name":"Norwegian Nynorsk","code":"nno"},{"name":"Wancho Naga","code":"nnp"},{"name":"Ngindo","code":"nnq"},{"name":"Narungga","code":"nnr"},{"name":"Nanticoke","code":"nnt"},{"name":"Dwang","code":"nnu"},{"name":"Nugunu (Australia)","code":"nnv"},{"name":"Southern Nuni","code":"nnw"},{"name":"Nyangga","code":"nny"},{"name":"Nda'nda'","code":"nnz"},{"name":"Woun Meu","code":"noa"},{"name":"Norwegian Bokmรฅl","code":"nob"},{"name":"Nuk","code":"noc"},{"name":"Northern Thai","code":"nod"},{"name":"Nimadi","code":"noe"},{"name":"Nomane","code":"nof"},{"name":"Nogai","code":"nog"},{"name":"Nomu","code":"noh"},{"name":"Noiri","code":"noi"},{"name":"Nonuya","code":"noj"},{"name":"Nooksack","code":"nok"},{"name":"Nomlaki","code":"nol"},{"name":"Nocamรกn","code":"nom"},{"name":"Old Norse","code":"non"},{"name":"Numanggang","code":"nop"},{"name":"Ngongo","code":"noq"},{"name":"Norwegian","code":"nor"},{"name":"Eastern Nisu","code":"nos"},{"name":"Nomatsiguenga","code":"not"},{"name":"Ewage-Notu","code":"nou"},{"name":"Novial","code":"nov"},{"name":"Nyambo","code":"now"},{"name":"Noy","code":"noy"},{"name":"Nayi","code":"noz"},{"name":"Nar Phu","code":"npa"},{"name":"Nupbikha","code":"npb"},{"name":"Ponyo-Gongwang Naga","code":"npg"},{"name":"Phom Naga","code":"nph"},{"name":"Nepali (individual language)","code":"npi"},{"name":"Southeastern Puebla Nahuatl","code":"npl"},{"name":"Mondropolon","code":"npn"},{"name":"Pochuri Naga","code":"npo"},{"name":"Nipsan","code":"nps"},{"name":"Puimei Naga","code":"npu"},{"name":"Noipx","code":"npx"},{"name":"Napu","code":"npy"},{"name":"Southern Nago","code":"nqg"},{"name":"Kura Ede Nago","code":"nqk"},{"name":"Ngendelengo","code":"nql"},{"name":"Ndom","code":"nqm"},{"name":"Nen","code":"nqn"},{"name":"N'Ko","code":"nqo"},{"name":"Kyan-Karyaw Naga","code":"nqq"},{"name":"Nteng","code":"nqt"},{"name":"Akyaung Ari Naga","code":"nqy"},{"name":"Ngom","code":"nra"},{"name":"Nara","code":"nrb"},{"name":"Noric","code":"nrc"},{"name":"Southern Rengma Naga","code":"nre"},{"name":"Guernรฉsiais","code":"nrf"},{"name":"Jรจrriais","code":"nrf"},{"name":"Narango","code":"nrg"},{"name":"Chokri Naga","code":"nri"},{"name":"Ngarla","code":"nrk"},{"name":"Ngarluma","code":"nrl"},{"name":"Narom","code":"nrm"},{"name":"Norn","code":"nrn"},{"name":"North Picene","code":"nrp"},{"name":"Nora","code":"nrr"},{"name":"Norra","code":"nrr"},{"name":"Northern Kalapuya","code":"nrt"},{"name":"Narua","code":"nru"},{"name":"Ngurmbur","code":"nrx"},{"name":"Lala","code":"nrz"},{"name":"Sangtam Naga","code":"nsa"},{"name":"Lower Nossob","code":"nsb"},{"name":"Nshi","code":"nsc"},{"name":"Southern Nisu","code":"nsd"},{"name":"Nsenga","code":"nse"},{"name":"Northwestern Nisu","code":"nsf"},{"name":"Ngasa","code":"nsg"},{"name":"Ngoshie","code":"nsh"},{"name":"Nigerian Sign Language","code":"nsi"},{"name":"Naskapi","code":"nsk"},{"name":"Norwegian Sign Language","code":"nsl"},{"name":"Sumi Naga","code":"nsm"},{"name":"Nehan","code":"nsn"},{"name":"Northern Sotho","code":"nso"},{"name":"Pedi","code":"nso"},{"name":"Sepedi","code":"nso"},{"name":"Nepalese Sign Language","code":"nsp"},{"name":"Northern Sierra Miwok","code":"nsq"},{"name":"Maritime Sign Language","code":"nsr"},{"name":"Nali","code":"nss"},{"name":"Tase Naga","code":"nst"},{"name":"Sierra Negra Nahuatl","code":"nsu"},{"name":"Southwestern Nisu","code":"nsv"},{"name":"Navut","code":"nsw"},{"name":"Nsongo","code":"nsx"},{"name":"Nasal","code":"nsy"},{"name":"Nisenan","code":"nsz"},{"name":"Northern Tidung","code":"ntd"},{"name":"Nathembo","code":"nte"},{"name":"Ngantangarra","code":"ntg"},{"name":"Natioro","code":"nti"},{"name":"Ngaanyatjarra","code":"ntj"},{"name":"Ikoma-Nata-Isenye","code":"ntk"},{"name":"Nateni","code":"ntm"},{"name":"Ntomba","code":"nto"},{"name":"Northern Tepehuan","code":"ntp"},{"name":"Delo","code":"ntr"},{"name":"Natรผgu","code":"ntu"},{"name":"Nottoway","code":"ntw"},{"name":"Tangkhul Naga (Myanmar)","code":"ntx"},{"name":"Mantsi","code":"nty"},{"name":"Natanzi","code":"ntz"},{"name":"Yuanga","code":"nua"},{"name":"Nukuini","code":"nuc"},{"name":"Ngala","code":"nud"},{"name":"Ngundu","code":"nue"},{"name":"Nusu","code":"nuf"},{"name":"Nungali","code":"nug"},{"name":"Ndunda","code":"nuh"},{"name":"Ngumbi","code":"nui"},{"name":"Nyole","code":"nuj"},{"name":"Nuuchahnulth","code":"nuk"},{"name":"Nuu-chah-nulth","code":"nuk"},{"name":"Nusa Laut","code":"nul"},{"name":"Niuafo'ou","code":"num"},{"name":"Anong","code":"nun"},{"name":"Nguรดn","code":"nuo"},{"name":"Nupe-Nupe-Tako","code":"nup"},{"name":"Nukumanu","code":"nuq"},{"name":"Nukuria","code":"nur"},{"name":"Nuer","code":"nus"},{"name":"Nung (Viet Nam)","code":"nut"},{"name":"Ngbundu","code":"nuu"},{"name":"Northern Nuni","code":"nuv"},{"name":"Nguluwan","code":"nuw"},{"name":"Mehek","code":"nux"},{"name":"Nunggubuyu","code":"nuy"},{"name":"Tlamacazapa Nahuatl","code":"nuz"},{"name":"Nasarian","code":"nvh"},{"name":"Namiae","code":"nvm"},{"name":"Nyokon","code":"nvo"},{"name":"Nawathinehena","code":"nwa"},{"name":"Nyabwa","code":"nwb"},{"name":"Classical Nepal Bhasa","code":"nwc"},{"name":"Classical Newari","code":"nwc"},{"name":"Old Newari","code":"nwc"},{"name":"Ngwe","code":"nwe"},{"name":"Ngayawung","code":"nwg"},{"name":"Southwest Tanna","code":"nwi"},{"name":"Nyamusa-Molo","code":"nwm"},{"name":"Nauo","code":"nwo"},{"name":"Nawaru","code":"nwr"},{"name":"Middle Newar","code":"nwx"},{"name":"Nottoway-Meherrin","code":"nwy"},{"name":"Nauete","code":"nxa"},{"name":"Ngando (Democratic Republic of Congo)","code":"nxd"},{"name":"Nage","code":"nxe"},{"name":"Ngad'a","code":"nxg"},{"name":"Nindi","code":"nxi"},{"name":"Koki Naga","code":"nxk"},{"name":"South Nuaulu","code":"nxl"},{"name":"Numidian","code":"nxm"},{"name":"Ngawun","code":"nxn"},{"name":"Ndambomo","code":"nxo"},{"name":"Naxi","code":"nxq"},{"name":"Ninggerum","code":"nxr"},{"name":"Nafri","code":"nxx"},{"name":"Chewa","code":"nya"},{"name":"Chichewa","code":"nya"},{"name":"Nyanja","code":"nya"},{"name":"Nyangbo","code":"nyb"},{"name":"Nyanga-li","code":"nyc"},{"name":"Nyore","code":"nyd"},{"name":"Olunyole","code":"nyd"},{"name":"Nyengo","code":"nye"},{"name":"Giryama","code":"nyf"},{"name":"Kigiryama","code":"nyf"},{"name":"Nyindu","code":"nyg"},{"name":"Nyikina","code":"nyh"},{"name":"Ama (Sudan)","code":"nyi"},{"name":"Nyanga","code":"nyj"},{"name":"Nyaneka","code":"nyk"},{"name":"Nyeu","code":"nyl"},{"name":"Nyamwezi","code":"nym"},{"name":"Nyankole","code":"nyn"},{"name":"Nyoro","code":"nyo"},{"name":"Nyang'i","code":"nyp"},{"name":"Nayini","code":"nyq"},{"name":"Nyiha (Malawi)","code":"nyr"},{"name":"Nyungar","code":"nys"},{"name":"Nyawaygi","code":"nyt"},{"name":"Nyungwe","code":"nyu"},{"name":"Nyulnyul","code":"nyv"},{"name":"Nyaw","code":"nyw"},{"name":"Nganyaywana","code":"nyx"},{"name":"Nyakyusa-Ngonde","code":"nyy"},{"name":"Tigon Mbembe","code":"nza"},{"name":"Njebi","code":"nzb"},{"name":"Nzadi","code":"nzd"},{"name":"Nzima","code":"nzi"},{"name":"Nzakara","code":"nzk"},{"name":"Zeme Naga","code":"nzm"},{"name":"New Zealand Sign Language","code":"nzs"},{"name":"Teke-Nzikou","code":"nzu"},{"name":"Nzakambay","code":"nzy"},{"name":"Nanga Dama Dogon","code":"nzz"},{"name":"Orok","code":"oaa"},{"name":"Oroch","code":"oac"},{"name":"Ancient Aramaic (up to 700 BCE)","code":"oar"},{"name":"Old Aramaic (up to 700 BCE)","code":"oar"},{"name":"Old Avar","code":"oav"},{"name":"Obispeรฑo","code":"obi"},{"name":"Southern Bontok","code":"obk"},{"name":"Oblo","code":"obl"},{"name":"Moabite","code":"obm"},{"name":"Obo Manobo","code":"obo"},{"name":"Old Burmese","code":"obr"},{"name":"Old Breton","code":"obt"},{"name":"Obulom","code":"obu"},{"name":"Ocaina","code":"oca"},{"name":"Old Chinese","code":"och"},{"name":"Occitan (post 1500)","code":"oci"},{"name":"Old Cham","code":"ocm"},{"name":"Old Cornish","code":"oco"},{"name":"Atzingo Matlatzinca","code":"ocu"},{"name":"Odut","code":"oda"},{"name":"Od","code":"odk"},{"name":"Old Dutch","code":"odt"},{"name":"Odual","code":"odu"},{"name":"Ofo","code":"ofo"},{"name":"Old Frisian","code":"ofs"},{"name":"Efutop","code":"ofu"},{"name":"Ogbia","code":"ogb"},{"name":"Ogbah","code":"ogc"},{"name":"Old Georgian","code":"oge"},{"name":"Ogbogolo","code":"ogg"},{"name":"Khana","code":"ogo"},{"name":"Ogbronuagum","code":"ogu"},{"name":"Old Hittite","code":"oht"},{"name":"Old Hungarian","code":"ohu"},{"name":"Oirata","code":"oia"},{"name":"Inebu One","code":"oin"},{"name":"Northwestern Ojibwa","code":"ojb"},{"name":"Central Ojibwa","code":"ojc"},{"name":"Eastern Ojibwa","code":"ojg"},{"name":"Ojibwa","code":"oji"},{"name":"Old Japanese","code":"ojp"},{"name":"Severn Ojibwa","code":"ojs"},{"name":"Ontong Java","code":"ojv"},{"name":"Western Ojibwa","code":"ojw"},{"name":"Okanagan","code":"oka"},{"name":"Okobo","code":"okb"},{"name":"Kobo","code":"okc"},{"name":"Okodia","code":"okd"},{"name":"Okpe (Southwestern Edo)","code":"oke"},{"name":"Koko Babangk","code":"okg"},{"name":"Koresh-e Rostam","code":"okh"},{"name":"Okiek","code":"oki"},{"name":"Oko-Juwoi","code":"okj"},{"name":"Kwamtim One","code":"okk"},{"name":"Old Kentish Sign Language","code":"okl"},{"name":"Middle Korean (10th-16th cent.)","code":"okm"},{"name":"Oki-No-Erabu","code":"okn"},{"name":"Old Korean (3rd-9th cent.)","code":"oko"},{"name":"Kirike","code":"okr"},{"name":"Oko-Eni-Osayen","code":"oks"},{"name":"Oku","code":"oku"},{"name":"Orokaiva","code":"okv"},{"name":"Okpe (Northwestern Edo)","code":"okx"},{"name":"Old Khmer","code":"okz"},{"name":"Walungge","code":"ola"},{"name":"Mochi","code":"old"},{"name":"Olekha","code":"ole"},{"name":"Olkol","code":"olk"},{"name":"Oloma","code":"olm"},{"name":"Livvi","code":"olo"},{"name":"Olrat","code":"olr"},{"name":"Old Lithuanian","code":"olt"},{"name":"Kuvale","code":"olu"},{"name":"Omaha-Ponca","code":"oma"},{"name":"East Ambae","code":"omb"},{"name":"Mochica","code":"omc"},{"name":"Omagua","code":"omg"},{"name":"Omi","code":"omi"},{"name":"Omok","code":"omk"},{"name":"Ombo","code":"oml"},{"name":"Minoan","code":"omn"},{"name":"Utarmbung","code":"omo"},{"name":"Old Manipuri","code":"omp"},{"name":"Old Marathi","code":"omr"},{"name":"Omotik","code":"omt"},{"name":"Omurano","code":"omu"},{"name":"South Tairora","code":"omw"},{"name":"Old Mon","code":"omx"},{"name":"Old Malay","code":"omy"},{"name":"Ona","code":"ona"},{"name":"Lingao","code":"onb"},{"name":"Oneida","code":"one"},{"name":"Olo","code":"ong"},{"name":"Onin","code":"oni"},{"name":"Onjob","code":"onj"},{"name":"Kabore One","code":"onk"},{"name":"Onobasulu","code":"onn"},{"name":"Onondaga","code":"ono"},{"name":"Sartang","code":"onp"},{"name":"Northern One","code":"onr"},{"name":"Ono","code":"ons"},{"name":"Ontenu","code":"ont"},{"name":"Unua","code":"onu"},{"name":"Old Nubian","code":"onw"},{"name":"Onin Based Pidgin","code":"onx"},{"name":"Tohono O'odham","code":"ood"},{"name":"Ong","code":"oog"},{"name":"ร–nge","code":"oon"},{"name":"Oorlams","code":"oor"},{"name":"Old Ossetic","code":"oos"},{"name":"Okpamheri","code":"opa"},{"name":"Kopkaka","code":"opk"},{"name":"Oksapmin","code":"opm"},{"name":"Opao","code":"opo"},{"name":"Opata","code":"opt"},{"name":"Ofayรฉ","code":"opy"},{"name":"Oroha","code":"ora"},{"name":"Orma","code":"orc"},{"name":"Orejรณn","code":"ore"},{"name":"Oring","code":"org"},{"name":"Oroqen","code":"orh"},{"name":"Oriya (macrolanguage)","code":"ori"},{"name":"Oromo","code":"orm"},{"name":"Orang Kanaq","code":"orn"},{"name":"Orokolo","code":"oro"},{"name":"Oruma","code":"orr"},{"name":"Orang Seletar","code":"ors"},{"name":"Adivasi Oriya","code":"ort"},{"name":"Ormuri","code":"oru"},{"name":"Old Russian","code":"orv"},{"name":"Oro Win","code":"orw"},{"name":"Oro","code":"orx"},{"name":"Odia","code":"ory"},{"name":"Oriya (individual language)","code":"ory"},{"name":"Ormu","code":"orz"},{"name":"Osage","code":"osa"},{"name":"Oscan","code":"osc"},{"name":"Osing","code":"osi"},{"name":"Old Sundanese","code":"osn"},{"name":"Ososo","code":"oso"},{"name":"Old Spanish","code":"osp"},{"name":"Ossetian","code":"oss"},{"name":"Ossetic","code":"oss"},{"name":"Osatu","code":"ost"},{"name":"Southern One","code":"osu"},{"name":"Old Saxon","code":"osx"},{"name":"Ottoman Turkish (1500-1928)","code":"ota"},{"name":"Old Tibetan","code":"otb"},{"name":"Ot Danum","code":"otd"},{"name":"Mezquital Otomi","code":"ote"},{"name":"Oti","code":"oti"},{"name":"Old Turkish","code":"otk"},{"name":"Tilapa Otomi","code":"otl"},{"name":"Eastern Highland Otomi","code":"otm"},{"name":"Tenango Otomi","code":"otn"},{"name":"Querรฉtaro Otomi","code":"otq"},{"name":"Otoro","code":"otr"},{"name":"Estado de Mรฉxico Otomi","code":"ots"},{"name":"Temoaya Otomi","code":"ott"},{"name":"Otuke","code":"otu"},{"name":"Ottawa","code":"otw"},{"name":"Texcatepec Otomi","code":"otx"},{"name":"Old Tamil","code":"oty"},{"name":"Ixtenco Otomi","code":"otz"},{"name":"Tagargrent","code":"oua"},{"name":"Glio-Oubi","code":"oub"},{"name":"Oune","code":"oue"},{"name":"Old Uighur","code":"oui"},{"name":"Ouma","code":"oum"},{"name":"Elfdalian","code":"ovd"},{"name":"ร–vdalian","code":"ovd"},{"name":"Owiniga","code":"owi"},{"name":"Old Welsh","code":"owl"},{"name":"Oy","code":"oyb"},{"name":"Oyda","code":"oyd"},{"name":"Wayampi","code":"oym"},{"name":"Oya'oya","code":"oyy"},{"name":"Koonzime","code":"ozm"},{"name":"Parecรญs","code":"pab"},{"name":"Pacoh","code":"pac"},{"name":"Paumarรญ","code":"pad"},{"name":"Pagibete","code":"pae"},{"name":"Paranawรกt","code":"paf"},{"name":"Pangasinan","code":"pag"},{"name":"Tenharim","code":"pah"},{"name":"Pe","code":"pai"},{"name":"Parakanรฃ","code":"pak"},{"name":"Pahlavi","code":"pal"},{"name":"Kapampangan","code":"pam"},{"name":"Pampanga","code":"pam"},{"name":"Panjabi","code":"pan"},{"name":"Punjabi","code":"pan"},{"name":"Northern Paiute","code":"pao"},{"name":"Papiamento","code":"pap"},{"name":"Parya","code":"paq"},{"name":"Panamint","code":"par"},{"name":"Timbisha","code":"par"},{"name":"Papasena","code":"pas"},{"name":"Palauan","code":"pau"},{"name":"Pakaรกsnovos","code":"pav"},{"name":"Pawnee","code":"paw"},{"name":"Pankararรฉ","code":"pax"},{"name":"Pech","code":"pay"},{"name":"Pankararรบ","code":"paz"},{"name":"Pรกez","code":"pbb"},{"name":"Patamona","code":"pbc"},{"name":"Mezontla Popoloca","code":"pbe"},{"name":"Coyotepec Popoloca","code":"pbf"},{"name":"Paraujano","code":"pbg"},{"name":"E'รฑapa Woromaipu","code":"pbh"},{"name":"Parkwa","code":"pbi"},{"name":"Mak (Nigeria)","code":"pbl"},{"name":"Puebla Mazatec","code":"pbm"},{"name":"Kpasam","code":"pbn"},{"name":"Papel","code":"pbo"},{"name":"Badyara","code":"pbp"},{"name":"Pangwa","code":"pbr"},{"name":"Central Pame","code":"pbs"},{"name":"Southern Pashto","code":"pbt"},{"name":"Northern Pashto","code":"pbu"},{"name":"Pnar","code":"pbv"},{"name":"Pyu (Papua New Guinea)","code":"pby"},{"name":"Santa Inรฉs Ahuatempan Popoloca","code":"pca"},{"name":"Pear","code":"pcb"},{"name":"Bouyei","code":"pcc"},{"name":"Picard","code":"pcd"},{"name":"Ruching Palaung","code":"pce"},{"name":"Paliyan","code":"pcf"},{"name":"Paniya","code":"pcg"},{"name":"Pardhan","code":"pch"},{"name":"Duruwa","code":"pci"},{"name":"Parenga","code":"pcj"},{"name":"Paite Chin","code":"pck"},{"name":"Pardhi","code":"pcl"},{"name":"Nigerian Pidgin","code":"pcm"},{"name":"Piti","code":"pcn"},{"name":"Pacahuara","code":"pcp"},{"name":"Pyapun","code":"pcw"},{"name":"Anam","code":"pda"},{"name":"Pennsylvania German","code":"pdc"},{"name":"Pa Di","code":"pdi"},{"name":"Fedan","code":"pdn"},{"name":"Podena","code":"pdn"},{"name":"Padoe","code":"pdo"},{"name":"Plautdietsch","code":"pdt"},{"name":"Kayan","code":"pdu"},{"name":"Peranakan Indonesian","code":"pea"},{"name":"Eastern Pomo","code":"peb"},{"name":"Mala (Papua New Guinea)","code":"ped"},{"name":"Taje","code":"pee"},{"name":"Northeastern Pomo","code":"pef"},{"name":"Pengo","code":"peg"},{"name":"Bonan","code":"peh"},{"name":"Chichimeca-Jonaz","code":"pei"},{"name":"Northern Pomo","code":"pej"},{"name":"Penchal","code":"pek"},{"name":"Pekal","code":"pel"},{"name":"Phende","code":"pem"},{"name":"Old Persian (ca. 600-400 B.C.)","code":"peo"},{"name":"Kunja","code":"pep"},{"name":"Southern Pomo","code":"peq"},{"name":"Iranian Persian","code":"pes"},{"name":"Pรฉmono","code":"pev"},{"name":"Petats","code":"pex"},{"name":"Petjo","code":"pey"},{"name":"Eastern Penan","code":"pez"},{"name":"Pรกรกfang","code":"pfa"},{"name":"Pere","code":"pfe"},{"name":"Pfaelzisch","code":"pfl"},{"name":"Sudanese Creole Arabic","code":"pga"},{"name":"Gฤndhฤrฤซ","code":"pgd"},{"name":"Pangwali","code":"pgg"},{"name":"Pagi","code":"pgi"},{"name":"Rerep","code":"pgk"},{"name":"Primitive Irish","code":"pgl"},{"name":"Paelignian","code":"pgn"},{"name":"Pangseng","code":"pgs"},{"name":"Pagu","code":"pgu"},{"name":"Papua New Guinean Sign Language","code":"pgz"},{"name":"Pa-Hng","code":"pha"},{"name":"Phudagi","code":"phd"},{"name":"Phuong","code":"phg"},{"name":"Phukha","code":"phh"},{"name":"Phake","code":"phk"},{"name":"Palula","code":"phl"},{"name":"Phalura","code":"phl"},{"name":"Phimbi","code":"phm"},{"name":"Phoenician","code":"phn"},{"name":"Phunoi","code":"pho"},{"name":"Phana'","code":"phq"},{"name":"Pahari-Potwari","code":"phr"},{"name":"Phu Thai","code":"pht"},{"name":"Phuan","code":"phu"},{"name":"Pahlavani","code":"phv"},{"name":"Phangduwali","code":"phw"},{"name":"Pima Bajo","code":"pia"},{"name":"Yine","code":"pib"},{"name":"Pinji","code":"pic"},{"name":"Piaroa","code":"pid"},{"name":"Piro","code":"pie"},{"name":"Pingelapese","code":"pif"},{"name":"Pisabo","code":"pig"},{"name":"Pitcairn-Norfolk","code":"pih"},{"name":"Pini","code":"pii"},{"name":"Pijao","code":"pij"},{"name":"Yom","code":"pil"},{"name":"Powhatan","code":"pim"},{"name":"Piame","code":"pin"},{"name":"Piapoco","code":"pio"},{"name":"Pero","code":"pip"},{"name":"Piratapuyo","code":"pir"},{"name":"Pijin","code":"pis"},{"name":"Pitta Pitta","code":"pit"},{"name":"Pintupi-Luritja","code":"piu"},{"name":"Pileni","code":"piv"},{"name":"Vaeakau-Taumako","code":"piv"},{"name":"Pimbwe","code":"piw"},{"name":"Piu","code":"pix"},{"name":"Piya-Kwonci","code":"piy"},{"name":"Pije","code":"piz"},{"name":"Pitjantjatjara","code":"pjt"},{"name":"Ardhamฤgadhฤซ Prฤkrit","code":"pka"},{"name":"Kipfokomo","code":"pkb"},{"name":"Pokomo","code":"pkb"},{"name":"Paekche","code":"pkc"},{"name":"Pak-Tong","code":"pkg"},{"name":"Pankhu","code":"pkh"},{"name":"Pakanha","code":"pkn"},{"name":"Pรถkoot","code":"pko"},{"name":"Pukapuka","code":"pkp"},{"name":"Attapady Kurumba","code":"pkr"},{"name":"Pakistan Sign Language","code":"pks"},{"name":"Maleng","code":"pkt"},{"name":"Paku","code":"pku"},{"name":"Miani","code":"pla"},{"name":"Polonombauk","code":"plb"},{"name":"Central Palawano","code":"plc"},{"name":"Polari","code":"pld"},{"name":"Palu'e","code":"ple"},{"name":"Pilagรก","code":"plg"},{"name":"Paulohi","code":"plh"},{"name":"Pali","code":"pli"},{"name":"Polci","code":"plj"},{"name":"Kohistani Shina","code":"plk"},{"name":"Shwe Palaung","code":"pll"},{"name":"Palenquero","code":"pln"},{"name":"Oluta Popoluca","code":"plo"},{"name":"Palaic","code":"plq"},{"name":"Palaka Senoufo","code":"plr"},{"name":"San Marcos Tlacoyalco Popoloca","code":"pls"},{"name":"San Marcos Tlalcoyalco Popoloca","code":"pls"},{"name":"Plateau Malagasy","code":"plt"},{"name":"Palikรบr","code":"plu"},{"name":"Southwest Palawano","code":"plv"},{"name":"Brooke's Point Palawano","code":"plw"},{"name":"Bolyu","code":"ply"},{"name":"Paluan","code":"plz"},{"name":"Paama","code":"pma"},{"name":"Pambia","code":"pmb"},{"name":"Pallanganmiddang","code":"pmd"},{"name":"Pwaamei","code":"pme"},{"name":"Pamona","code":"pmf"},{"name":"Mฤhฤrฤแนฃแนญri Prฤkrit","code":"pmh"},{"name":"Northern Pumi","code":"pmi"},{"name":"Southern Pumi","code":"pmj"},{"name":"Pamlico","code":"pmk"},{"name":"Lingua Franca","code":"pml"},{"name":"Pomo","code":"pmm"},{"name":"Pam","code":"pmn"},{"name":"Pom","code":"pmo"},{"name":"Northern Pame","code":"pmq"},{"name":"Paynamar","code":"pmr"},{"name":"Piemontese","code":"pms"},{"name":"Tuamotuan","code":"pmt"},{"name":"Plains Miwok","code":"pmw"},{"name":"Poumei Naga","code":"pmx"},{"name":"Papuan Malay","code":"pmy"},{"name":"Southern Pame","code":"pmz"},{"name":"Punan Bah-Biau","code":"pna"},{"name":"Western Panjabi","code":"pnb"},{"name":"Pannei","code":"pnc"},{"name":"Mpinda","code":"pnd"},{"name":"Western Penan","code":"pne"},{"name":"Pangu","code":"png"},{"name":"Pongu","code":"png"},{"name":"Penrhyn","code":"pnh"},{"name":"Aoheng","code":"pni"},{"name":"Pinjarup","code":"pnj"},{"name":"Paunaka","code":"pnk"},{"name":"Paleni","code":"pnl"},{"name":"Punan Batu 1","code":"pnm"},{"name":"Pinai-Hagahai","code":"pnn"},{"name":"Panobo","code":"pno"},{"name":"Pancana","code":"pnp"},{"name":"Pana (Burkina Faso)","code":"pnq"},{"name":"Panim","code":"pnr"},{"name":"Ponosakan","code":"pns"},{"name":"Pontic","code":"pnt"},{"name":"Jiongnai Bunu","code":"pnu"},{"name":"Pinigura","code":"pnv"},{"name":"Banyjima","code":"pnw"},{"name":"Panytyima","code":"pnw"},{"name":"Phong-Kniang","code":"pnx"},{"name":"Pinyin","code":"pny"},{"name":"Pana (Central African Republic)","code":"pnz"},{"name":"Poqomam","code":"poc"},{"name":"San Juan Atzingo Popoloca","code":"poe"},{"name":"Poke","code":"pof"},{"name":"Potiguรกra","code":"pog"},{"name":"Poqomchi'","code":"poh"},{"name":"Highland Popoluca","code":"poi"},{"name":"Pokangรก","code":"pok"},{"name":"Polish","code":"pol"},{"name":"Southeastern Pomo","code":"pom"},{"name":"Pohnpeian","code":"pon"},{"name":"Central Pomo","code":"poo"},{"name":"Pwapwรข","code":"pop"},{"name":"Texistepec Popoluca","code":"poq"},{"name":"Portuguese","code":"por"},{"name":"Sayula Popoluca","code":"pos"},{"name":"Potawatomi","code":"pot"},{"name":"Upper Guinea Crioulo","code":"pov"},{"name":"San Felipe Otlaltepec Popoloca","code":"pow"},{"name":"Polabian","code":"pox"},{"name":"Pogolo","code":"poy"},{"name":"Papi","code":"ppe"},{"name":"Paipai","code":"ppi"},{"name":"Uma","code":"ppk"},{"name":"Nicarao","code":"ppl"},{"name":"Pipil","code":"ppl"},{"name":"Papuma","code":"ppm"},{"name":"Papapana","code":"ppn"},{"name":"Folopa","code":"ppo"},{"name":"Pelende","code":"ppp"},{"name":"Pei","code":"ppq"},{"name":"San Luรญs Temalacayuca Popoloca","code":"pps"},{"name":"Pare","code":"ppt"},{"name":"Papora","code":"ppu"},{"name":"Pa'a","code":"pqa"},{"name":"Malecite-Passamaquoddy","code":"pqm"},{"name":"Parachi","code":"prc"},{"name":"Parsi-Dari","code":"prd"},{"name":"Principense","code":"pre"},{"name":"Paranan","code":"prf"},{"name":"Prussian","code":"prg"},{"name":"Porohanon","code":"prh"},{"name":"Paicรฎ","code":"pri"},{"name":"Parauk","code":"prk"},{"name":"Peruvian Sign Language","code":"prl"},{"name":"Kibiri","code":"prm"},{"name":"Prasuni","code":"prn"},{"name":"Old Occitan (to 1500)","code":"pro"},{"name":"Old Provenรงal (to 1500)","code":"pro"},{"name":"Parsi","code":"prp"},{"name":"Ashรฉninka Perenรฉ","code":"prq"},{"name":"Puri","code":"prr"},{"name":"Afghan Persian","code":"prs"},{"name":"Dari","code":"prs"},{"name":"Phai","code":"prt"},{"name":"Puragi","code":"pru"},{"name":"Parawen","code":"prw"},{"name":"Purik","code":"prx"},{"name":"Providencia Sign Language","code":"prz"},{"name":"Asue Awyu","code":"psa"},{"name":"Persian Sign Language","code":"psc"},{"name":"Plains Indian Sign Language","code":"psd"},{"name":"Central Malay","code":"pse"},{"name":"Penang Sign Language","code":"psg"},{"name":"Southwest Pashai","code":"psh"},{"name":"Southwest Pashayi","code":"psh"},{"name":"Southeast Pashai","code":"psi"},{"name":"Southeast Pashayi","code":"psi"},{"name":"Puerto Rican Sign Language","code":"psl"},{"name":"Pauserna","code":"psm"},{"name":"Panasuan","code":"psn"},{"name":"Polish Sign Language","code":"pso"},{"name":"Philippine Sign Language","code":"psp"},{"name":"Pasi","code":"psq"},{"name":"Portuguese Sign Language","code":"psr"},{"name":"Kaulong","code":"pss"},{"name":"Central Pashto","code":"pst"},{"name":"Sauraseni Prฤkrit","code":"psu"},{"name":"Port Sandwich","code":"psw"},{"name":"Piscataway","code":"psy"},{"name":"Pai Tavytera","code":"pta"},{"name":"Pataxรณ Hรฃ-Ha-Hรฃe","code":"pth"},{"name":"Pindiini","code":"pti"},{"name":"Wangkatha","code":"pti"},{"name":"Patani","code":"ptn"},{"name":"Zo'รฉ","code":"pto"},{"name":"Patep","code":"ptp"},{"name":"Pattapu","code":"ptq"},{"name":"Piamatsina","code":"ptr"},{"name":"Enrekang","code":"ptt"},{"name":"Bambam","code":"ptu"},{"name":"Port Vato","code":"ptv"},{"name":"Pentlatch","code":"ptw"},{"name":"Pathiya","code":"pty"},{"name":"Western Highland Purepecha","code":"pua"},{"name":"Purum","code":"pub"},{"name":"Punan Merap","code":"puc"},{"name":"Punan Aput","code":"pud"},{"name":"Puelche","code":"pue"},{"name":"Punan Merah","code":"puf"},{"name":"Phuie","code":"pug"},{"name":"Puinave","code":"pui"},{"name":"Punan Tubu","code":"puj"},{"name":"Puma","code":"pum"},{"name":"Puoc","code":"puo"},{"name":"Pulabu","code":"pup"},{"name":"Puquina","code":"puq"},{"name":"Puruborรก","code":"pur"},{"name":"Pushto","code":"pus"},{"name":"Pashto","code":"pus"},{"name":"Putoh","code":"put"},{"name":"Punu","code":"puu"},{"name":"Puluwatese","code":"puw"},{"name":"Puare","code":"pux"},{"name":"Purisimeรฑo","code":"puy"},{"name":"Pawaia","code":"pwa"},{"name":"Panawa","code":"pwb"},{"name":"Gapapaiwa","code":"pwg"},{"name":"Patwin","code":"pwi"},{"name":"Molbog","code":"pwm"},{"name":"Paiwan","code":"pwn"},{"name":"Pwo Western Karen","code":"pwo"},{"name":"Powari","code":"pwr"},{"name":"Pwo Northern Karen","code":"pww"},{"name":"Quetzaltepec Mixe","code":"pxm"},{"name":"Pye Krumen","code":"pye"},{"name":"Fyam","code":"pym"},{"name":"Poyanรกwa","code":"pyn"},{"name":"Lengua de Seรฑas del Paraguay","code":"pys"},{"name":"Paraguayan Sign Language","code":"pys"},{"name":"Puyuma","code":"pyu"},{"name":"Pyu (Myanmar)","code":"pyx"},{"name":"Pyen","code":"pyy"},{"name":"Para Naga","code":"pzn"},{"name":"Quapaw","code":"qua"},{"name":"Huallaga Huรกnuco Quechua","code":"qub"},{"name":"K'iche'","code":"quc"},{"name":"Quichรฉ","code":"quc"},{"name":"Calderรณn Highland Quichua","code":"qud"},{"name":"Quechua","code":"que"},{"name":"Lambayeque Quechua","code":"quf"},{"name":"Chimborazo Highland Quichua","code":"qug"},{"name":"South Bolivian Quechua","code":"quh"},{"name":"Quileute","code":"qui"},{"name":"Chachapoyas Quechua","code":"quk"},{"name":"North Bolivian Quechua","code":"qul"},{"name":"Sipacapense","code":"qum"},{"name":"Quinault","code":"qun"},{"name":"Southern Pastaza Quechua","code":"qup"},{"name":"Quinqui","code":"quq"},{"name":"Yanahuanca Pasco Quechua","code":"qur"},{"name":"Santiago del Estero Quichua","code":"qus"},{"name":"Sacapulteco","code":"quv"},{"name":"Tena Lowland Quichua","code":"quw"},{"name":"Yauyos Quechua","code":"qux"},{"name":"Ayacucho Quechua","code":"quy"},{"name":"Cusco Quechua","code":"quz"},{"name":"Ambo-Pasco Quechua","code":"qva"},{"name":"Cajamarca Quechua","code":"qvc"},{"name":"Eastern Apurรญmac Quechua","code":"qve"},{"name":"Huamalรญes-Dos de Mayo Huรกnuco Quechua","code":"qvh"},{"name":"Imbabura Highland Quichua","code":"qvi"},{"name":"Loja Highland Quichua","code":"qvj"},{"name":"Cajatambo North Lima Quechua","code":"qvl"},{"name":"Margos-Yarowilca-Lauricocha Quechua","code":"qvm"},{"name":"North Junรญn Quechua","code":"qvn"},{"name":"Napo Lowland Quechua","code":"qvo"},{"name":"Pacaraos Quechua","code":"qvp"},{"name":"San Martรญn Quechua","code":"qvs"},{"name":"Huaylla Wanca Quechua","code":"qvw"},{"name":"Queyu","code":"qvy"},{"name":"Northern Pastaza Quichua","code":"qvz"},{"name":"Corongo Ancash Quechua","code":"qwa"},{"name":"Classical Quechua","code":"qwc"},{"name":"Huaylas Ancash Quechua","code":"qwh"},{"name":"Kuman (Russia)","code":"qwm"},{"name":"Sihuas Ancash Quechua","code":"qws"},{"name":"Kwalhioqua-Tlatskanai","code":"qwt"},{"name":"Chiquiรกn Ancash Quechua","code":"qxa"},{"name":"Chincha Quechua","code":"qxc"},{"name":"Panao Huรกnuco Quechua","code":"qxh"},{"name":"Salasaca Highland Quichua","code":"qxl"},{"name":"Northern Conchucos Ancash Quechua","code":"qxn"},{"name":"Southern Conchucos Ancash Quechua","code":"qxo"},{"name":"Puno Quechua","code":"qxp"},{"name":"Qashqa'i","code":"qxq"},{"name":"Caรฑar Highland Quichua","code":"qxr"},{"name":"Southern Qiang","code":"qxs"},{"name":"Santa Ana de Tusi Pasco Quechua","code":"qxt"},{"name":"Arequipa-La Uniรณn Quechua","code":"qxu"},{"name":"Jauja Wanca Quechua","code":"qxw"},{"name":"Quenya","code":"qya"},{"name":"Quiripi","code":"qyp"},{"name":"Dungmali","code":"raa"},{"name":"Camling","code":"rab"},{"name":"Rasawa","code":"rac"},{"name":"Rade","code":"rad"},{"name":"Western Meohang","code":"raf"},{"name":"Logooli","code":"rag"},{"name":"Lulogooli","code":"rag"},{"name":"Rabha","code":"rah"},{"name":"Ramoaaina","code":"rai"},{"name":"Rajasthani","code":"raj"},{"name":"Tulu-Bohuai","code":"rak"},{"name":"Ralte","code":"ral"},{"name":"Canela","code":"ram"},{"name":"Riantana","code":"ran"},{"name":"Rao","code":"rao"},{"name":"Rapanui","code":"rap"},{"name":"Saam","code":"raq"},{"name":"Cook Islands Maori","code":"rar"},{"name":"Rarotongan","code":"rar"},{"name":"Tegali","code":"ras"},{"name":"Razajerdi","code":"rat"},{"name":"Raute","code":"rau"},{"name":"Sampang","code":"rav"},{"name":"Rawang","code":"raw"},{"name":"Rang","code":"rax"},{"name":"Rapa","code":"ray"},{"name":"Rahambuu","code":"raz"},{"name":"Rumai Palaung","code":"rbb"},{"name":"Northern Bontok","code":"rbk"},{"name":"Miraya Bikol","code":"rbl"},{"name":"Barababaraba","code":"rbp"},{"name":"Rรฉunion Creole French","code":"rcf"},{"name":"Rudbari","code":"rdb"},{"name":"Rerau","code":"rea"},{"name":"Rembong","code":"reb"},{"name":"Rejang Kayan","code":"ree"},{"name":"Kara (Tanzania)","code":"reg"},{"name":"Reli","code":"rei"},{"name":"Rejang","code":"rej"},{"name":"Rendille","code":"rel"},{"name":"Remo","code":"rem"},{"name":"Rengao","code":"ren"},{"name":"Rer Bare","code":"rer"},{"name":"Reshe","code":"res"},{"name":"Retta","code":"ret"},{"name":"Reyesano","code":"rey"},{"name":"Roria","code":"rga"},{"name":"Romano-Greek","code":"rge"},{"name":"Rangkas","code":"rgk"},{"name":"Romagnol","code":"rgn"},{"name":"Resรญgaro","code":"rgr"},{"name":"Southern Roglai","code":"rgs"},{"name":"Ringgou","code":"rgu"},{"name":"Rohingya","code":"rhg"},{"name":"Yahang","code":"rhp"},{"name":"Riang (India)","code":"ria"},{"name":"Tarifit","code":"rif"},{"name":"Riang (Myanmar)","code":"ril"},{"name":"Riang Lang","code":"ril"},{"name":"Nyaturu","code":"rim"},{"name":"Nungu","code":"rin"},{"name":"Ribun","code":"rir"},{"name":"Ritharrngu","code":"rit"},{"name":"Riung","code":"riu"},{"name":"Rajong","code":"rjg"},{"name":"Raji","code":"rji"},{"name":"Rajbanshi","code":"rjs"},{"name":"Kraol","code":"rka"},{"name":"Rikbaktsa","code":"rkb"},{"name":"Rakahanga-Manihiki","code":"rkh"},{"name":"Rakhine","code":"rki"},{"name":"Marka","code":"rkm"},{"name":"Kamta","code":"rkt"},{"name":"Rangpuri","code":"rkt"},{"name":"Arakwal","code":"rkw"},{"name":"Rama","code":"rma"},{"name":"Rembarrnga","code":"rmb"},{"name":"Carpathian Romani","code":"rmc"},{"name":"Traveller Danish","code":"rmd"},{"name":"Angloromani","code":"rme"},{"name":"Kalo Finnish Romani","code":"rmf"},{"name":"Traveller Norwegian","code":"rmg"},{"name":"Murkim","code":"rmh"},{"name":"Lomavren","code":"rmi"},{"name":"Romkun","code":"rmk"},{"name":"Baltic Romani","code":"rml"},{"name":"Roma","code":"rmm"},{"name":"Balkan Romani","code":"rmn"},{"name":"Sinte Romani","code":"rmo"},{"name":"Rempi","code":"rmp"},{"name":"Calรณ","code":"rmq"},{"name":"Romanian Sign Language","code":"rms"},{"name":"Domari","code":"rmt"},{"name":"Tavringer Romani","code":"rmu"},{"name":"Romanova","code":"rmv"},{"name":"Welsh Romani","code":"rmw"},{"name":"Romam","code":"rmx"},{"name":"Vlax Romani","code":"rmy"},{"name":"Marma","code":"rmz"},{"name":"Ruund","code":"rnd"},{"name":"Ronga","code":"rng"},{"name":"Ranglong","code":"rnl"},{"name":"Roon","code":"rnn"},{"name":"Rongpo","code":"rnp"},{"name":"Nari Nari","code":"rnr"},{"name":"Rungwa","code":"rnw"},{"name":"Tae'","code":"rob"},{"name":"Cacgia Roglai","code":"roc"},{"name":"Rogo","code":"rod"},{"name":"Ronji","code":"roe"},{"name":"Rombo","code":"rof"},{"name":"Northern Roglai","code":"rog"},{"name":"Romansh","code":"roh"},{"name":"Romblomanon","code":"rol"},{"name":"Romany","code":"rom"},{"name":"Romanian","code":"ron"},{"name":"Moldavian","code":"ron"},{"name":"Moldovan","code":"ron"},{"name":"Rotokas","code":"roo"},{"name":"Kriol","code":"rop"},{"name":"Rongga","code":"ror"},{"name":"Runga","code":"rou"},{"name":"Dela-Oenale","code":"row"},{"name":"Repanbitip","code":"rpn"},{"name":"Rapting","code":"rpt"},{"name":"Ririo","code":"rri"},{"name":"Waima","code":"rro"},{"name":"Arritinngithigh","code":"rrt"},{"name":"Romano-Serbian","code":"rsb"},{"name":"Russian Sign Language","code":"rsl"},{"name":"Miriwoong Sign Language","code":"rsm"},{"name":"Rungtu Chin","code":"rtc"},{"name":"Ratahan","code":"rth"},{"name":"Rotuman","code":"rtm"},{"name":"Yurats","code":"rts"},{"name":"Rathawi","code":"rtw"},{"name":"Gungu","code":"rub"},{"name":"Ruuli","code":"ruc"},{"name":"Rusyn","code":"rue"},{"name":"Luguru","code":"ruf"},{"name":"Roviana","code":"rug"},{"name":"Ruga","code":"ruh"},{"name":"Rufiji","code":"rui"},{"name":"Che","code":"ruk"},{"name":"Rundi","code":"run"},{"name":"Istro Romanian","code":"ruo"},{"name":"Aromanian","code":"rup"},{"name":"Arumanian","code":"rup"},{"name":"Macedo-Romanian","code":"rup"},{"name":"Megleno Romanian","code":"ruq"},{"name":"Russian","code":"rus"},{"name":"Rutul","code":"rut"},{"name":"Lanas Lobu","code":"ruu"},{"name":"Mala (Nigeria)","code":"ruy"},{"name":"Ruma","code":"ruz"},{"name":"Rawo","code":"rwa"},{"name":"Rwa","code":"rwk"},{"name":"Ruwila","code":"rwl"},{"name":"Amba (Uganda)","code":"rwm"},{"name":"Rawa","code":"rwo"},{"name":"Marwari (India)","code":"rwr"},{"name":"Ngardi","code":"rxd"},{"name":"Garuwali","code":"rxw"},{"name":"Karuwali","code":"rxw"},{"name":"Northern Amami-Oshima","code":"ryn"},{"name":"Yaeyama","code":"rys"},{"name":"Central Okinawan","code":"ryu"},{"name":"Rฤziแธฅฤซ","code":"rzh"},{"name":"Saba","code":"saa"},{"name":"Buglere","code":"sab"},{"name":"Meskwaki","code":"sac"},{"name":"Sandawe","code":"sad"},{"name":"Sabanรช","code":"sae"},{"name":"Safaliba","code":"saf"},{"name":"Sango","code":"sag"},{"name":"Yakut","code":"sah"},{"name":"Sahu","code":"saj"},{"name":"Sake","code":"sak"},{"name":"Samaritan Aramaic","code":"sam"},{"name":"Sanskrit","code":"san"},{"name":"Sause","code":"sao"},{"name":"Samburu","code":"saq"},{"name":"Saraveca","code":"sar"},{"name":"Sasak","code":"sas"},{"name":"Santali","code":"sat"},{"name":"Saleman","code":"sau"},{"name":"Saafi-Saafi","code":"sav"},{"name":"Sawi","code":"saw"},{"name":"Sa","code":"sax"},{"name":"Saya","code":"say"},{"name":"Saurashtra","code":"saz"},{"name":"Ngambay","code":"sba"},{"name":"Simbo","code":"sbb"},{"name":"Kele (Papua New Guinea)","code":"sbc"},{"name":"Southern Samo","code":"sbd"},{"name":"Saliba","code":"sbe"},{"name":"Chabu","code":"sbf"},{"name":"Shabo","code":"sbf"},{"name":"Seget","code":"sbg"},{"name":"Sori-Harengan","code":"sbh"},{"name":"Seti","code":"sbi"},{"name":"Surbakhal","code":"sbj"},{"name":"Safwa","code":"sbk"},{"name":"Botolan Sambal","code":"sbl"},{"name":"Sagala","code":"sbm"},{"name":"Sindhi Bhil","code":"sbn"},{"name":"Sabรผm","code":"sbo"},{"name":"Sangu (Tanzania)","code":"sbp"},{"name":"Sileibi","code":"sbq"},{"name":"Sembakung Murut","code":"sbr"},{"name":"Subiya","code":"sbs"},{"name":"Kimki","code":"sbt"},{"name":"Stod Bhoti","code":"sbu"},{"name":"Sabine","code":"sbv"},{"name":"Simba","code":"sbw"},{"name":"Seberuang","code":"sbx"},{"name":"Soli","code":"sby"},{"name":"Sara Kaba","code":"sbz"},{"name":"Chut","code":"scb"},{"name":"Dongxiang","code":"sce"},{"name":"San Miguel Creole French","code":"scf"},{"name":"Sanggau","code":"scg"},{"name":"Sakachep","code":"sch"},{"name":"Sri Lankan Creole Malay","code":"sci"},{"name":"Sadri","code":"sck"},{"name":"Shina","code":"scl"},{"name":"Sicilian","code":"scn"},{"name":"Scots","code":"sco"},{"name":"Helambu Sherpa","code":"scp"},{"name":"Hyolmo","code":"scp"},{"name":"Sa'och","code":"scq"},{"name":"North Slavey","code":"scs"},{"name":"Southern Katang","code":"sct"},{"name":"Shumcho","code":"scu"},{"name":"Sheni","code":"scv"},{"name":"Sha","code":"scw"},{"name":"Sicel","code":"scx"},{"name":"Toraja-Sa'dan","code":"sda"},{"name":"Shabak","code":"sdb"},{"name":"Sassarese Sardinian","code":"sdc"},{"name":"Surubu","code":"sde"},{"name":"Sarli","code":"sdf"},{"name":"Savi","code":"sdg"},{"name":"Southern Kurdish","code":"sdh"},{"name":"Suundi","code":"sdj"},{"name":"Sos Kundi","code":"sdk"},{"name":"Saudi Arabian Sign Language","code":"sdl"},{"name":"Gallurese Sardinian","code":"sdn"},{"name":"Bukar-Sadung Bidayuh","code":"sdo"},{"name":"Sherdukpen","code":"sdp"},{"name":"Semandang","code":"sdq"},{"name":"Oraon Sadri","code":"sdr"},{"name":"Sened","code":"sds"},{"name":"Shuadit","code":"sdt"},{"name":"Sarudu","code":"sdu"},{"name":"Sibu Melanau","code":"sdx"},{"name":"Sallands","code":"sdz"},{"name":"Semai","code":"sea"},{"name":"Shempire Senoufo","code":"seb"},{"name":"Sechelt","code":"sec"},{"name":"Sedang","code":"sed"},{"name":"Seneca","code":"see"},{"name":"Cebaara Senoufo","code":"sef"},{"name":"Segeju","code":"seg"},{"name":"Sena","code":"seh"},{"name":"Seri","code":"sei"},{"name":"Sene","code":"sej"},{"name":"Sekani","code":"sek"},{"name":"Selkup","code":"sel"},{"name":"Nanerigรฉ Sรฉnoufo","code":"sen"},{"name":"Suarmin","code":"seo"},{"name":"Sรฌcรฌtรฉ Sรฉnoufo","code":"sep"},{"name":"Senara Sรฉnoufo","code":"seq"},{"name":"Serrano","code":"ser"},{"name":"Koyraboro Senni Songhai","code":"ses"},{"name":"Sentani","code":"set"},{"name":"Serui-Laut","code":"seu"},{"name":"Nyarafolo Senoufo","code":"sev"},{"name":"Sewa Bay","code":"sew"},{"name":"Secoya","code":"sey"},{"name":"Senthang Chin","code":"sez"},{"name":"French Belgian Sign Language","code":"sfb"},{"name":"Langue des signes de Belgique Francophone","code":"sfb"},{"name":"Eastern Subanen","code":"sfe"},{"name":"Small Flowery Miao","code":"sfm"},{"name":"South African Sign Language","code":"sfs"},{"name":"Sehwi","code":"sfw"},{"name":"Old Irish (to 900)","code":"sga"},{"name":"Mag-antsi Ayta","code":"sgb"},{"name":"Kipsigis","code":"sgc"},{"name":"Surigaonon","code":"sgd"},{"name":"Segai","code":"sge"},{"name":"Swiss-German Sign Language","code":"sgg"},{"name":"Shughni","code":"sgh"},{"name":"Suga","code":"sgi"},{"name":"Surgujia","code":"sgj"},{"name":"Sangkong","code":"sgk"},{"name":"Singa","code":"sgm"},{"name":"Singpho","code":"sgp"},{"name":"Sangisari","code":"sgr"},{"name":"Samogitian","code":"sgs"},{"name":"Brokpake","code":"sgt"},{"name":"Salas","code":"sgu"},{"name":"Sebat Bet Gurage","code":"sgw"},{"name":"Sierra Leone Sign Language","code":"sgx"},{"name":"Sanglechi","code":"sgy"},{"name":"Sursurunga","code":"sgz"},{"name":"Shall-Zwall","code":"sha"},{"name":"Ninam","code":"shb"},{"name":"Sonde","code":"shc"},{"name":"Kundal Shahi","code":"shd"},{"name":"Sheko","code":"she"},{"name":"Shua","code":"shg"},{"name":"Shoshoni","code":"shh"},{"name":"Tachelhit","code":"shi"},{"name":"Shatt","code":"shj"},{"name":"Shilluk","code":"shk"},{"name":"Shendu","code":"shl"},{"name":"Shahrudi","code":"shm"},{"name":"Shan","code":"shn"},{"name":"Shanga","code":"sho"},{"name":"Shipibo-Conibo","code":"shp"},{"name":"Sala","code":"shq"},{"name":"Shi","code":"shr"},{"name":"Shuswap","code":"shs"},{"name":"Shasta","code":"sht"},{"name":"Chadian Arabic","code":"shu"},{"name":"Shehri","code":"shv"},{"name":"Shwai","code":"shw"},{"name":"She","code":"shx"},{"name":"Tachawit","code":"shy"},{"name":"Syenara Senoufo","code":"shz"},{"name":"Akkala Sami","code":"sia"},{"name":"Sebop","code":"sib"},{"name":"Sidamo","code":"sid"},{"name":"Simaa","code":"sie"},{"name":"Siamou","code":"sif"},{"name":"Paasaal","code":"sig"},{"name":"Sรฎshรซรซ","code":"sih"},{"name":"Zire","code":"sih"},{"name":"Shom Peng","code":"sii"},{"name":"Numbami","code":"sij"},{"name":"Sikiana","code":"sik"},{"name":"Tumulung Sisaala","code":"sil"},{"name":"Mende (Papua New Guinea)","code":"sim"},{"name":"Sinhala","code":"sin"},{"name":"Sinhalese","code":"sin"},{"name":"Sikkimese","code":"sip"},{"name":"Sonia","code":"siq"},{"name":"Siri","code":"sir"},{"name":"Siuslaw","code":"sis"},{"name":"Sinagen","code":"siu"},{"name":"Sumariup","code":"siv"},{"name":"Siwai","code":"siw"},{"name":"Sumau","code":"six"},{"name":"Sivandi","code":"siy"},{"name":"Siwi","code":"siz"},{"name":"Epena","code":"sja"},{"name":"Sajau Basap","code":"sjb"},{"name":"Kildin Sami","code":"sjd"},{"name":"Pite Sami","code":"sje"},{"name":"Assangori","code":"sjg"},{"name":"Kemi Sami","code":"sjk"},{"name":"Miji","code":"sjl"},{"name":"Sajalong","code":"sjl"},{"name":"Mapun","code":"sjm"},{"name":"Sindarin","code":"sjn"},{"name":"Xibe","code":"sjo"},{"name":"Surjapuri","code":"sjp"},{"name":"Siar-Lak","code":"sjr"},{"name":"Senhaja De Srair","code":"sjs"},{"name":"Ter Sami","code":"sjt"},{"name":"Ume Sami","code":"sju"},{"name":"Shawnee","code":"sjw"},{"name":"Skagit","code":"ska"},{"name":"Saek","code":"skb"},{"name":"Ma Manda","code":"skc"},{"name":"Southern Sierra Miwok","code":"skd"},{"name":"Seke (Vanuatu)","code":"ske"},{"name":"Sakirabiรก","code":"skf"},{"name":"Sakalava Malagasy","code":"skg"},{"name":"Sikule","code":"skh"},{"name":"Sika","code":"ski"},{"name":"Seke (Nepal)","code":"skj"},{"name":"Kutong","code":"skm"},{"name":"Kolibugan Subanon","code":"skn"},{"name":"Seko Tengah","code":"sko"},{"name":"Sekapan","code":"skp"},{"name":"Sininkere","code":"skq"},{"name":"Saraiki","code":"skr"},{"name":"Seraiki","code":"skr"},{"name":"Maia","code":"sks"},{"name":"Sakata","code":"skt"},{"name":"Sakao","code":"sku"},{"name":"Skou","code":"skv"},{"name":"Skepi Creole Dutch","code":"skw"},{"name":"Seko Padang","code":"skx"},{"name":"Sikaiana","code":"sky"},{"name":"Sekar","code":"skz"},{"name":"Sรกliba","code":"slc"},{"name":"Sissala","code":"sld"},{"name":"Sholaga","code":"sle"},{"name":"Swiss-Italian Sign Language","code":"slf"},{"name":"Selungai Murut","code":"slg"},{"name":"Southern Puget Sound Salish","code":"slh"},{"name":"Lower Silesian","code":"sli"},{"name":"Salumรก","code":"slj"},{"name":"Slovak","code":"slk"},{"name":"Salt-Yui","code":"sll"},{"name":"Pangutaran Sama","code":"slm"},{"name":"Salinan","code":"sln"},{"name":"Lamaholot","code":"slp"},{"name":"Salchuq","code":"slq"},{"name":"Salar","code":"slr"},{"name":"Singapore Sign Language","code":"sls"},{"name":"Sila","code":"slt"},{"name":"Selaru","code":"slu"},{"name":"Slovenian","code":"slv"},{"name":"Sialum","code":"slw"},{"name":"Salampasu","code":"slx"},{"name":"Selayar","code":"sly"},{"name":"Ma'ya","code":"slz"},{"name":"Southern Sami","code":"sma"},{"name":"Simbari","code":"smb"},{"name":"Som","code":"smc"},{"name":"Sama","code":"smd"},{"name":"Northern Sami","code":"sme"},{"name":"Auwe","code":"smf"},{"name":"Simbali","code":"smg"},{"name":"Samei","code":"smh"},{"name":"Lule Sami","code":"smj"},{"name":"Bolinao","code":"smk"},{"name":"Central Sama","code":"sml"},{"name":"Musasa","code":"smm"},{"name":"Inari Sami","code":"smn"},{"name":"Samoan","code":"smo"},{"name":"Samaritan","code":"smp"},{"name":"Samo","code":"smq"},{"name":"Simeulue","code":"smr"},{"name":"Skolt Sami","code":"sms"},{"name":"Simte","code":"smt"},{"name":"Somray","code":"smu"},{"name":"Samvedi","code":"smv"},{"name":"Sumbawa","code":"smw"},{"name":"Samba","code":"smx"},{"name":"Semnani","code":"smy"},{"name":"Simeku","code":"smz"},{"name":"Shona","code":"sna"},{"name":"Sebuyau","code":"snb"},{"name":"Sinaugoro","code":"snc"},{"name":"Sindhi","code":"snd"},{"name":"Bau Bidayuh","code":"sne"},{"name":"Noon","code":"snf"},{"name":"Sanga (Democratic Republic of Congo)","code":"sng"},{"name":"Sensi","code":"sni"},{"name":"Riverain Sango","code":"snj"},{"name":"Soninke","code":"snk"},{"name":"Sangil","code":"snl"},{"name":"Southern Ma'di","code":"snm"},{"name":"Siona","code":"snn"},{"name":"Snohomish","code":"sno"},{"name":"Siane","code":"snp"},{"name":"Sangu (Gabon)","code":"snq"},{"name":"Sihan","code":"snr"},{"name":"Nahavaq","code":"sns"},{"name":"South West Bay","code":"sns"},{"name":"Senggi","code":"snu"},{"name":"Viid","code":"snu"},{"name":"Sa'ban","code":"snv"},{"name":"Selee","code":"snw"},{"name":"Sam","code":"snx"},{"name":"Saniyo-Hiyewe","code":"sny"},{"name":"Kou","code":"snz"},{"name":"Thai Song","code":"soa"},{"name":"Sobei","code":"sob"},{"name":"So (Democratic Republic of Congo)","code":"soc"},{"name":"Songoora","code":"sod"},{"name":"Songomeno","code":"soe"},{"name":"Sogdian","code":"sog"},{"name":"Aka","code":"soh"},{"name":"Sonha","code":"soi"},{"name":"Soi","code":"soj"},{"name":"Sokoro","code":"sok"},{"name":"Solos","code":"sol"},{"name":"Somali","code":"som"},{"name":"Songo","code":"soo"},{"name":"Songe","code":"sop"},{"name":"Kanasi","code":"soq"},{"name":"Somrai","code":"sor"},{"name":"Seeku","code":"sos"},{"name":"Southern Sotho","code":"sot"},{"name":"Southern Thai","code":"sou"},{"name":"Sonsorol","code":"sov"},{"name":"Sowanda","code":"sow"},{"name":"Swo","code":"sox"},{"name":"Miyobe","code":"soy"},{"name":"Temi","code":"soz"},{"name":"Spanish","code":"spa"},{"name":"Castilian","code":"spa"},{"name":"Sepa (Indonesia)","code":"spb"},{"name":"Sapรฉ","code":"spc"},{"name":"Saep","code":"spd"},{"name":"Sepa (Papua New Guinea)","code":"spe"},{"name":"Sian","code":"spg"},{"name":"Saponi","code":"spi"},{"name":"Sengo","code":"spk"},{"name":"Selepet","code":"spl"},{"name":"Akukem","code":"spm"},{"name":"Sanapanรก","code":"spn"},{"name":"Spokane","code":"spo"},{"name":"Supyire Senoufo","code":"spp"},{"name":"Loreto-Ucayali Spanish","code":"spq"},{"name":"Saparua","code":"spr"},{"name":"Saposa","code":"sps"},{"name":"Spiti Bhoti","code":"spt"},{"name":"Sapuan","code":"spu"},{"name":"Kosli","code":"spv"},{"name":"Sambalpuri","code":"spv"},{"name":"South Picene","code":"spx"},{"name":"Sabaot","code":"spy"},{"name":"Shama-Sambuga","code":"sqa"},{"name":"Shau","code":"sqh"},{"name":"Albanian","code":"sqi"},{"name":"Albanian Sign Language","code":"sqk"},{"name":"Suma","code":"sqm"},{"name":"Susquehannock","code":"sqn"},{"name":"Sorkhei","code":"sqo"},{"name":"Sou","code":"sqq"},{"name":"Siculo Arabic","code":"sqr"},{"name":"Sri Lankan Sign Language","code":"sqs"},{"name":"Soqotri","code":"sqt"},{"name":"Squamish","code":"squ"},{"name":"Kufr Qassem Sign Language (KQSL)","code":"sqx"},{"name":"Saruga","code":"sra"},{"name":"Sora","code":"srb"},{"name":"Logudorese Sardinian","code":"src"},{"name":"Sardinian","code":"srd"},{"name":"Sara","code":"sre"},{"name":"Nafi","code":"srf"},{"name":"Sulod","code":"srg"},{"name":"Sarikoli","code":"srh"},{"name":"Siriano","code":"sri"},{"name":"Serudung Murut","code":"srk"},{"name":"Isirawa","code":"srl"},{"name":"Saramaccan","code":"srm"},{"name":"Sranan Tongo","code":"srn"},{"name":"Campidanese Sardinian","code":"sro"},{"name":"Serbian","code":"srp"},{"name":"Sirionรณ","code":"srq"},{"name":"Serer","code":"srr"},{"name":"Sarsi","code":"srs"},{"name":"Sauri","code":"srt"},{"name":"Suruรญ","code":"sru"},{"name":"Southern Sorsoganon","code":"srv"},{"name":"Serua","code":"srw"},{"name":"Sirmauri","code":"srx"},{"name":"Sera","code":"sry"},{"name":"Shahmirzadi","code":"srz"},{"name":"Southern Sama","code":"ssb"},{"name":"Suba-Simbiti","code":"ssc"},{"name":"Siroi","code":"ssd"},{"name":"Balangingi","code":"sse"},{"name":"Bangingih Sama","code":"sse"},{"name":"Thao","code":"ssf"},{"name":"Seimat","code":"ssg"},{"name":"Shihhi Arabic","code":"ssh"},{"name":"Sansi","code":"ssi"},{"name":"Sausi","code":"ssj"},{"name":"Sunam","code":"ssk"},{"name":"Western Sisaala","code":"ssl"},{"name":"Semnam","code":"ssm"},{"name":"Waata","code":"ssn"},{"name":"Sissano","code":"sso"},{"name":"Spanish Sign Language","code":"ssp"},{"name":"So'a","code":"ssq"},{"name":"Swiss-French Sign Language","code":"ssr"},{"name":"Sรด","code":"sss"},{"name":"Sinasina","code":"sst"},{"name":"Susuami","code":"ssu"},{"name":"Shark Bay","code":"ssv"},{"name":"Swati","code":"ssw"},{"name":"Samberigi","code":"ssx"},{"name":"Saho","code":"ssy"},{"name":"Sengseng","code":"ssz"},{"name":"Settla","code":"sta"},{"name":"Northern Subanen","code":"stb"},{"name":"Sentinel","code":"std"},{"name":"Liana-Seti","code":"ste"},{"name":"Seta","code":"stf"},{"name":"Trieng","code":"stg"},{"name":"Shelta","code":"sth"},{"name":"Bulo Stieng","code":"sti"},{"name":"Matya Samo","code":"stj"},{"name":"Arammba","code":"stk"},{"name":"Stellingwerfs","code":"stl"},{"name":"Setaman","code":"stm"},{"name":"Owa","code":"stn"},{"name":"Stoney","code":"sto"},{"name":"Southeastern Tepehuan","code":"stp"},{"name":"Saterfriesisch","code":"stq"},{"name":"Straits Salish","code":"str"},{"name":"Shumashti","code":"sts"},{"name":"Budeh Stieng","code":"stt"},{"name":"Samtao","code":"stu"},{"name":"Silt'e","code":"stv"},{"name":"Satawalese","code":"stw"},{"name":"Siberian Tatar","code":"sty"},{"name":"Sulka","code":"sua"},{"name":"Suku","code":"sub"},{"name":"Western Subanon","code":"suc"},{"name":"Suena","code":"sue"},{"name":"Suganga","code":"sug"},{"name":"Suki","code":"sui"},{"name":"Shubi","code":"suj"},{"name":"Sukuma","code":"suk"},{"name":"Sundanese","code":"sun"},{"name":"Bouni","code":"suo"},{"name":"Suri","code":"suq"},{"name":"Tirmaga-Chai Suri","code":"suq"},{"name":"Mwaghavul","code":"sur"},{"name":"Susu","code":"sus"},{"name":"Subtiaba","code":"sut"},{"name":"Puroik","code":"suv"},{"name":"Sumbwa","code":"suw"},{"name":"Sumerian","code":"sux"},{"name":"Suyรก","code":"suy"},{"name":"Sunwar","code":"suz"},{"name":"Svan","code":"sva"},{"name":"Ulau-Suain","code":"svb"},{"name":"Vincentian Creole English","code":"svc"},{"name":"Serili","code":"sve"},{"name":"Slovakian Sign Language","code":"svk"},{"name":"Slavomolisano","code":"svm"},{"name":"Savosavo","code":"svs"},{"name":"Skalvian","code":"svx"},{"name":"Swahili","code":"swa"},{"name":"Swahili (macrolanguage)","code":"swa"},{"name":"Maore Comorian","code":"swb"},{"name":"Congo Swahili","code":"swc"},{"name":"Swedish","code":"swe"},{"name":"Sere","code":"swf"},{"name":"Swabian","code":"swg"},{"name":"Kiswahili","code":"swh"},{"name":"Swahili (individual language)","code":"swh"},{"name":"Sui","code":"swi"},{"name":"Sira","code":"swj"},{"name":"Malawi Sena","code":"swk"},{"name":"Swedish Sign Language","code":"swl"},{"name":"Samosa","code":"swm"},{"name":"Sawknah","code":"swn"},{"name":"Shanenawa","code":"swo"},{"name":"Suau","code":"swp"},{"name":"Sharwa","code":"swq"},{"name":"Saweru","code":"swr"},{"name":"Seluwasan","code":"sws"},{"name":"Sawila","code":"swt"},{"name":"Suwawa","code":"swu"},{"name":"Shekhawati","code":"swv"},{"name":"Sowa","code":"sww"},{"name":"Suruahรก","code":"swx"},{"name":"Sarua","code":"swy"},{"name":"Suba","code":"sxb"},{"name":"Sicanian","code":"sxc"},{"name":"Sighu","code":"sxe"},{"name":"Shixing","code":"sxg"},{"name":"Shuhi","code":"sxg"},{"name":"Southern Kalapuya","code":"sxk"},{"name":"Selian","code":"sxl"},{"name":"Samre","code":"sxm"},{"name":"Sangir","code":"sxn"},{"name":"Sorothaptic","code":"sxo"},{"name":"Saaroa","code":"sxr"},{"name":"Sasaru","code":"sxs"},{"name":"Upper Saxon","code":"sxu"},{"name":"Saxwe Gbe","code":"sxw"},{"name":"Siang","code":"sya"},{"name":"Central Subanen","code":"syb"},{"name":"Classical Syriac","code":"syc"},{"name":"Seki","code":"syi"},{"name":"Sukur","code":"syk"},{"name":"Sylheti","code":"syl"},{"name":"Maya Samo","code":"sym"},{"name":"Senaya","code":"syn"},{"name":"Suoy","code":"syo"},{"name":"Syriac","code":"syr"},{"name":"Sinyar","code":"sys"},{"name":"Kagate","code":"syw"},{"name":"Samay","code":"syx"},{"name":"Al-Sayyid Bedouin Sign Language","code":"syy"},{"name":"Semelai","code":"sza"},{"name":"Ngalum","code":"szb"},{"name":"Semaq Beri","code":"szc"},{"name":"Seru","code":"szd"},{"name":"Seze","code":"sze"},{"name":"Sengele","code":"szg"},{"name":"Silesian","code":"szl"},{"name":"Sula","code":"szn"},{"name":"Suabo","code":"szp"},{"name":"Solomon Islands Sign Language","code":"szs"},{"name":"Isu (Fako Division)","code":"szv"},{"name":"Sawai","code":"szw"},{"name":"Sakizaya","code":"szy"},{"name":"Lower Tanana","code":"taa"},{"name":"Tabassaran","code":"tab"},{"name":"Lowland Tarahumara","code":"tac"},{"name":"Tause","code":"tad"},{"name":"Tariana","code":"tae"},{"name":"Tapirapรฉ","code":"taf"},{"name":"Tagoi","code":"tag"},{"name":"Tahitian","code":"tah"},{"name":"Eastern Tamang","code":"taj"},{"name":"Tala","code":"tak"},{"name":"Tal","code":"tal"},{"name":"Tamil","code":"tam"},{"name":"Tangale","code":"tan"},{"name":"Yami","code":"tao"},{"name":"Taabwa","code":"tap"},{"name":"Tamasheq","code":"taq"},{"name":"Central Tarahumara","code":"tar"},{"name":"Tay Boi","code":"tas"},{"name":"Tatar","code":"tat"},{"name":"Upper Tanana","code":"tau"},{"name":"Tatuyo","code":"tav"},{"name":"Tai","code":"taw"},{"name":"Tamki","code":"tax"},{"name":"Atayal","code":"tay"},{"name":"Tocho","code":"taz"},{"name":"Aikanรฃ","code":"tba"},{"name":"Takia","code":"tbc"},{"name":"Kaki Ae","code":"tbd"},{"name":"Tanimbili","code":"tbe"},{"name":"Mandara","code":"tbf"},{"name":"North Tairora","code":"tbg"},{"name":"Dharawal","code":"tbh"},{"name":"Thurawal","code":"tbh"},{"name":"Gaam","code":"tbi"},{"name":"Tiang","code":"tbj"},{"name":"Calamian Tagbanwa","code":"tbk"},{"name":"Tboli","code":"tbl"},{"name":"Tagbu","code":"tbm"},{"name":"Barro Negro Tunebo","code":"tbn"},{"name":"Tawala","code":"tbo"},{"name":"Diebroud","code":"tbp"},{"name":"Taworta","code":"tbp"},{"name":"Tumtum","code":"tbr"},{"name":"Tanguat","code":"tbs"},{"name":"Tembo (Kitembo)","code":"tbt"},{"name":"Tubar","code":"tbu"},{"name":"Tobo","code":"tbv"},{"name":"Tagbanwa","code":"tbw"},{"name":"Kapin","code":"tbx"},{"name":"Tabaru","code":"tby"},{"name":"Ditammari","code":"tbz"},{"name":"Ticuna","code":"tca"},{"name":"Tanacross","code":"tcb"},{"name":"Datooga","code":"tcc"},{"name":"Tafi","code":"tcd"},{"name":"Southern Tutchone","code":"tce"},{"name":"Malinaltepec Me'phaa","code":"tcf"},{"name":"Malinaltepec Tlapanec","code":"tcf"},{"name":"Tamagario","code":"tcg"},{"name":"Turks And Caicos Creole English","code":"tch"},{"name":"Wรกra","code":"tci"},{"name":"Tchitchege","code":"tck"},{"name":"Taman (Myanmar)","code":"tcl"},{"name":"Tanahmerah","code":"tcm"},{"name":"Tichurong","code":"tcn"},{"name":"Taungyo","code":"tco"},{"name":"Tawr Chin","code":"tcp"},{"name":"Kaiy","code":"tcq"},{"name":"Torres Strait Creole","code":"tcs"},{"name":"Yumplatok","code":"tcs"},{"name":"T'en","code":"tct"},{"name":"Southeastern Tarahumara","code":"tcu"},{"name":"Tecpatlรกn Totonac","code":"tcw"},{"name":"Toda","code":"tcx"},{"name":"Tulu","code":"tcy"},{"name":"Thado Chin","code":"tcz"},{"name":"Tagdal","code":"tda"},{"name":"Panchpargania","code":"tdb"},{"name":"Emberรก-Tadรณ","code":"tdc"},{"name":"Tai Nรผa","code":"tdd"},{"name":"Tiranige Diga Dogon","code":"tde"},{"name":"Talieng","code":"tdf"},{"name":"Western Tamang","code":"tdg"},{"name":"Thulung","code":"tdh"},{"name":"Tomadino","code":"tdi"},{"name":"Tajio","code":"tdj"},{"name":"Tambas","code":"tdk"},{"name":"Sur","code":"tdl"},{"name":"Taruma","code":"tdm"},{"name":"Tondano","code":"tdn"},{"name":"Teme","code":"tdo"},{"name":"Tita","code":"tdq"},{"name":"Todrah","code":"tdr"},{"name":"Doutai","code":"tds"},{"name":"Tetun Dili","code":"tdt"},{"name":"Toro","code":"tdv"},{"name":"Tandroy-Mahafaly Malagasy","code":"tdx"},{"name":"Tadyawan","code":"tdy"},{"name":"Temiar","code":"tea"},{"name":"Tetete","code":"teb"},{"name":"Terik","code":"tec"},{"name":"Tepo Krumen","code":"ted"},{"name":"Huehuetla Tepehua","code":"tee"},{"name":"Teressa","code":"tef"},{"name":"Teke-Tege","code":"teg"},{"name":"Tehuelche","code":"teh"},{"name":"Torricelli","code":"tei"},{"name":"Ibali Teke","code":"tek"},{"name":"Telugu","code":"tel"},{"name":"Timne","code":"tem"},{"name":"Tama (Colombia)","code":"ten"},{"name":"Teso","code":"teo"},{"name":"Tepecano","code":"tep"},{"name":"Temein","code":"teq"},{"name":"Tereno","code":"ter"},{"name":"Tengger","code":"tes"},{"name":"Tetum","code":"tet"},{"name":"Soo","code":"teu"},{"name":"Teor","code":"tev"},{"name":"Tewa (USA)","code":"tew"},{"name":"Tennet","code":"tex"},{"name":"Tulishi","code":"tey"},{"name":"Tetserret","code":"tez"},{"name":"Tofin Gbe","code":"tfi"},{"name":"Tanaina","code":"tfn"},{"name":"Tefaro","code":"tfo"},{"name":"Teribe","code":"tfr"},{"name":"Ternate","code":"tft"},{"name":"Sagalla","code":"tga"},{"name":"Tobilung","code":"tgb"},{"name":"Tigak","code":"tgc"},{"name":"Ciwogai","code":"tgd"},{"name":"Eastern Gorkha Tamang","code":"tge"},{"name":"Chalikha","code":"tgf"},{"name":"Tobagonian Creole English","code":"tgh"},{"name":"Lawunuia","code":"tgi"},{"name":"Tagin","code":"tgj"},{"name":"Tajik","code":"tgk"},{"name":"Tagalog","code":"tgl"},{"name":"Tandaganon","code":"tgn"},{"name":"Sudest","code":"tgo"},{"name":"Tangoa","code":"tgp"},{"name":"Tring","code":"tgq"},{"name":"Tareng","code":"tgr"},{"name":"Nume","code":"tgs"},{"name":"Central Tagbanwa","code":"tgt"},{"name":"Tanggu","code":"tgu"},{"name":"Tingui-Boto","code":"tgv"},{"name":"Tagwana Senoufo","code":"tgw"},{"name":"Tagish","code":"tgx"},{"name":"Togoyo","code":"tgy"},{"name":"Tagalaka","code":"tgz"},{"name":"Thai","code":"tha"},{"name":"Kuuk Thaayorre","code":"thd"},{"name":"Thayore","code":"thd"},{"name":"Chitwania Tharu","code":"the"},{"name":"Thangmi","code":"thf"},{"name":"Northern Tarahumara","code":"thh"},{"name":"Tai Long","code":"thi"},{"name":"Kitharaka","code":"thk"},{"name":"Tharaka","code":"thk"},{"name":"Dangaura Tharu","code":"thl"},{"name":"Aheu","code":"thm"},{"name":"Thachanadan","code":"thn"},{"name":"Thompson","code":"thp"},{"name":"Kochila Tharu","code":"thq"},{"name":"Rana Tharu","code":"thr"},{"name":"Thakali","code":"ths"},{"name":"Tahltan","code":"tht"},{"name":"Thuri","code":"thu"},{"name":"Tahaggart Tamahaq","code":"thv"},{"name":"Tha","code":"thy"},{"name":"Tayart Tamajeq","code":"thz"},{"name":"Tidikelt Tamazight","code":"tia"},{"name":"Tira","code":"tic"},{"name":"Tifal","code":"tif"},{"name":"Tigre","code":"tig"},{"name":"Timugon Murut","code":"tih"},{"name":"Tiene","code":"tii"},{"name":"Tilung","code":"tij"},{"name":"Tikar","code":"tik"},{"name":"Tillamook","code":"til"},{"name":"Timbe","code":"tim"},{"name":"Tindi","code":"tin"},{"name":"Teop","code":"tio"},{"name":"Trimuris","code":"tip"},{"name":"Tiรฉfo","code":"tiq"},{"name":"Tigrinya","code":"tir"},{"name":"Masadiit Itneg","code":"tis"},{"name":"Tinigua","code":"tit"},{"name":"Adasen","code":"tiu"},{"name":"Tiv","code":"tiv"},{"name":"Tiwi","code":"tiw"},{"name":"Southern Tiwa","code":"tix"},{"name":"Tiruray","code":"tiy"},{"name":"Tai Hongjin","code":"tiz"},{"name":"Tajuasohn","code":"tja"},{"name":"Tunjung","code":"tjg"},{"name":"Northern Tujia","code":"tji"},{"name":"Tjungundji","code":"tjj"},{"name":"Tai Laing","code":"tjl"},{"name":"Timucua","code":"tjm"},{"name":"Tonjon","code":"tjn"},{"name":"Temacine Tamazight","code":"tjo"},{"name":"Tjupany","code":"tjp"},{"name":"Southern Tujia","code":"tjs"},{"name":"Tjurruru","code":"tju"},{"name":"Djabwurrung","code":"tjw"},{"name":"Trukรก","code":"tka"},{"name":"Buksa","code":"tkb"},{"name":"Tukudede","code":"tkd"},{"name":"Takwane","code":"tke"},{"name":"Tukumanfรฉd","code":"tkf"},{"name":"Tesaka Malagasy","code":"tkg"},{"name":"Tokelau","code":"tkl"},{"name":"Takelma","code":"tkm"},{"name":"Toku-No-Shima","code":"tkn"},{"name":"Tikopia","code":"tkp"},{"name":"Tee","code":"tkq"},{"name":"Tsakhur","code":"tkr"},{"name":"Takestani","code":"tks"},{"name":"Kathoriya Tharu","code":"tkt"},{"name":"Upper Necaxa Totonac","code":"tku"},{"name":"Mur Pano","code":"tkv"},{"name":"Teanu","code":"tkw"},{"name":"Tangko","code":"tkx"},{"name":"Takua","code":"tkz"},{"name":"Southwestern Tepehuan","code":"tla"},{"name":"Tobelo","code":"tlb"},{"name":"Yecuatla Totonac","code":"tlc"},{"name":"Talaud","code":"tld"},{"name":"Telefol","code":"tlf"},{"name":"Tofanma","code":"tlg"},{"name":"Klingon","code":"tlh"},{"name":"tlhIngan Hol","code":"tlh"},{"name":"Tlingit","code":"tli"},{"name":"Talinga-Bwisi","code":"tlj"},{"name":"Taloki","code":"tlk"},{"name":"Tetela","code":"tll"},{"name":"Tolomako","code":"tlm"},{"name":"Talondo'","code":"tln"},{"name":"Talodi","code":"tlo"},{"name":"Filomena Mata-Coahuitlรกn Totonac","code":"tlp"},{"name":"Tai Loi","code":"tlq"},{"name":"Talise","code":"tlr"},{"name":"Tambotalo","code":"tls"},{"name":"Sou Nama","code":"tlt"},{"name":"Teluti","code":"tlt"},{"name":"Tulehu","code":"tlu"},{"name":"Taliabu","code":"tlv"},{"name":"Khehek","code":"tlx"},{"name":"Talysh","code":"tly"},{"name":"Tama (Chad)","code":"tma"},{"name":"Avava","code":"tmb"},{"name":"Katbol","code":"tmb"},{"name":"Tumak","code":"tmc"},{"name":"Haruai","code":"tmd"},{"name":"Tremembรฉ","code":"tme"},{"name":"Toba-Maskoy","code":"tmf"},{"name":"Ternateรฑo","code":"tmg"},{"name":"Tamashek","code":"tmh"},{"name":"Tutuba","code":"tmi"},{"name":"Samarokena","code":"tmj"},{"name":"Northwestern Tamang","code":"tmk"},{"name":"Tamnim Citak","code":"tml"},{"name":"Tai Thanh","code":"tmm"},{"name":"Taman (Indonesia)","code":"tmn"},{"name":"Temoq","code":"tmo"},{"name":"Tumleo","code":"tmq"},{"name":"Jewish Babylonian Aramaic (ca. 200-1200 CE)","code":"tmr"},{"name":"Tima","code":"tms"},{"name":"Tasmate","code":"tmt"},{"name":"Iau","code":"tmu"},{"name":"Tembo (Motembo)","code":"tmv"},{"name":"Temuan","code":"tmw"},{"name":"Tami","code":"tmy"},{"name":"Tamanaku","code":"tmz"},{"name":"Tacana","code":"tna"},{"name":"Western Tunebo","code":"tnb"},{"name":"Tanimuca-Retuarรฃ","code":"tnc"},{"name":"Angosturas Tunebo","code":"tnd"},{"name":"Tobanga","code":"tng"},{"name":"Maiani","code":"tnh"},{"name":"Tandia","code":"tni"},{"name":"Kwamera","code":"tnk"},{"name":"Lenakel","code":"tnl"},{"name":"Tabla","code":"tnm"},{"name":"North Tanna","code":"tnn"},{"name":"Toromono","code":"tno"},{"name":"Whitesands","code":"tnp"},{"name":"Taino","code":"tnq"},{"name":"Mรฉnik","code":"tnr"},{"name":"Tenis","code":"tns"},{"name":"Tontemboan","code":"tnt"},{"name":"Tay Khang","code":"tnu"},{"name":"Tangchangya","code":"tnv"},{"name":"Tonsawang","code":"tnw"},{"name":"Tanema","code":"tnx"},{"name":"Tongwe","code":"tny"},{"name":"Ten'edn","code":"tnz"},{"name":"Toba","code":"tob"},{"name":"Coyutla Totonac","code":"toc"},{"name":"Toma","code":"tod"},{"name":"Gizrra","code":"tof"},{"name":"Tonga (Nyasa)","code":"tog"},{"name":"Gitonga","code":"toh"},{"name":"Tonga (Zambia)","code":"toi"},{"name":"Tojolabal","code":"toj"},{"name":"Tolowa","code":"tol"},{"name":"Tombulu","code":"tom"},{"name":"Tonga (Tonga Islands)","code":"ton"},{"name":"Xicotepec De Juรกrez Totonac","code":"too"},{"name":"Papantla Totonac","code":"top"},{"name":"Toposa","code":"toq"},{"name":"Togbo-Vara Banda","code":"tor"},{"name":"Highland Totonac","code":"tos"},{"name":"Tho","code":"tou"},{"name":"Upper Taromi","code":"tov"},{"name":"Jemez","code":"tow"},{"name":"Tobian","code":"tox"},{"name":"Topoiyo","code":"toy"},{"name":"To","code":"toz"},{"name":"Taupota","code":"tpa"},{"name":"Azoyรบ Me'phaa","code":"tpc"},{"name":"Azoyรบ Tlapanec","code":"tpc"},{"name":"Tippera","code":"tpe"},{"name":"Tarpia","code":"tpf"},{"name":"Kula","code":"tpg"},{"name":"Tok Pisin","code":"tpi"},{"name":"Tapietรฉ","code":"tpj"},{"name":"Tupinikin","code":"tpk"},{"name":"Tlacoapa Me'phaa","code":"tpl"},{"name":"Tlacoapa Tlapanec","code":"tpl"},{"name":"Tampulma","code":"tpm"},{"name":"Tupinambรก","code":"tpn"},{"name":"Tai Pao","code":"tpo"},{"name":"Pisaflores Tepehua","code":"tpp"},{"name":"Tukpa","code":"tpq"},{"name":"Tuparรญ","code":"tpr"},{"name":"Tlachichilco Tepehua","code":"tpt"},{"name":"Tampuan","code":"tpu"},{"name":"Tanapag","code":"tpv"},{"name":"Tupรญ","code":"tpw"},{"name":"Acatepec Me'phaa","code":"tpx"},{"name":"Acatepec Tlapanec","code":"tpx"},{"name":"Trumai","code":"tpy"},{"name":"Tinputz","code":"tpz"},{"name":"Tembรฉ","code":"tqb"},{"name":"Lehali","code":"tql"},{"name":"Turumsa","code":"tqm"},{"name":"Tenino","code":"tqn"},{"name":"Toaripi","code":"tqo"},{"name":"Tomoip","code":"tqp"},{"name":"Tunni","code":"tqq"},{"name":"Torona","code":"tqr"},{"name":"Western Totonac","code":"tqt"},{"name":"Touo","code":"tqu"},{"name":"Tonkawa","code":"tqw"},{"name":"Tirahi","code":"tra"},{"name":"Terebu","code":"trb"},{"name":"Copala Triqui","code":"trc"},{"name":"Turi","code":"trd"},{"name":"East Tarangan","code":"tre"},{"name":"Trinidadian Creole English","code":"trf"},{"name":"Lishรกn Didรกn","code":"trg"},{"name":"Turaka","code":"trh"},{"name":"Triรณ","code":"tri"},{"name":"Toram","code":"trj"},{"name":"Traveller Scottish","code":"trl"},{"name":"Tregami","code":"trm"},{"name":"Trinitario","code":"trn"},{"name":"Tarao Naga","code":"tro"},{"name":"Kok Borok","code":"trp"},{"name":"San Martรญn Itunyoso Triqui","code":"trq"},{"name":"Taushiro","code":"trr"},{"name":"Chicahuaxtla Triqui","code":"trs"},{"name":"Tunggare","code":"trt"},{"name":"Surayt","code":"tru"},{"name":"Turoyo","code":"tru"},{"name":"Taroko","code":"trv"},{"name":"Torwali","code":"trw"},{"name":"Tringgus-Sembaan Bidayuh","code":"trx"},{"name":"Turung","code":"try"},{"name":"Torรก","code":"trz"},{"name":"Tsaangi","code":"tsa"},{"name":"Tsamai","code":"tsb"},{"name":"Tswa","code":"tsc"},{"name":"Tsakonian","code":"tsd"},{"name":"Tunisian Sign Language","code":"tse"},{"name":"Tausug","code":"tsg"},{"name":"Tsuvan","code":"tsh"},{"name":"Tsimshian","code":"tsi"},{"name":"Tshangla","code":"tsj"},{"name":"Tseku","code":"tsk"},{"name":"Ts'รผn-Lao","code":"tsl"},{"name":"Tรผrk ฤฐลŸaret Dili","code":"tsm"},{"name":"Turkish Sign Language","code":"tsm"},{"name":"Tswana","code":"tsn"},{"name":"Tsonga","code":"tso"},{"name":"Northern Toussian","code":"tsp"},{"name":"Thai Sign Language","code":"tsq"},{"name":"Akei","code":"tsr"},{"name":"Taiwan Sign Language","code":"tss"},{"name":"Tondi Songway Kiini","code":"tst"},{"name":"Tsou","code":"tsu"},{"name":"Tsogo","code":"tsv"},{"name":"Tsishingini","code":"tsw"},{"name":"Mubami","code":"tsx"},{"name":"Tebul Sign Language","code":"tsy"},{"name":"Purepecha","code":"tsz"},{"name":"Tutelo","code":"tta"},{"name":"Gaa","code":"ttb"},{"name":"Tektiteko","code":"ttc"},{"name":"Tauade","code":"ttd"},{"name":"Bwanabwana","code":"tte"},{"name":"Tuotomb","code":"ttf"},{"name":"Tutong","code":"ttg"},{"name":"Upper Ta'oih","code":"tth"},{"name":"Tobati","code":"tti"},{"name":"Tooro","code":"ttj"},{"name":"Totoro","code":"ttk"},{"name":"Totela","code":"ttl"},{"name":"Northern Tutchone","code":"ttm"},{"name":"Towei","code":"ttn"},{"name":"Lower Ta'oih","code":"tto"},{"name":"Tombelala","code":"ttp"},{"name":"Tawallammat Tamajaq","code":"ttq"},{"name":"Tera","code":"ttr"},{"name":"Northeastern Thai","code":"tts"},{"name":"Muslim Tat","code":"ttt"},{"name":"Torau","code":"ttu"},{"name":"Titan","code":"ttv"},{"name":"Long Wat","code":"ttw"},{"name":"Sikaritai","code":"tty"},{"name":"Tsum","code":"ttz"},{"name":"Wiarumus","code":"tua"},{"name":"Tรผbatulabal","code":"tub"},{"name":"Mutu","code":"tuc"},{"name":"Tuxรก","code":"tud"},{"name":"Tuyuca","code":"tue"},{"name":"Central Tunebo","code":"tuf"},{"name":"Tunia","code":"tug"},{"name":"Taulil","code":"tuh"},{"name":"Tupuri","code":"tui"},{"name":"Tugutil","code":"tuj"},{"name":"Turkmen","code":"tuk"},{"name":"Tula","code":"tul"},{"name":"Tumbuka","code":"tum"},{"name":"Tunica","code":"tun"},{"name":"Tucano","code":"tuo"},{"name":"Tedaga","code":"tuq"},{"name":"Turkish","code":"tur"},{"name":"Tuscarora","code":"tus"},{"name":"Tututni","code":"tuu"},{"name":"Turkana","code":"tuv"},{"name":"Tuxinรกwa","code":"tux"},{"name":"Tugen","code":"tuy"},{"name":"Turka","code":"tuz"},{"name":"Vaghua","code":"tva"},{"name":"Tsuvadi","code":"tvd"},{"name":"Te'un","code":"tve"},{"name":"Southeast Ambrym","code":"tvk"},{"name":"Tuvalu","code":"tvl"},{"name":"Tela-Masbuar","code":"tvm"},{"name":"Tavoyan","code":"tvn"},{"name":"Tidore","code":"tvo"},{"name":"Taveta","code":"tvs"},{"name":"Tutsa Naga","code":"tvt"},{"name":"Tunen","code":"tvu"},{"name":"Sedoa","code":"tvw"},{"name":"Taivoan","code":"tvx"},{"name":"Timor Pidgin","code":"tvy"},{"name":"Twana","code":"twa"},{"name":"Western Tawbuid","code":"twb"},{"name":"Teshenawa","code":"twc"},{"name":"Twents","code":"twd"},{"name":"Tewa (Indonesia)","code":"twe"},{"name":"Northern Tiwa","code":"twf"},{"name":"Tereweng","code":"twg"},{"name":"Tai Dรณn","code":"twh"},{"name":"Twi","code":"twi"},{"name":"Tawara","code":"twl"},{"name":"Tawang Monpa","code":"twm"},{"name":"Twendi","code":"twn"},{"name":"Tswapong","code":"two"},{"name":"Ere","code":"twp"},{"name":"Tasawaq","code":"twq"},{"name":"Southwestern Tarahumara","code":"twr"},{"name":"Turiwรกra","code":"twt"},{"name":"Termanu","code":"twu"},{"name":"Tuwari","code":"tww"},{"name":"Tewe","code":"twx"},{"name":"Tawoyan","code":"twy"},{"name":"Tombonuo","code":"txa"},{"name":"Tokharian B","code":"txb"},{"name":"Tsetsaut","code":"txc"},{"name":"Totoli","code":"txe"},{"name":"Tangut","code":"txg"},{"name":"Thracian","code":"txh"},{"name":"Ikpeng","code":"txi"},{"name":"Tarjumo","code":"txj"},{"name":"Tomini","code":"txm"},{"name":"West Tarangan","code":"txn"},{"name":"Toto","code":"txo"},{"name":"Tii","code":"txq"},{"name":"Tartessian","code":"txr"},{"name":"Tonsea","code":"txs"},{"name":"Citak","code":"txt"},{"name":"Kayapรณ","code":"txu"},{"name":"Tatana","code":"txx"},{"name":"Tanosy Malagasy","code":"txy"},{"name":"Tauya","code":"tya"},{"name":"Kyanga","code":"tye"},{"name":"O'du","code":"tyh"},{"name":"Teke-Tsaayi","code":"tyi"},{"name":"Tai Do","code":"tyj"},{"name":"Tai Yo","code":"tyj"},{"name":"Thu Lao","code":"tyl"},{"name":"Kombai","code":"tyn"},{"name":"Thaypan","code":"typ"},{"name":"Tai Daeng","code":"tyr"},{"name":"Tร y Sa Pa","code":"tys"},{"name":"Tร y Tac","code":"tyt"},{"name":"Kua","code":"tyu"},{"name":"Tuvinian","code":"tyv"},{"name":"Teke-Tyee","code":"tyx"},{"name":"Tiyaa","code":"tyy"},{"name":"Tร y","code":"tyz"},{"name":"Tanzanian Sign Language","code":"tza"},{"name":"Tzeltal","code":"tzh"},{"name":"Tz'utujil","code":"tzj"},{"name":"Talossan","code":"tzl"},{"name":"Central Atlas Tamazight","code":"tzm"},{"name":"Tugun","code":"tzn"},{"name":"Tzotzil","code":"tzo"},{"name":"Tabriak","code":"tzx"},{"name":"Uamuรฉ","code":"uam"},{"name":"Kuan","code":"uan"},{"name":"Tairuma","code":"uar"},{"name":"Ubang","code":"uba"},{"name":"Ubi","code":"ubi"},{"name":"Buhi'non Bikol","code":"ubl"},{"name":"Ubir","code":"ubr"},{"name":"Umbu-Ungu","code":"ubu"},{"name":"Ubykh","code":"uby"},{"name":"Uda","code":"uda"},{"name":"Udihe","code":"ude"},{"name":"Muduga","code":"udg"},{"name":"Udi","code":"udi"},{"name":"Ujir","code":"udj"},{"name":"Wuzlam","code":"udl"},{"name":"Udmurt","code":"udm"},{"name":"Uduk","code":"udu"},{"name":"Kioko","code":"ues"},{"name":"Ufim","code":"ufi"},{"name":"Ugaritic","code":"uga"},{"name":"Kuku-Ugbanh","code":"ugb"},{"name":"Ughele","code":"uge"},{"name":"Ugandan Sign Language","code":"ugn"},{"name":"Ugong","code":"ugo"},{"name":"Uruguayan Sign Language","code":"ugy"},{"name":"Uhami","code":"uha"},{"name":"Damal","code":"uhn"},{"name":"Uighur","code":"uig"},{"name":"Uyghur","code":"uig"},{"name":"Uisai","code":"uis"},{"name":"Iyive","code":"uiv"},{"name":"Tanjijili","code":"uji"},{"name":"Kaburi","code":"uka"},{"name":"Ukuriguma","code":"ukg"},{"name":"Ukhwejo","code":"ukh"},{"name":"Kui (India)","code":"uki"},{"name":"Muak Sa-aak","code":"ukk"},{"name":"Ukrainian Sign Language","code":"ukl"},{"name":"Ukpe-Bayobiri","code":"ukp"},{"name":"Ukwa","code":"ukq"},{"name":"Ukrainian","code":"ukr"},{"name":"Kaapor Sign Language","code":"uks"},{"name":"Urubรบ-Kaapor Sign Language","code":"uks"},{"name":"Ukue","code":"uku"},{"name":"Kuku","code":"ukv"},{"name":"Ukwuani-Aboh-Ndoni","code":"ukw"},{"name":"Kuuk-Yak","code":"uky"},{"name":"Fungwa","code":"ula"},{"name":"Ulukwumi","code":"ulb"},{"name":"Ulch","code":"ulc"},{"name":"Lule","code":"ule"},{"name":"Afra","code":"ulf"},{"name":"Usku","code":"ulf"},{"name":"Ulithian","code":"uli"},{"name":"Meriam Mir","code":"ulk"},{"name":"Ullatan","code":"ull"},{"name":"Ulumanda'","code":"ulm"},{"name":"Unserdeutsch","code":"uln"},{"name":"Uma' Lung","code":"ulu"},{"name":"Ulwa","code":"ulw"},{"name":"Umatilla","code":"uma"},{"name":"Umbundu","code":"umb"},{"name":"Marrucinian","code":"umc"},{"name":"Umbindhamu","code":"umd"},{"name":"Morrobalama","code":"umg"},{"name":"Umbuygamu","code":"umg"},{"name":"Ukit","code":"umi"},{"name":"Umon","code":"umm"},{"name":"Makyan Naga","code":"umn"},{"name":"Umotรญna","code":"umo"},{"name":"Umpila","code":"ump"},{"name":"Umbugarla","code":"umr"},{"name":"Pendau","code":"ums"},{"name":"Munsee","code":"umu"},{"name":"North Watut","code":"una"},{"name":"Undetermined","code":"und"},{"name":"Uneme","code":"une"},{"name":"Ngarinyin","code":"ung"},{"name":"Uni","code":"uni"},{"name":"Enawenรฉ-Nawรฉ","code":"unk"},{"name":"Unami","code":"unm"},{"name":"Kurnai","code":"unn"},{"name":"Mundari","code":"unr"},{"name":"Unubahe","code":"unu"},{"name":"Munda","code":"unx"},{"name":"Unde Kaili","code":"unz"},{"name":"Umeda","code":"upi"},{"name":"Uripiv-Wala-Rano-Atchin","code":"upv"},{"name":"Urarina","code":"ura"},{"name":"Kaapor","code":"urb"},{"name":"Urubรบ-Kaapor","code":"urb"},{"name":"Urningangg","code":"urc"},{"name":"Urdu","code":"urd"},{"name":"Uru","code":"ure"},{"name":"Uradhi","code":"urf"},{"name":"Urigina","code":"urg"},{"name":"Urhobo","code":"urh"},{"name":"Urim","code":"uri"},{"name":"Urak Lawoi'","code":"urk"},{"name":"Urali","code":"url"},{"name":"Urapmin","code":"urm"},{"name":"Uruangnirin","code":"urn"},{"name":"Ura (Papua New Guinea)","code":"uro"},{"name":"Uru-Pa-In","code":"urp"},{"name":"Lehalurup","code":"urr"},{"name":"Lรถyรถp","code":"urr"},{"name":"Urat","code":"urt"},{"name":"Urumi","code":"uru"},{"name":"Uruava","code":"urv"},{"name":"Sop","code":"urw"},{"name":"Urimo","code":"urx"},{"name":"Orya","code":"ury"},{"name":"Uru-Eu-Wau-Wau","code":"urz"},{"name":"Usarufa","code":"usa"},{"name":"Ushojo","code":"ush"},{"name":"Usui","code":"usi"},{"name":"Usaghade","code":"usk"},{"name":"Uspanteco","code":"usp"},{"name":"us-Saare","code":"uss"},{"name":"Uya","code":"usu"},{"name":"Otank","code":"uta"},{"name":"Ute-Southern Paiute","code":"ute"},{"name":"ut-Hun","code":"uth"},{"name":"Amba (Solomon Islands)","code":"utp"},{"name":"Etulo","code":"utr"},{"name":"Utu","code":"utu"},{"name":"Urum","code":"uum"},{"name":"Kulon-Pazeh","code":"uun"},{"name":"Ura (Vanuatu)","code":"uur"},{"name":"U","code":"uuu"},{"name":"Fagauvea","code":"uve"},{"name":"West Uvean","code":"uve"},{"name":"Uri","code":"uvh"},{"name":"Lote","code":"uvl"},{"name":"Kuku-Uwanh","code":"uwa"},{"name":"Doko-Uyanga","code":"uya"},{"name":"Uzbek","code":"uzb"},{"name":"Northern Uzbek","code":"uzn"},{"name":"Southern Uzbek","code":"uzs"},{"name":"Vaagri Booli","code":"vaa"},{"name":"Vale","code":"vae"},{"name":"Vafsi","code":"vaf"},{"name":"Vagla","code":"vag"},{"name":"Varhadi-Nagpuri","code":"vah"},{"name":"Vai","code":"vai"},{"name":"Northwestern วƒKung","code":"vaj"},{"name":"Sekele","code":"vaj"},{"name":"Vasekele","code":"vaj"},{"name":"Vehes","code":"val"},{"name":"Vanimo","code":"vam"},{"name":"Valman","code":"van"},{"name":"Vao","code":"vao"},{"name":"Vaiphei","code":"vap"},{"name":"Huarijio","code":"var"},{"name":"Vasavi","code":"vas"},{"name":"Vanuma","code":"vau"},{"name":"Varli","code":"vav"},{"name":"Wayu","code":"vay"},{"name":"Southeast Babar","code":"vbb"},{"name":"Southwestern Bontok","code":"vbk"},{"name":"Venetian","code":"vec"},{"name":"Veddah","code":"ved"},{"name":"Veluws","code":"vel"},{"name":"Vemgo-Mabas","code":"vem"},{"name":"Venda","code":"ven"},{"name":"Ventureรฑo","code":"veo"},{"name":"Veps","code":"vep"},{"name":"Mom Jango","code":"ver"},{"name":"Vaghri","code":"vgr"},{"name":"Flemish Sign Language","code":"vgt"},{"name":"Vlaamse Gebarentaal","code":"vgt"},{"name":"Virgin Islands Creole English","code":"vic"},{"name":"Vidunda","code":"vid"},{"name":"Vietnamese","code":"vie"},{"name":"Vili","code":"vif"},{"name":"Viemo","code":"vig"},{"name":"Vilela","code":"vil"},{"name":"Vinza","code":"vin"},{"name":"Vishavan","code":"vis"},{"name":"Viti","code":"vit"},{"name":"Iduna","code":"viv"},{"name":"Kariyarra","code":"vka"},{"name":"Kujarge","code":"vkj"},{"name":"Kaur","code":"vkk"},{"name":"Kulisusu","code":"vkl"},{"name":"Kamakan","code":"vkm"},{"name":"Koro Nulu","code":"vkn"},{"name":"Kodeoha","code":"vko"},{"name":"Korlai Creole Portuguese","code":"vkp"},{"name":"Tenggarong Kutai Malay","code":"vkt"},{"name":"Kurrama","code":"vku"},{"name":"Koro Zuba","code":"vkz"},{"name":"Valpei","code":"vlp"},{"name":"Vlaams","code":"vls"},{"name":"Martuyhunira","code":"vma"},{"name":"Barbaram","code":"vmb"},{"name":"Juxtlahuaca Mixtec","code":"vmc"},{"name":"Mudu Koraga","code":"vmd"},{"name":"East Masela","code":"vme"},{"name":"Mainfrรคnkisch","code":"vmf"},{"name":"Lungalunga","code":"vmg"},{"name":"Maraghei","code":"vmh"},{"name":"Miwa","code":"vmi"},{"name":"Ixtayutla Mixtec","code":"vmj"},{"name":"Makhuwa-Shirima","code":"vmk"},{"name":"Malgana","code":"vml"},{"name":"Mitlatongo Mixtec","code":"vmm"},{"name":"Soyaltepec Mazatec","code":"vmp"},{"name":"Soyaltepec Mixtec","code":"vmq"},{"name":"Marenje","code":"vmr"},{"name":"Moksela","code":"vms"},{"name":"Muluridyi","code":"vmu"},{"name":"Valley Maidu","code":"vmv"},{"name":"Makhuwa","code":"vmw"},{"name":"Tamazola Mixtec","code":"vmx"},{"name":"Ayautla Mazatec","code":"vmy"},{"name":"Mazatlรกn Mazatec","code":"vmz"},{"name":"Lovono","code":"vnk"},{"name":"Vano","code":"vnk"},{"name":"Neve'ei","code":"vnm"},{"name":"Vinmavis","code":"vnm"},{"name":"Vunapu","code":"vnp"},{"name":"Volapรผk","code":"vol"},{"name":"Voro","code":"vor"},{"name":"Votic","code":"vot"},{"name":"Vera'a","code":"vra"},{"name":"Vรตro","code":"vro"},{"name":"Varisi","code":"vrs"},{"name":"Banam Bay","code":"vrt"},{"name":"Burmbar","code":"vrt"},{"name":"Moldova Sign Language","code":"vsi"},{"name":"Venezuelan Sign Language","code":"vsl"},{"name":"Llengua de signes valenciana","code":"vsv"},{"name":"Valencian Sign Language","code":"vsv"},{"name":"Vitou","code":"vto"},{"name":"Vumbu","code":"vum"},{"name":"Vunjo","code":"vun"},{"name":"Vute","code":"vut"},{"name":"Awa (China)","code":"vwa"},{"name":"Walla Walla","code":"waa"},{"name":"Wab","code":"wab"},{"name":"Wasco-Wishram","code":"wac"},{"name":"Wamesa","code":"wad"},{"name":"Wondama","code":"wad"},{"name":"Walser","code":"wae"},{"name":"Wakonรก","code":"waf"},{"name":"Wa'ema","code":"wag"},{"name":"Watubela","code":"wah"},{"name":"Wares","code":"wai"},{"name":"Waffa","code":"waj"},{"name":"Wolaitta","code":"wal"},{"name":"Wolaytta","code":"wal"},{"name":"Wampanoag","code":"wam"},{"name":"Wan","code":"wan"},{"name":"Wappo","code":"wao"},{"name":"Wapishana","code":"wap"},{"name":"Wagiman","code":"waq"},{"name":"Waray (Philippines)","code":"war"},{"name":"Washo","code":"was"},{"name":"Kaninuwa","code":"wat"},{"name":"Waurรก","code":"wau"},{"name":"Waka","code":"wav"},{"name":"Waiwai","code":"waw"},{"name":"Marangis","code":"wax"},{"name":"Watam","code":"wax"},{"name":"Wayana","code":"way"},{"name":"Wampur","code":"waz"},{"name":"Warao","code":"wba"},{"name":"Wabo","code":"wbb"},{"name":"Waritai","code":"wbe"},{"name":"Wara","code":"wbf"},{"name":"Wanda","code":"wbh"},{"name":"Vwanji","code":"wbi"},{"name":"Alagwa","code":"wbj"},{"name":"Waigali","code":"wbk"},{"name":"Wakhi","code":"wbl"},{"name":"Wa","code":"wbm"},{"name":"Warlpiri","code":"wbp"},{"name":"Waddar","code":"wbq"},{"name":"Wagdi","code":"wbr"},{"name":"West Bengal Sign Language","code":"wbs"},{"name":"Warnman","code":"wbt"},{"name":"Wajarri","code":"wbv"},{"name":"Woi","code":"wbw"},{"name":"Yanomรกmi","code":"wca"},{"name":"Waci Gbe","code":"wci"},{"name":"Wandji","code":"wdd"},{"name":"Wadaginam","code":"wdg"},{"name":"Wadjiginy","code":"wdj"},{"name":"Wadikali","code":"wdk"},{"name":"Wadjigu","code":"wdu"},{"name":"Wadjabangayi","code":"wdy"},{"name":"Wewaw","code":"wea"},{"name":"Wรจ Western","code":"wec"},{"name":"Wedau","code":"wed"},{"name":"Wergaia","code":"weg"},{"name":"Weh","code":"weh"},{"name":"Kiunum","code":"wei"},{"name":"Weme Gbe","code":"wem"},{"name":"Wemale","code":"weo"},{"name":"Westphalien","code":"wep"},{"name":"Weri","code":"wer"},{"name":"Cameroon Pidgin","code":"wes"},{"name":"Perai","code":"wet"},{"name":"Rawngtu Chin","code":"weu"},{"name":"Wejewa","code":"wew"},{"name":"Yafi","code":"wfg"},{"name":"Zorop","code":"wfg"},{"name":"Wagaya","code":"wga"},{"name":"Wagawaga","code":"wgb"},{"name":"Wangganguru","code":"wgg"},{"name":"Wangkangurru","code":"wgg"},{"name":"Wahgi","code":"wgi"},{"name":"Waigeo","code":"wgo"},{"name":"Wirangu","code":"wgu"},{"name":"Warrgamay","code":"wgy"},{"name":"Manusela","code":"wha"},{"name":"Sou Upaa","code":"wha"},{"name":"North Wahgi","code":"whg"},{"name":"Wahau Kenyah","code":"whk"},{"name":"Wahau Kayan","code":"whu"},{"name":"Southern Toussian","code":"wib"},{"name":"Wichita","code":"wic"},{"name":"Wik-Epa","code":"wie"},{"name":"Wik-Keyangan","code":"wif"},{"name":"Wik Ngathan","code":"wig"},{"name":"Wik-Me'anha","code":"wih"},{"name":"Minidien","code":"wii"},{"name":"Wik-Iiyanh","code":"wij"},{"name":"Wikalkan","code":"wik"},{"name":"Wilawila","code":"wil"},{"name":"Wik-Mungkan","code":"wim"},{"name":"Ho-Chunk","code":"win"},{"name":"Wirafรฉd","code":"wir"},{"name":"Wiru","code":"wiu"},{"name":"Vitu","code":"wiv"},{"name":"Wiyot","code":"wiy"},{"name":"Waja","code":"wja"},{"name":"Warji","code":"wji"},{"name":"Kw'adza","code":"wka"},{"name":"Kumbaran","code":"wkb"},{"name":"Mo","code":"wkd"},{"name":"Wakde","code":"wkd"},{"name":"Kalanadi","code":"wkl"},{"name":"Keerray-Woorroong","code":"wkr"},{"name":"Kunduvadi","code":"wku"},{"name":"Wakawaka","code":"wkw"},{"name":"Wangkayutyuru","code":"wky"},{"name":"Walio","code":"wla"},{"name":"Mwali Comorian","code":"wlc"},{"name":"Wolane","code":"wle"},{"name":"Kunbarlang","code":"wlg"},{"name":"Welaun","code":"wlh"},{"name":"Waioli","code":"wli"},{"name":"Wailaki","code":"wlk"},{"name":"Wali (Sudan)","code":"wll"},{"name":"Middle Welsh","code":"wlm"},{"name":"Walloon","code":"wln"},{"name":"Wolio","code":"wlo"},{"name":"Wailapa","code":"wlr"},{"name":"Wallisian","code":"wls"},{"name":"Wuliwuli","code":"wlu"},{"name":"Wichรญ Lhamtรฉs Vejoz","code":"wlv"},{"name":"Walak","code":"wlw"},{"name":"Wali (Ghana)","code":"wlx"},{"name":"Waling","code":"wly"},{"name":"Mawa (Nigeria)","code":"wma"},{"name":"Wambaya","code":"wmb"},{"name":"Wamas","code":"wmc"},{"name":"Mamaindรฉ","code":"wmd"},{"name":"Wambule","code":"wme"},{"name":"Western Minyag","code":"wmg"},{"name":"Waima'a","code":"wmh"},{"name":"Wamin","code":"wmi"},{"name":"Maiwa (Indonesia)","code":"wmm"},{"name":"Waamwang","code":"wmn"},{"name":"Wom (Papua New Guinea)","code":"wmo"},{"name":"Wambon","code":"wms"},{"name":"Walmajarri","code":"wmt"},{"name":"Mwani","code":"wmw"},{"name":"Womo","code":"wmx"},{"name":"Wanambre","code":"wnb"},{"name":"Wantoat","code":"wnc"},{"name":"Wandarang","code":"wnd"},{"name":"Waneci","code":"wne"},{"name":"Wanggom","code":"wng"},{"name":"Ndzwani Comorian","code":"wni"},{"name":"Wanukaka","code":"wnk"},{"name":"Wanggamala","code":"wnm"},{"name":"Wunumara","code":"wnn"},{"name":"Wano","code":"wno"},{"name":"Wanap","code":"wnp"},{"name":"Usan","code":"wnu"},{"name":"Wintu","code":"wnw"},{"name":"Waanyi","code":"wny"},{"name":"Wanyi","code":"wny"},{"name":"Kuwema","code":"woa"},{"name":"Tyaraity","code":"woa"},{"name":"Wรจ Northern","code":"wob"},{"name":"Wogeo","code":"woc"},{"name":"Wolani","code":"wod"},{"name":"Woleaian","code":"woe"},{"name":"Gambian Wolof","code":"wof"},{"name":"Wogamusin","code":"wog"},{"name":"Kamang","code":"woi"},{"name":"Longto","code":"wok"},{"name":"Wolof","code":"wol"},{"name":"Wom (Nigeria)","code":"wom"},{"name":"Wongo","code":"won"},{"name":"Manombai","code":"woo"},{"name":"Woria","code":"wor"},{"name":"Hanga Hundi","code":"wos"},{"name":"Wawonii","code":"wow"},{"name":"Weyto","code":"woy"},{"name":"Maco","code":"wpc"},{"name":"Waluwarra","code":"wrb"},{"name":"Warluwara","code":"wrb"},{"name":"Warduji","code":"wrd"},{"name":"Gudjal","code":"wrg"},{"name":"Warungu","code":"wrg"},{"name":"Wiradjuri","code":"wrh"},{"name":"Wariyangga","code":"wri"},{"name":"Garrwa","code":"wrk"},{"name":"Warlmanpa","code":"wrl"},{"name":"Warumungu","code":"wrm"},{"name":"Warnang","code":"wrn"},{"name":"Worrorra","code":"wro"},{"name":"Waropen","code":"wrp"},{"name":"Wardaman","code":"wrr"},{"name":"Waris","code":"wrs"},{"name":"Waru","code":"wru"},{"name":"Waruna","code":"wrv"},{"name":"Gugu Warra","code":"wrw"},{"name":"Wae Rana","code":"wrx"},{"name":"Merwari","code":"wry"},{"name":"Waray (Australia)","code":"wrz"},{"name":"Warembori","code":"wsa"},{"name":"Adilabad Gondi","code":"wsg"},{"name":"Wusi","code":"wsi"},{"name":"Waskia","code":"wsk"},{"name":"Owenia","code":"wsr"},{"name":"Wasa","code":"wss"},{"name":"Wasu","code":"wsu"},{"name":"Wotapuri-Katarqalai","code":"wsv"},{"name":"Watiwa","code":"wtf"},{"name":"Wathawurrung","code":"wth"},{"name":"Berta","code":"wti"},{"name":"Watakataui","code":"wtk"},{"name":"Mewati","code":"wtm"},{"name":"Wotu","code":"wtw"},{"name":"Wikngenchera","code":"wua"},{"name":"Wunambal","code":"wub"},{"name":"Wudu","code":"wud"},{"name":"Wutunhua","code":"wuh"},{"name":"Silimo","code":"wul"},{"name":"Wumbvu","code":"wum"},{"name":"Bungu","code":"wun"},{"name":"Wurrugu","code":"wur"},{"name":"Wutung","code":"wut"},{"name":"Wu Chinese","code":"wuu"},{"name":"Wuvulu-Aua","code":"wuv"},{"name":"Wulna","code":"wux"},{"name":"Wauyai","code":"wuy"},{"name":"Waama","code":"wwa"},{"name":"Wakabunga","code":"wwb"},{"name":"Dorig","code":"wwo"},{"name":"Wetamut","code":"wwo"},{"name":"Warrwa","code":"wwr"},{"name":"Wawa","code":"www"},{"name":"Waxianghua","code":"wxa"},{"name":"Wardandi","code":"wxw"},{"name":"Wyandot","code":"wya"},{"name":"Wangaaybuwan-Ngiyambaa","code":"wyb"},{"name":"Woiwurrung","code":"wyi"},{"name":"Wymysorys","code":"wym"},{"name":"Wayorรณ","code":"wyr"},{"name":"Western Fijian","code":"wyy"},{"name":"Andalusian Arabic","code":"xaa"},{"name":"Sambe","code":"xab"},{"name":"Kachari","code":"xac"},{"name":"Adai","code":"xad"},{"name":"Aequian","code":"xae"},{"name":"Aghwan","code":"xag"},{"name":"Kaimbรฉ","code":"xai"},{"name":"Ararandewรกra","code":"xaj"},{"name":"Mรกku","code":"xak"},{"name":"Kalmyk","code":"xal"},{"name":"Oirat","code":"xal"},{"name":"ว€Xam","code":"xam"},{"name":"Xamtanga","code":"xan"},{"name":"Khao","code":"xao"},{"name":"Apalachee","code":"xap"},{"name":"Aquitanian","code":"xaq"},{"name":"Karami","code":"xar"},{"name":"Kamas","code":"xas"},{"name":"Katawixi","code":"xat"},{"name":"Kauwera","code":"xau"},{"name":"Xavรกnte","code":"xav"},{"name":"Kawaiisu","code":"xaw"},{"name":"Kayan Mahakam","code":"xay"},{"name":"Lower Burdekin","code":"xbb"},{"name":"Bactrian","code":"xbc"},{"name":"Bindal","code":"xbd"},{"name":"Bigambal","code":"xbe"},{"name":"Bunganditj","code":"xbg"},{"name":"Kombio","code":"xbi"},{"name":"Birrpayi","code":"xbj"},{"name":"Middle Breton","code":"xbm"},{"name":"Kenaboi","code":"xbn"},{"name":"Bolgarian","code":"xbo"},{"name":"Bibbulman","code":"xbp"},{"name":"Kambera","code":"xbr"},{"name":"Kambiwรก","code":"xbw"},{"name":"Batjala","code":"xby"},{"name":"Batyala","code":"xby"},{"name":"Cumbric","code":"xcb"},{"name":"Camunic","code":"xcc"},{"name":"Celtiberian","code":"xce"},{"name":"Cisalpine Gaulish","code":"xcg"},{"name":"Chemakum","code":"xch"},{"name":"Chimakum","code":"xch"},{"name":"Classical Armenian","code":"xcl"},{"name":"Comecrudo","code":"xcm"},{"name":"Cotoname","code":"xcn"},{"name":"Chorasmian","code":"xco"},{"name":"Carian","code":"xcr"},{"name":"Classical Tibetan","code":"xct"},{"name":"Curonian","code":"xcu"},{"name":"Chuvantsy","code":"xcv"},{"name":"Coahuilteco","code":"xcw"},{"name":"Cayuse","code":"xcy"},{"name":"Darkinyung","code":"xda"},{"name":"Dacian","code":"xdc"},{"name":"Dharuk","code":"xdk"},{"name":"Edomite","code":"xdm"},{"name":"Kwandu","code":"xdo"},{"name":"Malayic Dayak","code":"xdy"},{"name":"Eblan","code":"xeb"},{"name":"Hdi","code":"xed"},{"name":"วXegwi","code":"xeg"},{"name":"Kelo","code":"xel"},{"name":"Kembayan","code":"xem"},{"name":"Epi-Olmec","code":"xep"},{"name":"Xerรฉnte","code":"xer"},{"name":"Kesawai","code":"xes"},{"name":"Xetรก","code":"xet"},{"name":"Keoru-Ahia","code":"xeu"},{"name":"Faliscan","code":"xfa"},{"name":"Galatian","code":"xga"},{"name":"Gbin","code":"xgb"},{"name":"Gudang","code":"xgd"},{"name":"Gabrielino-Fernandeรฑo","code":"xgf"},{"name":"Goreng","code":"xgg"},{"name":"Garingbal","code":"xgi"},{"name":"Galindan","code":"xgl"},{"name":"Dharumbal","code":"xgm"},{"name":"Guwinmal","code":"xgm"},{"name":"Garza","code":"xgr"},{"name":"Unggumi","code":"xgu"},{"name":"Guwa","code":"xgw"},{"name":"Harami","code":"xha"},{"name":"Hunnic","code":"xhc"},{"name":"Hadrami","code":"xhd"},{"name":"Khetrani","code":"xhe"},{"name":"Xhosa","code":"xho"},{"name":"Hernican","code":"xhr"},{"name":"Hattic","code":"xht"},{"name":"Hurrian","code":"xhu"},{"name":"Khua","code":"xhv"},{"name":"Iberian","code":"xib"},{"name":"Xiri","code":"xii"},{"name":"Illyrian","code":"xil"},{"name":"Xinca","code":"xin"},{"name":"Xiriรขna","code":"xir"},{"name":"Kisan","code":"xis"},{"name":"Indus Valley Language","code":"xiv"},{"name":"Xipaya","code":"xiy"},{"name":"Minjungbal","code":"xjb"},{"name":"Jaitmatang","code":"xjt"},{"name":"Kalkoti","code":"xka"},{"name":"Northern Nago","code":"xkb"},{"name":"Kho'ini","code":"xkc"},{"name":"Mendalam Kayan","code":"xkd"},{"name":"Kereho","code":"xke"},{"name":"Khengkha","code":"xkf"},{"name":"Kagoro","code":"xkg"},{"name":"Kenyan Sign Language","code":"xki"},{"name":"Kajali","code":"xkj"},{"name":"Kaco'","code":"xkk"},{"name":"Mainstream Kenyah","code":"xkl"},{"name":"Kayan River Kayan","code":"xkn"},{"name":"Kiorr","code":"xko"},{"name":"Kabatei","code":"xkp"},{"name":"Koroni","code":"xkq"},{"name":"Xakriabรก","code":"xkr"},{"name":"Kumbewaha","code":"xks"},{"name":"Kantosi","code":"xkt"},{"name":"Kaamba","code":"xku"},{"name":"Kgalagadi","code":"xkv"},{"name":"Kembra","code":"xkw"},{"name":"Karore","code":"xkx"},{"name":"Uma' Lasan","code":"xky"},{"name":"Kurtokha","code":"xkz"},{"name":"Kamula","code":"xla"},{"name":"Loup B","code":"xlb"},{"name":"Lycian","code":"xlc"},{"name":"Lydian","code":"xld"},{"name":"Lemnian","code":"xle"},{"name":"Ligurian (Ancient)","code":"xlg"},{"name":"Liburnian","code":"xli"},{"name":"Alanic","code":"xln"},{"name":"Loup A","code":"xlo"},{"name":"Lepontic","code":"xlp"},{"name":"Lusitanian","code":"xls"},{"name":"Cuneiform Luwian","code":"xlu"},{"name":"Elymian","code":"xly"},{"name":"Mushungulu","code":"xma"},{"name":"Mbonga","code":"xmb"},{"name":"Makhuwa-Marrevone","code":"xmc"},{"name":"Mbudum","code":"xmd"},{"name":"Median","code":"xme"},{"name":"Mingrelian","code":"xmf"},{"name":"Mengaka","code":"xmg"},{"name":"Kugu-Muminh","code":"xmh"},{"name":"Majera","code":"xmj"},{"name":"Ancient Macedonian","code":"xmk"},{"name":"Malaysian Sign Language","code":"xml"},{"name":"Manado Malay","code":"xmm"},{"name":"Manichaean Middle Persian","code":"xmn"},{"name":"Morerebi","code":"xmo"},{"name":"Kuku-Mu'inh","code":"xmp"},{"name":"Kuku-Mangk","code":"xmq"},{"name":"Meroitic","code":"xmr"},{"name":"Moroccan Sign Language","code":"xms"},{"name":"Matbat","code":"xmt"},{"name":"Kamu","code":"xmu"},{"name":"Antankarana Malagasy","code":"xmv"},{"name":"Tankarana Malagasy","code":"xmv"},{"name":"Tsimihety Malagasy","code":"xmw"},{"name":"Maden","code":"xmx"},{"name":"Mayaguduna","code":"xmy"},{"name":"Mori Bawah","code":"xmz"},{"name":"Ancient North Arabian","code":"xna"},{"name":"Kanakanabu","code":"xnb"},{"name":"Middle Mongolian","code":"xng"},{"name":"Kuanhua","code":"xnh"},{"name":"Ngarigu","code":"xni"},{"name":"Ngoni (Tanzania)","code":"xnj"},{"name":"Nganakarti","code":"xnk"},{"name":"Ngumbarl","code":"xnm"},{"name":"Northern Kankanay","code":"xnn"},{"name":"Anglo-Norman","code":"xno"},{"name":"Ngoni (Mozambique)","code":"xnq"},{"name":"Kangri","code":"xnr"},{"name":"Kanashi","code":"xns"},{"name":"Narragansett","code":"xnt"},{"name":"Nukunul","code":"xnu"},{"name":"Nyiyaparli","code":"xny"},{"name":"Kenzi","code":"xnz"},{"name":"Mattoki","code":"xnz"},{"name":"O'chi'chi'","code":"xoc"},{"name":"Kokoda","code":"xod"},{"name":"Soga","code":"xog"},{"name":"Kominimung","code":"xoi"},{"name":"Xokleng","code":"xok"},{"name":"Komo (Sudan)","code":"xom"},{"name":"Konkomba","code":"xon"},{"name":"Xukurรบ","code":"xoo"},{"name":"Kopar","code":"xop"},{"name":"Korubo","code":"xor"},{"name":"Kowaki","code":"xow"},{"name":"Pirriya","code":"xpa"},{"name":"Northeastern Tasmanian","code":"xpb"},{"name":"Pyemmairrener","code":"xpb"},{"name":"Pecheneg","code":"xpc"},{"name":"Oyster Bay Tasmanian","code":"xpd"},{"name":"Liberia Kpelle","code":"xpe"},{"name":"Nuenonne","code":"xpf"},{"name":"Southeast Tasmanian","code":"xpf"},{"name":"Phrygian","code":"xpg"},{"name":"North Midlands Tasmanian","code":"xph"},{"name":"Tyerrenoterpanner","code":"xph"},{"name":"Pictish","code":"xpi"},{"name":"Mpalitjanh","code":"xpj"},{"name":"Kulina Pano","code":"xpk"},{"name":"Port Sorell Tasmanian","code":"xpl"},{"name":"Pumpokol","code":"xpm"},{"name":"Kapinawรก","code":"xpn"},{"name":"Pochutec","code":"xpo"},{"name":"Puyo-Paekche","code":"xpp"},{"name":"Mohegan-Pequot","code":"xpq"},{"name":"Parthian","code":"xpr"},{"name":"Pisidian","code":"xps"},{"name":"Punthamara","code":"xpt"},{"name":"Punic","code":"xpu"},{"name":"Northern Tasmanian","code":"xpv"},{"name":"Tommeginne","code":"xpv"},{"name":"Northwestern Tasmanian","code":"xpw"},{"name":"Peerapper","code":"xpw"},{"name":"Southwestern Tasmanian","code":"xpx"},{"name":"Toogee","code":"xpx"},{"name":"Puyo","code":"xpy"},{"name":"Bruny Island Tasmanian","code":"xpz"},{"name":"Karakhanid","code":"xqa"},{"name":"Qatabanian","code":"xqt"},{"name":"Krahรด","code":"xra"},{"name":"Eastern Karaboro","code":"xrb"},{"name":"Gundungurra","code":"xrd"},{"name":"Kreye","code":"xre"},{"name":"Minang","code":"xrg"},{"name":"Krikati-Timbira","code":"xri"},{"name":"Armazic","code":"xrm"},{"name":"Arin","code":"xrn"},{"name":"Raetic","code":"xrr"},{"name":"Aranama-Tamique","code":"xrt"},{"name":"Marriammu","code":"xru"},{"name":"Karawa","code":"xrw"},{"name":"Sabaean","code":"xsa"},{"name":"Sambal","code":"xsb"},{"name":"Scythian","code":"xsc"},{"name":"Sidetic","code":"xsd"},{"name":"Sempan","code":"xse"},{"name":"Shamang","code":"xsh"},{"name":"Sio","code":"xsi"},{"name":"Subi","code":"xsj"},{"name":"South Slavey","code":"xsl"},{"name":"Kasem","code":"xsm"},{"name":"Sanga (Nigeria)","code":"xsn"},{"name":"Solano","code":"xso"},{"name":"Silopi","code":"xsp"},{"name":"Makhuwa-Saka","code":"xsq"},{"name":"Sherpa","code":"xsr"},{"name":"Assan","code":"xss"},{"name":"Sanumรก","code":"xsu"},{"name":"Sudovian","code":"xsv"},{"name":"Saisiyat","code":"xsy"},{"name":"Alcozauca Mixtec","code":"xta"},{"name":"Chazumba Mixtec","code":"xtb"},{"name":"Katcha-Kadugli-Miri","code":"xtc"},{"name":"Diuxi-Tilantongo Mixtec","code":"xtd"},{"name":"Ketengban","code":"xte"},{"name":"Transalpine Gaulish","code":"xtg"},{"name":"Yitha Yitha","code":"xth"},{"name":"Sinicahua Mixtec","code":"xti"},{"name":"San Juan Teita Mixtec","code":"xtj"},{"name":"Tijaltepec Mixtec","code":"xtl"},{"name":"Magdalena Peรฑasco Mixtec","code":"xtm"},{"name":"Northern Tlaxiaco Mixtec","code":"xtn"},{"name":"Tokharian A","code":"xto"},{"name":"San Miguel Piedras Mixtec","code":"xtp"},{"name":"Tumshuqese","code":"xtq"},{"name":"Early Tripuri","code":"xtr"},{"name":"Sindihui Mixtec","code":"xts"},{"name":"Tacahua Mixtec","code":"xtt"},{"name":"Cuyamecalco Mixtec","code":"xtu"},{"name":"Thawa","code":"xtv"},{"name":"Tawandรช","code":"xtw"},{"name":"Yoloxochitl Mixtec","code":"xty"},{"name":"Alu Kurumba","code":"xua"},{"name":"Betta Kurumba","code":"xub"},{"name":"Umiida","code":"xud"},{"name":"Kunigami","code":"xug"},{"name":"Jennu Kurumba","code":"xuj"},{"name":"Ngunawal","code":"xul"},{"name":"Nunukul","code":"xul"},{"name":"Umbrian","code":"xum"},{"name":"Unggaranggu","code":"xun"},{"name":"Kuo","code":"xuo"},{"name":"Upper Umpqua","code":"xup"},{"name":"Urartian","code":"xur"},{"name":"Kuthant","code":"xut"},{"name":"Khwedam","code":"xuu"},{"name":"Kxoe","code":"xuu"},{"name":"Venetic","code":"xve"},{"name":"Kamviri","code":"xvi"},{"name":"Vandalic","code":"xvn"},{"name":"Volscian","code":"xvo"},{"name":"Vestinian","code":"xvs"},{"name":"Kwaza","code":"xwa"},{"name":"Woccon","code":"xwc"},{"name":"Wadi Wadi","code":"xwd"},{"name":"Xwela Gbe","code":"xwe"},{"name":"Kwegu","code":"xwg"},{"name":"Wajuk","code":"xwj"},{"name":"Wangkumara","code":"xwk"},{"name":"Western Xwla Gbe","code":"xwl"},{"name":"Written Oirat","code":"xwo"},{"name":"Kwerba Mamberamo","code":"xwr"},{"name":"Wotjobaluk","code":"xwt"},{"name":"Wemba Wemba","code":"xww"},{"name":"Boro (Ghana)","code":"xxb"},{"name":"Ke'o","code":"xxk"},{"name":"Minkin","code":"xxm"},{"name":"Koropรณ","code":"xxr"},{"name":"Tambora","code":"xxt"},{"name":"Yaygir","code":"xya"},{"name":"Yandjibara","code":"xyb"},{"name":"Mayi-Yapi","code":"xyj"},{"name":"Mayi-Kulan","code":"xyk"},{"name":"Yalakalore","code":"xyl"},{"name":"Mayi-Thakurti","code":"xyt"},{"name":"Yorta Yorta","code":"xyy"},{"name":"Zhang-Zhung","code":"xzh"},{"name":"Zemgalian","code":"xzm"},{"name":"Ancient Zapotec","code":"xzp"},{"name":"Yaminahua","code":"yaa"},{"name":"Yuhup","code":"yab"},{"name":"Pass Valley Yali","code":"yac"},{"name":"Yagua","code":"yad"},{"name":"Pumรฉ","code":"yae"},{"name":"Yaka (Democratic Republic of Congo)","code":"yaf"},{"name":"Yรกmana","code":"yag"},{"name":"Yazgulyam","code":"yah"},{"name":"Yagnobi","code":"yai"},{"name":"Banda-Yangere","code":"yaj"},{"name":"Yakama","code":"yak"},{"name":"Yalunka","code":"yal"},{"name":"Yamba","code":"yam"},{"name":"Mayangna","code":"yan"},{"name":"Yao","code":"yao"},{"name":"Yapese","code":"yap"},{"name":"Yaqui","code":"yaq"},{"name":"Yabarana","code":"yar"},{"name":"Nugunu (Cameroon)","code":"yas"},{"name":"Yambeta","code":"yat"},{"name":"Yuwana","code":"yau"},{"name":"Yangben","code":"yav"},{"name":"Yawalapitรญ","code":"yaw"},{"name":"Yauma","code":"yax"},{"name":"Agwagwune","code":"yay"},{"name":"Lokaa","code":"yaz"},{"name":"Yala","code":"yba"},{"name":"Yemba","code":"ybb"},{"name":"West Yugur","code":"ybe"},{"name":"Yakha","code":"ybh"},{"name":"Yamphu","code":"ybi"},{"name":"Hasha","code":"ybj"},{"name":"Bokha","code":"ybk"},{"name":"Yukuben","code":"ybl"},{"name":"Yaben","code":"ybm"},{"name":"Yabaรขna","code":"ybn"},{"name":"Yabong","code":"ybo"},{"name":"Yawiyo","code":"ybx"},{"name":"Yaweyuha","code":"yby"},{"name":"Chesu","code":"ych"},{"name":"Lolopo","code":"ycl"},{"name":"Yucuna","code":"ycn"},{"name":"Chepya","code":"ycp"},{"name":"Yanda","code":"yda"},{"name":"Eastern Yiddish","code":"ydd"},{"name":"Yangum Dey","code":"yde"},{"name":"Yidgha","code":"ydg"},{"name":"Yoidik","code":"ydk"},{"name":"Ravula","code":"yea"},{"name":"Yeniche","code":"yec"},{"name":"Yimas","code":"yee"},{"name":"Yeni","code":"yei"},{"name":"Yevanic","code":"yej"},{"name":"Yela","code":"yel"},{"name":"Tarok","code":"yer"},{"name":"Nyankpa","code":"yes"},{"name":"Yetfa","code":"yet"},{"name":"Yerukula","code":"yeu"},{"name":"Yapunda","code":"yev"},{"name":"Yeyi","code":"yey"},{"name":"Malyangapa","code":"yga"},{"name":"Yiningayi","code":"ygi"},{"name":"Yangum Gel","code":"ygl"},{"name":"Yagomi","code":"ygm"},{"name":"Gepo","code":"ygp"},{"name":"Yagaria","code":"ygr"},{"name":"Yolล‹u Sign Language","code":"ygs"},{"name":"Yugul","code":"ygu"},{"name":"Yagwoia","code":"ygw"},{"name":"Baha Buyang","code":"yha"},{"name":"Judeo-Iraqi Arabic","code":"yhd"},{"name":"Hlepho Phowa","code":"yhl"},{"name":"Yan-nhaล‹u Sign Language","code":"yhs"},{"name":"Yinggarda","code":"yia"},{"name":"Yiddish","code":"yid"},{"name":"Ache","code":"yif"},{"name":"Wusa Nasu","code":"yig"},{"name":"Western Yiddish","code":"yih"},{"name":"Yidiny","code":"yii"},{"name":"Yindjibarndi","code":"yij"},{"name":"Dongshanba Lalo","code":"yik"},{"name":"Yindjilandji","code":"yil"},{"name":"Yimchungru Naga","code":"yim"},{"name":"Riang Lai","code":"yin"},{"name":"Yinchia","code":"yin"},{"name":"Pholo","code":"yip"},{"name":"Miqie","code":"yiq"},{"name":"North Awyu","code":"yir"},{"name":"Yis","code":"yis"},{"name":"Eastern Lalu","code":"yit"},{"name":"Awu","code":"yiu"},{"name":"Northern Nisu","code":"yiv"},{"name":"Axi Yi","code":"yix"},{"name":"Azhe","code":"yiz"},{"name":"Yakan","code":"yka"},{"name":"Northern Yukaghir","code":"ykg"},{"name":"Yoke","code":"yki"},{"name":"Yakaikeke","code":"ykk"},{"name":"Khlula","code":"ykl"},{"name":"Kap","code":"ykm"},{"name":"Kua-nsi","code":"ykn"},{"name":"Yasa","code":"yko"},{"name":"Yekora","code":"ykr"},{"name":"Kathu","code":"ykt"},{"name":"Kuamasi","code":"yku"},{"name":"Yakoma","code":"yky"},{"name":"Yaul","code":"yla"},{"name":"Yaleba","code":"ylb"},{"name":"Yele","code":"yle"},{"name":"Yelogu","code":"ylg"},{"name":"Angguruk Yali","code":"yli"},{"name":"Yil","code":"yll"},{"name":"Limi","code":"ylm"},{"name":"Langnian Buyang","code":"yln"},{"name":"Naluo Yi","code":"ylo"},{"name":"Yalarnnga","code":"ylr"},{"name":"Aribwaung","code":"ylu"},{"name":"Nyรขlayu","code":"yly"},{"name":"Nyelรขyu","code":"yly"},{"name":"Yambes","code":"ymb"},{"name":"Southern Muji","code":"ymc"},{"name":"Muda","code":"ymd"},{"name":"Yameo","code":"yme"},{"name":"Yamongeri","code":"ymg"},{"name":"Mili","code":"ymh"},{"name":"Moji","code":"ymi"},{"name":"Makwe","code":"ymk"},{"name":"Iamalele","code":"yml"},{"name":"Maay","code":"ymm"},{"name":"Sunum","code":"ymn"},{"name":"Yamna","code":"ymn"},{"name":"Yangum Mon","code":"ymo"},{"name":"Yamap","code":"ymp"},{"name":"Qila Muji","code":"ymq"},{"name":"Malasar","code":"ymr"},{"name":"Mysian","code":"yms"},{"name":"Northern Muji","code":"ymx"},{"name":"Muzi","code":"ymz"},{"name":"Aluo","code":"yna"},{"name":"Yandruwandha","code":"ynd"},{"name":"Lang'e","code":"yne"},{"name":"Yango","code":"yng"},{"name":"Naukan Yupik","code":"ynk"},{"name":"Yangulam","code":"ynl"},{"name":"Yana","code":"ynn"},{"name":"Yong","code":"yno"},{"name":"Yendang","code":"ynq"},{"name":"Yansi","code":"yns"},{"name":"Yahuna","code":"ynu"},{"name":"Yoba","code":"yob"},{"name":"Yogad","code":"yog"},{"name":"Yonaguni","code":"yoi"},{"name":"Yokuts","code":"yok"},{"name":"Yola","code":"yol"},{"name":"Yombe","code":"yom"},{"name":"Yongkom","code":"yon"},{"name":"Yoruba","code":"yor"},{"name":"Yotti","code":"yot"},{"name":"Yoron","code":"yox"},{"name":"Yoy","code":"yoy"},{"name":"Phala","code":"ypa"},{"name":"Labo Phowa","code":"ypb"},{"name":"Phola","code":"ypg"},{"name":"Phupha","code":"yph"},{"name":"Phuma","code":"ypm"},{"name":"Ani Phowa","code":"ypn"},{"name":"Alo Phola","code":"ypo"},{"name":"Phupa","code":"ypp"},{"name":"Phuza","code":"ypz"},{"name":"Yerakai","code":"yra"},{"name":"Yareba","code":"yrb"},{"name":"Yaourรฉ","code":"yre"},{"name":"Nenets","code":"yrk"},{"name":"Nhengatu","code":"yrl"},{"name":"Yirrk-Mel","code":"yrm"},{"name":"Yerong","code":"yrn"},{"name":"Yaroamรซ","code":"yro"},{"name":"Yarsun","code":"yrs"},{"name":"Yarawata","code":"yrw"},{"name":"Yarluyandi","code":"yry"},{"name":"Yassic","code":"ysc"},{"name":"Samatao","code":"ysd"},{"name":"Sonaga","code":"ysg"},{"name":"Yugoslavian Sign Language","code":"ysl"},{"name":"Myanmar Sign Language","code":"ysm"},{"name":"Sani","code":"ysn"},{"name":"Nisi (China)","code":"yso"},{"name":"Southern Lolopo","code":"ysp"},{"name":"Sirenik Yupik","code":"ysr"},{"name":"Yessan-Mayo","code":"yss"},{"name":"Sanie","code":"ysy"},{"name":"Talu","code":"yta"},{"name":"Tanglang","code":"ytl"},{"name":"Thopho","code":"ytp"},{"name":"Yout Wam","code":"ytw"},{"name":"Yatay","code":"yty"},{"name":"Yucatec Maya","code":"yua"},{"name":"Yucateco","code":"yua"},{"name":"Yugambal","code":"yub"},{"name":"Yuchi","code":"yuc"},{"name":"Judeo-Tripolitanian Arabic","code":"yud"},{"name":"Yue Chinese","code":"yue"},{"name":"Havasupai-Walapai-Yavapai","code":"yuf"},{"name":"Yug","code":"yug"},{"name":"Yurutรญ","code":"yui"},{"name":"Karkar-Yuri","code":"yuj"},{"name":"Yuki","code":"yuk"},{"name":"Yulu","code":"yul"},{"name":"Quechan","code":"yum"},{"name":"Bena (Nigeria)","code":"yun"},{"name":"Yukpa","code":"yup"},{"name":"Yuqui","code":"yuq"},{"name":"Yurok","code":"yur"},{"name":"Yopno","code":"yut"},{"name":"Yau (Morobe Province)","code":"yuw"},{"name":"Southern Yukaghir","code":"yux"},{"name":"East Yugur","code":"yuy"},{"name":"Yuracare","code":"yuz"},{"name":"Yawa","code":"yva"},{"name":"Yavitero","code":"yvt"},{"name":"Kalou","code":"ywa"},{"name":"Yinhawangka","code":"ywg"},{"name":"Western Lalu","code":"ywl"},{"name":"Yawanawa","code":"ywn"},{"name":"Wuding-Luquan Yi","code":"ywq"},{"name":"Yawuru","code":"ywr"},{"name":"Central Lalo","code":"ywt"},{"name":"Xishanba Lalo","code":"ywt"},{"name":"Wumeng Nasu","code":"ywu"},{"name":"Yawarawarga","code":"yww"},{"name":"Mayawali","code":"yxa"},{"name":"Yagara","code":"yxg"},{"name":"Yardliyawarra","code":"yxl"},{"name":"Yinwum","code":"yxm"},{"name":"Yuyu","code":"yxu"},{"name":"Yabula Yabula","code":"yxy"},{"name":"Yir Yoront","code":"yyr"},{"name":"Yau (Sandaun Province)","code":"yyu"},{"name":"Ayizi","code":"yyz"},{"name":"E'ma Buyang","code":"yzg"},{"name":"Zokhuo","code":"yzk"},{"name":"Sierra de Juรกrez Zapotec","code":"zaa"},{"name":"San Juan Guelavรญa Zapotec","code":"zab"},{"name":"Western Tlacolula Valley Zapotec","code":"zab"},{"name":"Ocotlรกn Zapotec","code":"zac"},{"name":"Cajonos Zapotec","code":"zad"},{"name":"Yareni Zapotec","code":"zae"},{"name":"Ayoquesco Zapotec","code":"zaf"},{"name":"Zaghawa","code":"zag"},{"name":"Zangwal","code":"zah"},{"name":"Isthmus Zapotec","code":"zai"},{"name":"Zaramo","code":"zaj"},{"name":"Zanaki","code":"zak"},{"name":"Zauzou","code":"zal"},{"name":"Miahuatlรกn Zapotec","code":"zam"},{"name":"Ozolotepec Zapotec","code":"zao"},{"name":"Zapotec","code":"zap"},{"name":"Aloรกpam Zapotec","code":"zaq"},{"name":"Rincรณn Zapotec","code":"zar"},{"name":"Santo Domingo Albarradas Zapotec","code":"zas"},{"name":"Tabaa Zapotec","code":"zat"},{"name":"Zangskari","code":"zau"},{"name":"Yatzachi Zapotec","code":"zav"},{"name":"Mitla Zapotec","code":"zaw"},{"name":"Xadani Zapotec","code":"zax"},{"name":"Zaysete","code":"zay"},{"name":"Zayse-Zergulla","code":"zay"},{"name":"Zari","code":"zaz"},{"name":"Balaibalan","code":"zba"},{"name":"Central Berawan","code":"zbc"},{"name":"East Berawan","code":"zbe"},{"name":"Bliss","code":"zbl"},{"name":"Blissymbolics","code":"zbl"},{"name":"Blissymbols","code":"zbl"},{"name":"Batui","code":"zbt"},{"name":"Bu (Bauchi State)","code":"zbu"},{"name":"West Berawan","code":"zbw"},{"name":"Coatecas Altas Zapotec","code":"zca"},{"name":"Central Hongshuihe Zhuang","code":"zch"},{"name":"Ngazidja Comorian","code":"zdj"},{"name":"Zeeuws","code":"zea"},{"name":"Zenag","code":"zeg"},{"name":"Eastern Hongshuihe Zhuang","code":"zeh"},{"name":"Zenaga","code":"zen"},{"name":"Kinga","code":"zga"},{"name":"Guibei Zhuang","code":"zgb"},{"name":"Standard Moroccan Tamazight","code":"zgh"},{"name":"Minz Zhuang","code":"zgm"},{"name":"Guibian Zhuang","code":"zgn"},{"name":"Magori","code":"zgr"},{"name":"Chuang","code":"zha"},{"name":"Zhuang","code":"zha"},{"name":"Zhaba","code":"zhb"},{"name":"Dai Zhuang","code":"zhd"},{"name":"Zhire","code":"zhi"},{"name":"Nong Zhuang","code":"zhn"},{"name":"Chinese","code":"zho"},{"name":"Zhoa","code":"zhw"},{"name":"Zia","code":"zia"},{"name":"Zimbabwe Sign Language","code":"zib"},{"name":"Zimakani","code":"zik"},{"name":"Zialo","code":"zil"},{"name":"Mesme","code":"zim"},{"name":"Zinza","code":"zin"},{"name":"Zigula","code":"ziw"},{"name":"Zizilivakan","code":"ziz"},{"name":"Kaimbulawa","code":"zka"},{"name":"Koibal","code":"zkb"},{"name":"Kadu","code":"zkd"},{"name":"Koguryo","code":"zkg"},{"name":"Khorezmian","code":"zkh"},{"name":"Karankawa","code":"zkk"},{"name":"Kanan","code":"zkn"},{"name":"Kott","code":"zko"},{"name":"Sรฃo Paulo Kaingรกng","code":"zkp"},{"name":"Zakhring","code":"zkr"},{"name":"Kitan","code":"zkt"},{"name":"Kaurna","code":"zku"},{"name":"Krevinian","code":"zkv"},{"name":"Khazar","code":"zkz"},{"name":"Zula","code":"zla"},{"name":"Liujiang Zhuang","code":"zlj"},{"name":"Malay (individual language)","code":"zlm"},{"name":"Lianshan Zhuang","code":"zln"},{"name":"Liuqian Zhuang","code":"zlq"},{"name":"Manda (Australia)","code":"zma"},{"name":"Zimba","code":"zmb"},{"name":"Margany","code":"zmc"},{"name":"Maridan","code":"zmd"},{"name":"Mangerr","code":"zme"},{"name":"Mfinu","code":"zmf"},{"name":"Marti Ke","code":"zmg"},{"name":"Makolkol","code":"zmh"},{"name":"Negeri Sembilan Malay","code":"zmi"},{"name":"Maridjabin","code":"zmj"},{"name":"Mandandanyi","code":"zmk"},{"name":"Matngala","code":"zml"},{"name":"Marimanindji","code":"zmm"},{"name":"Marramaninyshi","code":"zmm"},{"name":"Mbangwe","code":"zmn"},{"name":"Molo","code":"zmo"},{"name":"Mpuono","code":"zmp"},{"name":"Mituku","code":"zmq"},{"name":"Maranunggu","code":"zmr"},{"name":"Mbesa","code":"zms"},{"name":"Maringarr","code":"zmt"},{"name":"Muruwari","code":"zmu"},{"name":"Mbariman-Gudhinma","code":"zmv"},{"name":"Mbo (Democratic Republic of Congo)","code":"zmw"},{"name":"Bomitaba","code":"zmx"},{"name":"Mariyedi","code":"zmy"},{"name":"Mbandja","code":"zmz"},{"name":"Zan Gula","code":"zna"},{"name":"Zande (individual language)","code":"zne"},{"name":"Mang","code":"zng"},{"name":"Manangkari","code":"znk"},{"name":"Mangas","code":"zns"},{"name":"Copainalรก Zoque","code":"zoc"},{"name":"Chimalapa Zoque","code":"zoh"},{"name":"Zou","code":"zom"},{"name":"Asunciรณn Mixtepec Zapotec","code":"zoo"},{"name":"Tabasco Zoque","code":"zoq"},{"name":"Rayรณn Zoque","code":"zor"},{"name":"Francisco Leรณn Zoque","code":"zos"},{"name":"Lachiguiri Zapotec","code":"zpa"},{"name":"Yautepec Zapotec","code":"zpb"},{"name":"Choapan Zapotec","code":"zpc"},{"name":"Southeastern Ixtlรกn Zapotec","code":"zpd"},{"name":"Petapa Zapotec","code":"zpe"},{"name":"San Pedro Quiatoni Zapotec","code":"zpf"},{"name":"Guevea De Humboldt Zapotec","code":"zpg"},{"name":"Totomachapan Zapotec","code":"zph"},{"name":"Santa Marรญa Quiegolani Zapotec","code":"zpi"},{"name":"Quiavicuzas Zapotec","code":"zpj"},{"name":"Tlacolulita Zapotec","code":"zpk"},{"name":"Lachixรญo Zapotec","code":"zpl"},{"name":"Mixtepec Zapotec","code":"zpm"},{"name":"Santa Inรฉs Yatzechi Zapotec","code":"zpn"},{"name":"Amatlรกn Zapotec","code":"zpo"},{"name":"El Alto Zapotec","code":"zpp"},{"name":"Zoogocho Zapotec","code":"zpq"},{"name":"Santiago Xanica Zapotec","code":"zpr"},{"name":"Coatlรกn Zapotec","code":"zps"},{"name":"San Vicente Coatlรกn Zapotec","code":"zpt"},{"name":"Yalรกlag Zapotec","code":"zpu"},{"name":"Chichicapan Zapotec","code":"zpv"},{"name":"Zaniza Zapotec","code":"zpw"},{"name":"San Baltazar Loxicha Zapotec","code":"zpx"},{"name":"Mazaltepec Zapotec","code":"zpy"},{"name":"Texmelucan Zapotec","code":"zpz"},{"name":"Qiubei Zhuang","code":"zqe"},{"name":"Kara (Korea)","code":"zra"},{"name":"Mirgan","code":"zrg"},{"name":"Zerenkel","code":"zrn"},{"name":"Zรกparo","code":"zro"},{"name":"Zarphatic","code":"zrp"},{"name":"Mairasi","code":"zrs"},{"name":"Sarasira","code":"zsa"},{"name":"Kaskean","code":"zsk"},{"name":"Zambian Sign Language","code":"zsl"},{"name":"Standard Malay","code":"zsm"},{"name":"Southern Rincon Zapotec","code":"zsr"},{"name":"Sukurum","code":"zsu"},{"name":"Elotepec Zapotec","code":"zte"},{"name":"Xanaguรญa Zapotec","code":"ztg"},{"name":"Lapaguรญa-Guivini Zapotec","code":"ztl"},{"name":"San Agustรญn Mixtepec Zapotec","code":"ztm"},{"name":"Santa Catarina Albarradas Zapotec","code":"ztn"},{"name":"Loxicha Zapotec","code":"ztp"},{"name":"Quioquitani-Quierรญ Zapotec","code":"ztq"},{"name":"Tilquiapan Zapotec","code":"zts"},{"name":"Tejalapan Zapotec","code":"ztt"},{"name":"Gรผilรก Zapotec","code":"ztu"},{"name":"Zaachila Zapotec","code":"ztx"},{"name":"Yatee Zapotec","code":"zty"},{"name":"Zeem","code":"zua"},{"name":"Tokano","code":"zuh"},{"name":"Zulu","code":"zul"},{"name":"Kumzari","code":"zum"},{"name":"Zuni","code":"zun"},{"name":"Zumaya","code":"zuy"},{"name":"Zay","code":"zwa"},{"name":"No linguistic content","code":"zxx"},{"name":"Not applicable","code":"zxx"},{"name":"Yongbei Zhuang","code":"zyb"},{"name":"Yang Zhuang","code":"zyg"},{"name":"Youjiang Zhuang","code":"zyj"},{"name":"Yongnan Zhuang","code":"zyn"},{"name":"Zyphe Chin","code":"zyp"},{"name":"Dimili","code":"zza"},{"name":"Dimli (macrolanguage)","code":"zza"},{"name":"Kirdki","code":"zza"},{"name":"Kirmanjki (macrolanguage)","code":"zza"},{"name":"Zaza","code":"zza"},{"name":"Zazaki","code":"zza"},{"name":"Zuojiang Zhuang","code":"zzj"}] \ No newline at end of file +[{"code":"aaa","name":"Ghotuo"},{"code":"aab","name":"Alumu-Tesu"},{"code":"aac","name":"Ari"},{"code":"aad","name":"Amal"},{"code":"aae","name":"Arbรซreshรซ Albanian"},{"code":"aaf","name":"Aranadan"},{"code":"aag","name":"Ambrak"},{"code":"aah","name":"Abu' Arapesh"},{"code":"aai","name":"Arifama-Miniafia"},{"code":"aak","name":"Ankave"},{"code":"aal","name":"Afade"},{"code":"aan","name":"Anambรฉ"},{"code":"aao","name":"Algerian Saharan Arabic"},{"code":"aap","name":"Parรก Arรกra"},{"code":"aaq","name":"Eastern Abnaki"},{"code":"aar","name":"Afar"},{"code":"aas","name":"Aasรกx"},{"code":"aat","name":"Arvanitika Albanian"},{"code":"aau","name":"Abau"},{"code":"aaw","name":"Solong"},{"code":"aax","name":"Mandobo Atas"},{"code":"aaz","name":"Amarasi"},{"code":"aba","name":"Abรฉ"},{"code":"abb","name":"Bankon"},{"code":"abc","name":"Ambala Ayta"},{"code":"abd","name":"Manide"},{"code":"abe","name":"Western Abnaki"},{"code":"abf","name":"Abai Sungai"},{"code":"abg","name":"Abaga"},{"code":"abh","name":"Tajiki Arabic"},{"code":"abi","name":"Abidji"},{"code":"abj","name":"Aka-Bea"},{"code":"abk","name":"Abkhazian"},{"code":"abl","name":"Lampung Nyo"},{"code":"abm","name":"Abanyom"},{"code":"abn","name":"Abua"},{"code":"abo","name":"Abon"},{"code":"abp","name":"Abellen Ayta"},{"code":"abq","name":"Abaza"},{"code":"abr","name":"Abron"},{"code":"abs","name":"Ambonese Malay"},{"code":"abt","name":"Ambulas"},{"code":"abu","name":"Abure"},{"code":"abv","name":"Baharna Arabic"},{"code":"abw","name":"Pal"},{"code":"abx","name":"Inabaknon"},{"code":"aby","name":"Aneme Wake"},{"code":"abz","name":"Abui"},{"code":"aca","name":"Achagua"},{"code":"acb","name":"รncรก"},{"code":"acd","name":"Gikyode"},{"code":"ace","name":"Achinese"},{"code":"acf","name":"Saint Lucian Creole French"},{"code":"ach","name":"Acoli"},{"code":"aci","name":"Aka-Cari"},{"code":"ack","name":"Aka-Kora"},{"code":"acl","name":"Akar-Bale"},{"code":"acm","name":"Mesopotamian Arabic"},{"code":"acn","name":"Achang"},{"code":"acp","name":"Eastern Acipa"},{"code":"acq","name":"Ta'izzi-Adeni Arabic"},{"code":"acr","name":"Achi"},{"code":"acs","name":"Acroรก"},{"code":"act","name":"Achterhoeks"},{"code":"acu","name":"Achuar-Shiwiar"},{"code":"acv","name":"Achumawi"},{"code":"acw","name":"Hijazi Arabic"},{"code":"acx","name":"Omani Arabic"},{"code":"acy","name":"Cypriot Arabic"},{"code":"acz","name":"Acheron"},{"code":"ada","name":"Adangme"},{"code":"adb","name":"Atauran"},{"code":"add","name":"Dzodinka"},{"code":"ade","name":"Adele"},{"code":"adf","name":"Dhofari Arabic"},{"code":"adg","name":"Andegerebinha"},{"code":"adh","name":"Adhola"},{"code":"adi","name":"Adi"},{"code":"adj","name":"Adioukrou"},{"code":"adl","name":"Galo"},{"code":"adn","name":"Adang"},{"code":"ado","name":"Abu"},{"code":"adq","name":"Adangbe"},{"code":"adr","name":"Adonara"},{"code":"ads","name":"Adamorobe Sign Language"},{"code":"adt","name":"Adnyamathanha"},{"code":"adu","name":"Aduge"},{"code":"adw","name":"Amundava"},{"code":"adx","name":"Amdo Tibetan"},{"code":"ady","name":"Adygei"},{"code":"adz","name":"Adzera"},{"code":"aea","name":"Areba"},{"code":"aeb","name":"Tunisian Arabic"},{"code":"aec","name":"Saidi Arabic"},{"code":"aed","name":"Argentine Sign Language"},{"code":"aee","name":"Northeast Pashai"},{"code":"aek","name":"Haeke"},{"code":"ael","name":"Ambele"},{"code":"aem","name":"Arem"},{"code":"aen","name":"Armenian Sign Language"},{"code":"aeq","name":"Aer"},{"code":"aer","name":"Eastern Arrernte"},{"code":"aes","name":"Alsea"},{"code":"aeu","name":"Akeu"},{"code":"aew","name":"Ambakich"},{"code":"aey","name":"Amele"},{"code":"aez","name":"Aeka"},{"code":"afb","name":"Gulf Arabic"},{"code":"afd","name":"Andai"},{"code":"afe","name":"Putukwam"},{"code":"afg","name":"Afghan Sign Language"},{"code":"afh","name":"Afrihili"},{"code":"afi","name":"Akrukay"},{"code":"afk","name":"Nanubae"},{"code":"afn","name":"Defaka"},{"code":"afo","name":"Eloyi"},{"code":"afp","name":"Tapei"},{"code":"afr","name":"Afrikaans"},{"code":"afs","name":"Afro-Seminole Creole"},{"code":"aft","name":"Afitti"},{"code":"afu","name":"Awutu"},{"code":"afz","name":"Obokuitai"},{"code":"aga","name":"Aguano"},{"code":"agb","name":"Legbo"},{"code":"agc","name":"Agatu"},{"code":"agd","name":"Agarabi"},{"code":"age","name":"Angal"},{"code":"agf","name":"Arguni"},{"code":"agg","name":"Angor"},{"code":"agh","name":"Ngelima"},{"code":"agi","name":"Agariya"},{"code":"agj","name":"Argobba"},{"code":"agk","name":"Isarog Agta"},{"code":"agl","name":"Fembe"},{"code":"agm","name":"Angaataha"},{"code":"agn","name":"Agutaynen"},{"code":"ago","name":"Tainae"},{"code":"agq","name":"Aghem"},{"code":"agr","name":"Aguaruna"},{"code":"ags","name":"Esimbi"},{"code":"agt","name":"Central Cagayan Agta"},{"code":"agu","name":"Aguacateco"},{"code":"agv","name":"Remontado Dumagat"},{"code":"agw","name":"Kahua"},{"code":"agx","name":"Aghul"},{"code":"agy","name":"Southern Alta"},{"code":"agz","name":"Mt. Iriga Agta"},{"code":"aha","name":"Ahanta"},{"code":"ahb","name":"Axamb"},{"code":"ahg","name":"Qimant"},{"code":"ahh","name":"Aghu"},{"code":"ahi","name":"Tiagbamrin Aizi"},{"code":"ahk","name":"Akha"},{"code":"ahl","name":"Igo"},{"code":"ahm","name":"Mobumrin Aizi"},{"code":"ahn","name":"ร€hร n"},{"code":"aho","name":"Ahom"},{"code":"ahp","name":"Aproumu Aizi"},{"code":"ahr","name":"Ahirani"},{"code":"ahs","name":"Ashe"},{"code":"aht","name":"Ahtena"},{"code":"aia","name":"Arosi"},{"code":"aib","name":"Ainu (China)"},{"code":"aic","name":"Ainbai"},{"code":"aid","name":"Alngith"},{"code":"aie","name":"Amara"},{"code":"aif","name":"Agi"},{"code":"aig","name":"Antigua and Barbuda Creole English"},{"code":"aih","name":"Ai-Cham"},{"code":"aii","name":"Assyrian Neo-Aramaic"},{"code":"aij","name":"Lishanid Noshan"},{"code":"aik","name":"Ake"},{"code":"ail","name":"Aimele"},{"code":"aim","name":"Aimol"},{"code":"ain","name":"Ainu (Japan)"},{"code":"aio","name":"Aiton"},{"code":"aip","name":"Burumakok"},{"code":"aiq","name":"Aimaq"},{"code":"air","name":"Airoran"},{"code":"ait","name":"Arikem"},{"code":"aiw","name":"Aari"},{"code":"aix","name":"Aighon"},{"code":"aiy","name":"Ali"},{"code":"aja","name":"Aja (South Sudan)"},{"code":"ajg","name":"Aja (Benin)"},{"code":"aji","name":"Ajiรซ"},{"code":"ajn","name":"Andajin"},{"code":"ajp","name":"South Levantine Arabic"},{"code":"ajt","name":"Judeo-Tunisian Arabic"},{"code":"aju","name":"Judeo-Moroccan Arabic"},{"code":"ajw","name":"Ajawa"},{"code":"ajz","name":"Amri Karbi"},{"code":"aka","name":"Akan"},{"code":"akb","name":"Batak Angkola"},{"code":"akc","name":"Mpur"},{"code":"akd","name":"Ukpet-Ehom"},{"code":"ake","name":"Akawaio"},{"code":"akf","name":"Akpa"},{"code":"akg","name":"Anakalangu"},{"code":"akh","name":"Angal Heneng"},{"code":"aki","name":"Aiome"},{"code":"akj","name":"Aka-Jeru"},{"code":"akk","name":"Akkadian"},{"code":"akl","name":"Aklanon"},{"code":"akm","name":"Aka-Bo"},{"code":"ako","name":"Akurio"},{"code":"akp","name":"Siwu"},{"code":"akq","name":"Ak"},{"code":"akr","name":"Araki"},{"code":"aks","name":"Akaselem"},{"code":"akt","name":"Akolet"},{"code":"aku","name":"Akum"},{"code":"akv","name":"Akhvakh"},{"code":"akw","name":"Akwa"},{"code":"akx","name":"Aka-Kede"},{"code":"aky","name":"Aka-Kol"},{"code":"akz","name":"Alabama"},{"code":"ala","name":"Alago"},{"code":"alc","name":"Qawasqar"},{"code":"ald","name":"Alladian"},{"code":"ale","name":"Aleut"},{"code":"alf","name":"Alege"},{"code":"alh","name":"Alawa"},{"code":"ali","name":"Amaimon"},{"code":"alj","name":"Alangan"},{"code":"alk","name":"Alak"},{"code":"all","name":"Allar"},{"code":"alm","name":"Amblong"},{"code":"aln","name":"Gheg Albanian"},{"code":"alo","name":"Larike-Wakasihu"},{"code":"alp","name":"Alune"},{"code":"alq","name":"Algonquin"},{"code":"alr","name":"Alutor"},{"code":"als","name":"Tosk Albanian"},{"code":"alt","name":"Southern Altai"},{"code":"alu","name":"'Are'are"},{"code":"alw","name":"Alaba-Kโ€™abeena"},{"code":"alx","name":"Amol"},{"code":"aly","name":"Alyawarr"},{"code":"alz","name":"Alur"},{"code":"ama","name":"Amanayรฉ"},{"code":"amb","name":"Ambo"},{"code":"amc","name":"Amahuaca"},{"code":"ame","name":"Yanesha'"},{"code":"amf","name":"Hamer-Banna"},{"code":"amg","name":"Amurdak"},{"code":"amh","name":"Amharic"},{"code":"ami","name":"Amis"},{"code":"amj","name":"Amdang"},{"code":"amk","name":"Ambai"},{"code":"aml","name":"War-Jaintia"},{"code":"amm","name":"Ama (Papua New Guinea)"},{"code":"amn","name":"Amanab"},{"code":"amo","name":"Amo"},{"code":"amp","name":"Alamblak"},{"code":"amq","name":"Amahai"},{"code":"amr","name":"Amarakaeri"},{"code":"ams","name":"Southern Amami-Oshima"},{"code":"amt","name":"Amto"},{"code":"amu","name":"Guerrero Amuzgo"},{"code":"amv","name":"Ambelau"},{"code":"amw","name":"Western Neo-Aramaic"},{"code":"amx","name":"Anmatyerre"},{"code":"amy","name":"Ami"},{"code":"amz","name":"Atampaya"},{"code":"ana","name":"Andaqui"},{"code":"anb","name":"Andoa"},{"code":"anc","name":"Ngas"},{"code":"and","name":"Ansus"},{"code":"ane","name":"Xรขrรขcรนรน"},{"code":"anf","name":"Animere"},{"code":"ang","name":"Old English (ca. 450-1100)"},{"code":"anh","name":"Nend"},{"code":"ani","name":"Andi"},{"code":"anj","name":"Anor"},{"code":"ank","name":"Goemai"},{"code":"anl","name":"Anu-Hkongso Chin"},{"code":"anm","name":"Anal"},{"code":"ann","name":"Obolo"},{"code":"ano","name":"Andoque"},{"code":"anp","name":"Angika"},{"code":"anq","name":"Jarawa (India)"},{"code":"anr","name":"Andh"},{"code":"ans","name":"Anserma"},{"code":"ant","name":"Antakarinya"},{"code":"anu","name":"Anuak"},{"code":"anv","name":"Denya"},{"code":"anw","name":"Anaang"},{"code":"anx","name":"Andra-Hus"},{"code":"any","name":"Anyin"},{"code":"anz","name":"Anem"},{"code":"aoa","name":"Angolar"},{"code":"aob","name":"Abom"},{"code":"aoc","name":"Pemon"},{"code":"aod","name":"Andarum"},{"code":"aoe","name":"Angal Enen"},{"code":"aof","name":"Bragat"},{"code":"aog","name":"Angoram"},{"code":"aoi","name":"Anindilyakwa"},{"code":"aoj","name":"Mufian"},{"code":"aok","name":"Arhรถ"},{"code":"aol","name":"Alor"},{"code":"aom","name":"ร–mie"},{"code":"aon","name":"Bumbita Arapesh"},{"code":"aor","name":"Aore"},{"code":"aos","name":"Taikat"},{"code":"aot","name":"A'tong"},{"code":"aou","name":"A'ou"},{"code":"aox","name":"Atorada"},{"code":"aoz","name":"Uab Meto"},{"code":"apb","name":"Sa'a"},{"code":"apc","name":"North Levantine Arabic"},{"code":"apd","name":"Sudanese Arabic"},{"code":"ape","name":"Bukiyip"},{"code":"apf","name":"Pahanan Agta"},{"code":"apg","name":"Ampanang"},{"code":"aph","name":"Athpariya"},{"code":"api","name":"Apiakรก"},{"code":"apj","name":"Jicarilla Apache"},{"code":"apk","name":"Kiowa Apache"},{"code":"apl","name":"Lipan Apache"},{"code":"apm","name":"Mescalero-Chiricahua Apache"},{"code":"apn","name":"Apinayรฉ"},{"code":"apo","name":"Ambul"},{"code":"app","name":"Apma"},{"code":"apq","name":"A-Pucikwar"},{"code":"apr","name":"Arop-Lokep"},{"code":"aps","name":"Arop-Sissano"},{"code":"apt","name":"Apatani"},{"code":"apu","name":"Apurinรฃ"},{"code":"apv","name":"Alapmunte"},{"code":"apw","name":"Western Apache"},{"code":"apx","name":"Aputai"},{"code":"apy","name":"Apalaรญ"},{"code":"apz","name":"Safeyoka"},{"code":"aqc","name":"Archi"},{"code":"aqd","name":"Ampari Dogon"},{"code":"aqg","name":"Arigidi"},{"code":"aqk","name":"Aninka"},{"code":"aqm","name":"Atohwaim"},{"code":"aqn","name":"Northern Alta"},{"code":"aqp","name":"Atakapa"},{"code":"aqr","name":"Arhรข"},{"code":"aqt","name":"Angaitรฉ"},{"code":"aqz","name":"Akuntsu"},{"code":"ara","name":"Arabic"},{"code":"arb","name":"Standard Arabic"},{"code":"arc","name":"Imperial Aramaic (700-300 BCE)"},{"code":"ard","name":"Arabana"},{"code":"are","name":"Western Arrarnta"},{"code":"arg","name":"Aragonese"},{"code":"arh","name":"Arhuaco"},{"code":"ari","name":"Arikara"},{"code":"arj","name":"Arapaso"},{"code":"ark","name":"Arikapรบ"},{"code":"arl","name":"Arabela"},{"code":"arn","name":"Mapuche"},{"code":"aro","name":"Araona"},{"code":"arp","name":"Arapaho"},{"code":"arq","name":"Algerian Arabic"},{"code":"arr","name":"Karo (Brazil)"},{"code":"ars","name":"Najdi Arabic"},{"code":"aru","name":"Arawรก"},{"code":"arv","name":"Arbore"},{"code":"arw","name":"Arawak"},{"code":"arx","name":"Aruรก (Rodonia State)"},{"code":"ary","name":"Moroccan Arabic"},{"code":"arz","name":"Egyptian Arabic"},{"code":"asa","name":"Asu (Tanzania)"},{"code":"asb","name":"Assiniboine"},{"code":"asc","name":"Casuarina Coast Asmat"},{"code":"ase","name":"American Sign Language"},{"code":"asf","name":"Auslan"},{"code":"asg","name":"Cishingini"},{"code":"ash","name":"Abishira"},{"code":"asi","name":"Buruwai"},{"code":"asj","name":"Sari"},{"code":"ask","name":"Ashkun"},{"code":"asl","name":"Asilulu"},{"code":"asm","name":"Assamese"},{"code":"asn","name":"Xingรบ Asurinรญ"},{"code":"aso","name":"Dano"},{"code":"asp","name":"Algerian Sign Language"},{"code":"asq","name":"Austrian Sign Language"},{"code":"asr","name":"Asuri"},{"code":"ass","name":"Ipulo"},{"code":"ast","name":"Asturian"},{"code":"asu","name":"Tocantins Asurini"},{"code":"asv","name":"Asoa"},{"code":"asw","name":"Australian Aborigines Sign Language"},{"code":"asx","name":"Muratayak"},{"code":"asy","name":"Yaosakor Asmat"},{"code":"asz","name":"As"},{"code":"ata","name":"Pele-Ata"},{"code":"atb","name":"Zaiwa"},{"code":"atc","name":"Atsahuaca"},{"code":"atd","name":"Ata Manobo"},{"code":"ate","name":"Atemble"},{"code":"atg","name":"Ivbie North-Okpela-Arhe"},{"code":"ati","name":"Attiรฉ"},{"code":"atj","name":"Atikamekw"},{"code":"atk","name":"Ati"},{"code":"atl","name":"Mt. Iraya Agta"},{"code":"atm","name":"Ata"},{"code":"atn","name":"Ashtiani"},{"code":"ato","name":"Atong (Cameroon)"},{"code":"atp","name":"Pudtol Atta"},{"code":"atq","name":"Aralle-Tabulahan"},{"code":"atr","name":"Waimiri-Atroari"},{"code":"ats","name":"Gros Ventre"},{"code":"att","name":"Pamplona Atta"},{"code":"atu","name":"Reel"},{"code":"atv","name":"Northern Altai"},{"code":"atw","name":"Atsugewi"},{"code":"atx","name":"Arutani"},{"code":"aty","name":"Aneityum"},{"code":"atz","name":"Arta"},{"code":"aua","name":"Asumboa"},{"code":"aub","name":"Alugu"},{"code":"auc","name":"Waorani"},{"code":"aud","name":"Anuta"},{"code":"aug","name":"Aguna"},{"code":"auh","name":"Aushi"},{"code":"aui","name":"Anuki"},{"code":"auj","name":"Awjilah"},{"code":"auk","name":"Heyo"},{"code":"aul","name":"Aulua"},{"code":"aum","name":"Asu (Nigeria)"},{"code":"aun","name":"Molmo One"},{"code":"auo","name":"Auyokawa"},{"code":"aup","name":"Makayam"},{"code":"auq","name":"Anus"},{"code":"aur","name":"Aruek"},{"code":"aut","name":"Austral"},{"code":"auu","name":"Auye"},{"code":"auw","name":"Awyi"},{"code":"aux","name":"Aurรก"},{"code":"auy","name":"Awiyaana"},{"code":"auz","name":"Uzbeki Arabic"},{"code":"ava","name":"Avaric"},{"code":"avb","name":"Avau"},{"code":"avd","name":"Alviri-Vidari"},{"code":"ave","name":"Avestan"},{"code":"avi","name":"Avikam"},{"code":"avk","name":"Kotava"},{"code":"avl","name":"Eastern Egyptian Bedawi Arabic"},{"code":"avm","name":"Angkamuthi"},{"code":"avn","name":"Avatime"},{"code":"avo","name":"Agavotaguerra"},{"code":"avs","name":"Aushiri"},{"code":"avt","name":"Au"},{"code":"avu","name":"Avokaya"},{"code":"avv","name":"Avรก-Canoeiro"},{"code":"awa","name":"Awadhi"},{"code":"awb","name":"Awa (Papua New Guinea)"},{"code":"awc","name":"Cicipu"},{"code":"awe","name":"Awetรญ"},{"code":"awg","name":"Anguthimri"},{"code":"awh","name":"Awbono"},{"code":"awi","name":"Aekyom"},{"code":"awk","name":"Awabakal"},{"code":"awm","name":"Arawum"},{"code":"awn","name":"Awngi"},{"code":"awo","name":"Awak"},{"code":"awr","name":"Awera"},{"code":"aws","name":"South Awyu"},{"code":"awt","name":"Arawetรฉ"},{"code":"awu","name":"Central Awyu"},{"code":"awv","name":"Jair Awyu"},{"code":"aww","name":"Awun"},{"code":"awx","name":"Awara"},{"code":"awy","name":"Edera Awyu"},{"code":"axb","name":"Abipon"},{"code":"axe","name":"Ayerrerenge"},{"code":"axg","name":"Mato Grosso Arรกra"},{"code":"axk","name":"Yaka (Central African Republic)"},{"code":"axl","name":"Lower Southern Aranda"},{"code":"axm","name":"Middle Armenian"},{"code":"axx","name":"Xรขrรขgurรจ"},{"code":"aya","name":"Awar"},{"code":"ayb","name":"Ayizo Gbe"},{"code":"ayc","name":"Southern Aymara"},{"code":"ayd","name":"Ayabadhu"},{"code":"aye","name":"Ayere"},{"code":"ayg","name":"Ginyanga"},{"code":"ayh","name":"Hadrami Arabic"},{"code":"ayi","name":"Leyigha"},{"code":"ayk","name":"Akuku"},{"code":"ayl","name":"Libyan Arabic"},{"code":"aym","name":"Aymara"},{"code":"ayn","name":"Sanaani Arabic"},{"code":"ayo","name":"Ayoreo"},{"code":"ayp","name":"North Mesopotamian Arabic"},{"code":"ayq","name":"Ayi (Papua New Guinea)"},{"code":"ayr","name":"Central Aymara"},{"code":"ays","name":"Sorsogon Ayta"},{"code":"ayt","name":"Magbukun Ayta"},{"code":"ayu","name":"Ayu"},{"code":"ayz","name":"Mai Brat"},{"code":"aza","name":"Azha"},{"code":"azb","name":"South Azerbaijani"},{"code":"azd","name":"Eastern Durango Nahuatl"},{"code":"aze","name":"Azerbaijani"},{"code":"azg","name":"San Pedro Amuzgos Amuzgo"},{"code":"azj","name":"North Azerbaijani"},{"code":"azm","name":"Ipalapa Amuzgo"},{"code":"azn","name":"Western Durango Nahuatl"},{"code":"azo","name":"Awing"},{"code":"azt","name":"Faire Atta"},{"code":"azz","name":"Highland Puebla Nahuatl"},{"code":"baa","name":"Babatana"},{"code":"bab","name":"Bainouk-Gunyuรฑo"},{"code":"bac","name":"Badui"},{"code":"bae","name":"Barรฉ"},{"code":"baf","name":"Nubaca"},{"code":"bag","name":"Tuki"},{"code":"bah","name":"Bahamas Creole English"},{"code":"baj","name":"Barakai"},{"code":"bak","name":"Bashkir"},{"code":"bal","name":"Baluchi"},{"code":"bam","name":"Bambara"},{"code":"ban","name":"Balinese"},{"code":"bao","name":"Waimaha"},{"code":"bap","name":"Bantawa"},{"code":"bar","name":"Bavarian"},{"code":"bas","name":"Basa (Cameroon)"},{"code":"bau","name":"Bada (Nigeria)"},{"code":"bav","name":"Vengo"},{"code":"baw","name":"Bambili-Bambui"},{"code":"bax","name":"Bamun"},{"code":"bay","name":"Batuley"},{"code":"bba","name":"Baatonum"},{"code":"bbb","name":"Barai"},{"code":"bbc","name":"Batak Toba"},{"code":"bbd","name":"Bau"},{"code":"bbe","name":"Bangba"},{"code":"bbf","name":"Baibai"},{"code":"bbg","name":"Barama"},{"code":"bbh","name":"Bugan"},{"code":"bbi","name":"Barombi"},{"code":"bbj","name":"Ghomรกlรก'"},{"code":"bbk","name":"Babanki"},{"code":"bbl","name":"Bats"},{"code":"bbm","name":"Babango"},{"code":"bbn","name":"Uneapa"},{"code":"bbo","name":"Konabรฉrรฉ"},{"code":"bbp","name":"West Central Banda"},{"code":"bbq","name":"Bamali"},{"code":"bbr","name":"Girawa"},{"code":"bbs","name":"Bakpinka"},{"code":"bbt","name":"Mburku"},{"code":"bbu","name":"Kulung (Nigeria)"},{"code":"bbv","name":"Karnai"},{"code":"bbw","name":"Baba"},{"code":"bbx","name":"Bubia"},{"code":"bby","name":"Befang"},{"code":"bca","name":"Central Bai"},{"code":"bcb","name":"Bainouk-Samik"},{"code":"bcc","name":"Southern Balochi"},{"code":"bcd","name":"North Babar"},{"code":"bce","name":"Bamenyam"},{"code":"bcf","name":"Bamu"},{"code":"bcg","name":"Baga Pokur"},{"code":"bch","name":"Bariai"},{"code":"bci","name":"Baoulรฉ"},{"code":"bcj","name":"Bardi"},{"code":"bck","name":"Bunuba"},{"code":"bcl","name":"Central Bikol"},{"code":"bcm","name":"Bannoni"},{"code":"bcn","name":"Bali (Nigeria)"},{"code":"bco","name":"Kaluli"},{"code":"bcp","name":"Bali (Democratic Republic of Congo)"},{"code":"bcq","name":"Bench"},{"code":"bcr","name":"Babine"},{"code":"bcs","name":"Kohumono"},{"code":"bct","name":"Bendi"},{"code":"bcu","name":"Awad Bing"},{"code":"bcv","name":"Shoo-Minda-Nye"},{"code":"bcw","name":"Bana"},{"code":"bcy","name":"Bacama"},{"code":"bcz","name":"Bainouk-Gunyaamolo"},{"code":"bda","name":"Bayot"},{"code":"bdb","name":"Basap"},{"code":"bdc","name":"Emberรก-Baudรณ"},{"code":"bdd","name":"Bunama"},{"code":"bde","name":"Bade"},{"code":"bdf","name":"Biage"},{"code":"bdg","name":"Bonggi"},{"code":"bdh","name":"Baka (South Sudan)"},{"code":"bdi","name":"Burun"},{"code":"bdj","name":"Bai"},{"code":"bdk","name":"Budukh"},{"code":"bdl","name":"Indonesian Bajau"},{"code":"bdm","name":"Buduma"},{"code":"bdn","name":"Baldemu"},{"code":"bdo","name":"Morom"},{"code":"bdp","name":"Bende"},{"code":"bdq","name":"Bahnar"},{"code":"bdr","name":"West Coast Bajau"},{"code":"bds","name":"Burunge"},{"code":"bdt","name":"Bokoto"},{"code":"bdu","name":"Oroko"},{"code":"bdv","name":"Bodo Parja"},{"code":"bdw","name":"Baham"},{"code":"bdx","name":"Budong-Budong"},{"code":"bdy","name":"Bandjalang"},{"code":"bdz","name":"Badeshi"},{"code":"bea","name":"Beaver"},{"code":"beb","name":"Bebele"},{"code":"bec","name":"Iceve-Maci"},{"code":"bed","name":"Bedoanas"},{"code":"bee","name":"Byangsi"},{"code":"bef","name":"Benabena"},{"code":"beg","name":"Belait"},{"code":"beh","name":"Biali"},{"code":"bei","name":"Bekati'"},{"code":"bej","name":"Bedawiyet"},{"code":"bek","name":"Bebeli"},{"code":"bel","name":"Belarusian"},{"code":"bem","name":"Bemba (Zambia)"},{"code":"ben","name":"Bengali"},{"code":"beo","name":"Beami"},{"code":"bep","name":"Besoa"},{"code":"beq","name":"Beembe"},{"code":"bes","name":"Besme"},{"code":"bet","name":"Guiberoua Bรฉte"},{"code":"beu","name":"Blagar"},{"code":"bev","name":"Daloa Bรฉtรฉ"},{"code":"bew","name":"Betawi"},{"code":"bex","name":"Jur Modo"},{"code":"bey","name":"Beli (Papua New Guinea)"},{"code":"bez","name":"Bena (Tanzania)"},{"code":"bfa","name":"Bari"},{"code":"bfb","name":"Pauri Bareli"},{"code":"bfc","name":"Northern Bai"},{"code":"bfd","name":"Bafut"},{"code":"bfe","name":"Betaf"},{"code":"bff","name":"Bofi"},{"code":"bfg","name":"Busang Kayan"},{"code":"bfh","name":"Blafe"},{"code":"bfi","name":"British Sign Language"},{"code":"bfj","name":"Bafanji"},{"code":"bfk","name":"Ban Khor Sign Language"},{"code":"bfl","name":"Banda-Ndรฉlรฉ"},{"code":"bfm","name":"Mmen"},{"code":"bfn","name":"Bunak"},{"code":"bfo","name":"Malba Birifor"},{"code":"bfp","name":"Beba"},{"code":"bfq","name":"Badaga"},{"code":"bfr","name":"Bazigar"},{"code":"bfs","name":"Southern Bai"},{"code":"bft","name":"Balti"},{"code":"bfu","name":"Gahri"},{"code":"bfw","name":"Bondo"},{"code":"bfx","name":"Bantayanon"},{"code":"bfy","name":"Bagheli"},{"code":"bfz","name":"Mahasu Pahari"},{"code":"bga","name":"Gwamhi-Wuri"},{"code":"bgb","name":"Bobongko"},{"code":"bgc","name":"Haryanvi"},{"code":"bgd","name":"Rathwi Bareli"},{"code":"bge","name":"Bauria"},{"code":"bgf","name":"Bangandu"},{"code":"bgg","name":"Bugun"},{"code":"bgi","name":"Giangan"},{"code":"bgj","name":"Bangolan"},{"code":"bgk","name":"Bit"},{"code":"bgl","name":"Bo (Laos)"},{"code":"bgn","name":"Western Balochi"},{"code":"bgo","name":"Baga Koga"},{"code":"bgp","name":"Eastern Balochi"},{"code":"bgq","name":"Bagri"},{"code":"bgr","name":"Bawm Chin"},{"code":"bgs","name":"Tagabawa"},{"code":"bgt","name":"Bughotu"},{"code":"bgu","name":"Mbongno"},{"code":"bgv","name":"Warkay-Bipim"},{"code":"bgw","name":"Bhatri"},{"code":"bgx","name":"Balkan Gagauz Turkish"},{"code":"bgy","name":"Benggoi"},{"code":"bgz","name":"Banggai"},{"code":"bha","name":"Bharia"},{"code":"bhb","name":"Bhili"},{"code":"bhc","name":"Biga"},{"code":"bhd","name":"Bhadrawahi"},{"code":"bhe","name":"Bhaya"},{"code":"bhf","name":"Odiai"},{"code":"bhg","name":"Binandere"},{"code":"bhh","name":"Bukharic"},{"code":"bhi","name":"Bhilali"},{"code":"bhj","name":"Bahing"},{"code":"bhl","name":"Bimin"},{"code":"bhm","name":"Bathari"},{"code":"bhn","name":"Bohtan Neo-Aramaic"},{"code":"bho","name":"Bhojpuri"},{"code":"bhp","name":"Bima"},{"code":"bhq","name":"Tukang Besi South"},{"code":"bhr","name":"Bara Malagasy"},{"code":"bhs","name":"Buwal"},{"code":"bht","name":"Bhattiyali"},{"code":"bhu","name":"Bhunjia"},{"code":"bhv","name":"Bahau"},{"code":"bhw","name":"Biak"},{"code":"bhx","name":"Bhalay"},{"code":"bhy","name":"Bhele"},{"code":"bhz","name":"Bada (Indonesia)"},{"code":"bia","name":"Badimaya"},{"code":"bib","name":"Bisa"},{"code":"bid","name":"Bidiyo"},{"code":"bie","name":"Bepour"},{"code":"bif","name":"Biafada"},{"code":"big","name":"Biangai"},{"code":"bik","name":"Bikol"},{"code":"bil","name":"Bile"},{"code":"bim","name":"Bimoba"},{"code":"bin","name":"Bini"},{"code":"bio","name":"Nai"},{"code":"bip","name":"Bila"},{"code":"biq","name":"Bipi"},{"code":"bir","name":"Bisorio"},{"code":"bis","name":"Bislama"},{"code":"bit","name":"Berinomo"},{"code":"biu","name":"Biete"},{"code":"biv","name":"Southern Birifor"},{"code":"biw","name":"Kol (Cameroon)"},{"code":"bix","name":"Bijori"},{"code":"biy","name":"Birhor"},{"code":"biz","name":"Baloi"},{"code":"bja","name":"Budza"},{"code":"bjb","name":"Banggarla"},{"code":"bjc","name":"Bariji"},{"code":"bje","name":"Biao-Jiao Mien"},{"code":"bjf","name":"Barzani Jewish Neo-Aramaic"},{"code":"bjg","name":"Bidyogo"},{"code":"bjh","name":"Bahinemo"},{"code":"bji","name":"Burji"},{"code":"bjj","name":"Kanauji"},{"code":"bjk","name":"Barok"},{"code":"bjl","name":"Bulu (Papua New Guinea)"},{"code":"bjm","name":"Bajelani"},{"code":"bjn","name":"Banjar"},{"code":"bjo","name":"Mid-Southern Banda"},{"code":"bjp","name":"Fanamaket"},{"code":"bjr","name":"Binumarien"},{"code":"bjs","name":"Bajan"},{"code":"bjt","name":"Balanta-Ganja"},{"code":"bju","name":"Busuu"},{"code":"bjv","name":"Bedjond"},{"code":"bjw","name":"Bakwรฉ"},{"code":"bjx","name":"Banao Itneg"},{"code":"bjy","name":"Bayali"},{"code":"bjz","name":"Baruga"},{"code":"bka","name":"Kyak"},{"code":"bkc","name":"Baka (Cameroon)"},{"code":"bkd","name":"Binukid"},{"code":"bkf","name":"Beeke"},{"code":"bkg","name":"Buraka"},{"code":"bkh","name":"Bakoko"},{"code":"bki","name":"Baki"},{"code":"bkj","name":"Pande"},{"code":"bkk","name":"Brokskat"},{"code":"bkl","name":"Berik"},{"code":"bkm","name":"Kom (Cameroon)"},{"code":"bkn","name":"Bukitan"},{"code":"bko","name":"Kwa'"},{"code":"bkp","name":"Boko (Democratic Republic of Congo)"},{"code":"bkq","name":"Bakairรญ"},{"code":"bkr","name":"Bakumpai"},{"code":"bks","name":"Northern Sorsoganon"},{"code":"bkt","name":"Boloki"},{"code":"bku","name":"Buhid"},{"code":"bkv","name":"Bekwarra"},{"code":"bkw","name":"Bekwel"},{"code":"bkx","name":"Baikeno"},{"code":"bky","name":"Bokyi"},{"code":"bkz","name":"Bungku"},{"code":"bla","name":"Siksika"},{"code":"blb","name":"Bilua"},{"code":"blc","name":"Bella Coola"},{"code":"bld","name":"Bolango"},{"code":"ble","name":"Balanta-Kentohe"},{"code":"blf","name":"Buol"},{"code":"blh","name":"Kuwaa"},{"code":"bli","name":"Bolia"},{"code":"blj","name":"Bolongan"},{"code":"blk","name":"Pa'O"},{"code":"bll","name":"Biloxi"},{"code":"blm","name":"Beli (South Sudan)"},{"code":"bln","name":"Southern Catanduanes Bikol"},{"code":"blo","name":"Anii"},{"code":"blp","name":"Blablanga"},{"code":"blq","name":"Baluan-Pam"},{"code":"blr","name":"Blang"},{"code":"bls","name":"Balaesang"},{"code":"blt","name":"Tai Dam"},{"code":"blv","name":"Bolo"},{"code":"blw","name":"Balangao"},{"code":"blx","name":"Mag-Indi Ayta"},{"code":"bly","name":"Notre"},{"code":"blz","name":"Balantak"},{"code":"bma","name":"Lame"},{"code":"bmb","name":"Bembe"},{"code":"bmc","name":"Biem"},{"code":"bmd","name":"Baga Manduri"},{"code":"bme","name":"Limassa"},{"code":"bmf","name":"Bom-Kim"},{"code":"bmg","name":"Bamwe"},{"code":"bmh","name":"Kein"},{"code":"bmi","name":"Bagirmi"},{"code":"bmj","name":"Bote-Majhi"},{"code":"bmk","name":"Ghayavi"},{"code":"bml","name":"Bomboli"},{"code":"bmm","name":"Northern Betsimisaraka Malagasy"},{"code":"bmn","name":"Bina (Papua New Guinea)"},{"code":"bmo","name":"Bambalang"},{"code":"bmp","name":"Bulgebi"},{"code":"bmq","name":"Bomu"},{"code":"bmr","name":"Muinane"},{"code":"bms","name":"Bilma Kanuri"},{"code":"bmt","name":"Biao Mon"},{"code":"bmu","name":"Somba-Siawari"},{"code":"bmv","name":"Bum"},{"code":"bmw","name":"Bomwali"},{"code":"bmx","name":"Baimak"},{"code":"bmz","name":"Baramu"},{"code":"bna","name":"Bonerate"},{"code":"bnb","name":"Bookan"},{"code":"bnc","name":"Bontok"},{"code":"bnd","name":"Banda (Indonesia)"},{"code":"bne","name":"Bintauna"},{"code":"bnf","name":"Masiwang"},{"code":"bng","name":"Benga"},{"code":"bni","name":"Bangi"},{"code":"bnj","name":"Eastern Tawbuid"},{"code":"bnk","name":"Bierebo"},{"code":"bnl","name":"Boon"},{"code":"bnm","name":"Batanga"},{"code":"bnn","name":"Bunun"},{"code":"bno","name":"Bantoanon"},{"code":"bnp","name":"Bola"},{"code":"bnq","name":"Bantik"},{"code":"bnr","name":"Butmas-Tur"},{"code":"bns","name":"Bundeli"},{"code":"bnu","name":"Bentong"},{"code":"bnv","name":"Beneraf"},{"code":"bnw","name":"Bisis"},{"code":"bnx","name":"Bangubangu"},{"code":"bny","name":"Bintulu"},{"code":"bnz","name":"Beezen"},{"code":"boa","name":"Bora"},{"code":"bob","name":"Aweer"},{"code":"bod","name":"Tibetan"},{"code":"boe","name":"Mundabli"},{"code":"bof","name":"Bolon"},{"code":"bog","name":"Bamako Sign Language"},{"code":"boh","name":"Boma"},{"code":"boi","name":"Barbareรฑo"},{"code":"boj","name":"Anjam"},{"code":"bok","name":"Bonjo"},{"code":"bol","name":"Bole"},{"code":"bom","name":"Berom"},{"code":"bon","name":"Bine"},{"code":"boo","name":"Tiemacรจwรจ Bozo"},{"code":"bop","name":"Bonkiman"},{"code":"boq","name":"Bogaya"},{"code":"bor","name":"Borรดro"},{"code":"bos","name":"Bosnian"},{"code":"bot","name":"Bongo"},{"code":"bou","name":"Bondei"},{"code":"bov","name":"Tuwuli"},{"code":"bow","name":"Rema"},{"code":"box","name":"Buamu"},{"code":"boy","name":"Bodo (Central African Republic)"},{"code":"boz","name":"Tiรฉyaxo Bozo"},{"code":"bpa","name":"Daakaka"},{"code":"bpd","name":"Banda-Banda"},{"code":"bpe","name":"Bauni"},{"code":"bpg","name":"Bonggo"},{"code":"bph","name":"Botlikh"},{"code":"bpi","name":"Bagupi"},{"code":"bpj","name":"Binji"},{"code":"bpk","name":"'ร”rรดรช"},{"code":"bpl","name":"Broome Pearling Lugger Pidgin"},{"code":"bpm","name":"Biyom"},{"code":"bpn","name":"Dzao Min"},{"code":"bpo","name":"Anasi"},{"code":"bpp","name":"Kaure"},{"code":"bpq","name":"Banda Malay"},{"code":"bpr","name":"Koronadal Blaan"},{"code":"bps","name":"Sarangani Blaan"},{"code":"bpt","name":"Barrow Point"},{"code":"bpu","name":"Bongu"},{"code":"bpv","name":"Bian Marind"},{"code":"bpw","name":"Bo (Papua New Guinea)"},{"code":"bpx","name":"Palya Bareli"},{"code":"bpy","name":"Bishnupriya"},{"code":"bpz","name":"Bilba"},{"code":"bqa","name":"Tchumbuli"},{"code":"bqb","name":"Bagusa"},{"code":"bqc","name":"Boko (Benin)"},{"code":"bqd","name":"Bung"},{"code":"bqf","name":"Baga Kaloum"},{"code":"bqg","name":"Bago-Kusuntu"},{"code":"bqh","name":"Baima"},{"code":"bqi","name":"Bakhtiari"},{"code":"bqj","name":"Bandial"},{"code":"bqk","name":"Banda-Mbrรจs"},{"code":"bql","name":"Bilakura"},{"code":"bqm","name":"Wumboko"},{"code":"bqn","name":"Bulgarian Sign Language"},{"code":"bqo","name":"Balo"},{"code":"bqp","name":"Busa"},{"code":"bqq","name":"Biritai"},{"code":"bqr","name":"Burusu"},{"code":"bqs","name":"Bosngun"},{"code":"bqt","name":"Bamukumbit"},{"code":"bqu","name":"Boguru"},{"code":"bqv","name":"Begbere-Ejar"},{"code":"bqw","name":"Buru (Nigeria)"},{"code":"bqx","name":"Baangi"},{"code":"bqy","name":"Bengkala Sign Language"},{"code":"bqz","name":"Bakaka"},{"code":"bra","name":"Braj"},{"code":"brb","name":"Lave"},{"code":"brc","name":"Berbice Creole Dutch"},{"code":"brd","name":"Baraamu"},{"code":"bre","name":"Breton"},{"code":"brf","name":"Bira"},{"code":"brg","name":"Baure"},{"code":"brh","name":"Brahui"},{"code":"bri","name":"Mokpwe"},{"code":"brj","name":"Bieria"},{"code":"brk","name":"Birked"},{"code":"brl","name":"Birwa"},{"code":"brm","name":"Barambu"},{"code":"brn","name":"Boruca"},{"code":"bro","name":"Brokkat"},{"code":"brp","name":"Barapasi"},{"code":"brq","name":"Breri"},{"code":"brr","name":"Birao"},{"code":"brs","name":"Baras"},{"code":"brt","name":"Bitare"},{"code":"bru","name":"Eastern Bru"},{"code":"brv","name":"Western Bru"},{"code":"brw","name":"Bellari"},{"code":"brx","name":"Bodo (India)"},{"code":"bry","name":"Burui"},{"code":"brz","name":"Bilbil"},{"code":"bsa","name":"Abinomn"},{"code":"bsb","name":"Brunei Bisaya"},{"code":"bsc","name":"Bassari"},{"code":"bse","name":"Wushi"},{"code":"bsf","name":"Bauchi"},{"code":"bsg","name":"Bashkardi"},{"code":"bsh","name":"Kati"},{"code":"bsi","name":"Bassossi"},{"code":"bsj","name":"Bangwinji"},{"code":"bsk","name":"Burushaski"},{"code":"bsl","name":"Basa-Gumna"},{"code":"bsm","name":"Busami"},{"code":"bsn","name":"Barasana-Eduria"},{"code":"bso","name":"Buso"},{"code":"bsp","name":"Baga Sitemu"},{"code":"bsq","name":"Bassa"},{"code":"bsr","name":"Bassa-Kontagora"},{"code":"bss","name":"Akoose"},{"code":"bst","name":"Basketo"},{"code":"bsu","name":"Bahonsuai"},{"code":"bsv","name":"Baga Sobanรฉ"},{"code":"bsw","name":"Baiso"},{"code":"bsx","name":"Yangkam"},{"code":"bsy","name":"Sabah Bisaya"},{"code":"bta","name":"Bata"},{"code":"btc","name":"Bati (Cameroon)"},{"code":"btd","name":"Batak Dairi"},{"code":"bte","name":"Gamo-Ningi"},{"code":"btf","name":"Birgit"},{"code":"btg","name":"Gagnoa Bรฉtรฉ"},{"code":"bth","name":"Biatah Bidayuh"},{"code":"bti","name":"Burate"},{"code":"btj","name":"Bacanese Malay"},{"code":"btm","name":"Batak Mandailing"},{"code":"btn","name":"Ratagnon"},{"code":"bto","name":"Rinconada Bikol"},{"code":"btp","name":"Budibud"},{"code":"btq","name":"Batek"},{"code":"btr","name":"Baetora"},{"code":"bts","name":"Batak Simalungun"},{"code":"btt","name":"Bete-Bendi"},{"code":"btu","name":"Batu"},{"code":"btv","name":"Bateri"},{"code":"btw","name":"Butuanon"},{"code":"btx","name":"Batak Karo"},{"code":"bty","name":"Bobot"},{"code":"btz","name":"Batak Alas-Kluet"},{"code":"bua","name":"Buriat"},{"code":"bub","name":"Bua"},{"code":"buc","name":"Bushi"},{"code":"bud","name":"Ntcham"},{"code":"bue","name":"Beothuk"},{"code":"buf","name":"Bushoong"},{"code":"bug","name":"Buginese"},{"code":"buh","name":"Younuo Bunu"},{"code":"bui","name":"Bongili"},{"code":"buj","name":"Basa-Gurmana"},{"code":"buk","name":"Bugawac"},{"code":"bul","name":"Bulgarian"},{"code":"bum","name":"Bulu (Cameroon)"},{"code":"bun","name":"Sherbro"},{"code":"buo","name":"Terei"},{"code":"bup","name":"Busoa"},{"code":"buq","name":"Brem"},{"code":"bus","name":"Bokobaru"},{"code":"but","name":"Bungain"},{"code":"buu","name":"Budu"},{"code":"buv","name":"Bun"},{"code":"buw","name":"Bubi"},{"code":"bux","name":"Boghom"},{"code":"buy","name":"Bullom So"},{"code":"buz","name":"Bukwen"},{"code":"bva","name":"Barein"},{"code":"bvb","name":"Bube"},{"code":"bvc","name":"Baelelea"},{"code":"bvd","name":"Baeggu"},{"code":"bve","name":"Berau Malay"},{"code":"bvf","name":"Boor"},{"code":"bvg","name":"Bonkeng"},{"code":"bvh","name":"Bure"},{"code":"bvi","name":"Belanda Viri"},{"code":"bvj","name":"Baan"},{"code":"bvk","name":"Bukat"},{"code":"bvl","name":"Bolivian Sign Language"},{"code":"bvm","name":"Bamunka"},{"code":"bvn","name":"Buna"},{"code":"bvo","name":"Bolgo"},{"code":"bvp","name":"Bumang"},{"code":"bvq","name":"Birri"},{"code":"bvr","name":"Burarra"},{"code":"bvt","name":"Bati (Indonesia)"},{"code":"bvu","name":"Bukit Malay"},{"code":"bvv","name":"Baniva"},{"code":"bvw","name":"Boga"},{"code":"bvx","name":"Dibole"},{"code":"bvy","name":"Baybayanon"},{"code":"bvz","name":"Bauzi"},{"code":"bwa","name":"Bwatoo"},{"code":"bwb","name":"Namosi-Naitasiri-Serua"},{"code":"bwc","name":"Bwile"},{"code":"bwd","name":"Bwaidoka"},{"code":"bwe","name":"Bwe Karen"},{"code":"bwf","name":"Boselewa"},{"code":"bwg","name":"Barwe"},{"code":"bwh","name":"Bishuo"},{"code":"bwi","name":"Baniwa"},{"code":"bwj","name":"Lรกรก Lรกรก Bwamu"},{"code":"bwk","name":"Bauwaki"},{"code":"bwl","name":"Bwela"},{"code":"bwm","name":"Biwat"},{"code":"bwn","name":"Wunai Bunu"},{"code":"bwo","name":"Borna (Ethiopia)"},{"code":"bwp","name":"Mandobo Bawah"},{"code":"bwq","name":"Southern Bobo Madarรฉ"},{"code":"bwr","name":"Bura-Pabir"},{"code":"bws","name":"Bomboma"},{"code":"bwt","name":"Bafaw-Balong"},{"code":"bwu","name":"Buli (Ghana)"},{"code":"bww","name":"Bwa"},{"code":"bwx","name":"Bu-Nao Bunu"},{"code":"bwy","name":"Cwi Bwamu"},{"code":"bwz","name":"Bwisi"},{"code":"bxa","name":"Tairaha"},{"code":"bxb","name":"Belanda Bor"},{"code":"bxc","name":"Molengue"},{"code":"bxd","name":"Pela"},{"code":"bxe","name":"Birale"},{"code":"bxf","name":"Bilur"},{"code":"bxg","name":"Bangala"},{"code":"bxh","name":"Buhutu"},{"code":"bxi","name":"Pirlatapa"},{"code":"bxj","name":"Bayungu"},{"code":"bxk","name":"Bukusu"},{"code":"bxl","name":"Jalkunan"},{"code":"bxm","name":"Mongolia Buriat"},{"code":"bxn","name":"Burduna"},{"code":"bxo","name":"Barikanchi"},{"code":"bxp","name":"Bebil"},{"code":"bxq","name":"Beele"},{"code":"bxr","name":"Russia Buriat"},{"code":"bxs","name":"Busam"},{"code":"bxu","name":"China Buriat"},{"code":"bxv","name":"Berakou"},{"code":"bxw","name":"Bankagooma"},{"code":"bxz","name":"Binahari"},{"code":"bya","name":"Batak"},{"code":"byb","name":"Bikya"},{"code":"byc","name":"Ubaghara"},{"code":"byd","name":"Benyadu'"},{"code":"bye","name":"Pouye"},{"code":"byf","name":"Bete"},{"code":"byg","name":"Baygo"},{"code":"byh","name":"Bhujel"},{"code":"byi","name":"Buyu"},{"code":"byj","name":"Bina (Nigeria)"},{"code":"byk","name":"Biao"},{"code":"byl","name":"Bayono"},{"code":"bym","name":"Bidjara"},{"code":"byn","name":"Bilin"},{"code":"byo","name":"Biyo"},{"code":"byp","name":"Bumaji"},{"code":"byq","name":"Basay"},{"code":"byr","name":"Baruya"},{"code":"bys","name":"Burak"},{"code":"byt","name":"Berti"},{"code":"byv","name":"Medumba"},{"code":"byw","name":"Belhariya"},{"code":"byx","name":"Qaqet"},{"code":"byz","name":"Banaro"},{"code":"bza","name":"Bandi"},{"code":"bzb","name":"Andio"},{"code":"bzc","name":"Southern Betsimisaraka Malagasy"},{"code":"bzd","name":"Bribri"},{"code":"bze","name":"Jenaama Bozo"},{"code":"bzf","name":"Boikin"},{"code":"bzg","name":"Babuza"},{"code":"bzh","name":"Mapos Buang"},{"code":"bzi","name":"Bisu"},{"code":"bzj","name":"Belize Kriol English"},{"code":"bzk","name":"Nicaragua Creole English"},{"code":"bzl","name":"Boano (Sulawesi)"},{"code":"bzm","name":"Bolondo"},{"code":"bzn","name":"Boano (Maluku)"},{"code":"bzo","name":"Bozaba"},{"code":"bzp","name":"Kemberano"},{"code":"bzq","name":"Buli (Indonesia)"},{"code":"bzr","name":"Biri"},{"code":"bzs","name":"Brazilian Sign Language"},{"code":"bzt","name":"Brithenig"},{"code":"bzu","name":"Burmeso"},{"code":"bzv","name":"Naami"},{"code":"bzw","name":"Basa (Nigeria)"},{"code":"bzx","name":"Kษ›lษ›ngaxo Bozo"},{"code":"bzy","name":"Obanliku"},{"code":"bzz","name":"Evant"},{"code":"caa","name":"Chortรญ"},{"code":"cab","name":"Garifuna"},{"code":"cac","name":"Chuj"},{"code":"cad","name":"Caddo"},{"code":"cae","name":"Laalaa"},{"code":"caf","name":"Southern Carrier"},{"code":"cag","name":"Nivaclรฉ"},{"code":"cah","name":"Cahuarano"},{"code":"caj","name":"Chanรฉ"},{"code":"cak","name":"Cakchiquel"},{"code":"cal","name":"Carolinian"},{"code":"cam","name":"Cemuhรฎ"},{"code":"can","name":"Chambri"},{"code":"cao","name":"Chรกcobo"},{"code":"cap","name":"Chipaya"},{"code":"caq","name":"Car Nicobarese"},{"code":"car","name":"Galibi Carib"},{"code":"cas","name":"Tsimanรฉ"},{"code":"cat","name":"Catalan"},{"code":"cav","name":"Cavineรฑa"},{"code":"caw","name":"Callawalla"},{"code":"cax","name":"Chiquitano"},{"code":"cay","name":"Cayuga"},{"code":"caz","name":"Canichana"},{"code":"cbb","name":"Cabiyarรญ"},{"code":"cbc","name":"Carapana"},{"code":"cbd","name":"Carijona"},{"code":"cbg","name":"Chimila"},{"code":"cbi","name":"Chachi"},{"code":"cbj","name":"Ede Cabe"},{"code":"cbk","name":"Chavacano"},{"code":"cbl","name":"Bualkhaw Chin"},{"code":"cbn","name":"Nyahkur"},{"code":"cbo","name":"Izora"},{"code":"cbq","name":"Cuba"},{"code":"cbr","name":"Cashibo-Cacataibo"},{"code":"cbs","name":"Cashinahua"},{"code":"cbt","name":"Chayahuita"},{"code":"cbu","name":"Candoshi-Shapra"},{"code":"cbv","name":"Cacua"},{"code":"cbw","name":"Kinabalian"},{"code":"cby","name":"Carabayo"},{"code":"ccc","name":"Chamicuro"},{"code":"ccd","name":"Cafundo Creole"},{"code":"cce","name":"Chopi"},{"code":"ccg","name":"Samba Daka"},{"code":"cch","name":"Atsam"},{"code":"ccj","name":"Kasanga"},{"code":"ccl","name":"Cutchi-Swahili"},{"code":"ccm","name":"Malaccan Creole Malay"},{"code":"cco","name":"Comaltepec Chinantec"},{"code":"ccp","name":"Chakma"},{"code":"ccr","name":"Cacaopera"},{"code":"cda","name":"Choni"},{"code":"cde","name":"Chenchu"},{"code":"cdf","name":"Chiru"},{"code":"cdh","name":"Chambeali"},{"code":"cdi","name":"Chodri"},{"code":"cdj","name":"Churahi"},{"code":"cdm","name":"Chepang"},{"code":"cdn","name":"Chaudangsi"},{"code":"cdo","name":"Min Dong Chinese"},{"code":"cdr","name":"Cinda-Regi-Tiyal"},{"code":"cds","name":"Chadian Sign Language"},{"code":"cdy","name":"Chadong"},{"code":"cdz","name":"Koda"},{"code":"cea","name":"Lower Chehalis"},{"code":"ceb","name":"Cebuano"},{"code":"ceg","name":"Chamacoco"},{"code":"cek","name":"Eastern Khumi Chin"},{"code":"cen","name":"Cen"},{"code":"ces","name":"Czech"},{"code":"cet","name":"Centรบรบm"},{"code":"cey","name":"Ekai Chin"},{"code":"cfa","name":"Dijim-Bwilim"},{"code":"cfd","name":"Cara"},{"code":"cfg","name":"Como Karim"},{"code":"cfm","name":"Falam Chin"},{"code":"cga","name":"Changriwa"},{"code":"cgc","name":"Kagayanen"},{"code":"cgg","name":"Chiga"},{"code":"cgk","name":"Chocangacakha"},{"code":"cha","name":"Chamorro"},{"code":"chb","name":"Chibcha"},{"code":"chc","name":"Catawba"},{"code":"chd","name":"Highland Oaxaca Chontal"},{"code":"che","name":"Chechen"},{"code":"chf","name":"Tabasco Chontal"},{"code":"chg","name":"Chagatai"},{"code":"chh","name":"Chinook"},{"code":"chj","name":"Ojitlรกn Chinantec"},{"code":"chk","name":"Chuukese"},{"code":"chl","name":"Cahuilla"},{"code":"chm","name":"Mari (Russia)"},{"code":"chn","name":"Chinook jargon"},{"code":"cho","name":"Choctaw"},{"code":"chp","name":"Chipewyan"},{"code":"chq","name":"Quiotepec Chinantec"},{"code":"chr","name":"Cherokee"},{"code":"cht","name":"Cholรณn"},{"code":"chu","name":"Church Slavic"},{"code":"chv","name":"Chuvash"},{"code":"chw","name":"Chuwabu"},{"code":"chx","name":"Chantyal"},{"code":"chy","name":"Cheyenne"},{"code":"chz","name":"Ozumacรญn Chinantec"},{"code":"cia","name":"Cia-Cia"},{"code":"cib","name":"Ci Gbe"},{"code":"cic","name":"Chickasaw"},{"code":"cid","name":"Chimariko"},{"code":"cie","name":"Cineni"},{"code":"cih","name":"Chinali"},{"code":"cik","name":"Chitkuli Kinnauri"},{"code":"cim","name":"Cimbrian"},{"code":"cin","name":"Cinta Larga"},{"code":"cip","name":"Chiapanec"},{"code":"cir","name":"Hamรฉa"},{"code":"ciw","name":"Chippewa"},{"code":"ciy","name":"Chaima"},{"code":"cja","name":"Western Cham"},{"code":"cje","name":"Chru"},{"code":"cjh","name":"Upper Chehalis"},{"code":"cji","name":"Chamalal"},{"code":"cjk","name":"Chokwe"},{"code":"cjm","name":"Eastern Cham"},{"code":"cjn","name":"Chenapian"},{"code":"cjo","name":"Ashรฉninka Pajonal"},{"code":"cjp","name":"Cabรฉcar"},{"code":"cjs","name":"Shor"},{"code":"cjv","name":"Chuave"},{"code":"cjy","name":"Jinyu Chinese"},{"code":"ckb","name":"Central Kurdish"},{"code":"ckh","name":"Chak"},{"code":"ckl","name":"Cibak"},{"code":"ckm","name":"Chakavian"},{"code":"ckn","name":"Kaang Chin"},{"code":"cko","name":"Anufo"},{"code":"ckq","name":"Kajakse"},{"code":"ckr","name":"Kairak"},{"code":"cks","name":"Tayo"},{"code":"ckt","name":"Chukot"},{"code":"cku","name":"Koasati"},{"code":"ckv","name":"Kavalan"},{"code":"ckx","name":"Caka"},{"code":"cky","name":"Cakfem-Mushere"},{"code":"ckz","name":"Cakchiquel-Quichรฉ Mixed Language"},{"code":"cla","name":"Ron"},{"code":"clc","name":"Chilcotin"},{"code":"cld","name":"Chaldean Neo-Aramaic"},{"code":"cle","name":"Lealao Chinantec"},{"code":"clh","name":"Chilisso"},{"code":"cli","name":"Chakali"},{"code":"clj","name":"Laitu Chin"},{"code":"clk","name":"Idu-Mishmi"},{"code":"cll","name":"Chala"},{"code":"clm","name":"Clallam"},{"code":"clo","name":"Lowland Oaxaca Chontal"},{"code":"clt","name":"Lautu Chin"},{"code":"clu","name":"Caluyanun"},{"code":"clw","name":"Chulym"},{"code":"cly","name":"Eastern Highland Chatino"},{"code":"cma","name":"Maa"},{"code":"cme","name":"Cerma"},{"code":"cmg","name":"Classical Mongolian"},{"code":"cmi","name":"Emberรก-Chamรญ"},{"code":"cml","name":"Campalagian"},{"code":"cmm","name":"Michigamea"},{"code":"cmn","name":"Mandarin Chinese"},{"code":"cmo","name":"Central Mnong"},{"code":"cmr","name":"Mro-Khimi Chin"},{"code":"cms","name":"Messapic"},{"code":"cmt","name":"Camtho"},{"code":"cna","name":"Changthang"},{"code":"cnb","name":"Chinbon Chin"},{"code":"cnc","name":"Cรดรดng"},{"code":"cng","name":"Northern Qiang"},{"code":"cnh","name":"Haka Chin"},{"code":"cni","name":"Ashรกninka"},{"code":"cnk","name":"Khumi Chin"},{"code":"cnl","name":"Lalana Chinantec"},{"code":"cno","name":"Con"},{"code":"cnp","name":"Northern Ping Chinese"},{"code":"cnr","name":"Montenegrin"},{"code":"cns","name":"Central Asmat"},{"code":"cnt","name":"Tepetotutla Chinantec"},{"code":"cnu","name":"Chenoua"},{"code":"cnw","name":"Ngawn Chin"},{"code":"cnx","name":"Middle Cornish"},{"code":"coa","name":"Cocos Islands Malay"},{"code":"cob","name":"Chicomuceltec"},{"code":"coc","name":"Cocopa"},{"code":"cod","name":"Cocama-Cocamilla"},{"code":"coe","name":"Koreguaje"},{"code":"cof","name":"Colorado"},{"code":"cog","name":"Chong"},{"code":"coh","name":"Chichonyi-Chidzihana-Chikauma"},{"code":"coj","name":"Cochimi"},{"code":"cok","name":"Santa Teresa Cora"},{"code":"col","name":"Columbia-Wenatchi"},{"code":"com","name":"Comanche"},{"code":"con","name":"Cofรกn"},{"code":"coo","name":"Comox"},{"code":"cop","name":"Coptic"},{"code":"coq","name":"Coquille"},{"code":"cor","name":"Cornish"},{"code":"cos","name":"Corsican"},{"code":"cot","name":"Caquinte"},{"code":"cou","name":"Wamey"},{"code":"cov","name":"Cao Miao"},{"code":"cow","name":"Cowlitz"},{"code":"cox","name":"Nanti"},{"code":"coz","name":"Chochotec"},{"code":"cpa","name":"Palantla Chinantec"},{"code":"cpb","name":"Ucayali-Yurรบa Ashรฉninka"},{"code":"cpc","name":"Ajyรญninka Apurucayali"},{"code":"cpg","name":"Cappadocian Greek"},{"code":"cpi","name":"Chinese Pidgin English"},{"code":"cpn","name":"Cherepon"},{"code":"cpo","name":"Kpeego"},{"code":"cps","name":"Capiznon"},{"code":"cpu","name":"Pichis Ashรฉninka"},{"code":"cpx","name":"Pu-Xian Chinese"},{"code":"cpy","name":"South Ucayali Ashรฉninka"},{"code":"cqd","name":"Chuanqiandian Cluster Miao"},{"code":"cra","name":"Chara"},{"code":"crb","name":"Island Carib"},{"code":"crc","name":"Lonwolwol"},{"code":"crd","name":"Coeur d'Alene"},{"code":"cre","name":"Cree"},{"code":"crf","name":"Caramanta"},{"code":"crg","name":"Michif"},{"code":"crh","name":"Crimean Tatar"},{"code":"cri","name":"Sรฃotomense"},{"code":"crj","name":"Southern East Cree"},{"code":"crk","name":"Plains Cree"},{"code":"crl","name":"Northern East Cree"},{"code":"crm","name":"Moose Cree"},{"code":"crn","name":"El Nayar Cora"},{"code":"cro","name":"Crow"},{"code":"crq","name":"Iyo'wujwa Chorote"},{"code":"crr","name":"Carolina Algonquian"},{"code":"crs","name":"Seselwa Creole French"},{"code":"crt","name":"Iyojwa'ja Chorote"},{"code":"crv","name":"Chaura"},{"code":"crw","name":"Chrau"},{"code":"crx","name":"Carrier"},{"code":"cry","name":"Cori"},{"code":"crz","name":"Cruzeรฑo"},{"code":"csa","name":"Chiltepec Chinantec"},{"code":"csb","name":"Kashubian"},{"code":"csc","name":"Catalan Sign Language"},{"code":"csd","name":"Chiangmai Sign Language"},{"code":"cse","name":"Czech Sign Language"},{"code":"csf","name":"Cuba Sign Language"},{"code":"csg","name":"Chilean Sign Language"},{"code":"csh","name":"Asho Chin"},{"code":"csi","name":"Coast Miwok"},{"code":"csj","name":"Songlai Chin"},{"code":"csk","name":"Jola-Kasa"},{"code":"csl","name":"Chinese Sign Language"},{"code":"csm","name":"Central Sierra Miwok"},{"code":"csn","name":"Colombian Sign Language"},{"code":"cso","name":"Sochiapam Chinantec"},{"code":"csp","name":"Southern Ping Chinese"},{"code":"csq","name":"Croatia Sign Language"},{"code":"csr","name":"Costa Rican Sign Language"},{"code":"css","name":"Southern Ohlone"},{"code":"cst","name":"Northern Ohlone"},{"code":"csv","name":"Sumtu Chin"},{"code":"csw","name":"Swampy Cree"},{"code":"csx","name":"Cambodian Sign Language"},{"code":"csy","name":"Siyin Chin"},{"code":"csz","name":"Coos"},{"code":"cta","name":"Tataltepec Chatino"},{"code":"ctc","name":"Chetco"},{"code":"ctd","name":"Tedim Chin"},{"code":"cte","name":"Tepinapa Chinantec"},{"code":"ctg","name":"Chittagonian"},{"code":"cth","name":"Thaiphum Chin"},{"code":"ctl","name":"Tlacoatzintepec Chinantec"},{"code":"ctm","name":"Chitimacha"},{"code":"ctn","name":"Chhintange"},{"code":"cto","name":"Emberรก-Catรญo"},{"code":"ctp","name":"Western Highland Chatino"},{"code":"cts","name":"Northern Catanduanes Bikol"},{"code":"ctt","name":"Wayanad Chetti"},{"code":"ctu","name":"Chol"},{"code":"cty","name":"Moundadan Chetty"},{"code":"ctz","name":"Zacatepec Chatino"},{"code":"cua","name":"Cua"},{"code":"cub","name":"Cubeo"},{"code":"cuc","name":"Usila Chinantec"},{"code":"cug","name":"Chungmboko"},{"code":"cuh","name":"Chuka"},{"code":"cui","name":"Cuiba"},{"code":"cuj","name":"Mashco Piro"},{"code":"cuk","name":"San Blas Kuna"},{"code":"cul","name":"Culina"},{"code":"cuo","name":"Cumanagoto"},{"code":"cup","name":"Cupeรฑo"},{"code":"cuq","name":"Cun"},{"code":"cur","name":"Chhulung"},{"code":"cut","name":"Teutila Cuicatec"},{"code":"cuu","name":"Tai Ya"},{"code":"cuv","name":"Cuvok"},{"code":"cuw","name":"Chukwa"},{"code":"cux","name":"Tepeuxila Cuicatec"},{"code":"cuy","name":"Cuitlatec"},{"code":"cvg","name":"Chug"},{"code":"cvn","name":"Valle Nacional Chinantec"},{"code":"cwa","name":"Kabwa"},{"code":"cwb","name":"Maindo"},{"code":"cwd","name":"Woods Cree"},{"code":"cwe","name":"Kwere"},{"code":"cwg","name":"Cheq Wong"},{"code":"cwt","name":"Kuwaataay"},{"code":"cya","name":"Nopala Chatino"},{"code":"cyb","name":"Cayubaba"},{"code":"cym","name":"Welsh"},{"code":"cyo","name":"Cuyonon"},{"code":"czh","name":"Huizhou Chinese"},{"code":"czk","name":"Knaanic"},{"code":"czn","name":"Zenzontepec Chatino"},{"code":"czo","name":"Min Zhong Chinese"},{"code":"czt","name":"Zotung Chin"},{"code":"daa","name":"Dangalรฉat"},{"code":"dac","name":"Dambi"},{"code":"dad","name":"Marik"},{"code":"dae","name":"Duupa"},{"code":"dag","name":"Dagbani"},{"code":"dah","name":"Gwahatike"},{"code":"dai","name":"Day"},{"code":"daj","name":"Dar Fur Daju"},{"code":"dak","name":"Dakota"},{"code":"dal","name":"Dahalo"},{"code":"dam","name":"Damakawa"},{"code":"dan","name":"Danish"},{"code":"dao","name":"Daai Chin"},{"code":"daq","name":"Dandami Maria"},{"code":"dar","name":"Dargwa"},{"code":"das","name":"Daho-Doo"},{"code":"dau","name":"Dar Sila Daju"},{"code":"dav","name":"Dawida"},{"code":"daw","name":"Davawenyo"},{"code":"dax","name":"Dayi"},{"code":"daz","name":"Dao"},{"code":"dba","name":"Bangime"},{"code":"dbb","name":"Deno"},{"code":"dbd","name":"Dadiya"},{"code":"dbe","name":"Dabe"},{"code":"dbf","name":"Edopi"},{"code":"dbg","name":"Dogul Dom Dogon"},{"code":"dbi","name":"Doka"},{"code":"dbj","name":"Ida'an"},{"code":"dbl","name":"Dyirbal"},{"code":"dbm","name":"Duguri"},{"code":"dbn","name":"Duriankere"},{"code":"dbo","name":"Dulbu"},{"code":"dbp","name":"Duwai"},{"code":"dbq","name":"Daba"},{"code":"dbr","name":"Dabarre"},{"code":"dbt","name":"Ben Tey Dogon"},{"code":"dbu","name":"Bondum Dom Dogon"},{"code":"dbv","name":"Dungu"},{"code":"dbw","name":"Bankan Tey Dogon"},{"code":"dby","name":"Dibiyaso"},{"code":"dcc","name":"Deccan"},{"code":"dcr","name":"Negerhollands"},{"code":"dda","name":"Dadi Dadi"},{"code":"ddd","name":"Dongotono"},{"code":"dde","name":"Doondo"},{"code":"ddg","name":"Fataluku"},{"code":"ddi","name":"West Goodenough"},{"code":"ddj","name":"Jaru"},{"code":"ddn","name":"Dendi (Benin)"},{"code":"ddo","name":"Dido"},{"code":"ddr","name":"Dhudhuroa"},{"code":"dds","name":"Donno So Dogon"},{"code":"ddw","name":"Dawera-Daweloor"},{"code":"dec","name":"Dagik"},{"code":"ded","name":"Dedua"},{"code":"dee","name":"Dewoin"},{"code":"def","name":"Dezfuli"},{"code":"deg","name":"Degema"},{"code":"deh","name":"Dehwari"},{"code":"dei","name":"Demisa"},{"code":"dek","name":"Dek"},{"code":"del","name":"Delaware"},{"code":"dem","name":"Dem"},{"code":"den","name":"Slave (Athapascan)"},{"code":"dep","name":"Pidgin Delaware"},{"code":"deq","name":"Dendi (Central African Republic)"},{"code":"der","name":"Deori"},{"code":"des","name":"Desano"},{"code":"deu","name":"German"},{"code":"dev","name":"Domung"},{"code":"dez","name":"Dengese"},{"code":"dga","name":"Southern Dagaare"},{"code":"dgb","name":"Bunoge Dogon"},{"code":"dgc","name":"Casiguran Dumagat Agta"},{"code":"dgd","name":"Dagaari Dioula"},{"code":"dge","name":"Degenan"},{"code":"dgg","name":"Doga"},{"code":"dgh","name":"Dghwede"},{"code":"dgi","name":"Northern Dagara"},{"code":"dgk","name":"Dagba"},{"code":"dgl","name":"Andaandi"},{"code":"dgn","name":"Dagoman"},{"code":"dgo","name":"Dogri (individual language)"},{"code":"dgr","name":"Dogrib"},{"code":"dgs","name":"Dogoso"},{"code":"dgt","name":"Ndra'ngith"},{"code":"dgw","name":"Daungwurrung"},{"code":"dgx","name":"Doghoro"},{"code":"dgz","name":"Daga"},{"code":"dhd","name":"Dhundari"},{"code":"dhg","name":"Dhangu"},{"code":"dhi","name":"Dhimal"},{"code":"dhl","name":"Dhalandji"},{"code":"dhm","name":"Zemba"},{"code":"dhn","name":"Dhanki"},{"code":"dho","name":"Dhodia"},{"code":"dhr","name":"Dhargari"},{"code":"dhs","name":"Dhaiso"},{"code":"dhu","name":"Dhurga"},{"code":"dhv","name":"Dehu"},{"code":"dhw","name":"Dhanwar (Nepal)"},{"code":"dhx","name":"Dhungaloo"},{"code":"dia","name":"Dia"},{"code":"dib","name":"South Central Dinka"},{"code":"dic","name":"Lakota Dida"},{"code":"did","name":"Didinga"},{"code":"dif","name":"Dieri"},{"code":"dig","name":"Chidigo"},{"code":"dih","name":"Kumiai"},{"code":"dii","name":"Dimbong"},{"code":"dij","name":"Dai"},{"code":"dik","name":"Southwestern Dinka"},{"code":"dil","name":"Dilling"},{"code":"dim","name":"Dime"},{"code":"din","name":"Dinka"},{"code":"dio","name":"Dibo"},{"code":"dip","name":"Northeastern Dinka"},{"code":"diq","name":"Dimli (individual language)"},{"code":"dir","name":"Dirim"},{"code":"dis","name":"Dimasa"},{"code":"diu","name":"Diriku"},{"code":"div","name":"Dhivehi"},{"code":"diw","name":"Northwestern Dinka"},{"code":"dix","name":"Dixon Reef"},{"code":"diy","name":"Diuwe"},{"code":"diz","name":"Ding"},{"code":"dja","name":"Djadjawurrung"},{"code":"djb","name":"Djinba"},{"code":"djc","name":"Dar Daju Daju"},{"code":"djd","name":"Djamindjung"},{"code":"dje","name":"Zarma"},{"code":"djf","name":"Djangun"},{"code":"dji","name":"Djinang"},{"code":"djj","name":"Djeebbana"},{"code":"djk","name":"Businenge Tongo"},{"code":"djm","name":"Jamsay Dogon"},{"code":"djn","name":"Djauan"},{"code":"djo","name":"Jangkang"},{"code":"djr","name":"Djambarrpuyngu"},{"code":"dju","name":"Kapriman"},{"code":"djw","name":"Djawi"},{"code":"dka","name":"Dakpakha"},{"code":"dkg","name":"Kadung"},{"code":"dkk","name":"Dakka"},{"code":"dkr","name":"Kuijau"},{"code":"dks","name":"Southeastern Dinka"},{"code":"dkx","name":"Mazagway"},{"code":"dlg","name":"Dolgan"},{"code":"dlk","name":"Dahalik"},{"code":"dlm","name":"Dalmatian"},{"code":"dln","name":"Darlong"},{"code":"dma","name":"Duma"},{"code":"dmb","name":"Mombo Dogon"},{"code":"dmc","name":"Gavak"},{"code":"dmd","name":"Madhi Madhi"},{"code":"dme","name":"Dugwor"},{"code":"dmf","name":"Medefaidrin"},{"code":"dmg","name":"Upper Kinabatangan"},{"code":"dmk","name":"Domaaki"},{"code":"dml","name":"Dameli"},{"code":"dmm","name":"Dama"},{"code":"dmo","name":"Kemedzung"},{"code":"dmr","name":"East Damar"},{"code":"dms","name":"Dampelas"},{"code":"dmu","name":"Dubu"},{"code":"dmv","name":"Dumpas"},{"code":"dmw","name":"Mudburra"},{"code":"dmx","name":"Dema"},{"code":"dmy","name":"Demta"},{"code":"dna","name":"Upper Grand Valley Dani"},{"code":"dnd","name":"Daonda"},{"code":"dne","name":"Ndendeule"},{"code":"dng","name":"Dungan"},{"code":"dni","name":"Lower Grand Valley Dani"},{"code":"dnj","name":"Dan"},{"code":"dnk","name":"Dengka"},{"code":"dnn","name":"Dzรนรนngoo"},{"code":"dno","name":"Ndrulo"},{"code":"dnr","name":"Danaru"},{"code":"dnt","name":"Mid Grand Valley Dani"},{"code":"dnu","name":"Danau"},{"code":"dnv","name":"Danu"},{"code":"dnw","name":"Western Dani"},{"code":"dny","name":"Denรญ"},{"code":"doa","name":"Dom"},{"code":"dob","name":"Dobu"},{"code":"doc","name":"Northern Dong"},{"code":"doe","name":"Doe"},{"code":"dof","name":"Domu"},{"code":"doh","name":"Dong"},{"code":"doi","name":"Dogri (macrolanguage)"},{"code":"dok","name":"Dondo"},{"code":"dol","name":"Doso"},{"code":"don","name":"Toura (Papua New Guinea)"},{"code":"doo","name":"Dongo"},{"code":"dop","name":"Lukpa"},{"code":"doq","name":"Dominican Sign Language"},{"code":"dor","name":"Dori'o"},{"code":"dos","name":"Dogosรฉ"},{"code":"dot","name":"Dass"},{"code":"dov","name":"Dombe"},{"code":"dow","name":"Doyayo"},{"code":"dox","name":"Bussa"},{"code":"doy","name":"Dompo"},{"code":"doz","name":"Dorze"},{"code":"dpp","name":"Papar"},{"code":"drb","name":"Dair"},{"code":"drc","name":"Minderico"},{"code":"drd","name":"Darmiya"},{"code":"dre","name":"Dolpo"},{"code":"drg","name":"Rungus"},{"code":"dri","name":"C'Lela"},{"code":"drl","name":"Paakantyi"},{"code":"drn","name":"West Damar"},{"code":"dro","name":"Daro-Matu Melanau"},{"code":"drq","name":"Dura"},{"code":"drs","name":"Gedeo"},{"code":"drt","name":"Drents"},{"code":"dru","name":"Rukai"},{"code":"dry","name":"Darai"},{"code":"dsb","name":"Lower Sorbian"},{"code":"dse","name":"Dutch Sign Language"},{"code":"dsh","name":"Daasanach"},{"code":"dsi","name":"Disa"},{"code":"dsl","name":"Danish Sign Language"},{"code":"dsn","name":"Dusner"},{"code":"dso","name":"Desiya"},{"code":"dsq","name":"Tadaksahak"},{"code":"dta","name":"Daur"},{"code":"dtb","name":"Labuk-Kinabatangan Kadazan"},{"code":"dtd","name":"Ditidaht"},{"code":"dth","name":"Adithinngithigh"},{"code":"dti","name":"Ana Tinga Dogon"},{"code":"dtk","name":"Tene Kan Dogon"},{"code":"dtm","name":"Tomo Kan Dogon"},{"code":"dtn","name":"Daatsสผiฬin"},{"code":"dto","name":"Tommo So Dogon"},{"code":"dtp","name":"Central Dusun"},{"code":"dtr","name":"Lotud"},{"code":"dts","name":"Toro So Dogon"},{"code":"dtt","name":"Toro Tegu Dogon"},{"code":"dtu","name":"Tebul Ure Dogon"},{"code":"dty","name":"Dotyali"},{"code":"dua","name":"Duala"},{"code":"dub","name":"Dubli"},{"code":"duc","name":"Duna"},{"code":"due","name":"Umiray Dumaget Agta"},{"code":"duf","name":"Drubea"},{"code":"dug","name":"Chiduruma"},{"code":"duh","name":"Dungra Bhil"},{"code":"dui","name":"Dumun"},{"code":"duk","name":"Uyajitaya"},{"code":"dul","name":"Alabat Island Agta"},{"code":"dum","name":"Middle Dutch (ca. 1050-1350)"},{"code":"dun","name":"Dusun Deyah"},{"code":"duo","name":"Dupaninan Agta"},{"code":"dup","name":"Duano"},{"code":"duq","name":"Dusun Malang"},{"code":"dur","name":"Dii"},{"code":"dus","name":"Dumi"},{"code":"duu","name":"Drung"},{"code":"duv","name":"Duvle"},{"code":"duw","name":"Dusun Witu"},{"code":"dux","name":"Duungooma"},{"code":"duy","name":"Dicamay Agta"},{"code":"duz","name":"Duli-Gey"},{"code":"dva","name":"Duau"},{"code":"dwa","name":"Diri"},{"code":"dwk","name":"Dawik Kui"},{"code":"dwr","name":"Dawro"},{"code":"dws","name":"Dutton World Speedwords"},{"code":"dwu","name":"Dhuwal"},{"code":"dww","name":"Dawawa"},{"code":"dwy","name":"Dhuwaya"},{"code":"dwz","name":"Dewas Rai"},{"code":"dya","name":"Dyan"},{"code":"dyb","name":"Dyaberdyaber"},{"code":"dyd","name":"Dyugun"},{"code":"dyg","name":"Villa Viciosa Agta"},{"code":"dyi","name":"Djimini Senoufo"},{"code":"dym","name":"Yanda Dom Dogon"},{"code":"dyn","name":"Dhanggatti"},{"code":"dyo","name":"Jola-Fonyi"},{"code":"dyu","name":"Dyula"},{"code":"dyy","name":"Djabugay"},{"code":"dza","name":"Tunzu"},{"code":"dze","name":"Djiwarli"},{"code":"dzg","name":"Dazaga"},{"code":"dzl","name":"Dzalakha"},{"code":"dzn","name":"Dzando"},{"code":"dzo","name":"Dzongkha"},{"code":"eaa","name":"Karenggapa"},{"code":"ebc","name":"Beginci"},{"code":"ebg","name":"Ebughu"},{"code":"ebk","name":"Eastern Bontok"},{"code":"ebo","name":"Teke-Ebo"},{"code":"ebr","name":"Ebriรฉ"},{"code":"ebu","name":"Embu"},{"code":"ecr","name":"Eteocretan"},{"code":"ecs","name":"Ecuadorian Sign Language"},{"code":"ecy","name":"Eteocypriot"},{"code":"eee","name":"E"},{"code":"efa","name":"Efai"},{"code":"efe","name":"Efe"},{"code":"efi","name":"Efik"},{"code":"ega","name":"Ega"},{"code":"egl","name":"Emilian"},{"code":"ego","name":"Eggon"},{"code":"egy","name":"Egyptian (Ancient)"},{"code":"ehs","name":"Miyakubo Sign Language"},{"code":"ehu","name":"Ehueun"},{"code":"eip","name":"Eipomek"},{"code":"eit","name":"Eitiep"},{"code":"eiv","name":"Askopan"},{"code":"eja","name":"Ejamat"},{"code":"eka","name":"Ekajuk"},{"code":"eke","name":"Ekit"},{"code":"ekg","name":"Ekari"},{"code":"eki","name":"Eki"},{"code":"ekk","name":"Standard Estonian"},{"code":"ekl","name":"Kol"},{"code":"ekm","name":"Elip"},{"code":"eko","name":"Koti"},{"code":"ekp","name":"Ekpeye"},{"code":"ekr","name":"Yace"},{"code":"eky","name":"Eastern Kayah"},{"code":"ele","name":"Elepi"},{"code":"elh","name":"El Hugeirat"},{"code":"eli","name":"Nding"},{"code":"elk","name":"Elkei"},{"code":"ell","name":"Greek"},{"code":"elm","name":"Eleme"},{"code":"elo","name":"El Molo"},{"code":"elu","name":"Elu"},{"code":"elx","name":"Elamite"},{"code":"ema","name":"Emai-Iuleha-Ora"},{"code":"emb","name":"Embaloh"},{"code":"eme","name":"Emerillon"},{"code":"emg","name":"Eastern Meohang"},{"code":"emi","name":"Mussau-Emira"},{"code":"emk","name":"Eastern Maninkakan"},{"code":"emm","name":"Mamulique"},{"code":"emn","name":"Eman"},{"code":"emp","name":"Northern Emberรก"},{"code":"emq","name":"Eastern Minyag"},{"code":"ems","name":"Pacific Gulf Yupik"},{"code":"emu","name":"Eastern Muria"},{"code":"emw","name":"Emplawas"},{"code":"emx","name":"Erromintxela"},{"code":"emy","name":"Epigraphic Mayan"},{"code":"emz","name":"Mbessa"},{"code":"ena","name":"Apali"},{"code":"enb","name":"Markweeta"},{"code":"enc","name":"En"},{"code":"end","name":"Ende"},{"code":"enf","name":"Forest Enets"},{"code":"eng","name":"English"},{"code":"enh","name":"Tundra Enets"},{"code":"enl","name":"Enlhet"},{"code":"enm","name":"Middle English (1100-1500)"},{"code":"enn","name":"Engenni"},{"code":"eno","name":"Enggano"},{"code":"enq","name":"Enga"},{"code":"enr","name":"Emem"},{"code":"enu","name":"Enu"},{"code":"env","name":"Enwan (Edu State)"},{"code":"enw","name":"Enwan (Akwa Ibom State)"},{"code":"enx","name":"Enxet"},{"code":"eot","name":"Beti (Cรดte d'Ivoire)"},{"code":"epi","name":"Epie"},{"code":"epo","name":"Esperanto"},{"code":"era","name":"Eravallan"},{"code":"erg","name":"Sie"},{"code":"erh","name":"Eruwa"},{"code":"eri","name":"Ogea"},{"code":"erk","name":"South Efate"},{"code":"ero","name":"Horpa"},{"code":"err","name":"Erre"},{"code":"ers","name":"Ersu"},{"code":"ert","name":"Eritai"},{"code":"erw","name":"Erokwanas"},{"code":"ese","name":"Ese Ejja"},{"code":"esg","name":"Aheri Gondi"},{"code":"esh","name":"Eshtehardi"},{"code":"esi","name":"North Alaskan Inupiatun"},{"code":"esk","name":"Northwest Alaska Inupiatun"},{"code":"esl","name":"Egypt Sign Language"},{"code":"esm","name":"Esuma"},{"code":"esn","name":"Salvadoran Sign Language"},{"code":"eso","name":"Estonian Sign Language"},{"code":"esq","name":"Esselen"},{"code":"ess","name":"Central Siberian Yupik"},{"code":"est","name":"Estonian"},{"code":"esu","name":"Central Yupik"},{"code":"esy","name":"Eskayan"},{"code":"etb","name":"Etebi"},{"code":"etc","name":"Etchemin"},{"code":"eth","name":"Ethiopian Sign Language"},{"code":"etn","name":"Eton (Vanuatu)"},{"code":"eto","name":"Eton (Cameroon)"},{"code":"etr","name":"Edolo"},{"code":"ets","name":"Yekhee"},{"code":"ett","name":"Etruscan"},{"code":"etu","name":"Ejagham"},{"code":"etx","name":"Eten"},{"code":"etz","name":"Semimi"},{"code":"eus","name":"Basque"},{"code":"eve","name":"Even"},{"code":"evh","name":"Uvbie"},{"code":"evn","name":"Evenki"},{"code":"ewe","name":"Ewe"},{"code":"ewo","name":"Ewondo"},{"code":"ext","name":"Extremaduran"},{"code":"eya","name":"Eyak"},{"code":"eyo","name":"Keiyo"},{"code":"eza","name":"Ezaa"},{"code":"eze","name":"Uzekwe"},{"code":"faa","name":"Fasu"},{"code":"fab","name":"Fa d'Ambu"},{"code":"fad","name":"Wagi"},{"code":"faf","name":"Fagani"},{"code":"fag","name":"Finongan"},{"code":"fah","name":"Baissa Fali"},{"code":"fai","name":"Faiwol"},{"code":"faj","name":"Faita"},{"code":"fak","name":"Fang (Cameroon)"},{"code":"fal","name":"South Fali"},{"code":"fam","name":"Fam"},{"code":"fan","name":"Fang (Equatorial Guinea)"},{"code":"fao","name":"Faroese"},{"code":"fap","name":"Paloor"},{"code":"far","name":"Fataleka"},{"code":"fas","name":"Persian"},{"code":"fat","name":"Fanti"},{"code":"fau","name":"Fayu"},{"code":"fax","name":"Fala"},{"code":"fay","name":"Southwestern Fars"},{"code":"faz","name":"Northwestern Fars"},{"code":"fbl","name":"West Albay Bikol"},{"code":"fcs","name":"Quebec Sign Language"},{"code":"fer","name":"Feroge"},{"code":"ffi","name":"Foia Foia"},{"code":"ffm","name":"Maasina Fulfulde"},{"code":"fgr","name":"Fongoro"},{"code":"fia","name":"Nobiin"},{"code":"fie","name":"Fyer"},{"code":"fif","name":"Faifi"},{"code":"fij","name":"Fijian"},{"code":"fil","name":"Filipino"},{"code":"fin","name":"Finnish"},{"code":"fip","name":"Fipa"},{"code":"fir","name":"Firan"},{"code":"fit","name":"Tornedalen Finnish"},{"code":"fiw","name":"Fiwaga"},{"code":"fkk","name":"Kirya-Konzษ™l"},{"code":"fkv","name":"Kven Finnish"},{"code":"fla","name":"Kalispel-Pend d'Oreille"},{"code":"flh","name":"Foau"},{"code":"fli","name":"Fali"},{"code":"fll","name":"North Fali"},{"code":"fln","name":"Flinders Island"},{"code":"flr","name":"Fuliiru"},{"code":"fly","name":"Flaaitaal"},{"code":"fmp","name":"Fe'fe'"},{"code":"fmu","name":"Far Western Muria"},{"code":"fnb","name":"Fanbak"},{"code":"fng","name":"Fanagalo"},{"code":"fni","name":"Fania"},{"code":"fod","name":"Foodo"},{"code":"foi","name":"Foi"},{"code":"fom","name":"Foma"},{"code":"fon","name":"Fon"},{"code":"for","name":"Fore"},{"code":"fos","name":"Siraya"},{"code":"fpe","name":"Fernando Po Creole English"},{"code":"fqs","name":"Fas"},{"code":"fra","name":"French"},{"code":"frc","name":"Cajun French"},{"code":"frd","name":"Fordata"},{"code":"frk","name":"Frankish"},{"code":"frm","name":"Middle French (ca. 1400-1600)"},{"code":"fro","name":"Old French (842-ca. 1400)"},{"code":"frp","name":"Arpitan"},{"code":"frq","name":"Forak"},{"code":"frr","name":"Northern Frisian"},{"code":"frs","name":"Eastern Frisian"},{"code":"frt","name":"Fortsenal"},{"code":"fry","name":"Western Frisian"},{"code":"fse","name":"Finnish Sign Language"},{"code":"fsl","name":"French Sign Language"},{"code":"fss","name":"finlandssvenskt teckensprรฅk"},{"code":"fub","name":"Adamawa Fulfulde"},{"code":"fuc","name":"Pulaar"},{"code":"fud","name":"East Futuna"},{"code":"fue","name":"Borgu Fulfulde"},{"code":"fuf","name":"Pular"},{"code":"fuh","name":"Western Niger Fulfulde"},{"code":"fui","name":"Bagirmi Fulfulde"},{"code":"fuj","name":"Ko"},{"code":"ful","name":"Fulah"},{"code":"fum","name":"Fum"},{"code":"fun","name":"Fulniรด"},{"code":"fuq","name":"Central-Eastern Niger Fulfulde"},{"code":"fur","name":"Friulian"},{"code":"fut","name":"Futuna-Aniwa"},{"code":"fuu","name":"Furu"},{"code":"fuv","name":"Nigerian Fulfulde"},{"code":"fuy","name":"Fuyug"},{"code":"fvr","name":"Fur"},{"code":"fwa","name":"Fwรขi"},{"code":"fwe","name":"Fwe"},{"code":"gaa","name":"Ga"},{"code":"gab","name":"Gabri"},{"code":"gac","name":"Mixed Great Andamanese"},{"code":"gad","name":"Gaddang"},{"code":"gae","name":"Guarequena"},{"code":"gaf","name":"Gende"},{"code":"gag","name":"Gagauz"},{"code":"gah","name":"Alekano"},{"code":"gai","name":"Borei"},{"code":"gaj","name":"Gadsup"},{"code":"gak","name":"Gamkonora"},{"code":"gal","name":"Galolen"},{"code":"gam","name":"Kandawo"},{"code":"gan","name":"Gan Chinese"},{"code":"gao","name":"Gants"},{"code":"gap","name":"Gal"},{"code":"gaq","name":"Gata'"},{"code":"gar","name":"Galeya"},{"code":"gas","name":"Adiwasi Garasia"},{"code":"gat","name":"Kenati"},{"code":"gau","name":"Mudhili Gadaba"},{"code":"gaw","name":"Nobonob"},{"code":"gax","name":"Borana-Arsi-Guji Oromo"},{"code":"gay","name":"Gayo"},{"code":"gaz","name":"West Central Oromo"},{"code":"gba","name":"Gbaya (Central African Republic)"},{"code":"gbb","name":"Kaytetye"},{"code":"gbd","name":"Karajarri"},{"code":"gbe","name":"Niksek"},{"code":"gbf","name":"Gaikundi"},{"code":"gbg","name":"Gbanziri"},{"code":"gbh","name":"Defi Gbe"},{"code":"gbi","name":"Galela"},{"code":"gbj","name":"Bodo Gadaba"},{"code":"gbk","name":"Gaddi"},{"code":"gbl","name":"Gamit"},{"code":"gbm","name":"Garhwali"},{"code":"gbn","name":"Mo'da"},{"code":"gbo","name":"Northern Grebo"},{"code":"gbp","name":"Gbaya-Bossangoa"},{"code":"gbq","name":"Gbaya-Bozoum"},{"code":"gbr","name":"Gbagyi"},{"code":"gbs","name":"Gbesi Gbe"},{"code":"gbu","name":"Gagadu"},{"code":"gbv","name":"Gbanu"},{"code":"gbw","name":"Gabi-Gabi"},{"code":"gbx","name":"Eastern Xwla Gbe"},{"code":"gby","name":"Gbari"},{"code":"gbz","name":"Zoroastrian Dari"},{"code":"gcc","name":"Mali"},{"code":"gcd","name":"Ganggalida"},{"code":"gce","name":"Galice"},{"code":"gcf","name":"Guadeloupean Creole French"},{"code":"gcl","name":"Grenadian Creole English"},{"code":"gcn","name":"Gaina"},{"code":"gcr","name":"Guianese Creole French"},{"code":"gct","name":"Colonia Tovar German"},{"code":"gda","name":"Gade Lohar"},{"code":"gdb","name":"Pottangi Ollar Gadaba"},{"code":"gdc","name":"Gugu Badhun"},{"code":"gdd","name":"Gedaged"},{"code":"gde","name":"Gude"},{"code":"gdf","name":"Guduf-Gava"},{"code":"gdg","name":"Ga'dang"},{"code":"gdh","name":"Gadjerawang"},{"code":"gdi","name":"Gundi"},{"code":"gdj","name":"Gurdjar"},{"code":"gdk","name":"Gadang"},{"code":"gdl","name":"Dirasha"},{"code":"gdm","name":"Laal"},{"code":"gdn","name":"Umanakaina"},{"code":"gdo","name":"Ghodoberi"},{"code":"gdq","name":"Mehri"},{"code":"gdr","name":"Wipi"},{"code":"gds","name":"Ghandruk Sign Language"},{"code":"gdt","name":"Kungardutyi"},{"code":"gdu","name":"Gudu"},{"code":"gdx","name":"Godwari"},{"code":"gea","name":"Geruma"},{"code":"geb","name":"Kire"},{"code":"gec","name":"Gboloo Grebo"},{"code":"ged","name":"Gade"},{"code":"gef","name":"Gerai"},{"code":"geg","name":"Gengle"},{"code":"geh","name":"Hutterisch"},{"code":"gei","name":"Gebe"},{"code":"gej","name":"Gen"},{"code":"gek","name":"Ywom"},{"code":"gel","name":"ut-Ma'in"},{"code":"geq","name":"Geme"},{"code":"ges","name":"Geser-Gorom"},{"code":"gev","name":"Eviya"},{"code":"gew","name":"Gera"},{"code":"gex","name":"Garre"},{"code":"gey","name":"Enya"},{"code":"gez","name":"Geez"},{"code":"gfk","name":"Patpatar"},{"code":"gft","name":"Gafat"},{"code":"gga","name":"Gao"},{"code":"ggb","name":"Gbii"},{"code":"ggd","name":"Gugadj"},{"code":"gge","name":"Gurr-goni"},{"code":"ggg","name":"Gurgula"},{"code":"ggk","name":"Kungarakany"},{"code":"ggl","name":"Ganglau"},{"code":"ggt","name":"Gitua"},{"code":"ggu","name":"Gagu"},{"code":"ggw","name":"Gogodala"},{"code":"gha","name":"Ghadamรจs"},{"code":"ghc","name":"Hiberno-Scottish Gaelic"},{"code":"ghe","name":"Southern Ghale"},{"code":"ghh","name":"Northern Ghale"},{"code":"ghk","name":"Geko Karen"},{"code":"ghl","name":"Ghulfan"},{"code":"ghn","name":"Ghanongga"},{"code":"gho","name":"Ghomara"},{"code":"ghr","name":"Ghera"},{"code":"ghs","name":"Guhu-Samane"},{"code":"ght","name":"Kuke"},{"code":"gia","name":"Kija"},{"code":"gib","name":"Gibanawa"},{"code":"gic","name":"Gail"},{"code":"gid","name":"Gidar"},{"code":"gie","name":"Gaษ“ogbo"},{"code":"gig","name":"Goaria"},{"code":"gih","name":"Githabul"},{"code":"gii","name":"Girirra"},{"code":"gil","name":"Gilbertese"},{"code":"gim","name":"Gimi (Eastern Highlands)"},{"code":"gin","name":"Hinukh"},{"code":"gip","name":"Gimi (West New Britain)"},{"code":"giq","name":"Green Gelao"},{"code":"gir","name":"Red Gelao"},{"code":"gis","name":"North Giziga"},{"code":"git","name":"Gitxsan"},{"code":"giu","name":"Mulao"},{"code":"giw","name":"White Gelao"},{"code":"gix","name":"Gilima"},{"code":"giy","name":"Giyug"},{"code":"giz","name":"South Giziga"},{"code":"gjk","name":"Kachi Koli"},{"code":"gjm","name":"Gunditjmara"},{"code":"gjn","name":"Gonja"},{"code":"gjr","name":"Gurindji Kriol"},{"code":"gju","name":"Gujari"},{"code":"gka","name":"Guya"},{"code":"gkd","name":"Magษจ (Madang Province)"},{"code":"gke","name":"Ndai"},{"code":"gkn","name":"Gokana"},{"code":"gko","name":"Kok-Nar"},{"code":"gkp","name":"Guinea Kpelle"},{"code":"gku","name":"ว‚Ungkue"},{"code":"gla","name":"Gaelic"},{"code":"glb","name":"Belning"},{"code":"glc","name":"Bon Gula"},{"code":"gld","name":"Nanai"},{"code":"gle","name":"Irish"},{"code":"glg","name":"Galician"},{"code":"glh","name":"Northwest Pashai"},{"code":"glj","name":"Gula Iro"},{"code":"glk","name":"Gilaki"},{"code":"gll","name":"Garlali"},{"code":"glo","name":"Galambu"},{"code":"glr","name":"Glaro-Twabo"},{"code":"glu","name":"Gula (Chad)"},{"code":"glv","name":"Manx"},{"code":"glw","name":"Glavda"},{"code":"gly","name":"Gule"},{"code":"gma","name":"Gambera"},{"code":"gmb","name":"Gula'alaa"},{"code":"gmd","name":"Mรกghdรฌ"},{"code":"gmg","name":"Magษจyi"},{"code":"gmh","name":"Middle High German (ca. 1050-1500)"},{"code":"gml","name":"Middle Low German"},{"code":"gmm","name":"Gbaya-Mbodomo"},{"code":"gmn","name":"Gimnime"},{"code":"gmr","name":"Mirning"},{"code":"gmu","name":"Gumalu"},{"code":"gmv","name":"Gamo"},{"code":"gmx","name":"Magoma"},{"code":"gmy","name":"Mycenaean Greek"},{"code":"gmz","name":"Mgbolizhia"},{"code":"gna","name":"Kaansa"},{"code":"gnb","name":"Gangte"},{"code":"gnc","name":"Guanche"},{"code":"gnd","name":"Zulgo-Gemzek"},{"code":"gne","name":"Ganang"},{"code":"gng","name":"Ngangam"},{"code":"gnh","name":"Lere"},{"code":"gni","name":"Gooniyandi"},{"code":"gnj","name":"Ngen"},{"code":"gnk","name":"วGana"},{"code":"gnl","name":"Gangulu"},{"code":"gnm","name":"Ginuman"},{"code":"gnn","name":"Gumatj"},{"code":"gno","name":"Northern Gondi"},{"code":"gnq","name":"Gana"},{"code":"gnr","name":"Gureng Gureng"},{"code":"gnt","name":"Guntai"},{"code":"gnu","name":"Gnau"},{"code":"gnw","name":"Western Bolivian Guaranรญ"},{"code":"gnz","name":"Ganzi"},{"code":"goa","name":"Guro"},{"code":"gob","name":"Playero"},{"code":"goc","name":"Gorakor"},{"code":"god","name":"Godiรฉ"},{"code":"goe","name":"Gongduk"},{"code":"gof","name":"Gofa"},{"code":"gog","name":"Gogo"},{"code":"goh","name":"Old High German (ca. 750-1050)"},{"code":"goi","name":"Gobasi"},{"code":"goj","name":"Gowlan"},{"code":"gok","name":"Gowli"},{"code":"gol","name":"Gola"},{"code":"gom","name":"Goan Konkani"},{"code":"gon","name":"Gondi"},{"code":"goo","name":"Gone Dau"},{"code":"gop","name":"Yeretuar"},{"code":"goq","name":"Gorap"},{"code":"gor","name":"Gorontalo"},{"code":"gos","name":"Gronings"},{"code":"got","name":"Gothic"},{"code":"gou","name":"Gavar"},{"code":"gow","name":"Gorowa"},{"code":"gox","name":"Gobu"},{"code":"goy","name":"Goundo"},{"code":"goz","name":"Gozarkhani"},{"code":"gpa","name":"Gupa-Abawa"},{"code":"gpe","name":"Ghanaian Pidgin English"},{"code":"gpn","name":"Taiap"},{"code":"gqa","name":"Ga'anda"},{"code":"gqi","name":"Guiqiong"},{"code":"gqn","name":"Guana (Brazil)"},{"code":"gqr","name":"Gor"},{"code":"gqu","name":"Qau"},{"code":"gra","name":"Rajput Garasia"},{"code":"grb","name":"Grebo"},{"code":"grc","name":"Ancient Greek (to 1453)"},{"code":"grd","name":"Guruntum-Mbaaru"},{"code":"grg","name":"Madi"},{"code":"grh","name":"Gbiri-Niragu"},{"code":"gri","name":"Ghari"},{"code":"grj","name":"Southern Grebo"},{"code":"grm","name":"Kota Marudu Talantang"},{"code":"grn","name":"Guarani"},{"code":"gro","name":"Groma"},{"code":"grq","name":"Gorovu"},{"code":"grr","name":"Taznatit"},{"code":"grs","name":"Gresi"},{"code":"grt","name":"Garo"},{"code":"gru","name":"Kistane"},{"code":"grv","name":"Central Grebo"},{"code":"grw","name":"Gweda"},{"code":"grx","name":"Guriaso"},{"code":"gry","name":"Barclayville Grebo"},{"code":"grz","name":"Guramalum"},{"code":"gse","name":"Ghanaian Sign Language"},{"code":"gsg","name":"German Sign Language"},{"code":"gsl","name":"Gusilay"},{"code":"gsm","name":"Guatemalan Sign Language"},{"code":"gsn","name":"Gusan"},{"code":"gso","name":"Southwest Gbaya"},{"code":"gsp","name":"Wasembo"},{"code":"gss","name":"Greek Sign Language"},{"code":"gsw","name":"Alemannic"},{"code":"gta","name":"Guatรณ"},{"code":"gtu","name":"Aghu-Tharnggala"},{"code":"gua","name":"Shiki"},{"code":"gub","name":"Guajajรกra"},{"code":"guc","name":"Wayuu"},{"code":"gud","name":"Yocobouรฉ Dida"},{"code":"gue","name":"Gurindji"},{"code":"guf","name":"Gupapuyngu"},{"code":"gug","name":"Paraguayan Guaranรญ"},{"code":"guh","name":"Guahibo"},{"code":"gui","name":"Eastern Bolivian Guaranรญ"},{"code":"guj","name":"Gujarati"},{"code":"guk","name":"Gumuz"},{"code":"gul","name":"Sea Island Creole English"},{"code":"gum","name":"Guambiano"},{"code":"gun","name":"Mbyรก Guaranรญ"},{"code":"guo","name":"Guayabero"},{"code":"gup","name":"Gunwinggu"},{"code":"guq","name":"Achรฉ"},{"code":"gur","name":"Farefare"},{"code":"gus","name":"Guinean Sign Language"},{"code":"gut","name":"Malรฉku Jaรญka"},{"code":"guu","name":"Yanomamรถ"},{"code":"guw","name":"Gun"},{"code":"gux","name":"Gourmanchรฉma"},{"code":"guz","name":"Ekegusii"},{"code":"gva","name":"Guana (Paraguay)"},{"code":"gvc","name":"Guanano"},{"code":"gve","name":"Duwet"},{"code":"gvf","name":"Golin"},{"code":"gvj","name":"Guajรก"},{"code":"gvl","name":"Gulay"},{"code":"gvm","name":"Gurmana"},{"code":"gvn","name":"Kuku-Yalanji"},{"code":"gvo","name":"Gaviรฃo Do Jiparanรก"},{"code":"gvp","name":"Parรก Gaviรฃo"},{"code":"gvr","name":"Gurung"},{"code":"gvs","name":"Gumawana"},{"code":"gvy","name":"Guyani"},{"code":"gwa","name":"Mbato"},{"code":"gwb","name":"Gwa"},{"code":"gwc","name":"Gawri"},{"code":"gwd","name":"Gawwada"},{"code":"gwe","name":"Gweno"},{"code":"gwf","name":"Gowro"},{"code":"gwg","name":"Moo"},{"code":"gwi","name":"Gwichสผin"},{"code":"gwj","name":"ว€Gwi"},{"code":"gwm","name":"Awngthim"},{"code":"gwn","name":"Gwandara"},{"code":"gwr","name":"Gwere"},{"code":"gwt","name":"Gawar-Bati"},{"code":"gwu","name":"Guwamu"},{"code":"gww","name":"Kwini"},{"code":"gwx","name":"Gua"},{"code":"gxx","name":"Wรจ Southern"},{"code":"gya","name":"Northwest Gbaya"},{"code":"gyb","name":"Garus"},{"code":"gyd","name":"Kayardild"},{"code":"gye","name":"Gyem"},{"code":"gyf","name":"Gungabula"},{"code":"gyg","name":"Gbayi"},{"code":"gyi","name":"Gyele"},{"code":"gyl","name":"Gayil"},{"code":"gym","name":"Ngรคbere"},{"code":"gyn","name":"Guyanese Creole English"},{"code":"gyo","name":"Gyalsumdo"},{"code":"gyr","name":"Guarayu"},{"code":"gyy","name":"Gunya"},{"code":"gyz","name":"Geji"},{"code":"gza","name":"Ganza"},{"code":"gzi","name":"Gazi"},{"code":"gzn","name":"Gane"},{"code":"haa","name":"Han"},{"code":"hab","name":"Hanoi Sign Language"},{"code":"hac","name":"Gurani"},{"code":"had","name":"Hatam"},{"code":"hae","name":"Eastern Oromo"},{"code":"haf","name":"Haiphong Sign Language"},{"code":"hag","name":"Hanga"},{"code":"hah","name":"Hahon"},{"code":"hai","name":"Haida"},{"code":"haj","name":"Hajong"},{"code":"hak","name":"Hakka Chinese"},{"code":"hal","name":"Halang"},{"code":"ham","name":"Hewa"},{"code":"han","name":"Hangaza"},{"code":"hao","name":"Hakรถ"},{"code":"hap","name":"Hupla"},{"code":"haq","name":"Ha"},{"code":"har","name":"Harari"},{"code":"has","name":"Haisla"},{"code":"hat","name":"Haitian"},{"code":"hau","name":"Hausa"},{"code":"hav","name":"Havu"},{"code":"haw","name":"Hawaiian"},{"code":"hax","name":"Southern Haida"},{"code":"hay","name":"Haya"},{"code":"haz","name":"Hazaragi"},{"code":"hba","name":"Hamba"},{"code":"hbb","name":"Huba"},{"code":"hbn","name":"Heiban"},{"code":"hbo","name":"Ancient Hebrew"},{"code":"hbs","name":"Serbo-Croatian"},{"code":"hbu","name":"Habu"},{"code":"hca","name":"Andaman Creole Hindi"},{"code":"hch","name":"Huichol"},{"code":"hdn","name":"Northern Haida"},{"code":"hds","name":"Honduras Sign Language"},{"code":"hdy","name":"Hadiyya"},{"code":"hea","name":"Northern Qiandong Miao"},{"code":"heb","name":"Hebrew"},{"code":"hed","name":"Herdรฉ"},{"code":"heg","name":"Helong"},{"code":"heh","name":"Hehe"},{"code":"hei","name":"Heiltsuk"},{"code":"hem","name":"Hemba"},{"code":"her","name":"Herero"},{"code":"hgm","name":"Haiวom"},{"code":"hgw","name":"Haigwai"},{"code":"hhi","name":"Hoia Hoia"},{"code":"hhr","name":"Kerak"},{"code":"hhy","name":"Hoyahoya"},{"code":"hia","name":"Lamang"},{"code":"hib","name":"Hibito"},{"code":"hid","name":"Hidatsa"},{"code":"hif","name":"Fiji Hindi"},{"code":"hig","name":"Kamwe"},{"code":"hih","name":"Pamosu"},{"code":"hii","name":"Hinduri"},{"code":"hij","name":"Hijuk"},{"code":"hik","name":"Seit-Kaitetu"},{"code":"hil","name":"Hiligaynon"},{"code":"hin","name":"Hindi"},{"code":"hio","name":"Tsoa"},{"code":"hir","name":"Himarimรฃ"},{"code":"hit","name":"Hittite"},{"code":"hiw","name":"Hiw"},{"code":"hix","name":"Hixkaryรกna"},{"code":"hji","name":"Haji"},{"code":"hka","name":"Kahe"},{"code":"hke","name":"Hunde"},{"code":"hkh","name":"Khah"},{"code":"hkk","name":"Hunjara-Kaina Ke"},{"code":"hkn","name":"Mel-Khaonh"},{"code":"hks","name":"Heung Kong Sau Yue"},{"code":"hla","name":"Halia"},{"code":"hlb","name":"Halbi"},{"code":"hld","name":"Halang Doan"},{"code":"hle","name":"Hlersu"},{"code":"hlt","name":"Matu Chin"},{"code":"hlu","name":"Hieroglyphic Luwian"},{"code":"hma","name":"Southern Mashan Hmong"},{"code":"hmb","name":"Humburi Senni Songhay"},{"code":"hmc","name":"Central Huishui Hmong"},{"code":"hmd","name":"A-hmaos"},{"code":"hme","name":"Eastern Huishui Hmong"},{"code":"hmf","name":"Hmong Don"},{"code":"hmg","name":"Southwestern Guiyang Hmong"},{"code":"hmh","name":"Southwestern Huishui Hmong"},{"code":"hmi","name":"Northern Huishui Hmong"},{"code":"hmj","name":"Ge"},{"code":"hmk","name":"Maek"},{"code":"hml","name":"Luopohe Hmong"},{"code":"hmm","name":"Central Mashan Hmong"},{"code":"hmn","name":"Hmong"},{"code":"hmo","name":"Hiri Motu"},{"code":"hmp","name":"Northern Mashan Hmong"},{"code":"hmq","name":"Eastern Qiandong Miao"},{"code":"hmr","name":"Hmar"},{"code":"hms","name":"Southern Qiandong Miao"},{"code":"hmt","name":"Hamtai"},{"code":"hmu","name":"Hamap"},{"code":"hmv","name":"Hmong Dรด"},{"code":"hmw","name":"Western Mashan Hmong"},{"code":"hmy","name":"Southern Guiyang Hmong"},{"code":"hmz","name":"Hmong Shua"},{"code":"hna","name":"Mina (Cameroon)"},{"code":"hnd","name":"Southern Hindko"},{"code":"hne","name":"Chhattisgarhi"},{"code":"hng","name":"Hungu"},{"code":"hnh","name":"วAni"},{"code":"hni","name":"Hani"},{"code":"hnj","name":"Hmong Njua"},{"code":"hnn","name":"Hanunoo"},{"code":"hno","name":"Northern Hindko"},{"code":"hns","name":"Caribbean Hindustani"},{"code":"hnu","name":"Hung"},{"code":"hoa","name":"Hoava"},{"code":"hob","name":"Mari (Madang Province)"},{"code":"hoc","name":"Ho"},{"code":"hod","name":"Holma"},{"code":"hoe","name":"Horom"},{"code":"hoh","name":"Hobyรณt"},{"code":"hoi","name":"Holikachuk"},{"code":"hoj","name":"Hadothi"},{"code":"hol","name":"Holu"},{"code":"hom","name":"Homa"},{"code":"hoo","name":"Holoholo"},{"code":"hop","name":"Hopi"},{"code":"hor","name":"Horo"},{"code":"hos","name":"Ho Chi Minh City Sign Language"},{"code":"hot","name":"Hote"},{"code":"hov","name":"Hovongan"},{"code":"how","name":"Honi"},{"code":"hoy","name":"Holiya"},{"code":"hoz","name":"Hozo"},{"code":"hpo","name":"Hpon"},{"code":"hps","name":"Hawai'i Pidgin Sign Language"},{"code":"hra","name":"Hrangkhol"},{"code":"hrc","name":"Niwer Mil"},{"code":"hre","name":"Hre"},{"code":"hrk","name":"Haruku"},{"code":"hrm","name":"Horned Miao"},{"code":"hro","name":"Haroi"},{"code":"hrp","name":"Nhirrpi"},{"code":"hrt","name":"Hรฉrtevin"},{"code":"hru","name":"Hruso"},{"code":"hrv","name":"Croatian"},{"code":"hrw","name":"Warwar Feni"},{"code":"hrx","name":"Hunsrik"},{"code":"hrz","name":"Harzani"},{"code":"hsb","name":"Upper Sorbian"},{"code":"hsh","name":"Hungarian Sign Language"},{"code":"hsl","name":"Hausa Sign Language"},{"code":"hsn","name":"Xiang Chinese"},{"code":"hss","name":"Harsusi"},{"code":"hti","name":"Hoti"},{"code":"hto","name":"Minica Huitoto"},{"code":"hts","name":"Hadza"},{"code":"htu","name":"Hitu"},{"code":"htx","name":"Middle Hittite"},{"code":"hub","name":"Huambisa"},{"code":"huc","name":"ว‚'Amkhoe"},{"code":"hud","name":"Huaulu"},{"code":"hue","name":"San Francisco Del Mar Huave"},{"code":"huf","name":"Humene"},{"code":"hug","name":"Huachipaeri"},{"code":"huh","name":"Huilliche"},{"code":"hui","name":"Huli"},{"code":"huj","name":"Northern Guiyang Hmong"},{"code":"huk","name":"Hulung"},{"code":"hul","name":"Hula"},{"code":"hum","name":"Hungana"},{"code":"hun","name":"Hungarian"},{"code":"huo","name":"Hu"},{"code":"hup","name":"Hupa"},{"code":"huq","name":"Tsat"},{"code":"hur","name":"Halkomelem"},{"code":"hus","name":"Huastec"},{"code":"hut","name":"Humla"},{"code":"huu","name":"Murui Huitoto"},{"code":"huv","name":"San Mateo Del Mar Huave"},{"code":"huw","name":"Hukumina"},{"code":"hux","name":"Nรผpode Huitoto"},{"code":"huy","name":"Hulaulรก"},{"code":"huz","name":"Hunzib"},{"code":"hvc","name":"Haitian Vodoun Culture Language"},{"code":"hve","name":"San Dionisio Del Mar Huave"},{"code":"hvk","name":"Haveke"},{"code":"hvn","name":"Sabu"},{"code":"hvv","name":"Santa Marรญa Del Mar Huave"},{"code":"hwa","name":"Wanรฉ"},{"code":"hwc","name":"Hawai'i Creole English"},{"code":"hwo","name":"Hwana"},{"code":"hya","name":"Hya"},{"code":"hye","name":"Armenian"},{"code":"hyw","name":"Western Armenian"},{"code":"iai","name":"Iaai"},{"code":"ian","name":"Iatmul"},{"code":"iar","name":"Purari"},{"code":"iba","name":"Iban"},{"code":"ibb","name":"Ibibio"},{"code":"ibd","name":"Iwaidja"},{"code":"ibe","name":"Akpes"},{"code":"ibg","name":"Ibanag"},{"code":"ibh","name":"Bih"},{"code":"ibl","name":"Ibaloi"},{"code":"ibm","name":"Agoi"},{"code":"ibn","name":"Ibino"},{"code":"ibo","name":"Igbo"},{"code":"ibr","name":"Ibuoro"},{"code":"ibu","name":"Ibu"},{"code":"iby","name":"Ibani"},{"code":"ica","name":"Ede Ica"},{"code":"ich","name":"Etkywan"},{"code":"icl","name":"Icelandic Sign Language"},{"code":"icr","name":"Islander Creole English"},{"code":"ida","name":"Idakho-Isukha-Tiriki"},{"code":"idb","name":"Indo-Portuguese"},{"code":"idc","name":"Ajiya"},{"code":"idd","name":"Ede Idaca"},{"code":"ide","name":"Idere"},{"code":"idi","name":"Idi"},{"code":"ido","name":"Ido"},{"code":"idr","name":"Indri"},{"code":"ids","name":"Idesa"},{"code":"idt","name":"Idatรฉ"},{"code":"idu","name":"Idoma"},{"code":"ifa","name":"Amganad Ifugao"},{"code":"ifb","name":"Ayangan Ifugao"},{"code":"ife","name":"Ifรจ"},{"code":"iff","name":"Ifo"},{"code":"ifk","name":"Tuwali Ifugao"},{"code":"ifm","name":"Teke-Fuumu"},{"code":"ifu","name":"Mayoyao Ifugao"},{"code":"ify","name":"Keley-I Kallahan"},{"code":"igb","name":"Ebira"},{"code":"ige","name":"Igede"},{"code":"igg","name":"Igana"},{"code":"igl","name":"Igala"},{"code":"igm","name":"Kanggape"},{"code":"ign","name":"Ignaciano"},{"code":"igo","name":"Isebe"},{"code":"igs","name":"Interglossa"},{"code":"igw","name":"Igwe"},{"code":"ihb","name":"Iha Based Pidgin"},{"code":"ihi","name":"Ihievbe"},{"code":"ihp","name":"Iha"},{"code":"ihw","name":"Bidhawal"},{"code":"iii","name":"Nuosu"},{"code":"iin","name":"Thiin"},{"code":"ijc","name":"Izon"},{"code":"ije","name":"Biseni"},{"code":"ijj","name":"Ede Ije"},{"code":"ijn","name":"Kalabari"},{"code":"ijs","name":"Southeast Ijo"},{"code":"ike","name":"Eastern Canadian Inuktitut"},{"code":"iki","name":"Iko"},{"code":"ikk","name":"Ika"},{"code":"ikl","name":"Ikulu"},{"code":"iko","name":"Olulumo-Ikom"},{"code":"ikp","name":"Ikpeshi"},{"code":"ikr","name":"Ikaranggal"},{"code":"iks","name":"Inuit Sign Language"},{"code":"ikt","name":"Inuinnaqtun"},{"code":"iku","name":"Inuktitut"},{"code":"ikv","name":"Iku-Gora-Ankwa"},{"code":"ikw","name":"Ikwere"},{"code":"ikx","name":"Ik"},{"code":"ikz","name":"Ikizu"},{"code":"ila","name":"Ile Ape"},{"code":"ilb","name":"Ila"},{"code":"ile","name":"Interlingue"},{"code":"ilg","name":"Garig-Ilgar"},{"code":"ili","name":"Ili Turki"},{"code":"ilk","name":"Ilongot"},{"code":"ilm","name":"Iranun (Malaysia)"},{"code":"ilo","name":"Iloko"},{"code":"ilp","name":"Iranun (Philippines)"},{"code":"ils","name":"International Sign"},{"code":"ilu","name":"Ili'uun"},{"code":"ilv","name":"Ilue"},{"code":"ima","name":"Mala Malasar"},{"code":"imi","name":"Anamgura"},{"code":"iml","name":"Miluk"},{"code":"imn","name":"Imonda"},{"code":"imo","name":"Imbongu"},{"code":"imr","name":"Imroing"},{"code":"ims","name":"Marsian"},{"code":"imy","name":"Milyan"},{"code":"ina","name":"Interlingua (International Auxiliary Language Association)"},{"code":"inb","name":"Inga"},{"code":"ind","name":"Indonesian"},{"code":"ing","name":"Degexit'an"},{"code":"inh","name":"Ingush"},{"code":"inj","name":"Jungle Inga"},{"code":"inl","name":"Indonesian Sign Language"},{"code":"inm","name":"Minaean"},{"code":"inn","name":"Isinai"},{"code":"ino","name":"Inoke-Yate"},{"code":"inp","name":"Iรฑapari"},{"code":"ins","name":"Indian Sign Language"},{"code":"int","name":"Intha"},{"code":"inz","name":"Ineseรฑo"},{"code":"ior","name":"Inor"},{"code":"iou","name":"Tuma-Irumu"},{"code":"iow","name":"Iowa-Oto"},{"code":"ipi","name":"Ipili"},{"code":"ipk","name":"Inupiaq"},{"code":"ipo","name":"Ipiko"},{"code":"iqu","name":"Iquito"},{"code":"iqw","name":"Ikwo"},{"code":"ire","name":"Iresim"},{"code":"irh","name":"Irarutu"},{"code":"iri","name":"Irigwe"},{"code":"irk","name":"Iraqw"},{"code":"irn","name":"Irรกntxe"},{"code":"irr","name":"Ir"},{"code":"iru","name":"Irula"},{"code":"irx","name":"Kamberau"},{"code":"iry","name":"Iraya"},{"code":"isa","name":"Isabi"},{"code":"isc","name":"Isconahua"},{"code":"isd","name":"Isnag"},{"code":"ise","name":"Italian Sign Language"},{"code":"isg","name":"Irish Sign Language"},{"code":"ish","name":"Esan"},{"code":"isi","name":"Nkem-Nkum"},{"code":"isk","name":"Ishkashimi"},{"code":"isl","name":"Icelandic"},{"code":"ism","name":"Masimasi"},{"code":"isn","name":"Isanzu"},{"code":"iso","name":"Isoko"},{"code":"isr","name":"Israeli Sign Language"},{"code":"ist","name":"Istriot"},{"code":"isu","name":"Isu (Menchum Division)"},{"code":"ita","name":"Italian"},{"code":"itb","name":"Binongan Itneg"},{"code":"itd","name":"Southern Tidung"},{"code":"ite","name":"Itene"},{"code":"iti","name":"Inlaod Itneg"},{"code":"itk","name":"Judeo-Italian"},{"code":"itl","name":"Itelmen"},{"code":"itm","name":"Itu Mbon Uzo"},{"code":"ito","name":"Itonama"},{"code":"itr","name":"Iteri"},{"code":"its","name":"Isekiri"},{"code":"itt","name":"Maeng Itneg"},{"code":"itv","name":"Itawit"},{"code":"itw","name":"Ito"},{"code":"itx","name":"Itik"},{"code":"ity","name":"Moyadan Itneg"},{"code":"itz","name":"Itzรก"},{"code":"ium","name":"Iu Mien"},{"code":"ivb","name":"Ibatan"},{"code":"ivv","name":"Ivatan"},{"code":"iwk","name":"I-Wak"},{"code":"iwm","name":"Iwam"},{"code":"iwo","name":"Iwur"},{"code":"iws","name":"Sepik Iwam"},{"code":"ixc","name":"Ixcatec"},{"code":"ixl","name":"Ixil"},{"code":"iya","name":"Iyayu"},{"code":"iyo","name":"Mesaka"},{"code":"iyx","name":"Yaka (Congo)"},{"code":"izh","name":"Ingrian"},{"code":"izr","name":"Izere"},{"code":"izz","name":"Izii"},{"code":"jaa","name":"Jamamadรญ"},{"code":"jab","name":"Hyam"},{"code":"jac","name":"Jakalteko"},{"code":"jad","name":"Jahanka"},{"code":"jae","name":"Yabem"},{"code":"jaf","name":"Jara"},{"code":"jah","name":"Jah Hut"},{"code":"jaj","name":"Zazao"},{"code":"jak","name":"Jakun"},{"code":"jal","name":"Yalahatan"},{"code":"jam","name":"Jamaican Creole English"},{"code":"jan","name":"Jandai"},{"code":"jao","name":"Yanyuwa"},{"code":"jaq","name":"Yaqay"},{"code":"jas","name":"New Caledonian Javanese"},{"code":"jat","name":"Jakati"},{"code":"jau","name":"Yaur"},{"code":"jav","name":"Javanese"},{"code":"jax","name":"Jambi Malay"},{"code":"jay","name":"Nhangu"},{"code":"jaz","name":"Jawe"},{"code":"jbe","name":"Judeo-Berber"},{"code":"jbi","name":"Badjiri"},{"code":"jbj","name":"Arandai"},{"code":"jbk","name":"Barikewa"},{"code":"jbm","name":"Bijim"},{"code":"jbn","name":"Nafusi"},{"code":"jbo","name":"Lojban"},{"code":"jbr","name":"Jofotek-Bromnya"},{"code":"jbt","name":"Jabutรญ"},{"code":"jbu","name":"Jukun Takum"},{"code":"jbw","name":"Yawijibaya"},{"code":"jcs","name":"Jamaican Country Sign Language"},{"code":"jct","name":"Krymchak"},{"code":"jda","name":"Jad"},{"code":"jdg","name":"Jadgali"},{"code":"jdt","name":"Judeo-Tat"},{"code":"jeb","name":"Jebero"},{"code":"jee","name":"Jerung"},{"code":"jeh","name":"Jeh"},{"code":"jei","name":"Yei"},{"code":"jek","name":"Jeri Kuo"},{"code":"jel","name":"Yelmek"},{"code":"jen","name":"Dza"},{"code":"jer","name":"Jere"},{"code":"jet","name":"Manem"},{"code":"jeu","name":"Jonkor Bourmataguil"},{"code":"jgb","name":"Ngbee"},{"code":"jge","name":"Judeo-Georgian"},{"code":"jgk","name":"Gwak"},{"code":"jgo","name":"Ngomba"},{"code":"jhi","name":"Jehai"},{"code":"jhs","name":"Jhankot Sign Language"},{"code":"jia","name":"Jina"},{"code":"jib","name":"Jibu"},{"code":"jic","name":"Tol"},{"code":"jid","name":"Bu (Kaduna State)"},{"code":"jie","name":"Jilbe"},{"code":"jig","name":"Djingili"},{"code":"jih","name":"Shangzhai"},{"code":"jii","name":"Jiiddu"},{"code":"jil","name":"Jilim"},{"code":"jim","name":"Jimi (Cameroon)"},{"code":"jio","name":"Jiamao"},{"code":"jiq","name":"Guanyinqiao"},{"code":"jit","name":"Jita"},{"code":"jiu","name":"Youle Jinuo"},{"code":"jiv","name":"Shuar"},{"code":"jiy","name":"Buyuan Jinuo"},{"code":"jje","name":"Jejueo"},{"code":"jjr","name":"Bankal"},{"code":"jka","name":"Kaera"},{"code":"jkm","name":"Mobwa Karen"},{"code":"jko","name":"Kubo"},{"code":"jkp","name":"Paku Karen"},{"code":"jkr","name":"Koro (India)"},{"code":"jks","name":"Amami Koniya Sign Language"},{"code":"jku","name":"Labir"},{"code":"jle","name":"Ngile"},{"code":"jls","name":"Jamaican Sign Language"},{"code":"jma","name":"Dima"},{"code":"jmb","name":"Zumbun"},{"code":"jmc","name":"Machame"},{"code":"jmd","name":"Yamdena"},{"code":"jmi","name":"Jimi (Nigeria)"},{"code":"jml","name":"Jumli"},{"code":"jmn","name":"Makuri Naga"},{"code":"jmr","name":"Kamara"},{"code":"jms","name":"Mashi (Nigeria)"},{"code":"jmw","name":"Mouwase"},{"code":"jmx","name":"Western Juxtlahuaca Mixtec"},{"code":"jna","name":"Jangshung"},{"code":"jnd","name":"Jandavra"},{"code":"jng","name":"Yangman"},{"code":"jni","name":"Janji"},{"code":"jnj","name":"Yemsa"},{"code":"jnl","name":"Rawat"},{"code":"jns","name":"Jaunsari"},{"code":"job","name":"Joba"},{"code":"jod","name":"Wojenaka"},{"code":"jog","name":"Jogi"},{"code":"jor","name":"Jorรก"},{"code":"jos","name":"Jordanian Sign Language"},{"code":"jow","name":"Jowulu"},{"code":"jpa","name":"Jewish Palestinian Aramaic"},{"code":"jpn","name":"Japanese"},{"code":"jpr","name":"Judeo-Persian"},{"code":"jqr","name":"Jaqaru"},{"code":"jra","name":"Jarai"},{"code":"jrb","name":"Judeo-Arabic"},{"code":"jrr","name":"Jiru"},{"code":"jrt","name":"Jakattoe"},{"code":"jru","name":"Japrerรญa"},{"code":"jsl","name":"Japanese Sign Language"},{"code":"jua","name":"Jรบma"},{"code":"jub","name":"Wannu"},{"code":"juc","name":"Jurchen"},{"code":"jud","name":"Worodougou"},{"code":"juh","name":"Hรตne"},{"code":"jui","name":"Ngadjuri"},{"code":"juk","name":"Wapan"},{"code":"jul","name":"Jirel"},{"code":"jum","name":"Jumjum"},{"code":"jun","name":"Juang"},{"code":"juo","name":"Jiba"},{"code":"jup","name":"Hupdรซ"},{"code":"jur","name":"Jurรบna"},{"code":"jus","name":"Jumla Sign Language"},{"code":"jut","name":"Jutish"},{"code":"juu","name":"Ju"},{"code":"juw","name":"Wรฃpha"},{"code":"juy","name":"Juray"},{"code":"jvd","name":"Javindo"},{"code":"jvn","name":"Caribbean Javanese"},{"code":"jwi","name":"Jwira-Pepesa"},{"code":"jya","name":"Jiarong"},{"code":"jye","name":"Judeo-Yemeni Arabic"},{"code":"jyy","name":"Jaya"},{"code":"kaa","name":"Karakalpak"},{"code":"kab","name":"Kabyle"},{"code":"kac","name":"Jingpho"},{"code":"kad","name":"Adara"},{"code":"kae","name":"Ketangalan"},{"code":"kaf","name":"Katso"},{"code":"kag","name":"Kajaman"},{"code":"kah","name":"Kara (Central African Republic)"},{"code":"kai","name":"Karekare"},{"code":"kaj","name":"Jju"},{"code":"kak","name":"Kalanguya"},{"code":"kal","name":"Greenlandic"},{"code":"kam","name":"Kamba (Kenya)"},{"code":"kan","name":"Kannada"},{"code":"kao","name":"Xaasongaxango"},{"code":"kap","name":"Bezhta"},{"code":"kaq","name":"Capanahua"},{"code":"kas","name":"Kashmiri"},{"code":"kat","name":"Georgian"},{"code":"kau","name":"Kanuri"},{"code":"kav","name":"Katukรญna"},{"code":"kaw","name":"Kawi"},{"code":"kax","name":"Kao"},{"code":"kay","name":"Kamayurรก"},{"code":"kaz","name":"Kazakh"},{"code":"kba","name":"Kalarko"},{"code":"kbb","name":"Kaxuiรขna"},{"code":"kbc","name":"Kadiwรฉu"},{"code":"kbd","name":"Kabardian"},{"code":"kbe","name":"Kanju"},{"code":"kbg","name":"Khamba"},{"code":"kbh","name":"Camsรก"},{"code":"kbi","name":"Kaptiau"},{"code":"kbj","name":"Kari"},{"code":"kbk","name":"Grass Koiari"},{"code":"kbl","name":"Kanembu"},{"code":"kbm","name":"Iwal"},{"code":"kbn","name":"Kare (Central African Republic)"},{"code":"kbo","name":"Keliko"},{"code":"kbp","name":"Kabiyรจ"},{"code":"kbq","name":"Kamano"},{"code":"kbr","name":"Kafa"},{"code":"kbs","name":"Kande"},{"code":"kbt","name":"Abadi"},{"code":"kbu","name":"Kabutra"},{"code":"kbv","name":"Dera (Indonesia)"},{"code":"kbw","name":"Kaiep"},{"code":"kbx","name":"Ap Ma"},{"code":"kby","name":"Manga Kanuri"},{"code":"kbz","name":"Duhwa"},{"code":"kca","name":"Khanty"},{"code":"kcb","name":"Kawacha"},{"code":"kcc","name":"Lubila"},{"code":"kcd","name":"Ngkรขlmpw Kanum"},{"code":"kce","name":"Kaivi"},{"code":"kcf","name":"Ukaan"},{"code":"kcg","name":"Tyap"},{"code":"kch","name":"Vono"},{"code":"kci","name":"Kamantan"},{"code":"kcj","name":"Kobiana"},{"code":"kck","name":"Kalanga"},{"code":"kcl","name":"Kala"},{"code":"kcm","name":"Gula (Central African Republic)"},{"code":"kcn","name":"Nubi"},{"code":"kco","name":"Kinalakna"},{"code":"kcp","name":"Kanga"},{"code":"kcq","name":"Kamo"},{"code":"kcr","name":"Katla"},{"code":"kcs","name":"Koenoem"},{"code":"kct","name":"Kaian"},{"code":"kcu","name":"Kami (Tanzania)"},{"code":"kcv","name":"Kete"},{"code":"kcw","name":"Kabwari"},{"code":"kcx","name":"Kachama-Ganjule"},{"code":"kcy","name":"Korandje"},{"code":"kcz","name":"Konongo"},{"code":"kda","name":"Worimi"},{"code":"kdc","name":"Kutu"},{"code":"kdd","name":"Yankunytjatjara"},{"code":"kde","name":"Makonde"},{"code":"kdf","name":"Mamusi"},{"code":"kdg","name":"Seba"},{"code":"kdh","name":"Tem"},{"code":"kdi","name":"Kumam"},{"code":"kdj","name":"Karamojong"},{"code":"kdk","name":"Kwรฉnyi"},{"code":"kdl","name":"Tsikimba"},{"code":"kdm","name":"Kagoma"},{"code":"kdn","name":"Kunda"},{"code":"kdp","name":"Kaningdon-Nindem"},{"code":"kdq","name":"Koch"},{"code":"kdr","name":"Karaim"},{"code":"kdt","name":"Kuy"},{"code":"kdu","name":"Kadaru"},{"code":"kdw","name":"Koneraw"},{"code":"kdx","name":"Kam"},{"code":"kdy","name":"Keder"},{"code":"kdz","name":"Kwaja"},{"code":"kea","name":"Kabuverdianu"},{"code":"keb","name":"Kรฉlรฉ"},{"code":"kec","name":"Keiga"},{"code":"ked","name":"Kerewe"},{"code":"kee","name":"Eastern Keres"},{"code":"kef","name":"Kpessi"},{"code":"keg","name":"Tese"},{"code":"keh","name":"Keak"},{"code":"kei","name":"Kei"},{"code":"kej","name":"Kadar"},{"code":"kek","name":"Kekchรญ"},{"code":"kel","name":"Kela (Democratic Republic of Congo)"},{"code":"kem","name":"Kemak"},{"code":"ken","name":"Kenyang"},{"code":"keo","name":"Kakwa"},{"code":"kep","name":"Kaikadi"},{"code":"keq","name":"Kamar"},{"code":"ker","name":"Kera"},{"code":"kes","name":"Kugbo"},{"code":"ket","name":"Ket"},{"code":"keu","name":"Akebu"},{"code":"kev","name":"Kanikkaran"},{"code":"kew","name":"West Kewa"},{"code":"kex","name":"Kukna"},{"code":"key","name":"Kupia"},{"code":"kez","name":"Kukele"},{"code":"kfa","name":"Kodava"},{"code":"kfb","name":"Northwestern Kolami"},{"code":"kfc","name":"Konda-Dora"},{"code":"kfd","name":"Korra Koraga"},{"code":"kfe","name":"Kota (India)"},{"code":"kff","name":"Koya"},{"code":"kfg","name":"Kudiya"},{"code":"kfh","name":"Kurichiya"},{"code":"kfi","name":"Kannada Kurumba"},{"code":"kfj","name":"Kemiehua"},{"code":"kfk","name":"Kinnauri"},{"code":"kfl","name":"Kung"},{"code":"kfm","name":"Khunsari"},{"code":"kfn","name":"Kuk"},{"code":"kfo","name":"Koro (Cรดte d'Ivoire)"},{"code":"kfp","name":"Korwa"},{"code":"kfq","name":"Korku"},{"code":"kfr","name":"Kachhi"},{"code":"kfs","name":"Bilaspuri"},{"code":"kft","name":"Kanjari"},{"code":"kfu","name":"Katkari"},{"code":"kfv","name":"Kurmukar"},{"code":"kfw","name":"Kharam Naga"},{"code":"kfx","name":"Kullu Pahari"},{"code":"kfy","name":"Kumaoni"},{"code":"kfz","name":"Koromfรฉ"},{"code":"kga","name":"Koyaga"},{"code":"kgb","name":"Kawe"},{"code":"kge","name":"Komering"},{"code":"kgf","name":"Kube"},{"code":"kgg","name":"Kusunda"},{"code":"kgi","name":"Selangor Sign Language"},{"code":"kgj","name":"Gamale Kham"},{"code":"kgk","name":"Kaiwรก"},{"code":"kgl","name":"Kunggari"},{"code":"kgm","name":"Karipรบna"},{"code":"kgn","name":"Karingani"},{"code":"kgo","name":"Krongo"},{"code":"kgp","name":"Kaingang"},{"code":"kgq","name":"Kamoro"},{"code":"kgr","name":"Abun"},{"code":"kgs","name":"Kumbainggar"},{"code":"kgt","name":"Somyev"},{"code":"kgu","name":"Kobol"},{"code":"kgv","name":"Karas"},{"code":"kgw","name":"Karon Dori"},{"code":"kgx","name":"Kamaru"},{"code":"kgy","name":"Kyerung"},{"code":"kha","name":"Khasi"},{"code":"khb","name":"Lรผ"},{"code":"khc","name":"Tukang Besi North"},{"code":"khd","name":"Bรคdi Kanum"},{"code":"khe","name":"Korowai"},{"code":"khf","name":"Khuen"},{"code":"khg","name":"Khams Tibetan"},{"code":"khh","name":"Kehu"},{"code":"khj","name":"Kuturmi"},{"code":"khk","name":"Halh Mongolian"},{"code":"khl","name":"Lusi"},{"code":"khm","name":"Khmer"},{"code":"khn","name":"Khandesi"},{"code":"kho","name":"Khotanese"},{"code":"khp","name":"Kapauri"},{"code":"khq","name":"Koyra Chiini Songhay"},{"code":"khr","name":"Kharia"},{"code":"khs","name":"Kasua"},{"code":"kht","name":"Khamti"},{"code":"khu","name":"Nkhumbi"},{"code":"khv","name":"Khvarshi"},{"code":"khw","name":"Khowar"},{"code":"khx","name":"Kanu"},{"code":"khy","name":"Kele (Democratic Republic of Congo)"},{"code":"khz","name":"Keapara"},{"code":"kia","name":"Kim"},{"code":"kib","name":"Koalib"},{"code":"kic","name":"Kickapoo"},{"code":"kid","name":"Koshin"},{"code":"kie","name":"Kibet"},{"code":"kif","name":"Eastern Parbate Kham"},{"code":"kig","name":"Kimaama"},{"code":"kih","name":"Kilmeri"},{"code":"kii","name":"Kitsai"},{"code":"kij","name":"Kilivila"},{"code":"kik","name":"Gikuyu"},{"code":"kil","name":"Kariya"},{"code":"kim","name":"Karagas"},{"code":"kin","name":"Kinyarwanda"},{"code":"kio","name":"Kiowa"},{"code":"kip","name":"Sheshi Kham"},{"code":"kiq","name":"Kosadle"},{"code":"kir","name":"Kirghiz"},{"code":"kis","name":"Kis"},{"code":"kit","name":"Agob"},{"code":"kiu","name":"Kirmanjki (individual language)"},{"code":"kiv","name":"Kimbu"},{"code":"kiw","name":"Northeast Kiwai"},{"code":"kix","name":"Khiamniungan Naga"},{"code":"kiy","name":"Kirikiri"},{"code":"kiz","name":"Kisi"},{"code":"kja","name":"Mlap"},{"code":"kjb","name":"Kanjobal"},{"code":"kjc","name":"Coastal Konjo"},{"code":"kjd","name":"Southern Kiwai"},{"code":"kje","name":"Kisar"},{"code":"kjg","name":"Khmu"},{"code":"kjh","name":"Khakas"},{"code":"kji","name":"Zabana"},{"code":"kjj","name":"Khinalugh"},{"code":"kjk","name":"Highland Konjo"},{"code":"kjl","name":"Western Parbate Kham"},{"code":"kjm","name":"Khรกng"},{"code":"kjn","name":"Kunjen"},{"code":"kjo","name":"Harijan Kinnauri"},{"code":"kjp","name":"Pwo Eastern Karen"},{"code":"kjq","name":"Western Keres"},{"code":"kjr","name":"Kurudu"},{"code":"kjs","name":"East Kewa"},{"code":"kjt","name":"Phrae Pwo Karen"},{"code":"kju","name":"Kashaya"},{"code":"kjv","name":"Kaikavian Literary Language"},{"code":"kjx","name":"Ramopa"},{"code":"kjy","name":"Erave"},{"code":"kjz","name":"Bumthangkha"},{"code":"kka","name":"Kakanda"},{"code":"kkb","name":"Kwerisa"},{"code":"kkc","name":"Odoodee"},{"code":"kkd","name":"Kinuku"},{"code":"kke","name":"Kakabe"},{"code":"kkf","name":"Kalaktang Monpa"},{"code":"kkg","name":"Mabaka Valley Kalinga"},{"code":"kkh","name":"Khรผn"},{"code":"kki","name":"Kagulu"},{"code":"kkj","name":"Kako"},{"code":"kkk","name":"Kokota"},{"code":"kkl","name":"Kosarek Yale"},{"code":"kkm","name":"Kiong"},{"code":"kkn","name":"Kon Keu"},{"code":"kko","name":"Karko"},{"code":"kkp","name":"Gugubera"},{"code":"kkq","name":"Kaeku"},{"code":"kkr","name":"Kir-Balar"},{"code":"kks","name":"Giiwo"},{"code":"kkt","name":"Koi"},{"code":"kku","name":"Tumi"},{"code":"kkv","name":"Kangean"},{"code":"kkw","name":"Teke-Kukuya"},{"code":"kkx","name":"Kohin"},{"code":"kky","name":"Guguyimidjir"},{"code":"kkz","name":"Kaska"},{"code":"kla","name":"Klamath-Modoc"},{"code":"klb","name":"Kiliwa"},{"code":"klc","name":"Kolbila"},{"code":"kld","name":"Gamilaraay"},{"code":"kle","name":"Kulung (Nepal)"},{"code":"klf","name":"Kendeje"},{"code":"klg","name":"Tagakaulo"},{"code":"klh","name":"Weliki"},{"code":"kli","name":"Kalumpang"},{"code":"klj","name":"Khalaj"},{"code":"klk","name":"Kono (Nigeria)"},{"code":"kll","name":"Kagan Kalagan"},{"code":"klm","name":"Migum"},{"code":"kln","name":"Kalenjin"},{"code":"klo","name":"Kapya"},{"code":"klp","name":"Kamasa"},{"code":"klq","name":"Rumu"},{"code":"klr","name":"Khaling"},{"code":"kls","name":"Kalasha"},{"code":"klt","name":"Nukna"},{"code":"klu","name":"Klao"},{"code":"klv","name":"Maskelynes"},{"code":"klw","name":"Lindu"},{"code":"klx","name":"Koluwawa"},{"code":"kly","name":"Kalao"},{"code":"klz","name":"Kabola"},{"code":"kma","name":"Konni"},{"code":"kmb","name":"Kimbundu"},{"code":"kmc","name":"Southern Dong"},{"code":"kmd","name":"Majukayang Kalinga"},{"code":"kme","name":"Bakole"},{"code":"kmf","name":"Kare (Papua New Guinea)"},{"code":"kmg","name":"Kรขte"},{"code":"kmh","name":"Kalam"},{"code":"kmi","name":"Kami (Nigeria)"},{"code":"kmj","name":"Kumarbhag Paharia"},{"code":"kmk","name":"Limos Kalinga"},{"code":"kml","name":"Tanudan Kalinga"},{"code":"kmm","name":"Kom (India)"},{"code":"kmn","name":"Awtuw"},{"code":"kmo","name":"Kwoma"},{"code":"kmp","name":"Gimme"},{"code":"kmq","name":"Kwama"},{"code":"kmr","name":"Northern Kurdish"},{"code":"kms","name":"Kamasau"},{"code":"kmt","name":"Kemtuik"},{"code":"kmu","name":"Kanite"},{"code":"kmv","name":"Karipรบna Creole French"},{"code":"kmw","name":"Komo (Democratic Republic of Congo)"},{"code":"kmx","name":"Waboda"},{"code":"kmy","name":"Koma"},{"code":"kmz","name":"Khorasani Turkish"},{"code":"kna","name":"Dera (Nigeria)"},{"code":"knb","name":"Lubuagan Kalinga"},{"code":"knc","name":"Central Kanuri"},{"code":"knd","name":"Konda"},{"code":"kne","name":"Kankanaey"},{"code":"knf","name":"Mankanya"},{"code":"kng","name":"Koongo"},{"code":"kni","name":"Kanufi"},{"code":"knj","name":"Western Kanjobal"},{"code":"knk","name":"Kuranko"},{"code":"knl","name":"Keninjal"},{"code":"knm","name":"Kanamarรญ"},{"code":"knn","name":"Konkani (individual language)"},{"code":"kno","name":"Kono (Sierra Leone)"},{"code":"knp","name":"Kwanja"},{"code":"knq","name":"Kintaq"},{"code":"knr","name":"Kaningra"},{"code":"kns","name":"Kensiu"},{"code":"knt","name":"Panoan Katukรญna"},{"code":"knu","name":"Kono (Guinea)"},{"code":"knv","name":"Tabo"},{"code":"knw","name":"Kung-Ekoka"},{"code":"knx","name":"Kendayan"},{"code":"kny","name":"Kanyok"},{"code":"knz","name":"Kalamsรฉ"},{"code":"koa","name":"Konomala"},{"code":"koc","name":"Kpati"},{"code":"kod","name":"Kodi"},{"code":"koe","name":"Kacipo-Bale Suri"},{"code":"kof","name":"Kubi"},{"code":"kog","name":"Cogui"},{"code":"koh","name":"Koyo"},{"code":"koi","name":"Komi-Permyak"},{"code":"kok","name":"Konkani (macrolanguage)"},{"code":"kol","name":"Kol (Papua New Guinea)"},{"code":"kom","name":"Komi"},{"code":"kon","name":"Kongo"},{"code":"koo","name":"Konzo"},{"code":"kop","name":"Waube"},{"code":"koq","name":"Kota (Gabon)"},{"code":"kor","name":"Korean"},{"code":"kos","name":"Kosraean"},{"code":"kot","name":"Lagwan"},{"code":"kou","name":"Koke"},{"code":"kov","name":"Kudu-Camo"},{"code":"kow","name":"Kugama"},{"code":"koy","name":"Koyukon"},{"code":"koz","name":"Korak"},{"code":"kpa","name":"Kutto"},{"code":"kpb","name":"Mullu Kurumba"},{"code":"kpc","name":"Curripaco"},{"code":"kpd","name":"Koba"},{"code":"kpe","name":"Kpelle"},{"code":"kpf","name":"Komba"},{"code":"kpg","name":"Kapingamarangi"},{"code":"kph","name":"Kplang"},{"code":"kpi","name":"Kofei"},{"code":"kpj","name":"Karajรก"},{"code":"kpk","name":"Kpan"},{"code":"kpl","name":"Kpala"},{"code":"kpm","name":"Koho"},{"code":"kpn","name":"Kepkiriwรกt"},{"code":"kpo","name":"Ikposo"},{"code":"kpq","name":"Korupun-Sela"},{"code":"kpr","name":"Korafe-Yegha"},{"code":"kps","name":"Tehit"},{"code":"kpt","name":"Karata"},{"code":"kpu","name":"Kafoa"},{"code":"kpv","name":"Komi-Zyrian"},{"code":"kpw","name":"Kobon"},{"code":"kpx","name":"Mountain Koiali"},{"code":"kpy","name":"Koryak"},{"code":"kpz","name":"Kupsabiny"},{"code":"kqa","name":"Mum"},{"code":"kqb","name":"Kovai"},{"code":"kqc","name":"Doromu-Koki"},{"code":"kqd","name":"Koy Sanjaq Surat"},{"code":"kqe","name":"Kalagan"},{"code":"kqf","name":"Kakabai"},{"code":"kqg","name":"Khe"},{"code":"kqh","name":"Kisankasa"},{"code":"kqi","name":"Koitabu"},{"code":"kqj","name":"Koromira"},{"code":"kqk","name":"Kotafon Gbe"},{"code":"kql","name":"Kyenele"},{"code":"kqm","name":"Khisa"},{"code":"kqn","name":"Kaonde"},{"code":"kqo","name":"Eastern Krahn"},{"code":"kqp","name":"Kimrรฉ"},{"code":"kqq","name":"Krenak"},{"code":"kqr","name":"Kimaragang"},{"code":"kqs","name":"Northern Kissi"},{"code":"kqt","name":"Klias River Kadazan"},{"code":"kqu","name":"Seroa"},{"code":"kqv","name":"Okolod"},{"code":"kqw","name":"Kandas"},{"code":"kqx","name":"Mser"},{"code":"kqy","name":"Koorete"},{"code":"kqz","name":"Korana"},{"code":"kra","name":"Kumhali"},{"code":"krb","name":"Karkin"},{"code":"krc","name":"Karachay-Balkar"},{"code":"krd","name":"Kairui-Midiki"},{"code":"kre","name":"Panarรก"},{"code":"krf","name":"Koro (Vanuatu)"},{"code":"krh","name":"Kurama"},{"code":"kri","name":"Krio"},{"code":"krj","name":"Kinaray-A"},{"code":"krk","name":"Kerek"},{"code":"krl","name":"Karelian"},{"code":"krn","name":"Sapo"},{"code":"krp","name":"Korop"},{"code":"krr","name":"Krung"},{"code":"krs","name":"Gbaya (Sudan)"},{"code":"krt","name":"Tumari Kanuri"},{"code":"kru","name":"Kurukh"},{"code":"krv","name":"Kavet"},{"code":"krw","name":"Western Krahn"},{"code":"krx","name":"Karon"},{"code":"kry","name":"Kryts"},{"code":"krz","name":"Sota Kanum"},{"code":"ksa","name":"Shuwa-Zamani"},{"code":"ksb","name":"Shambala"},{"code":"ksc","name":"Southern Kalinga"},{"code":"ksd","name":"Kuanua"},{"code":"kse","name":"Kuni"},{"code":"ksf","name":"Bafia"},{"code":"ksg","name":"Kusaghe"},{"code":"ksh","name":"Kรถlsch"},{"code":"ksi","name":"I'saka"},{"code":"ksj","name":"Uare"},{"code":"ksk","name":"Kansa"},{"code":"ksl","name":"Kumalu"},{"code":"ksm","name":"Kumba"},{"code":"ksn","name":"Kasiguranin"},{"code":"kso","name":"Kofa"},{"code":"ksp","name":"Kaba"},{"code":"ksq","name":"Kwaami"},{"code":"ksr","name":"Borong"},{"code":"kss","name":"Southern Kisi"},{"code":"kst","name":"Winyรฉ"},{"code":"ksu","name":"Khamyang"},{"code":"ksv","name":"Kusu"},{"code":"ksw","name":"S'gaw Karen"},{"code":"ksx","name":"Kedang"},{"code":"ksy","name":"Kharia Thar"},{"code":"ksz","name":"Kodaku"},{"code":"kta","name":"Katua"},{"code":"ktb","name":"Kambaata"},{"code":"ktc","name":"Kholok"},{"code":"ktd","name":"Kokata"},{"code":"kte","name":"Nubri"},{"code":"ktf","name":"Kwami"},{"code":"ktg","name":"Kalkutung"},{"code":"kth","name":"Karanga"},{"code":"kti","name":"North Muyu"},{"code":"ktj","name":"Plapo Krumen"},{"code":"ktk","name":"Kaniet"},{"code":"ktl","name":"Koroshi"},{"code":"ktm","name":"Kurti"},{"code":"ktn","name":"Karitiรขna"},{"code":"kto","name":"Kuot"},{"code":"ktp","name":"Kaduo"},{"code":"ktq","name":"Katabaga"},{"code":"kts","name":"South Muyu"},{"code":"ktt","name":"Ketum"},{"code":"ktu","name":"Kituba (Democratic Republic of Congo)"},{"code":"ktv","name":"Eastern Katu"},{"code":"ktw","name":"Kato"},{"code":"ktx","name":"Kaxararรญ"},{"code":"kty","name":"Kango (Bas-Uรฉlรฉ District)"},{"code":"ktz","name":"Juว€สผhoan"},{"code":"kua","name":"Kuanyama"},{"code":"kub","name":"Kutep"},{"code":"kuc","name":"Kwinsu"},{"code":"kud","name":"'Auhelawa"},{"code":"kue","name":"Kuman (Papua New Guinea)"},{"code":"kuf","name":"Western Katu"},{"code":"kug","name":"Kupa"},{"code":"kuh","name":"Kushi"},{"code":"kui","name":"Kalapalo"},{"code":"kuj","name":"Kuria"},{"code":"kuk","name":"Kepo'"},{"code":"kul","name":"Kulere"},{"code":"kum","name":"Kumyk"},{"code":"kun","name":"Kunama"},{"code":"kuo","name":"Kumukio"},{"code":"kup","name":"Kunimaipa"},{"code":"kuq","name":"Karipuna"},{"code":"kur","name":"Kurdish"},{"code":"kus","name":"Kusaal"},{"code":"kut","name":"Kutenai"},{"code":"kuu","name":"Upper Kuskokwim"},{"code":"kuv","name":"Kur"},{"code":"kuw","name":"Kpagua"},{"code":"kux","name":"Kukatja"},{"code":"kuy","name":"Kuuku-Ya'u"},{"code":"kuz","name":"Kunza"},{"code":"kva","name":"Bagvalal"},{"code":"kvb","name":"Kubu"},{"code":"kvc","name":"Kove"},{"code":"kvd","name":"Kui (Indonesia)"},{"code":"kve","name":"Kalabakan"},{"code":"kvf","name":"Kabalai"},{"code":"kvg","name":"Kuni-Boazi"},{"code":"kvh","name":"Komodo"},{"code":"kvi","name":"Kwang"},{"code":"kvj","name":"Psikye"},{"code":"kvk","name":"Korean Sign Language"},{"code":"kvl","name":"Kayaw"},{"code":"kvm","name":"Kendem"},{"code":"kvn","name":"Border Kuna"},{"code":"kvo","name":"Dobel"},{"code":"kvp","name":"Kompane"},{"code":"kvq","name":"Geba Karen"},{"code":"kvr","name":"Kerinci"},{"code":"kvt","name":"Lahta"},{"code":"kvu","name":"Yinbaw Karen"},{"code":"kvv","name":"Kola"},{"code":"kvw","name":"Wersing"},{"code":"kvx","name":"Parkari Koli"},{"code":"kvy","name":"Yintale"},{"code":"kvz","name":"Tsakwambo"},{"code":"kwa","name":"Dรขw"},{"code":"kwb","name":"Kwa"},{"code":"kwc","name":"Likwala"},{"code":"kwd","name":"Kwaio"},{"code":"kwe","name":"Kwerba"},{"code":"kwf","name":"Kwara'ae"},{"code":"kwg","name":"Sara Kaba Deme"},{"code":"kwh","name":"Kowiai"},{"code":"kwi","name":"Awa-Cuaiquer"},{"code":"kwj","name":"Kwanga"},{"code":"kwk","name":"Kwakiutl"},{"code":"kwl","name":"Kofyar"},{"code":"kwm","name":"Kwambi"},{"code":"kwn","name":"Kwangali"},{"code":"kwo","name":"Kwomtari"},{"code":"kwp","name":"Kodia"},{"code":"kwr","name":"Kwer"},{"code":"kws","name":"Kwese"},{"code":"kwt","name":"Kwesten"},{"code":"kwu","name":"Kwakum"},{"code":"kwv","name":"Sara Kaba Nรกร "},{"code":"kww","name":"Kwinti"},{"code":"kwx","name":"Khirwar"},{"code":"kwy","name":"San Salvador Kongo"},{"code":"kwz","name":"Kwadi"},{"code":"kxa","name":"Kairiru"},{"code":"kxb","name":"Krobu"},{"code":"kxc","name":"Khonso"},{"code":"kxd","name":"Brunei"},{"code":"kxf","name":"Manumanaw"},{"code":"kxh","name":"Karo (Ethiopia)"},{"code":"kxi","name":"Keningau Murut"},{"code":"kxj","name":"Kulfa"},{"code":"kxk","name":"Zayein Karen"},{"code":"kxm","name":"Northern Khmer"},{"code":"kxn","name":"Kanowit-Tanjong Melanau"},{"code":"kxo","name":"Kanoรฉ"},{"code":"kxp","name":"Wadiyara Koli"},{"code":"kxq","name":"Smรคrky Kanum"},{"code":"kxr","name":"Koro (Papua New Guinea)"},{"code":"kxs","name":"Kangjia"},{"code":"kxt","name":"Koiwat"},{"code":"kxv","name":"Kuvi"},{"code":"kxw","name":"Konai"},{"code":"kxx","name":"Likuba"},{"code":"kxy","name":"Kayong"},{"code":"kxz","name":"Kerewo"},{"code":"kya","name":"Kwaya"},{"code":"kyb","name":"Butbut Kalinga"},{"code":"kyc","name":"Kyaka"},{"code":"kyd","name":"Karey"},{"code":"kye","name":"Krache"},{"code":"kyf","name":"Kouya"},{"code":"kyg","name":"Keyagana"},{"code":"kyh","name":"Karok"},{"code":"kyi","name":"Kiput"},{"code":"kyj","name":"Karao"},{"code":"kyk","name":"Kamayo"},{"code":"kyl","name":"Kalapuya"},{"code":"kym","name":"Kpatili"},{"code":"kyn","name":"Northern Binukidnon"},{"code":"kyo","name":"Kelon"},{"code":"kyp","name":"Kang"},{"code":"kyq","name":"Kenga"},{"code":"kyr","name":"Kuruรกya"},{"code":"kys","name":"Baram Kayan"},{"code":"kyt","name":"Kayagar"},{"code":"kyu","name":"Western Kayah"},{"code":"kyv","name":"Kayort"},{"code":"kyw","name":"Kudmali"},{"code":"kyx","name":"Rapoisi"},{"code":"kyy","name":"Kambaira"},{"code":"kyz","name":"Kayabรญ"},{"code":"kza","name":"Western Karaboro"},{"code":"kzb","name":"Kaibobo"},{"code":"kzc","name":"Bondoukou Kulango"},{"code":"kzd","name":"Kadai"},{"code":"kze","name":"Kosena"},{"code":"kzf","name":"Da'a Kaili"},{"code":"kzg","name":"Kikai"},{"code":"kzi","name":"Kelabit"},{"code":"kzk","name":"Kazukuru"},{"code":"kzl","name":"Kayeli"},{"code":"kzm","name":"Kais"},{"code":"kzn","name":"Kokola"},{"code":"kzo","name":"Kaningi"},{"code":"kzp","name":"Kaidipang"},{"code":"kzq","name":"Kaike"},{"code":"kzr","name":"Karang"},{"code":"kzs","name":"Sugut Dusun"},{"code":"kzu","name":"Kayupulau"},{"code":"kzv","name":"Komyandaret"},{"code":"kzw","name":"Karirรญ-Xocรณ"},{"code":"kzx","name":"Kamarian"},{"code":"kzy","name":"Kango (Tshopo District)"},{"code":"kzz","name":"Kalabra"},{"code":"laa","name":"Southern Subanen"},{"code":"lab","name":"Linear A"},{"code":"lac","name":"Lacandon"},{"code":"lad","name":"Ladino"},{"code":"lae","name":"Pattani"},{"code":"laf","name":"Lafofa"},{"code":"lag","name":"Langi"},{"code":"lah","name":"Lahnda"},{"code":"lai","name":"Lambya"},{"code":"laj","name":"Lango (Uganda)"},{"code":"lak","name":"Laka (Nigeria)"},{"code":"lal","name":"Lalia"},{"code":"lam","name":"Lamba"},{"code":"lan","name":"Laru"},{"code":"lao","name":"Lao"},{"code":"lap","name":"Laka (Chad)"},{"code":"laq","name":"Qabiao"},{"code":"lar","name":"Larteh"},{"code":"las","name":"Lama (Togo)"},{"code":"lat","name":"Latin"},{"code":"lau","name":"Laba"},{"code":"lav","name":"Latvian"},{"code":"law","name":"Lauje"},{"code":"lax","name":"Tiwa"},{"code":"lay","name":"Lama Bai"},{"code":"laz","name":"Aribwatsa"},{"code":"lbb","name":"Label"},{"code":"lbc","name":"Lakkia"},{"code":"lbe","name":"Lak"},{"code":"lbf","name":"Tinani"},{"code":"lbg","name":"Laopang"},{"code":"lbi","name":"La'bi"},{"code":"lbj","name":"Ladakhi"},{"code":"lbk","name":"Central Bontok"},{"code":"lbl","name":"Libon Bikol"},{"code":"lbm","name":"Lodhi"},{"code":"lbn","name":"Rmeet"},{"code":"lbo","name":"Laven"},{"code":"lbq","name":"Wampar"},{"code":"lbr","name":"Lohorung"},{"code":"lbs","name":"Libyan Sign Language"},{"code":"lbt","name":"Lachi"},{"code":"lbu","name":"Labu"},{"code":"lbv","name":"Lavatbura-Lamusong"},{"code":"lbw","name":"Tolaki"},{"code":"lbx","name":"Lawangan"},{"code":"lby","name":"Lamalama"},{"code":"lbz","name":"Lardil"},{"code":"lcc","name":"Legenyem"},{"code":"lcd","name":"Lola"},{"code":"lce","name":"Loncong"},{"code":"lcf","name":"Lubu"},{"code":"lch","name":"Luchazi"},{"code":"lcl","name":"Lisela"},{"code":"lcm","name":"Tungag"},{"code":"lcp","name":"Western Lawa"},{"code":"lcq","name":"Luhu"},{"code":"lcs","name":"Lisabata-Nuniali"},{"code":"lda","name":"Kla-Dan"},{"code":"ldb","name":"Duฬƒya"},{"code":"ldd","name":"Luri"},{"code":"ldg","name":"Lenyima"},{"code":"ldh","name":"Lamja-Dengsa-Tola"},{"code":"ldi","name":"Laari"},{"code":"ldj","name":"Lemoro"},{"code":"ldk","name":"Leelau"},{"code":"ldl","name":"Kaan"},{"code":"ldm","name":"Landoma"},{"code":"ldn","name":"Lรกadan"},{"code":"ldo","name":"Loo"},{"code":"ldp","name":"Tso"},{"code":"ldq","name":"Lufu"},{"code":"lea","name":"Lega-Shabunda"},{"code":"leb","name":"Lala-Bisa"},{"code":"lec","name":"Leco"},{"code":"led","name":"Lendu"},{"code":"lee","name":"Lyรฉlรฉ"},{"code":"lef","name":"Lelemi"},{"code":"leh","name":"Lenje"},{"code":"lei","name":"Lemio"},{"code":"lej","name":"Lengola"},{"code":"lek","name":"Leipon"},{"code":"lel","name":"Lele (Democratic Republic of Congo)"},{"code":"lem","name":"Nomaande"},{"code":"len","name":"Lenca"},{"code":"leo","name":"Leti (Cameroon)"},{"code":"lep","name":"Lepcha"},{"code":"leq","name":"Lembena"},{"code":"ler","name":"Lenkau"},{"code":"les","name":"Lese"},{"code":"let","name":"Amio-Gelimi"},{"code":"leu","name":"Kara (Papua New Guinea)"},{"code":"lev","name":"Lamma"},{"code":"lew","name":"Ledo Kaili"},{"code":"lex","name":"Luang"},{"code":"ley","name":"Lemolang"},{"code":"lez","name":"Lezghian"},{"code":"lfa","name":"Lefa"},{"code":"lfn","name":"Lingua Franca Nova"},{"code":"lga","name":"Lungga"},{"code":"lgb","name":"Laghu"},{"code":"lgg","name":"Lugbara"},{"code":"lgh","name":"Laghuu"},{"code":"lgi","name":"Lengilu"},{"code":"lgk","name":"Lingarak"},{"code":"lgl","name":"Wala"},{"code":"lgm","name":"Lega-Mwenga"},{"code":"lgn","name":"Opuuo"},{"code":"lgq","name":"Logba"},{"code":"lgr","name":"Lengo"},{"code":"lgt","name":"Pahi"},{"code":"lgu","name":"Longgu"},{"code":"lgz","name":"Ligenza"},{"code":"lha","name":"Laha (Viet Nam)"},{"code":"lhh","name":"Laha (Indonesia)"},{"code":"lhi","name":"Lahu Shi"},{"code":"lhl","name":"Lahul Lohar"},{"code":"lhm","name":"Lhomi"},{"code":"lhn","name":"Lahanan"},{"code":"lhp","name":"Lhokpu"},{"code":"lhs","name":"Mlahsรถ"},{"code":"lht","name":"Lo-Toga"},{"code":"lhu","name":"Lahu"},{"code":"lia","name":"West-Central Limba"},{"code":"lib","name":"Likum"},{"code":"lic","name":"Hlai"},{"code":"lid","name":"Nyindrou"},{"code":"lie","name":"Likila"},{"code":"lif","name":"Limbu"},{"code":"lig","name":"Ligbi"},{"code":"lih","name":"Lihir"},{"code":"lij","name":"Ligurian"},{"code":"lik","name":"Lika"},{"code":"lil","name":"Lillooet"},{"code":"lim","name":"Limburgan"},{"code":"lin","name":"Lingala"},{"code":"lio","name":"Liki"},{"code":"lip","name":"Sekpele"},{"code":"liq","name":"Libido"},{"code":"lir","name":"Liberian English"},{"code":"lis","name":"Lisu"},{"code":"lit","name":"Lithuanian"},{"code":"liu","name":"Logorik"},{"code":"liv","name":"Liv"},{"code":"liw","name":"Col"},{"code":"lix","name":"Liabuku"},{"code":"liy","name":"Banda-Bambari"},{"code":"liz","name":"Libinza"},{"code":"lja","name":"Golpa"},{"code":"lje","name":"Rampi"},{"code":"lji","name":"Laiyolo"},{"code":"ljl","name":"Li'o"},{"code":"ljp","name":"Lampung Api"},{"code":"ljw","name":"Yirandali"},{"code":"ljx","name":"Yuru"},{"code":"lka","name":"Lakalei"},{"code":"lkb","name":"Kabras"},{"code":"lkc","name":"Kucong"},{"code":"lkd","name":"Lakondรช"},{"code":"lke","name":"Kenyi"},{"code":"lkh","name":"Lakha"},{"code":"lki","name":"Laki"},{"code":"lkj","name":"Remun"},{"code":"lkl","name":"Laeko-Libuat"},{"code":"lkm","name":"Kalaamaya"},{"code":"lkn","name":"Lakon"},{"code":"lko","name":"Khayo"},{"code":"lkr","name":"Pรคri"},{"code":"lks","name":"Kisa"},{"code":"lkt","name":"Lakota"},{"code":"lku","name":"Kungkari"},{"code":"lky","name":"Lokoya"},{"code":"lla","name":"Lala-Roba"},{"code":"llb","name":"Lolo"},{"code":"llc","name":"Lele (Guinea)"},{"code":"lld","name":"Ladin"},{"code":"lle","name":"Lele (Papua New Guinea)"},{"code":"llf","name":"Hermit"},{"code":"llg","name":"Lole"},{"code":"llh","name":"Lamu"},{"code":"lli","name":"Teke-Laali"},{"code":"llj","name":"Ladji Ladji"},{"code":"llk","name":"Lelak"},{"code":"lll","name":"Lilau"},{"code":"llm","name":"Lasalimu"},{"code":"lln","name":"Lele (Chad)"},{"code":"llp","name":"North Efate"},{"code":"llq","name":"Lolak"},{"code":"lls","name":"Lithuanian Sign Language"},{"code":"llu","name":"Lau"},{"code":"llx","name":"Lauan"},{"code":"lma","name":"East Limba"},{"code":"lmb","name":"Merei"},{"code":"lmc","name":"Limilngan"},{"code":"lmd","name":"Lumun"},{"code":"lme","name":"Pรฉvรฉ"},{"code":"lmf","name":"South Lembata"},{"code":"lmg","name":"Lamogai"},{"code":"lmh","name":"Lambichhong"},{"code":"lmi","name":"Lombi"},{"code":"lmj","name":"West Lembata"},{"code":"lmk","name":"Lamkang"},{"code":"lml","name":"Hano"},{"code":"lmn","name":"Lambadi"},{"code":"lmo","name":"Lombard"},{"code":"lmp","name":"Limbum"},{"code":"lmq","name":"Lamatuka"},{"code":"lmr","name":"Lamalera"},{"code":"lmu","name":"Lamenu"},{"code":"lmv","name":"Lomaiviti"},{"code":"lmw","name":"Lake Miwok"},{"code":"lmx","name":"Laimbue"},{"code":"lmy","name":"Lamboya"},{"code":"lna","name":"Langbashe"},{"code":"lnb","name":"Mbalanhu"},{"code":"lnd","name":"Lun Bawang"},{"code":"lng","name":"Langobardic"},{"code":"lnh","name":"Lanoh"},{"code":"lni","name":"Daantanai'"},{"code":"lnj","name":"Leningitij"},{"code":"lnl","name":"South Central Banda"},{"code":"lnm","name":"Langam"},{"code":"lnn","name":"Lorediakarkar"},{"code":"lno","name":"Lango (South Sudan)"},{"code":"lns","name":"Lamnso'"},{"code":"lnu","name":"Longuda"},{"code":"lnw","name":"Lanima"},{"code":"lnz","name":"Lonzo"},{"code":"loa","name":"Loloda"},{"code":"lob","name":"Lobi"},{"code":"loc","name":"Inonhan"},{"code":"loe","name":"Saluan"},{"code":"lof","name":"Logol"},{"code":"log","name":"Logo"},{"code":"loh","name":"Narim"},{"code":"loi","name":"Loma (Cรดte d'Ivoire)"},{"code":"loj","name":"Lou"},{"code":"lok","name":"Loko"},{"code":"lol","name":"Mongo"},{"code":"lom","name":"Loma (Liberia)"},{"code":"lon","name":"Malawi Lomwe"},{"code":"loo","name":"Lombo"},{"code":"lop","name":"Lopa"},{"code":"loq","name":"Lobala"},{"code":"lor","name":"Tรฉรฉn"},{"code":"los","name":"Loniu"},{"code":"lot","name":"Otuho"},{"code":"lou","name":"Louisiana Creole"},{"code":"lov","name":"Lopi"},{"code":"low","name":"Tampias Lobu"},{"code":"lox","name":"Loun"},{"code":"loy","name":"Loke"},{"code":"loz","name":"Lozi"},{"code":"lpa","name":"Lelepa"},{"code":"lpe","name":"Lepki"},{"code":"lpn","name":"Long Phuri Naga"},{"code":"lpo","name":"Lipo"},{"code":"lpx","name":"Lopit"},{"code":"lra","name":"Rara Bakati'"},{"code":"lrc","name":"Northern Luri"},{"code":"lre","name":"Laurentian"},{"code":"lrg","name":"Laragia"},{"code":"lri","name":"Marachi"},{"code":"lrk","name":"Loarki"},{"code":"lrl","name":"Lari"},{"code":"lrm","name":"Marama"},{"code":"lrn","name":"Lorang"},{"code":"lro","name":"Laro"},{"code":"lrr","name":"Southern Yamphu"},{"code":"lrt","name":"Larantuka Malay"},{"code":"lrv","name":"Larevat"},{"code":"lrz","name":"Lemerig"},{"code":"lsa","name":"Lasgerdi"},{"code":"lsb","name":"Burundian Sign Language"},{"code":"lsd","name":"Lishana Deni"},{"code":"lse","name":"Lusengo"},{"code":"lsh","name":"Lish"},{"code":"lsi","name":"Lashi"},{"code":"lsl","name":"Latvian Sign Language"},{"code":"lsm","name":"Olusamia"},{"code":"lsn","name":"Tibetan Sign Language"},{"code":"lso","name":"Laos Sign Language"},{"code":"lsp","name":"Lengua de Seรฑas Panameรฑas"},{"code":"lsr","name":"Aruop"},{"code":"lss","name":"Lasi"},{"code":"lst","name":"Trinidad and Tobago Sign Language"},{"code":"lsv","name":"Sivia Sign Language"},{"code":"lsy","name":"Mauritian Sign Language"},{"code":"ltc","name":"Late Middle Chinese"},{"code":"ltg","name":"Latgalian"},{"code":"lth","name":"Thur"},{"code":"lti","name":"Leti (Indonesia)"},{"code":"ltn","name":"Latundรช"},{"code":"lto","name":"Olutsotso"},{"code":"lts","name":"Lutachoni"},{"code":"ltu","name":"Latu"},{"code":"ltz","name":"Letzeburgesch"},{"code":"lua","name":"Luba-Lulua"},{"code":"lub","name":"Luba-Katanga"},{"code":"luc","name":"Aringa"},{"code":"lud","name":"Ludian"},{"code":"lue","name":"Luvale"},{"code":"luf","name":"Laua"},{"code":"lug","name":"Ganda"},{"code":"lui","name":"Luiseno"},{"code":"luj","name":"Luna"},{"code":"luk","name":"Lunanakha"},{"code":"lul","name":"Olu'bo"},{"code":"lum","name":"Luimbi"},{"code":"lun","name":"Lunda"},{"code":"luo","name":"Dholuo"},{"code":"lup","name":"Lumbu"},{"code":"luq","name":"Lucumi"},{"code":"lur","name":"Laura"},{"code":"lus","name":"Lushai"},{"code":"lut","name":"Lushootseed"},{"code":"luu","name":"Lumba-Yakkha"},{"code":"luv","name":"Luwati"},{"code":"luw","name":"Luo (Cameroon)"},{"code":"luy","name":"Luyia"},{"code":"luz","name":"Southern Luri"},{"code":"lva","name":"Maku'a"},{"code":"lvi","name":"Lavi"},{"code":"lvk","name":"Lavukaleve"},{"code":"lvs","name":"Standard Latvian"},{"code":"lvu","name":"Levuka"},{"code":"lwa","name":"Lwalu"},{"code":"lwe","name":"Lewo Eleng"},{"code":"lwg","name":"Oluwanga"},{"code":"lwh","name":"White Lachi"},{"code":"lwl","name":"Eastern Lawa"},{"code":"lwm","name":"Laomian"},{"code":"lwo","name":"Luwo"},{"code":"lws","name":"Malawian Sign Language"},{"code":"lwt","name":"Lewotobi"},{"code":"lwu","name":"Lawu"},{"code":"lww","name":"Lewo"},{"code":"lxm","name":"Lakurumau"},{"code":"lya","name":"Layakha"},{"code":"lyg","name":"Lyngngam"},{"code":"lyn","name":"Luyana"},{"code":"lzh","name":"Literary Chinese"},{"code":"lzl","name":"Litzlitz"},{"code":"lzn","name":"Leinong Naga"},{"code":"lzz","name":"Laz"},{"code":"maa","name":"San Jerรณnimo Tecรณatl Mazatec"},{"code":"mab","name":"Yutanduchi Mixtec"},{"code":"mad","name":"Madurese"},{"code":"mae","name":"Bo-Rukul"},{"code":"maf","name":"Mafa"},{"code":"mag","name":"Magahi"},{"code":"mah","name":"Marshallese"},{"code":"mai","name":"Maithili"},{"code":"maj","name":"Jalapa De Dรญaz Mazatec"},{"code":"mak","name":"Makasar"},{"code":"mal","name":"Malayalam"},{"code":"mam","name":"Mam"},{"code":"man","name":"Manding"},{"code":"maq","name":"Chiquihuitlรกn Mazatec"},{"code":"mar","name":"Marathi"},{"code":"mas","name":"Masai"},{"code":"mat","name":"San Francisco Matlatzinca"},{"code":"mau","name":"Huautla Mazatec"},{"code":"mav","name":"Saterรฉ-Mawรฉ"},{"code":"maw","name":"Mampruli"},{"code":"max","name":"North Moluccan Malay"},{"code":"maz","name":"Central Mazahua"},{"code":"mba","name":"Higaonon"},{"code":"mbb","name":"Western Bukidnon Manobo"},{"code":"mbc","name":"Macushi"},{"code":"mbd","name":"Dibabawon Manobo"},{"code":"mbe","name":"Molale"},{"code":"mbf","name":"Baba Malay"},{"code":"mbh","name":"Mangseng"},{"code":"mbi","name":"Ilianen Manobo"},{"code":"mbj","name":"Nadรซb"},{"code":"mbk","name":"Malol"},{"code":"mbl","name":"Maxakalรญ"},{"code":"mbm","name":"Ombamba"},{"code":"mbn","name":"Macaguรกn"},{"code":"mbo","name":"Mbo (Cameroon)"},{"code":"mbp","name":"Malayo"},{"code":"mbq","name":"Maisin"},{"code":"mbr","name":"Nukak Makรบ"},{"code":"mbs","name":"Sarangani Manobo"},{"code":"mbt","name":"Matigsalug Manobo"},{"code":"mbu","name":"Mbula-Bwazza"},{"code":"mbv","name":"Mbulungish"},{"code":"mbw","name":"Maring"},{"code":"mbx","name":"Mari (East Sepik Province)"},{"code":"mby","name":"Memoni"},{"code":"mbz","name":"Amoltepec Mixtec"},{"code":"mca","name":"Maca"},{"code":"mcb","name":"Machiguenga"},{"code":"mcc","name":"Bitur"},{"code":"mcd","name":"Sharanahua"},{"code":"mce","name":"Itundujia Mixtec"},{"code":"mcf","name":"Matsรฉs"},{"code":"mcg","name":"Mapoyo"},{"code":"mch","name":"Maquiritari"},{"code":"mci","name":"Mese"},{"code":"mcj","name":"Mvanip"},{"code":"mck","name":"Mbunda"},{"code":"mcl","name":"Macaguaje"},{"code":"mcm","name":"Malaccan Creole Portuguese"},{"code":"mcn","name":"Masana"},{"code":"mco","name":"Coatlรกn Mixe"},{"code":"mcp","name":"Makaa"},{"code":"mcq","name":"Ese"},{"code":"mcr","name":"Menya"},{"code":"mcs","name":"Mambai"},{"code":"mct","name":"Mengisa"},{"code":"mcu","name":"Cameroon Mambila"},{"code":"mcv","name":"Minanibai"},{"code":"mcw","name":"Mawa (Chad)"},{"code":"mcx","name":"Mpiemo"},{"code":"mcy","name":"South Watut"},{"code":"mcz","name":"Mawan"},{"code":"mda","name":"Mada (Nigeria)"},{"code":"mdb","name":"Morigi"},{"code":"mdc","name":"Male (Papua New Guinea)"},{"code":"mdd","name":"Mbum"},{"code":"mde","name":"Maba (Chad)"},{"code":"mdf","name":"Moksha"},{"code":"mdg","name":"Massalat"},{"code":"mdh","name":"Maguindanaon"},{"code":"mdi","name":"Mamvu"},{"code":"mdj","name":"Mangbetu"},{"code":"mdk","name":"Mangbutu"},{"code":"mdl","name":"Maltese Sign Language"},{"code":"mdm","name":"Mayogo"},{"code":"mdn","name":"Mbati"},{"code":"mdp","name":"Mbala"},{"code":"mdq","name":"Mbole"},{"code":"mdr","name":"Mandar"},{"code":"mds","name":"Maria (Papua New Guinea)"},{"code":"mdt","name":"Mbere"},{"code":"mdu","name":"Mboko"},{"code":"mdv","name":"Santa Lucรญa Monteverde Mixtec"},{"code":"mdw","name":"Mbosi"},{"code":"mdx","name":"Dizin"},{"code":"mdy","name":"Male (Ethiopia)"},{"code":"mdz","name":"Suruรญ Do Parรก"},{"code":"mea","name":"Menka"},{"code":"meb","name":"Ikobi"},{"code":"mec","name":"Marra"},{"code":"med","name":"Melpa"},{"code":"mee","name":"Mengen"},{"code":"mef","name":"Megam"},{"code":"meh","name":"Southwestern Tlaxiaco Mixtec"},{"code":"mei","name":"Midob"},{"code":"mej","name":"Meyah"},{"code":"mek","name":"Mekeo"},{"code":"mel","name":"Central Melanau"},{"code":"mem","name":"Mangala"},{"code":"men","name":"Mende (Sierra Leone)"},{"code":"meo","name":"Kedah Malay"},{"code":"mep","name":"Miriwoong"},{"code":"meq","name":"Merey"},{"code":"mer","name":"Meru"},{"code":"mes","name":"Masmaje"},{"code":"met","name":"Mato"},{"code":"meu","name":"Motu"},{"code":"mev","name":"Mano"},{"code":"mew","name":"Maaka"},{"code":"mey","name":"Hassaniyya"},{"code":"mez","name":"Menominee"},{"code":"mfa","name":"Pattani Malay"},{"code":"mfb","name":"Bangka"},{"code":"mfc","name":"Mba"},{"code":"mfd","name":"Mendankwe-Nkwen"},{"code":"mfe","name":"Morisyen"},{"code":"mff","name":"Naki"},{"code":"mfg","name":"Mogofin"},{"code":"mfh","name":"Matal"},{"code":"mfi","name":"Wandala"},{"code":"mfj","name":"Mefele"},{"code":"mfk","name":"North Mofu"},{"code":"mfl","name":"Putai"},{"code":"mfm","name":"Marghi South"},{"code":"mfn","name":"Cross River Mbembe"},{"code":"mfo","name":"Mbe"},{"code":"mfp","name":"Makassar Malay"},{"code":"mfq","name":"Moba"},{"code":"mfr","name":"Marrithiyel"},{"code":"mfs","name":"Mexican Sign Language"},{"code":"mft","name":"Mokerang"},{"code":"mfu","name":"Mbwela"},{"code":"mfv","name":"Mandjak"},{"code":"mfw","name":"Mulaha"},{"code":"mfx","name":"Melo"},{"code":"mfy","name":"Mayo"},{"code":"mfz","name":"Mabaan"},{"code":"mga","name":"Middle Irish (900-1200)"},{"code":"mgb","name":"Mararit"},{"code":"mgc","name":"Morokodo"},{"code":"mgd","name":"Moru"},{"code":"mge","name":"Mango"},{"code":"mgf","name":"Maklew"},{"code":"mgg","name":"Mpumpong"},{"code":"mgh","name":"Makhuwa-Meetto"},{"code":"mgi","name":"Lijili"},{"code":"mgj","name":"Abureni"},{"code":"mgk","name":"Mawes"},{"code":"mgl","name":"Maleu-Kilenge"},{"code":"mgm","name":"Mambae"},{"code":"mgn","name":"Mbangi"},{"code":"mgo","name":"Meta'"},{"code":"mgp","name":"Eastern Magar"},{"code":"mgq","name":"Malila"},{"code":"mgr","name":"Mambwe-Lungu"},{"code":"mgs","name":"Manda (Tanzania)"},{"code":"mgt","name":"Mongol"},{"code":"mgu","name":"Mailu"},{"code":"mgv","name":"Matengo"},{"code":"mgw","name":"Matumbi"},{"code":"mgy","name":"Mbunga"},{"code":"mgz","name":"Mbugwe"},{"code":"mha","name":"Manda (India)"},{"code":"mhb","name":"Mahongwe"},{"code":"mhc","name":"Mocho"},{"code":"mhd","name":"Mbugu"},{"code":"mhe","name":"Besisi"},{"code":"mhf","name":"Mamaa"},{"code":"mhg","name":"Margu"},{"code":"mhi","name":"Ma'di"},{"code":"mhj","name":"Mogholi"},{"code":"mhk","name":"Mungaka"},{"code":"mhl","name":"Mauwake"},{"code":"mhm","name":"Makhuwa-Moniga"},{"code":"mhn","name":"Mรณcheno"},{"code":"mho","name":"Mashi (Zambia)"},{"code":"mhp","name":"Balinese Malay"},{"code":"mhq","name":"Mandan"},{"code":"mhr","name":"Eastern Mari"},{"code":"mhs","name":"Buru (Indonesia)"},{"code":"mht","name":"Mandahuaca"},{"code":"mhu","name":"Darang Deng"},{"code":"mhw","name":"Mbukushu"},{"code":"mhx","name":"Lhaovo"},{"code":"mhy","name":"Ma'anyan"},{"code":"mhz","name":"Mor (Mor Islands)"},{"code":"mia","name":"Miami"},{"code":"mib","name":"Atatlรกhuca Mixtec"},{"code":"mic","name":"Micmac"},{"code":"mid","name":"Mandaic"},{"code":"mie","name":"Ocotepec Mixtec"},{"code":"mif","name":"Mofu-Gudur"},{"code":"mig","name":"San Miguel El Grande Mixtec"},{"code":"mih","name":"Chayuco Mixtec"},{"code":"mii","name":"Chigmecatitlรกn Mixtec"},{"code":"mij","name":"Abar"},{"code":"mik","name":"Mikasuki"},{"code":"mil","name":"Peรฑoles Mixtec"},{"code":"mim","name":"Alacatlatzala Mixtec"},{"code":"min","name":"Minangkabau"},{"code":"mio","name":"Pinotepa Nacional Mixtec"},{"code":"mip","name":"Apasco-Apoala Mixtec"},{"code":"miq","name":"Mรญskito"},{"code":"mir","name":"Isthmus Mixe"},{"code":"mis","name":"Uncoded languages"},{"code":"mit","name":"Southern Puebla Mixtec"},{"code":"miu","name":"Cacaloxtepec Mixtec"},{"code":"miw","name":"Akoye"},{"code":"mix","name":"Mixtepec Mixtec"},{"code":"miy","name":"Ayutla Mixtec"},{"code":"miz","name":"Coatzospan Mixtec"},{"code":"mjb","name":"Makalero"},{"code":"mjc","name":"San Juan Colorado Mixtec"},{"code":"mjd","name":"Northwest Maidu"},{"code":"mje","name":"Muskum"},{"code":"mjg","name":"Tu"},{"code":"mjh","name":"Mwera (Nyasa)"},{"code":"mji","name":"Kim Mun"},{"code":"mjj","name":"Mawak"},{"code":"mjk","name":"Matukar"},{"code":"mjl","name":"Mandeali"},{"code":"mjm","name":"Medebur"},{"code":"mjn","name":"Ma (Papua New Guinea)"},{"code":"mjo","name":"Malankuravan"},{"code":"mjp","name":"Malapandaram"},{"code":"mjq","name":"Malaryan"},{"code":"mjr","name":"Malavedan"},{"code":"mjs","name":"Miship"},{"code":"mjt","name":"Sauria Paharia"},{"code":"mju","name":"Manna-Dora"},{"code":"mjv","name":"Mannan"},{"code":"mjw","name":"Karbi"},{"code":"mjx","name":"Mahali"},{"code":"mjy","name":"Mahican"},{"code":"mjz","name":"Majhi"},{"code":"mka","name":"Mbre"},{"code":"mkb","name":"Mal Paharia"},{"code":"mkc","name":"Siliput"},{"code":"mkd","name":"Macedonian"},{"code":"mke","name":"Mawchi"},{"code":"mkf","name":"Miya"},{"code":"mkg","name":"Mak (China)"},{"code":"mki","name":"Dhatki"},{"code":"mkj","name":"Mokilese"},{"code":"mkk","name":"Byep"},{"code":"mkl","name":"Mokole"},{"code":"mkm","name":"Moklen"},{"code":"mkn","name":"Kupang Malay"},{"code":"mko","name":"Mingang Doso"},{"code":"mkp","name":"Moikodi"},{"code":"mkq","name":"Bay Miwok"},{"code":"mkr","name":"Malas"},{"code":"mks","name":"Silacayoapan Mixtec"},{"code":"mkt","name":"Vamale"},{"code":"mku","name":"Konyanka Maninka"},{"code":"mkv","name":"Mafea"},{"code":"mkw","name":"Kituba (Congo)"},{"code":"mkx","name":"Kinamiging Manobo"},{"code":"mky","name":"East Makian"},{"code":"mkz","name":"Makasae"},{"code":"mla","name":"Malo"},{"code":"mlb","name":"Mbule"},{"code":"mlc","name":"Cao Lan"},{"code":"mle","name":"Manambu"},{"code":"mlf","name":"Mal"},{"code":"mlg","name":"Malagasy"},{"code":"mlh","name":"Mape"},{"code":"mli","name":"Malimpung"},{"code":"mlj","name":"Miltu"},{"code":"mlk","name":"Ilwana"},{"code":"mll","name":"Malua Bay"},{"code":"mlm","name":"Mulam"},{"code":"mln","name":"Malango"},{"code":"mlo","name":"Mlomp"},{"code":"mlp","name":"Bargam"},{"code":"mlq","name":"Western Maninkakan"},{"code":"mlr","name":"Vame"},{"code":"mls","name":"Masalit"},{"code":"mlt","name":"Maltese"},{"code":"mlu","name":"To'abaita"},{"code":"mlv","name":"Motlav"},{"code":"mlw","name":"Moloko"},{"code":"mlx","name":"Malfaxal"},{"code":"mlz","name":"Malaynon"},{"code":"mma","name":"Mama"},{"code":"mmb","name":"Momina"},{"code":"mmc","name":"Michoacรกn Mazahua"},{"code":"mmd","name":"Maonan"},{"code":"mme","name":"Mae"},{"code":"mmf","name":"Mundat"},{"code":"mmg","name":"North Ambrym"},{"code":"mmh","name":"Mehinรกku"},{"code":"mmi","name":"Musar"},{"code":"mmj","name":"Majhwar"},{"code":"mmk","name":"Mukha-Dora"},{"code":"mml","name":"Man Met"},{"code":"mmm","name":"Maii"},{"code":"mmn","name":"Mamanwa"},{"code":"mmo","name":"Mangga Buang"},{"code":"mmp","name":"Siawi"},{"code":"mmq","name":"Musak"},{"code":"mmr","name":"Western Xiangxi Miao"},{"code":"mmt","name":"Malalamai"},{"code":"mmu","name":"Mmaala"},{"code":"mmv","name":"Miriti"},{"code":"mmw","name":"Emae"},{"code":"mmx","name":"Madak"},{"code":"mmy","name":"Migaama"},{"code":"mmz","name":"Mabaale"},{"code":"mna","name":"Mbula"},{"code":"mnb","name":"Muna"},{"code":"mnc","name":"Manchu"},{"code":"mnd","name":"Mondรฉ"},{"code":"mne","name":"Naba"},{"code":"mnf","name":"Mundani"},{"code":"mng","name":"Eastern Mnong"},{"code":"mnh","name":"Mono (Democratic Republic of Congo)"},{"code":"mni","name":"Manipuri"},{"code":"mnj","name":"Munji"},{"code":"mnk","name":"Mandinka"},{"code":"mnl","name":"Tiale"},{"code":"mnm","name":"Mapena"},{"code":"mnn","name":"Southern Mnong"},{"code":"mnp","name":"Min Bei Chinese"},{"code":"mnq","name":"Minriq"},{"code":"mnr","name":"Mono (USA)"},{"code":"mns","name":"Mansi"},{"code":"mnu","name":"Mer"},{"code":"mnv","name":"Rennell-Bellona"},{"code":"mnw","name":"Mon"},{"code":"mnx","name":"Manikion"},{"code":"mny","name":"Manyawa"},{"code":"mnz","name":"Moni"},{"code":"moa","name":"Mwan"},{"code":"moc","name":"Mocovรญ"},{"code":"mod","name":"Mobilian"},{"code":"moe","name":"Innu"},{"code":"mog","name":"Mongondow"},{"code":"moh","name":"Mohawk"},{"code":"moi","name":"Mboi"},{"code":"moj","name":"Monzombo"},{"code":"mok","name":"Morori"},{"code":"mom","name":"Mangue"},{"code":"mon","name":"Mongolian"},{"code":"moo","name":"Monom"},{"code":"mop","name":"Mopรกn Maya"},{"code":"moq","name":"Mor (Bomberai Peninsula)"},{"code":"mor","name":"Moro"},{"code":"mos","name":"Mossi"},{"code":"mot","name":"Barรญ"},{"code":"mou","name":"Mogum"},{"code":"mov","name":"Mohave"},{"code":"mow","name":"Moi (Congo)"},{"code":"mox","name":"Molima"},{"code":"moy","name":"Shekkacho"},{"code":"moz","name":"Gergiko"},{"code":"mpa","name":"Mpoto"},{"code":"mpb","name":"Malak Malak"},{"code":"mpc","name":"Mangarrayi"},{"code":"mpd","name":"Machinere"},{"code":"mpe","name":"Majang"},{"code":"mpg","name":"Marba"},{"code":"mph","name":"Maung"},{"code":"mpi","name":"Mpade"},{"code":"mpj","name":"Martu Wangka"},{"code":"mpk","name":"Mbara (Chad)"},{"code":"mpl","name":"Middle Watut"},{"code":"mpm","name":"Yosondรบa Mixtec"},{"code":"mpn","name":"Mindiri"},{"code":"mpo","name":"Miu"},{"code":"mpp","name":"Migabac"},{"code":"mpq","name":"Matรญs"},{"code":"mpr","name":"Vangunu"},{"code":"mps","name":"Dadibi"},{"code":"mpt","name":"Mian"},{"code":"mpu","name":"Makurรกp"},{"code":"mpv","name":"Mungkip"},{"code":"mpw","name":"Mapidian"},{"code":"mpx","name":"Misima-Panaeati"},{"code":"mpy","name":"Mapia"},{"code":"mpz","name":"Mpi"},{"code":"mqa","name":"Maba (Indonesia)"},{"code":"mqb","name":"Mbuko"},{"code":"mqc","name":"Mangole"},{"code":"mqe","name":"Matepi"},{"code":"mqf","name":"Momuna"},{"code":"mqg","name":"Kota Bangun Kutai Malay"},{"code":"mqh","name":"Tlazoyaltepec Mixtec"},{"code":"mqi","name":"Mariri"},{"code":"mqj","name":"Mamasa"},{"code":"mqk","name":"Rajah Kabunsuwan Manobo"},{"code":"mql","name":"Mbelime"},{"code":"mqm","name":"South Marquesan"},{"code":"mqn","name":"Moronene"},{"code":"mqo","name":"Modole"},{"code":"mqp","name":"Manipa"},{"code":"mqq","name":"Minokok"},{"code":"mqr","name":"Mander"},{"code":"mqs","name":"West Makian"},{"code":"mqt","name":"Mok"},{"code":"mqu","name":"Mandari"},{"code":"mqv","name":"Mosimo"},{"code":"mqw","name":"Murupi"},{"code":"mqx","name":"Mamuju"},{"code":"mqy","name":"Manggarai"},{"code":"mqz","name":"Pano"},{"code":"mra","name":"Mlabri"},{"code":"mrb","name":"Marino"},{"code":"mrc","name":"Maricopa"},{"code":"mrd","name":"Western Magar"},{"code":"mre","name":"Martha's Vineyard Sign Language"},{"code":"mrf","name":"Elseng"},{"code":"mrg","name":"Mising"},{"code":"mrh","name":"Mara Chin"},{"code":"mri","name":"Maori"},{"code":"mrj","name":"Western Mari"},{"code":"mrk","name":"Hmwaveke"},{"code":"mrl","name":"Mortlockese"},{"code":"mrm","name":"Merlav"},{"code":"mrn","name":"Cheke Holo"},{"code":"mro","name":"Mru"},{"code":"mrp","name":"Morouas"},{"code":"mrq","name":"North Marquesan"},{"code":"mrr","name":"Maria (India)"},{"code":"mrs","name":"Maragus"},{"code":"mrt","name":"Marghi Central"},{"code":"mru","name":"Mono (Cameroon)"},{"code":"mrv","name":"Mangareva"},{"code":"mrw","name":"Maranao"},{"code":"mrx","name":"Dineor"},{"code":"mry","name":"Mandaya"},{"code":"mrz","name":"Marind"},{"code":"msa","name":"Malay"},{"code":"msb","name":"Masbatenyo"},{"code":"msc","name":"Sankaran Maninka"},{"code":"msd","name":"Yucatec Maya Sign Language"},{"code":"mse","name":"Musey"},{"code":"msf","name":"Mekwei"},{"code":"msg","name":"Moraid"},{"code":"msh","name":"Masikoro Malagasy"},{"code":"msi","name":"Sabah Malay"},{"code":"msj","name":"Ma (Democratic Republic of Congo)"},{"code":"msk","name":"Mansaka"},{"code":"msl","name":"Molof"},{"code":"msm","name":"Agusan Manobo"},{"code":"msn","name":"Vurรซs"},{"code":"mso","name":"Mombum"},{"code":"msp","name":"Maritsauรก"},{"code":"msq","name":"Caac"},{"code":"msr","name":"Mongolian Sign Language"},{"code":"mss","name":"West Masela"},{"code":"msu","name":"Musom"},{"code":"msv","name":"Maslam"},{"code":"msw","name":"Mansoanka"},{"code":"msx","name":"Moresada"},{"code":"msy","name":"Aruamu"},{"code":"msz","name":"Momare"},{"code":"mta","name":"Cotabato Manobo"},{"code":"mtb","name":"Anyin Morofo"},{"code":"mtc","name":"Munit"},{"code":"mtd","name":"Mualang"},{"code":"mte","name":"Mono (Solomon Islands)"},{"code":"mtf","name":"Murik (Papua New Guinea)"},{"code":"mtg","name":"Una"},{"code":"mth","name":"Munggui"},{"code":"mti","name":"Maiwa (Papua New Guinea)"},{"code":"mtj","name":"Moskona"},{"code":"mtk","name":"Mbe'"},{"code":"mtl","name":"Montol"},{"code":"mtm","name":"Mator"},{"code":"mtn","name":"Matagalpa"},{"code":"mto","name":"Totontepec Mixe"},{"code":"mtp","name":"Wichรญ Lhamtรฉs Nocten"},{"code":"mtq","name":"Muong"},{"code":"mtr","name":"Mewari"},{"code":"mts","name":"Yora"},{"code":"mtt","name":"Mota"},{"code":"mtu","name":"Tututepec Mixtec"},{"code":"mtv","name":"Asaro'o"},{"code":"mtw","name":"Southern Binukidnon"},{"code":"mtx","name":"Tidaรก Mixtec"},{"code":"mty","name":"Nabi"},{"code":"mua","name":"Mundang"},{"code":"mub","name":"Mubi"},{"code":"muc","name":"Ajumbu"},{"code":"mud","name":"Mednyj Aleut"},{"code":"mue","name":"Media Lengua"},{"code":"mug","name":"Musgu"},{"code":"muh","name":"Mรผndรผ"},{"code":"mui","name":"Musi"},{"code":"muj","name":"Mabire"},{"code":"muk","name":"Mugom"},{"code":"mul","name":"Multiple languages"},{"code":"mum","name":"Maiwala"},{"code":"muo","name":"Nyong"},{"code":"mup","name":"Malvi"},{"code":"muq","name":"Eastern Xiangxi Miao"},{"code":"mur","name":"Murle"},{"code":"mus","name":"Creek"},{"code":"mut","name":"Western Muria"},{"code":"muu","name":"Yaaku"},{"code":"muv","name":"Muthuvan"},{"code":"mux","name":"Bo-Ung"},{"code":"muy","name":"Muyang"},{"code":"muz","name":"Mursi"},{"code":"mva","name":"Manam"},{"code":"mvb","name":"Mattole"},{"code":"mvd","name":"Mamboru"},{"code":"mve","name":"Marwari (Pakistan)"},{"code":"mvf","name":"Peripheral Mongolian"},{"code":"mvg","name":"Yucuaรฑe Mixtec"},{"code":"mvh","name":"Mulgi"},{"code":"mvi","name":"Miyako"},{"code":"mvk","name":"Mekmek"},{"code":"mvl","name":"Mbara (Australia)"},{"code":"mvn","name":"Minaveha"},{"code":"mvo","name":"Marovo"},{"code":"mvp","name":"Duri"},{"code":"mvq","name":"Moere"},{"code":"mvr","name":"Marau"},{"code":"mvs","name":"Massep"},{"code":"mvt","name":"Mpotovoro"},{"code":"mvu","name":"Marfa"},{"code":"mvv","name":"Tagal Murut"},{"code":"mvw","name":"Machinga"},{"code":"mvx","name":"Meoswar"},{"code":"mvy","name":"Indus Kohistani"},{"code":"mvz","name":"Mesqan"},{"code":"mwa","name":"Mwatebu"},{"code":"mwb","name":"Juwal"},{"code":"mwc","name":"Are"},{"code":"mwe","name":"Mwera (Chimwera)"},{"code":"mwf","name":"Murrinh-Patha"},{"code":"mwg","name":"Aiklep"},{"code":"mwh","name":"Mouk-Aria"},{"code":"mwi","name":"Labo"},{"code":"mwk","name":"Kita Maninkakan"},{"code":"mwl","name":"Mirandese"},{"code":"mwm","name":"Sar"},{"code":"mwn","name":"Nyamwanga"},{"code":"mwo","name":"Central Maewo"},{"code":"mwp","name":"Kala Lagaw Ya"},{"code":"mwq","name":"Mรผn Chin"},{"code":"mwr","name":"Marwari"},{"code":"mws","name":"Mwimbi-Muthambi"},{"code":"mwt","name":"Moken"},{"code":"mwu","name":"Mittu"},{"code":"mwv","name":"Mentawai"},{"code":"mww","name":"Hmong Daw"},{"code":"mwz","name":"Moingi"},{"code":"mxa","name":"Northwest Oaxaca Mixtec"},{"code":"mxb","name":"Tezoatlรกn Mixtec"},{"code":"mxc","name":"Manyika"},{"code":"mxd","name":"Modang"},{"code":"mxe","name":"Mele-Fila"},{"code":"mxf","name":"Malgbe"},{"code":"mxg","name":"Mbangala"},{"code":"mxh","name":"Mvuba"},{"code":"mxi","name":"Mozarabic"},{"code":"mxj","name":"Geman Deng"},{"code":"mxk","name":"Monumbo"},{"code":"mxl","name":"Maxi Gbe"},{"code":"mxm","name":"Meramera"},{"code":"mxn","name":"Moi (Indonesia)"},{"code":"mxo","name":"Mbowe"},{"code":"mxp","name":"Tlahuitoltepec Mixe"},{"code":"mxq","name":"Juquila Mixe"},{"code":"mxr","name":"Murik (Malaysia)"},{"code":"mxs","name":"Huitepec Mixtec"},{"code":"mxt","name":"Jamiltepec Mixtec"},{"code":"mxu","name":"Mada (Cameroon)"},{"code":"mxv","name":"Metlatรณnoc Mixtec"},{"code":"mxw","name":"Namo"},{"code":"mxx","name":"Mahou"},{"code":"mxy","name":"Southeastern Nochixtlรกn Mixtec"},{"code":"mxz","name":"Central Masela"},{"code":"mya","name":"Burmese"},{"code":"myb","name":"Mbay"},{"code":"myc","name":"Mayeka"},{"code":"mye","name":"Myene"},{"code":"myf","name":"Bambassi"},{"code":"myg","name":"Manta"},{"code":"myh","name":"Makah"},{"code":"myj","name":"Mangayat"},{"code":"myk","name":"Mamara Senoufo"},{"code":"myl","name":"Moma"},{"code":"mym","name":"Me'en"},{"code":"myo","name":"Anfillo"},{"code":"myp","name":"Pirahรฃ"},{"code":"myr","name":"Muniche"},{"code":"mys","name":"Mesmes"},{"code":"myu","name":"Mundurukรบ"},{"code":"myv","name":"Erzya"},{"code":"myw","name":"Muyuw"},{"code":"myx","name":"Masaaba"},{"code":"myy","name":"Macuna"},{"code":"myz","name":"Classical Mandaic"},{"code":"mza","name":"Santa Marรญa Zacatepec Mixtec"},{"code":"mzb","name":"Tumzabt"},{"code":"mzc","name":"Madagascar Sign Language"},{"code":"mzd","name":"Malimba"},{"code":"mze","name":"Morawa"},{"code":"mzg","name":"Monastic Sign Language"},{"code":"mzh","name":"Wichรญ Lhamtรฉs Gรผisnay"},{"code":"mzi","name":"Ixcatlรกn Mazatec"},{"code":"mzj","name":"Manya"},{"code":"mzk","name":"Nigeria Mambila"},{"code":"mzl","name":"Mazatlรกn Mixe"},{"code":"mzm","name":"Mumuye"},{"code":"mzn","name":"Mazanderani"},{"code":"mzo","name":"Matipuhy"},{"code":"mzp","name":"Movima"},{"code":"mzq","name":"Mori Atas"},{"code":"mzr","name":"Marรบbo"},{"code":"mzs","name":"Macanese"},{"code":"mzt","name":"Mintil"},{"code":"mzu","name":"Inapang"},{"code":"mzv","name":"Manza"},{"code":"mzw","name":"Deg"},{"code":"mzx","name":"Mawayana"},{"code":"mzy","name":"Mozambican Sign Language"},{"code":"mzz","name":"Maiadomu"},{"code":"naa","name":"Namla"},{"code":"nab","name":"Southern Nambikuรกra"},{"code":"nac","name":"Narak"},{"code":"nae","name":"Naka'ela"},{"code":"naf","name":"Nabak"},{"code":"nag","name":"Naga Pidgin"},{"code":"naj","name":"Nalu"},{"code":"nak","name":"Nakanai"},{"code":"nal","name":"Nalik"},{"code":"nam","name":"Ngan'gityemerri"},{"code":"nan","name":"Min Nan Chinese"},{"code":"nao","name":"Naaba"},{"code":"nap","name":"Neapolitan"},{"code":"naq","name":"Khoekhoe"},{"code":"nar","name":"Iguta"},{"code":"nas","name":"Naasioi"},{"code":"nat","name":"Caฬฑhungwaฬฑryaฬฑ"},{"code":"nau","name":"Nauru"},{"code":"nav","name":"Navaho"},{"code":"naw","name":"Nawuri"},{"code":"nax","name":"Nakwi"},{"code":"nay","name":"Ngarrindjeri"},{"code":"naz","name":"Coatepec Nahuatl"},{"code":"nba","name":"Nyemba"},{"code":"nbb","name":"Ndoe"},{"code":"nbc","name":"Chang Naga"},{"code":"nbd","name":"Ngbinda"},{"code":"nbe","name":"Konyak Naga"},{"code":"nbg","name":"Nagarchal"},{"code":"nbh","name":"Ngamo"},{"code":"nbi","name":"Mao Naga"},{"code":"nbj","name":"Ngarinyman"},{"code":"nbk","name":"Nake"},{"code":"nbl","name":"South Ndebele"},{"code":"nbm","name":"Ngbaka Ma'bo"},{"code":"nbn","name":"Kuri"},{"code":"nbo","name":"Nkukoli"},{"code":"nbp","name":"Nnam"},{"code":"nbq","name":"Nggem"},{"code":"nbr","name":"Numana"},{"code":"nbs","name":"Namibian Sign Language"},{"code":"nbt","name":"Na"},{"code":"nbu","name":"Rongmei Naga"},{"code":"nbv","name":"Ngamambo"},{"code":"nbw","name":"Southern Ngbandi"},{"code":"nby","name":"Ningera"},{"code":"nca","name":"Iyo"},{"code":"ncb","name":"Central Nicobarese"},{"code":"ncc","name":"Ponam"},{"code":"ncd","name":"Nachering"},{"code":"nce","name":"Yale"},{"code":"ncf","name":"Notsi"},{"code":"ncg","name":"Nisga'a"},{"code":"nch","name":"Central Huasteca Nahuatl"},{"code":"nci","name":"Classical Nahuatl"},{"code":"ncj","name":"Northern Puebla Nahuatl"},{"code":"nck","name":"Na-kara"},{"code":"ncl","name":"Michoacรกn Nahuatl"},{"code":"ncm","name":"Nambo"},{"code":"ncn","name":"Nauna"},{"code":"nco","name":"Sibe"},{"code":"ncq","name":"Northern Katang"},{"code":"ncr","name":"Ncane"},{"code":"ncs","name":"Nicaraguan Sign Language"},{"code":"nct","name":"Chothe Naga"},{"code":"ncu","name":"Chumburung"},{"code":"ncx","name":"Central Puebla Nahuatl"},{"code":"ncz","name":"Natchez"},{"code":"nda","name":"Ndasa"},{"code":"ndb","name":"Kenswei Nsei"},{"code":"ndc","name":"Ndau"},{"code":"ndd","name":"Nde-Nsele-Nta"},{"code":"nde","name":"North Ndebele"},{"code":"ndf","name":"Nadruvian"},{"code":"ndg","name":"Ndengereko"},{"code":"ndh","name":"Ndali"},{"code":"ndi","name":"Samba Leko"},{"code":"ndj","name":"Ndamba"},{"code":"ndk","name":"Ndaka"},{"code":"ndl","name":"Ndolo"},{"code":"ndm","name":"Ndam"},{"code":"ndn","name":"Ngundi"},{"code":"ndo","name":"Ndonga"},{"code":"ndp","name":"Ndo"},{"code":"ndq","name":"Ndombe"},{"code":"ndr","name":"Ndoola"},{"code":"nds","name":"Low German"},{"code":"ndt","name":"Ndunga"},{"code":"ndu","name":"Dugun"},{"code":"ndv","name":"Ndut"},{"code":"ndw","name":"Ndobo"},{"code":"ndx","name":"Nduga"},{"code":"ndy","name":"Lutos"},{"code":"ndz","name":"Ndogo"},{"code":"nea","name":"Eastern Ngad'a"},{"code":"neb","name":"Toura (Cรดte d'Ivoire)"},{"code":"nec","name":"Nedebang"},{"code":"ned","name":"Nde-Gbite"},{"code":"nee","name":"Nรชlรชmwa-Nixumwak"},{"code":"nef","name":"Nefamese"},{"code":"neg","name":"Negidal"},{"code":"neh","name":"Nyenkha"},{"code":"nei","name":"Neo-Hittite"},{"code":"nej","name":"Neko"},{"code":"nek","name":"Neku"},{"code":"nem","name":"Nemi"},{"code":"nen","name":"Nengone"},{"code":"neo","name":"Nรก-Meo"},{"code":"nep","name":"Nepali"},{"code":"neq","name":"North Central Mixe"},{"code":"ner","name":"Yahadian"},{"code":"nes","name":"Bhoti Kinnauri"},{"code":"net","name":"Nete"},{"code":"neu","name":"Neo"},{"code":"nev","name":"Nyaheun"},{"code":"new","name":"Nepal Bhasa"},{"code":"nex","name":"Neme"},{"code":"ney","name":"Neyo"},{"code":"nez","name":"Nez Perce"},{"code":"nfa","name":"Dhao"},{"code":"nfd","name":"Ahwai"},{"code":"nfl","name":"ร„iwoo"},{"code":"nfr","name":"Nafaanra"},{"code":"nfu","name":"Mfumte"},{"code":"nga","name":"Ngbaka"},{"code":"ngb","name":"Northern Ngbandi"},{"code":"ngc","name":"Ngombe (Democratic Republic of Congo)"},{"code":"ngd","name":"Ngando (Central African Republic)"},{"code":"nge","name":"Ngemba"},{"code":"ngg","name":"Ngbaka Manza"},{"code":"ngh","name":"Nวng"},{"code":"ngi","name":"Ngizim"},{"code":"ngj","name":"Ngie"},{"code":"ngk","name":"Dalabon"},{"code":"ngl","name":"Lomwe"},{"code":"ngm","name":"Ngatik Men's Creole"},{"code":"ngn","name":"Ngwo"},{"code":"ngp","name":"Ngulu"},{"code":"ngq","name":"Ngoreme"},{"code":"ngr","name":"Engdewu"},{"code":"ngs","name":"Gvoko"},{"code":"ngt","name":"Kriang"},{"code":"ngu","name":"Guerrero Nahuatl"},{"code":"ngv","name":"Nagumi"},{"code":"ngw","name":"Ngwaba"},{"code":"ngx","name":"Nggwahyi"},{"code":"ngy","name":"Tibea"},{"code":"ngz","name":"Ngungwel"},{"code":"nha","name":"Nhanda"},{"code":"nhb","name":"Beng"},{"code":"nhc","name":"Tabasco Nahuatl"},{"code":"nhd","name":"Ava Guaranรญ"},{"code":"nhe","name":"Eastern Huasteca Nahuatl"},{"code":"nhf","name":"Nhuwala"},{"code":"nhg","name":"Tetelcingo Nahuatl"},{"code":"nhh","name":"Nahari"},{"code":"nhi","name":"Zacatlรกn-Ahuacatlรกn-Tepetzintla Nahuatl"},{"code":"nhk","name":"Isthmus-Cosoleacaque Nahuatl"},{"code":"nhm","name":"Morelos Nahuatl"},{"code":"nhn","name":"Central Nahuatl"},{"code":"nho","name":"Takuu"},{"code":"nhp","name":"Isthmus-Pajapan Nahuatl"},{"code":"nhq","name":"Huaxcaleca Nahuatl"},{"code":"nhr","name":"Naro"},{"code":"nht","name":"Ometepec Nahuatl"},{"code":"nhu","name":"Noone"},{"code":"nhv","name":"Temascaltepec Nahuatl"},{"code":"nhw","name":"Western Huasteca Nahuatl"},{"code":"nhx","name":"Isthmus-Mecayapan Nahuatl"},{"code":"nhy","name":"Northern Oaxaca Nahuatl"},{"code":"nhz","name":"Santa Marรญa La Alta Nahuatl"},{"code":"nia","name":"Nias"},{"code":"nib","name":"Nakame"},{"code":"nid","name":"Ngandi"},{"code":"nie","name":"Niellim"},{"code":"nif","name":"Nek"},{"code":"nig","name":"Ngalakgan"},{"code":"nih","name":"Nyiha (Tanzania)"},{"code":"nii","name":"Nii"},{"code":"nij","name":"Ngaju"},{"code":"nik","name":"Southern Nicobarese"},{"code":"nil","name":"Nila"},{"code":"nim","name":"Nilamba"},{"code":"nin","name":"Ninzo"},{"code":"nio","name":"Nganasan"},{"code":"niq","name":"Nandi"},{"code":"nir","name":"Nimboran"},{"code":"nis","name":"Nimi"},{"code":"nit","name":"Southeastern Kolami"},{"code":"niu","name":"Niuean"},{"code":"niv","name":"Gilyak"},{"code":"niw","name":"Nimo"},{"code":"nix","name":"Hema"},{"code":"niy","name":"Ngiti"},{"code":"niz","name":"Ningil"},{"code":"nja","name":"Nzanyi"},{"code":"njb","name":"Nocte Naga"},{"code":"njd","name":"Ndonde Hamba"},{"code":"njh","name":"Lotha Naga"},{"code":"nji","name":"Gudanji"},{"code":"njj","name":"Njen"},{"code":"njl","name":"Njalgulgule"},{"code":"njm","name":"Angami Naga"},{"code":"njn","name":"Liangmai Naga"},{"code":"njo","name":"Ao Naga"},{"code":"njr","name":"Njerep"},{"code":"njs","name":"Nisa"},{"code":"njt","name":"Ndyuka-Trio Pidgin"},{"code":"nju","name":"Ngadjunmaya"},{"code":"njx","name":"Kunyi"},{"code":"njy","name":"Njyem"},{"code":"njz","name":"Nyishi"},{"code":"nka","name":"Nkoya"},{"code":"nkb","name":"Khoibu Naga"},{"code":"nkc","name":"Nkongho"},{"code":"nkd","name":"Koireng"},{"code":"nke","name":"Duke"},{"code":"nkf","name":"Inpui Naga"},{"code":"nkg","name":"Nekgini"},{"code":"nkh","name":"Khezha Naga"},{"code":"nki","name":"Thangal Naga"},{"code":"nkj","name":"Nakai"},{"code":"nkk","name":"Nokuku"},{"code":"nkm","name":"Namat"},{"code":"nkn","name":"Nkangala"},{"code":"nko","name":"Nkonya"},{"code":"nkp","name":"Niuatoputapu"},{"code":"nkq","name":"Nkami"},{"code":"nkr","name":"Nukuoro"},{"code":"nks","name":"North Asmat"},{"code":"nkt","name":"Nyika (Tanzania)"},{"code":"nku","name":"Bouna Kulango"},{"code":"nkv","name":"Nyika (Malawi and Zambia)"},{"code":"nkw","name":"Nkutu"},{"code":"nkx","name":"Nkoroo"},{"code":"nkz","name":"Nkari"},{"code":"nla","name":"Ngombale"},{"code":"nlc","name":"Nalca"},{"code":"nld","name":"Dutch"},{"code":"nle","name":"East Nyala"},{"code":"nlg","name":"Gela"},{"code":"nli","name":"Grangali"},{"code":"nlj","name":"Nyali"},{"code":"nlk","name":"Ninia Yali"},{"code":"nll","name":"Nihali"},{"code":"nlm","name":"Mankiyali"},{"code":"nlo","name":"Ngul"},{"code":"nlq","name":"Lao Naga"},{"code":"nlu","name":"Nchumbulu"},{"code":"nlv","name":"Orizaba Nahuatl"},{"code":"nlw","name":"Walangama"},{"code":"nlx","name":"Nahali"},{"code":"nly","name":"Nyamal"},{"code":"nlz","name":"Nalรถgo"},{"code":"nma","name":"Maram Naga"},{"code":"nmb","name":"Big Nambas"},{"code":"nmc","name":"Ngam"},{"code":"nmd","name":"Ndumu"},{"code":"nme","name":"Mzieme Naga"},{"code":"nmf","name":"Tangkhul Naga (India)"},{"code":"nmg","name":"Kwasio"},{"code":"nmh","name":"Monsang Naga"},{"code":"nmi","name":"Nyam"},{"code":"nmj","name":"Ngombe (Central African Republic)"},{"code":"nmk","name":"Namakura"},{"code":"nml","name":"Ndemli"},{"code":"nmm","name":"Manangba"},{"code":"nmn","name":"วƒXรณรต"},{"code":"nmo","name":"Moyon Naga"},{"code":"nmp","name":"Nimanbur"},{"code":"nmq","name":"Nambya"},{"code":"nmr","name":"Nimbari"},{"code":"nms","name":"Letemboi"},{"code":"nmt","name":"Namonuito"},{"code":"nmu","name":"Northeast Maidu"},{"code":"nmv","name":"Ngamini"},{"code":"nmw","name":"Nimoa"},{"code":"nmx","name":"Nama (Papua New Guinea)"},{"code":"nmy","name":"Namuyi"},{"code":"nmz","name":"Nawdm"},{"code":"nna","name":"Nyangumarta"},{"code":"nnb","name":"Nande"},{"code":"nnc","name":"Nancere"},{"code":"nnd","name":"West Ambae"},{"code":"nne","name":"Ngandyera"},{"code":"nnf","name":"Ngaing"},{"code":"nng","name":"Maring Naga"},{"code":"nnh","name":"Ngiemboon"},{"code":"nni","name":"North Nuaulu"},{"code":"nnj","name":"Nyangatom"},{"code":"nnk","name":"Nankina"},{"code":"nnl","name":"Northern Rengma Naga"},{"code":"nnm","name":"Namia"},{"code":"nnn","name":"Ngete"},{"code":"nno","name":"Norwegian Nynorsk"},{"code":"nnp","name":"Wancho Naga"},{"code":"nnq","name":"Ngindo"},{"code":"nnr","name":"Narungga"},{"code":"nnt","name":"Nanticoke"},{"code":"nnu","name":"Dwang"},{"code":"nnv","name":"Nugunu (Australia)"},{"code":"nnw","name":"Southern Nuni"},{"code":"nny","name":"Nyangga"},{"code":"nnz","name":"Nda'nda'"},{"code":"noa","name":"Woun Meu"},{"code":"nob","name":"Norwegian Bokmรฅl"},{"code":"noc","name":"Nuk"},{"code":"nod","name":"Northern Thai"},{"code":"noe","name":"Nimadi"},{"code":"nof","name":"Nomane"},{"code":"nog","name":"Nogai"},{"code":"noh","name":"Nomu"},{"code":"noi","name":"Noiri"},{"code":"noj","name":"Nonuya"},{"code":"nok","name":"Nooksack"},{"code":"nol","name":"Nomlaki"},{"code":"nom","name":"Nocamรกn"},{"code":"non","name":"Old Norse"},{"code":"nop","name":"Numanggang"},{"code":"noq","name":"Ngongo"},{"code":"nor","name":"Norwegian"},{"code":"nos","name":"Eastern Nisu"},{"code":"not","name":"Nomatsiguenga"},{"code":"nou","name":"Ewage-Notu"},{"code":"nov","name":"Novial"},{"code":"now","name":"Nyambo"},{"code":"noy","name":"Noy"},{"code":"noz","name":"Nayi"},{"code":"npa","name":"Nar Phu"},{"code":"npb","name":"Nupbikha"},{"code":"npg","name":"Ponyo-Gongwang Naga"},{"code":"nph","name":"Phom Naga"},{"code":"npi","name":"Nepali (individual language)"},{"code":"npl","name":"Southeastern Puebla Nahuatl"},{"code":"npn","name":"Mondropolon"},{"code":"npo","name":"Pochuri Naga"},{"code":"nps","name":"Nipsan"},{"code":"npu","name":"Puimei Naga"},{"code":"npx","name":"Noipx"},{"code":"npy","name":"Napu"},{"code":"nqg","name":"Southern Nago"},{"code":"nqk","name":"Kura Ede Nago"},{"code":"nql","name":"Ngendelengo"},{"code":"nqm","name":"Ndom"},{"code":"nqn","name":"Nen"},{"code":"nqo","name":"N'Ko"},{"code":"nqq","name":"Kyan-Karyaw Naga"},{"code":"nqt","name":"Nteng"},{"code":"nqy","name":"Akyaung Ari Naga"},{"code":"nra","name":"Ngom"},{"code":"nrb","name":"Nara"},{"code":"nrc","name":"Noric"},{"code":"nre","name":"Southern Rengma Naga"},{"code":"nrf","name":"Guernรฉsiais"},{"code":"nrg","name":"Narango"},{"code":"nri","name":"Chokri Naga"},{"code":"nrk","name":"Ngarla"},{"code":"nrl","name":"Ngarluma"},{"code":"nrm","name":"Narom"},{"code":"nrn","name":"Norn"},{"code":"nrp","name":"North Picene"},{"code":"nrr","name":"Nora"},{"code":"nrt","name":"Northern Kalapuya"},{"code":"nru","name":"Narua"},{"code":"nrx","name":"Ngurmbur"},{"code":"nrz","name":"Lala"},{"code":"nsa","name":"Sangtam Naga"},{"code":"nsb","name":"Lower Nossob"},{"code":"nsc","name":"Nshi"},{"code":"nsd","name":"Southern Nisu"},{"code":"nse","name":"Nsenga"},{"code":"nsf","name":"Northwestern Nisu"},{"code":"nsg","name":"Ngasa"},{"code":"nsh","name":"Ngoshie"},{"code":"nsi","name":"Nigerian Sign Language"},{"code":"nsk","name":"Naskapi"},{"code":"nsl","name":"Norwegian Sign Language"},{"code":"nsm","name":"Sumi Naga"},{"code":"nsn","name":"Nehan"},{"code":"nso","name":"Northern Sotho"},{"code":"nsp","name":"Nepalese Sign Language"},{"code":"nsq","name":"Northern Sierra Miwok"},{"code":"nsr","name":"Maritime Sign Language"},{"code":"nss","name":"Nali"},{"code":"nst","name":"Tase Naga"},{"code":"nsu","name":"Sierra Negra Nahuatl"},{"code":"nsv","name":"Southwestern Nisu"},{"code":"nsw","name":"Navut"},{"code":"nsx","name":"Nsongo"},{"code":"nsy","name":"Nasal"},{"code":"nsz","name":"Nisenan"},{"code":"ntd","name":"Northern Tidung"},{"code":"nte","name":"Nathembo"},{"code":"ntg","name":"Ngantangarra"},{"code":"nti","name":"Natioro"},{"code":"ntj","name":"Ngaanyatjarra"},{"code":"ntk","name":"Ikoma-Nata-Isenye"},{"code":"ntm","name":"Nateni"},{"code":"nto","name":"Ntomba"},{"code":"ntp","name":"Northern Tepehuan"},{"code":"ntr","name":"Delo"},{"code":"ntu","name":"Natรผgu"},{"code":"ntw","name":"Nottoway"},{"code":"ntx","name":"Tangkhul Naga (Myanmar)"},{"code":"nty","name":"Mantsi"},{"code":"ntz","name":"Natanzi"},{"code":"nua","name":"Yuanga"},{"code":"nuc","name":"Nukuini"},{"code":"nud","name":"Ngala"},{"code":"nue","name":"Ngundu"},{"code":"nuf","name":"Nusu"},{"code":"nug","name":"Nungali"},{"code":"nuh","name":"Ndunda"},{"code":"nui","name":"Ngumbi"},{"code":"nuj","name":"Nyole"},{"code":"nuk","name":"Nuuchahnulth"},{"code":"nul","name":"Nusa Laut"},{"code":"num","name":"Niuafo'ou"},{"code":"nun","name":"Anong"},{"code":"nuo","name":"Nguรดn"},{"code":"nup","name":"Nupe-Nupe-Tako"},{"code":"nuq","name":"Nukumanu"},{"code":"nur","name":"Nukuria"},{"code":"nus","name":"Nuer"},{"code":"nut","name":"Nung (Viet Nam)"},{"code":"nuu","name":"Ngbundu"},{"code":"nuv","name":"Northern Nuni"},{"code":"nuw","name":"Nguluwan"},{"code":"nux","name":"Mehek"},{"code":"nuy","name":"Nunggubuyu"},{"code":"nuz","name":"Tlamacazapa Nahuatl"},{"code":"nvh","name":"Nasarian"},{"code":"nvm","name":"Namiae"},{"code":"nvo","name":"Nyokon"},{"code":"nwa","name":"Nawathinehena"},{"code":"nwb","name":"Nyabwa"},{"code":"nwc","name":"Classical Nepal Bhasa"},{"code":"nwe","name":"Ngwe"},{"code":"nwg","name":"Ngayawung"},{"code":"nwi","name":"Southwest Tanna"},{"code":"nwm","name":"Nyamusa-Molo"},{"code":"nwo","name":"Nauo"},{"code":"nwr","name":"Nawaru"},{"code":"nwx","name":"Middle Newar"},{"code":"nwy","name":"Nottoway-Meherrin"},{"code":"nxa","name":"Nauete"},{"code":"nxd","name":"Ngando (Democratic Republic of Congo)"},{"code":"nxe","name":"Nage"},{"code":"nxg","name":"Ngad'a"},{"code":"nxi","name":"Nindi"},{"code":"nxk","name":"Koki Naga"},{"code":"nxl","name":"South Nuaulu"},{"code":"nxm","name":"Numidian"},{"code":"nxn","name":"Ngawun"},{"code":"nxo","name":"Ndambomo"},{"code":"nxq","name":"Naxi"},{"code":"nxr","name":"Ninggerum"},{"code":"nxx","name":"Nafri"},{"code":"nya","name":"Chewa"},{"code":"nyb","name":"Nyangbo"},{"code":"nyc","name":"Nyanga-li"},{"code":"nyd","name":"Nyore"},{"code":"nye","name":"Nyengo"},{"code":"nyf","name":"Giryama"},{"code":"nyg","name":"Nyindu"},{"code":"nyh","name":"Nyikina"},{"code":"nyi","name":"Ama (Sudan)"},{"code":"nyj","name":"Nyanga"},{"code":"nyk","name":"Nyaneka"},{"code":"nyl","name":"Nyeu"},{"code":"nym","name":"Nyamwezi"},{"code":"nyn","name":"Nyankole"},{"code":"nyo","name":"Nyoro"},{"code":"nyp","name":"Nyang'i"},{"code":"nyq","name":"Nayini"},{"code":"nyr","name":"Nyiha (Malawi)"},{"code":"nys","name":"Nyungar"},{"code":"nyt","name":"Nyawaygi"},{"code":"nyu","name":"Nyungwe"},{"code":"nyv","name":"Nyulnyul"},{"code":"nyw","name":"Nyaw"},{"code":"nyx","name":"Nganyaywana"},{"code":"nyy","name":"Nyakyusa-Ngonde"},{"code":"nza","name":"Tigon Mbembe"},{"code":"nzb","name":"Njebi"},{"code":"nzd","name":"Nzadi"},{"code":"nzi","name":"Nzima"},{"code":"nzk","name":"Nzakara"},{"code":"nzm","name":"Zeme Naga"},{"code":"nzs","name":"New Zealand Sign Language"},{"code":"nzu","name":"Teke-Nzikou"},{"code":"nzy","name":"Nzakambay"},{"code":"nzz","name":"Nanga Dama Dogon"},{"code":"oaa","name":"Orok"},{"code":"oac","name":"Oroch"},{"code":"oar","name":"Ancient Aramaic (up to 700 BCE)"},{"code":"oav","name":"Old Avar"},{"code":"obi","name":"Obispeรฑo"},{"code":"obk","name":"Southern Bontok"},{"code":"obl","name":"Oblo"},{"code":"obm","name":"Moabite"},{"code":"obo","name":"Obo Manobo"},{"code":"obr","name":"Old Burmese"},{"code":"obt","name":"Old Breton"},{"code":"obu","name":"Obulom"},{"code":"oca","name":"Ocaina"},{"code":"och","name":"Old Chinese"},{"code":"oci","name":"Occitan (post 1500)"},{"code":"ocm","name":"Old Cham"},{"code":"oco","name":"Old Cornish"},{"code":"ocu","name":"Atzingo Matlatzinca"},{"code":"oda","name":"Odut"},{"code":"odk","name":"Od"},{"code":"odt","name":"Old Dutch"},{"code":"odu","name":"Odual"},{"code":"ofo","name":"Ofo"},{"code":"ofs","name":"Old Frisian"},{"code":"ofu","name":"Efutop"},{"code":"ogb","name":"Ogbia"},{"code":"ogc","name":"Ogbah"},{"code":"oge","name":"Old Georgian"},{"code":"ogg","name":"Ogbogolo"},{"code":"ogo","name":"Khana"},{"code":"ogu","name":"Ogbronuagum"},{"code":"oht","name":"Old Hittite"},{"code":"ohu","name":"Old Hungarian"},{"code":"oia","name":"Oirata"},{"code":"oin","name":"Inebu One"},{"code":"ojb","name":"Northwestern Ojibwa"},{"code":"ojc","name":"Central Ojibwa"},{"code":"ojg","name":"Eastern Ojibwa"},{"code":"oji","name":"Ojibwa"},{"code":"ojp","name":"Old Japanese"},{"code":"ojs","name":"Severn Ojibwa"},{"code":"ojv","name":"Ontong Java"},{"code":"ojw","name":"Western Ojibwa"},{"code":"oka","name":"Okanagan"},{"code":"okb","name":"Okobo"},{"code":"okc","name":"Kobo"},{"code":"okd","name":"Okodia"},{"code":"oke","name":"Okpe (Southwestern Edo)"},{"code":"okg","name":"Koko Babangk"},{"code":"okh","name":"Koresh-e Rostam"},{"code":"oki","name":"Okiek"},{"code":"okj","name":"Oko-Juwoi"},{"code":"okk","name":"Kwamtim One"},{"code":"okl","name":"Old Kentish Sign Language"},{"code":"okm","name":"Middle Korean (10th-16th cent.)"},{"code":"okn","name":"Oki-No-Erabu"},{"code":"oko","name":"Old Korean (3rd-9th cent.)"},{"code":"okr","name":"Kirike"},{"code":"oks","name":"Oko-Eni-Osayen"},{"code":"oku","name":"Oku"},{"code":"okv","name":"Orokaiva"},{"code":"okx","name":"Okpe (Northwestern Edo)"},{"code":"okz","name":"Old Khmer"},{"code":"ola","name":"Walungge"},{"code":"old","name":"Mochi"},{"code":"ole","name":"Olekha"},{"code":"olk","name":"Olkol"},{"code":"olm","name":"Oloma"},{"code":"olo","name":"Livvi"},{"code":"olr","name":"Olrat"},{"code":"olt","name":"Old Lithuanian"},{"code":"olu","name":"Kuvale"},{"code":"oma","name":"Omaha-Ponca"},{"code":"omb","name":"East Ambae"},{"code":"omc","name":"Mochica"},{"code":"omg","name":"Omagua"},{"code":"omi","name":"Omi"},{"code":"omk","name":"Omok"},{"code":"oml","name":"Ombo"},{"code":"omn","name":"Minoan"},{"code":"omo","name":"Utarmbung"},{"code":"omp","name":"Old Manipuri"},{"code":"omr","name":"Old Marathi"},{"code":"omt","name":"Omotik"},{"code":"omu","name":"Omurano"},{"code":"omw","name":"South Tairora"},{"code":"omx","name":"Old Mon"},{"code":"omy","name":"Old Malay"},{"code":"ona","name":"Ona"},{"code":"onb","name":"Lingao"},{"code":"one","name":"Oneida"},{"code":"ong","name":"Olo"},{"code":"oni","name":"Onin"},{"code":"onj","name":"Onjob"},{"code":"onk","name":"Kabore One"},{"code":"onn","name":"Onobasulu"},{"code":"ono","name":"Onondaga"},{"code":"onp","name":"Sartang"},{"code":"onr","name":"Northern One"},{"code":"ons","name":"Ono"},{"code":"ont","name":"Ontenu"},{"code":"onu","name":"Unua"},{"code":"onw","name":"Old Nubian"},{"code":"onx","name":"Onin Based Pidgin"},{"code":"ood","name":"Tohono O'odham"},{"code":"oog","name":"Ong"},{"code":"oon","name":"ร–nge"},{"code":"oor","name":"Oorlams"},{"code":"oos","name":"Old Ossetic"},{"code":"opa","name":"Okpamheri"},{"code":"opk","name":"Kopkaka"},{"code":"opm","name":"Oksapmin"},{"code":"opo","name":"Opao"},{"code":"opt","name":"Opata"},{"code":"opy","name":"Ofayรฉ"},{"code":"ora","name":"Oroha"},{"code":"orc","name":"Orma"},{"code":"ore","name":"Orejรณn"},{"code":"org","name":"Oring"},{"code":"orh","name":"Oroqen"},{"code":"ori","name":"Oriya (macrolanguage)"},{"code":"orm","name":"Oromo"},{"code":"orn","name":"Orang Kanaq"},{"code":"oro","name":"Orokolo"},{"code":"orr","name":"Oruma"},{"code":"ors","name":"Orang Seletar"},{"code":"ort","name":"Adivasi Oriya"},{"code":"oru","name":"Ormuri"},{"code":"orv","name":"Old Russian"},{"code":"orw","name":"Oro Win"},{"code":"orx","name":"Oro"},{"code":"ory","name":"Odia"},{"code":"orz","name":"Ormu"},{"code":"osa","name":"Osage"},{"code":"osc","name":"Oscan"},{"code":"osi","name":"Osing"},{"code":"osn","name":"Old Sundanese"},{"code":"oso","name":"Ososo"},{"code":"osp","name":"Old Spanish"},{"code":"oss","name":"Ossetian"},{"code":"ost","name":"Osatu"},{"code":"osu","name":"Southern One"},{"code":"osx","name":"Old Saxon"},{"code":"ota","name":"Ottoman Turkish (1500-1928)"},{"code":"otb","name":"Old Tibetan"},{"code":"otd","name":"Ot Danum"},{"code":"ote","name":"Mezquital Otomi"},{"code":"oti","name":"Oti"},{"code":"otk","name":"Old Turkish"},{"code":"otl","name":"Tilapa Otomi"},{"code":"otm","name":"Eastern Highland Otomi"},{"code":"otn","name":"Tenango Otomi"},{"code":"otq","name":"Querรฉtaro Otomi"},{"code":"otr","name":"Otoro"},{"code":"ots","name":"Estado de Mรฉxico Otomi"},{"code":"ott","name":"Temoaya Otomi"},{"code":"otu","name":"Otuke"},{"code":"otw","name":"Ottawa"},{"code":"otx","name":"Texcatepec Otomi"},{"code":"oty","name":"Old Tamil"},{"code":"otz","name":"Ixtenco Otomi"},{"code":"oua","name":"Tagargrent"},{"code":"oub","name":"Glio-Oubi"},{"code":"oue","name":"Oune"},{"code":"oui","name":"Old Uighur"},{"code":"oum","name":"Ouma"},{"code":"ovd","name":"Elfdalian"},{"code":"owi","name":"Owiniga"},{"code":"owl","name":"Old Welsh"},{"code":"oyb","name":"Oy"},{"code":"oyd","name":"Oyda"},{"code":"oym","name":"Wayampi"},{"code":"oyy","name":"Oya'oya"},{"code":"ozm","name":"Koonzime"},{"code":"pab","name":"Parecรญs"},{"code":"pac","name":"Pacoh"},{"code":"pad","name":"Paumarรญ"},{"code":"pae","name":"Pagibete"},{"code":"paf","name":"Paranawรกt"},{"code":"pag","name":"Pangasinan"},{"code":"pah","name":"Tenharim"},{"code":"pai","name":"Pe"},{"code":"pak","name":"Parakanรฃ"},{"code":"pal","name":"Pahlavi"},{"code":"pam","name":"Kapampangan"},{"code":"pan","name":"Panjabi"},{"code":"pao","name":"Northern Paiute"},{"code":"pap","name":"Papiamento"},{"code":"paq","name":"Parya"},{"code":"par","name":"Panamint"},{"code":"pas","name":"Papasena"},{"code":"pau","name":"Palauan"},{"code":"pav","name":"Pakaรกsnovos"},{"code":"paw","name":"Pawnee"},{"code":"pax","name":"Pankararรฉ"},{"code":"pay","name":"Pech"},{"code":"paz","name":"Pankararรบ"},{"code":"pbb","name":"Pรกez"},{"code":"pbc","name":"Patamona"},{"code":"pbe","name":"Mezontla Popoloca"},{"code":"pbf","name":"Coyotepec Popoloca"},{"code":"pbg","name":"Paraujano"},{"code":"pbh","name":"E'รฑapa Woromaipu"},{"code":"pbi","name":"Parkwa"},{"code":"pbl","name":"Mak (Nigeria)"},{"code":"pbm","name":"Puebla Mazatec"},{"code":"pbn","name":"Kpasam"},{"code":"pbo","name":"Papel"},{"code":"pbp","name":"Badyara"},{"code":"pbr","name":"Pangwa"},{"code":"pbs","name":"Central Pame"},{"code":"pbt","name":"Southern Pashto"},{"code":"pbu","name":"Northern Pashto"},{"code":"pbv","name":"Pnar"},{"code":"pby","name":"Pyu (Papua New Guinea)"},{"code":"pca","name":"Santa Inรฉs Ahuatempan Popoloca"},{"code":"pcb","name":"Pear"},{"code":"pcc","name":"Bouyei"},{"code":"pcd","name":"Picard"},{"code":"pce","name":"Ruching Palaung"},{"code":"pcf","name":"Paliyan"},{"code":"pcg","name":"Paniya"},{"code":"pch","name":"Pardhan"},{"code":"pci","name":"Duruwa"},{"code":"pcj","name":"Parenga"},{"code":"pck","name":"Paite Chin"},{"code":"pcl","name":"Pardhi"},{"code":"pcm","name":"Nigerian Pidgin"},{"code":"pcn","name":"Piti"},{"code":"pcp","name":"Pacahuara"},{"code":"pcw","name":"Pyapun"},{"code":"pda","name":"Anam"},{"code":"pdc","name":"Pennsylvania German"},{"code":"pdi","name":"Pa Di"},{"code":"pdn","name":"Fedan"},{"code":"pdo","name":"Padoe"},{"code":"pdt","name":"Plautdietsch"},{"code":"pdu","name":"Kayan"},{"code":"pea","name":"Peranakan Indonesian"},{"code":"peb","name":"Eastern Pomo"},{"code":"ped","name":"Mala (Papua New Guinea)"},{"code":"pee","name":"Taje"},{"code":"pef","name":"Northeastern Pomo"},{"code":"peg","name":"Pengo"},{"code":"peh","name":"Bonan"},{"code":"pei","name":"Chichimeca-Jonaz"},{"code":"pej","name":"Northern Pomo"},{"code":"pek","name":"Penchal"},{"code":"pel","name":"Pekal"},{"code":"pem","name":"Phende"},{"code":"peo","name":"Old Persian (ca. 600-400 B.C.)"},{"code":"pep","name":"Kunja"},{"code":"peq","name":"Southern Pomo"},{"code":"pes","name":"Iranian Persian"},{"code":"pev","name":"Pรฉmono"},{"code":"pex","name":"Petats"},{"code":"pey","name":"Petjo"},{"code":"pez","name":"Eastern Penan"},{"code":"pfa","name":"Pรกรกfang"},{"code":"pfe","name":"Pere"},{"code":"pfl","name":"Pfaelzisch"},{"code":"pga","name":"Sudanese Creole Arabic"},{"code":"pgd","name":"Gฤndhฤrฤซ"},{"code":"pgg","name":"Pangwali"},{"code":"pgi","name":"Pagi"},{"code":"pgk","name":"Rerep"},{"code":"pgl","name":"Primitive Irish"},{"code":"pgn","name":"Paelignian"},{"code":"pgs","name":"Pangseng"},{"code":"pgu","name":"Pagu"},{"code":"pgz","name":"Papua New Guinean Sign Language"},{"code":"pha","name":"Pa-Hng"},{"code":"phd","name":"Phudagi"},{"code":"phg","name":"Phuong"},{"code":"phh","name":"Phukha"},{"code":"phk","name":"Phake"},{"code":"phl","name":"Palula"},{"code":"phm","name":"Phimbi"},{"code":"phn","name":"Phoenician"},{"code":"pho","name":"Phunoi"},{"code":"phq","name":"Phana'"},{"code":"phr","name":"Pahari-Potwari"},{"code":"pht","name":"Phu Thai"},{"code":"phu","name":"Phuan"},{"code":"phv","name":"Pahlavani"},{"code":"phw","name":"Phangduwali"},{"code":"pia","name":"Pima Bajo"},{"code":"pib","name":"Yine"},{"code":"pic","name":"Pinji"},{"code":"pid","name":"Piaroa"},{"code":"pie","name":"Piro"},{"code":"pif","name":"Pingelapese"},{"code":"pig","name":"Pisabo"},{"code":"pih","name":"Pitcairn-Norfolk"},{"code":"pii","name":"Pini"},{"code":"pij","name":"Pijao"},{"code":"pil","name":"Yom"},{"code":"pim","name":"Powhatan"},{"code":"pin","name":"Piame"},{"code":"pio","name":"Piapoco"},{"code":"pip","name":"Pero"},{"code":"pir","name":"Piratapuyo"},{"code":"pis","name":"Pijin"},{"code":"pit","name":"Pitta Pitta"},{"code":"piu","name":"Pintupi-Luritja"},{"code":"piv","name":"Pileni"},{"code":"piw","name":"Pimbwe"},{"code":"pix","name":"Piu"},{"code":"piy","name":"Piya-Kwonci"},{"code":"piz","name":"Pije"},{"code":"pjt","name":"Pitjantjatjara"},{"code":"pka","name":"Ardhamฤgadhฤซ Prฤkrit"},{"code":"pkb","name":"Kipfokomo"},{"code":"pkc","name":"Paekche"},{"code":"pkg","name":"Pak-Tong"},{"code":"pkh","name":"Pankhu"},{"code":"pkn","name":"Pakanha"},{"code":"pko","name":"Pรถkoot"},{"code":"pkp","name":"Pukapuka"},{"code":"pkr","name":"Attapady Kurumba"},{"code":"pks","name":"Pakistan Sign Language"},{"code":"pkt","name":"Maleng"},{"code":"pku","name":"Paku"},{"code":"pla","name":"Miani"},{"code":"plb","name":"Polonombauk"},{"code":"plc","name":"Central Palawano"},{"code":"pld","name":"Polari"},{"code":"ple","name":"Palu'e"},{"code":"plg","name":"Pilagรก"},{"code":"plh","name":"Paulohi"},{"code":"pli","name":"Pali"},{"code":"plj","name":"Polci"},{"code":"plk","name":"Kohistani Shina"},{"code":"pll","name":"Shwe Palaung"},{"code":"pln","name":"Palenquero"},{"code":"plo","name":"Oluta Popoluca"},{"code":"plq","name":"Palaic"},{"code":"plr","name":"Palaka Senoufo"},{"code":"pls","name":"San Marcos Tlacoyalco Popoloca"},{"code":"plt","name":"Plateau Malagasy"},{"code":"plu","name":"Palikรบr"},{"code":"plv","name":"Southwest Palawano"},{"code":"plw","name":"Brooke's Point Palawano"},{"code":"ply","name":"Bolyu"},{"code":"plz","name":"Paluan"},{"code":"pma","name":"Paama"},{"code":"pmb","name":"Pambia"},{"code":"pmd","name":"Pallanganmiddang"},{"code":"pme","name":"Pwaamei"},{"code":"pmf","name":"Pamona"},{"code":"pmh","name":"Mฤhฤrฤแนฃแนญri Prฤkrit"},{"code":"pmi","name":"Northern Pumi"},{"code":"pmj","name":"Southern Pumi"},{"code":"pmk","name":"Pamlico"},{"code":"pml","name":"Lingua Franca"},{"code":"pmm","name":"Pomo"},{"code":"pmn","name":"Pam"},{"code":"pmo","name":"Pom"},{"code":"pmq","name":"Northern Pame"},{"code":"pmr","name":"Paynamar"},{"code":"pms","name":"Piemontese"},{"code":"pmt","name":"Tuamotuan"},{"code":"pmw","name":"Plains Miwok"},{"code":"pmx","name":"Poumei Naga"},{"code":"pmy","name":"Papuan Malay"},{"code":"pmz","name":"Southern Pame"},{"code":"pna","name":"Punan Bah-Biau"},{"code":"pnb","name":"Western Panjabi"},{"code":"pnc","name":"Pannei"},{"code":"pnd","name":"Mpinda"},{"code":"pne","name":"Western Penan"},{"code":"png","name":"Pangu"},{"code":"pnh","name":"Penrhyn"},{"code":"pni","name":"Aoheng"},{"code":"pnj","name":"Pinjarup"},{"code":"pnk","name":"Paunaka"},{"code":"pnl","name":"Paleni"},{"code":"pnm","name":"Punan Batu 1"},{"code":"pnn","name":"Pinai-Hagahai"},{"code":"pno","name":"Panobo"},{"code":"pnp","name":"Pancana"},{"code":"pnq","name":"Pana (Burkina Faso)"},{"code":"pnr","name":"Panim"},{"code":"pns","name":"Ponosakan"},{"code":"pnt","name":"Pontic"},{"code":"pnu","name":"Jiongnai Bunu"},{"code":"pnv","name":"Pinigura"},{"code":"pnw","name":"Banyjima"},{"code":"pnx","name":"Phong-Kniang"},{"code":"pny","name":"Pinyin"},{"code":"pnz","name":"Pana (Central African Republic)"},{"code":"poc","name":"Poqomam"},{"code":"poe","name":"San Juan Atzingo Popoloca"},{"code":"pof","name":"Poke"},{"code":"pog","name":"Potiguรกra"},{"code":"poh","name":"Poqomchi'"},{"code":"poi","name":"Highland Popoluca"},{"code":"pok","name":"Pokangรก"},{"code":"pol","name":"Polish"},{"code":"pom","name":"Southeastern Pomo"},{"code":"pon","name":"Pohnpeian"},{"code":"poo","name":"Central Pomo"},{"code":"pop","name":"Pwapwรข"},{"code":"poq","name":"Texistepec Popoluca"},{"code":"por","name":"Portuguese"},{"code":"pos","name":"Sayula Popoluca"},{"code":"pot","name":"Potawatomi"},{"code":"pov","name":"Upper Guinea Crioulo"},{"code":"pow","name":"San Felipe Otlaltepec Popoloca"},{"code":"pox","name":"Polabian"},{"code":"poy","name":"Pogolo"},{"code":"ppe","name":"Papi"},{"code":"ppi","name":"Paipai"},{"code":"ppk","name":"Uma"},{"code":"ppl","name":"Nicarao"},{"code":"ppm","name":"Papuma"},{"code":"ppn","name":"Papapana"},{"code":"ppo","name":"Folopa"},{"code":"ppp","name":"Pelende"},{"code":"ppq","name":"Pei"},{"code":"pps","name":"San Luรญs Temalacayuca Popoloca"},{"code":"ppt","name":"Pare"},{"code":"ppu","name":"Papora"},{"code":"pqa","name":"Pa'a"},{"code":"pqm","name":"Malecite-Passamaquoddy"},{"code":"prc","name":"Parachi"},{"code":"prd","name":"Parsi-Dari"},{"code":"pre","name":"Principense"},{"code":"prf","name":"Paranan"},{"code":"prg","name":"Prussian"},{"code":"prh","name":"Porohanon"},{"code":"pri","name":"Paicรฎ"},{"code":"prk","name":"Parauk"},{"code":"prl","name":"Peruvian Sign Language"},{"code":"prm","name":"Kibiri"},{"code":"prn","name":"Prasuni"},{"code":"pro","name":"Old Occitan (to 1500)"},{"code":"prp","name":"Parsi"},{"code":"prq","name":"Ashรฉninka Perenรฉ"},{"code":"prr","name":"Puri"},{"code":"prs","name":"Afghan Persian"},{"code":"prt","name":"Phai"},{"code":"pru","name":"Puragi"},{"code":"prw","name":"Parawen"},{"code":"prx","name":"Purik"},{"code":"prz","name":"Providencia Sign Language"},{"code":"psa","name":"Asue Awyu"},{"code":"psc","name":"Persian Sign Language"},{"code":"psd","name":"Plains Indian Sign Language"},{"code":"pse","name":"Central Malay"},{"code":"psg","name":"Penang Sign Language"},{"code":"psh","name":"Southwest Pashai"},{"code":"psi","name":"Southeast Pashai"},{"code":"psl","name":"Puerto Rican Sign Language"},{"code":"psm","name":"Pauserna"},{"code":"psn","name":"Panasuan"},{"code":"pso","name":"Polish Sign Language"},{"code":"psp","name":"Philippine Sign Language"},{"code":"psq","name":"Pasi"},{"code":"psr","name":"Portuguese Sign Language"},{"code":"pss","name":"Kaulong"},{"code":"pst","name":"Central Pashto"},{"code":"psu","name":"Sauraseni Prฤkrit"},{"code":"psw","name":"Port Sandwich"},{"code":"psy","name":"Piscataway"},{"code":"pta","name":"Pai Tavytera"},{"code":"pth","name":"Pataxรณ Hรฃ-Ha-Hรฃe"},{"code":"pti","name":"Pindiini"},{"code":"ptn","name":"Patani"},{"code":"pto","name":"Zo'รฉ"},{"code":"ptp","name":"Patep"},{"code":"ptq","name":"Pattapu"},{"code":"ptr","name":"Piamatsina"},{"code":"ptt","name":"Enrekang"},{"code":"ptu","name":"Bambam"},{"code":"ptv","name":"Port Vato"},{"code":"ptw","name":"Pentlatch"},{"code":"pty","name":"Pathiya"},{"code":"pua","name":"Western Highland Purepecha"},{"code":"pub","name":"Purum"},{"code":"puc","name":"Punan Merap"},{"code":"pud","name":"Punan Aput"},{"code":"pue","name":"Puelche"},{"code":"puf","name":"Punan Merah"},{"code":"pug","name":"Phuie"},{"code":"pui","name":"Puinave"},{"code":"puj","name":"Punan Tubu"},{"code":"pum","name":"Puma"},{"code":"puo","name":"Puoc"},{"code":"pup","name":"Pulabu"},{"code":"puq","name":"Puquina"},{"code":"pur","name":"Puruborรก"},{"code":"pus","name":"Pashto"},{"code":"put","name":"Putoh"},{"code":"puu","name":"Punu"},{"code":"puw","name":"Puluwatese"},{"code":"pux","name":"Puare"},{"code":"puy","name":"Purisimeรฑo"},{"code":"pwa","name":"Pawaia"},{"code":"pwb","name":"Panawa"},{"code":"pwg","name":"Gapapaiwa"},{"code":"pwi","name":"Patwin"},{"code":"pwm","name":"Molbog"},{"code":"pwn","name":"Paiwan"},{"code":"pwo","name":"Pwo Western Karen"},{"code":"pwr","name":"Powari"},{"code":"pww","name":"Pwo Northern Karen"},{"code":"pxm","name":"Quetzaltepec Mixe"},{"code":"pye","name":"Pye Krumen"},{"code":"pym","name":"Fyam"},{"code":"pyn","name":"Poyanรกwa"},{"code":"pys","name":"Lengua de Seรฑas del Paraguay"},{"code":"pyu","name":"Puyuma"},{"code":"pyx","name":"Pyu (Myanmar)"},{"code":"pyy","name":"Pyen"},{"code":"pzn","name":"Para Naga"},{"code":"qua","name":"Quapaw"},{"code":"qub","name":"Huallaga Huรกnuco Quechua"},{"code":"quc","name":"K'iche'"},{"code":"qud","name":"Calderรณn Highland Quichua"},{"code":"que","name":"Quechua"},{"code":"quf","name":"Lambayeque Quechua"},{"code":"qug","name":"Chimborazo Highland Quichua"},{"code":"quh","name":"South Bolivian Quechua"},{"code":"qui","name":"Quileute"},{"code":"quk","name":"Chachapoyas Quechua"},{"code":"qul","name":"North Bolivian Quechua"},{"code":"qum","name":"Sipacapense"},{"code":"qun","name":"Quinault"},{"code":"qup","name":"Southern Pastaza Quechua"},{"code":"quq","name":"Quinqui"},{"code":"qur","name":"Yanahuanca Pasco Quechua"},{"code":"qus","name":"Santiago del Estero Quichua"},{"code":"quv","name":"Sacapulteco"},{"code":"quw","name":"Tena Lowland Quichua"},{"code":"qux","name":"Yauyos Quechua"},{"code":"quy","name":"Ayacucho Quechua"},{"code":"quz","name":"Cusco Quechua"},{"code":"qva","name":"Ambo-Pasco Quechua"},{"code":"qvc","name":"Cajamarca Quechua"},{"code":"qve","name":"Eastern Apurรญmac Quechua"},{"code":"qvh","name":"Huamalรญes-Dos de Mayo Huรกnuco Quechua"},{"code":"qvi","name":"Imbabura Highland Quichua"},{"code":"qvj","name":"Loja Highland Quichua"},{"code":"qvl","name":"Cajatambo North Lima Quechua"},{"code":"qvm","name":"Margos-Yarowilca-Lauricocha Quechua"},{"code":"qvn","name":"North Junรญn Quechua"},{"code":"qvo","name":"Napo Lowland Quechua"},{"code":"qvp","name":"Pacaraos Quechua"},{"code":"qvs","name":"San Martรญn Quechua"},{"code":"qvw","name":"Huaylla Wanca Quechua"},{"code":"qvy","name":"Queyu"},{"code":"qvz","name":"Northern Pastaza Quichua"},{"code":"qwa","name":"Corongo Ancash Quechua"},{"code":"qwc","name":"Classical Quechua"},{"code":"qwh","name":"Huaylas Ancash Quechua"},{"code":"qwm","name":"Kuman (Russia)"},{"code":"qws","name":"Sihuas Ancash Quechua"},{"code":"qwt","name":"Kwalhioqua-Tlatskanai"},{"code":"qxa","name":"Chiquiรกn Ancash Quechua"},{"code":"qxc","name":"Chincha Quechua"},{"code":"qxh","name":"Panao Huรกnuco Quechua"},{"code":"qxl","name":"Salasaca Highland Quichua"},{"code":"qxn","name":"Northern Conchucos Ancash Quechua"},{"code":"qxo","name":"Southern Conchucos Ancash Quechua"},{"code":"qxp","name":"Puno Quechua"},{"code":"qxq","name":"Qashqa'i"},{"code":"qxr","name":"Caรฑar Highland Quichua"},{"code":"qxs","name":"Southern Qiang"},{"code":"qxt","name":"Santa Ana de Tusi Pasco Quechua"},{"code":"qxu","name":"Arequipa-La Uniรณn Quechua"},{"code":"qxw","name":"Jauja Wanca Quechua"},{"code":"qya","name":"Quenya"},{"code":"qyp","name":"Quiripi"},{"code":"raa","name":"Dungmali"},{"code":"rab","name":"Camling"},{"code":"rac","name":"Rasawa"},{"code":"rad","name":"Rade"},{"code":"raf","name":"Western Meohang"},{"code":"rag","name":"Logooli"},{"code":"rah","name":"Rabha"},{"code":"rai","name":"Ramoaaina"},{"code":"raj","name":"Rajasthani"},{"code":"rak","name":"Tulu-Bohuai"},{"code":"ral","name":"Ralte"},{"code":"ram","name":"Canela"},{"code":"ran","name":"Riantana"},{"code":"rao","name":"Rao"},{"code":"rap","name":"Rapanui"},{"code":"raq","name":"Saam"},{"code":"rar","name":"Cook Islands Maori"},{"code":"ras","name":"Tegali"},{"code":"rat","name":"Razajerdi"},{"code":"rau","name":"Raute"},{"code":"rav","name":"Sampang"},{"code":"raw","name":"Rawang"},{"code":"rax","name":"Rang"},{"code":"ray","name":"Rapa"},{"code":"raz","name":"Rahambuu"},{"code":"rbb","name":"Rumai Palaung"},{"code":"rbk","name":"Northern Bontok"},{"code":"rbl","name":"Miraya Bikol"},{"code":"rbp","name":"Barababaraba"},{"code":"rcf","name":"Rรฉunion Creole French"},{"code":"rdb","name":"Rudbari"},{"code":"rea","name":"Rerau"},{"code":"reb","name":"Rembong"},{"code":"ree","name":"Rejang Kayan"},{"code":"reg","name":"Kara (Tanzania)"},{"code":"rei","name":"Reli"},{"code":"rej","name":"Rejang"},{"code":"rel","name":"Rendille"},{"code":"rem","name":"Remo"},{"code":"ren","name":"Rengao"},{"code":"rer","name":"Rer Bare"},{"code":"res","name":"Reshe"},{"code":"ret","name":"Retta"},{"code":"rey","name":"Reyesano"},{"code":"rga","name":"Roria"},{"code":"rge","name":"Romano-Greek"},{"code":"rgk","name":"Rangkas"},{"code":"rgn","name":"Romagnol"},{"code":"rgr","name":"Resรญgaro"},{"code":"rgs","name":"Southern Roglai"},{"code":"rgu","name":"Ringgou"},{"code":"rhg","name":"Rohingya"},{"code":"rhp","name":"Yahang"},{"code":"ria","name":"Riang (India)"},{"code":"rif","name":"Tarifit"},{"code":"ril","name":"Riang (Myanmar)"},{"code":"rim","name":"Nyaturu"},{"code":"rin","name":"Nungu"},{"code":"rir","name":"Ribun"},{"code":"rit","name":"Ritharrngu"},{"code":"riu","name":"Riung"},{"code":"rjg","name":"Rajong"},{"code":"rji","name":"Raji"},{"code":"rjs","name":"Rajbanshi"},{"code":"rka","name":"Kraol"},{"code":"rkb","name":"Rikbaktsa"},{"code":"rkh","name":"Rakahanga-Manihiki"},{"code":"rki","name":"Rakhine"},{"code":"rkm","name":"Marka"},{"code":"rkt","name":"Kamta"},{"code":"rkw","name":"Arakwal"},{"code":"rma","name":"Rama"},{"code":"rmb","name":"Rembarrnga"},{"code":"rmc","name":"Carpathian Romani"},{"code":"rmd","name":"Traveller Danish"},{"code":"rme","name":"Angloromani"},{"code":"rmf","name":"Kalo Finnish Romani"},{"code":"rmg","name":"Traveller Norwegian"},{"code":"rmh","name":"Murkim"},{"code":"rmi","name":"Lomavren"},{"code":"rmk","name":"Romkun"},{"code":"rml","name":"Baltic Romani"},{"code":"rmm","name":"Roma"},{"code":"rmn","name":"Balkan Romani"},{"code":"rmo","name":"Sinte Romani"},{"code":"rmp","name":"Rempi"},{"code":"rmq","name":"Calรณ"},{"code":"rms","name":"Romanian Sign Language"},{"code":"rmt","name":"Domari"},{"code":"rmu","name":"Tavringer Romani"},{"code":"rmv","name":"Romanova"},{"code":"rmw","name":"Welsh Romani"},{"code":"rmx","name":"Romam"},{"code":"rmy","name":"Vlax Romani"},{"code":"rmz","name":"Marma"},{"code":"rnd","name":"Ruund"},{"code":"rng","name":"Ronga"},{"code":"rnl","name":"Ranglong"},{"code":"rnn","name":"Roon"},{"code":"rnp","name":"Rongpo"},{"code":"rnr","name":"Nari Nari"},{"code":"rnw","name":"Rungwa"},{"code":"rob","name":"Tae'"},{"code":"roc","name":"Cacgia Roglai"},{"code":"rod","name":"Rogo"},{"code":"roe","name":"Ronji"},{"code":"rof","name":"Rombo"},{"code":"rog","name":"Northern Roglai"},{"code":"roh","name":"Romansh"},{"code":"rol","name":"Romblomanon"},{"code":"rom","name":"Romany"},{"code":"ron","name":"Romanian"},{"code":"roo","name":"Rotokas"},{"code":"rop","name":"Kriol"},{"code":"ror","name":"Rongga"},{"code":"rou","name":"Runga"},{"code":"row","name":"Dela-Oenale"},{"code":"rpn","name":"Repanbitip"},{"code":"rpt","name":"Rapting"},{"code":"rri","name":"Ririo"},{"code":"rro","name":"Waima"},{"code":"rrt","name":"Arritinngithigh"},{"code":"rsb","name":"Romano-Serbian"},{"code":"rsl","name":"Russian Sign Language"},{"code":"rsm","name":"Miriwoong Sign Language"},{"code":"rtc","name":"Rungtu Chin"},{"code":"rth","name":"Ratahan"},{"code":"rtm","name":"Rotuman"},{"code":"rts","name":"Yurats"},{"code":"rtw","name":"Rathawi"},{"code":"rub","name":"Gungu"},{"code":"ruc","name":"Ruuli"},{"code":"rue","name":"Rusyn"},{"code":"ruf","name":"Luguru"},{"code":"rug","name":"Roviana"},{"code":"ruh","name":"Ruga"},{"code":"rui","name":"Rufiji"},{"code":"ruk","name":"Che"},{"code":"run","name":"Rundi"},{"code":"ruo","name":"Istro Romanian"},{"code":"rup","name":"Aromanian"},{"code":"ruq","name":"Megleno Romanian"},{"code":"rus","name":"Russian"},{"code":"rut","name":"Rutul"},{"code":"ruu","name":"Lanas Lobu"},{"code":"ruy","name":"Mala (Nigeria)"},{"code":"ruz","name":"Ruma"},{"code":"rwa","name":"Rawo"},{"code":"rwk","name":"Rwa"},{"code":"rwl","name":"Ruwila"},{"code":"rwm","name":"Amba (Uganda)"},{"code":"rwo","name":"Rawa"},{"code":"rwr","name":"Marwari (India)"},{"code":"rxd","name":"Ngardi"},{"code":"rxw","name":"Garuwali"},{"code":"ryn","name":"Northern Amami-Oshima"},{"code":"rys","name":"Yaeyama"},{"code":"ryu","name":"Central Okinawan"},{"code":"rzh","name":"Rฤziแธฅฤซ"},{"code":"saa","name":"Saba"},{"code":"sab","name":"Buglere"},{"code":"sac","name":"Meskwaki"},{"code":"sad","name":"Sandawe"},{"code":"sae","name":"Sabanรช"},{"code":"saf","name":"Safaliba"},{"code":"sag","name":"Sango"},{"code":"sah","name":"Yakut"},{"code":"saj","name":"Sahu"},{"code":"sak","name":"Sake"},{"code":"sam","name":"Samaritan Aramaic"},{"code":"san","name":"Sanskrit"},{"code":"sao","name":"Sause"},{"code":"saq","name":"Samburu"},{"code":"sar","name":"Saraveca"},{"code":"sas","name":"Sasak"},{"code":"sat","name":"Santali"},{"code":"sau","name":"Saleman"},{"code":"sav","name":"Saafi-Saafi"},{"code":"saw","name":"Sawi"},{"code":"sax","name":"Sa"},{"code":"say","name":"Saya"},{"code":"saz","name":"Saurashtra"},{"code":"sba","name":"Ngambay"},{"code":"sbb","name":"Simbo"},{"code":"sbc","name":"Kele (Papua New Guinea)"},{"code":"sbd","name":"Southern Samo"},{"code":"sbe","name":"Saliba"},{"code":"sbf","name":"Chabu"},{"code":"sbg","name":"Seget"},{"code":"sbh","name":"Sori-Harengan"},{"code":"sbi","name":"Seti"},{"code":"sbj","name":"Surbakhal"},{"code":"sbk","name":"Safwa"},{"code":"sbl","name":"Botolan Sambal"},{"code":"sbm","name":"Sagala"},{"code":"sbn","name":"Sindhi Bhil"},{"code":"sbo","name":"Sabรผm"},{"code":"sbp","name":"Sangu (Tanzania)"},{"code":"sbq","name":"Sileibi"},{"code":"sbr","name":"Sembakung Murut"},{"code":"sbs","name":"Subiya"},{"code":"sbt","name":"Kimki"},{"code":"sbu","name":"Stod Bhoti"},{"code":"sbv","name":"Sabine"},{"code":"sbw","name":"Simba"},{"code":"sbx","name":"Seberuang"},{"code":"sby","name":"Soli"},{"code":"sbz","name":"Sara Kaba"},{"code":"scb","name":"Chut"},{"code":"sce","name":"Dongxiang"},{"code":"scf","name":"San Miguel Creole French"},{"code":"scg","name":"Sanggau"},{"code":"sch","name":"Sakachep"},{"code":"sci","name":"Sri Lankan Creole Malay"},{"code":"sck","name":"Sadri"},{"code":"scl","name":"Shina"},{"code":"scn","name":"Sicilian"},{"code":"sco","name":"Scots"},{"code":"scp","name":"Helambu Sherpa"},{"code":"scq","name":"Sa'och"},{"code":"scs","name":"North Slavey"},{"code":"sct","name":"Southern Katang"},{"code":"scu","name":"Shumcho"},{"code":"scv","name":"Sheni"},{"code":"scw","name":"Sha"},{"code":"scx","name":"Sicel"},{"code":"sda","name":"Toraja-Sa'dan"},{"code":"sdb","name":"Shabak"},{"code":"sdc","name":"Sassarese Sardinian"},{"code":"sde","name":"Surubu"},{"code":"sdf","name":"Sarli"},{"code":"sdg","name":"Savi"},{"code":"sdh","name":"Southern Kurdish"},{"code":"sdj","name":"Suundi"},{"code":"sdk","name":"Sos Kundi"},{"code":"sdl","name":"Saudi Arabian Sign Language"},{"code":"sdn","name":"Gallurese Sardinian"},{"code":"sdo","name":"Bukar-Sadung Bidayuh"},{"code":"sdp","name":"Sherdukpen"},{"code":"sdq","name":"Semandang"},{"code":"sdr","name":"Oraon Sadri"},{"code":"sds","name":"Sened"},{"code":"sdt","name":"Shuadit"},{"code":"sdu","name":"Sarudu"},{"code":"sdx","name":"Sibu Melanau"},{"code":"sdz","name":"Sallands"},{"code":"sea","name":"Semai"},{"code":"seb","name":"Shempire Senoufo"},{"code":"sec","name":"Sechelt"},{"code":"sed","name":"Sedang"},{"code":"see","name":"Seneca"},{"code":"sef","name":"Cebaara Senoufo"},{"code":"seg","name":"Segeju"},{"code":"seh","name":"Sena"},{"code":"sei","name":"Seri"},{"code":"sej","name":"Sene"},{"code":"sek","name":"Sekani"},{"code":"sel","name":"Selkup"},{"code":"sen","name":"Nanerigรฉ Sรฉnoufo"},{"code":"seo","name":"Suarmin"},{"code":"sep","name":"Sรฌcรฌtรฉ Sรฉnoufo"},{"code":"seq","name":"Senara Sรฉnoufo"},{"code":"ser","name":"Serrano"},{"code":"ses","name":"Koyraboro Senni Songhai"},{"code":"set","name":"Sentani"},{"code":"seu","name":"Serui-Laut"},{"code":"sev","name":"Nyarafolo Senoufo"},{"code":"sew","name":"Sewa Bay"},{"code":"sey","name":"Secoya"},{"code":"sez","name":"Senthang Chin"},{"code":"sfb","name":"French Belgian Sign Language"},{"code":"sfe","name":"Eastern Subanen"},{"code":"sfm","name":"Small Flowery Miao"},{"code":"sfs","name":"South African Sign Language"},{"code":"sfw","name":"Sehwi"},{"code":"sga","name":"Old Irish (to 900)"},{"code":"sgb","name":"Mag-antsi Ayta"},{"code":"sgc","name":"Kipsigis"},{"code":"sgd","name":"Surigaonon"},{"code":"sge","name":"Segai"},{"code":"sgg","name":"Swiss-German Sign Language"},{"code":"sgh","name":"Shughni"},{"code":"sgi","name":"Suga"},{"code":"sgj","name":"Surgujia"},{"code":"sgk","name":"Sangkong"},{"code":"sgm","name":"Singa"},{"code":"sgp","name":"Singpho"},{"code":"sgr","name":"Sangisari"},{"code":"sgs","name":"Samogitian"},{"code":"sgt","name":"Brokpake"},{"code":"sgu","name":"Salas"},{"code":"sgw","name":"Sebat Bet Gurage"},{"code":"sgx","name":"Sierra Leone Sign Language"},{"code":"sgy","name":"Sanglechi"},{"code":"sgz","name":"Sursurunga"},{"code":"sha","name":"Shall-Zwall"},{"code":"shb","name":"Ninam"},{"code":"shc","name":"Sonde"},{"code":"shd","name":"Kundal Shahi"},{"code":"she","name":"Sheko"},{"code":"shg","name":"Shua"},{"code":"shh","name":"Shoshoni"},{"code":"shi","name":"Tachelhit"},{"code":"shj","name":"Shatt"},{"code":"shk","name":"Shilluk"},{"code":"shl","name":"Shendu"},{"code":"shm","name":"Shahrudi"},{"code":"shn","name":"Shan"},{"code":"sho","name":"Shanga"},{"code":"shp","name":"Shipibo-Conibo"},{"code":"shq","name":"Sala"},{"code":"shr","name":"Shi"},{"code":"shs","name":"Shuswap"},{"code":"sht","name":"Shasta"},{"code":"shu","name":"Chadian Arabic"},{"code":"shv","name":"Shehri"},{"code":"shw","name":"Shwai"},{"code":"shx","name":"She"},{"code":"shy","name":"Tachawit"},{"code":"shz","name":"Syenara Senoufo"},{"code":"sia","name":"Akkala Sami"},{"code":"sib","name":"Sebop"},{"code":"sid","name":"Sidamo"},{"code":"sie","name":"Simaa"},{"code":"sif","name":"Siamou"},{"code":"sig","name":"Paasaal"},{"code":"sih","name":"Sรฎshรซรซ"},{"code":"sii","name":"Shom Peng"},{"code":"sij","name":"Numbami"},{"code":"sik","name":"Sikiana"},{"code":"sil","name":"Tumulung Sisaala"},{"code":"sim","name":"Mende (Papua New Guinea)"},{"code":"sin","name":"Sinhala"},{"code":"sip","name":"Sikkimese"},{"code":"siq","name":"Sonia"},{"code":"sir","name":"Siri"},{"code":"sis","name":"Siuslaw"},{"code":"siu","name":"Sinagen"},{"code":"siv","name":"Sumariup"},{"code":"siw","name":"Siwai"},{"code":"six","name":"Sumau"},{"code":"siy","name":"Sivandi"},{"code":"siz","name":"Siwi"},{"code":"sja","name":"Epena"},{"code":"sjb","name":"Sajau Basap"},{"code":"sjd","name":"Kildin Sami"},{"code":"sje","name":"Pite Sami"},{"code":"sjg","name":"Assangori"},{"code":"sjk","name":"Kemi Sami"},{"code":"sjl","name":"Miji"},{"code":"sjm","name":"Mapun"},{"code":"sjn","name":"Sindarin"},{"code":"sjo","name":"Xibe"},{"code":"sjp","name":"Surjapuri"},{"code":"sjr","name":"Siar-Lak"},{"code":"sjs","name":"Senhaja De Srair"},{"code":"sjt","name":"Ter Sami"},{"code":"sju","name":"Ume Sami"},{"code":"sjw","name":"Shawnee"},{"code":"ska","name":"Skagit"},{"code":"skb","name":"Saek"},{"code":"skc","name":"Ma Manda"},{"code":"skd","name":"Southern Sierra Miwok"},{"code":"ske","name":"Seke (Vanuatu)"},{"code":"skf","name":"Sakirabiรก"},{"code":"skg","name":"Sakalava Malagasy"},{"code":"skh","name":"Sikule"},{"code":"ski","name":"Sika"},{"code":"skj","name":"Seke (Nepal)"},{"code":"skm","name":"Kutong"},{"code":"skn","name":"Kolibugan Subanon"},{"code":"sko","name":"Seko Tengah"},{"code":"skp","name":"Sekapan"},{"code":"skq","name":"Sininkere"},{"code":"skr","name":"Saraiki"},{"code":"sks","name":"Maia"},{"code":"skt","name":"Sakata"},{"code":"sku","name":"Sakao"},{"code":"skv","name":"Skou"},{"code":"skw","name":"Skepi Creole Dutch"},{"code":"skx","name":"Seko Padang"},{"code":"sky","name":"Sikaiana"},{"code":"skz","name":"Sekar"},{"code":"slc","name":"Sรกliba"},{"code":"sld","name":"Sissala"},{"code":"sle","name":"Sholaga"},{"code":"slf","name":"Swiss-Italian Sign Language"},{"code":"slg","name":"Selungai Murut"},{"code":"slh","name":"Southern Puget Sound Salish"},{"code":"sli","name":"Lower Silesian"},{"code":"slj","name":"Salumรก"},{"code":"slk","name":"Slovak"},{"code":"sll","name":"Salt-Yui"},{"code":"slm","name":"Pangutaran Sama"},{"code":"sln","name":"Salinan"},{"code":"slp","name":"Lamaholot"},{"code":"slq","name":"Salchuq"},{"code":"slr","name":"Salar"},{"code":"sls","name":"Singapore Sign Language"},{"code":"slt","name":"Sila"},{"code":"slu","name":"Selaru"},{"code":"slv","name":"Slovenian"},{"code":"slw","name":"Sialum"},{"code":"slx","name":"Salampasu"},{"code":"sly","name":"Selayar"},{"code":"slz","name":"Ma'ya"},{"code":"sma","name":"Southern Sami"},{"code":"smb","name":"Simbari"},{"code":"smc","name":"Som"},{"code":"smd","name":"Sama"},{"code":"sme","name":"Northern Sami"},{"code":"smf","name":"Auwe"},{"code":"smg","name":"Simbali"},{"code":"smh","name":"Samei"},{"code":"smj","name":"Lule Sami"},{"code":"smk","name":"Bolinao"},{"code":"sml","name":"Central Sama"},{"code":"smm","name":"Musasa"},{"code":"smn","name":"Inari Sami"},{"code":"smo","name":"Samoan"},{"code":"smp","name":"Samaritan"},{"code":"smq","name":"Samo"},{"code":"smr","name":"Simeulue"},{"code":"sms","name":"Skolt Sami"},{"code":"smt","name":"Simte"},{"code":"smu","name":"Somray"},{"code":"smv","name":"Samvedi"},{"code":"smw","name":"Sumbawa"},{"code":"smx","name":"Samba"},{"code":"smy","name":"Semnani"},{"code":"smz","name":"Simeku"},{"code":"sna","name":"Shona"},{"code":"snb","name":"Sebuyau"},{"code":"snc","name":"Sinaugoro"},{"code":"snd","name":"Sindhi"},{"code":"sne","name":"Bau Bidayuh"},{"code":"snf","name":"Noon"},{"code":"sng","name":"Sanga (Democratic Republic of Congo)"},{"code":"sni","name":"Sensi"},{"code":"snj","name":"Riverain Sango"},{"code":"snk","name":"Soninke"},{"code":"snl","name":"Sangil"},{"code":"snm","name":"Southern Ma'di"},{"code":"snn","name":"Siona"},{"code":"sno","name":"Snohomish"},{"code":"snp","name":"Siane"},{"code":"snq","name":"Sangu (Gabon)"},{"code":"snr","name":"Sihan"},{"code":"sns","name":"Nahavaq"},{"code":"snu","name":"Senggi"},{"code":"snv","name":"Sa'ban"},{"code":"snw","name":"Selee"},{"code":"snx","name":"Sam"},{"code":"sny","name":"Saniyo-Hiyewe"},{"code":"snz","name":"Kou"},{"code":"soa","name":"Thai Song"},{"code":"sob","name":"Sobei"},{"code":"soc","name":"So (Democratic Republic of Congo)"},{"code":"sod","name":"Songoora"},{"code":"soe","name":"Songomeno"},{"code":"sog","name":"Sogdian"},{"code":"soh","name":"Aka"},{"code":"soi","name":"Sonha"},{"code":"soj","name":"Soi"},{"code":"sok","name":"Sokoro"},{"code":"sol","name":"Solos"},{"code":"som","name":"Somali"},{"code":"soo","name":"Songo"},{"code":"sop","name":"Songe"},{"code":"soq","name":"Kanasi"},{"code":"sor","name":"Somrai"},{"code":"sos","name":"Seeku"},{"code":"sot","name":"Southern Sotho"},{"code":"sou","name":"Southern Thai"},{"code":"sov","name":"Sonsorol"},{"code":"sow","name":"Sowanda"},{"code":"sox","name":"Swo"},{"code":"soy","name":"Miyobe"},{"code":"soz","name":"Temi"},{"code":"spa","name":"Spanish"},{"code":"spb","name":"Sepa (Indonesia)"},{"code":"spc","name":"Sapรฉ"},{"code":"spd","name":"Saep"},{"code":"spe","name":"Sepa (Papua New Guinea)"},{"code":"spg","name":"Sian"},{"code":"spi","name":"Saponi"},{"code":"spk","name":"Sengo"},{"code":"spl","name":"Selepet"},{"code":"spm","name":"Akukem"},{"code":"spn","name":"Sanapanรก"},{"code":"spo","name":"Spokane"},{"code":"spp","name":"Supyire Senoufo"},{"code":"spq","name":"Loreto-Ucayali Spanish"},{"code":"spr","name":"Saparua"},{"code":"sps","name":"Saposa"},{"code":"spt","name":"Spiti Bhoti"},{"code":"spu","name":"Sapuan"},{"code":"spv","name":"Kosli"},{"code":"spx","name":"South Picene"},{"code":"spy","name":"Sabaot"},{"code":"sqa","name":"Shama-Sambuga"},{"code":"sqh","name":"Shau"},{"code":"sqi","name":"Albanian"},{"code":"sqk","name":"Albanian Sign Language"},{"code":"sqm","name":"Suma"},{"code":"sqn","name":"Susquehannock"},{"code":"sqo","name":"Sorkhei"},{"code":"sqq","name":"Sou"},{"code":"sqr","name":"Siculo Arabic"},{"code":"sqs","name":"Sri Lankan Sign Language"},{"code":"sqt","name":"Soqotri"},{"code":"squ","name":"Squamish"},{"code":"sqx","name":"Kufr Qassem Sign Language (KQSL)"},{"code":"sra","name":"Saruga"},{"code":"srb","name":"Sora"},{"code":"src","name":"Logudorese Sardinian"},{"code":"srd","name":"Sardinian"},{"code":"sre","name":"Sara"},{"code":"srf","name":"Nafi"},{"code":"srg","name":"Sulod"},{"code":"srh","name":"Sarikoli"},{"code":"sri","name":"Siriano"},{"code":"srk","name":"Serudung Murut"},{"code":"srl","name":"Isirawa"},{"code":"srm","name":"Saramaccan"},{"code":"srn","name":"Sranan Tongo"},{"code":"sro","name":"Campidanese Sardinian"},{"code":"srp","name":"Serbian"},{"code":"srq","name":"Sirionรณ"},{"code":"srr","name":"Serer"},{"code":"srs","name":"Sarsi"},{"code":"srt","name":"Sauri"},{"code":"sru","name":"Suruรญ"},{"code":"srv","name":"Southern Sorsoganon"},{"code":"srw","name":"Serua"},{"code":"srx","name":"Sirmauri"},{"code":"sry","name":"Sera"},{"code":"srz","name":"Shahmirzadi"},{"code":"ssb","name":"Southern Sama"},{"code":"ssc","name":"Suba-Simbiti"},{"code":"ssd","name":"Siroi"},{"code":"sse","name":"Balangingi"},{"code":"ssf","name":"Thao"},{"code":"ssg","name":"Seimat"},{"code":"ssh","name":"Shihhi Arabic"},{"code":"ssi","name":"Sansi"},{"code":"ssj","name":"Sausi"},{"code":"ssk","name":"Sunam"},{"code":"ssl","name":"Western Sisaala"},{"code":"ssm","name":"Semnam"},{"code":"ssn","name":"Waata"},{"code":"sso","name":"Sissano"},{"code":"ssp","name":"Spanish Sign Language"},{"code":"ssq","name":"So'a"},{"code":"ssr","name":"Swiss-French Sign Language"},{"code":"sss","name":"Sรด"},{"code":"sst","name":"Sinasina"},{"code":"ssu","name":"Susuami"},{"code":"ssv","name":"Shark Bay"},{"code":"ssw","name":"Swati"},{"code":"ssx","name":"Samberigi"},{"code":"ssy","name":"Saho"},{"code":"ssz","name":"Sengseng"},{"code":"sta","name":"Settla"},{"code":"stb","name":"Northern Subanen"},{"code":"std","name":"Sentinel"},{"code":"ste","name":"Liana-Seti"},{"code":"stf","name":"Seta"},{"code":"stg","name":"Trieng"},{"code":"sth","name":"Shelta"},{"code":"sti","name":"Bulo Stieng"},{"code":"stj","name":"Matya Samo"},{"code":"stk","name":"Arammba"},{"code":"stl","name":"Stellingwerfs"},{"code":"stm","name":"Setaman"},{"code":"stn","name":"Owa"},{"code":"sto","name":"Stoney"},{"code":"stp","name":"Southeastern Tepehuan"},{"code":"stq","name":"Saterfriesisch"},{"code":"str","name":"Straits Salish"},{"code":"sts","name":"Shumashti"},{"code":"stt","name":"Budeh Stieng"},{"code":"stu","name":"Samtao"},{"code":"stv","name":"Silt'e"},{"code":"stw","name":"Satawalese"},{"code":"sty","name":"Siberian Tatar"},{"code":"sua","name":"Sulka"},{"code":"sub","name":"Suku"},{"code":"suc","name":"Western Subanon"},{"code":"sue","name":"Suena"},{"code":"sug","name":"Suganga"},{"code":"sui","name":"Suki"},{"code":"suj","name":"Shubi"},{"code":"suk","name":"Sukuma"},{"code":"sun","name":"Sundanese"},{"code":"suo","name":"Bouni"},{"code":"suq","name":"Suri"},{"code":"sur","name":"Mwaghavul"},{"code":"sus","name":"Susu"},{"code":"sut","name":"Subtiaba"},{"code":"suv","name":"Puroik"},{"code":"suw","name":"Sumbwa"},{"code":"sux","name":"Sumerian"},{"code":"suy","name":"Suyรก"},{"code":"suz","name":"Sunwar"},{"code":"sva","name":"Svan"},{"code":"svb","name":"Ulau-Suain"},{"code":"svc","name":"Vincentian Creole English"},{"code":"sve","name":"Serili"},{"code":"svk","name":"Slovakian Sign Language"},{"code":"svm","name":"Slavomolisano"},{"code":"svs","name":"Savosavo"},{"code":"svx","name":"Skalvian"},{"code":"swa","name":"Swahili"},{"code":"swb","name":"Maore Comorian"},{"code":"swc","name":"Congo Swahili"},{"code":"swe","name":"Swedish"},{"code":"swf","name":"Sere"},{"code":"swg","name":"Swabian"},{"code":"swh","name":"Kiswahili"},{"code":"swi","name":"Sui"},{"code":"swj","name":"Sira"},{"code":"swk","name":"Malawi Sena"},{"code":"swl","name":"Swedish Sign Language"},{"code":"swm","name":"Samosa"},{"code":"swn","name":"Sawknah"},{"code":"swo","name":"Shanenawa"},{"code":"swp","name":"Suau"},{"code":"swq","name":"Sharwa"},{"code":"swr","name":"Saweru"},{"code":"sws","name":"Seluwasan"},{"code":"swt","name":"Sawila"},{"code":"swu","name":"Suwawa"},{"code":"swv","name":"Shekhawati"},{"code":"sww","name":"Sowa"},{"code":"swx","name":"Suruahรก"},{"code":"swy","name":"Sarua"},{"code":"sxb","name":"Suba"},{"code":"sxc","name":"Sicanian"},{"code":"sxe","name":"Sighu"},{"code":"sxg","name":"Shixing"},{"code":"sxk","name":"Southern Kalapuya"},{"code":"sxl","name":"Selian"},{"code":"sxm","name":"Samre"},{"code":"sxn","name":"Sangir"},{"code":"sxo","name":"Sorothaptic"},{"code":"sxr","name":"Saaroa"},{"code":"sxs","name":"Sasaru"},{"code":"sxu","name":"Upper Saxon"},{"code":"sxw","name":"Saxwe Gbe"},{"code":"sya","name":"Siang"},{"code":"syb","name":"Central Subanen"},{"code":"syc","name":"Classical Syriac"},{"code":"syi","name":"Seki"},{"code":"syk","name":"Sukur"},{"code":"syl","name":"Sylheti"},{"code":"sym","name":"Maya Samo"},{"code":"syn","name":"Senaya"},{"code":"syo","name":"Suoy"},{"code":"syr","name":"Syriac"},{"code":"sys","name":"Sinyar"},{"code":"syw","name":"Kagate"},{"code":"syx","name":"Samay"},{"code":"syy","name":"Al-Sayyid Bedouin Sign Language"},{"code":"sza","name":"Semelai"},{"code":"szb","name":"Ngalum"},{"code":"szc","name":"Semaq Beri"},{"code":"szd","name":"Seru"},{"code":"sze","name":"Seze"},{"code":"szg","name":"Sengele"},{"code":"szl","name":"Silesian"},{"code":"szn","name":"Sula"},{"code":"szp","name":"Suabo"},{"code":"szs","name":"Solomon Islands Sign Language"},{"code":"szv","name":"Isu (Fako Division)"},{"code":"szw","name":"Sawai"},{"code":"szy","name":"Sakizaya"},{"code":"taa","name":"Lower Tanana"},{"code":"tab","name":"Tabassaran"},{"code":"tac","name":"Lowland Tarahumara"},{"code":"tad","name":"Tause"},{"code":"tae","name":"Tariana"},{"code":"taf","name":"Tapirapรฉ"},{"code":"tag","name":"Tagoi"},{"code":"tah","name":"Tahitian"},{"code":"taj","name":"Eastern Tamang"},{"code":"tak","name":"Tala"},{"code":"tal","name":"Tal"},{"code":"tam","name":"Tamil"},{"code":"tan","name":"Tangale"},{"code":"tao","name":"Yami"},{"code":"tap","name":"Taabwa"},{"code":"taq","name":"Tamasheq"},{"code":"tar","name":"Central Tarahumara"},{"code":"tas","name":"Tay Boi"},{"code":"tat","name":"Tatar"},{"code":"tau","name":"Upper Tanana"},{"code":"tav","name":"Tatuyo"},{"code":"taw","name":"Tai"},{"code":"tax","name":"Tamki"},{"code":"tay","name":"Atayal"},{"code":"taz","name":"Tocho"},{"code":"tba","name":"Aikanรฃ"},{"code":"tbc","name":"Takia"},{"code":"tbd","name":"Kaki Ae"},{"code":"tbe","name":"Tanimbili"},{"code":"tbf","name":"Mandara"},{"code":"tbg","name":"North Tairora"},{"code":"tbh","name":"Dharawal"},{"code":"tbi","name":"Gaam"},{"code":"tbj","name":"Tiang"},{"code":"tbk","name":"Calamian Tagbanwa"},{"code":"tbl","name":"Tboli"},{"code":"tbm","name":"Tagbu"},{"code":"tbn","name":"Barro Negro Tunebo"},{"code":"tbo","name":"Tawala"},{"code":"tbp","name":"Diebroud"},{"code":"tbr","name":"Tumtum"},{"code":"tbs","name":"Tanguat"},{"code":"tbt","name":"Tembo (Kitembo)"},{"code":"tbu","name":"Tubar"},{"code":"tbv","name":"Tobo"},{"code":"tbw","name":"Tagbanwa"},{"code":"tbx","name":"Kapin"},{"code":"tby","name":"Tabaru"},{"code":"tbz","name":"Ditammari"},{"code":"tca","name":"Ticuna"},{"code":"tcb","name":"Tanacross"},{"code":"tcc","name":"Datooga"},{"code":"tcd","name":"Tafi"},{"code":"tce","name":"Southern Tutchone"},{"code":"tcf","name":"Malinaltepec Me'phaa"},{"code":"tcg","name":"Tamagario"},{"code":"tch","name":"Turks And Caicos Creole English"},{"code":"tci","name":"Wรกra"},{"code":"tck","name":"Tchitchege"},{"code":"tcl","name":"Taman (Myanmar)"},{"code":"tcm","name":"Tanahmerah"},{"code":"tcn","name":"Tichurong"},{"code":"tco","name":"Taungyo"},{"code":"tcp","name":"Tawr Chin"},{"code":"tcq","name":"Kaiy"},{"code":"tcs","name":"Torres Strait Creole"},{"code":"tct","name":"T'en"},{"code":"tcu","name":"Southeastern Tarahumara"},{"code":"tcw","name":"Tecpatlรกn Totonac"},{"code":"tcx","name":"Toda"},{"code":"tcy","name":"Tulu"},{"code":"tcz","name":"Thado Chin"},{"code":"tda","name":"Tagdal"},{"code":"tdb","name":"Panchpargania"},{"code":"tdc","name":"Emberรก-Tadรณ"},{"code":"tdd","name":"Tai Nรผa"},{"code":"tde","name":"Tiranige Diga Dogon"},{"code":"tdf","name":"Talieng"},{"code":"tdg","name":"Western Tamang"},{"code":"tdh","name":"Thulung"},{"code":"tdi","name":"Tomadino"},{"code":"tdj","name":"Tajio"},{"code":"tdk","name":"Tambas"},{"code":"tdl","name":"Sur"},{"code":"tdm","name":"Taruma"},{"code":"tdn","name":"Tondano"},{"code":"tdo","name":"Teme"},{"code":"tdq","name":"Tita"},{"code":"tdr","name":"Todrah"},{"code":"tds","name":"Doutai"},{"code":"tdt","name":"Tetun Dili"},{"code":"tdv","name":"Toro"},{"code":"tdx","name":"Tandroy-Mahafaly Malagasy"},{"code":"tdy","name":"Tadyawan"},{"code":"tea","name":"Temiar"},{"code":"teb","name":"Tetete"},{"code":"tec","name":"Terik"},{"code":"ted","name":"Tepo Krumen"},{"code":"tee","name":"Huehuetla Tepehua"},{"code":"tef","name":"Teressa"},{"code":"teg","name":"Teke-Tege"},{"code":"teh","name":"Tehuelche"},{"code":"tei","name":"Torricelli"},{"code":"tek","name":"Ibali Teke"},{"code":"tel","name":"Telugu"},{"code":"tem","name":"Timne"},{"code":"ten","name":"Tama (Colombia)"},{"code":"teo","name":"Teso"},{"code":"tep","name":"Tepecano"},{"code":"teq","name":"Temein"},{"code":"ter","name":"Tereno"},{"code":"tes","name":"Tengger"},{"code":"tet","name":"Tetum"},{"code":"teu","name":"Soo"},{"code":"tev","name":"Teor"},{"code":"tew","name":"Tewa (USA)"},{"code":"tex","name":"Tennet"},{"code":"tey","name":"Tulishi"},{"code":"tez","name":"Tetserret"},{"code":"tfi","name":"Tofin Gbe"},{"code":"tfn","name":"Tanaina"},{"code":"tfo","name":"Tefaro"},{"code":"tfr","name":"Teribe"},{"code":"tft","name":"Ternate"},{"code":"tga","name":"Sagalla"},{"code":"tgb","name":"Tobilung"},{"code":"tgc","name":"Tigak"},{"code":"tgd","name":"Ciwogai"},{"code":"tge","name":"Eastern Gorkha Tamang"},{"code":"tgf","name":"Chalikha"},{"code":"tgh","name":"Tobagonian Creole English"},{"code":"tgi","name":"Lawunuia"},{"code":"tgj","name":"Tagin"},{"code":"tgk","name":"Tajik"},{"code":"tgl","name":"Tagalog"},{"code":"tgn","name":"Tandaganon"},{"code":"tgo","name":"Sudest"},{"code":"tgp","name":"Tangoa"},{"code":"tgq","name":"Tring"},{"code":"tgr","name":"Tareng"},{"code":"tgs","name":"Nume"},{"code":"tgt","name":"Central Tagbanwa"},{"code":"tgu","name":"Tanggu"},{"code":"tgv","name":"Tingui-Boto"},{"code":"tgw","name":"Tagwana Senoufo"},{"code":"tgx","name":"Tagish"},{"code":"tgy","name":"Togoyo"},{"code":"tgz","name":"Tagalaka"},{"code":"tha","name":"Thai"},{"code":"thd","name":"Kuuk Thaayorre"},{"code":"the","name":"Chitwania Tharu"},{"code":"thf","name":"Thangmi"},{"code":"thh","name":"Northern Tarahumara"},{"code":"thi","name":"Tai Long"},{"code":"thk","name":"Kitharaka"},{"code":"thl","name":"Dangaura Tharu"},{"code":"thm","name":"Aheu"},{"code":"thn","name":"Thachanadan"},{"code":"thp","name":"Thompson"},{"code":"thq","name":"Kochila Tharu"},{"code":"thr","name":"Rana Tharu"},{"code":"ths","name":"Thakali"},{"code":"tht","name":"Tahltan"},{"code":"thu","name":"Thuri"},{"code":"thv","name":"Tahaggart Tamahaq"},{"code":"thy","name":"Tha"},{"code":"thz","name":"Tayart Tamajeq"},{"code":"tia","name":"Tidikelt Tamazight"},{"code":"tic","name":"Tira"},{"code":"tif","name":"Tifal"},{"code":"tig","name":"Tigre"},{"code":"tih","name":"Timugon Murut"},{"code":"tii","name":"Tiene"},{"code":"tij","name":"Tilung"},{"code":"tik","name":"Tikar"},{"code":"til","name":"Tillamook"},{"code":"tim","name":"Timbe"},{"code":"tin","name":"Tindi"},{"code":"tio","name":"Teop"},{"code":"tip","name":"Trimuris"},{"code":"tiq","name":"Tiรฉfo"},{"code":"tir","name":"Tigrinya"},{"code":"tis","name":"Masadiit Itneg"},{"code":"tit","name":"Tinigua"},{"code":"tiu","name":"Adasen"},{"code":"tiv","name":"Tiv"},{"code":"tiw","name":"Tiwi"},{"code":"tix","name":"Southern Tiwa"},{"code":"tiy","name":"Tiruray"},{"code":"tiz","name":"Tai Hongjin"},{"code":"tja","name":"Tajuasohn"},{"code":"tjg","name":"Tunjung"},{"code":"tji","name":"Northern Tujia"},{"code":"tjj","name":"Tjungundji"},{"code":"tjl","name":"Tai Laing"},{"code":"tjm","name":"Timucua"},{"code":"tjn","name":"Tonjon"},{"code":"tjo","name":"Temacine Tamazight"},{"code":"tjp","name":"Tjupany"},{"code":"tjs","name":"Southern Tujia"},{"code":"tju","name":"Tjurruru"},{"code":"tjw","name":"Djabwurrung"},{"code":"tka","name":"Trukรก"},{"code":"tkb","name":"Buksa"},{"code":"tkd","name":"Tukudede"},{"code":"tke","name":"Takwane"},{"code":"tkf","name":"Tukumanfรฉd"},{"code":"tkg","name":"Tesaka Malagasy"},{"code":"tkl","name":"Tokelau"},{"code":"tkm","name":"Takelma"},{"code":"tkn","name":"Toku-No-Shima"},{"code":"tkp","name":"Tikopia"},{"code":"tkq","name":"Tee"},{"code":"tkr","name":"Tsakhur"},{"code":"tks","name":"Takestani"},{"code":"tkt","name":"Kathoriya Tharu"},{"code":"tku","name":"Upper Necaxa Totonac"},{"code":"tkv","name":"Mur Pano"},{"code":"tkw","name":"Teanu"},{"code":"tkx","name":"Tangko"},{"code":"tkz","name":"Takua"},{"code":"tla","name":"Southwestern Tepehuan"},{"code":"tlb","name":"Tobelo"},{"code":"tlc","name":"Yecuatla Totonac"},{"code":"tld","name":"Talaud"},{"code":"tlf","name":"Telefol"},{"code":"tlg","name":"Tofanma"},{"code":"tlh","name":"Klingon"},{"code":"tli","name":"Tlingit"},{"code":"tlj","name":"Talinga-Bwisi"},{"code":"tlk","name":"Taloki"},{"code":"tll","name":"Tetela"},{"code":"tlm","name":"Tolomako"},{"code":"tln","name":"Talondo'"},{"code":"tlo","name":"Talodi"},{"code":"tlp","name":"Filomena Mata-Coahuitlรกn Totonac"},{"code":"tlq","name":"Tai Loi"},{"code":"tlr","name":"Talise"},{"code":"tls","name":"Tambotalo"},{"code":"tlt","name":"Sou Nama"},{"code":"tlu","name":"Tulehu"},{"code":"tlv","name":"Taliabu"},{"code":"tlx","name":"Khehek"},{"code":"tly","name":"Talysh"},{"code":"tma","name":"Tama (Chad)"},{"code":"tmb","name":"Avava"},{"code":"tmc","name":"Tumak"},{"code":"tmd","name":"Haruai"},{"code":"tme","name":"Tremembรฉ"},{"code":"tmf","name":"Toba-Maskoy"},{"code":"tmg","name":"Ternateรฑo"},{"code":"tmh","name":"Tamashek"},{"code":"tmi","name":"Tutuba"},{"code":"tmj","name":"Samarokena"},{"code":"tmk","name":"Northwestern Tamang"},{"code":"tml","name":"Tamnim Citak"},{"code":"tmm","name":"Tai Thanh"},{"code":"tmn","name":"Taman (Indonesia)"},{"code":"tmo","name":"Temoq"},{"code":"tmq","name":"Tumleo"},{"code":"tmr","name":"Jewish Babylonian Aramaic (ca. 200-1200 CE)"},{"code":"tms","name":"Tima"},{"code":"tmt","name":"Tasmate"},{"code":"tmu","name":"Iau"},{"code":"tmv","name":"Tembo (Motembo)"},{"code":"tmw","name":"Temuan"},{"code":"tmy","name":"Tami"},{"code":"tmz","name":"Tamanaku"},{"code":"tna","name":"Tacana"},{"code":"tnb","name":"Western Tunebo"},{"code":"tnc","name":"Tanimuca-Retuarรฃ"},{"code":"tnd","name":"Angosturas Tunebo"},{"code":"tng","name":"Tobanga"},{"code":"tnh","name":"Maiani"},{"code":"tni","name":"Tandia"},{"code":"tnk","name":"Kwamera"},{"code":"tnl","name":"Lenakel"},{"code":"tnm","name":"Tabla"},{"code":"tnn","name":"North Tanna"},{"code":"tno","name":"Toromono"},{"code":"tnp","name":"Whitesands"},{"code":"tnq","name":"Taino"},{"code":"tnr","name":"Mรฉnik"},{"code":"tns","name":"Tenis"},{"code":"tnt","name":"Tontemboan"},{"code":"tnu","name":"Tay Khang"},{"code":"tnv","name":"Tangchangya"},{"code":"tnw","name":"Tonsawang"},{"code":"tnx","name":"Tanema"},{"code":"tny","name":"Tongwe"},{"code":"tnz","name":"Ten'edn"},{"code":"tob","name":"Toba"},{"code":"toc","name":"Coyutla Totonac"},{"code":"tod","name":"Toma"},{"code":"tof","name":"Gizrra"},{"code":"tog","name":"Tonga (Nyasa)"},{"code":"toh","name":"Gitonga"},{"code":"toi","name":"Tonga (Zambia)"},{"code":"toj","name":"Tojolabal"},{"code":"tol","name":"Tolowa"},{"code":"tom","name":"Tombulu"},{"code":"ton","name":"Tonga (Tonga Islands)"},{"code":"too","name":"Xicotepec De Juรกrez Totonac"},{"code":"top","name":"Papantla Totonac"},{"code":"toq","name":"Toposa"},{"code":"tor","name":"Togbo-Vara Banda"},{"code":"tos","name":"Highland Totonac"},{"code":"tou","name":"Tho"},{"code":"tov","name":"Upper Taromi"},{"code":"tow","name":"Jemez"},{"code":"tox","name":"Tobian"},{"code":"toy","name":"Topoiyo"},{"code":"toz","name":"To"},{"code":"tpa","name":"Taupota"},{"code":"tpc","name":"Azoyรบ Me'phaa"},{"code":"tpe","name":"Tippera"},{"code":"tpf","name":"Tarpia"},{"code":"tpg","name":"Kula"},{"code":"tpi","name":"Tok Pisin"},{"code":"tpj","name":"Tapietรฉ"},{"code":"tpk","name":"Tupinikin"},{"code":"tpl","name":"Tlacoapa Me'phaa"},{"code":"tpm","name":"Tampulma"},{"code":"tpn","name":"Tupinambรก"},{"code":"tpo","name":"Tai Pao"},{"code":"tpp","name":"Pisaflores Tepehua"},{"code":"tpq","name":"Tukpa"},{"code":"tpr","name":"Tuparรญ"},{"code":"tpt","name":"Tlachichilco Tepehua"},{"code":"tpu","name":"Tampuan"},{"code":"tpv","name":"Tanapag"},{"code":"tpw","name":"Tupรญ"},{"code":"tpx","name":"Acatepec Me'phaa"},{"code":"tpy","name":"Trumai"},{"code":"tpz","name":"Tinputz"},{"code":"tqb","name":"Tembรฉ"},{"code":"tql","name":"Lehali"},{"code":"tqm","name":"Turumsa"},{"code":"tqn","name":"Tenino"},{"code":"tqo","name":"Toaripi"},{"code":"tqp","name":"Tomoip"},{"code":"tqq","name":"Tunni"},{"code":"tqr","name":"Torona"},{"code":"tqt","name":"Western Totonac"},{"code":"tqu","name":"Touo"},{"code":"tqw","name":"Tonkawa"},{"code":"tra","name":"Tirahi"},{"code":"trb","name":"Terebu"},{"code":"trc","name":"Copala Triqui"},{"code":"trd","name":"Turi"},{"code":"tre","name":"East Tarangan"},{"code":"trf","name":"Trinidadian Creole English"},{"code":"trg","name":"Lishรกn Didรกn"},{"code":"trh","name":"Turaka"},{"code":"tri","name":"Triรณ"},{"code":"trj","name":"Toram"},{"code":"trl","name":"Traveller Scottish"},{"code":"trm","name":"Tregami"},{"code":"trn","name":"Trinitario"},{"code":"tro","name":"Tarao Naga"},{"code":"trp","name":"Kok Borok"},{"code":"trq","name":"San Martรญn Itunyoso Triqui"},{"code":"trr","name":"Taushiro"},{"code":"trs","name":"Chicahuaxtla Triqui"},{"code":"trt","name":"Tunggare"},{"code":"tru","name":"Surayt"},{"code":"trv","name":"Taroko"},{"code":"trw","name":"Torwali"},{"code":"trx","name":"Tringgus-Sembaan Bidayuh"},{"code":"try","name":"Turung"},{"code":"trz","name":"Torรก"},{"code":"tsa","name":"Tsaangi"},{"code":"tsb","name":"Tsamai"},{"code":"tsc","name":"Tswa"},{"code":"tsd","name":"Tsakonian"},{"code":"tse","name":"Tunisian Sign Language"},{"code":"tsg","name":"Tausug"},{"code":"tsh","name":"Tsuvan"},{"code":"tsi","name":"Tsimshian"},{"code":"tsj","name":"Tshangla"},{"code":"tsk","name":"Tseku"},{"code":"tsl","name":"Ts'รผn-Lao"},{"code":"tsm","name":"Tรผrk ฤฐลŸaret Dili"},{"code":"tsn","name":"Tswana"},{"code":"tso","name":"Tsonga"},{"code":"tsp","name":"Northern Toussian"},{"code":"tsq","name":"Thai Sign Language"},{"code":"tsr","name":"Akei"},{"code":"tss","name":"Taiwan Sign Language"},{"code":"tst","name":"Tondi Songway Kiini"},{"code":"tsu","name":"Tsou"},{"code":"tsv","name":"Tsogo"},{"code":"tsw","name":"Tsishingini"},{"code":"tsx","name":"Mubami"},{"code":"tsy","name":"Tebul Sign Language"},{"code":"tsz","name":"Purepecha"},{"code":"tta","name":"Tutelo"},{"code":"ttb","name":"Gaa"},{"code":"ttc","name":"Tektiteko"},{"code":"ttd","name":"Tauade"},{"code":"tte","name":"Bwanabwana"},{"code":"ttf","name":"Tuotomb"},{"code":"ttg","name":"Tutong"},{"code":"tth","name":"Upper Ta'oih"},{"code":"tti","name":"Tobati"},{"code":"ttj","name":"Tooro"},{"code":"ttk","name":"Totoro"},{"code":"ttl","name":"Totela"},{"code":"ttm","name":"Northern Tutchone"},{"code":"ttn","name":"Towei"},{"code":"tto","name":"Lower Ta'oih"},{"code":"ttp","name":"Tombelala"},{"code":"ttq","name":"Tawallammat Tamajaq"},{"code":"ttr","name":"Tera"},{"code":"tts","name":"Northeastern Thai"},{"code":"ttt","name":"Muslim Tat"},{"code":"ttu","name":"Torau"},{"code":"ttv","name":"Titan"},{"code":"ttw","name":"Long Wat"},{"code":"tty","name":"Sikaritai"},{"code":"ttz","name":"Tsum"},{"code":"tua","name":"Wiarumus"},{"code":"tub","name":"Tรผbatulabal"},{"code":"tuc","name":"Mutu"},{"code":"tud","name":"Tuxรก"},{"code":"tue","name":"Tuyuca"},{"code":"tuf","name":"Central Tunebo"},{"code":"tug","name":"Tunia"},{"code":"tuh","name":"Taulil"},{"code":"tui","name":"Tupuri"},{"code":"tuj","name":"Tugutil"},{"code":"tuk","name":"Turkmen"},{"code":"tul","name":"Tula"},{"code":"tum","name":"Tumbuka"},{"code":"tun","name":"Tunica"},{"code":"tuo","name":"Tucano"},{"code":"tuq","name":"Tedaga"},{"code":"tur","name":"Turkish"},{"code":"tus","name":"Tuscarora"},{"code":"tuu","name":"Tututni"},{"code":"tuv","name":"Turkana"},{"code":"tux","name":"Tuxinรกwa"},{"code":"tuy","name":"Tugen"},{"code":"tuz","name":"Turka"},{"code":"tva","name":"Vaghua"},{"code":"tvd","name":"Tsuvadi"},{"code":"tve","name":"Te'un"},{"code":"tvk","name":"Southeast Ambrym"},{"code":"tvl","name":"Tuvalu"},{"code":"tvm","name":"Tela-Masbuar"},{"code":"tvn","name":"Tavoyan"},{"code":"tvo","name":"Tidore"},{"code":"tvs","name":"Taveta"},{"code":"tvt","name":"Tutsa Naga"},{"code":"tvu","name":"Tunen"},{"code":"tvw","name":"Sedoa"},{"code":"tvx","name":"Taivoan"},{"code":"tvy","name":"Timor Pidgin"},{"code":"twa","name":"Twana"},{"code":"twb","name":"Western Tawbuid"},{"code":"twc","name":"Teshenawa"},{"code":"twd","name":"Twents"},{"code":"twe","name":"Tewa (Indonesia)"},{"code":"twf","name":"Northern Tiwa"},{"code":"twg","name":"Tereweng"},{"code":"twh","name":"Tai Dรณn"},{"code":"twi","name":"Twi"},{"code":"twl","name":"Tawara"},{"code":"twm","name":"Tawang Monpa"},{"code":"twn","name":"Twendi"},{"code":"two","name":"Tswapong"},{"code":"twp","name":"Ere"},{"code":"twq","name":"Tasawaq"},{"code":"twr","name":"Southwestern Tarahumara"},{"code":"twt","name":"Turiwรกra"},{"code":"twu","name":"Termanu"},{"code":"tww","name":"Tuwari"},{"code":"twx","name":"Tewe"},{"code":"twy","name":"Tawoyan"},{"code":"txa","name":"Tombonuo"},{"code":"txb","name":"Tokharian B"},{"code":"txc","name":"Tsetsaut"},{"code":"txe","name":"Totoli"},{"code":"txg","name":"Tangut"},{"code":"txh","name":"Thracian"},{"code":"txi","name":"Ikpeng"},{"code":"txj","name":"Tarjumo"},{"code":"txm","name":"Tomini"},{"code":"txn","name":"West Tarangan"},{"code":"txo","name":"Toto"},{"code":"txq","name":"Tii"},{"code":"txr","name":"Tartessian"},{"code":"txs","name":"Tonsea"},{"code":"txt","name":"Citak"},{"code":"txu","name":"Kayapรณ"},{"code":"txx","name":"Tatana"},{"code":"txy","name":"Tanosy Malagasy"},{"code":"tya","name":"Tauya"},{"code":"tye","name":"Kyanga"},{"code":"tyh","name":"O'du"},{"code":"tyi","name":"Teke-Tsaayi"},{"code":"tyj","name":"Tai Do"},{"code":"tyl","name":"Thu Lao"},{"code":"tyn","name":"Kombai"},{"code":"typ","name":"Thaypan"},{"code":"tyr","name":"Tai Daeng"},{"code":"tys","name":"Tร y Sa Pa"},{"code":"tyt","name":"Tร y Tac"},{"code":"tyu","name":"Kua"},{"code":"tyv","name":"Tuvinian"},{"code":"tyx","name":"Teke-Tyee"},{"code":"tyy","name":"Tiyaa"},{"code":"tyz","name":"Tร y"},{"code":"tza","name":"Tanzanian Sign Language"},{"code":"tzh","name":"Tzeltal"},{"code":"tzj","name":"Tz'utujil"},{"code":"tzl","name":"Talossan"},{"code":"tzm","name":"Central Atlas Tamazight"},{"code":"tzn","name":"Tugun"},{"code":"tzo","name":"Tzotzil"},{"code":"tzx","name":"Tabriak"},{"code":"uam","name":"Uamuรฉ"},{"code":"uan","name":"Kuan"},{"code":"uar","name":"Tairuma"},{"code":"uba","name":"Ubang"},{"code":"ubi","name":"Ubi"},{"code":"ubl","name":"Buhi'non Bikol"},{"code":"ubr","name":"Ubir"},{"code":"ubu","name":"Umbu-Ungu"},{"code":"uby","name":"Ubykh"},{"code":"uda","name":"Uda"},{"code":"ude","name":"Udihe"},{"code":"udg","name":"Muduga"},{"code":"udi","name":"Udi"},{"code":"udj","name":"Ujir"},{"code":"udl","name":"Wuzlam"},{"code":"udm","name":"Udmurt"},{"code":"udu","name":"Uduk"},{"code":"ues","name":"Kioko"},{"code":"ufi","name":"Ufim"},{"code":"uga","name":"Ugaritic"},{"code":"ugb","name":"Kuku-Ugbanh"},{"code":"uge","name":"Ughele"},{"code":"ugn","name":"Ugandan Sign Language"},{"code":"ugo","name":"Ugong"},{"code":"ugy","name":"Uruguayan Sign Language"},{"code":"uha","name":"Uhami"},{"code":"uhn","name":"Damal"},{"code":"uig","name":"Uighur"},{"code":"uis","name":"Uisai"},{"code":"uiv","name":"Iyive"},{"code":"uji","name":"Tanjijili"},{"code":"uka","name":"Kaburi"},{"code":"ukg","name":"Ukuriguma"},{"code":"ukh","name":"Ukhwejo"},{"code":"uki","name":"Kui (India)"},{"code":"ukk","name":"Muak Sa-aak"},{"code":"ukl","name":"Ukrainian Sign Language"},{"code":"ukp","name":"Ukpe-Bayobiri"},{"code":"ukq","name":"Ukwa"},{"code":"ukr","name":"Ukrainian"},{"code":"uks","name":"Kaapor Sign Language"},{"code":"uku","name":"Ukue"},{"code":"ukv","name":"Kuku"},{"code":"ukw","name":"Ukwuani-Aboh-Ndoni"},{"code":"uky","name":"Kuuk-Yak"},{"code":"ula","name":"Fungwa"},{"code":"ulb","name":"Ulukwumi"},{"code":"ulc","name":"Ulch"},{"code":"ule","name":"Lule"},{"code":"ulf","name":"Afra"},{"code":"uli","name":"Ulithian"},{"code":"ulk","name":"Meriam Mir"},{"code":"ull","name":"Ullatan"},{"code":"ulm","name":"Ulumanda'"},{"code":"uln","name":"Unserdeutsch"},{"code":"ulu","name":"Uma' Lung"},{"code":"ulw","name":"Ulwa"},{"code":"uma","name":"Umatilla"},{"code":"umb","name":"Umbundu"},{"code":"umc","name":"Marrucinian"},{"code":"umd","name":"Umbindhamu"},{"code":"umg","name":"Morrobalama"},{"code":"umi","name":"Ukit"},{"code":"umm","name":"Umon"},{"code":"umn","name":"Makyan Naga"},{"code":"umo","name":"Umotรญna"},{"code":"ump","name":"Umpila"},{"code":"umr","name":"Umbugarla"},{"code":"ums","name":"Pendau"},{"code":"umu","name":"Munsee"},{"code":"una","name":"North Watut"},{"code":"und","name":"Undetermined"},{"code":"une","name":"Uneme"},{"code":"ung","name":"Ngarinyin"},{"code":"uni","name":"Uni"},{"code":"unk","name":"Enawenรฉ-Nawรฉ"},{"code":"unm","name":"Unami"},{"code":"unn","name":"Kurnai"},{"code":"unr","name":"Mundari"},{"code":"unu","name":"Unubahe"},{"code":"unx","name":"Munda"},{"code":"unz","name":"Unde Kaili"},{"code":"upi","name":"Umeda"},{"code":"upv","name":"Uripiv-Wala-Rano-Atchin"},{"code":"ura","name":"Urarina"},{"code":"urb","name":"Kaapor"},{"code":"urc","name":"Urningangg"},{"code":"urd","name":"Urdu"},{"code":"ure","name":"Uru"},{"code":"urf","name":"Uradhi"},{"code":"urg","name":"Urigina"},{"code":"urh","name":"Urhobo"},{"code":"uri","name":"Urim"},{"code":"urk","name":"Urak Lawoi'"},{"code":"url","name":"Urali"},{"code":"urm","name":"Urapmin"},{"code":"urn","name":"Uruangnirin"},{"code":"uro","name":"Ura (Papua New Guinea)"},{"code":"urp","name":"Uru-Pa-In"},{"code":"urr","name":"Lehalurup"},{"code":"urt","name":"Urat"},{"code":"uru","name":"Urumi"},{"code":"urv","name":"Uruava"},{"code":"urw","name":"Sop"},{"code":"urx","name":"Urimo"},{"code":"ury","name":"Orya"},{"code":"urz","name":"Uru-Eu-Wau-Wau"},{"code":"usa","name":"Usarufa"},{"code":"ush","name":"Ushojo"},{"code":"usi","name":"Usui"},{"code":"usk","name":"Usaghade"},{"code":"usp","name":"Uspanteco"},{"code":"uss","name":"us-Saare"},{"code":"usu","name":"Uya"},{"code":"uta","name":"Otank"},{"code":"ute","name":"Ute-Southern Paiute"},{"code":"uth","name":"ut-Hun"},{"code":"utp","name":"Amba (Solomon Islands)"},{"code":"utr","name":"Etulo"},{"code":"utu","name":"Utu"},{"code":"uum","name":"Urum"},{"code":"uun","name":"Kulon-Pazeh"},{"code":"uur","name":"Ura (Vanuatu)"},{"code":"uuu","name":"U"},{"code":"uve","name":"Fagauvea"},{"code":"uvh","name":"Uri"},{"code":"uvl","name":"Lote"},{"code":"uwa","name":"Kuku-Uwanh"},{"code":"uya","name":"Doko-Uyanga"},{"code":"uzb","name":"Uzbek"},{"code":"uzn","name":"Northern Uzbek"},{"code":"uzs","name":"Southern Uzbek"},{"code":"vaa","name":"Vaagri Booli"},{"code":"vae","name":"Vale"},{"code":"vaf","name":"Vafsi"},{"code":"vag","name":"Vagla"},{"code":"vah","name":"Varhadi-Nagpuri"},{"code":"vai","name":"Vai"},{"code":"vaj","name":"Northwestern วƒKung"},{"code":"val","name":"Vehes"},{"code":"vam","name":"Vanimo"},{"code":"van","name":"Valman"},{"code":"vao","name":"Vao"},{"code":"vap","name":"Vaiphei"},{"code":"var","name":"Huarijio"},{"code":"vas","name":"Vasavi"},{"code":"vau","name":"Vanuma"},{"code":"vav","name":"Varli"},{"code":"vay","name":"Wayu"},{"code":"vbb","name":"Southeast Babar"},{"code":"vbk","name":"Southwestern Bontok"},{"code":"vec","name":"Venetian"},{"code":"ved","name":"Veddah"},{"code":"vel","name":"Veluws"},{"code":"vem","name":"Vemgo-Mabas"},{"code":"ven","name":"Venda"},{"code":"veo","name":"Ventureรฑo"},{"code":"vep","name":"Veps"},{"code":"ver","name":"Mom Jango"},{"code":"vgr","name":"Vaghri"},{"code":"vgt","name":"Flemish Sign Language"},{"code":"vic","name":"Virgin Islands Creole English"},{"code":"vid","name":"Vidunda"},{"code":"vie","name":"Vietnamese"},{"code":"vif","name":"Vili"},{"code":"vig","name":"Viemo"},{"code":"vil","name":"Vilela"},{"code":"vin","name":"Vinza"},{"code":"vis","name":"Vishavan"},{"code":"vit","name":"Viti"},{"code":"viv","name":"Iduna"},{"code":"vka","name":"Kariyarra"},{"code":"vkj","name":"Kujarge"},{"code":"vkk","name":"Kaur"},{"code":"vkl","name":"Kulisusu"},{"code":"vkm","name":"Kamakan"},{"code":"vkn","name":"Koro Nulu"},{"code":"vko","name":"Kodeoha"},{"code":"vkp","name":"Korlai Creole Portuguese"},{"code":"vkt","name":"Tenggarong Kutai Malay"},{"code":"vku","name":"Kurrama"},{"code":"vkz","name":"Koro Zuba"},{"code":"vlp","name":"Valpei"},{"code":"vls","name":"Vlaams"},{"code":"vma","name":"Martuyhunira"},{"code":"vmb","name":"Barbaram"},{"code":"vmc","name":"Juxtlahuaca Mixtec"},{"code":"vmd","name":"Mudu Koraga"},{"code":"vme","name":"East Masela"},{"code":"vmf","name":"Mainfrรคnkisch"},{"code":"vmg","name":"Lungalunga"},{"code":"vmh","name":"Maraghei"},{"code":"vmi","name":"Miwa"},{"code":"vmj","name":"Ixtayutla Mixtec"},{"code":"vmk","name":"Makhuwa-Shirima"},{"code":"vml","name":"Malgana"},{"code":"vmm","name":"Mitlatongo Mixtec"},{"code":"vmp","name":"Soyaltepec Mazatec"},{"code":"vmq","name":"Soyaltepec Mixtec"},{"code":"vmr","name":"Marenje"},{"code":"vms","name":"Moksela"},{"code":"vmu","name":"Muluridyi"},{"code":"vmv","name":"Valley Maidu"},{"code":"vmw","name":"Makhuwa"},{"code":"vmx","name":"Tamazola Mixtec"},{"code":"vmy","name":"Ayautla Mazatec"},{"code":"vmz","name":"Mazatlรกn Mazatec"},{"code":"vnk","name":"Lovono"},{"code":"vnm","name":"Neve'ei"},{"code":"vnp","name":"Vunapu"},{"code":"vol","name":"Volapรผk"},{"code":"vor","name":"Voro"},{"code":"vot","name":"Votic"},{"code":"vra","name":"Vera'a"},{"code":"vro","name":"Vรตro"},{"code":"vrs","name":"Varisi"},{"code":"vrt","name":"Banam Bay"},{"code":"vsi","name":"Moldova Sign Language"},{"code":"vsl","name":"Venezuelan Sign Language"},{"code":"vsv","name":"Llengua de signes valenciana"},{"code":"vto","name":"Vitou"},{"code":"vum","name":"Vumbu"},{"code":"vun","name":"Vunjo"},{"code":"vut","name":"Vute"},{"code":"vwa","name":"Awa (China)"},{"code":"waa","name":"Walla Walla"},{"code":"wab","name":"Wab"},{"code":"wac","name":"Wasco-Wishram"},{"code":"wad","name":"Wamesa"},{"code":"wae","name":"Walser"},{"code":"waf","name":"Wakonรก"},{"code":"wag","name":"Wa'ema"},{"code":"wah","name":"Watubela"},{"code":"wai","name":"Wares"},{"code":"waj","name":"Waffa"},{"code":"wal","name":"Wolaitta"},{"code":"wam","name":"Wampanoag"},{"code":"wan","name":"Wan"},{"code":"wao","name":"Wappo"},{"code":"wap","name":"Wapishana"},{"code":"waq","name":"Wagiman"},{"code":"war","name":"Waray (Philippines)"},{"code":"was","name":"Washo"},{"code":"wat","name":"Kaninuwa"},{"code":"wau","name":"Waurรก"},{"code":"wav","name":"Waka"},{"code":"waw","name":"Waiwai"},{"code":"wax","name":"Marangis"},{"code":"way","name":"Wayana"},{"code":"waz","name":"Wampur"},{"code":"wba","name":"Warao"},{"code":"wbb","name":"Wabo"},{"code":"wbe","name":"Waritai"},{"code":"wbf","name":"Wara"},{"code":"wbh","name":"Wanda"},{"code":"wbi","name":"Vwanji"},{"code":"wbj","name":"Alagwa"},{"code":"wbk","name":"Waigali"},{"code":"wbl","name":"Wakhi"},{"code":"wbm","name":"Wa"},{"code":"wbp","name":"Warlpiri"},{"code":"wbq","name":"Waddar"},{"code":"wbr","name":"Wagdi"},{"code":"wbs","name":"West Bengal Sign Language"},{"code":"wbt","name":"Warnman"},{"code":"wbv","name":"Wajarri"},{"code":"wbw","name":"Woi"},{"code":"wca","name":"Yanomรกmi"},{"code":"wci","name":"Waci Gbe"},{"code":"wdd","name":"Wandji"},{"code":"wdg","name":"Wadaginam"},{"code":"wdj","name":"Wadjiginy"},{"code":"wdk","name":"Wadikali"},{"code":"wdu","name":"Wadjigu"},{"code":"wdy","name":"Wadjabangayi"},{"code":"wea","name":"Wewaw"},{"code":"wec","name":"Wรจ Western"},{"code":"wed","name":"Wedau"},{"code":"weg","name":"Wergaia"},{"code":"weh","name":"Weh"},{"code":"wei","name":"Kiunum"},{"code":"wem","name":"Weme Gbe"},{"code":"weo","name":"Wemale"},{"code":"wep","name":"Westphalien"},{"code":"wer","name":"Weri"},{"code":"wes","name":"Cameroon Pidgin"},{"code":"wet","name":"Perai"},{"code":"weu","name":"Rawngtu Chin"},{"code":"wew","name":"Wejewa"},{"code":"wfg","name":"Yafi"},{"code":"wga","name":"Wagaya"},{"code":"wgb","name":"Wagawaga"},{"code":"wgg","name":"Wangganguru"},{"code":"wgi","name":"Wahgi"},{"code":"wgo","name":"Waigeo"},{"code":"wgu","name":"Wirangu"},{"code":"wgy","name":"Warrgamay"},{"code":"wha","name":"Manusela"},{"code":"whg","name":"North Wahgi"},{"code":"whk","name":"Wahau Kenyah"},{"code":"whu","name":"Wahau Kayan"},{"code":"wib","name":"Southern Toussian"},{"code":"wic","name":"Wichita"},{"code":"wie","name":"Wik-Epa"},{"code":"wif","name":"Wik-Keyangan"},{"code":"wig","name":"Wik Ngathan"},{"code":"wih","name":"Wik-Me'anha"},{"code":"wii","name":"Minidien"},{"code":"wij","name":"Wik-Iiyanh"},{"code":"wik","name":"Wikalkan"},{"code":"wil","name":"Wilawila"},{"code":"wim","name":"Wik-Mungkan"},{"code":"win","name":"Ho-Chunk"},{"code":"wir","name":"Wirafรฉd"},{"code":"wiu","name":"Wiru"},{"code":"wiv","name":"Vitu"},{"code":"wiy","name":"Wiyot"},{"code":"wja","name":"Waja"},{"code":"wji","name":"Warji"},{"code":"wka","name":"Kw'adza"},{"code":"wkb","name":"Kumbaran"},{"code":"wkd","name":"Mo"},{"code":"wkl","name":"Kalanadi"},{"code":"wkr","name":"Keerray-Woorroong"},{"code":"wku","name":"Kunduvadi"},{"code":"wkw","name":"Wakawaka"},{"code":"wky","name":"Wangkayutyuru"},{"code":"wla","name":"Walio"},{"code":"wlc","name":"Mwali Comorian"},{"code":"wle","name":"Wolane"},{"code":"wlg","name":"Kunbarlang"},{"code":"wlh","name":"Welaun"},{"code":"wli","name":"Waioli"},{"code":"wlk","name":"Wailaki"},{"code":"wll","name":"Wali (Sudan)"},{"code":"wlm","name":"Middle Welsh"},{"code":"wln","name":"Walloon"},{"code":"wlo","name":"Wolio"},{"code":"wlr","name":"Wailapa"},{"code":"wls","name":"Wallisian"},{"code":"wlu","name":"Wuliwuli"},{"code":"wlv","name":"Wichรญ Lhamtรฉs Vejoz"},{"code":"wlw","name":"Walak"},{"code":"wlx","name":"Wali (Ghana)"},{"code":"wly","name":"Waling"},{"code":"wma","name":"Mawa (Nigeria)"},{"code":"wmb","name":"Wambaya"},{"code":"wmc","name":"Wamas"},{"code":"wmd","name":"Mamaindรฉ"},{"code":"wme","name":"Wambule"},{"code":"wmg","name":"Western Minyag"},{"code":"wmh","name":"Waima'a"},{"code":"wmi","name":"Wamin"},{"code":"wmm","name":"Maiwa (Indonesia)"},{"code":"wmn","name":"Waamwang"},{"code":"wmo","name":"Wom (Papua New Guinea)"},{"code":"wms","name":"Wambon"},{"code":"wmt","name":"Walmajarri"},{"code":"wmw","name":"Mwani"},{"code":"wmx","name":"Womo"},{"code":"wnb","name":"Wanambre"},{"code":"wnc","name":"Wantoat"},{"code":"wnd","name":"Wandarang"},{"code":"wne","name":"Waneci"},{"code":"wng","name":"Wanggom"},{"code":"wni","name":"Ndzwani Comorian"},{"code":"wnk","name":"Wanukaka"},{"code":"wnm","name":"Wanggamala"},{"code":"wnn","name":"Wunumara"},{"code":"wno","name":"Wano"},{"code":"wnp","name":"Wanap"},{"code":"wnu","name":"Usan"},{"code":"wnw","name":"Wintu"},{"code":"wny","name":"Waanyi"},{"code":"woa","name":"Kuwema"},{"code":"wob","name":"Wรจ Northern"},{"code":"woc","name":"Wogeo"},{"code":"wod","name":"Wolani"},{"code":"woe","name":"Woleaian"},{"code":"wof","name":"Gambian Wolof"},{"code":"wog","name":"Wogamusin"},{"code":"woi","name":"Kamang"},{"code":"wok","name":"Longto"},{"code":"wol","name":"Wolof"},{"code":"wom","name":"Wom (Nigeria)"},{"code":"won","name":"Wongo"},{"code":"woo","name":"Manombai"},{"code":"wor","name":"Woria"},{"code":"wos","name":"Hanga Hundi"},{"code":"wow","name":"Wawonii"},{"code":"woy","name":"Weyto"},{"code":"wpc","name":"Maco"},{"code":"wrb","name":"Waluwarra"},{"code":"wrd","name":"Warduji"},{"code":"wrg","name":"Gudjal"},{"code":"wrh","name":"Wiradjuri"},{"code":"wri","name":"Wariyangga"},{"code":"wrk","name":"Garrwa"},{"code":"wrl","name":"Warlmanpa"},{"code":"wrm","name":"Warumungu"},{"code":"wrn","name":"Warnang"},{"code":"wro","name":"Worrorra"},{"code":"wrp","name":"Waropen"},{"code":"wrr","name":"Wardaman"},{"code":"wrs","name":"Waris"},{"code":"wru","name":"Waru"},{"code":"wrv","name":"Waruna"},{"code":"wrw","name":"Gugu Warra"},{"code":"wrx","name":"Wae Rana"},{"code":"wry","name":"Merwari"},{"code":"wrz","name":"Waray (Australia)"},{"code":"wsa","name":"Warembori"},{"code":"wsg","name":"Adilabad Gondi"},{"code":"wsi","name":"Wusi"},{"code":"wsk","name":"Waskia"},{"code":"wsr","name":"Owenia"},{"code":"wss","name":"Wasa"},{"code":"wsu","name":"Wasu"},{"code":"wsv","name":"Wotapuri-Katarqalai"},{"code":"wtf","name":"Watiwa"},{"code":"wth","name":"Wathawurrung"},{"code":"wti","name":"Berta"},{"code":"wtk","name":"Watakataui"},{"code":"wtm","name":"Mewati"},{"code":"wtw","name":"Wotu"},{"code":"wua","name":"Wikngenchera"},{"code":"wub","name":"Wunambal"},{"code":"wud","name":"Wudu"},{"code":"wuh","name":"Wutunhua"},{"code":"wul","name":"Silimo"},{"code":"wum","name":"Wumbvu"},{"code":"wun","name":"Bungu"},{"code":"wur","name":"Wurrugu"},{"code":"wut","name":"Wutung"},{"code":"wuu","name":"Wu Chinese"},{"code":"wuv","name":"Wuvulu-Aua"},{"code":"wux","name":"Wulna"},{"code":"wuy","name":"Wauyai"},{"code":"wwa","name":"Waama"},{"code":"wwb","name":"Wakabunga"},{"code":"wwo","name":"Dorig"},{"code":"wwr","name":"Warrwa"},{"code":"www","name":"Wawa"},{"code":"wxa","name":"Waxianghua"},{"code":"wxw","name":"Wardandi"},{"code":"wya","name":"Wyandot"},{"code":"wyb","name":"Wangaaybuwan-Ngiyambaa"},{"code":"wyi","name":"Woiwurrung"},{"code":"wym","name":"Wymysorys"},{"code":"wyr","name":"Wayorรณ"},{"code":"wyy","name":"Western Fijian"},{"code":"xaa","name":"Andalusian Arabic"},{"code":"xab","name":"Sambe"},{"code":"xac","name":"Kachari"},{"code":"xad","name":"Adai"},{"code":"xae","name":"Aequian"},{"code":"xag","name":"Aghwan"},{"code":"xai","name":"Kaimbรฉ"},{"code":"xaj","name":"Ararandewรกra"},{"code":"xak","name":"Mรกku"},{"code":"xal","name":"Kalmyk"},{"code":"xam","name":"ว€Xam"},{"code":"xan","name":"Xamtanga"},{"code":"xao","name":"Khao"},{"code":"xap","name":"Apalachee"},{"code":"xaq","name":"Aquitanian"},{"code":"xar","name":"Karami"},{"code":"xas","name":"Kamas"},{"code":"xat","name":"Katawixi"},{"code":"xau","name":"Kauwera"},{"code":"xav","name":"Xavรกnte"},{"code":"xaw","name":"Kawaiisu"},{"code":"xay","name":"Kayan Mahakam"},{"code":"xbb","name":"Lower Burdekin"},{"code":"xbc","name":"Bactrian"},{"code":"xbd","name":"Bindal"},{"code":"xbe","name":"Bigambal"},{"code":"xbg","name":"Bunganditj"},{"code":"xbi","name":"Kombio"},{"code":"xbj","name":"Birrpayi"},{"code":"xbm","name":"Middle Breton"},{"code":"xbn","name":"Kenaboi"},{"code":"xbo","name":"Bolgarian"},{"code":"xbp","name":"Bibbulman"},{"code":"xbr","name":"Kambera"},{"code":"xbw","name":"Kambiwรก"},{"code":"xby","name":"Batjala"},{"code":"xcb","name":"Cumbric"},{"code":"xcc","name":"Camunic"},{"code":"xce","name":"Celtiberian"},{"code":"xcg","name":"Cisalpine Gaulish"},{"code":"xch","name":"Chemakum"},{"code":"xcl","name":"Classical Armenian"},{"code":"xcm","name":"Comecrudo"},{"code":"xcn","name":"Cotoname"},{"code":"xco","name":"Chorasmian"},{"code":"xcr","name":"Carian"},{"code":"xct","name":"Classical Tibetan"},{"code":"xcu","name":"Curonian"},{"code":"xcv","name":"Chuvantsy"},{"code":"xcw","name":"Coahuilteco"},{"code":"xcy","name":"Cayuse"},{"code":"xda","name":"Darkinyung"},{"code":"xdc","name":"Dacian"},{"code":"xdk","name":"Dharuk"},{"code":"xdm","name":"Edomite"},{"code":"xdo","name":"Kwandu"},{"code":"xdy","name":"Malayic Dayak"},{"code":"xeb","name":"Eblan"},{"code":"xed","name":"Hdi"},{"code":"xeg","name":"วXegwi"},{"code":"xel","name":"Kelo"},{"code":"xem","name":"Kembayan"},{"code":"xep","name":"Epi-Olmec"},{"code":"xer","name":"Xerรฉnte"},{"code":"xes","name":"Kesawai"},{"code":"xet","name":"Xetรก"},{"code":"xeu","name":"Keoru-Ahia"},{"code":"xfa","name":"Faliscan"},{"code":"xga","name":"Galatian"},{"code":"xgb","name":"Gbin"},{"code":"xgd","name":"Gudang"},{"code":"xgf","name":"Gabrielino-Fernandeรฑo"},{"code":"xgg","name":"Goreng"},{"code":"xgi","name":"Garingbal"},{"code":"xgl","name":"Galindan"},{"code":"xgm","name":"Dharumbal"},{"code":"xgr","name":"Garza"},{"code":"xgu","name":"Unggumi"},{"code":"xgw","name":"Guwa"},{"code":"xha","name":"Harami"},{"code":"xhc","name":"Hunnic"},{"code":"xhd","name":"Hadrami"},{"code":"xhe","name":"Khetrani"},{"code":"xho","name":"Xhosa"},{"code":"xhr","name":"Hernican"},{"code":"xht","name":"Hattic"},{"code":"xhu","name":"Hurrian"},{"code":"xhv","name":"Khua"},{"code":"xib","name":"Iberian"},{"code":"xii","name":"Xiri"},{"code":"xil","name":"Illyrian"},{"code":"xin","name":"Xinca"},{"code":"xir","name":"Xiriรขna"},{"code":"xis","name":"Kisan"},{"code":"xiv","name":"Indus Valley Language"},{"code":"xiy","name":"Xipaya"},{"code":"xjb","name":"Minjungbal"},{"code":"xjt","name":"Jaitmatang"},{"code":"xka","name":"Kalkoti"},{"code":"xkb","name":"Northern Nago"},{"code":"xkc","name":"Kho'ini"},{"code":"xkd","name":"Mendalam Kayan"},{"code":"xke","name":"Kereho"},{"code":"xkf","name":"Khengkha"},{"code":"xkg","name":"Kagoro"},{"code":"xki","name":"Kenyan Sign Language"},{"code":"xkj","name":"Kajali"},{"code":"xkk","name":"Kaco'"},{"code":"xkl","name":"Mainstream Kenyah"},{"code":"xkn","name":"Kayan River Kayan"},{"code":"xko","name":"Kiorr"},{"code":"xkp","name":"Kabatei"},{"code":"xkq","name":"Koroni"},{"code":"xkr","name":"Xakriabรก"},{"code":"xks","name":"Kumbewaha"},{"code":"xkt","name":"Kantosi"},{"code":"xku","name":"Kaamba"},{"code":"xkv","name":"Kgalagadi"},{"code":"xkw","name":"Kembra"},{"code":"xkx","name":"Karore"},{"code":"xky","name":"Uma' Lasan"},{"code":"xkz","name":"Kurtokha"},{"code":"xla","name":"Kamula"},{"code":"xlb","name":"Loup B"},{"code":"xlc","name":"Lycian"},{"code":"xld","name":"Lydian"},{"code":"xle","name":"Lemnian"},{"code":"xlg","name":"Ligurian (Ancient)"},{"code":"xli","name":"Liburnian"},{"code":"xln","name":"Alanic"},{"code":"xlo","name":"Loup A"},{"code":"xlp","name":"Lepontic"},{"code":"xls","name":"Lusitanian"},{"code":"xlu","name":"Cuneiform Luwian"},{"code":"xly","name":"Elymian"},{"code":"xma","name":"Mushungulu"},{"code":"xmb","name":"Mbonga"},{"code":"xmc","name":"Makhuwa-Marrevone"},{"code":"xmd","name":"Mbudum"},{"code":"xme","name":"Median"},{"code":"xmf","name":"Mingrelian"},{"code":"xmg","name":"Mengaka"},{"code":"xmh","name":"Kugu-Muminh"},{"code":"xmj","name":"Majera"},{"code":"xmk","name":"Ancient Macedonian"},{"code":"xml","name":"Malaysian Sign Language"},{"code":"xmm","name":"Manado Malay"},{"code":"xmn","name":"Manichaean Middle Persian"},{"code":"xmo","name":"Morerebi"},{"code":"xmp","name":"Kuku-Mu'inh"},{"code":"xmq","name":"Kuku-Mangk"},{"code":"xmr","name":"Meroitic"},{"code":"xms","name":"Moroccan Sign Language"},{"code":"xmt","name":"Matbat"},{"code":"xmu","name":"Kamu"},{"code":"xmv","name":"Antankarana Malagasy"},{"code":"xmw","name":"Tsimihety Malagasy"},{"code":"xmx","name":"Maden"},{"code":"xmy","name":"Mayaguduna"},{"code":"xmz","name":"Mori Bawah"},{"code":"xna","name":"Ancient North Arabian"},{"code":"xnb","name":"Kanakanabu"},{"code":"xng","name":"Middle Mongolian"},{"code":"xnh","name":"Kuanhua"},{"code":"xni","name":"Ngarigu"},{"code":"xnj","name":"Ngoni (Tanzania)"},{"code":"xnk","name":"Nganakarti"},{"code":"xnm","name":"Ngumbarl"},{"code":"xnn","name":"Northern Kankanay"},{"code":"xno","name":"Anglo-Norman"},{"code":"xnq","name":"Ngoni (Mozambique)"},{"code":"xnr","name":"Kangri"},{"code":"xns","name":"Kanashi"},{"code":"xnt","name":"Narragansett"},{"code":"xnu","name":"Nukunul"},{"code":"xny","name":"Nyiyaparli"},{"code":"xnz","name":"Kenzi"},{"code":"xoc","name":"O'chi'chi'"},{"code":"xod","name":"Kokoda"},{"code":"xog","name":"Soga"},{"code":"xoi","name":"Kominimung"},{"code":"xok","name":"Xokleng"},{"code":"xom","name":"Komo (Sudan)"},{"code":"xon","name":"Konkomba"},{"code":"xoo","name":"Xukurรบ"},{"code":"xop","name":"Kopar"},{"code":"xor","name":"Korubo"},{"code":"xow","name":"Kowaki"},{"code":"xpa","name":"Pirriya"},{"code":"xpb","name":"Northeastern Tasmanian"},{"code":"xpc","name":"Pecheneg"},{"code":"xpd","name":"Oyster Bay Tasmanian"},{"code":"xpe","name":"Liberia Kpelle"},{"code":"xpf","name":"Nuenonne"},{"code":"xpg","name":"Phrygian"},{"code":"xph","name":"North Midlands Tasmanian"},{"code":"xpi","name":"Pictish"},{"code":"xpj","name":"Mpalitjanh"},{"code":"xpk","name":"Kulina Pano"},{"code":"xpl","name":"Port Sorell Tasmanian"},{"code":"xpm","name":"Pumpokol"},{"code":"xpn","name":"Kapinawรก"},{"code":"xpo","name":"Pochutec"},{"code":"xpp","name":"Puyo-Paekche"},{"code":"xpq","name":"Mohegan-Pequot"},{"code":"xpr","name":"Parthian"},{"code":"xps","name":"Pisidian"},{"code":"xpt","name":"Punthamara"},{"code":"xpu","name":"Punic"},{"code":"xpv","name":"Northern Tasmanian"},{"code":"xpw","name":"Northwestern Tasmanian"},{"code":"xpx","name":"Southwestern Tasmanian"},{"code":"xpy","name":"Puyo"},{"code":"xpz","name":"Bruny Island Tasmanian"},{"code":"xqa","name":"Karakhanid"},{"code":"xqt","name":"Qatabanian"},{"code":"xra","name":"Krahรด"},{"code":"xrb","name":"Eastern Karaboro"},{"code":"xrd","name":"Gundungurra"},{"code":"xre","name":"Kreye"},{"code":"xrg","name":"Minang"},{"code":"xri","name":"Krikati-Timbira"},{"code":"xrm","name":"Armazic"},{"code":"xrn","name":"Arin"},{"code":"xrr","name":"Raetic"},{"code":"xrt","name":"Aranama-Tamique"},{"code":"xru","name":"Marriammu"},{"code":"xrw","name":"Karawa"},{"code":"xsa","name":"Sabaean"},{"code":"xsb","name":"Sambal"},{"code":"xsc","name":"Scythian"},{"code":"xsd","name":"Sidetic"},{"code":"xse","name":"Sempan"},{"code":"xsh","name":"Shamang"},{"code":"xsi","name":"Sio"},{"code":"xsj","name":"Subi"},{"code":"xsl","name":"South Slavey"},{"code":"xsm","name":"Kasem"},{"code":"xsn","name":"Sanga (Nigeria)"},{"code":"xso","name":"Solano"},{"code":"xsp","name":"Silopi"},{"code":"xsq","name":"Makhuwa-Saka"},{"code":"xsr","name":"Sherpa"},{"code":"xss","name":"Assan"},{"code":"xsu","name":"Sanumรก"},{"code":"xsv","name":"Sudovian"},{"code":"xsy","name":"Saisiyat"},{"code":"xta","name":"Alcozauca Mixtec"},{"code":"xtb","name":"Chazumba Mixtec"},{"code":"xtc","name":"Katcha-Kadugli-Miri"},{"code":"xtd","name":"Diuxi-Tilantongo Mixtec"},{"code":"xte","name":"Ketengban"},{"code":"xtg","name":"Transalpine Gaulish"},{"code":"xth","name":"Yitha Yitha"},{"code":"xti","name":"Sinicahua Mixtec"},{"code":"xtj","name":"San Juan Teita Mixtec"},{"code":"xtl","name":"Tijaltepec Mixtec"},{"code":"xtm","name":"Magdalena Peรฑasco Mixtec"},{"code":"xtn","name":"Northern Tlaxiaco Mixtec"},{"code":"xto","name":"Tokharian A"},{"code":"xtp","name":"San Miguel Piedras Mixtec"},{"code":"xtq","name":"Tumshuqese"},{"code":"xtr","name":"Early Tripuri"},{"code":"xts","name":"Sindihui Mixtec"},{"code":"xtt","name":"Tacahua Mixtec"},{"code":"xtu","name":"Cuyamecalco Mixtec"},{"code":"xtv","name":"Thawa"},{"code":"xtw","name":"Tawandรช"},{"code":"xty","name":"Yoloxochitl Mixtec"},{"code":"xua","name":"Alu Kurumba"},{"code":"xub","name":"Betta Kurumba"},{"code":"xud","name":"Umiida"},{"code":"xug","name":"Kunigami"},{"code":"xuj","name":"Jennu Kurumba"},{"code":"xul","name":"Ngunawal"},{"code":"xum","name":"Umbrian"},{"code":"xun","name":"Unggaranggu"},{"code":"xuo","name":"Kuo"},{"code":"xup","name":"Upper Umpqua"},{"code":"xur","name":"Urartian"},{"code":"xut","name":"Kuthant"},{"code":"xuu","name":"Khwedam"},{"code":"xve","name":"Venetic"},{"code":"xvi","name":"Kamviri"},{"code":"xvn","name":"Vandalic"},{"code":"xvo","name":"Volscian"},{"code":"xvs","name":"Vestinian"},{"code":"xwa","name":"Kwaza"},{"code":"xwc","name":"Woccon"},{"code":"xwd","name":"Wadi Wadi"},{"code":"xwe","name":"Xwela Gbe"},{"code":"xwg","name":"Kwegu"},{"code":"xwj","name":"Wajuk"},{"code":"xwk","name":"Wangkumara"},{"code":"xwl","name":"Western Xwla Gbe"},{"code":"xwo","name":"Written Oirat"},{"code":"xwr","name":"Kwerba Mamberamo"},{"code":"xwt","name":"Wotjobaluk"},{"code":"xww","name":"Wemba Wemba"},{"code":"xxb","name":"Boro (Ghana)"},{"code":"xxk","name":"Ke'o"},{"code":"xxm","name":"Minkin"},{"code":"xxr","name":"Koropรณ"},{"code":"xxt","name":"Tambora"},{"code":"xya","name":"Yaygir"},{"code":"xyb","name":"Yandjibara"},{"code":"xyj","name":"Mayi-Yapi"},{"code":"xyk","name":"Mayi-Kulan"},{"code":"xyl","name":"Yalakalore"},{"code":"xyt","name":"Mayi-Thakurti"},{"code":"xyy","name":"Yorta Yorta"},{"code":"xzh","name":"Zhang-Zhung"},{"code":"xzm","name":"Zemgalian"},{"code":"xzp","name":"Ancient Zapotec"},{"code":"yaa","name":"Yaminahua"},{"code":"yab","name":"Yuhup"},{"code":"yac","name":"Pass Valley Yali"},{"code":"yad","name":"Yagua"},{"code":"yae","name":"Pumรฉ"},{"code":"yaf","name":"Yaka (Democratic Republic of Congo)"},{"code":"yag","name":"Yรกmana"},{"code":"yah","name":"Yazgulyam"},{"code":"yai","name":"Yagnobi"},{"code":"yaj","name":"Banda-Yangere"},{"code":"yak","name":"Yakama"},{"code":"yal","name":"Yalunka"},{"code":"yam","name":"Yamba"},{"code":"yan","name":"Mayangna"},{"code":"yao","name":"Yao"},{"code":"yap","name":"Yapese"},{"code":"yaq","name":"Yaqui"},{"code":"yar","name":"Yabarana"},{"code":"yas","name":"Nugunu (Cameroon)"},{"code":"yat","name":"Yambeta"},{"code":"yau","name":"Yuwana"},{"code":"yav","name":"Yangben"},{"code":"yaw","name":"Yawalapitรญ"},{"code":"yax","name":"Yauma"},{"code":"yay","name":"Agwagwune"},{"code":"yaz","name":"Lokaa"},{"code":"yba","name":"Yala"},{"code":"ybb","name":"Yemba"},{"code":"ybe","name":"West Yugur"},{"code":"ybh","name":"Yakha"},{"code":"ybi","name":"Yamphu"},{"code":"ybj","name":"Hasha"},{"code":"ybk","name":"Bokha"},{"code":"ybl","name":"Yukuben"},{"code":"ybm","name":"Yaben"},{"code":"ybn","name":"Yabaรขna"},{"code":"ybo","name":"Yabong"},{"code":"ybx","name":"Yawiyo"},{"code":"yby","name":"Yaweyuha"},{"code":"ych","name":"Chesu"},{"code":"ycl","name":"Lolopo"},{"code":"ycn","name":"Yucuna"},{"code":"ycp","name":"Chepya"},{"code":"yda","name":"Yanda"},{"code":"ydd","name":"Eastern Yiddish"},{"code":"yde","name":"Yangum Dey"},{"code":"ydg","name":"Yidgha"},{"code":"ydk","name":"Yoidik"},{"code":"yea","name":"Ravula"},{"code":"yec","name":"Yeniche"},{"code":"yee","name":"Yimas"},{"code":"yei","name":"Yeni"},{"code":"yej","name":"Yevanic"},{"code":"yel","name":"Yela"},{"code":"yer","name":"Tarok"},{"code":"yes","name":"Nyankpa"},{"code":"yet","name":"Yetfa"},{"code":"yeu","name":"Yerukula"},{"code":"yev","name":"Yapunda"},{"code":"yey","name":"Yeyi"},{"code":"yga","name":"Malyangapa"},{"code":"ygi","name":"Yiningayi"},{"code":"ygl","name":"Yangum Gel"},{"code":"ygm","name":"Yagomi"},{"code":"ygp","name":"Gepo"},{"code":"ygr","name":"Yagaria"},{"code":"ygs","name":"Yolล‹u Sign Language"},{"code":"ygu","name":"Yugul"},{"code":"ygw","name":"Yagwoia"},{"code":"yha","name":"Baha Buyang"},{"code":"yhd","name":"Judeo-Iraqi Arabic"},{"code":"yhl","name":"Hlepho Phowa"},{"code":"yhs","name":"Yan-nhaล‹u Sign Language"},{"code":"yia","name":"Yinggarda"},{"code":"yid","name":"Yiddish"},{"code":"yif","name":"Ache"},{"code":"yig","name":"Wusa Nasu"},{"code":"yih","name":"Western Yiddish"},{"code":"yii","name":"Yidiny"},{"code":"yij","name":"Yindjibarndi"},{"code":"yik","name":"Dongshanba Lalo"},{"code":"yil","name":"Yindjilandji"},{"code":"yim","name":"Yimchungru Naga"},{"code":"yin","name":"Riang Lai"},{"code":"yip","name":"Pholo"},{"code":"yiq","name":"Miqie"},{"code":"yir","name":"North Awyu"},{"code":"yis","name":"Yis"},{"code":"yit","name":"Eastern Lalu"},{"code":"yiu","name":"Awu"},{"code":"yiv","name":"Northern Nisu"},{"code":"yix","name":"Axi Yi"},{"code":"yiz","name":"Azhe"},{"code":"yka","name":"Yakan"},{"code":"ykg","name":"Northern Yukaghir"},{"code":"yki","name":"Yoke"},{"code":"ykk","name":"Yakaikeke"},{"code":"ykl","name":"Khlula"},{"code":"ykm","name":"Kap"},{"code":"ykn","name":"Kua-nsi"},{"code":"yko","name":"Yasa"},{"code":"ykr","name":"Yekora"},{"code":"ykt","name":"Kathu"},{"code":"yku","name":"Kuamasi"},{"code":"yky","name":"Yakoma"},{"code":"yla","name":"Yaul"},{"code":"ylb","name":"Yaleba"},{"code":"yle","name":"Yele"},{"code":"ylg","name":"Yelogu"},{"code":"yli","name":"Angguruk Yali"},{"code":"yll","name":"Yil"},{"code":"ylm","name":"Limi"},{"code":"yln","name":"Langnian Buyang"},{"code":"ylo","name":"Naluo Yi"},{"code":"ylr","name":"Yalarnnga"},{"code":"ylu","name":"Aribwaung"},{"code":"yly","name":"Nyรขlayu"},{"code":"ymb","name":"Yambes"},{"code":"ymc","name":"Southern Muji"},{"code":"ymd","name":"Muda"},{"code":"yme","name":"Yameo"},{"code":"ymg","name":"Yamongeri"},{"code":"ymh","name":"Mili"},{"code":"ymi","name":"Moji"},{"code":"ymk","name":"Makwe"},{"code":"yml","name":"Iamalele"},{"code":"ymm","name":"Maay"},{"code":"ymn","name":"Sunum"},{"code":"ymo","name":"Yangum Mon"},{"code":"ymp","name":"Yamap"},{"code":"ymq","name":"Qila Muji"},{"code":"ymr","name":"Malasar"},{"code":"yms","name":"Mysian"},{"code":"ymx","name":"Northern Muji"},{"code":"ymz","name":"Muzi"},{"code":"yna","name":"Aluo"},{"code":"ynd","name":"Yandruwandha"},{"code":"yne","name":"Lang'e"},{"code":"yng","name":"Yango"},{"code":"ynk","name":"Naukan Yupik"},{"code":"ynl","name":"Yangulam"},{"code":"ynn","name":"Yana"},{"code":"yno","name":"Yong"},{"code":"ynq","name":"Yendang"},{"code":"yns","name":"Yansi"},{"code":"ynu","name":"Yahuna"},{"code":"yob","name":"Yoba"},{"code":"yog","name":"Yogad"},{"code":"yoi","name":"Yonaguni"},{"code":"yok","name":"Yokuts"},{"code":"yol","name":"Yola"},{"code":"yom","name":"Yombe"},{"code":"yon","name":"Yongkom"},{"code":"yor","name":"Yoruba"},{"code":"yot","name":"Yotti"},{"code":"yox","name":"Yoron"},{"code":"yoy","name":"Yoy"},{"code":"ypa","name":"Phala"},{"code":"ypb","name":"Labo Phowa"},{"code":"ypg","name":"Phola"},{"code":"yph","name":"Phupha"},{"code":"ypm","name":"Phuma"},{"code":"ypn","name":"Ani Phowa"},{"code":"ypo","name":"Alo Phola"},{"code":"ypp","name":"Phupa"},{"code":"ypz","name":"Phuza"},{"code":"yra","name":"Yerakai"},{"code":"yrb","name":"Yareba"},{"code":"yre","name":"Yaourรฉ"},{"code":"yrk","name":"Nenets"},{"code":"yrl","name":"Nhengatu"},{"code":"yrm","name":"Yirrk-Mel"},{"code":"yrn","name":"Yerong"},{"code":"yro","name":"Yaroamรซ"},{"code":"yrs","name":"Yarsun"},{"code":"yrw","name":"Yarawata"},{"code":"yry","name":"Yarluyandi"},{"code":"ysc","name":"Yassic"},{"code":"ysd","name":"Samatao"},{"code":"ysg","name":"Sonaga"},{"code":"ysl","name":"Yugoslavian Sign Language"},{"code":"ysm","name":"Myanmar Sign Language"},{"code":"ysn","name":"Sani"},{"code":"yso","name":"Nisi (China)"},{"code":"ysp","name":"Southern Lolopo"},{"code":"ysr","name":"Sirenik Yupik"},{"code":"yss","name":"Yessan-Mayo"},{"code":"ysy","name":"Sanie"},{"code":"yta","name":"Talu"},{"code":"ytl","name":"Tanglang"},{"code":"ytp","name":"Thopho"},{"code":"ytw","name":"Yout Wam"},{"code":"yty","name":"Yatay"},{"code":"yua","name":"Yucatec Maya"},{"code":"yub","name":"Yugambal"},{"code":"yuc","name":"Yuchi"},{"code":"yud","name":"Judeo-Tripolitanian Arabic"},{"code":"yue","name":"Yue Chinese"},{"code":"yuf","name":"Havasupai-Walapai-Yavapai"},{"code":"yug","name":"Yug"},{"code":"yui","name":"Yurutรญ"},{"code":"yuj","name":"Karkar-Yuri"},{"code":"yuk","name":"Yuki"},{"code":"yul","name":"Yulu"},{"code":"yum","name":"Quechan"},{"code":"yun","name":"Bena (Nigeria)"},{"code":"yup","name":"Yukpa"},{"code":"yuq","name":"Yuqui"},{"code":"yur","name":"Yurok"},{"code":"yut","name":"Yopno"},{"code":"yuw","name":"Yau (Morobe Province)"},{"code":"yux","name":"Southern Yukaghir"},{"code":"yuy","name":"East Yugur"},{"code":"yuz","name":"Yuracare"},{"code":"yva","name":"Yawa"},{"code":"yvt","name":"Yavitero"},{"code":"ywa","name":"Kalou"},{"code":"ywg","name":"Yinhawangka"},{"code":"ywl","name":"Western Lalu"},{"code":"ywn","name":"Yawanawa"},{"code":"ywq","name":"Wuding-Luquan Yi"},{"code":"ywr","name":"Yawuru"},{"code":"ywt","name":"Central Lalo"},{"code":"ywu","name":"Wumeng Nasu"},{"code":"yww","name":"Yawarawarga"},{"code":"yxa","name":"Mayawali"},{"code":"yxg","name":"Yagara"},{"code":"yxl","name":"Yardliyawarra"},{"code":"yxm","name":"Yinwum"},{"code":"yxu","name":"Yuyu"},{"code":"yxy","name":"Yabula Yabula"},{"code":"yyr","name":"Yir Yoront"},{"code":"yyu","name":"Yau (Sandaun Province)"},{"code":"yyz","name":"Ayizi"},{"code":"yzg","name":"E'ma Buyang"},{"code":"yzk","name":"Zokhuo"},{"code":"zaa","name":"Sierra de Juรกrez Zapotec"},{"code":"zab","name":"San Juan Guelavรญa Zapotec"},{"code":"zac","name":"Ocotlรกn Zapotec"},{"code":"zad","name":"Cajonos Zapotec"},{"code":"zae","name":"Yareni Zapotec"},{"code":"zaf","name":"Ayoquesco Zapotec"},{"code":"zag","name":"Zaghawa"},{"code":"zah","name":"Zangwal"},{"code":"zai","name":"Isthmus Zapotec"},{"code":"zaj","name":"Zaramo"},{"code":"zak","name":"Zanaki"},{"code":"zal","name":"Zauzou"},{"code":"zam","name":"Miahuatlรกn Zapotec"},{"code":"zao","name":"Ozolotepec Zapotec"},{"code":"zap","name":"Zapotec"},{"code":"zaq","name":"Aloรกpam Zapotec"},{"code":"zar","name":"Rincรณn Zapotec"},{"code":"zas","name":"Santo Domingo Albarradas Zapotec"},{"code":"zat","name":"Tabaa Zapotec"},{"code":"zau","name":"Zangskari"},{"code":"zav","name":"Yatzachi Zapotec"},{"code":"zaw","name":"Mitla Zapotec"},{"code":"zax","name":"Xadani Zapotec"},{"code":"zay","name":"Zaysete"},{"code":"zaz","name":"Zari"},{"code":"zba","name":"Balaibalan"},{"code":"zbc","name":"Central Berawan"},{"code":"zbe","name":"East Berawan"},{"code":"zbl","name":"Bliss"},{"code":"zbt","name":"Batui"},{"code":"zbu","name":"Bu (Bauchi State)"},{"code":"zbw","name":"West Berawan"},{"code":"zca","name":"Coatecas Altas Zapotec"},{"code":"zch","name":"Central Hongshuihe Zhuang"},{"code":"zdj","name":"Ngazidja Comorian"},{"code":"zea","name":"Zeeuws"},{"code":"zeg","name":"Zenag"},{"code":"zeh","name":"Eastern Hongshuihe Zhuang"},{"code":"zen","name":"Zenaga"},{"code":"zga","name":"Kinga"},{"code":"zgb","name":"Guibei Zhuang"},{"code":"zgh","name":"Standard Moroccan Tamazight"},{"code":"zgm","name":"Minz Zhuang"},{"code":"zgn","name":"Guibian Zhuang"},{"code":"zgr","name":"Magori"},{"code":"zha","name":"Chuang"},{"code":"zhb","name":"Zhaba"},{"code":"zhd","name":"Dai Zhuang"},{"code":"zhi","name":"Zhire"},{"code":"zhn","name":"Nong Zhuang"},{"code":"zho","name":"Chinese"},{"code":"zhw","name":"Zhoa"},{"code":"zia","name":"Zia"},{"code":"zib","name":"Zimbabwe Sign Language"},{"code":"zik","name":"Zimakani"},{"code":"zil","name":"Zialo"},{"code":"zim","name":"Mesme"},{"code":"zin","name":"Zinza"},{"code":"ziw","name":"Zigula"},{"code":"ziz","name":"Zizilivakan"},{"code":"zka","name":"Kaimbulawa"},{"code":"zkb","name":"Koibal"},{"code":"zkd","name":"Kadu"},{"code":"zkg","name":"Koguryo"},{"code":"zkh","name":"Khorezmian"},{"code":"zkk","name":"Karankawa"},{"code":"zkn","name":"Kanan"},{"code":"zko","name":"Kott"},{"code":"zkp","name":"Sรฃo Paulo Kaingรกng"},{"code":"zkr","name":"Zakhring"},{"code":"zkt","name":"Kitan"},{"code":"zku","name":"Kaurna"},{"code":"zkv","name":"Krevinian"},{"code":"zkz","name":"Khazar"},{"code":"zla","name":"Zula"},{"code":"zlj","name":"Liujiang Zhuang"},{"code":"zlm","name":"Malay (individual language)"},{"code":"zln","name":"Lianshan Zhuang"},{"code":"zlq","name":"Liuqian Zhuang"},{"code":"zma","name":"Manda (Australia)"},{"code":"zmb","name":"Zimba"},{"code":"zmc","name":"Margany"},{"code":"zmd","name":"Maridan"},{"code":"zme","name":"Mangerr"},{"code":"zmf","name":"Mfinu"},{"code":"zmg","name":"Marti Ke"},{"code":"zmh","name":"Makolkol"},{"code":"zmi","name":"Negeri Sembilan Malay"},{"code":"zmj","name":"Maridjabin"},{"code":"zmk","name":"Mandandanyi"},{"code":"zml","name":"Matngala"},{"code":"zmm","name":"Marimanindji"},{"code":"zmn","name":"Mbangwe"},{"code":"zmo","name":"Molo"},{"code":"zmp","name":"Mpuono"},{"code":"zmq","name":"Mituku"},{"code":"zmr","name":"Maranunggu"},{"code":"zms","name":"Mbesa"},{"code":"zmt","name":"Maringarr"},{"code":"zmu","name":"Muruwari"},{"code":"zmv","name":"Mbariman-Gudhinma"},{"code":"zmw","name":"Mbo (Democratic Republic of Congo)"},{"code":"zmx","name":"Bomitaba"},{"code":"zmy","name":"Mariyedi"},{"code":"zmz","name":"Mbandja"},{"code":"zna","name":"Zan Gula"},{"code":"zne","name":"Zande (individual language)"},{"code":"zng","name":"Mang"},{"code":"znk","name":"Manangkari"},{"code":"zns","name":"Mangas"},{"code":"zoc","name":"Copainalรก Zoque"},{"code":"zoh","name":"Chimalapa Zoque"},{"code":"zom","name":"Zou"},{"code":"zoo","name":"Asunciรณn Mixtepec Zapotec"},{"code":"zoq","name":"Tabasco Zoque"},{"code":"zor","name":"Rayรณn Zoque"},{"code":"zos","name":"Francisco Leรณn Zoque"},{"code":"zpa","name":"Lachiguiri Zapotec"},{"code":"zpb","name":"Yautepec Zapotec"},{"code":"zpc","name":"Choapan Zapotec"},{"code":"zpd","name":"Southeastern Ixtlรกn Zapotec"},{"code":"zpe","name":"Petapa Zapotec"},{"code":"zpf","name":"San Pedro Quiatoni Zapotec"},{"code":"zpg","name":"Guevea De Humboldt Zapotec"},{"code":"zph","name":"Totomachapan Zapotec"},{"code":"zpi","name":"Santa Marรญa Quiegolani Zapotec"},{"code":"zpj","name":"Quiavicuzas Zapotec"},{"code":"zpk","name":"Tlacolulita Zapotec"},{"code":"zpl","name":"Lachixรญo Zapotec"},{"code":"zpm","name":"Mixtepec Zapotec"},{"code":"zpn","name":"Santa Inรฉs Yatzechi Zapotec"},{"code":"zpo","name":"Amatlรกn Zapotec"},{"code":"zpp","name":"El Alto Zapotec"},{"code":"zpq","name":"Zoogocho Zapotec"},{"code":"zpr","name":"Santiago Xanica Zapotec"},{"code":"zps","name":"Coatlรกn Zapotec"},{"code":"zpt","name":"San Vicente Coatlรกn Zapotec"},{"code":"zpu","name":"Yalรกlag Zapotec"},{"code":"zpv","name":"Chichicapan Zapotec"},{"code":"zpw","name":"Zaniza Zapotec"},{"code":"zpx","name":"San Baltazar Loxicha Zapotec"},{"code":"zpy","name":"Mazaltepec Zapotec"},{"code":"zpz","name":"Texmelucan Zapotec"},{"code":"zqe","name":"Qiubei Zhuang"},{"code":"zra","name":"Kara (Korea)"},{"code":"zrg","name":"Mirgan"},{"code":"zrn","name":"Zerenkel"},{"code":"zro","name":"Zรกparo"},{"code":"zrp","name":"Zarphatic"},{"code":"zrs","name":"Mairasi"},{"code":"zsa","name":"Sarasira"},{"code":"zsk","name":"Kaskean"},{"code":"zsl","name":"Zambian Sign Language"},{"code":"zsm","name":"Standard Malay"},{"code":"zsr","name":"Southern Rincon Zapotec"},{"code":"zsu","name":"Sukurum"},{"code":"zte","name":"Elotepec Zapotec"},{"code":"ztg","name":"Xanaguรญa Zapotec"},{"code":"ztl","name":"Lapaguรญa-Guivini Zapotec"},{"code":"ztm","name":"San Agustรญn Mixtepec Zapotec"},{"code":"ztn","name":"Santa Catarina Albarradas Zapotec"},{"code":"ztp","name":"Loxicha Zapotec"},{"code":"ztq","name":"Quioquitani-Quierรญ Zapotec"},{"code":"zts","name":"Tilquiapan Zapotec"},{"code":"ztt","name":"Tejalapan Zapotec"},{"code":"ztu","name":"Gรผilรก Zapotec"},{"code":"ztx","name":"Zaachila Zapotec"},{"code":"zty","name":"Yatee Zapotec"},{"code":"zua","name":"Zeem"},{"code":"zuh","name":"Tokano"},{"code":"zul","name":"Zulu"},{"code":"zum","name":"Kumzari"},{"code":"zun","name":"Zuni"},{"code":"zuy","name":"Zumaya"},{"code":"zwa","name":"Zay"},{"code":"zxx","name":"No linguistic content"},{"code":"zyb","name":"Yongbei Zhuang"},{"code":"zyg","name":"Yang Zhuang"},{"code":"zyj","name":"Youjiang Zhuang"},{"code":"zyn","name":"Yongnan Zhuang"},{"code":"zyp","name":"Zyphe Chin"},{"code":"zza","name":"Dimili"},{"code":"zzj","name":"Zuojiang Zhuang"}] \ No newline at end of file diff --git a/tests/__data__/input/data/timezones.json b/tests/__data__/input/data/timezones.json new file mode 100644 index 000000000..0206e7e5c --- /dev/null +++ b/tests/__data__/input/data/timezones.json @@ -0,0 +1 @@ +[{"id":"Africa/Abidjan","utc_offset":"+00:00","countries":["CI","BF","GH","GM","GN","IS","ML","MR","SH","SL","SN","TG"]},{"id":"Africa/Accra","utc_offset":"+00:00","countries":["GH"]},{"id":"Africa/Addis_Ababa","utc_offset":"+03:00","countries":["ET"]},{"id":"Africa/Algiers","utc_offset":"+01:00","countries":["DZ"]},{"id":"Africa/Asmara","utc_offset":"+03:00","countries":["ER"]},{"id":"Africa/Bamako","utc_offset":"+00:00","countries":["ML"]},{"id":"Africa/Bangui","utc_offset":"+01:00","countries":["CF"]},{"id":"Africa/Banjul","utc_offset":"+00:00","countries":["GM"]},{"id":"Africa/Bissau","utc_offset":"+00:00","countries":["GW"]},{"id":"Africa/Blantyre","utc_offset":"+02:00","countries":["MW"]},{"id":"Africa/Brazzaville","utc_offset":"+01:00","countries":["CG"]},{"id":"Africa/Bujumbura","utc_offset":"+02:00","countries":["BI"]},{"id":"Africa/Cairo","utc_offset":"+02:00","countries":["EG"]},{"id":"Africa/Casablanca","utc_offset":"+00:00","countries":["MA"]},{"id":"Africa/Ceuta","utc_offset":"+01:00","countries":["ES"]},{"id":"Africa/Conakry","utc_offset":"+00:00","countries":["GN"]},{"id":"Africa/Dakar","utc_offset":"+00:00","countries":["SN"]},{"id":"Africa/Dar_es_Salaam","utc_offset":"+03:00","countries":["TZ"]},{"id":"Africa/Djibouti","utc_offset":"+03:00","countries":["DJ"]},{"id":"Africa/Douala","utc_offset":"+01:00","countries":["CM"]},{"id":"Africa/El_Aaiun","utc_offset":"+00:00","countries":["EH"]},{"id":"Africa/Freetown","utc_offset":"+00:00","countries":["SL"]},{"id":"Africa/Gaborone","utc_offset":"+02:00","countries":["BW"]},{"id":"Africa/Harare","utc_offset":"+02:00","countries":["ZW"]},{"id":"Africa/Johannesburg","utc_offset":"+02:00","countries":["ZA","LS","SZ"]},{"id":"Africa/Juba","utc_offset":"+02:00","countries":["SS"]},{"id":"Africa/Kampala","utc_offset":"+03:00","countries":["UG"]},{"id":"Africa/Khartoum","utc_offset":"+02:00","countries":["SD"]},{"id":"Africa/Kigali","utc_offset":"+02:00","countries":["RW"]},{"id":"Africa/Kinshasa","utc_offset":"+01:00","countries":["CD"]},{"id":"Africa/Lagos","utc_offset":"+01:00","countries":["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{"id":"Africa/Libreville","utc_offset":"+01:00","countries":["GA"]},{"id":"Africa/Lome","utc_offset":"+00:00","countries":["TG"]},{"id":"Africa/Luanda","utc_offset":"+01:00","countries":["AO"]},{"id":"Africa/Lubumbashi","utc_offset":"+02:00","countries":["CD"]},{"id":"Africa/Lusaka","utc_offset":"+02:00","countries":["ZM"]},{"id":"Africa/Malabo","utc_offset":"+01:00","countries":["GQ"]},{"id":"Africa/Maputo","utc_offset":"+02:00","countries":["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{"id":"Africa/Maseru","utc_offset":"+02:00","countries":["LS"]},{"id":"Africa/Mbabane","utc_offset":"+02:00","countries":["SZ"]},{"id":"Africa/Mogadishu","utc_offset":"+03:00","countries":["SO"]},{"id":"Africa/Monrovia","utc_offset":"+00:00","countries":["LR"]},{"id":"Africa/Nairobi","utc_offset":"+03:00","countries":["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{"id":"Africa/Ndjamena","utc_offset":"+01:00","countries":["TD"]},{"id":"Africa/Niamey","utc_offset":"+01:00","countries":["NE"]},{"id":"Africa/Nouakchott","utc_offset":"+00:00","countries":["MR"]},{"id":"Africa/Ouagadougou","utc_offset":"+00:00","countries":["BF"]},{"id":"Africa/Porto-Novo","utc_offset":"+01:00","countries":["BJ"]},{"id":"Africa/Sao_Tome","utc_offset":"+00:00","countries":["ST"]},{"id":"Africa/Tripoli","utc_offset":"+02:00","countries":["LY"]},{"id":"Africa/Tunis","utc_offset":"+01:00","countries":["TN"]},{"id":"Africa/Windhoek","utc_offset":"+01:00","countries":["NA"]},{"id":"America/Adak","utc_offset":"-10:00","countries":["US"]},{"id":"America/Anchorage","utc_offset":"-09:00","countries":["US"]},{"id":"America/Anguilla","utc_offset":"-04:00","countries":["AI"]},{"id":"America/Antigua","utc_offset":"-04:00","countries":["AG"]},{"id":"America/Araguaina","utc_offset":"-03:00","countries":["BR"]},{"id":"America/Argentina/Buenos_Aires","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/Catamarca","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/Cordoba","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/Jujuy","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/La_Rioja","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/Mendoza","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/Rio_Gallegos","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/Salta","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/San_Juan","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/San_Luis","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/Tucuman","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Argentina/Ushuaia","utc_offset":"-03:00","countries":["AR"]},{"id":"America/Aruba","utc_offset":"-04:00","countries":["AW"]},{"id":"America/Asuncion","utc_offset":"-04:00","countries":["PY"]},{"id":"America/Atikokan","utc_offset":"-05:00","countries":["CA"]},{"id":"America/Bahia","utc_offset":"-03:00","countries":["BR"]},{"id":"America/Bahia_Banderas","utc_offset":"-06:00","countries":["MX"]},{"id":"America/Barbados","utc_offset":"-04:00","countries":["BB"]},{"id":"America/Belem","utc_offset":"-03:00","countries":["BR"]},{"id":"America/Belize","utc_offset":"-06:00","countries":["BZ"]},{"id":"America/Blanc-Sablon","utc_offset":"-04:00","countries":["CA"]},{"id":"America/Boa_Vista","utc_offset":"-04:00","countries":["BR"]},{"id":"America/Bogota","utc_offset":"-05:00","countries":["CO"]},{"id":"America/Boise","utc_offset":"-07:00","countries":["US"]},{"id":"America/Cambridge_Bay","utc_offset":"-07:00","countries":["CA"]},{"id":"America/Campo_Grande","utc_offset":"-04:00","countries":["BR"]},{"id":"America/Cancun","utc_offset":"-05:00","countries":["MX"]},{"id":"America/Caracas","utc_offset":"-04:00","countries":["VE"]},{"id":"America/Cayenne","utc_offset":"-03:00","countries":["GF"]},{"id":"America/Cayman","utc_offset":"-05:00","countries":["KY"]},{"id":"America/Chicago","utc_offset":"-06:00","countries":["US"]},{"id":"America/Chihuahua","utc_offset":"-07:00","countries":["MX"]},{"id":"America/Costa_Rica","utc_offset":"-06:00","countries":["CR"]},{"id":"America/Creston","utc_offset":"-07:00","countries":["CA"]},{"id":"America/Cuiaba","utc_offset":"-04:00","countries":["BR"]},{"id":"America/Curacao","utc_offset":"-04:00","countries":["CW"]},{"id":"America/Danmarkshavn","utc_offset":"+00:00","countries":["GL"]},{"id":"America/Dawson","utc_offset":"-07:00","countries":["CA"]},{"id":"America/Dawson_Creek","utc_offset":"-07:00","countries":["CA"]},{"id":"America/Denver","utc_offset":"-07:00","countries":["US"]},{"id":"America/Detroit","utc_offset":"-05:00","countries":["US"]},{"id":"America/Dominica","utc_offset":"-04:00","countries":["DM"]},{"id":"America/Edmonton","utc_offset":"-07:00","countries":["CA"]},{"id":"America/Eirunepe","utc_offset":"-05:00","countries":["BR"]},{"id":"America/El_Salvador","utc_offset":"-06:00","countries":["SV"]},{"id":"America/Fort_Nelson","utc_offset":"-07:00","countries":["CA"]},{"id":"America/Fortaleza","utc_offset":"-03:00","countries":["BR"]},{"id":"America/Glace_Bay","utc_offset":"-04:00","countries":["CA"]},{"id":"America/Goose_Bay","utc_offset":"-04:00","countries":["CA"]},{"id":"America/Grand_Turk","utc_offset":"-05:00","countries":["TC"]},{"id":"America/Grenada","utc_offset":"-04:00","countries":["GD"]},{"id":"America/Guadeloupe","utc_offset":"-04:00","countries":["GP"]},{"id":"America/Guatemala","utc_offset":"-06:00","countries":["GT"]},{"id":"America/Guayaquil","utc_offset":"-05:00","countries":["EC"]},{"id":"America/Guyana","utc_offset":"-04:00","countries":["GY"]},{"id":"America/Halifax","utc_offset":"-04:00","countries":["CA"]},{"id":"America/Havana","utc_offset":"-05:00","countries":["CU"]},{"id":"America/Hermosillo","utc_offset":"-07:00","countries":["MX"]},{"id":"America/Indiana/Indianapolis","utc_offset":"-05:00","countries":["US"]},{"id":"America/Indiana/Knox","utc_offset":"-06:00","countries":["US"]},{"id":"America/Indiana/Marengo","utc_offset":"-05:00","countries":["US"]},{"id":"America/Indiana/Petersburg","utc_offset":"-05:00","countries":["US"]},{"id":"America/Indiana/Tell_City","utc_offset":"-06:00","countries":["US"]},{"id":"America/Indiana/Vevay","utc_offset":"-05:00","countries":["US"]},{"id":"America/Indiana/Vincennes","utc_offset":"-05:00","countries":["US"]},{"id":"America/Indiana/Winamac","utc_offset":"-05:00","countries":["US"]},{"id":"America/Inuvik","utc_offset":"-07:00","countries":["CA"]},{"id":"America/Iqaluit","utc_offset":"-05:00","countries":["CA"]},{"id":"America/Jamaica","utc_offset":"-05:00","countries":["JM"]},{"id":"America/Juneau","utc_offset":"-09:00","countries":["US"]},{"id":"America/Kentucky/Louisville","utc_offset":"-05:00","countries":["US"]},{"id":"America/Kentucky/Monticello","utc_offset":"-05:00","countries":["US"]},{"id":"America/Kralendijk","utc_offset":"-04:00","countries":["BQ"]},{"id":"America/La_Paz","utc_offset":"-04:00","countries":["BO"]},{"id":"America/Lima","utc_offset":"-05:00","countries":["PE"]},{"id":"America/Los_Angeles","utc_offset":"-08:00","countries":["US"]},{"id":"America/Lower_Princes","utc_offset":"-04:00","countries":["SX"]},{"id":"America/Maceio","utc_offset":"-03:00","countries":["BR"]},{"id":"America/Managua","utc_offset":"-06:00","countries":["NI"]},{"id":"America/Manaus","utc_offset":"-04:00","countries":["BR"]},{"id":"America/Marigot","utc_offset":"-04:00","countries":["MF"]},{"id":"America/Martinique","utc_offset":"-04:00","countries":["MQ"]},{"id":"America/Matamoros","utc_offset":"-06:00","countries":["MX"]},{"id":"America/Mazatlan","utc_offset":"-07:00","countries":["MX"]},{"id":"America/Menominee","utc_offset":"-06:00","countries":["US"]},{"id":"America/Merida","utc_offset":"-06:00","countries":["MX"]},{"id":"America/Metlakatla","utc_offset":"-09:00","countries":["US"]},{"id":"America/Mexico_City","utc_offset":"-06:00","countries":["MX"]},{"id":"America/Miquelon","utc_offset":"-03:00","countries":["PM"]},{"id":"America/Moncton","utc_offset":"-04:00","countries":["CA"]},{"id":"America/Monterrey","utc_offset":"-06:00","countries":["MX"]},{"id":"America/Montevideo","utc_offset":"-03:00","countries":["UY"]},{"id":"America/Montserrat","utc_offset":"-04:00","countries":["MS"]},{"id":"America/Nassau","utc_offset":"-05:00","countries":["BS"]},{"id":"America/New_York","utc_offset":"-05:00","countries":["US"]},{"id":"America/Nipigon","utc_offset":"-05:00","countries":["CA"]},{"id":"America/Nome","utc_offset":"-09:00","countries":["US"]},{"id":"America/Noronha","utc_offset":"-02:00","countries":["BR"]},{"id":"America/North_Dakota/Beulah","utc_offset":"-06:00","countries":["US"]},{"id":"America/North_Dakota/Center","utc_offset":"-06:00","countries":["US"]},{"id":"America/North_Dakota/New_Salem","utc_offset":"-06:00","countries":["US"]},{"id":"America/Nuuk","utc_offset":"-02:00","countries":["GL"]},{"id":"America/Ojinaga","utc_offset":"-07:00","countries":["MX"]},{"id":"America/Panama","utc_offset":"-05:00","countries":["PA","CA","KY"]},{"id":"America/Paramaribo","utc_offset":"-03:00","countries":["SR"]},{"id":"America/Phoenix","utc_offset":"-07:00","countries":["US","CA"]},{"id":"America/Port-au-Prince","utc_offset":"-05:00","countries":["HT"]},{"id":"America/Port_of_Spain","utc_offset":"-04:00","countries":["TT"]},{"id":"America/Porto_Velho","utc_offset":"-04:00","countries":["BR"]},{"id":"America/Puerto_Rico","utc_offset":"-04:00","countries":["PR","AG","CA","AI","AW","BL","BQ","CW","DM","GD","GP","KN","LC","MF","MS","SX","TT","VC","VG","VI"]},{"id":"America/Punta_Arenas","utc_offset":"-03:00","countries":["CL"]},{"id":"America/Rankin_Inlet","utc_offset":"-06:00","countries":["CA"]},{"id":"America/Recife","utc_offset":"-03:00","countries":["BR"]},{"id":"America/Regina","utc_offset":"-06:00","countries":["CA"]},{"id":"America/Resolute","utc_offset":"-06:00","countries":["CA"]},{"id":"America/Rio_Branco","utc_offset":"-05:00","countries":["BR"]},{"id":"America/Santarem","utc_offset":"-03:00","countries":["BR"]},{"id":"America/Santiago","utc_offset":"-04:00","countries":["CL"]},{"id":"America/Santo_Domingo","utc_offset":"-04:00","countries":["DO"]},{"id":"America/Sao_Paulo","utc_offset":"-03:00","countries":["BR"]},{"id":"America/Scoresbysund","utc_offset":"-01:00","countries":["GL"]},{"id":"America/Sitka","utc_offset":"-09:00","countries":["US"]},{"id":"America/St_Barthelemy","utc_offset":"-04:00","countries":["BL"]},{"id":"America/St_Johns","utc_offset":"-03:30","countries":["CA"]},{"id":"America/St_Kitts","utc_offset":"-04:00","countries":["KN"]},{"id":"America/St_Lucia","utc_offset":"-04:00","countries":["LC"]},{"id":"America/St_Thomas","utc_offset":"-04:00","countries":["VI"]},{"id":"America/St_Vincent","utc_offset":"-04:00","countries":["VC"]},{"id":"America/Swift_Current","utc_offset":"-06:00","countries":["CA"]},{"id":"America/Tegucigalpa","utc_offset":"-06:00","countries":["HN"]},{"id":"America/Thule","utc_offset":"-04:00","countries":["GL"]},{"id":"America/Thunder_Bay","utc_offset":"-05:00","countries":["CA"]},{"id":"America/Tijuana","utc_offset":"-08:00","countries":["MX"]},{"id":"America/Toronto","utc_offset":"-05:00","countries":["CA","BS"]},{"id":"America/Tortola","utc_offset":"-04:00","countries":["VG"]},{"id":"America/Vancouver","utc_offset":"-08:00","countries":["CA"]},{"id":"America/Whitehorse","utc_offset":"-07:00","countries":["CA"]},{"id":"America/Winnipeg","utc_offset":"-06:00","countries":["CA"]},{"id":"America/Yakutat","utc_offset":"-09:00","countries":["US"]},{"id":"Antarctica/Casey","utc_offset":"+08:00","countries":["AQ"]},{"id":"Antarctica/Davis","utc_offset":"+07:00","countries":["AQ"]},{"id":"Antarctica/DumontDUrville","utc_offset":"+10:00","countries":["AQ"]},{"id":"Antarctica/Macquarie","utc_offset":"+10:00","countries":["AU"]},{"id":"Antarctica/Mawson","utc_offset":"+05:00","countries":["AQ"]},{"id":"Antarctica/McMurdo","utc_offset":"+12:00","countries":["AQ"]},{"id":"Antarctica/Palmer","utc_offset":"-03:00","countries":["AQ"]},{"id":"Antarctica/Rothera","utc_offset":"-03:00","countries":["AQ"]},{"id":"Antarctica/Syowa","utc_offset":"+03:00","countries":["AQ"]},{"id":"Antarctica/Troll","utc_offset":"+00:00","countries":["AQ"]},{"id":"Antarctica/Vostok","utc_offset":"+06:00","countries":["AQ"]},{"id":"Arctic/Longyearbyen","utc_offset":"+01:00","countries":["SJ"]},{"id":"Asia/Aden","utc_offset":"+03:00","countries":["YE"]},{"id":"Asia/Almaty","utc_offset":"+05:00","countries":["KZ"]},{"id":"Asia/Amman","utc_offset":"+02:00","countries":["JO"]},{"id":"Asia/Anadyr","utc_offset":"+12:00","countries":["RU"]},{"id":"Asia/Aqtau","utc_offset":"+05:00","countries":["KZ"]},{"id":"Asia/Aqtobe","utc_offset":"+05:00","countries":["KZ"]},{"id":"Asia/Ashgabat","utc_offset":"+05:00","countries":["TM"]},{"id":"Asia/Atyrau","utc_offset":"+05:00","countries":["KZ"]},{"id":"Asia/Baghdad","utc_offset":"+03:00","countries":["IQ"]},{"id":"Asia/Bahrain","utc_offset":"+03:00","countries":["BH"]},{"id":"Asia/Baku","utc_offset":"+04:00","countries":["AZ"]},{"id":"Asia/Bangkok","utc_offset":"+07:00","countries":["TH","CX","KH","LA","VN"]},{"id":"Asia/Barnaul","utc_offset":"+07:00","countries":["RU"]},{"id":"Asia/Beirut","utc_offset":"+02:00","countries":["LB"]},{"id":"Asia/Bishkek","utc_offset":"+06:00","countries":["KG"]},{"id":"Asia/Brunei","utc_offset":"+08:00","countries":["BN"]},{"id":"Asia/Chita","utc_offset":"+09:00","countries":["RU"]},{"id":"Asia/Colombo","utc_offset":"+05:30","countries":["LK"]},{"id":"Asia/Damascus","utc_offset":"+02:00","countries":["SY"]},{"id":"Asia/Dhaka","utc_offset":"+06:00","countries":["BD"]},{"id":"Asia/Dili","utc_offset":"+09:00","countries":["TL"]},{"id":"Asia/Dubai","utc_offset":"+04:00","countries":["AE","OM","RE","SC","TF"]},{"id":"Asia/Dushanbe","utc_offset":"+05:00","countries":["TJ"]},{"id":"Asia/Famagusta","utc_offset":"+02:00","countries":["CY"]},{"id":"Asia/Gaza","utc_offset":"+02:00","countries":["PS"]},{"id":"Asia/Hebron","utc_offset":"+02:00","countries":["PS"]},{"id":"Asia/Ho_Chi_Minh","utc_offset":"+07:00","countries":["VN"]},{"id":"Asia/Hong_Kong","utc_offset":"+08:00","countries":["HK"]},{"id":"Asia/Hovd","utc_offset":"+07:00","countries":["MN"]},{"id":"Asia/Irkutsk","utc_offset":"+08:00","countries":["RU"]},{"id":"Asia/Jakarta","utc_offset":"+07:00","countries":["ID"]},{"id":"Asia/Jayapura","utc_offset":"+09:00","countries":["ID"]},{"id":"Asia/Jerusalem","utc_offset":"+02:00","countries":["IL"]},{"id":"Asia/Kabul","utc_offset":"+04:30","countries":["AF"]},{"id":"Asia/Kamchatka","utc_offset":"+12:00","countries":["RU"]},{"id":"Asia/Karachi","utc_offset":"+05:00","countries":["PK"]},{"id":"Asia/Kathmandu","utc_offset":"+05:45","countries":["NP"]},{"id":"Asia/Khandyga","utc_offset":"+09:00","countries":["RU"]},{"id":"Asia/Kolkata","utc_offset":"+05:30","countries":["IN"]},{"id":"Asia/Krasnoyarsk","utc_offset":"+07:00","countries":["RU"]},{"id":"Asia/Kuala_Lumpur","utc_offset":"+08:00","countries":["MY"]},{"id":"Asia/Kuching","utc_offset":"+08:00","countries":["MY","BN"]},{"id":"Asia/Kuwait","utc_offset":"+03:00","countries":["KW"]},{"id":"Asia/Macau","utc_offset":"+08:00","countries":["MO"]},{"id":"Asia/Magadan","utc_offset":"+11:00","countries":["RU"]},{"id":"Asia/Makassar","utc_offset":"+08:00","countries":["ID"]},{"id":"Asia/Manila","utc_offset":"+08:00","countries":["PH"]},{"id":"Asia/Muscat","utc_offset":"+04:00","countries":["OM"]},{"id":"Asia/Nicosia","utc_offset":"+02:00","countries":["CY"]},{"id":"Asia/Novokuznetsk","utc_offset":"+07:00","countries":["RU"]},{"id":"Asia/Novosibirsk","utc_offset":"+07:00","countries":["RU"]},{"id":"Asia/Omsk","utc_offset":"+06:00","countries":["RU"]},{"id":"Asia/Oral","utc_offset":"+05:00","countries":["KZ"]},{"id":"Asia/Phnom_Penh","utc_offset":"+07:00","countries":["KH"]},{"id":"Asia/Pontianak","utc_offset":"+07:00","countries":["ID"]},{"id":"Asia/Pyongyang","utc_offset":"+09:00","countries":["KP"]},{"id":"Asia/Qatar","utc_offset":"+03:00","countries":["QA","BH"]},{"id":"Asia/Qostanay","utc_offset":"+06:00","countries":["KZ"]},{"id":"Asia/Qyzylorda","utc_offset":"+05:00","countries":["KZ"]},{"id":"Asia/Riyadh","utc_offset":"+03:00","countries":["SA","AQ","KW","YE"]},{"id":"Asia/Sakhalin","utc_offset":"+11:00","countries":["RU"]},{"id":"Asia/Samarkand","utc_offset":"+05:00","countries":["UZ"]},{"id":"Asia/Seoul","utc_offset":"+09:00","countries":["KR"]},{"id":"Asia/Shanghai","utc_offset":"+08:00","countries":["CN"]},{"id":"Asia/Singapore","utc_offset":"+08:00","countries":["SG","MY"]},{"id":"Asia/Srednekolymsk","utc_offset":"+11:00","countries":["RU"]},{"id":"Asia/Taipei","utc_offset":"+08:00","countries":["TW"]},{"id":"Asia/Tashkent","utc_offset":"+05:00","countries":["UZ"]},{"id":"Asia/Tbilisi","utc_offset":"+04:00","countries":["GE"]},{"id":"Asia/Tehran","utc_offset":"+03:30","countries":["IR"]},{"id":"Asia/Thimphu","utc_offset":"+06:00","countries":["BT"]},{"id":"Asia/Tokyo","utc_offset":"+09:00","countries":["JP"]},{"id":"Asia/Tomsk","utc_offset":"+07:00","countries":["RU"]},{"id":"Asia/Ulaanbaatar","utc_offset":"+08:00","countries":["MN"]},{"id":"Asia/Urumqi","utc_offset":"+06:00","countries":["CN"]},{"id":"Asia/Ust-Nera","utc_offset":"+10:00","countries":["RU"]},{"id":"Asia/Vientiane","utc_offset":"+07:00","countries":["LA"]},{"id":"Asia/Vladivostok","utc_offset":"+10:00","countries":["RU"]},{"id":"Asia/Yakutsk","utc_offset":"+09:00","countries":["RU"]},{"id":"Asia/Yangon","utc_offset":"+06:30","countries":["MM","CC"]},{"id":"Asia/Yekaterinburg","utc_offset":"+05:00","countries":["RU"]},{"id":"Asia/Yerevan","utc_offset":"+04:00","countries":["AM"]},{"id":"Atlantic/Azores","utc_offset":"-01:00","countries":["PT"]},{"id":"Atlantic/Bermuda","utc_offset":"-04:00","countries":["BM"]},{"id":"Atlantic/Canary","utc_offset":"+00:00","countries":["ES"]},{"id":"Atlantic/Cape_Verde","utc_offset":"-01:00","countries":["CV"]},{"id":"Atlantic/Faroe","utc_offset":"+00:00","countries":["FO"]},{"id":"Atlantic/Madeira","utc_offset":"+00:00","countries":["PT"]},{"id":"Atlantic/Reykjavik","utc_offset":"+00:00","countries":["IS"]},{"id":"Atlantic/South_Georgia","utc_offset":"-02:00","countries":["GS"]},{"id":"Atlantic/St_Helena","utc_offset":"+00:00","countries":["SH"]},{"id":"Atlantic/Stanley","utc_offset":"-03:00","countries":["FK"]},{"id":"Australia/Adelaide","utc_offset":"+09:30","countries":["AU"]},{"id":"Australia/Brisbane","utc_offset":"+10:00","countries":["AU"]},{"id":"Australia/Broken_Hill","utc_offset":"+09:30","countries":["AU"]},{"id":"Australia/Darwin","utc_offset":"+09:30","countries":["AU"]},{"id":"Australia/Eucla","utc_offset":"+08:45","countries":["AU"]},{"id":"Australia/Hobart","utc_offset":"+10:00","countries":["AU"]},{"id":"Australia/Lindeman","utc_offset":"+10:00","countries":["AU"]},{"id":"Australia/Lord_Howe","utc_offset":"+10:30","countries":["AU"]},{"id":"Australia/Melbourne","utc_offset":"+10:00","countries":["AU"]},{"id":"Australia/Perth","utc_offset":"+08:00","countries":["AU"]},{"id":"Australia/Sydney","utc_offset":"+10:00","countries":["AU"]},{"id":"Europe/Amsterdam","utc_offset":"+01:00","countries":["NL"]},{"id":"Europe/Andorra","utc_offset":"+01:00","countries":["AD"]},{"id":"Europe/Astrakhan","utc_offset":"+04:00","countries":["RU"]},{"id":"Europe/Athens","utc_offset":"+02:00","countries":["GR"]},{"id":"Europe/Belgrade","utc_offset":"+01:00","countries":["RS","BA","HR","ME","MK","SI"]},{"id":"Europe/Berlin","utc_offset":"+01:00","countries":["DE","DK","NO","SE","SJ"]},{"id":"Europe/Bratislava","utc_offset":"+01:00","countries":["SK"]},{"id":"Europe/Brussels","utc_offset":"+01:00","countries":["BE","LU","NL"]},{"id":"Europe/Bucharest","utc_offset":"+02:00","countries":["RO"]},{"id":"Europe/Budapest","utc_offset":"+01:00","countries":["HU"]},{"id":"Europe/Chisinau","utc_offset":"+02:00","countries":["MD"]},{"id":"Europe/Copenhagen","utc_offset":"+01:00","countries":["DK"]},{"id":"Europe/Dublin","utc_offset":"+00:00","countries":["IE"]},{"id":"Europe/Gibraltar","utc_offset":"+01:00","countries":["GI"]},{"id":"Europe/Guernsey","utc_offset":"+00:00","countries":["GG"]},{"id":"Europe/Helsinki","utc_offset":"+02:00","countries":["FI","AX"]},{"id":"Europe/Isle_of_Man","utc_offset":"+00:00","countries":["IM"]},{"id":"Europe/Istanbul","utc_offset":"+03:00","countries":["TR"]},{"id":"Europe/Jersey","utc_offset":"+00:00","countries":["JE"]},{"id":"Europe/Kaliningrad","utc_offset":"+02:00","countries":["RU"]},{"id":"Europe/Kirov","utc_offset":"+03:00","countries":["RU"]},{"id":"Europe/Kyiv","utc_offset":"+02:00","countries":["UA"]},{"id":"Europe/Lisbon","utc_offset":"+00:00","countries":["PT"]},{"id":"Europe/Ljubljana","utc_offset":"+01:00","countries":["SI"]},{"id":"Europe/London","utc_offset":"+00:00","countries":["UK","GG","IM","JE"]},{"id":"Europe/Luxembourg","utc_offset":"+01:00","countries":["LU"]},{"id":"Europe/Madrid","utc_offset":"+01:00","countries":["ES"]},{"id":"Europe/Malta","utc_offset":"+01:00","countries":["MT"]},{"id":"Europe/Mariehamn","utc_offset":"+02:00","countries":["AX"]},{"id":"Europe/Minsk","utc_offset":"+03:00","countries":["BY"]},{"id":"Europe/Monaco","utc_offset":"+01:00","countries":["MC"]},{"id":"Europe/Moscow","utc_offset":"+03:00","countries":["RU"]},{"id":"Europe/Oslo","utc_offset":"+01:00","countries":["NO"]},{"id":"Europe/Paris","utc_offset":"+01:00","countries":["FR","MC"]},{"id":"Europe/Podgorica","utc_offset":"+01:00","countries":["ME"]},{"id":"Europe/Prague","utc_offset":"+01:00","countries":["CZ","SK"]},{"id":"Europe/Riga","utc_offset":"+02:00","countries":["LV"]},{"id":"Europe/Rome","utc_offset":"+01:00","countries":["IT","SM","VA"]},{"id":"Europe/Samara","utc_offset":"+04:00","countries":["RU"]},{"id":"Europe/San_Marino","utc_offset":"+01:00","countries":["SM"]},{"id":"Europe/Sarajevo","utc_offset":"+01:00","countries":["BA"]},{"id":"Europe/Saratov","utc_offset":"+04:00","countries":["RU"]},{"id":"Europe/Simferopol","utc_offset":"+03:00","countries":["RU","UA"]},{"id":"Europe/Skopje","utc_offset":"+01:00","countries":["MK"]},{"id":"Europe/Sofia","utc_offset":"+02:00","countries":["BG"]},{"id":"Europe/Stockholm","utc_offset":"+01:00","countries":["SE"]},{"id":"Europe/Tallinn","utc_offset":"+02:00","countries":["EE"]},{"id":"Europe/Tirane","utc_offset":"+01:00","countries":["AL"]},{"id":"Europe/Ulyanovsk","utc_offset":"+04:00","countries":["RU"]},{"id":"Europe/Vaduz","utc_offset":"+01:00","countries":["LI"]},{"id":"Europe/Vatican","utc_offset":"+01:00","countries":["VA"]},{"id":"Europe/Vienna","utc_offset":"+01:00","countries":["AT"]},{"id":"Europe/Vilnius","utc_offset":"+02:00","countries":["LT"]},{"id":"Europe/Volgograd","utc_offset":"+03:00","countries":["RU"]},{"id":"Europe/Warsaw","utc_offset":"+01:00","countries":["PL"]},{"id":"Europe/Zagreb","utc_offset":"+01:00","countries":["HR"]},{"id":"Europe/Zurich","utc_offset":"+01:00","countries":["CH","DE","LI"]},{"id":"Indian/Antananarivo","utc_offset":"+03:00","countries":["MG"]},{"id":"Indian/Chagos","utc_offset":"+06:00","countries":["IO"]},{"id":"Indian/Christmas","utc_offset":"+07:00","countries":["CX"]},{"id":"Indian/Cocos","utc_offset":"+06:30","countries":["CC"]},{"id":"Indian/Comoro","utc_offset":"+03:00","countries":["KM"]},{"id":"Indian/Kerguelen","utc_offset":"+05:00","countries":["TF"]},{"id":"Indian/Mahe","utc_offset":"+04:00","countries":["SC"]},{"id":"Indian/Maldives","utc_offset":"+05:00","countries":["MV","TF"]},{"id":"Indian/Mauritius","utc_offset":"+04:00","countries":["MU"]},{"id":"Indian/Mayotte","utc_offset":"+03:00","countries":["YT"]},{"id":"Indian/Reunion","utc_offset":"+04:00","countries":["RE"]},{"id":"Pacific/Apia","utc_offset":"+13:00","countries":["WS"]},{"id":"Pacific/Auckland","utc_offset":"+12:00","countries":["NZ","AQ"]},{"id":"Pacific/Bougainville","utc_offset":"+11:00","countries":["PG"]},{"id":"Pacific/Chatham","utc_offset":"+12:45","countries":["NZ"]},{"id":"Pacific/Chuuk","utc_offset":"+10:00","countries":["FM"]},{"id":"Pacific/Easter","utc_offset":"-06:00","countries":["CL"]},{"id":"Pacific/Efate","utc_offset":"+11:00","countries":["VU"]},{"id":"Pacific/Fakaofo","utc_offset":"+13:00","countries":["TK"]},{"id":"Pacific/Fiji","utc_offset":"+12:00","countries":["FJ"]},{"id":"Pacific/Funafuti","utc_offset":"+12:00","countries":["TV"]},{"id":"Pacific/Galapagos","utc_offset":"-06:00","countries":["EC"]},{"id":"Pacific/Gambier","utc_offset":"-09:00","countries":["PF"]},{"id":"Pacific/Guadalcanal","utc_offset":"+11:00","countries":["SB","FM"]},{"id":"Pacific/Guam","utc_offset":"+10:00","countries":["GU","MP"]},{"id":"Pacific/Honolulu","utc_offset":"-10:00","countries":["US"]},{"id":"Pacific/Kiritimati","utc_offset":"+14:00","countries":["KI"]},{"id":"Pacific/Kosrae","utc_offset":"+11:00","countries":["FM"]},{"id":"Pacific/Kwajalein","utc_offset":"+12:00","countries":["MH"]},{"id":"Pacific/Majuro","utc_offset":"+12:00","countries":["MH"]},{"id":"Pacific/Marquesas","utc_offset":"-09:30","countries":["PF"]},{"id":"Pacific/Midway","utc_offset":"-11:00","countries":["UM"]},{"id":"Pacific/Nauru","utc_offset":"+12:00","countries":["NR"]},{"id":"Pacific/Niue","utc_offset":"-11:00","countries":["NU"]},{"id":"Pacific/Norfolk","utc_offset":"+11:00","countries":["NF"]},{"id":"Pacific/Noumea","utc_offset":"+11:00","countries":["NC"]},{"id":"Pacific/Pago_Pago","utc_offset":"-11:00","countries":["AS","UM"]},{"id":"Pacific/Palau","utc_offset":"+09:00","countries":["PW"]},{"id":"Pacific/Pitcairn","utc_offset":"-08:00","countries":["PN"]},{"id":"Pacific/Pohnpei","utc_offset":"+11:00","countries":["FM"]},{"id":"Pacific/Port_Moresby","utc_offset":"+10:00","countries":["PG","AQ","FM"]},{"id":"Pacific/Rarotonga","utc_offset":"-10:00","countries":["CK"]},{"id":"Pacific/Saipan","utc_offset":"+10:00","countries":["MP"]},{"id":"Pacific/Tahiti","utc_offset":"-10:00","countries":["PF"]},{"id":"Pacific/Tarawa","utc_offset":"+12:00","countries":["KI","MH","TV","UM","WF"]},{"id":"Pacific/Tongatapu","utc_offset":"+13:00","countries":["TO"]},{"id":"Pacific/Wake","utc_offset":"+12:00","countries":["UM"]},{"id":"Pacific/Wallis","utc_offset":"+12:00","countries":["WF"]}] \ No newline at end of file diff --git a/tests/__data__/input/logs/generators.log b/tests/__data__/input/logs/generators.log deleted file mode 100644 index 4c599f099..000000000 --- a/tests/__data__/input/logs/generators.log +++ /dev/null @@ -1,73 +0,0 @@ -{"filepath":"categories/auto.m3u","count":0} -{"filepath":"categories/animation.m3u","count":0} -{"filepath":"categories/business.m3u","count":0} -{"filepath":"categories/classic.m3u","count":0} -{"filepath":"categories/comedy.m3u","count":0} -{"filepath":"categories/cooking.m3u","count":0} -{"filepath":"categories/culture.m3u","count":0} -{"filepath":"categories/documentary.m3u","count":0} -{"filepath":"categories/education.m3u","count":0} -{"filepath":"categories/entertainment.m3u","count":0} -{"filepath":"categories/family.m3u","count":0} -{"filepath":"categories/general.m3u","count":2} -{"filepath":"categories/kids.m3u","count":0} -{"filepath":"categories/legislative.m3u","count":0} -{"filepath":"categories/lifestyle.m3u","count":0} -{"filepath":"categories/movies.m3u","count":0} -{"filepath":"categories/music.m3u","count":0} -{"filepath":"categories/news.m3u","count":1} -{"filepath":"categories/outdoor.m3u","count":0} -{"filepath":"categories/relax.m3u","count":0} -{"filepath":"categories/religious.m3u","count":0} -{"filepath":"categories/series.m3u","count":0} -{"filepath":"categories/science.m3u","count":0} -{"filepath":"categories/shop.m3u","count":0} -{"filepath":"categories/sports.m3u","count":0} -{"filepath":"categories/travel.m3u","count":0} -{"filepath":"categories/weather.m3u","count":1} -{"filepath":"categories/xxx.m3u","count":1} -{"filepath":"categories/undefined.m3u","count":3} -{"filepath":"countries/cm.m3u","count":1} -{"filepath":"countries/ca.m3u","count":2} -{"filepath":"subdivisions/ca-on.m3u","count":1} -{"filepath":"countries/cv.m3u","count":1} -{"filepath":"countries/cg.m3u","count":1} -{"filepath":"countries/ro.m3u","count":1} -{"filepath":"countries/ru.m3u","count":2} -{"filepath":"countries/rw.m3u","count":1} -{"filepath":"countries/re.m3u","count":1} -{"filepath":"countries/bl.m3u","count":1} -{"filepath":"countries/sh.m3u","count":1} -{"filepath":"countries/kn.m3u","count":1} -{"filepath":"countries/int.m3u","count":1} -{"filepath":"languages/cat.m3u","count":1} -{"filepath":"languages/eng.m3u","count":1} -{"filepath":"languages/fra.m3u","count":1} -{"filepath":"languages/rus.m3u","count":1} -{"filepath":"languages/undefined.m3u","count":2} -{"filepath":"regions/afr.m3u","count":0} -{"filepath":"regions/amer.m3u","count":1} -{"filepath":"regions/apac.m3u","count":1} -{"filepath":"regions/arab.m3u","count":0} -{"filepath":"regions/asean.m3u","count":0} -{"filepath":"regions/asia.m3u","count":2} -{"filepath":"regions/carib.m3u","count":0} -{"filepath":"regions/cas.m3u","count":0} -{"filepath":"regions/cenamer.m3u","count":0} -{"filepath":"regions/cis.m3u","count":1} -{"filepath":"regions/emea.m3u","count":3} -{"filepath":"regions/eur.m3u","count":3} -{"filepath":"regions/hispam.m3u","count":0} -{"filepath":"regions/lac.m3u","count":0} -{"filepath":"regions/latam.m3u","count":0} -{"filepath":"regions/maghreb.m3u","count":0} -{"filepath":"regions/mena.m3u","count":0} -{"filepath":"regions/mideast.m3u","count":0} -{"filepath":"regions/nam.m3u","count":1} -{"filepath":"regions/noram.m3u","count":1} -{"filepath":"regions/nord.m3u","count":0} -{"filepath":"regions/oce.m3u","count":0} -{"filepath":"regions/sas.m3u","count":1} -{"filepath":"regions/southam.m3u","count":0} -{"filepath":"regions/ssa.m3u","count":0} -{"filepath":"regions/wafr.m3u","count":0} \ No newline at end of file diff --git a/tests/__data__/input/streams_format/in.m3u b/tests/__data__/input/playlist_format/in.m3u similarity index 100% rename from tests/__data__/input/streams_format/in.m3u rename to tests/__data__/input/playlist_format/in.m3u diff --git a/tests/__data__/input/streams_format/nl.m3u b/tests/__data__/input/playlist_format/nl.m3u similarity index 76% rename from tests/__data__/input/streams_format/nl.m3u rename to tests/__data__/input/playlist_format/nl.m3u index ddf912cf0..5fdeaea52 100644 --- a/tests/__data__/input/streams_format/nl.m3u +++ b/tests/__data__/input/playlist_format/nl.m3u @@ -3,9 +3,11 @@ #EXTVLCOPT:http-referrer=http://imn.iq #EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 http://stream.tvtap.net:8081/live/nl-npo2.stream/playlist.m3u8? +#EXTINF:-1 tvg-id="NPO2.nl",NPO 2 [Geo-blocked] +http://resolver.streaming.api.nos.nl/livestream?url=/live/npo/tvlive/npo2/npo22.isml/.m3u8 #EXTINF:-1 tvg-id="NPO2.nl",NPO 2 (342p) http://resolver.streaming.api.nos.nl/livestream?url=/live/npo/tvlive/npo2/npo2.isml/.m3u8 -#EXTINF:-1 tvg-id="NPO1.nl",NPO 1 (342p) [Geo-blocked] +#EXTINF:-1 tvg-id="NPO1.nl@SD",NPO 1 (342p) [Geo-blocked] http://resolver.streaming.api.nos.nl/livestream?url=/live/npo/tvlive/npo1/npo1.isml/.m3u8 #EXTINF:-1 tvg-id="",NPO 2 (Duplicate) http://resolver.streaming.api.nos.nl/livestream?url=/live/npo/tvlive/npo2/npo2.isml/.m3u8 diff --git a/tests/__data__/input/playlist_generate/ad.m3u b/tests/__data__/input/playlist_generate/ad.m3u new file mode 100644 index 000000000..9a1c9e175 --- /dev/null +++ b/tests/__data__/input/playlist_generate/ad.m3u @@ -0,0 +1,9 @@ +#EXTM3U +#EXTINF:-1 tvg-id="Zoo.ad@HD",Zoo (720p) +https://iptv-all.lanesh4d0w.repl.co/andorra/zoo +#EXTINF:-1 tvg-id="AndorraTV.ad@SD",ATV +https://iptv-all.lanesh4d0w.repl.co/andorra/atv +#EXTINF:-1 tvg-id="AndorraTV.ad@HD",ATV HD +https://iptv-all.lanesh4d0w.repl.co/andorra/atv_hd +#EXTINF:-1 tvg-id="AndorraTV.ad",ATV +https://iptv-all.lanesh4d0w.repl.co/andorra/atv2 diff --git a/tests/__data__/input/playlist_generate/ca.m3u b/tests/__data__/input/playlist_generate/ca.m3u new file mode 100644 index 000000000..9c198b682 --- /dev/null +++ b/tests/__data__/input/playlist_generate/ca.m3u @@ -0,0 +1,3 @@ +#EXTM3U +#EXTINF:-1 tvg-id="MeteoMedia.ca",Meteomedia +http://encodercdn1.frontline.ca/encoder181/output/Meteo_Media_720p/playlist.m3u8 diff --git a/tests/__data__/input/playlist_generate/in.m3u b/tests/__data__/input/playlist_generate/in.m3u new file mode 100644 index 000000000..62594eb4b --- /dev/null +++ b/tests/__data__/input/playlist_generate/in.m3u @@ -0,0 +1,3 @@ +#EXTM3U +#EXTINF:-1 tvg-id="",Daawah TV +http://51.15.246.58:8081/daawahtv/daawahtv2/playlist.m3u8 diff --git a/tests/__data__/input/playlist_generate/kg.m3u b/tests/__data__/input/playlist_generate/kg.m3u new file mode 100644 index 000000000..9c1d5a575 --- /dev/null +++ b/tests/__data__/input/playlist_generate/kg.m3u @@ -0,0 +1,3 @@ +#EXTM3U +#EXTINF:-1 tvg-id="ElTR.kg",ะญะปะขะ  (480p) [Not 24/7] +http://gohoski.fvds.ru:3000/mediabay/162/index.m3u8 diff --git a/tests/__data__/input/playlist_generate/uk.m3u b/tests/__data__/input/playlist_generate/uk.m3u new file mode 100644 index 000000000..5e8c7318e --- /dev/null +++ b/tests/__data__/input/playlist_generate/uk.m3u @@ -0,0 +1,3 @@ +#EXTM3U +#EXTINF:-1 tvg-id="BBCNews.uk",BBC News HD +http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8 diff --git a/tests/__data__/input/playlist_generate/unsorted.m3u b/tests/__data__/input/playlist_generate/unsorted.m3u new file mode 100644 index 000000000..b2b798b15 --- /dev/null +++ b/tests/__data__/input/playlist_generate/unsorted.m3u @@ -0,0 +1,11 @@ +#EXTM3U +#EXTINF:-1 tvg-id="LDPRTV.ru",ะ›ะ”ะŸะ  ะขะ’ (1080p) +http://46.46.143.222:1935/live/mp4:ldpr.stream/blocked.m3u8 +#EXTINF:-1 tvg-id="VisitXTV.nl",Visit-X TV +https://stream.visit-x.tv/vxtv/ngrp:live_all/30fps.m3u8 +#EXTINF:-1 tvg-id="" user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",Andorra TV (720p) [Not 24/7] +#EXTVLCOPT:http-referrer=http://imn.iq +#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 +http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index2.m3u8 +#EXTINF:-1 tvg-id="DunaWorld.hu",Duna World (576i) +http://146.59.85.40:89/dunaworld/index.m3u8 diff --git a/tests/__data__/input/streams_test/ag.m3u b/tests/__data__/input/playlist_test/ag.m3u similarity index 78% rename from tests/__data__/input/streams_test/ag.m3u rename to tests/__data__/input/playlist_test/ag.m3u index c2342183a..66b32b21d 100644 --- a/tests/__data__/input/streams_test/ag.m3u +++ b/tests/__data__/input/playlist_test/ag.m3u @@ -1,5 +1,5 @@ #EXTM3U #EXTINF:-1 tvg-id="ABSTV.ag",ABS TV https://tego-cdn2a.sibercdn.com/Live_TV-ABSTV-10/tracks-v3a1/rewind-7200.m3u8?token=e5f61e7be8363eb781b4bdfe591bf917dd529c1a-SjY3NzRTbDZQNnFQVkZaNkZja2RxV3JKc1VBa05zQkdMNStJakRGV0VTTzNrOEVGVUlIQmxta1NLV0o3bzdVdQ-1736094545-1736008145 -#EXTINF:-1 tvg-id="ABSTV.ag",ABS TV (1080p) [Not 24/7] +#EXTINF:-1 tvg-id="ABSTV.ag@HD",ABS TV (1080p) [Not 24/7] https://query-streamlink.herokuapp.com/iptv-query?streaming-ip=https://www.twitch.tv/absliveantigua3 \ No newline at end of file diff --git a/tests/__data__/input/test_results/all.js b/tests/__data__/input/playlist_test/results.js similarity index 100% rename from tests/__data__/input/test_results/all.js rename to tests/__data__/input/playlist_test/results.js diff --git a/tests/__data__/input/streams_report/br.m3u b/tests/__data__/input/playlist_update/br.m3u similarity index 100% rename from tests/__data__/input/streams_report/br.m3u rename to tests/__data__/input/playlist_update/br.m3u diff --git a/tests/__data__/input/streams_update/cy.m3u b/tests/__data__/input/playlist_update/cy.m3u similarity index 62% rename from tests/__data__/input/streams_update/cy.m3u rename to tests/__data__/input/playlist_update/cy.m3u index 581d0961b..439794ad7 100644 --- a/tests/__data__/input/streams_update/cy.m3u +++ b/tests/__data__/input/playlist_update/cy.m3u @@ -3,3 +3,5 @@ http://l6.cloudskep.com/rikcy/rikhd/playlist.m3u8 #EXTINF:-1 tvg-id="",RIK 2 http://l6.cloudskep.com/rikcy/rik2/playlist.m3u8 +#EXTINF:-1 tvg-id="AdaTV.cy",AdaTV +https://ythls.onrender.com/channel/UC40TUSUx490U5uR1lZt3Ajg.m3u8 diff --git a/tests/__data__/input/issues/all.js b/tests/__data__/input/playlist_update/issues.js similarity index 87% rename from tests/__data__/input/issues/all.js rename to tests/__data__/input/playlist_update/issues.js index ff62b063f..d12eeb7d8 100644 --- a/tests/__data__/input/issues/all.js +++ b/tests/__data__/input/playlist_update/issues.js @@ -292,7 +292,7 @@ module.exports = [ closed_at: null, author_association: 'COLLABORATOR', active_lock_reason: null, - body: '### Channel ID\n\nManoramaNews.in\n\n### Stream URL\n\nhttps://ythls.onrender.com/channel/UCP0uG-mcMImgKnJz-VjJZmQ.m3u8\n\n### Label\n\nNot 24/7\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv/issues/14007#issuecomment-1686942043\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', + body: '### Stream ID\n\nManoramaNews.in\n\n### Stream URL\n\nhttps://ythls.onrender.com/channel/UCP0uG-mcMImgKnJz-VjJZmQ.m3u8\n\n### Label\n\nNot 24/7\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv/issues/14007#issuecomment-1686942043\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14179/reactions', total_count: 0, @@ -371,7 +371,7 @@ module.exports = [ closed_at: null, author_association: 'COLLABORATOR', active_lock_reason: null, - body: '### Channel ID\n\nTV3.my\n\n### Stream URL\n\nhttps://live-streams-ssai-01.tonton.com.my/live/2dd2b7cd-1b34-4871-b669-57b5c9beca23/live.isml/.m3u8\n\n### Label\n\nNone\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv/issues/14063#issuecomment-1695783106\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', + body: '### Stream ID\n\nTV3.my\n\n### Stream URL\n\nhttps://live-streams-ssai-01.tonton.com.my/live/2dd2b7cd-1b34-4871-b669-57b5c9beca23/live.isml/.m3u8\n\n### Label\n\nNone\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv/issues/14063#issuecomment-1695783106\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14178/reactions', total_count: 0, @@ -450,7 +450,7 @@ module.exports = [ closed_at: null, author_association: 'COLLABORATOR', active_lock_reason: null, - body: '### Channel ID\n\nTUTV.us\n\n### Stream URL\n\nhttps://livestream.telvue.com/templeuni1/f7b44cfafd5c52223d5498196c8a2e7b.sdp/playlist.m3u8\n\n### Label\n\nNone\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv/issues/14096#issue-1874505679\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', + body: '### Stream ID\n\nTUTV.us\n\n### Stream URL\n\nhttps://livestream.telvue.com/templeuni1/f7b44cfafd5c52223d5498196c8a2e7b.sdp/playlist.m3u8\n\n### Label\n\nNone\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv/issues/14096#issue-1874505679\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14177/reactions', total_count: 0, @@ -538,7 +538,7 @@ module.exports = [ closed_at: null, author_association: 'COLLABORATOR', active_lock_reason: null, - body: '### Channel ID\n\nTFX.fr\n\n### Stream URL\n\nhttp://livetv.ktv.zone/13/play.m3u8\n\n### Label\n\nNone\n\n### HTTP User Agent\n\nMozilla/5.0 (iPhone; CPU iPhone OS 17_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1\n\n### HTTP Referrer\n\nhttps://pkpakiplay.xyz/\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv-org.github.io/issues/1381\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', + body: '### Stream ID\n\nTFX.fr\n\n### Stream URL\n\nhttps://stitcher-ipv4.pluto.tv/v1/stitch/embed/hls/channel/64c109a4798def0008a6e03e/master.m3u8?advertisingId={PSID}&appVersion=unknown&deviceDNT={TARGETOPT}&deviceId={PSID}&deviceLat=0&deviceLon=0&deviceMake=samsung&deviceModel=samsung&deviceType=samsung-tvplus&deviceVersion=unknown&embedPartner=samsung-tvplus&profileFloor=&profileLimit=&samsung_app_domain={APP_DOMAIN}&samsung_app_name={APP_NAME}&us_privacy=1YNY\n\n### Label\n\nNone\n\n### HTTP User Agent\n\nMozilla/5.0 (iPhone; CPU iPhone OS 17_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1\n\n### HTTP Referrer\n\nhttps://pkpakiplay.xyz/\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv-org.github.io/issues/1381\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14175/reactions', total_count: 0, @@ -626,7 +626,7 @@ module.exports = [ closed_at: null, author_association: 'COLLABORATOR', active_lock_reason: null, - body: '### Channel ID\n\nManoramaNews.in\n\n### Stream URL\n\n(https://mitelefe.com/Api/Videos/GetSourceUrl/694564/0/HLS / https://ssl.cloud.telefe.com/Api/Videos/GetSourceUrl/694564/0/HLS)\n\n### Label\n\nNot 24/7\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv/issues/14007#issuecomment-1686942043\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', + body: '### Stream ID\n\nManoramaNews.in\n\n### Stream URL\n\n(https://mitelefe.com/Api/Videos/GetSourceUrl/694564/0/HLS / https://ssl.cloud.telefe.com/Api/Videos/GetSourceUrl/694564/0/HLS)\n\n### Label\n\nNot 24/7\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv/issues/14007#issuecomment-1686942043\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14179/reactions', total_count: 0, @@ -643,94 +643,6 @@ module.exports = [ performed_via_github_app: null, state_reason: null }, - { - url: 'https://api.github.com/repos/iptv-org/iptv/issues/14175', - repository_url: 'https://api.github.com/repos/iptv-org/iptv', - labels_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14175/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14175/comments', - events_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14175/events', - html_url: 'https://github.com/iptv-org/iptv/issues/14175', - id: 1884859778, - node_id: 'I_kwDOCWUK8M5wWK2C', - number: 14175, - title: 'Add: TFX', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - site_admin: false - }, - labels: [ - { - id: 1694117286, - node_id: 'MDU6TGFiZWwxNjk0MTE3Mjg2', - url: 'https://api.github.com/repos/iptv-org/iptv/labels/FR', - name: 'FR', - color: 'f7ec1b', - default: false, - description: 'France' - }, - { - id: 5923498886, - node_id: 'LA_kwDOCWUK8M8AAAABYRFrhg', - url: 'https://api.github.com/repos/iptv-org/iptv/labels/approved', - name: 'approved', - color: '85ddde', - default: false, - description: '' - }, - { - id: 5923508587, - node_id: 'LA_kwDOCWUK8M8AAAABYRGRaw', - url: 'https://api.github.com/repos/iptv-org/iptv/labels/streams:add', - name: 'streams:add', - color: '017ff9', - default: false, - description: 'Request to add a new link to a playlist' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 1, - created_at: '2023-09-06T22:54:25Z', - updated_at: '2023-09-07T00:57:11Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Channel ID\n\nTFX.fr\n\n### Stream URL\n\nhttp://livetv.ktv.zone/13/play.m3u8\n\n### Label\n\nNone\n\n### Notes (optional)\n\nSource: https://github.com/iptv-org/iptv-org.github.io/issues/1381\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', - reactions: { - url: 'https://api.github.com/repos/iptv-org/iptv/issues/14175/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14175/timeline', - performed_via_github_app: null, - state_reason: null - }, { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14135', repository_url: 'https://api.github.com/repos/iptv-org/iptv', @@ -802,7 +714,7 @@ module.exports = [ closed_at: null, author_association: 'NONE', active_lock_reason: null, - body: '### Channel ID\n\nBBCWorldNewsSouthAsia.uk\n\n### Stream URL (optional)\n\nhttp://103.199.161.254/Content/bbcworld/Live/Channel%28BBCworld%29/Stream%2801%29/index.m3u8\n\n### Notes (optional)\n\n2 links for BBCWorldNewsSouthAsia.uk\r\nhttp://103.199.161.254/Content/bbcworld/Live/Channel%28BBCworld%29/Stream%2801%29/index.m3u8\r\nhttp://103.199.161.254/Content/bbcworld/Live/Channel%28BBCworld%29/Stream%2802%29/index.m3u8\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', + body: '### Stream ID\n\nBBCWorldNews.uk@SouthAsia\n\n### Stream URL (optional)\n\nhttp://103.199.161.254/Content/bbcworld/Live/Channel%28BBCworld%29/Stream%2801%29/index.m3u8\n\n### Notes (optional)\n\n2 links for BBCWorldNewsSouthAsia.uk\r\nhttp://103.199.161.254/Content/bbcworld/Live/Channel%28BBCworld%29/Stream%2801%29/index.m3u8\r\nhttp://103.199.161.254/Content/bbcworld/Live/Channel%28BBCworld%29/Stream%2802%29/index.m3u8\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14135/reactions', total_count: 0, @@ -890,7 +802,7 @@ module.exports = [ closed_at: null, author_association: 'CONTRIBUTOR', active_lock_reason: null, - body: '### Channel ID\n\nAmarinTV.th\n\n### Stream URL (optional)\n\nhttps://cdn6.goprimetime.info/feed/202306140918/chamarin/index.m3u8\n\n### Notes (optional)\n\n_No response_\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', + body: '### Stream ID\n\nAmarinTV.th\n\n### Stream URL (optional)\n\nhttps://cdn6.goprimetime.info/feed/202306140918/chamarin/index.m3u8\n\n### Notes (optional)\n\n_No response_\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14105/reactions', total_count: 0, @@ -978,7 +890,7 @@ module.exports = [ closed_at: null, author_association: 'CONTRIBUTOR', active_lock_reason: null, - body: '### Channel ID\n\nMCOTHD.th\n\n### Stream URL (optional)\n\nhttps://cdn6.goprimetime.info/feed/202306140918/chmcothd/index.m3u8\n\n### Notes (optional)\n\n_No response_\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', + body: '### Stream ID\n\nMCOTHD.th\n\n### Stream URL (optional)\n\nhttps://cdn6.goprimetime.info/feed/202306140918/chmcothd/index.m3u8\n\n### Notes (optional)\n\n_No response_\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14104/reactions', total_count: 0, @@ -1066,7 +978,7 @@ module.exports = [ closed_at: null, author_association: 'NONE', active_lock_reason: null, - body: '### Channel ID\r\n\r\nFastTV.us\r\n\r\n### Stream URL (optional)\r\n\r\nhttps://3fa797d5.wurl.com/manifest/f36d25e7e52f1ba8d7e56eb859c636563214f541/T05PX01vdG9yVHJlbmRGYXN0VFZfSExT/b5e5e0e2-12b3-4312-93c9-c0a7c50b41ca/4.m3u8\r\n\r\n### Notes (optional)\r\n\r\nA free stream from MotorTrend TV\r\n\r\n### Please confirm the following\r\n\r\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', + body: '### Stream ID\r\n\r\nFastTV.us\r\n\r\n### Stream URL (optional)\r\n\r\nhttps://3fa797d5.wurl.com/manifest/f36d25e7e52f1ba8d7e56eb859c636563214f541/T05PX01vdG9yVHJlbmRGYXN0VFZfSExT/b5e5e0e2-12b3-4312-93c9-c0a7c50b41ca/4.m3u8\r\n\r\n### Notes (optional)\r\n\r\nA free stream from MotorTrend TV\r\n\r\n### Please confirm the following\r\n\r\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14057/reactions', total_count: 0, @@ -1154,7 +1066,7 @@ module.exports = [ closed_at: null, author_association: 'NONE', active_lock_reason: null, - body: '### Channel ID\n\nMatch4.hu\n\n### Stream URL (optional)\n\nhttp://194.76.186.33:8000/play/a04d/index.m3u8\n\n### Notes (optional)\n\n_No response_\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', + body: '### Stream ID\n\nMatch4.hu\n\n### Stream URL (optional)\n\nhttp://194.76.186.33:8000/play/a04d/index.m3u8\n\n### Notes (optional)\n\n_No response_\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14034/reactions', total_count: 0, @@ -1251,7 +1163,7 @@ module.exports = [ closed_at: null, author_association: 'COLLABORATOR', active_lock_reason: null, - body: '### Channel ID\n\nMethTV.lk\n\n### Stream URL (optional)\n\nhttps://ythls.onrender.com/channel/UC7kBHRaynsJMB6JcooGLTmA.m3u8\n\n### Notes (optional)\n\n720p / Not 24/7\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', + body: '### Stream ID\n\nMethTV.lk\n\n### Stream URL (optional)\n\nhttps://ythls.onrender.com/channel/UC7kBHRaynsJMB6JcooGLTmA.m3u8\n\n### Notes (optional)\n\n720p / Not 24/7\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/13964/reactions', total_count: 0, @@ -1339,7 +1251,7 @@ module.exports = [ closed_at: null, author_association: 'NONE', active_lock_reason: null, - body: "### Channel ID\n\nWeathernews.jp\n\n### Stream URL (optional)\n\nhttps://ythls.onrender.com/channel/UCNsidkYpIAQ4QaufptQBPHQ.m3u8\n\n### Notes (optional)\n\nLet's try them ๐Ÿ˜ผ\r\n\r\nI've just learned that they change streams for their TV broadcasts on YouTube every 3 hours, so even with additional streams they occasionally activate (such as now during Typhoon Lan), the YT API should manage to pick the correct feed in most cases ๐Ÿ˜œ\r\n\r\nOtherwise, an advantage over the two streams that already are in the database is that the YT broadcasts are in 1080p (vs 720p).\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)", + body: "### Stream ID\n\nWeathernews.jp\n\n### Stream URL (optional)\n\nhttps://ythls.onrender.com/channel/UCNsidkYpIAQ4QaufptQBPHQ.m3u8\n\n### Notes (optional)\n\nLet's try them ๐Ÿ˜ผ\r\n\r\nI've just learned that they change streams for their TV broadcasts on YouTube every 3 hours, so even with additional streams they occasionally activate (such as now during Typhoon Lan), the YT API should manage to pick the correct feed in most cases ๐Ÿ˜œ\r\n\r\nOtherwise, an advantage over the two streams that already are in the database is that the YT broadcasts are in 1080p (vs 720p).\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)", reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/13893/reactions', total_count: 0, @@ -1427,7 +1339,7 @@ module.exports = [ closed_at: null, author_association: 'NONE', active_lock_reason: null, - body: '### Channel ID\n\nAajTak.in\n\n### Stream URL (optional)\n\nhttps://feeds.intoday.in/aajtak/api/aajtakhd/master.m3u8\n\n### Notes (optional)\n\n_No response_\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', + body: '### Stream ID\n\nAajTak.in\n\n### Stream URL (optional)\n\nhttps://feeds.intoday.in/aajtak/api/aajtakhd/master.m3u8\n\n### Notes (optional)\n\n_No response_\n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/13881/reactions', total_count: 0, @@ -1515,7 +1427,7 @@ module.exports = [ closed_at: null, author_association: 'NONE', active_lock_reason: null, - body: '### Channel ID\r\n\r\nATX.jp\r\n\r\n### Stream URL (optional)\r\n\r\nhttp://194.233.72.249:8080/AT-X/index.m3u8\r\n\r\n### Notes (optional)\r\n\r\n![AT-X_20230705_202525 551](https://github.com/iptv-org/iptv/assets/21299971/794c1cd4-fbe4-4b35-8a16-45127953ff65)\r\nThis is test AT-X channel JP without subs\r\n720 Quality\r\n\r\n### Please confirm the following\r\n\r\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', + body: '### Stream ID\r\n\r\nATX.jp\r\n\r\n### Stream URL (optional)\r\n\r\nhttp://194.233.72.249:8080/AT-X/index.m3u8\r\n\r\n### Notes (optional)\r\n\r\n![AT-X_20230705_202525 551](https://github.com/iptv-org/iptv/assets/21299971/794c1cd4-fbe4-4b35-8a16-45127953ff65)\r\nThis is test AT-X channel JP without subs\r\n720 Quality\r\n\r\n### Please confirm the following\r\n\r\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/13793/reactions', total_count: 0, @@ -1603,7 +1515,7 @@ module.exports = [ closed_at: null, author_association: 'NONE', active_lock_reason: null, - body: '### Channel ID\r\n\r\nBeanoTV.uk\r\n\r\n### Stream URL (optional)\r\n\r\nhttps://a5b4bacecd47433dad06d3189fc7422e.mediatailor.us-east-1.amazonaws.com/v1/manifest/04fd913bb278d8775298c26fdca9d9841f37601f/RakutenTV-eu_BeanoTV/b1f233d5-847c-437d-aa4f-f73e67a85323/2.m3u8\r\n\r\n### Notes (optional)\r\n\r\n_No response_\r\n\r\n### Please confirm the following\r\n\r\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', + body: '### Stream ID\r\n\r\nBeanoTV.uk\r\n\r\n### Stream URL (optional)\r\n\r\nhttps://a5b4bacecd47433dad06d3189fc7422e.mediatailor.us-east-1.amazonaws.com/v1/manifest/04fd913bb278d8775298c26fdca9d9841f37601f/RakutenTV-eu_BeanoTV/b1f233d5-847c-437d-aa4f-f73e67a85323/2.m3u8\r\n\r\n### Notes (optional)\r\n\r\n_No response_\r\n\r\n### Please confirm the following\r\n\r\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/13751/reactions', total_count: 0, @@ -1691,7 +1603,7 @@ module.exports = [ closed_at: null, author_association: 'NONE', active_lock_reason: null, - body: '### Channel ID\n\nATVPlus.pe\n\n### Stream URL (optional)\n\nhttps://linear-258.frequency.stream/dist/vix/258/hls/master/playlist.m3u8\n\n### Notes (optional)\n\n(Linear Version & Streaming on VIX.com a spanish televisa-univision site) Might be geo-blocked or geo-locked because by removing /dist/vix/ the m3u8 link stops working #13703 \n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', + body: '### Stream ID\n\nATVPlus.pe\n\n### Stream URL (optional)\n\nhttps://linear-258.frequency.stream/dist/vix/258/hls/master/playlist.m3u8\n\n### Notes (optional)\n\n(Linear Version & Streaming on VIX.com a spanish televisa-univision site) Might be geo-blocked or geo-locked because by removing /dist/vix/ the m3u8 link stops working #13703 \n\n### Please confirm the following\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md#request-a-channel)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/13715/reactions', total_count: 0, @@ -1770,7 +1682,7 @@ module.exports = [ closed_at: null, author_association: 'COLLABORATOR', active_lock_reason: null, - body: '### Stream URL\n\nhttps://livestream.telvue.com/templeuni1/f7b44cfafd5c52223d5498196c8a2e7b.sdp/playlist.m3u8\n\n### Channel ID\n\nboo.us\n\n### Channel Name\n\nBBC America\n\n### Quality\n\n720p\n\n### Label\n\nGeo-blocked\n\n### HTTP User-Agent\n\nMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edge/12.246\n\n### HTTP Referrer\n\n_No response_\n\n### Notes\n\n_No response_\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', + body: '### Stream URL\n\nhttps://livestream.telvue.com/templeuni1/f7b44cfafd5c52223d5498196c8a2e7b.sdp/playlist.m3u8\n\n### Stream ID\n\nboo.us\n\n### Channel Name\n\nBBC America\n\n### Quality\n\n720p\n\n### Label\n\nGeo-blocked\n\n### HTTP User-Agent\n\nMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edge/12.246\n\n### HTTP Referrer\n\n_No response_\n\n### Notes\n\n_No response_\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14120/reactions', total_count: 0, @@ -1849,7 +1761,7 @@ module.exports = [ closed_at: null, author_association: 'COLLABORATOR', active_lock_reason: null, - body: '### Stream URL\n\nhttps://servilive.com:3126/live/tele2000live.m3u8\n\n### Channel ID\n\nBBCAmericaEast.us\n\n### Channel Name\n\nBBC America\n\n### Quality\n\n720p\n\n### Label\n\n~\n\n### Timeshift\n\n-4\n\n### HTTP User-Agent\n\nMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edge/12.246\n\n### HTTP Referrer\n\n~\n\n### Notes\n\n_No response_\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', + body: '### Stream URL\n\nhttps://servilive.com:3126/live/tele2000live.m3u8\n\n### Stream ID (required)\n\nBBCAmerica.us@East\n\n### Quality\n\n720p\n\n### Label\n\n~\n\n### HTTP User-Agent\n\nMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edge/12.246\n\n### HTTP Referrer\n\n~\n\n### Notes\n\n_No response_\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14110/reactions', total_count: 0, @@ -1928,7 +1840,7 @@ module.exports = [ closed_at: null, author_association: 'COLLABORATOR', active_lock_reason: null, - body: '### Stream URL\n\nhttps://ythls.onrender.com/channel/UC40TUSUx490U5uR1lZt3Ajg.m3u8\n\n### Channel ID\n\n_No response_\n\n### Quality\n\nNone\n\n### Label\n\nNone\n\n### HTTP User-Agent\n\n_No response_\n\n### HTTP Referrer\n\n_No response_\n\n### Notes\n\n_No response_\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', + body: '### Stream URL\n\nhttps://ythls.onrender.com/channel/UC40TUSUx490U5uR1lZt3Ajg.m3u8\n\n### Stream ID\n\n_No response_\n\n### Quality\n\nNone\n\n### Label\n\nNone\n\n### HTTP User-Agent\n\n_No response_\n\n### HTTP Referrer\n\n_No response_\n\n### Notes\n\n_No response_\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', reactions: { url: 'https://api.github.com/repos/iptv-org/iptv/issues/14120/reactions', total_count: 0, @@ -2034,15 +1946,15 @@ module.exports = [ state_reason: null }, { - url: 'https://api.github.com/repos/iptv-org/iptv/issues/14140', + url: 'https://api.github.com/repos/iptv-org/iptv/issues/14150', repository_url: 'https://api.github.com/repos/iptv-org/iptv', - labels_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14140/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14140/comments', - events_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14140/events', + labels_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14150/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14150/comments', + events_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14150/events', html_url: 'https://github.com/iptv-org/iptv/issues/14140', - id: 1881649602, + id: 1881649613, node_id: 'I_kwDOCWUK8M5wJ7HC', - number: 14140, + number: 14150, title: 'Broken: Cyprus Channels', user: { login: 'ROBGagn', @@ -2100,15 +2012,6 @@ module.exports = [ color: '5373a2', default: false, description: '' - }, - { - id: 5932506810, - node_id: 'LA_kwDOCWUK8M8AAAABYZreug', - url: 'https://api.github.com/repos/iptv-org/iptv/labels/streams:remove', - name: 'streams:add', - color: '5373a2', - default: false, - description: '' } ], state: 'open', @@ -2124,7 +2027,7 @@ module.exports = [ active_lock_reason: null, body: '### Broken Links\n\nhttp://l6.cloudskep.com/rikcy/rikhd/playlist.m3u8\r\n\r\nhttp://l6.cloudskep.com/rikcy/rik2/playlist.m3u8\n\n### What happened to the stream?\n\nNot loading\n\n### Possible Replacement (optional)\n\nhttp://l6.cloudskep.com/rikcy/rikhd/playlist2.m3u8\n\n### Notes (optional)\n\nToken needed...\r\nSame issue with RIK 1 and 2. May happen in the future with ANT1 Cyprus, Sigma and Omega.\n\n### Contributing Guide\n\n- [X] I have read [Contributing Guide](https://github.com/iptv-org/iptv/blob/master/CONTRIBUTING.md)', reactions: { - url: 'https://api.github.com/repos/iptv-org/iptv/issues/14140/reactions', + url: 'https://api.github.com/repos/iptv-org/iptv/issues/14150/reactions', total_count: 0, '+1': 0, '-1': 0, @@ -2135,7 +2038,7 @@ module.exports = [ rocket: 0, eyes: 0 }, - timeline_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14140/timeline', + timeline_url: 'https://api.github.com/repos/iptv-org/iptv/issues/14150/timeline', performed_via_github_app: null, state_reason: null }, diff --git a/tests/__data__/input/streams_report/uk.m3u b/tests/__data__/input/playlist_update/uk.m3u similarity index 100% rename from tests/__data__/input/streams_report/uk.m3u rename to tests/__data__/input/playlist_update/uk.m3u diff --git a/tests/__data__/input/streams_validate/us_blocked.m3u b/tests/__data__/input/playlist_validate/us_blocked.m3u similarity index 75% rename from tests/__data__/input/streams_validate/us_blocked.m3u rename to tests/__data__/input/playlist_validate/us_blocked.m3u index 98413b103..2ffa2273b 100644 --- a/tests/__data__/input/streams_validate/us_blocked.m3u +++ b/tests/__data__/input/playlist_validate/us_blocked.m3u @@ -1,5 +1,5 @@ #EXTM3U -#EXTINF:-1 tvg-id="FoxSports2Asia.us",Fox Sports 2 Asia (Thai) (720p) +#EXTINF:-1 tvg-id="FoxSports2.us@Asia",Fox Sports 2 Asia (Thai) (720p) https://example.com/playlist.m3u8 #EXTINF:-1 tvg-id="TVN.pl",TVN https://example.com/playlist2.m3u8 diff --git a/tests/__data__/input/streams_validate/wrong_id.m3u b/tests/__data__/input/playlist_validate/wrong_id.m3u similarity index 100% rename from tests/__data__/input/streams_validate/wrong_id.m3u rename to tests/__data__/input/playlist_validate/wrong_id.m3u diff --git a/tests/__data__/input/.readme/config.json b/tests/__data__/input/readme_update/.readme/config.json similarity index 100% rename from tests/__data__/input/.readme/config.json rename to tests/__data__/input/readme_update/.readme/config.json diff --git a/tests/__data__/input/.readme/template.md b/tests/__data__/input/readme_update/.readme/template.md similarity index 100% rename from tests/__data__/input/.readme/template.md rename to tests/__data__/input/readme_update/.readme/template.md diff --git a/tests/__data__/input/readme_update/generators.log b/tests/__data__/input/readme_update/generators.log new file mode 100644 index 000000000..63cfea058 --- /dev/null +++ b/tests/__data__/input/readme_update/generators.log @@ -0,0 +1,75 @@ +{"type":"category","filepath":"categories/auto.m3u","count":0} +{"type":"category","filepath":"categories/animation.m3u","count":0} +{"type":"category","filepath":"categories/business.m3u","count":0} +{"type":"category","filepath":"categories/classic.m3u","count":0} +{"type":"category","filepath":"categories/comedy.m3u","count":0} +{"type":"category","filepath":"categories/cooking.m3u","count":0} +{"type":"category","filepath":"categories/culture.m3u","count":0} +{"type":"category","filepath":"categories/documentary.m3u","count":0} +{"type":"category","filepath":"categories/education.m3u","count":0} +{"type":"category","filepath":"categories/entertainment.m3u","count":0} +{"type":"category","filepath":"categories/family.m3u","count":0} +{"type":"category","filepath":"categories/general.m3u","count":2} +{"type":"category","filepath":"categories/kids.m3u","count":0} +{"type":"category","filepath":"categories/legislative.m3u","count":0} +{"type":"category","filepath":"categories/lifestyle.m3u","count":0} +{"type":"category","filepath":"categories/movies.m3u","count":0} +{"type":"category","filepath":"categories/music.m3u","count":0} +{"type":"category","filepath":"categories/news.m3u","count":1} +{"type":"category","filepath":"categories/outdoor.m3u","count":0} +{"type":"category","filepath":"categories/relax.m3u","count":0} +{"type":"category","filepath":"categories/religious.m3u","count":0} +{"type":"category","filepath":"categories/series.m3u","count":0} +{"type":"category","filepath":"categories/science.m3u","count":0} +{"type":"category","filepath":"categories/shop.m3u","count":0} +{"type":"category","filepath":"categories/sports.m3u","count":0} +{"type":"category","filepath":"categories/travel.m3u","count":0} +{"type":"category","filepath":"categories/weather.m3u","count":1} +{"type":"category","filepath":"categories/xxx.m3u","count":1} +{"type":"category","filepath":"categories/undefined.m3u","count":3} +{"type":"country","filepath":"countries/cm.m3u","count":1} +{"type":"country","filepath":"countries/ca.m3u","count":2} +{"type":"country","filepath":"countries/cv.m3u","count":1} +{"type":"country","filepath":"countries/cg.m3u","count":1} +{"type":"country","filepath":"countries/ro.m3u","count":1} +{"type":"subdivision","filepath":"subdivisions/ca-on.m3u","count":1} +{"type":"country","filepath":"countries/ru.m3u","count":2} +{"type":"country","filepath":"countries/rw.m3u","count":1} +{"type":"country","filepath":"countries/re.m3u","count":1} +{"type":"country","filepath":"countries/undefined.m3u","count":2} +{"type":"country","filepath":"countries/bl.m3u","count":1} +{"type":"country","filepath":"countries/sh.m3u","count":1} +{"type":"country","filepath":"countries/kn.m3u","count":1} +{"type":"language","filepath":"languages/cat.m3u","count":1} +{"type":"language","filepath":"languages/eng.m3u","count":1} +{"type":"language","filepath":"languages/fra.m3u","count":1} +{"type":"language","filepath":"languages/rus.m3u","count":1} +{"type":"language","filepath":"languages/undefined.m3u","count":2} +{"type":"region","filepath":"regions/afr.m3u","count":0} +{"type":"region","filepath":"regions/amer.m3u","count":1} +{"type":"region","filepath":"regions/apac.m3u","count":1} +{"type":"region","filepath":"regions/arab.m3u","count":0} +{"type":"region","filepath":"regions/asean.m3u","count":0} +{"type":"region","filepath":"regions/asia.m3u","count":2} +{"type":"region","filepath":"regions/carib.m3u","count":0} +{"type":"region","filepath":"regions/cas.m3u","count":0} +{"type":"region","filepath":"regions/cenamer.m3u","count":0} +{"type":"region","filepath":"regions/cis.m3u","count":1} +{"type":"region","filepath":"regions/emea.m3u","count":3} +{"type":"region","filepath":"regions/eur.m3u","count":3} +{"type":"region","filepath":"regions/hispam.m3u","count":0} +{"type":"region","filepath":"regions/lac.m3u","count":0} +{"type":"region","filepath":"regions/latam.m3u","count":0} +{"type":"region","filepath":"regions/maghreb.m3u","count":0} +{"type":"region","filepath":"regions/mena.m3u","count":0} +{"type":"region","filepath":"regions/mideast.m3u","count":0} +{"type":"region","filepath":"regions/nam.m3u","count":1} +{"type":"region","filepath":"regions/noram.m3u","count":1} +{"type":"region","filepath":"regions/nord.m3u","count":0} +{"type":"region","filepath":"regions/oce.m3u","count":0} +{"type":"region","filepath":"regions/undefined.m3u","count":2} +{"type":"region","filepath":"regions/sas.m3u","count":1} +{"type":"region","filepath":"regions/int.m3u","count":1} +{"type":"region","filepath":"regions/southam.m3u","count":0} +{"type":"region","filepath":"regions/ssa.m3u","count":0} +{"type":"region","filepath":"regions/wafr.m3u","count":0} \ No newline at end of file diff --git a/tests/__data__/input/streams_update/br.m3u b/tests/__data__/input/report_create/br.m3u similarity index 100% rename from tests/__data__/input/streams_update/br.m3u rename to tests/__data__/input/report_create/br.m3u diff --git a/tests/__data__/input/streams_report/cy.m3u b/tests/__data__/input/report_create/cy.m3u similarity index 100% rename from tests/__data__/input/streams_report/cy.m3u rename to tests/__data__/input/report_create/cy.m3u diff --git a/tests/__data__/input/streams_update/uk.m3u b/tests/__data__/input/report_create/uk.m3u similarity index 100% rename from tests/__data__/input/streams_update/uk.m3u rename to tests/__data__/input/report_create/uk.m3u diff --git a/tests/__data__/input/streams_report/us.m3u b/tests/__data__/input/report_create/us.m3u similarity index 100% rename from tests/__data__/input/streams_report/us.m3u rename to tests/__data__/input/report_create/us.m3u diff --git a/tests/commands/api/generate.test.ts b/tests/commands/api/generate.test.ts index 86e34ce08..7f8f68aa9 100644 --- a/tests/commands/api/generate.test.ts +++ b/tests/commands/api/generate.test.ts @@ -3,15 +3,17 @@ import fs from 'fs-extra' beforeEach(() => { fs.emptyDirSync('tests/__data__/output') +}) +it('can create streams.json', () => { execSync( - 'STREAMS_DIR=tests/__data__/input/streams_generate API_DIR=tests/__data__/output/.api npm run api:generate', + 'DATA_DIR=tests/__data__/input/data STREAMS_DIR=tests/__data__/input/api_generate API_DIR=tests/__data__/output/.api npm run api:generate', { encoding: 'utf8' } ) -}) -it('can create streams.json', () => { - expect(content('output/.api/streams.json')).toMatchObject(content('expected/.api/streams.json')) + expect(content('output/.api/streams.json')).toMatchObject( + content('expected/api_generate/.api/streams.json') + ) }) function content(filepath: string) { diff --git a/tests/commands/playlist/format.test.ts b/tests/commands/playlist/format.test.ts index 6a9fbafc5..d513c8b38 100644 --- a/tests/commands/playlist/format.test.ts +++ b/tests/commands/playlist/format.test.ts @@ -4,7 +4,7 @@ import { glob } from 'glob' beforeEach(() => { fs.emptyDirSync('tests/__data__/output') - fs.copySync('tests/__data__/input/streams_format', 'tests/__data__/output/streams') + fs.copySync('tests/__data__/input/playlist_format', 'tests/__data__/output/streams') }) it('can format playlists', () => { @@ -13,12 +13,12 @@ it('can format playlists', () => { }) const files = glob - .sync('tests/__data__/expected/streams_format/*.m3u') - .map(f => f.replace('tests/__data__/expected/streams_format/', '')) + .sync('tests/__data__/expected/playlist_format/*.m3u') + .map(f => f.replace('tests/__data__/expected/playlist_format/', '')) files.forEach(filepath => { expect(content(`output/streams/${filepath}`), filepath).toBe( - content(`expected/streams_format/${filepath}`) + content(`expected/playlist_format/${filepath}`) ) }) }) diff --git a/tests/commands/playlist/generate.test.ts b/tests/commands/playlist/generate.test.ts index 8cdbfeee8..54c4e61e0 100644 --- a/tests/commands/playlist/generate.test.ts +++ b/tests/commands/playlist/generate.test.ts @@ -4,24 +4,26 @@ import * as glob from 'glob' beforeEach(() => { fs.emptyDirSync('tests/__data__/output') +}) +it('can generate playlists and logs', () => { execSync( - 'STREAMS_DIR=tests/__data__/input/streams_generate DATA_DIR=tests/__data__/input/data PUBLIC_DIR=tests/__data__/output/.gh-pages LOGS_DIR=tests/__data__/output/logs npm run playlist:generate', + 'STREAMS_DIR=tests/__data__/input/playlist_generate DATA_DIR=tests/__data__/input/data PUBLIC_DIR=tests/__data__/output/.gh-pages LOGS_DIR=tests/__data__/output/logs npm run playlist:generate', { encoding: 'utf8' } ) -}) -it('can generate playlists and logs', () => { const playlists = glob - .sync('tests/__data__/expected/.gh-pages/**/*.m3u') - .map((file: string) => file.replace('tests/__data__/expected/', '')) + .sync('tests/__data__/expected/playlist_generate/.gh-pages/**/*.m3u') + .map((file: string) => file.replace('tests/__data__/expected/playlist_generate/', '')) playlists.forEach((filepath: string) => { - expect(content(`output/${filepath}`), filepath).toBe(content(`expected/${filepath}`)) + expect(content(`output/${filepath}`), filepath).toBe( + content(`expected/playlist_generate/${filepath}`) + ) }) expect(content('output/logs/generators.log').split('\n').sort()).toStrictEqual( - content('expected/logs/generators.log').split('\n').sort() + content('expected/playlist_generate/logs/generators.log').split('\n').sort() ) }) diff --git a/tests/commands/playlist/test.test.ts b/tests/commands/playlist/test.test.ts index feb10640e..0842f0f10 100644 --- a/tests/commands/playlist/test.test.ts +++ b/tests/commands/playlist/test.test.ts @@ -7,13 +7,13 @@ type ExecError = { it('shows an error if the playlist contains a broken link', () => { try { - execSync('ROOT_DIR=tests/__data__/input npm run playlist:test streams_test/ag.m3u', { + execSync('ROOT_DIR=tests/__data__/input npm run playlist:test playlist_test/ag.m3u', { encoding: 'utf8' }) process.exit(1) } catch (error) { expect((error as ExecError).status).toBe(1) - expect((error as ExecError).stdout).toContain('streams_test/ag.m3u') + expect((error as ExecError).stdout).toContain('playlist_test/ag.m3u') expect((error as ExecError).stdout).toContain('2 problems (1 errors, 1 warnings)') } }) diff --git a/tests/commands/playlist/update.test.ts b/tests/commands/playlist/update.test.ts index 79be4f44d..cc104d8cc 100644 --- a/tests/commands/playlist/update.test.ts +++ b/tests/commands/playlist/update.test.ts @@ -4,10 +4,10 @@ import { glob } from 'glob' beforeEach(() => { fs.emptyDirSync('tests/__data__/output') - fs.copySync('tests/__data__/input/streams_update', 'tests/__data__/output/streams') + fs.copySync('tests/__data__/input/playlist_update', 'tests/__data__/output/streams') }) -it('can format playlists', () => { +it('can update playlists', () => { const stdout = execSync( 'DATA_DIR=tests/__data__/input/data STREAMS_DIR=tests/__data__/output/streams npm run playlist:update --silent', { @@ -16,17 +16,17 @@ it('can format playlists', () => { ) const files = glob - .sync('tests/__data__/expected/streams_update/*.m3u') - .map(f => f.replace('tests/__data__/expected/streams_update/', '')) + .sync('tests/__data__/expected/playlist_update/*.m3u') + .map(f => f.replace('tests/__data__/expected/playlist_update/', '')) files.forEach(filepath => { expect(content(`output/streams/${filepath}`), filepath).toBe( - content(`expected/streams_update/${filepath}`) + content(`expected/playlist_update/${filepath}`) ) }) expect(stdout).toBe( - 'OUTPUT=closes #14151, closes #14140, closes #14110, closes #14120, closes #14175, closes #14105, closes #14104, closes #14057, closes #14034, closes #13964, closes #13893, closes #13881, closes #13793, closes #13751, closes #13715\n' + 'OUTPUT=closes #14151, closes #14150, closes #14110, closes #14120, closes #14175, closes #14105, closes #14104, closes #14057, closes #14034, closes #13964, closes #13893, closes #13881, closes #13793, closes #13751, closes #13715\n' ) }) diff --git a/tests/commands/playlist/validate.test.ts b/tests/commands/playlist/validate.test.ts index af1119f4d..38dd104ee 100644 --- a/tests/commands/playlist/validate.test.ts +++ b/tests/commands/playlist/validate.test.ts @@ -8,7 +8,7 @@ type ExecError = { it('show an error if channel id in the blocklist', () => { try { execSync( - 'DATA_DIR=tests/__data__/input/data STREAMS_DIR=tests/__data__/input/streams_validate npm run playlist:validate -- us_blocked.m3u', + 'DATA_DIR=tests/__data__/input/data STREAMS_DIR=tests/__data__/input/playlist_validate npm run playlist:validate -- us_blocked.m3u', { encoding: 'utf8' } @@ -17,7 +17,7 @@ it('show an error if channel id in the blocklist', () => { } catch (error) { expect((error as ExecError).status).toBe(1) expect((error as ExecError).stdout).toContain(`us_blocked.m3u - 2 error "FoxSports2Asia.us" is on the blocklist due to claims of copyright holders (https://github.com/iptv-org/iptv/issues/0002) + 2 error "FoxSports2.us" is on the blocklist due to claims of copyright holders (https://github.com/iptv-org/iptv/issues/0002) 4 error "TVN.pl" is on the blocklist due to NSFW content (https://github.com/iptv-org/iptv/issues/0003) 2 problems (2 errors, 0 warnings)`) @@ -26,7 +26,7 @@ it('show an error if channel id in the blocklist', () => { it('show a warning if channel has wrong id', () => { const stdout = execSync( - 'DATA_DIR=tests/__data__/input/data STREAMS_DIR=tests/__data__/input/streams_validate npm run playlist:validate -- wrong_id.m3u', + 'DATA_DIR=tests/__data__/input/data STREAMS_DIR=tests/__data__/input/playlist_validate npm run playlist:validate -- wrong_id.m3u', { encoding: 'utf8' } diff --git a/tests/commands/readme/update.test.ts b/tests/commands/readme/update.test.ts index 0ee6addf3..f15e71f48 100644 --- a/tests/commands/readme/update.test.ts +++ b/tests/commands/readme/update.test.ts @@ -6,23 +6,23 @@ beforeEach(() => { fs.emptyDirSync('tests/__data__/output') fs.mkdirSync('tests/__data__/output/.readme') fs.copyFileSync( - 'tests/__data__/input/.readme/config.json', + 'tests/__data__/input/readme_update/.readme/config.json', 'tests/__data__/output/.readme/config.json' ) fs.copyFileSync( - 'tests/__data__/input/.readme/template.md', + 'tests/__data__/input/readme_update/.readme/template.md', 'tests/__data__/output/.readme/template.md' ) execSync( - 'DATA_DIR=tests/__data__/input/data LOGS_DIR=tests/__data__/input/logs README_DIR=tests/__data__/output/.readme npm run readme:update', + 'DATA_DIR=tests/__data__/input/data LOGS_DIR=tests/__data__/input/readme_update README_DIR=tests/__data__/output/.readme npm run readme:update', { encoding: 'utf8' } ) }) it('can update readme.md', () => { expect(content('tests/__data__/output/readme.md')).toEqual( - content('tests/__data__/expected/_readme.md') + content('tests/__data__/expected/readme_update/_readme.md') ) }) diff --git a/tests/commands/report/create.test.ts b/tests/commands/report/create.test.ts index 219387cbb..de449347a 100644 --- a/tests/commands/report/create.test.ts +++ b/tests/commands/report/create.test.ts @@ -2,7 +2,7 @@ import { execSync } from 'child_process' it('can create report', () => { const stdout = execSync( - 'DATA_DIR=tests/__data__/input/data STREAMS_DIR=tests/__data__/input/streams_report npm run report:create', + 'DATA_DIR=tests/__data__/input/data STREAMS_DIR=tests/__data__/input/report_create npm run report:create', { encoding: 'utf8' } @@ -10,18 +10,15 @@ it('can create report', () => { expect( stdout.includes(` -โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ (index) โ”‚ issueNumber โ”‚ type โ”‚ channelId โ”‚ streamUrl โ”‚ status โ”‚ -โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค -โ”‚ 0 โ”‚ 14120 โ”‚ 'streams:edit' โ”‚ 'boo.us' โ”‚ 'https://livestream.telvue.com/templeuni1/f7b44cfafd5c52223d5498196c8a2e7b.sdp/playlist.m3u8' โ”‚ 'invalid_id' โ”‚ -โ”‚ 1 โ”‚ 14135 โ”‚ 'streams:add' โ”‚ 'BBCWorldNewsSouthAsia.uk' โ”‚ 'http://103.199.161.254/Content/bbcworld/Live/Channel%28BBCworld%29/Stream%2801%29/index.m3u8' โ”‚ 'wrong_id' โ”‚ -โ”‚ 2 โ”‚ 14140 โ”‚ 'streams:add' โ”‚ undefined โ”‚ undefined โ”‚ 'missing_id' โ”‚ -โ”‚ 3 โ”‚ 14175 โ”‚ 'streams:add' โ”‚ 'TFX.fr' โ”‚ 'http://livetv.ktv.zone/13/play.m3u8' โ”‚ 'duplicate' โ”‚ -โ”‚ 4 โ”‚ 14177 โ”‚ 'streams:add' โ”‚ 'TUTV.us' โ”‚ 'https://livestream.telvue.com/templeuni1/f7b44cfafd5c52223d5498196c8a2e7b.sdp/playlist.m3u8' โ”‚ 'on_playlist' โ”‚ -โ”‚ 5 โ”‚ 14178 โ”‚ 'streams:add' โ”‚ 'TV3.my' โ”‚ 'https://live-streams-ssai-01.tonton.com.my/live/2dd2b7cd-1b34-4871-b669-57b5c9beca23/live.isml/.m3u8' โ”‚ 'blocked' โ”‚ -โ”‚ 6 โ”‚ 16120 โ”‚ 'broken stream' โ”‚ undefined โ”‚ 'http://190.61.102.67:2000/play/a038/index.m3u8' โ”‚ 'wrong_link' โ”‚ -โ”‚ 7 โ”‚ 19956 โ”‚ 'channel search' โ”‚ 'CNBCe.tr' โ”‚ undefined โ”‚ 'invalid_id' โ”‚ -โ”‚ 8 โ”‚ 19957 โ”‚ 'channel search' โ”‚ '13thStreet.au' โ”‚ undefined โ”‚ 'closed' โ”‚ -โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜`) +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ (index) โ”‚ issueNumber โ”‚ type โ”‚ streamId โ”‚ streamUrl โ”‚ status โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ 0 โ”‚ 14120 โ”‚ 'streams:edit' โ”‚ 'boo.us' โ”‚ 'https://livestream.telvue.com/templeuni1/f7b44cfafd5c52223d5498196c8a2e7b.sdp/playlist.m3u8' โ”‚ 'invalid_id' โ”‚ +โ”‚ 1 โ”‚ 14135 โ”‚ 'streams:add' โ”‚ 'BBCWorldNews.uk@SouthAsia' โ”‚ 'http://103.199.161.254/Content/bbcworld/Live/Channel%28BBCworld%29/Stream%2801%29/index.m3u8' โ”‚ 'wrong_id' โ”‚ +โ”‚ 2 โ”‚ 14177 โ”‚ 'streams:add' โ”‚ 'TUTV.us' โ”‚ 'https://livestream.telvue.com/templeuni1/f7b44cfafd5c52223d5498196c8a2e7b.sdp/playlist.m3u8' โ”‚ 'on_playlist' โ”‚ +โ”‚ 3 โ”‚ 14178 โ”‚ 'streams:add' โ”‚ 'TV3.my' โ”‚ 'https://live-streams-ssai-01.tonton.com.my/live/2dd2b7cd-1b34-4871-b669-57b5c9beca23/live.isml/.m3u8...' โ”‚ 'blocked' โ”‚ +โ”‚ 4 โ”‚ 16120 โ”‚ 'broken stream' โ”‚ undefined โ”‚ 'http://190.61.102.67:2000/play/a038/index.m3u8' โ”‚ 'wrong_link' โ”‚ +โ”‚ 5 โ”‚ 19956 โ”‚ 'channel search' โ”‚ 'CNBCe.tr' โ”‚ undefined โ”‚ 'invalid_id' โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜`) ).toBe(true) }) diff --git a/yarn.lock b/yarn.lock index 06a905285..82088c20d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -366,10 +366,10 @@ "@eslint/core" "^0.12.0" levn "^0.4.1" -"@freearhey/core@^0.2.1": - version "0.2.1" - resolved "https://registry.npmjs.org/@freearhey/core/-/core-0.2.1.tgz" - integrity sha512-kEdIxZClykKhGpgyCSlkwuVuSCCAWr3J5YvOUMJQDPgVAYvT5VbD8MYKPm+OwNi9T4HFmF6qqY90qwKJPoOXCA== +"@freearhey/core@^0.7.0": + version "0.7.0" + resolved "https://registry.npmjs.org/@freearhey/core/-/core-0.7.0.tgz" + integrity sha512-HXkKPYGY7ife7JAc1q/Qxzy0WUdSnyt3rHThCShZHgnH3rz0tpkjHFW7LNegB3he0IKn/Zc95/YSOQ97Fq8ctA== dependencies: "@types/fs-extra" "^11.0.2" "@types/lodash" "^4.14.198" @@ -382,6 +382,7 @@ node-gzip "^1.1.2" normalize-url "^6.1.0" object-treeify "^2.1.1" + run-script-os "^1.1.6" signale "^1.4.0" "@humanfs/core@^0.19.1": @@ -3435,6 +3436,11 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +run-script-os@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz" + integrity sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw== + semver@^6.3.0: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"