Files
Flipper-ARF/applications/system/vin_decoder/vin_decoder.c
T
d4rks1d33 ad4c171054
Build Dev Firmware / build (push) Failing after 14m40s
A lot of changes
2026-06-02 23:32:16 -03:00

2188 lines
57 KiB
C

#include <furi.h>
#include <gui/gui.h>
#include <gui/view_dispatcher.h>
#include <gui/scene_manager.h>
#include <gui/modules/widget.h>
#include <gui/modules/submenu.h>
#include <gui/modules/text_input.h>
#include <ctype.h>
typedef enum {
VinDecoderMainMenuScene,
VinDecoderVinInputScene,
VinDecoderVinMessageScene,
VinDecoderAboutScene,
VinDecoderSceneCount,
} VinDecoderScene;
typedef enum {
VinDecoderSubmenuView,
VinDecoderWidgetView,
VinDecoderTextInputView,
} VinDecoderView;
typedef struct VinDecoderApp {
SceneManager* scene_manager;
ViewDispatcher* view_dispatcher;
Submenu* submenu;
Widget* widget;
TextInput* text_input;
char* vin;
uint8_t vin_size;
} VinDecoderApp;
typedef enum {
VinDecoderMainMenuSceneVinInput,
VinDecoderMainMenuSceneAbout,
} VinDecoderMainMenuSceneIndex;
typedef enum {
VinDecoderMainMenuSceneVinInputEvent,
VinDecoderMainMenuSceneAboutEvent,
} VinDecoderMainMenuEvent;
typedef enum {
VinDecoderVinInputSceneSaveEvent,
} VinDecoderVinInputEvent;
void vin_decoder_text_input_callback(void* context);
static bool vin_decoder_custom_callback(void* context, uint32_t custom_event);
bool vin_decoder_back_event_callback(void* context);
int get_vehicle_year(char vin_char);
const char* get_vehicle_manufacturer(const char* vin);
void vin_decoder_menu_callback(void* context, uint32_t index) {
VinDecoderApp* app = context;
switch (index) {
case VinDecoderMainMenuSceneVinInput:
scene_manager_handle_custom_event(app->scene_manager, VinDecoderMainMenuSceneVinInputEvent);
break;
case VinDecoderMainMenuSceneAbout:
scene_manager_handle_custom_event(app->scene_manager, VinDecoderMainMenuSceneAboutEvent);
break;
}
}
void vin_decoder_main_menu_scene_on_enter(void* context) {
VinDecoderApp* app = context;
submenu_reset(app->submenu);
submenu_set_header(app->submenu, "VIN Decoder App");
submenu_add_item(
app->submenu,
"Enter VIN",
VinDecoderMainMenuSceneVinInput,
vin_decoder_menu_callback,
app);
submenu_add_item(
app->submenu,
"About",
VinDecoderMainMenuSceneAbout,
vin_decoder_menu_callback,
app);
view_dispatcher_switch_to_view(app->view_dispatcher, VinDecoderSubmenuView);
}
bool vin_decoder_main_menu_scene_on_event(void* context, SceneManagerEvent event) {
VinDecoderApp* app = context;
bool consumed = false;
switch (event.type) {
case SceneManagerEventTypeCustom:
switch (event.event) {
case VinDecoderMainMenuSceneVinInputEvent:
scene_manager_next_scene(app->scene_manager, VinDecoderVinInputScene);
consumed = true;
break;
case VinDecoderMainMenuSceneAboutEvent:
scene_manager_next_scene(app->scene_manager, VinDecoderAboutScene);
consumed = true;
break;
}
break;
default:
break;
}
return consumed;
}
void vin_decoder_main_menu_scene_on_exit(void* context) {
VinDecoderApp* app = context;
submenu_reset(app->submenu);
}
void vin_decoder_text_input_callback(void* context) {
VinDecoderApp* app = context;
if (strlen(app->vin) > 17) {
app->vin[17] = '\0';
}
for (int i = 0; app->vin[i] != '\0'; i++) {
app->vin[i] = toupper(app->vin[i]);
}
scene_manager_handle_custom_event(app->scene_manager, VinDecoderVinInputSceneSaveEvent);
}
void vin_decoder_vin_input_scene_on_enter(void* context) {
VinDecoderApp* app = context;
bool clear_text = true;
text_input_reset(app->text_input);
text_input_set_header_text(app->text_input, "Enter your 17-character VIN");
text_input_set_result_callback(
app->text_input,
vin_decoder_text_input_callback,
app,
app->vin,
app->vin_size,
clear_text);
app->vin[17] = '\0';
view_dispatcher_switch_to_view(app->view_dispatcher, VinDecoderTextInputView);
}
bool vin_decoder_vin_input_scene_on_event(void* context, SceneManagerEvent event) {
VinDecoderApp* app = context;
bool consumed = false;
if (event.type == SceneManagerEventTypeCustom) {
if (event.event == VinDecoderVinInputSceneSaveEvent) {
scene_manager_next_scene(app->scene_manager, VinDecoderVinMessageScene);
consumed = true;
}
}
return consumed;
}
void vin_decoder_vin_input_scene_on_exit(void* context) {
UNUSED(context);
}
void vin_decoder_vin_message_scene_on_enter(void* context) {
VinDecoderApp* app = context;
widget_reset(app->widget);
FuriString* message = furi_string_alloc();
int year = get_vehicle_year(app->vin[9]);
const char* manufacturer = get_vehicle_manufacturer(app->vin);
furi_string_printf(
message, "Your VIN is:\n%s\nManufacturer:\n%s\nYear: %d", app->vin, manufacturer, year);
widget_add_string_multiline_element(
app->widget, 5, 30, AlignLeft, AlignCenter, FontSecondary, furi_string_get_cstr(message));
furi_string_free(message);
view_dispatcher_switch_to_view(app->view_dispatcher, VinDecoderWidgetView);
}
bool vin_decoder_vin_message_scene_on_event(void* context, SceneManagerEvent event) {
UNUSED(context);
UNUSED(event);
return false;
}
void vin_decoder_vin_message_scene_on_exit(void* context) {
VinDecoderApp* app = context;
widget_reset(app->widget);
}
void vin_decoder_about_scene_on_enter(void* context) {
VinDecoderApp* app = context;
widget_reset(app->widget);
FuriString* about_message = furi_string_alloc();
furi_string_printf(about_message, "VIN Decoder App\nVersion 0.2\nAuthor:evillero\n\nwww.github.com/evillero");
widget_add_string_multiline_element(
app->widget, 5, 30, AlignLeft, AlignCenter, FontSecondary, furi_string_get_cstr(about_message));
furi_string_free(about_message);
view_dispatcher_switch_to_view(app->view_dispatcher, VinDecoderWidgetView);
}
bool vin_decoder_about_scene_on_event(void* context, SceneManagerEvent event) {
UNUSED(context);
UNUSED(event);
return false;
}
void vin_decoder_about_scene_on_exit(void* context) {
VinDecoderApp* app = context;
widget_reset(app->widget);
}
void (*const vin_decoder_scene_on_enter_handlers[])(void*) = {
vin_decoder_main_menu_scene_on_enter,
vin_decoder_vin_input_scene_on_enter,
vin_decoder_vin_message_scene_on_enter,
vin_decoder_about_scene_on_enter,
};
bool (*const vin_decoder_scene_on_event_handlers[])(void*, SceneManagerEvent) = {
vin_decoder_main_menu_scene_on_event,
vin_decoder_vin_input_scene_on_event,
vin_decoder_vin_message_scene_on_event,
vin_decoder_about_scene_on_event,
};
void (*const vin_decoder_scene_on_exit_handlers[])(void*) = {
vin_decoder_main_menu_scene_on_exit,
vin_decoder_vin_input_scene_on_exit,
vin_decoder_vin_message_scene_on_exit,
vin_decoder_about_scene_on_exit,
};
static const SceneManagerHandlers vin_decoder_scene_manager_handlers = {
.on_enter_handlers = vin_decoder_scene_on_enter_handlers,
.on_event_handlers = vin_decoder_scene_on_event_handlers,
.on_exit_handlers = vin_decoder_scene_on_exit_handlers,
.scene_num = VinDecoderSceneCount,
};
static bool vin_decoder_custom_callback(void* context, uint32_t custom_event) {
furi_assert(context);
VinDecoderApp* app = context;
return scene_manager_handle_custom_event(app->scene_manager, custom_event);
}
bool vin_decoder_back_event_callback(void* context) {
furi_assert(context);
VinDecoderApp* app = context;
return scene_manager_handle_back_event(app->scene_manager);
}
static VinDecoderApp* vin_decoder_app_alloc() {
VinDecoderApp* app = malloc(sizeof(VinDecoderApp));
app->vin_size = 18;
app->vin = malloc(app->vin_size);
app->scene_manager = scene_manager_alloc(&vin_decoder_scene_manager_handlers, app);
app->view_dispatcher = view_dispatcher_alloc();
view_dispatcher_set_event_callback_context(app->view_dispatcher, app);
view_dispatcher_set_custom_event_callback(app->view_dispatcher, vin_decoder_custom_callback);
view_dispatcher_set_navigation_event_callback(app->view_dispatcher, vin_decoder_back_event_callback);
app->submenu = submenu_alloc();
view_dispatcher_add_view(
app->view_dispatcher, VinDecoderSubmenuView, submenu_get_view(app->submenu));
app->widget = widget_alloc();
view_dispatcher_add_view(
app->view_dispatcher, VinDecoderWidgetView, widget_get_view(app->widget));
app->text_input = text_input_alloc();
view_dispatcher_add_view(
app->view_dispatcher, VinDecoderTextInputView, text_input_get_view(app->text_input));
return app;
}
static void vin_decoder_app_free(VinDecoderApp* app) {
furi_assert(app);
view_dispatcher_remove_view(app->view_dispatcher, VinDecoderSubmenuView);
view_dispatcher_remove_view(app->view_dispatcher, VinDecoderWidgetView);
view_dispatcher_remove_view(app->view_dispatcher, VinDecoderTextInputView);
scene_manager_free(app->scene_manager);
view_dispatcher_free(app->view_dispatcher);
submenu_free(app->submenu);
widget_free(app->widget);
text_input_free(app->text_input);
free(app->vin);
free(app);
}
int get_vehicle_year(char vin_char) {
switch (vin_char) {
case 'T': return 1996;
case 'V': return 1997;
case 'W': return 1998;
case 'X': return 1999;
case 'Y': return 2000;
case '1': return 2001;
case '2': return 2002;
case '3': return 2003;
case '4': return 2004;
case '5': return 2005;
case '6': return 2006;
case '7': return 2007;
case '8': return 2008;
case '9': return 2009;
case 'A': return 2010;
case 'B': return 2011;
case 'C': return 2012;
case 'D': return 2013;
case 'E': return 2014;
case 'F': return 2015;
case 'G': return 2016;
case 'H': return 2017;
case 'J': return 2018;
case 'K': return 2019;
case 'L': return 2020;
case 'M': return 2021;
case 'N': return 2022;
case 'P': return 2023;
case 'R': return 2024;
case 'S': return 2025;
default: return -1;
}
}
typedef struct {
char code[4];
const char* name;
} Manufacturer;
static const Manufacturer manufacturers[] = {
{"WEG", "Ablinger"},
{"RKT", "Access Motor"},
{"ZA0", "Acerbi"},
{"WAF", "Ackermann"},
{"ZDJ", "ACM Biagini"},
{"JH4", "Acura"},
{"2HH", "Acura"},
{"2HN", "Acura"},
{"19U", "Acura"},
{"19V", "Acura"},
{"JAE", "Acura SLX"},
{"5FR", "Acura SUV"},
{"5J8", "Acura SUV"},
{"4W5", "Acura ZDX EV"},
{"W0L", "Adam Opel"},
{"YBD", "Addax"},
{"RFL", "Adly"},
{"WSV", "Aebi Schmidt Group"},
{"RF3", "Aeon Motor"},
{"TKX", "Agados"},
{"8BB", "Agrale"},
{"9BY", "Agrale"},
{"VLG", "Aixam-Mega"},
{"ZAA", "Alfa Romeo"},
{"ZAR", "Alfa Romeo"},
{"ZAS", "Alfa Romeo"},
{"ZAS", "Alfa Romeo"},
{"TSF", "Alfabusz"},
{"WAP", "Alpina"},
{"137", "AM General Hummer"},
{"XEA", "AmberAvto"},
{"1AF", "American LaFrance"},
{"4Z3", "American LaFrance"},
{"1AM", "American Motors"},
{"2CM", "American Motors Corp"},
{"XE2", "AMKAR"},
{"Y9M", "AMS"},
{"MBY", "AMW"},
{"NNA", "Anadolu Isuzu"},
{"SKL", "Anaig"},
{"LA8", "Anhui Ankai"},
{"LK2", "Anhui JAC Bus"},
{"ZC1", "AnsaldoBreda"},
{"XLJ", "Anssems"},
{"ZD4", "Aprilia"},
{"7F7", "Arcimoto"},
{"5AX", "Armor"},
{"UU3", "ARO"},
{"SX7", "Arthur Bus"},
{"VGT", "ASCA"},
{"MB1", "Ashok"},
{"KN1", "Asia Motors"},
{"KN2", "Asia Motors"},
{"SCF", "Aston Martin"},
{"SD7", "Aston Martin"},
{"UU9", "Astra Bus"},
{"2CG", "Asuna/Pontiac"},
{"MYH", "Ather Energy"},
{"YA2", "Atlas Copco"},
{"MCG", "Atul Auto"},
{"AAA", "Audi"},
{"TRU", "Audi"},
{"93U", "Audi"},
{"99A", "Audi"},
{"WAU", "Audi car"},
{"WUA", "Audi Sport"},
{"WU1", "Audi Sport"},
{"WA1", "Audi SUV"},
{"WAC", "Audi/Porsche RS2 Avant"},
{"EAA", "Aurus Motors"},
{"UA1", "AUSA Center"},
{"SAA", "Austin"},
{"SAX", "Austin-Rover"},
{"ZAA", "Autobianchi"},
{"516", "Autocar truck"},
{"SUA", "Autosan"},
{"12A", "Avanti"},
{"TNA", "Avia/Daewoo"},
{"SGA", "Avondale"},
{"XU6", "Avtodom"},
{"VZ2", "Avtomontaza"},
{"XUU", "AvtoTor"},
{"XWE", "AvtoTor"},
{"XWF", "AvtoTor"},
{"X4X", "AvtoTor"},
{"8LG", "Aymesa"},
{"SPE", "B-ON"},
{"LKC", "BAIC"},
{"AFD", "BAIC Automotive"},
{"LNB", "BAIC Motor"},
{"SGB", "Bailey"},
{"MD2", "Bajaj Auto"},
{"1BL", "Balko"},
{"LZP", "Baotian"},
{"L82", "Baotian"},
{"HJ4", "BAW"},
{"Y7F", "BAZ"},
{"6KT", "BCI Bus"},
{"1BN", "Beall Trailers"},
{"SKF", "Bedford"},
{"LHB", "Beijing"},
{"LRD", "Beijing"},
{"LXV", "Beijing"},
{"LE4", "Beijing Benz-Daimler"},
{"LBE", "Beijing Hyundai"},
{"Y3J", "Belkommunmash"},
{"VH1", "Benalu SAS"},
{"MER", "Benelli"},
{"ZBN", "Benelli"},
{"SCB", "Bentley"},
{"SJA", "Bentley SUV"},
{"LD5", "Benzhou Vehicle"},
{"ZBB", "Bertone"},
{"V6A", "Bestnet"},
{"ZD3", "Beta Motor"},
{"ZES", "Bimota"},
{"WBJ", "Bitter Cars"},
{"7SU", "Blue Arc"},
{"1BA", "Blue Bird"},
{"1BB", "Blue Bird"},
{"1BD", "Blue Bird"},
{"VL4", "Bluecar"},
{"WB2", "Blyss"},
{"NMC", "BMC"},
{"ABM", "BMW"},
{"MMF", "BMW"},
{"3MW", "BMW"},
{"4US", "BMW"},
{"98M", "BMW"},
{"PM1", "BMW & Mini"},
{"LBV", "BMW Brilliance"},
{"WBA", "BMW"},
{"WBY", "BMW i"},
{"WB5", "BMW i SUV"},
{"WBS", "BMW M"},
{"3MF", "BMW M"},
{"5UM", "BMW M"},
{"5YM", "BMW M SUV"},
{"95V", "BMW motorcycles"},
{"WB1", "BMW Motorrad"},
{"WB3", "BMW Motorrad"},
{"WB4", "BMW Motorrad"},
{"99Z", "BMW Motorrad"},
{"WBX", "BMW SUV"},
{"5UX", "BMW SUV"},
{"SVS", "BODEX"},
{"Y6J", "Bogdan"},
{"Y6L", "Bogdan"},
{"Y7B", "Bogdan group"},
{"XJY", "Bonum"},
{"SZL", "Boro Trailers"},
{"TBS", "Boschung"},
{"NRE", "Bozankaya"},
{"51R", "Brammo Motorcycles"},
{"ZCZ", "BredaBus"},
{"UH2", "Brenderup"},
{"V6B", "Brentex"},
{"SJB", "Brian James"},
{"LSY", "Brilliance"},
{"X9W", "Brilliance"},
{"3JB", "BRP"},
{"VGW", "BSLT"},
{"TEB", "Bucher"},
{"5MZ", "Buell"},
{"95Z", "Buell"},
{"4MZ", "Buell Motorcycle Company"},
{"PM9", "Bufori"},
{"W04", "Buick"},
{"2G4", "Buick"},
{"1G4", "Buick"},
{"3G4", "Buick"},
{"5GA", "Buick MPV/SUV"},
{"3G5", "Buick SUV"},
{"XLK", "Burg"},
{"99L", "BYD"},
{"LC0", "BYD Auto"},
{"LGX", "BYD Auto"},
{"LPE", "BYD Auto"},
{"ZDY", "Cacciamali"},
{"2G6", "Cadillac"},
{"2GE", "Cadillac"},
{"1G6", "Cadillac"},
{"1GE", "Cadillac"},
{"1GY", "Cadillac"},
{"YSC", "Cadillac BLS"},
{"W06", "Cadillac Catera"},
{"3GY", "Cadillac SUV"},
{"ZCG", "Cagiva/MV Agusta"},
{"ST3", "Calabrese"},
{"UHL", "Camp-let"},
{"RLV", "Can-Am"},
{"2BZ", "Can-Am"},
{"2BV", "Can-Am & Bombardier ATV"},
{"2BW", "Can-Am Commander E LSV"},
{"2BX", "Can-Am Spyder"},
{"7TN", "Canoo"},
{"95P", "CAOA"},
{"4LM", "Capacity of Texas"},
{"VFG", "Caravelair"},
{"ZB3", "Cardi"},
{"ZE5", "Carmosino"},
{"4YM", "Carry-On"},
{"SMW", "Cartwright"},
{"ZD5", "Casalini"},
{"SDK", "Caterham"},
{"1HS", "Caterpillar"},
{"1HT", "Caterpillar"},
{"3HS", "Caterpillar Trucks"},
{"TWG", "CeatanoBus"},
{"7H8", "Cenntro"},
{"LCE", "CFMOTO"},
{"AAW", "Challenger"},
{"LS4", "Changan"},
{"LS5", "Changan"},
{"LS6", "Changan"},
{"LSC", "Changan Automobile"},
{"LVS", "Changan Ford"},
{"LVR", "Changan Mazda"},
{"LPA", "Changan PSA"},
{"LVF", "Changhe Suzuki"},
{"LFY", "Changshu Light Motorcycle Factory"},
{"LAN", "Changzhou Yamasaki"},
{"1CM", "Checker Motors"},
{"LNN", "Chery"},
{"LVT", "Chery"},
{"LVU", "Chery"},
{"LVV", "Chery"},
{"PRH", "Chery"},
{"98R", "Chery"},
{"9UJ", "Chery"},
{"LVM", "Chery Commercial Vehicle"},
{"LUR", "Chery,iCar"},
{"VKD", "Cheval Liberte"},
{"J8B", "Chevrolet"},
{"J8C", "Chevrolet"},
{"J8Z", "Chevrolet"},
{"MMM", "Chevrolet"},
{"2G1", "Chevrolet"},
{"2GA", "Chevrolet"},
{"2GB", "Chevrolet"},
{"2GN", "Chevrolet"},
{"1G1", "Chevrolet"},
{"1G8", "Chevrolet"},
{"1GA", "Chevrolet"},
{"1GB", "Chevrolet"},
{"1GN", "Chevrolet"},
{"1HA", "Chevrolet"},
{"3G1", "Chevrolet"},
{"8AG", "Chevrolet"},
{"8GG", "Chevrolet"},
{"9BG", "Chevrolet"},
{"9GA", "Chevrolet"},
{"4G1", "Chevrolet Cavalier"},
{"2G8", "Chevrolet MPV"},
{"3GN", "Chevrolet SUV"},
{"93C", "Chevrolet SUV"},
{"2GC", "Chevrolet truck"},
{"1GC", "Chevrolet truck"},
{"3GC", "Chevrolet truck"},
{"JG1", "Chevrolet/Geo"},
{"JGC", "Chevrolet/Geo"},
{"J81", "Chevrolet/Geo"},
{"1Y1", "Chevrolet/Geo"},
{"RKM", "China Motor"},
{"XTS", "ChMZAP"},
{"LHJ", "Chongqing"},
{"LWM", "Chongqing"},
{"LXY", "Chongqing"},
{"LX8", "Chongqing"},
{"L1K", "Chongqing"},
{"LAP", "Chongqing Jianshe"},
{"LB4", "Chongqing Yinxiang"},
{"JJ3", "Chrysler"},
{"ZC2", "Chrysler"},
{"3A4", "Chrysler"},
{"3C3", "Chrysler"},
{"3C3", "Chrysler"},
{"3C4", "Chrysler"},
{"3C4", "Chrysler"},
{"3C6", "Chrysler"},
{"3C7", "Chrysler"},
{"3C8", "Chrysler"},
{"1C3", "Chrysler"},
{"1C3", "Chrysler"},
{"1C4", "Chrysler"},
{"1C4", "Chrysler"},
{"1C6", "Chrysler"},
{"1C8", "Chrysler"},
{"2C3", "Chrysler"},
{"2C3", "Chrysler"},
{"2C4", "Chrysler"},
{"2C4", "Chrysler"},
{"2C8", "Chrysler"},
{"4C3", "Chrysler"},
{"3A8", "Chrysler"},
{"MZZ", "Citroen"},
{"TW6", "Citroen"},
{"VF7", "Citroen"},
{"VR7", "Citroen"},
{"VS7", "Citroen"},
{"8BC", "Citroen"},
{"935", "Citroen"},
{"9V7", "Citroen"},
{"5J5", "Club Car"},
{"SG4", "Coachman"},
{"53G", "Coda Automotive"},
{"43C", "Consulier"},
{"1MR", "Continental"},
{"5EO", "Cottrell"},
{"RFT", "CPI"},
{"1CY", "Crane Carrier Company"},
{"TRK", "Credo bus"},
{"V34", "Crobus"},
{"4V0", "Crossroads RV"},
{"LHW", "CRRC"},
{"5YN", "Cruise"},
{"TRC", "Csepel bus"},
{"KLP", "CT&T United"},
{"1CU", "Cushman Haulster"},
{"UU1", "Dacia"},
{"LDB", "Dadi Auto"},
{"KMY", "Daelim Motor"},
{"KL7", "Daewoo"},
{"UU6", "Daewoo"},
{"5GD", "Daewoo G2X"},
{"KLA", "Daewoo/GM"},
{"KLY", "Daewoo/GM"},
{"KL1", "Daewoo/GM"},
{"KL2", "Daewoo/GM"},
{"KL3", "Daewoo/GM"},
{"KL7", "Daewoo/GM"},
{"KL8", "Daewoo/GM"},
{"XLR", "DAF"},
{"XLA", "DAF Bus"},
{"XLV", "DAF Bus"},
{"98P", "DAF Trucks"},
{"95V", "Dafra Motos"},
{"JD1", "Daihatsu"},
{"JD2", "Daihatsu SUV"},
{"JD4", "Daihatsu truck"},
{"JDA", "Daihatsu, Subaru Justy"},
{"MEC", "Daimler"},
{"LDD", "Dandong Huanghai"},
{"LG6", "Dayun Group"},
{"UH2", "De Forenede"},
{"ZDT", "De Tomaso"},
{"SCE", "DeLorean Motor"},
{"SEG", "Dennis Eagle"},
{"VTH", "Derbi"},
{"WDT", "Dethleffs"},
{"LVP", "DFSK"},
{"LVZ", "DFSK"},
{"MKF", "DFSK"},
{"X21", "Diesel-S"},
{"MC4", "Dilip"},
{"Y9T", "Dnipro"},
{"1B6", "Dodg"},
{"JB3", "Dodge"},
{"1B3", "Dodge"},
{"2D6", "Dodge"},
{"3B3", "Dodge"},
{"3B4", "Dodge"},
{"3B6", "Dodge"},
{"3B7", "Dodge"},
{"1D3", "Dodge"},
{"1D4", "Dodge"},
{"1D7", "Dodge"},
{"1D8", "Dodge"},
{"2B3", "Dodge"},
{"2B4", "Dodge"},
{"2B5", "Dodge"},
{"2B7", "Dodge"},
{"4B3", "Dodge"},
{"937", "Dodge"},
{"2D4", "Dodge MPV"},
{"2D8", "Dodge MPV"},
{"JB4", "Dodge MPV/SUV"},
{"WDW", "Dodge Sprinter"},
{"WDX", "Dodge Sprinter"},
{"WD0", "Dodge Sprinter"},
{"WD8", "Dodge Sprinter"},
{"1B4", "Dodge SUV"},
{"3D4", "Dodge SUV"},
{"JB7", "Dodge truck"},
{"1B7", "Dodge truck"},
{"2D7", "Dodge truck"},
{"3D3", "Dodge truck"},
{"3D7", "Dodge truck"},
{"SDF", "Dodge Trucks"},
{"SEP", "Don-Bur"},
{"LEW", "Dongfeng"},
{"LGA", "Dongfeng"},
{"LGB", "Dongfeng"},
{"LGC", "Dongfeng"},
{"LGF", "Dongfeng"},
{"LGJ", "Dongfeng"},
{"LUD", "Dongfeng"},
{"LUX", "Dongfeng"},
{"9UT", "Dongfeng"},
{"LLU", "Dongfeng Fengxing"},
{"LVH", "Dongfeng Honda"},
{"LGG", "Dongfeng Liuzhou Motor"},
{"LGB", "Dongfeng Nissan"},
{"7KY", "Dorsey"},
{"LDC", "DPCA"},
{"ZPY", "DR Automobiles"},
{"VR1", "DS Automobiles"},
{"ZDM", "Ducati"},
{"ZKC", "Ducati Energia"},
{"ML0", "Ducati Motor"},
{"2DN", "Dynasty"},
{"4EN", "E-ONE"},
{"RK3", "E-Ton"},
{"10R", "E-Z-GO"},
{"WEL", "e.GO Mobile"},
{"TSE", "EAG"},
{"4E3", "Eagle"},
{"JE3", "Eagle car"},
{"2E3", "Eagle car"},
{"2XM", "Eagle Premier"},
{"546", "EBR"},
{"T7A", "Ebusco"},
{"XL3", "Ebusco"},
{"YC3", "Eduard"},
{"MC2", "Eicher Motors"},
{"MAN", "Eicher Polaris"},
{"SGE", "Elddis"},
{"ZEB", "Ellebi"},
{"R4N", "Elyx Smart"},
{"ZNN", "Energica"},
{"LTW", "Enovate"},
{"SAF", "ERF trucks"},
{"UU7", "Euro Bus Diamond"},
{"EAU", "EVM"},
{"WEB", "Evobus"},
{"R2P", "Evoke"},
{"EAN", "Evolute"},
{"1XA", "Excalibur"},
{"5EH", "Excelsior-Henderson"},
{"ZFM", "Fantic Motor"},
{"7G0", "Faraday Future"},
{"HGL", "Farizon"},
{"V1Y", "FAS Sanos bus"},
{"AAK", "FAW"},
{"LFP", "FAW"},
{"LDK", "FAW Bus"},
{"LFN", "FAW Bus"},
{"LFB", "FAW Group"},
{"LFW", "FAW JieFang"},
{"LFM", "FAW Toyota"},
{"LTV", "FAW Toyota"},
{"LFT", "FAW trailers"},
{"LH1", "FAW-Haima"},
{"LFV", "FAW-Volkswagen"},
{"YAF", "Faymonville"},
{"YAM", "Faymonville"},
{"ZH5", "FB Mondial"},
{"MCA", "FCA"},
{"46J", "Federal Motors Inc"},
{"5FT", "Feeling Trailers"},
{"WFC", "Fendt"},
{"ZFF", "Ferrari"},
{"ZDF", "Ferrari Dino"},
{"ZSG", "Ferrari SUV"},
{"TFH", "FHS"},
{"MAH", "Fiat"},
{"VXF", "Fiat"},
{"ZFA", "Fiat"},
{"ZFB", "Fiat"},
{"8AP", "Fiat"},
{"9BD", "Fiat"},
{"9VC", "Fiat"},
{"JC1", "Fiat 124 Spider"},
{"93W", "Fiat Ducato"},
{"3E4", "Fiat SUV"},
{"ZFC", "Fiat truck"},
{"VYF", "Fiat van"},
{"VCF", "Fisker"},
{"WFD", "Fliegl"},
{"1GF", "Flxible bus"},
{"SFN", "Foden"},
{"YU1", "Fogelsta"},
{"13N", "Fontaine"},
{"MC1", "Force Motors"},
{"AFA", "Ford"},
{"JC0", "Ford"},
{"MAJ", "Ford"},
{"MNA", "Ford"},
{"MNB", "Ford"},
{"MPB", "Ford"},
{"NM0", "Ford"},
{"PE1", "Ford"},
{"PR8", "Ford"},
{"RHA", "Ford"},
{"RL0", "Ford"},
{"SFA", "Ford"},
{"UN1", "Ford"},
{"VS6", "Ford"},
{"WF0", "Ford"},
{"XLC", "Ford"},
{"X9F", "Ford"},
{"Y4F", "Ford"},
{"Z6F", "Ford"},
{"2FA", "Ford"},
{"2FM", "Ford"},
{"3FA", "Ford"},
{"3FC", "Ford"},
{"3FE", "Ford"},
{"3FR", "Ford"},
{"1FA", "Ford"},
{"1FB", "Ford"},
{"1FC", "Ford"},
{"1FD", "Ford"},
{"1FM", "Ford"},
{"1F1", "Ford"},
{"1F6", "Ford"},
{"1ZV", "Ford"},
{"5LD", "Ford"},
{"6F1", "Ford"},
{"6FP", "Ford"},
{"7A5", "Ford"},
{"8AF", "Ford"},
{"8XD", "Ford"},
{"9BF", "Ford"},
{"JC2", "Ford Courier"},
{"3FN", "Ford F-650/F-750"},
{"KNJ", "Ford Festiva"},
{"TW2", "Ford Lusitana"},
{"3FM", "Ford MPV/SUV"},
{"2FT", "Ford truck"},
{"3FT", "Ford truck"},
{"1FT", "Ford truck"},
{"4X4", "Forest River"},
{"5NH", "Forest River"},
{"5ZT", "Forest River"},
{"LMX", "Forthing"},
{"LB5", "Foshan City"},
{"MP5", "Foton"},
{"LVA", "Foton Motor"},
{"LVC", "Foton Motor bus"},
{"LVB", "Foton Motor truck"},
{"X2L", "Fox"},
{"XZT", "FoxBus"},
{"SAZ", "Freight Rover"},
{"WCD", "Freightliner"},
{"2FU", "Freightliner"},
{"2FV", "Freightliner"},
{"1FU", "Freightliner"},
{"1FV", "Freightliner"},
{"W1H", "Freightliner Econic"},
{"WDP", "Freightliner Sprinter"},
{"WDR", "Freightliner Sprinter"},
{"WDY", "Freightliner Sprinter"},
{"WD1", "Freightliner Sprinter"},
{"WD2", "Freightliner Sprinter"},
{"WD5", "Freightliner Sprinter"},
{"W2W", "Freightliner Sprinter"},
{"W2X", "Freightliner Sprinter"},
{"W2Y", "Freightliner Sprinter"},
{"W2Z", "Freightliner Sprinter"},
{"3AK", "Freightliner Trucks"},
{"3AL", "Freightliner Trucks"},
{"WD6", "Freightliner Unimog"},
{"WD7", "Freightliner Unimog"},
{"1FG", "Freightliner Unimog"},
{"SFR", "Fruehauf"},
{"VFK", "Fruehauf"},
{"SUL", "FSC"},
{"SUF", "FSM/Fiat"},
{"SUP", "FSO"},
{"LB1", "Fujian Benz"},
{"LFJ", "Fujian Motors"},
{"LNA", "GAC"},
{"LWV", "GAC"},
{"PRN", "GAC"},
{"LMW", "GAC Group"},
{"LHG", "GAC Honda"},
{"LL6", "GAC Mitsubishi"},
{"LMG", "GAC Motor"},
{"LVG", "GAC Toyota"},
{"UJG", "Garia"},
{"VTR", "Gas Gas"},
{"XTH", "GAZ"},
{"X96", "GAZ"},
{"Y7D", "GAZ"},
{"L6T", "Geely"},
{"Y4K", "Geely"},
{"Y7W", "Geely"},
{"LB3", "Geely Automobile"},
{"L10", "Geely Emgrand"},
{"LB2", "Geely Motorcycles"},
{"5AS", "GEM"},
{"52C", "GEM"},
{"6G1", "General Motors"},
{"6G3", "General Motors"},
{"6H8", "General Motors"},
{"ADM", "General Motors"},
{"4G5", "General Motors"},
{"8LD", "General Motors"},
{"8Z1", "General Motors"},
{"2Gx", "General Motors"},
{"XUF", "General Motors"},
{"KMT", "Genesis Motor"},
{"KMU", "Genesis Motor SUV"},
{"2CN", "Geo/Chevrolet"},
{"2C1", "Geo/Chevrolet"},
{"46G", "Gillig"},
{"15G", "Gillig bus"},
{"SA3", "Ginetta Cars"},
{"MA6", "GM"},
{"MCB", "GM"},
{"MJB", "GM"},
{"KL5", "GM Daewoo"},
{"KL6", "GM Daewoo"},
{"4W1", "GM Defense"},
{"KL4", "GM Korea"},
{"X9L", "GM-AvtoVAZ"},
{"JGT", "GMC"},
{"J8D", "GMC"},
{"J8T", "GMC"},
{"2G0", "GMC"},
{"2GD", "GMC"},
{"2GH", "GMC"},
{"2GJ", "GMC"},
{"2GK", "GMC"},
{"1G0", "GMC"},
{"1G0", "GMC"},
{"1G5", "GMC"},
{"1GD", "GMC"},
{"1GH", "GMC"},
{"1GJ", "GMC"},
{"1GK", "GMC"},
{"7GZ", "GMC i"},
{"2G5", "GMC MPV"},
{"3GK", "GMC SUV"},
{"2CT", "GMC Terrain"},
{"2CK", "GMC Tracker"},
{"1GT", "GMC Truck"},
{"2GT", "GMC truck"},
{"3GT", "GMC truck"},
{"XTF", "GolAZ"},
{"WG0", "Goldhofer"},
{"LCR", "Gonow"},
{"1G9", "Google"},
{"WGB", "Goppel Bus"},
{"VRW", "Goupil"},
{"UD3", "Granalu"},
{"VK2", "Grandin"},
{"U6A", "Granus"},
{"SMX", "Gray & Adams"},
{"X90", "GRAZ"},
{"1GR", "Great Dane Trailers"},
{"LGW", "Great Wall Motor"},
{"XZG", "Great Wall Motor"},
{"X9X", "Great Wall Motors"},
{"Y7C", "Great Wall Motors"},
{"8L4", "Great Wall Motors"},
{"VJY", "Gruau"},
{"VJ4", "Gruau"},
{"LE8", "Guangzhou"},
{"LP6", "Guangzhou"},
{"LZU", "Guangzhou Isuzu"},
{"LGL", "Guilin Daewoo"},
{"VWF", "Guillen"},
{"XZP", "Gut Trailer"},
{"MNU", "GWM"},
{"LKH", "Hafei Motor"},
{"LMV", "Haima"},
{"WHW", "Hako"},
{"WMU", "Hako"},
{"VAH", "Hangler"},
{"99K", "Haojue & Kymco"},
{"MEG", "Harley-Davidson"},
{"MLY", "Harley-Davidson"},
{"1HD", "Harley-Davidson"},
{"932", "Harley-Davidson"},
{"5HD", "Harley-Davidson"},
{"7MZ", "HDK"},
{"5HT", "Heil Trailer"},
{"LS8", "Henan"},
{"MBL", "Hero"},
{"UKR", "Hero Camper"},
{"LGV", "Heshan"},
{"VJ1", "Heuliez Bus"},
{"PML", "Hicom"},
{"LKL", "Higer Bus"},
{"MA7", "Hindustan Motors"},
{"AHH", "Hino"},
{"JHA", "Hino"},
{"JHB", "Hino"},
{"JHD", "Hino"},
{"JHF", "Hino"},
{"JHH", "Hino"},
{"MNK", "Hino"},
{"7H4", "Hino truck"},
{"R36", "HK Shansu"},
{"44K", "HME"},
{"WHB", "Hobby"},
{"MMU", "Holden"},
{"1GH", "Holden"},
{"3G0", "Holden"},
{"3GM", "Holden Suburban"},
{"5G8", "Holden Volt"},
{"W0L", "Holden Zafira"},
{"AHM", "Honda"},
{"MAK", "Honda"},
{"ME4", "Honda"},
{"MHR", "Honda"},
{"MRH", "Honda"},
{"NLA", "Honda"},
{"NMH", "Honda"},
{"PAD", "Honda"},
{"PMH", "Honda"},
{"PMK", "Honda"},
{"RK3", "Honda"},
{"RLH", "Honda"},
{"SAH", "Honda"},
{"SHH", "Honda"},
{"SHS", "Honda"},
{"YC1", "Honda"},
{"ZDC", "Honda"},
{"2HG", "Honda"},
{"2HJ", "Honda"},
{"2HK", "Honda"},
{"1HG", "Honda"},
{"3H1", "Honda"},
{"3HG", "Honda"},
{"7A3", "Honda"},
{"8C3", "Honda"},
{"93H", "Honda"},
{"NFB", "Honda Atlas"},
{"478", "Honda ATV"},
{"LUC", "Honda Automobile"},
{"19X", "Honda car"},
{"5KB", "Honda car"},
{"1HF", "Honda moto/ATV/UTV"},
{"8CH", "Honda motorcycle"},
{"5FN", "Honda MPV/SUV"},
{"3GP", "Honda Prologue"},
{"3CZ", "Honda SUV"},
{"4S6", "Honda SUV"},
{"5J6", "Honda SUV"},
{"7FA", "Honda SUV"},
{"5FP", "Honda truck"},
{"WHD", "Humbaur"},
{"5GR", "Hummer H2"},
{"5GT", "Hummer H3"},
{"5GN", "Hummer H3T"},
{"YU7", "Husaberg"},
{"VBK", "Husqvarna"},
{"ZCG", "Husqvarna"},
{"ZHU", "Husqvarna"},
{"ZKH", "Husqvarna"},
{"WHY", "Hymer"},
{"AC5", "Hyundai"},
{"KMF", "Hyundai"},
{"KMH", "Hyundai"},
{"MAL", "Hyundai"},
{"MB2", "Hyundai"},
{"MX3", "Hyundai"},
{"NLH", "Hyundai"},
{"NLJ", "Hyundai"},
{"PFD", "Hyundai"},
{"PP3", "Hyundai"},
{"TMC", "Hyundai"},
{"X7M", "Hyundai"},
{"Z94", "Hyundai"},
{"2HM", "Hyundai"},
{"3H3", "Hyundai"},
{"5NP", "Hyundai"},
{"7YA", "Hyundai"},
{"9BH", "Hyundai"},
{"KMX", "Hyundai Galloper"},
{"KMJ", "Hyundai bus"},
{"TMA", "Hyundai Motor"},
{"KM8", "Hyundai SUV"},
{"5NM", "Hyundai SUV"},
{"KMC", "Hyundai truck"},
{"5NT", "Hyundai truck"},
{"KME", "Hyundai truck"},
{"SED", "IBC"},
{"1HV", "IC Bus"},
{"4DR", "IC Bus"},
{"SCK", "Ifor Williams"},
{"V2X", "Ikarbus"},
{"TRA", "Ikarus Bus"},
{"TSB", "Ikarus Bus"},
{"2A3", "Imperial"},
{"MXV", "IMZ-Ural"},
{"X8J", "IMZ-Ural"},
{"ZBD", "InBus"},
{"SH7", "INEOS"},
{"SC6", "INEOS SUV"},
{"JNK", "Infiniti"},
{"JNX", "Infiniti"},
{"JNR", "Infiniti SUV"},
{"3PC", "Infiniti SUV"},
{"5N3", "Infiniti SUV"},
{"ZJN", "Innocenti"},
{"PL8", "Inokom-Hyundai"},
{"SVM", "Inter"},
{"2HS", "International Trucks"},
{"2HT", "International Trucks"},
{"XUZ", "InterPipeVAN"},
{"WJR", "Irmscher"},
{"5L5", "IronHorse"},
{"ACV", "Isuzu"},
{"JAA", "Isuzu"},
{"JAB", "Isuzu"},
{"JAL", "Isuzu"},
{"JAM", "Isuzu"},
{"LZE", "Isuzu"},
{"MP1", "Isuzu"},
{"PAB", "Isuzu"},
{"PLZ", "Isuzu"},
{"RLE", "Isuzu"},
{"4KL", "Isuzu"},
{"4S1", "Isuzu"},
{"4S2", "Isuzu"},
{"54D", "Isuzu & Chevrolet"},
{"4NU", "Isuzu Ascender"},
{"M3G", "Isuzu Motors"},
{"MPA", "Isuzu Motors"},
{"JR2", "Isuzu Oasis"},
{"1GG", "Isuzu pickup"},
{"Z7X", "Isuzu Rus"},
{"JAC", "Isuzu SUV"},
{"ZJT", "Italjet"},
{"VF5", "Iveco"},
{"UA2", "Iveco"},
{"Y6B", "Iveco"},
{"Z9N", "Iveco"},
{"6F2", "Iveco"},
{"8AT", "Iveco"},
{"8XV", "Iveco"},
{"93Z", "Iveco"},
{"VNE", "Iveco Bus"},
{"ZGA", "Iveco Bus"},
{"ZN3", "Iveco Defence"},
{"SBC", "Iveco Ford Truck"},
{"ZCF", "Iveco/Irisbus"},
{"WJM", "Iveco/Iveco"},
{"XTK", "IzhAvto"},
{"LJ1", "JAC"},
{"SAJ", "Jaguar"},
{"99J", "Jaguar Land Rover"},
{"SAD", "Jaguar SUV"},
{"MZD", "Jawa"},
{"TLJ", "Jawa Moto"},
{"6AM", "Jayco"},
{"1UJ", "Jayco, Inc."},
{"SLP", "JC Bamford"},
{"1UT", "Jeep"},
{"988", "Jeep and Fiat"},
{"1JC", "Jeep SUV"},
{"1J4", "Jeep SUV"},
{"1J8", "Jeep SUV"},
{"1JT", "Jeep truck"},
{"1J7", "Jeep truck"},
{"2J4", "Jeep Wrangler"},
{"2BC", "Jeep Wrangler"},
{"ZAC", "Jeep, Dodge"},
{"SUJ", "Jelcz"},
{"HJR", "Jetour"},
{"LEF", "Jiangling Motors"},
{"LET", "Jiangling-Isuzu"},
{"LMF", "Jiangmen"},
{"LLJ", "Jiangsu"},
{"LMH", "Jiangsu"},
{"LZ4", "Jiangsu"},
{"R1J", "Jiayuan Power"},
{"LAE", "Jinan Qingqi"},
{"LV7", "Jinan Qingqi"},
{"LJC", "Jincheng"},
{"LS7", "JMC"},
{"LJX", "JMC Ford"},
{"LJW", "JMC Landwind"},
{"LND", "JMEV"},
{"1PY", "John Deere"},
{"17N", "John Deere"},
{"1M0", "John Deere Gator"},
{"YB6", "Jonckheere"},
{"NS2", "JV MAN"},
{"YT7", "Kabe"},
{"XTC", "KAMAZ"},
{"5KT", "Karavan"},
{"WMM", "Karl Muller"},
{"50G", "Karma Automotive"},
{"TMK", "Karosa"},
{"NLN", "Karsan"},
{"X1E", "KAvZ"},
{"Z7N", "KAvZ"},
{"JKA", "Kawasaki"},
{"JKB", "Kawasaki"},
{"JSK", "Kawasaki"},
{"96P", "Kawasaki"},
{"RK7", "Kawasaki ATV"},
{"JSL", "Kawasaki KFX400 ATV"},
{"ML5", "Kawasaki Motors"},
{"TSY", "Keeway"},
{"SKB", "Kel-Berg"},
{"2XK", "Kenworth"},
{"1NK", "Kenworth"},
{"3WK", "Kenworth"},
{"6F5", "Kenworth"},
{"1XK", "Kenworth k"},
{"MDT", "Kerala"},
{"4YD", "KeyStone"},
{"NVA", "Khazar"},
{"KNE", "Kia"},
{"KNF", "Kia"},
{"MZB", "Kia"},
{"PRX", "Kia"},
{"U5Y", "Kia"},
{"U6Y", "Kia"},
{"9UW", "Kia"},
{"KNA", "Kia"},
{"5XX", "Kia"},
{"KNG", "Kia minibus/bus"},
{"KND", "Kia MPV/SUV"},
{"KNC", "Kia truck"},
{"3KM", "Kia/Hyundai"},
{"3KP", "Kia/Hyundai"},
{"5XY", "Kia/Hyundai SUV"},
{"BF9", "KIBO"},
{"BUK", "Kiira Motors"},
{"MDE", "Kinetic"},
{"LA6", "King Long"},
{"ZFE", "KL Motorcycle"},
{"XPN", "Knapen"},
{"WKN", "Knaus"},
{"YT9", "Koenigsegg"},
{"WK0", "Kogel"},
{"Y7S", "Korida-Tech"},
{"XN1", "Kraker"},
{"Y7A", "KrAZ"},
{"WKE", "Krone"},
{"VA4", "KSR"},
{"VBK", "KTM"},
{"3CG", "KTMMEX"},
{"RKL", "Kuozui Motors"},
{"Z9B", "KuzbassAvto"},
{"LC2", "Kymco"},
{"RFB", "Kymco"},
{"XTJ", "Lada"},
{"Y9Z", "Lada"},
{"XTA", "Lada / AvtoVAZ"},
{"YB4", "LAG"},
{"ZHW", "Lamborghini"},
{"ZPB", "Lamborghini SUV"},
{"ZLA", "Lancia"},
{"SAL", "Land Rover"},
{"LVX", "Landwind"},
{"WLA", "Langendorf"},
{"DF9", "Laraki"},
{"ZLV", "Laverda"},
{"XTW", "LAZ"},
{"Y8A", "LAZ"},
{"Y9H", "LAZ"},
{"SEY", "LDV Group"},
{"LFZ", "Leapmotor"},
{"VV1", "Lecitrailer"},
{"1LV", "Lectra Motors"},
{"Y6Y", "LEV"},
{"JTH", "Lexus"},
{"JT8", "Lexus"},
{"58A", "Lexus"},
{"JTJ", "Lexus SUV"},
{"JT6", "Lexus SUV"},
{"2T2", "Lexus SUV"},
{"SBL", "Leyland"},
{"SBJ", "Leyland Bus"},
{"SBB", "Leyland Vehicles"},
{"HLX", "Li Auto"},
{"TNG", "LIAZ"},
{"XTY", "LiAZ"},
{"Y3F", "Lida Buses Neman"},
{"WLF", "Liebherr"},
{"LLV", "Lifan"},
{"9UK", "Lifan"},
{"LF3", "Lifan Motorcycle"},
{"LFU", "Lifeng Group"},
{"XL4", "Lightyear"},
{"VJR", "Ligier"},
{"2L1", "Lincoln"},
{"2LJ", "Lincoln"},
{"2LN", "Lincoln"},
{"1LJ", "Lincoln"},
{"1LN", "Lincoln"},
{"3LN", "Lincoln"},
{"5L1", "Lincoln"},
{"1L1", "Lincoln limousine"},
{"2LM", "Lincoln SUV"},
{"5LM", "Lincoln SUV"},
{"5LT", "Lincoln truck"},
{"LXN", "Link Tour"},
{"MD7", "LML"},
{"VGY", "Lohr"},
{"T3C", "Lohr Backa Topola"},
{"LLC", "Loncin"},
{"SCR", "London Taxi Company"},
{"7NY", "Lordstown"},
{"SCC", "Lotus"},
{"XTD", "LuAZ"},
{"7UU", "Lucid"},
{"50E", "Lucid Motors"},
{"NG3", "Lucky Motor"},
{"1L0", "Lufkin Trailers"},
{"Z7C", "Luidor"},
{"SGL", "Lunar"},
{"LAT", "Luoyang Northern"},
{"RF5", "Luxgen"},
{"YH2", "Lynx snowmobiles"},
{"8XJ", "Mack"},
{"1M1", "Mack Truck"},
{"1M2", "Mack Truck"},
{"1M3", "Mack Truck"},
{"1M4", "Mack Truck"},
{"2M1", "Mack Trucks"},
{"2M2", "Mack Trucks"},
{"6FM", "Mack Trucks"},
{"9BN", "Mafersa"},
{"VP3", "Magyar"},
{"MAB", "Mahindra"},
{"MAC", "Mahindra"},
{"MA1", "Mahindra"},
{"MCD", "Mahindra"},
{"ZJM", "Malaguti"},
{"NAC", "Mammut truck"},
{"AAM", "MAN"},
{"NMA", "MAN"},
{"PMA", "MAN"},
{"VAN", "MAN"},
{"WMA", "MAN"},
{"6AB", "MAN"},
{"7AB", "MAN"},
{"LZM", "MAN China"},
{"MBK", "MAN Trucks"},
{"R3M", "Mangosteen"},
{"SCM", "Manitowoc Cranes"},
{"1JU", "Marmon Motor Company"},
{"SXX", "Martz"},
{"Z8M", "Marussia"},
{"MA3", "Maruti"},
{"XVG", "MARZ"},
{"ZAM", "Maserati"},
{"ZN6", "Maserati SUV"},
{"57C", "Maurer"},
{"XTM", "MAZ"},
{"Y3M", "MAZ"},
{"JMZ", "Mazda"},
{"JM0", "Mazda"},
{"JM1", "Mazda"},
{"JM2", "Mazda"},
{"JM4", "Mazda"},
{"JM6", "Mazda"},
{"JM7", "Mazda"},
{"PE3", "Mazda"},
{"PP1", "Mazda"},
{"YCM", "Mazda"},
{"1YV", "Mazda"},
{"3MD", "Mazda"},
{"3MZ", "Mazda"},
{"4F4", "Mazda"},
{"8LF", "Mazda"},
{"9FC", "Mazda"},
{"AFB", "Mazda BT-50"},
{"MP2", "Mazda BT-50"},
{"JM3", "Mazda MPV/SUV"},
{"3MV", "Mazda SUV"},
{"4F2", "Mazda SUV"},
{"7MM", "Mazda SUV"},
{"VG5", "MBK"},
{"SBM", "McLaren"},
{"SLG", "McMurtry"},
{"SUG", "Mega Trailers"},
{"SXM", "MELEX"},
{"ZCM", "Menarinibus"},
{"ZHZ", "Menci"},
{"8AB", "Mercedes Benz"},
{"8AC", "Mercedes Benz"},
{"WMX", "Mercedes-AMG"},
{"ADB", "Mercedes-Benz"},
{"BR1", "Mercedes-Benz"},
{"MBR", "Mercedes-Benz"},
{"NLE", "Mercedes-Benz"},
{"NMB", "Mercedes-Benz"},
{"RLM", "Mercedes-Benz"},
{"VSA", "Mercedes-Benz"},
{"WDA", "Mercedes-Benz"},
{"WDD", "Mercedes-Benz"},
{"WDF", "Mercedes-Benz"},
{"WDZ", "Mercedes-Benz"},
{"WD3", "Mercedes-Benz"},
{"WD4", "Mercedes-Benz"},
{"W1K", "Mercedes-Benz"},
{"W1W", "Mercedes-Benz"},
{"W1X", "Mercedes-Benz"},
{"W1Y", "Mercedes-Benz"},
{"W1Z", "Mercedes-Benz"},
{"Z9M", "Mercedes-Benz"},
{"1MB", "Mercedes-Benz"},
{"55S", "Mercedes-Benz"},
{"8BN", "Mercedes-Benz"},
{"8BR", "Mercedes-Benz"},
{"8BT", "Mercedes-Benz"},
{"9BM", "Mercedes-Benz"},
{"WDB", "Mercedes-Benz & Maybach"},
{"WDC", "Mercedes-Benz SUV"},
{"W1N", "Mercedes-Benz SUV"},
{"4JG", "Mercedes-Benz SUV"},
{"W1T", "Mercedes-Benz truck"},
{"8BU", "Mercedes-Benz truck"},
{"W1V", "Mercedes-Benz van"},
{"2ME", "Mercury"},
{"1ME", "Mercury"},
{"1ZW", "Mercury"},
{"3MA", "Mercury"},
{"3ME", "Mercury"},
{"6MP", "Mercury"},
{"2MR", "Mercury MPV"},
{"4M2", "Mercury MPV/SUV"},
{"KF3", "Merkavim"},
{"ZGP", "Merker"},
{"WF1", "Merkur"},
{"TKY", "Metaco"},
{"MML", "MG"},
{"MZ7", "MG Motor"},
{"VJ2", "Mia Electric"},
{"VH8", "Microcar"},
{"WMW", "MINI"},
{"TW7", "Mini Moke"},
{"TX5", "Mini Moke"},
{"WMZ", "MINI SUV"},
{"ABJ", "Mitsubishi"},
{"JA3", "Mitsubishi"},
{"JA7", "Mitsubishi"},
{"ML3", "Mitsubishi"},
{"MMA", "Mitsubishi"},
{"MMB", "Mitsubishi"},
{"MMC", "Mitsubishi"},
{"MMD", "Mitsubishi"},
{"MME", "Mitsubishi"},
{"MMT", "Mitsubishi"},
{"4A3", "Mitsubishi"},
{"4A4", "Mitsubishi"},
{"4MB", "Mitsubishi"},
{"4P3", "Mitsubishi"},
{"6MM", "Mitsubishi"},
{"7A1", "Mitsubishi"},
{"ABJ", "Mitsubishi Fuso"},
{"JW6", "Mitsubishi Fuso"},
{"TYA", "Mitsubishi Fuso"},
{"TYB", "Mitsubishi Fuso"},
{"JLB", "Mitsubishi Fuso"},
{"JLF", "Mitsubishi Fuso"},
{"JL5", "Mitsubishi Fuso"},
{"JL6", "Mitsubishi Fuso"},
{"JL7", "Mitsubishi Fuso"},
{"JE4", "Mitsubishi Motors"},
{"JMA", "Mitsubishi Motors"},
{"JMB", "Mitsubishi Motors"},
{"JMF", "Mitsubishi Motors"},
{"JMP", "Mitsubishi Motors"},
{"JMR", "Mitsubishi Motors"},
{"JMY", "Mitsubishi Motors"},
{"JA4", "Mitsubishi MPV/SUV"},
{"KPH", "Mitsubishi Precis"},
{"1Z3", "Mitsubishi Raider"},
{"PMN", "Modenas"},
{"SD8", "Moke"},
{"1NN", "Monon"},
{"VTD", "Montesa Honda"},
{"VTM", "Montesa Honda"},
{"SMR", "Montracon"},
{"SAM", "Morris"},
{"XTB", "Moskvitch / AZLK"},
{"ZGU", "Moto Guzzi"},
{"9C2", "Moto Honda"},
{"ZLM", "Moto Morini"},
{"UMT", "MTDK"},
{"Y3D", "MTM"},
{"NRX", "Musoshi"},
{"SDP", "NAC MG"},
{"LNP", "NAC MG UK Limited"},
{"Z8Y", "Nasteviya"},
{"93S", "Navistar"},
{"93V", "Navistar"},
{"7NA", "Navistar Defense"},
{"TAW", "NAW"},
{"PNA", "Naza/Kia/Peugeot"},
{"X1F", "NefAZ"},
{"Y3K", "Neman Bus"},
{"VXY", "Neobus"},
{"WAG", "Neoplan"},
{"SXE", "Neptun"},
{"SY1", "Neso Bus"},
{"LUZ", "Neta"},
{"MRT", "Neta"},
{"LTP", "NEVS"},
{"LV3", "NEVS"},
{"2FY", "New Flyer"},
{"5FY", "New Flyer"},
{"SLN", "Niftylift"},
{"LJ1", "Nio, Inc."},
{"ADN", "Nissan"},
{"JNC", "Nissan"},
{"JNE", "Nissan"},
{"JN1", "Nissan"},
{"JN3", "Nissan"},
{"JPC", "Nissan"},
{"MDH", "Nissan"},
{"MNT", "Nissan"},
{"PN8", "Nissan"},
{"SJK", "Nissan"},
{"SJN", "Nissan"},
{"VNV", "Nissan"},
{"VWA", "Nissan"},
{"Z8N", "Nissan"},
{"3N1", "Nissan"},
{"3N6", "Nissan"},
{"3N8", "Nissan"},
{"4N2", "Nissan"},
{"5BZ", "Nissan"},
{"6F4", "Nissan"},
{"7A7", "Nissan"},
{"7B2", "Nissan"},
{"8AN", "Nissan"},
{"94D", "Nissan"},
{"JN8", "Nissan & Infiniti"},
{"5N1", "Nissan & Infiniti SUV"},
{"JN6", "Nissan & Mitsubishi"},
{"1N4", "Nissan"},
{"VSK", "Nissan Motor"},
{"1N6", "Nissan truck"},
{"HA6", "Niu Technologies"},
{"XUS", "Nizhegorodets"},
{"EBZ", "Nizhekotrans bus"},
{"XMR", "Nooteboom"},
{"SAY", "Norton Motorcycles"},
{"VPL", "Nosmoke"},
{"2NV", "Nova Bus"},
{"4RK", "Nova Bus"},
{"YF3", "NTM"},
{"SBF", "Nugent"},
{"NPM", "Nursan"},
{"W0D", "Obermaier"},
{"NC0", "Oghab Afshan"},
{"2G3", "Oldsmobile"},
{"1G3", "Oldsmobile"},
{"1GH", "Oldsmobile"},
{"UU2", "Oltcit"},
{"ZA4", "Omar"},
{"2DG", "Ontario"},
{"VSX", "Opel"},
{"1G0", "Opel"},
{"4GD", "Opel Sintra"},
{"VXK", "Opel/Vauxhall"},
{"W0V", "Opel/Vauxhall"},
{"VXE", "Opel/Vauxhall van"},
{"SAB", "Optare"},
{"1Z9", "Orange County Choppers"},
{"57R", "Oreion"},
{"92H", "Origem"},
{"2B1", "Orion Bus"},
{"1VH", "Orion Bus Industries"},
{"10T", "Oshkos"},
{"NLR", "Otokar"},
{"SA9", "OX Global"},
{"NM1", "Oyak Renault"},
{"XLD", "Pacton"},
{"XNT", "Pacton"},
{"TKP", "Panav"},
{"NAP", "Pars Khodro"},
{"Y9A", "PAVAM"},
{"X1M", "PAZ"},
{"Z8T", "PCMA"},
{"VS1", "Pegaso"},
{"PM2", "Perodua"},
{"1NP", "Peterbilt"},
{"1XP", "Peterbilt"},
{"9DW", "Peterbilt"},
{"2XP", "Peterbilt truck"},
{"3WP", "Peterbilt truck"},
{"PNA", "Peugeot"},
{"VF3", "Peugeot"},
{"VR3", "Peugeot"},
{"VS8", "Peugeot"},
{"8AD", "Peugeot"},
{"8AE", "Peugeot"},
{"8GD", "Peugeot"},
{"936", "Peugeot"},
{"9V8", "Peugeot Expert"},
{"VGA", "Peugeot Motocycles"},
{"Y6W", "PGFM"},
{"RFV", "PGO"},
{"ZBA", "Piacenza"},
{"RP8", "Piaggio"},
{"MBX", "Piaggio Ape"},
{"MET", "Piaggio Vespa"},
{"ZAP", "Piaggio/Vespa/Gilera"},
{"4P1", "Pierce"},
{"NRY", "Pilotcar"},
{"ZFR", "Pininfarina"},
{"XJ4", "PKTS"},
{"JP3", "Plymouth"},
{"2P3", "Plymouth"},
{"2P5", "Plymouth"},
{"1P3", "Plymouth"},
{"1P4", "Plymouth"},
{"3P3", "Plymouth"},
{"4P3", "Plymouth"},
{"2P4", "Plymouth MPV"},
{"JP4", "Plymouth MPV/SUV"},
{"1P7", "Plymouth Scamp"},
{"JP7", "Plymouth truck"},
{"4XA", "Polaris"},
{"57X", "Polaris"},
{"3NS", "Polaris ATV"},
{"3NE", "Polaris UTV"},
{"LPS", "Polestar"},
{"YSM", "Polestar"},
{"YSR", "Polestar SUV"},
{"7SY", "Polestar SUV"},
{"JG2", "Pontiac"},
{"2CK", "Pontiac"},
{"2G2", "Pontiac"},
{"2G7", "Pontiac"},
{"1G2", "Pontiac"},
{"1G7", "Pontiac"},
{"1GM", "Pontiac"},
{"2C7", "Pontiac"},
{"3G2", "Pontiac"},
{"5Y2", "Pontiac"},
{"6G2", "Pontiac"},
{"4G2", "Pontiac Sunfire"},
{"3G7", "Pontiac SUV"},
{"JG7", "Pontiac/Asuna"},
{"J87", "Pontiac/Asuna"},
{"WP0", "Porsche"},
{"WP1", "Porsche SUV"},
{"Y9W", "Pragmatec"},
{"MBV", "Premier"},
{"2PC", "Prevost"},
{"RKJ", "Prince Motors"},
{"6U9", "Privately Imported"},
{"7JZ", "Proterra"},
{"PL1", "Proton"},
{"MHK", "PT Astra"},
{"MH1", "PT Astra Honda"},
{"MF3", "PT Hyundai"},
{"MHD", "PT Indomobil"},
{"MH4", "PT Kawasak"},
{"MHL", "PT Mercedes-Benz"},
{"MK2", "PT Mitsubishi"},
{"MK3", "PT SGMW"},
{"MHY", "PT Suzuki Indomobil"},
{"MH8", "PT Suzuki Indomobil"},
{"MHF", "PT Toyota"},
{"MH3", "PT Yamaha"},
{"9DF", "Puma"},
{"LUG", "Qiantu Motor"},
{"LWL", "Qingling Isuzu"},
{"LLN", "Qoros"},
{"TDM", "QUANTYA"},
{"ZF4", "Qvale"},
{"TRR", "Raba Bus"},
{"LA7", "Radar Auto (Geely)"},
{"X1D", "RAF"},
{"SJ1", "Ree Automotive"},
{"7VV", "Ree Automotive"},
{"ZP8", "Regis Motors"},
{"SCD", "Reliant Motors"},
{"MEE", "Renault"},
{"VF1", "Renault"},
{"VN1", "Renault"},
{"VYS", "Renault"},
{"VSY", "Renault"},
{"VS5", "Renault"},
{"X7L", "Renault"},
{"1XM", "Renault"},
{"8A1", "Renault"},
{"8G1", "Renault"},
{"93Y", "Renault"},
{"9FB", "Renault"},
{"VFA", "Renault Alpine GTA"},
{"ADR", "Renault Sandero"},
{"VMK", "Renault Sport Spider"},
{"SDG", "Renault Trucks"},
{"VF2", "Renault Trucks"},
{"VF6", "Renault Trucks"},
{"VG6", "Renault Trucks"},
{"VG7", "Renault Trucks"},
{"VG8", "Renault Trucks"},
{"KNM", "Renault&Nissan"},
{"WRA", "Renders"},
{"YA5", "Renders"},
{"V61", "Respo"},
{"MB7", "Reva Electric"},
{"VTP", "Rieju"},
{"V39", "Rimac Automobili"},
{"7PD", "Rivian SUV"},
{"7FC", "Rivian truck"},
{"1RF", "Roadmaster"},
{"Z7T", "RoAZ"},
{"UWR", "Robus"},
{"UU5", "Rocar"},
{"1YJ", "Rokon"},
{"ZAH", "Rolfo"},
{"SCA", "Rolls Royce"},
{"SLA", "Rolls Royce SUV"},
{"UU4", "Roman SA"},
{"54F", "Rosenbauer"},
{"SAR", "Rover & MG Rover"},
{"MBF", "Royal Enfield"},
{"ME3", "Royal Enfield"},
{"94N", "RWM"},
{"YS3", "Saab"},
{"YTN", "Saab"},
{"JF4", "Saab 9-2X"},
{"3G0", "Saab 9-4X"},
{"5S3", "Saab 9-7X"},
{"YK1", "Saab-Valmet"},
{"LRB", "SAIC"},
{"LRE", "SAIC"},
{"LSG", "SAIC"},
{"LSH", "SAIC"},
{"LSJ", "SAIC"},
{"LZW", "SAIC"},
{"LZF", "SAIC Iveco"},
{"LSF", "SAIC Maxus"},
{"LSK", "SAIC Maxus"},
{"LSV", "SAIC Volkswagen"},
{"NAS", "SAIPA"},
{"X9N", "Samoltor"},
{"LL0", "Sanmen"},
{"U1A", "Sanos"},
{"VSE", "Santana Motors"},
{"VSF", "Santana Motors"},
{"LFX", "Sany Heavy Industry"},
{"W08", "Saturn Astra"},
{"1G8", "Saturn car"},
{"5GZ", "Saturn MPV/SUV"},
{"3GS", "Saturn SUV"},
{"MXB", "SAvtoProm"},
{"NSA", "SAZ"},
{"SBS", "Scammell"},
{"SZA", "Scania"},
{"VLU", "Scania"},
{"XLE", "Scania"},
{"X8U", "Scania"},
{"YS2", "Scania"},
{"YS4", "Scania"},
{"3AX", "Scania"},
{"3BE", "Scania"},
{"8A3", "Scania"},
{"9BS", "Scania"},
{"UHE", "Scanvogn"},
{"VAV", "Schwarzmuller"},
{"SDC", "SDC"},
{"VSS", "SEAT/Cupra"},
{"VK1", "SEG"},
{"Z76", "SEMAZ"},
{"LM8", "Seres"},
{"WKK", "Setra"},
{"NPM", "Seyit Usta"},
{"LZG", "Shacman"},
{"LZ0", "Shandong"},
{"LJU", "Shanghai Maple"},
{"5CX", "Shelby Series 1"},
{"99H", "Shineray"},
{"LHA", "Shuanghuan"},
{"MD9", "Shuttle"},
{"MLB", "Siam Yamaha"},
{"XZB", "SIMAZ"},
{"LJV", "Sinotruk"},
{"LZK", "Sinotruk"},
{"LZZ", "Sinotruk"},
{"PRA", "Sinotruk"},
{"2BP", "Ski-Doo"},
{"MEX", "Skoda"},
{"NAD", "Skoda"},
{"TMB", "Skoda"},
{"TMP", "Skoda"},
{"Y6U", "Skoda"},
{"LME", "Skyworth"},
{"HES", "Smart"},
{"WME", "Smart"},
{"W1A", "smart"},
{"SUU", "Solaris Bus"},
{"5BP", "Solectria"},
{"YH1", "Solifer"},
{"YS7", "Solifer"},
{"EBE", "Sollers-Auto"},
{"RUN", "Sollets-Auto"},
{"X4T", "Sommer"},
{"WS7", "Sono Motors"},
{"VVC", "SOR Ibérica"},
{"LDN", "Soueast"},
{"LTN", "Soueast"},
{"93X", "Souza Ramos"},
{"4VZ", "Spartan Motors"},
{"KPB", "SsangYong"},
{"KPT", "SsangYong"},
{"KPA", "SsangYong/KG"},
{"XVU", "Start"},
{"YE6", "STAS"},
{"XG5", "Stavropoulos"},
{"2FW", "Sterling"},
{"480", "Sterling"},
{"3F6", "Sterling Bullet"},
{"JLS", "Sterling Truck 360"},
{"2FZ", "Sterling Trucks"},
{"RA1", "Steyr"},
{"VAG", "Steyr-Daimler-Puch"},
{"WS5", "StreetScooter"},
{"PLP", "Subaru"},
{"4S3", "Subaru"},
{"JF1", "Subaru"},
{"JF2", "Subaru SUV"},
{"4S4", "Subaru SUV/MPV"},
{"JF3", "Subaru truck"},
{"MMR", "Subaru/Tan"},
{"LAL", "Sundiro Honda"},
{"LJM", "Sunlong bus"},
{"MS0", "Super Seven Star"},
{"JSA", "Suzuki"},
{"JS1", "Suzuki"},
{"JS2", "Suzuki"},
{"LMC", "Suzuki"},
{"MBH", "Suzuki"},
{"MB8", "Suzuki"},
{"MMS", "Suzuki"},
{"PMS", "Suzuki"},
{"PPP", "Suzuki"},
{"TSM", "Suzuki"},
{"VTT", "Suzuki"},
{"2S2", "Suzuki"},
{"5SA", "Suzuki"},
{"8AK", "Suzuki"},
{"9CD", "Suzuki"},
{"JST", "Suzuki Across SUV"},
{"5Z6", "Suzuki Equator"},
{"JKS", "Suzuki Marauder"},
{"MS3", "Suzuki Myanmar"},
{"JK8", "Suzuki QUV620F"},
{"JS3", "Suzuki SUV"},
{"2S3", "Suzuki SUV"},
{"JS4", "Suzuki truck"},
{"MBU", "Swaraj Vehicles"},
{"SGD", "Swift"},
{"LM6", "SWM"},
{"ZN0", "SWM"},
{"RFG", "SYM"},
{"SWV", "TA-N"},
{"WTA", "Tabbert"},
{"RFC", "Taiwan Golden Bee"},
{"LFG", "Taizhou"},
{"SDB", "Talbot"},
{"VF4", "Talbot"},
{"VSC", "Talbot"},
{"ZX1", "TAM"},
{"ADX", "Tata Automobile"},
{"KLT", "Tata Daewoo"},
{"KLU", "Tata Daewoo"},
{"MAT", "Tata Motors, Rover"},
{"TMT", "Tatra"},
{"TNT", "Tatra"},
{"TNU", "Tatra"},
{"VV9", "TAURO"},
{"TNE", "TAZ"},
{"V31", "TAZ"},
{"ZLF", "Tazzari"},
{"SWH", "Temared"},
{"NLT", "Temsa"},
{"5DG", "Terex Advance Mixer"},
{"XP7", "Tesla Europe"},
{"SFZ", "Tesla Roadster"},
{"LRW", "Tesla, Inc."},
{"5YJ", "Tesla, Inc."},
{"7G2", "Tesla, Inc."},
{"7SA", "Tesla, Inc."},
{"NLZ", "Tezeller"},
{"MLH", "Thai Honda"},
{"MLC", "Thai Suzuki"},
{"MLE", "Thai Yamaha"},
{"YYC", "Think Nordic"},
{"1T7", "Thomas Built Buses"},
{"1T8", "Thomas Built Buses"},
{"LEC", "Tianjin Qingyuan"},
{"LB7", "Tibet New Summit"},
{"1TD", "Timpte"},
{"VVG", "Tisvol"},
{"NM4", "Tofas"},
{"NL1", "TOGG"},
{"X0T", "Tonar"},
{"AHT", "Toyota"},
{"JTD", "Toyota"},
{"JTK", "Toyota"},
{"JTN", "Toyota"},
{"JT2", "Toyota"},
{"JT4", "Toyota"},
{"JT5", "Toyota"},
{"MBJ", "Toyota"},
{"MR0", "Toyota"},
{"MR1", "Toyota"},
{"MR2", "Toyota"},
{"MR3", "Toyota"},
{"NMT", "Toyota"},
{"RL4", "Toyota"},
{"SB1", "Toyota"},
{"TW1", "Toyota"},
{"XW7", "Toyota"},
{"YAR", "Toyota"},
{"2T1", "Toyota"},
{"1NX", "Toyota"},
{"3MY", "Toyota"},
{"4T1", "Toyota"},
{"4T4", "Toyota"},
{"5YF", "Toyota"},
{"6T1", "Toyota"},
{"7A4", "Toyota"},
{"8AJ", "Toyota"},
{"9BR", "Toyota"},
{"93R", "Toyota"},
{"5TD", "Toyota & Lexus"},
{"JTB", "Toyota bus"},
{"JT7", "Toyota bus/van"},
{"4G3", "Toyota Cavalie"},
{"VNK", "Toyota Motor"},
{"JTG", "Toyota MPV/bus"},
{"JTE", "Toyota MPV/SUV"},
{"JT3", "Toyota MPV/SUV"},
{"4T3", "Toyota MPV/SUV"},
{"WZ1", "Toyota Supra"},
{"JTL", "Toyota SUV"},
{"JTM", "Toyota SUV"},
{"JTP", "Toyota SUV"},
{"2T3", "Toyota SUV"},
{"7MU", "Toyota SUV"},
{"7SV", "Toyota SUV"},
{"3TM", "Toyota truck"},
{"3TY", "Toyota truck"},
{"4TA", "Toyota truck"},
{"5TB", "Toyota truck"},
{"5TE", "Toyota truck"},
{"5TF", "Toyota truck"},
{"JT1", "Toyota van"},
{"JTF", "Toyota van/truck"},
{"SNT", "Trabant"},
{"1TK", "Trail King"},
{"VFN", "Trailor"},
{"ECW", "Trans-Alfa bus"},
{"1TD", "Transcraft Corporation"},
{"ZAJ", "Trigano"},
{"2LD", "Triple E"},
{"SCG", "Triumph"},
{"SMT", "Triumph"},
{"97N", "Triumph"},
{"SAT", "Triumph"},
{"XTU", "Trolza"},
{"VGU", "Trouillet"},
{"SU9", "truck trailer"},
{"YE7", "Turbos Hoet"},
{"SDL", "TVR"},
{"MD6", "TVS"},
{"TEM", "Twike"},
{"YYB", "Tysse"},
{"X6S", "TZA"},
{"4KE", "U.S. Electricar Consulier"},
{"XTT", "UAZ"},
{"ADD", "UD Trucks"},
{"XX3", "Ujet"},
{"M6F", "UM Lohia"},
{"TW4", "UMM"},
{"UVW", "UMM"},
{"PN1", "UMW"},
{"PN2", "UMW"},
{"SBU", "United Trailers"},
{"XTP", "Ural"},
{"X1P", "Ural"},
{"UZT", "UTB"},
{"SDU", "Utility"},
{"1UY", "Utility"},
{"XWB", "UZ-Daewoo/GM"},
{"YE1", "Van Hool"},
{"YE2", "Van Hool"},
{"7KG", "Vanderhall"},
{"SKA", "Vauxhall"},
{"SZC", "Vectrix"},
{"VK8", "Venturi"},
{"TJ5", "Vezeko"},
{"5VP", "Victory"},
{"TSC", "VIN assigned"},
{"7AT", "VIN assigned"},
{"7A8", "VIN assigned"},
{"AAP", "VIN restamped"},
{"RLA", "Vina Star"},
{"RLL", "VinFast"},
{"RLN", "VinFast"},
{"X6D", "VIS-AVTO"},
{"WVP", "Viseon Bus"},
{"16X", "Vixen 21"},
{"93P", "Volare"},
{"XKM", "Volgabus"},
{"X4K", "Volgabus"},
{"Z07", "Volgabus"},
{"AAV", "Volkswagen"},
{"PPV", "Volkswagen"},
{"VWV", "Volkswagen"},
{"WVW", "Volkswagen"},
{"WV1", "Volkswagen"},
{"WV2", "Volkswagen"},
{"WV3", "Volkswagen"},
{"WV4", "Volkswagen"},
{"XW8", "Volkswagen"},
{"YBW", "Volkswagen"},
{"1VW", "Volkswagen"},
{"3VV", "Volkswagen"},
{"3VW", "Volkswagen"},
{"8AW", "Volkswagen"},
{"9BW", "Volkswagen"},
{"2V4", "Volkswagen Routan"},
{"WVG", "Volkswagen SUV"},
{"1V2", "Volkswagen SUV"},
{"1V1", "Volkswagen truck"},
{"YSP", "Volta Trucks"},
{"LVY", "Volvo"},
{"PNV", "Volvo"},
{"XLB", "Volvo"},
{"X9P", "Volvo"},
{"YV1", "Volvo"},
{"YV3", "Volvo"},
{"YV5", "Volvo"},
{"3CE", "Volvo"},
{"4V5", "Volvo"},
{"4VA", "Volvo"},
{"4VE", "Volvo"},
{"4VG", "Volvo"},
{"4VH", "Volvo"},
{"4VM", "Volvo"},
{"7JD", "Volvo"},
{"7JR", "Volvo"},
{"9BV", "Volvo"},
{"SLV", "Volvo bus"},
{"LYV", "Volvo"},
{"YV4", "Volvo SUV"},
{"SCV", "Volvo truck"},
{"YB1", "Volvo truck"},
{"4V3", "Volvo truck"},
{"4V6", "Volvo truck"},
{"93K", "Volvo truck"},
{"YV2", "Volvo truck"},
{"VN4", "Voxan"},
{"2E4", "Voyager"},
{"LDP", "Voyah"},
{"523", "VPG"},
{"WVM", "VW-MAN"},
{"953", "VW/MAN"},
{"1JJ", "Wabash"},
{"WWA", "Wachenhut"},
{"LM0", "Wangye"},
{"SNE", "Wartburg"},
{"SXY", "Wecon"},
{"SWR", "Weekend"},
{"LYB", "Weichai"},
{"SBW", "Weightlifter"},
{"2WK", "Western Star"},
{"3BJ", "Western Star"},
{"5KJ", "Western Star"},
{"5KK", "Western Star"},
{"1WU", "White Motor"},
{"4V1", "WhiteGMC"},
{"SUD", "Wielton"},
{"WCM", "Wilcox"},
{"4WW", "Wilson"},
{"YVV", "WiMa"},
{"1WT", "Winnebago"},
{"SUC", "Wiola"},
{"WWC", "WM Meyer"},
{"LH0", "WM Motor"},
{"LL2", "WM Motor"},
{"SC5", "Wrightbus"},
{"HGX", "Wuling"},
{"LK6", "Wuling"},
{"HA0", "Wuxi Sundiro"},
{"LL3", "Xiamen"},
{"LMV", "XPeng Motors"},
{"L1N", "XPeng Motors"},
{"JYA", "Yamaha"},
{"JYE", "Yamaha"},
{"LPR", "Yamaha"},
{"RLC", "Yamaha"},
{"VTL", "Yamaha"},
{"ZD0", "Yamaha"},
{"5Y4", "Yamaha"},
{"9C6", "Yamaha"},
{"JY3", "Yamaha ATV"},
{"JY4", "Yamaha ATV"},
{"RKR", "Yamaha Motor"},
{"LBZ", "Yantai"},
{"LJS", "Yaxing Coach"},
{"NNY", "Yeksan"},
{"LKG", "Youngman Lotus"},
{"LLX", "Yudo Auto"},
{"LJD", "Yueda Kia"},
{"LNY", "Yuejin"},
{"LKT", "Yunnan Lifan"},
{"MXL", "Yutong"},
{"LZY", "Yutong Zhengzhou"},
{"R10", "ZAP"},
{"VX1", "Zastava/Yugo"},
{"XTE", "ZAZ"},
{"Y6D", "ZAZ"},
{"LZL", "Zengcheng"},
{"2FH", "Zenn"},
{"538", "Zero"},
{"LFF", "Zhejiang"},
{"LK8", "Zhejiang"},
{"LLP", "Zhejiang"},
{"LUJ", "Zhejiang"},
{"LBB", "Zhejiang Qianjiang"},
{"LEH", "Zhejiang Riya"},
{"LJN", "Zhengzhou Nissan"},
{"LDY", "Zhongtong Bus"},
{"LAP", "Zhuzhou Nanfang"},
{"XTZ", "ZiL"},
{"LZS", "Zongshen"},
{"LBM", "Zongshen Piaggio"},
{"7Z0", "Zoox"},
{"ZAX", "Zorzi"},
{"LJ8", "Zotye Auto"},
{"SWZ", "Zremb"},
{"LTA", "ZX Auto"},
{"", "Unknown"}
};
const char* get_vehicle_manufacturer(const char* vin) {
for (int i = 0; manufacturers[i].code[0] != '\0'; i++) {
if (strncmp(vin, manufacturers[i].code, 3) == 0) {
return manufacturers[i].name;
}
}
return "Unknown";
}
int32_t vin_decoder_app(void* p) {
UNUSED(p);
VinDecoderApp* app = vin_decoder_app_alloc();
Gui* gui = furi_record_open(RECORD_GUI);
view_dispatcher_attach_to_gui(app->view_dispatcher, gui, ViewDispatcherTypeFullscreen);
scene_manager_next_scene(app->scene_manager, VinDecoderMainMenuScene);
view_dispatcher_run(app->view_dispatcher);
vin_decoder_app_free(app);
return 0;
}