From 5cdf9769debc3929191b72133622f5031d342854 Mon Sep 17 00:00:00 2001 From: Ottatop Date: Tue, 17 Dec 2024 19:52:28 -0600 Subject: [PATCH] Use drm-extras for monitor info And also remove matching outputs by serial. TODO: add matching by the new serial string --- .github/workflows/ci.pinnacle.yml | 4 +- Cargo.lock | 9 +- Cargo.toml | 4 +- api/lua/pinnacle/grpc/defs.lua | 1 + api/lua/pinnacle/output.lua | 35 +- .../pinnacle/output/v0alpha1/output.proto | 1 + api/rust/src/output.rs | 22 +- justfile | 2 +- src/api.rs | 9 +- src/backend/udev.rs | 22 +- src/backend/udev/drm.rs | 1 - src/backend/udev/drm/edid_manus.rs | 2564 ----------------- src/backend/udev/drm/util.rs | 127 +- src/output.rs | 5 +- src/protocol/output_management.rs | 5 +- tests/common/mod.rs | 12 +- 16 files changed, 61 insertions(+), 2762 deletions(-) delete mode 100644 src/backend/udev/drm/edid_manus.rs diff --git a/.github/workflows/ci.pinnacle.yml b/.github/workflows/ci.pinnacle.yml index a7f86c8..fe002ac 100644 --- a/.github/workflows/ci.pinnacle.yml +++ b/.github/workflows/ci.pinnacle.yml @@ -59,10 +59,10 @@ jobs: uses: extractions/setup-just@v1 - name: Test if: ${{ runner.debug != '1' }} - run: just install test --no-default-features -- --test-threads=1 + run: just install test - name: Test (debug) if: ${{ runner.debug == '1' }} - run: RUST_LOG=debug RUST_BACKTRACE=1 just install test --no-default-features -- --nocapture --test-threads=1 + run: RUST_LOG=debug RUST_BACKTRACE=1 just install test -- --nocapture check-format: runs-on: ubuntu-24.04 name: Check formatting diff --git a/Cargo.lock b/Cargo.lock index dd28bf0..aa98ea6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2302,7 +2302,7 @@ dependencies = [ "bitflags 2.6.0", "libc", "libdisplay-info-derive", - "libdisplay-info-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libdisplay-info-sys", "thiserror 1.0.69", ] @@ -2323,11 +2323,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea8cec1fa7872b621f40c756bc1304b1a975461282e250b0e76737b037c0c236" -[[package]] -name = "libdisplay-info-sys" -version = "0.1.0" -source = "git+https://github.com/Smithay/libdisplay-info-rs?rev=a482d0d#a482d0d4b71762c13d40fa394efe04473916f31c" - [[package]] name = "libloading" version = "0.7.4" @@ -3197,7 +3192,7 @@ dependencies = [ "drm-sys 0.8.0", "gag", "indexmap 2.7.0", - "libdisplay-info-sys 0.1.0 (git+https://github.com/Smithay/libdisplay-info-rs?rev=a482d0d)", + "libdisplay-info", "pinnacle", "pinnacle-api", "pinnacle-api-defs", diff --git a/Cargo.toml b/Cargo.toml index e7813df..54cb9b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -135,8 +135,8 @@ chrono = "0.4.39" bytemuck = "1.20.0" pinnacle-api = { path = "./api/rust", default-features = false } gag = "1.0.0" -drm-sys = "0.8.0" # TODO: remove and use libdisplay-info -libdisplay-info-sys = { git = "https://github.com/Smithay/libdisplay-info-rs", rev = "a482d0d" } +drm-sys = "0.8.0" +libdisplay-info = "0.1.0" indexmap = { workspace = true } snowcap = { path = "./snowcap", optional = true } snowcap-api = { path = "./snowcap/api/rust", optional = true } diff --git a/api/lua/pinnacle/grpc/defs.lua b/api/lua/pinnacle/grpc/defs.lua index 0ee63dc..18c4622 100644 --- a/api/lua/pinnacle/grpc/defs.lua +++ b/api/lua/pinnacle/grpc/defs.lua @@ -401,6 +401,7 @@ local pinnacle_signal_v0alpha1_StreamControl = { ---@field keyboard_focus_stack_window_ids integer[]? ---@field enabled boolean? ---@field powered boolean? +---@field serial_str string? ---@class pinnacle.render.v0alpha1.SetUpscaleFilterRequest ---@field filter pinnacle.render.v0alpha1.Filter? diff --git a/api/lua/pinnacle/output.lua b/api/lua/pinnacle/output.lua index ad93290..5d00bc1 100644 --- a/api/lua/pinnacle/output.lua +++ b/api/lua/pinnacle/output.lua @@ -162,12 +162,7 @@ end --- ---@return boolean local function output_id_matches(id_str, op) - if id_str:match("^serial:") then - local serial = tonumber(id_str:sub(8)) - return serial and serial == op:serial() or false - else - return id_str == op.name - end + return id_str == op.name end ---@class OutputSetup @@ -195,11 +190,6 @@ end --- ---Otherwise, keys will attempt to match the exact name of an output. --- ----Use `"serial:"` to match outputs by their EDID serial. For example, `"serial:143256"`. ----Note that not all displays have EDID serials. Also, serials are not guaranteed to be unique. ----If you're unlucky enough to have two displays with the same serial, you'll have to use their names ----or filter with wildcards instead. ---- ---##### Setups --- ---If an output is matched, the corresponding `OutputSetup` entry will be applied to it. @@ -233,8 +223,6 @@ end --- ["eDP-1"] = { --- tags = { "6", "7" }, --- }, ---- -- Match an output by its EDID serial number ---- ["serial:235987"] = { ... } ---}) ---``` --- @@ -362,9 +350,6 @@ end --- ---Keys for `locs` should be output identifiers. These are strings of ---the name of the output, for example "eDP-1" or "HDMI-A-1". ----Additionally, if you want to match the EDID serial of an output, ----prepend the serial with "serial:", for example "serial:174652". ----You can find this by doing `get-edid | edid-decode`. --- ---#### Fallback relative-tos --- @@ -400,16 +385,6 @@ end --- --- -- Only relayout on output connect and resize ---Output.setup_locs({ "connect", "resize" }, { ... }) ---- ---- -- Use EDID serials for identification. ---- -- You can run ---- -- require("pinnacle").run(function(Pinnacle) ---- -- print(Pinnacle.output.get_focused():serial()) ---- -- end) ---- -- in a Lua repl to find the EDID serial of the focused output. ----Output.setup_locs("all" { ---- ["serial:139487"] = { ... }, ----}) ---``` --- ---@param update_locs_on (UpdateLocsOn)[] | "all" @@ -999,7 +974,7 @@ end ---@field tags TagHandle[] ---@field scale number? ---@field transform Transform? ----@field serial integer? +---@field serial string? ---@field keyboard_focus_stack WindowHandle[] ---@field enabled boolean? ---@field powered boolean? @@ -1043,7 +1018,7 @@ function OutputHandle:props() tags = tag_handles, scale = response.scale, transform = transform_name_to_code[response.transform] --[[@as Transform?]], - serial = response.serial, + serial = response.serial_str, keyboard_focus_stack = keyboard_focus_stack_handles, enabled = response.enabled, powered = response.powered, @@ -1197,11 +1172,11 @@ function OutputHandle:transform() return self:props().transform end ----Get this output's EDID serial number. +---Get this output's EDID serial. --- ---Shorthand for `handle:props().serial`. --- ----@return integer? +---@return string? function OutputHandle:serial() return self:props().serial end diff --git a/api/protocol/pinnacle/output/v0alpha1/output.proto b/api/protocol/pinnacle/output/v0alpha1/output.proto index 75c5cca..d4dd822 100644 --- a/api/protocol/pinnacle/output/v0alpha1/output.proto +++ b/api/protocol/pinnacle/output/v0alpha1/output.proto @@ -118,6 +118,7 @@ message GetPropertiesResponse { repeated uint32 keyboard_focus_stack_window_ids = 17; optional bool enabled = 18; optional bool powered = 19; + optional string serial_str = 20; } service OutputService { diff --git a/api/rust/src/output.rs b/api/rust/src/output.rs index 0b54589..ee81ce3 100644 --- a/api/rust/src/output.rs +++ b/api/rust/src/output.rs @@ -9,7 +9,7 @@ //! This module provides [`Output`], which allows you to get [`OutputHandle`]s for different //! connected monitors and set them up. -use std::{num::NonZeroU32, str::FromStr}; +use std::str::FromStr; use futures::FutureExt; use pinnacle_api_defs::pinnacle::output::{ @@ -555,13 +555,6 @@ pub enum OutputLoc { pub enum OutputId { /// Identify using the output's name. Name(String), - /// Identify using the output's EDID serial number. - /// - /// Note: some displays (like laptop screens) don't have a serial number, in which case this won't match it. - /// Additionally the Rust API assumes monitor serial numbers are unique. - /// If you're unlucky enough to have two monitors with the same serial number, - /// use [`OutputId::Name`] instead. - Serial(NonZeroU32), } impl OutputId { @@ -577,7 +570,6 @@ impl OutputId { pub fn matches(&self, output: &OutputHandle) -> bool { match self { OutputId::Name(name) => *name == output.name(), - OutputId::Serial(serial) => Some(serial.get()) == output.serial(), } } } @@ -1028,7 +1020,7 @@ impl OutputHandle { .collect(), scale: response.scale, transform: response.transform.and_then(|tf| tf.try_into().ok()), - serial: response.serial, + serial: response.serial_str, keyboard_focus_stack: response .keyboard_focus_stack_window_ids .into_iter() @@ -1227,15 +1219,15 @@ impl OutputHandle { self.props_async().await.transform } - /// Get this output's EDID serial number. + /// Get this output's EDID serial. /// /// Shorthand for `self.props().serial` - pub fn serial(&self) -> Option { + pub fn serial(&self) -> Option { self.props().serial } /// The async version of [`OutputHandle::serial`]. - pub async fn serial_async(&self) -> Option { + pub async fn serial_async(&self) -> Option { self.props_async().await.serial } @@ -1355,8 +1347,8 @@ pub struct OutputProperties { pub scale: Option, /// This output's transform. pub transform: Option, - /// This output's EDID serial number. - pub serial: Option, + /// This output's EDID serial. + pub serial: Option, /// This output's window keyboard focus stack. pub keyboard_focus_stack: Vec, /// Whether this output is enabled. diff --git a/justfile b/justfile index 2b78388..1d42650 100644 --- a/justfile +++ b/justfile @@ -101,7 +101,7 @@ run *args: gen-lua-pb-defs # Run `cargo test` test *args: gen-lua-pb-defs - cargo test {{args}} + cargo test --no-default-features {{args}} compile-wlcs: #!/usr/bin/env bash diff --git a/src/api.rs b/src/api.rs index 0654277..5977dda 100644 --- a/src/api.rs +++ b/src/api.rs @@ -1477,9 +1477,11 @@ impl output_service_server::OutputService for OutputService { }) as i32 }); - let serial = output.as_ref().and_then(|output| { - output.with_state(|state| state.serial.map(|serial| serial.get())) - }); + let serial = Some(0); + + let serial_str = output + .as_ref() + .map(|output| output.with_state(|state| state.serial.clone())); let keyboard_focus_stack_window_ids = output .as_ref() @@ -1527,6 +1529,7 @@ impl output_service_server::OutputService for OutputService { keyboard_focus_stack_window_ids, enabled, powered, + serial_str, } }) .await diff --git a/src/backend/udev.rs b/src/backend/udev.rs index caa426a..2ee375f 100644 --- a/src/backend/udev.rs +++ b/src/backend/udev.rs @@ -91,8 +91,6 @@ use crate::{ state::{FrameCallbackSequence, Pinnacle, State, WithState}, }; -use self::drm::util::EdidInfo; - use super::{BackendData, UninitBackend}; const SUPPORTED_FORMATS: &[Fourcc] = &[ @@ -915,14 +913,20 @@ impl Udev { connector.interface_id() ); - let (make, model, serial) = EdidInfo::try_from_connector(&device.drm, connector.handle()) - .map(|info| (info.manufacturer, info.model, info.serial)) - .unwrap_or_else(|err| { - warn!("Failed to parse EDID info: {err}"); - ("Unknown".into(), "Unknown".into(), None) - }); + let display_info = + smithay_drm_extras::display_info::for_connector(&device.drm, connector.handle()); - let (phys_w, phys_h) = connector.size().unwrap_or((0, 0)); + let (make, model, serial) = display_info + .map(|info| { + ( + info.make().unwrap_or("Unknown".into()), + info.model().unwrap_or("Unknown".into()), + info.serial().unwrap_or("Unknown".into()), + ) + }) + .unwrap_or_else(|| ("Unknown".into(), "Unknown".into(), "Unknown".into())); + + let (phys_w, phys_h) = connector.size().unwrap_or_default(); if pinnacle.outputs.keys().any(|op| { op.user_data() diff --git a/src/backend/udev/drm.rs b/src/backend/udev/drm.rs index 932f031..51e1ea2 100644 --- a/src/backend/udev/drm.rs +++ b/src/backend/udev/drm.rs @@ -3,7 +3,6 @@ use smithay::{backend::drm::DrmDevice, reexports::drm::control::crtc}; use tracing::warn; use util::get_drm_property; -pub mod edid_manus; pub mod util; const DRM_CRTC_ACTIVE: &str = "ACTIVE"; diff --git a/src/backend/udev/drm/edid_manus.rs b/src/backend/udev/drm/edid_manus.rs deleted file mode 100644 index a204795..0000000 --- a/src/backend/udev/drm/edid_manus.rs +++ /dev/null @@ -1,2564 +0,0 @@ -// You are damn right I copied everything from /usr/share/hwdata/pnp.ids and -// stuck it in this function -pub(super) fn get_manufacturer(vendor: [char; 3]) -> String { - match vendor { - ['A', 'A', 'A'] => "Avolites Ltd".to_string(), - ['A', 'A', 'E'] => "Anatek Electronics Inc.".to_string(), - ['A', 'A', 'M'] => "Aava Mobile Oy".to_string(), - ['A', 'A', 'N'] => "AAEON Technology Inc.".to_string(), - ['A', 'A', 'T'] => "Ann Arbor Technologies".to_string(), - ['A', 'B', 'A'] => "ABBAHOME INC.".to_string(), - ['A', 'B', 'C'] => "AboCom System Inc.".to_string(), - ['A', 'B', 'D'] => "Allen Bradley Company".to_string(), - ['A', 'B', 'E'] => "Alcatel Bell".to_string(), - ['A', 'B', 'O'] => "D-Link Systems Inc".to_string(), - ['A', 'B', 'S'] => "Abaco Systems, Inc.".to_string(), - ['A', 'B', 'T'] => "Anchor Bay Technologies, Inc.".to_string(), - ['A', 'B', 'V'] => "Advanced Research Technology".to_string(), - ['A', 'C', 'A'] => "Ariel Corporation".to_string(), - ['A', 'C', 'B'] => "Aculab Ltd".to_string(), - ['A', 'C', 'C'] => "Accton Technology Corporation".to_string(), - ['A', 'C', 'D'] => "AWETA BV".to_string(), - ['A', 'C', 'E'] => "Actek Engineering Pty Ltd".to_string(), - ['A', 'C', 'G'] => "A&R Cambridge Ltd.".to_string(), - ['A', 'C', 'H'] => "Archtek Telecom Corporation".to_string(), - ['A', 'C', 'I'] => "Ancor Communications Inc".to_string(), - ['A', 'C', 'K'] => "Acksys".to_string(), - ['A', 'C', 'L'] => "Apricot Computers".to_string(), - ['A', 'C', 'M'] => "Acroloop Motion Control Systems Inc".to_string(), - ['A', 'C', 'O'] => "Allion Computer Inc.".to_string(), - ['A', 'C', 'P'] => "Aspen Tech Inc".to_string(), - ['A', 'C', 'R'] => "Acer Technologies".to_string(), - ['A', 'C', 'S'] => "Altos Computer Systems".to_string(), - ['A', 'C', 'T'] => "Applied Creative Technology".to_string(), - ['A', 'C', 'U'] => "Acculogic".to_string(), - ['A', 'C', 'V'] => "ActivCard S.A".to_string(), - ['A', 'D', 'A'] => "Addi-Data GmbH".to_string(), - ['A', 'D', 'B'] => "Aldebbaron".to_string(), - ['A', 'D', 'C'] => "Acnhor Datacomm".to_string(), - ['A', 'D', 'D'] => "Advanced Peripheral Devices Inc".to_string(), - ['A', 'D', 'E'] => "Arithmos, Inc.".to_string(), - ['A', 'D', 'H'] => "Aerodata Holdings Ltd".to_string(), - ['A', 'D', 'I'] => "ADI Systems Inc".to_string(), - ['A', 'D', 'K'] => "Adtek System Science Company Ltd".to_string(), - ['A', 'D', 'L'] => "ASTRA Security Products Ltd".to_string(), - ['A', 'D', 'M'] => "Ad Lib MultiMedia Inc".to_string(), - ['A', 'D', 'N'] => "Analog & Digital Devices Tel. Inc".to_string(), - ['A', 'D', 'P'] => "Adaptec Inc".to_string(), - ['A', 'D', 'R'] => "Nasa Ames Research Center".to_string(), - ['A', 'D', 'S'] => "Analog Devices Inc".to_string(), - ['A', 'D', 'T'] => "Adtek".to_string(), - ['A', 'D', 'V'] => "Advanced Micro Devices Inc".to_string(), - ['A', 'D', 'X'] => "Adax Inc".to_string(), - ['A', 'D', 'Z'] => "ADDER TECHNOLOGY LTD".to_string(), - ['A', 'E', 'C'] => "Antex Electronics Corporation".to_string(), - ['A', 'E', 'D'] => "Advanced Electronic Designs, Inc.".to_string(), - ['A', 'E', 'I'] => "Actiontec Electric Inc".to_string(), - ['A', 'E', 'J'] => "Alpha Electronics Company".to_string(), - ['A', 'E', 'M'] => "ASEM S.p.A.".to_string(), - ['A', 'E', 'N'] => "Avencall".to_string(), - ['A', 'E', 'P'] => "Aetas Peripheral International".to_string(), - ['A', 'E', 'T'] => "Aethra Telecomunicazioni S.r.l.".to_string(), - ['A', 'F', 'A'] => "Alfa Inc".to_string(), - ['A', 'G', 'C'] => { - "Beijing Aerospace Golden Card Electronic Engineering Co.,Ltd.".to_string() - } - ['A', 'G', 'I'] => "Artish Graphics Inc".to_string(), - ['A', 'G', 'L'] => "Argolis".to_string(), - ['A', 'G', 'M'] => "Advan Int'l Corporation".to_string(), - ['A', 'G', 'O'] => "AlgolTek, Inc.".to_string(), - ['A', 'G', 'T'] => "Agilent Technologies".to_string(), - ['A', 'H', 'C'] => "Advantech Co., Ltd.".to_string(), - ['A', 'H', 'Q'] => "Astro HQ LLC".to_string(), - ['A', 'H', 'S'] => "Beijing AnHeng SecoTech Information Technology Co., Ltd.".to_string(), - ['A', 'I', 'C'] => "Arnos Insturments & Computer Systems".to_string(), - ['A', 'I', 'E'] => "Altmann Industrieelektronik".to_string(), - ['A', 'I', 'I'] => "Amptron International Inc.".to_string(), - ['A', 'I', 'K'] => "Dongguan Alllike Electronics Co., Ltd.".to_string(), - ['A', 'I', 'L'] => "Altos India Ltd".to_string(), - ['A', 'I', 'M'] => "AIMS Lab Inc".to_string(), - ['A', 'I', 'R'] => "Advanced Integ. Research Inc".to_string(), - ['A', 'I', 'S'] => "Alien Internet Services".to_string(), - ['A', 'I', 'W'] => "Aiwa Company Ltd".to_string(), - ['A', 'I', 'X'] => "ALTINEX, INC.".to_string(), - ['A', 'J', 'A'] => "AJA Video Systems, Inc.".to_string(), - ['A', 'K', 'B'] => "Akebia Ltd".to_string(), - ['A', 'K', 'E'] => "AKAMI Electric Co.,Ltd".to_string(), - ['A', 'K', 'I'] => "AKIA Corporation".to_string(), - ['A', 'K', 'L'] => "AMiT Ltd".to_string(), - ['A', 'K', 'M'] => "Asahi Kasei Microsystems Company Ltd".to_string(), - ['A', 'K', 'P'] => "Atom Komplex Prylad".to_string(), - ['A', 'K', 'R'] => "Anker Innovations Limited".to_string(), - ['A', 'K', 'Y'] => "Askey Computer Corporation".to_string(), - ['A', 'L', 'A'] => "Alacron Inc".to_string(), - ['A', 'L', 'C'] => "Altec Corporation".to_string(), - ['A', 'L', 'D'] => "In4S Inc".to_string(), - ['A', 'L', 'E'] => "Alenco BV".to_string(), - ['A', 'L', 'G'] => "Realtek Semiconductor Corp.".to_string(), - ['A', 'L', 'H'] => "AL Systems".to_string(), - ['A', 'L', 'I'] => "Acer Labs".to_string(), - ['A', 'L', 'J'] => "Altec Lansing".to_string(), - ['A', 'L', 'K'] => "Acrolink Inc".to_string(), - ['A', 'L', 'L'] => "Alliance Semiconductor Corporation".to_string(), - ['A', 'L', 'M'] => "Acutec Ltd.".to_string(), - ['A', 'L', 'N'] => "Alana Technologies".to_string(), - ['A', 'L', 'O'] => "Algolith Inc.".to_string(), - ['A', 'L', 'P'] => "ALPS ALPINE CO., LTD.".to_string(), - ['A', 'L', 'R'] => "Advanced Logic".to_string(), - ['A', 'L', 'S'] => "Avance Logic Inc".to_string(), - ['A', 'L', 'T'] => "Altra".to_string(), - ['A', 'L', 'V'] => "AlphaView LCD".to_string(), - ['A', 'L', 'X'] => "ALEXON Co.,Ltd.".to_string(), - ['A', 'M', 'A'] => "Asia Microelectronic Development Inc".to_string(), - ['A', 'M', 'B'] => "Ambient Technologies, Inc.".to_string(), - ['A', 'M', 'C'] => "Attachmate Corporation".to_string(), - ['A', 'M', 'D'] => "Amdek Corporation".to_string(), - ['A', 'M', 'I'] => "American Megatrends Inc".to_string(), - ['A', 'M', 'L'] => "Anderson Multimedia Communications (HK) Limited".to_string(), - ['A', 'M', 'N'] => "Amimon LTD.".to_string(), - ['A', 'M', 'O'] => "Amino Technologies PLC and Amino Communications Limited".to_string(), - ['A', 'M', 'P'] => "AMP Inc".to_string(), - ['A', 'M', 'R'] => "AmTRAN Technology Co., Ltd.".to_string(), - ['A', 'M', 'S'] => "ARMSTEL, Inc.".to_string(), - ['A', 'M', 'T'] => "AMT International Industry".to_string(), - ['A', 'M', 'X'] => "AMX LLC".to_string(), - ['A', 'N', 'A'] => "Anakron".to_string(), - ['A', 'N', 'C'] => "Ancot".to_string(), - ['A', 'N', 'D'] => "Adtran Inc".to_string(), - ['A', 'N', 'I'] => "Anigma Inc".to_string(), - ['A', 'N', 'K'] => "Anko Electronic Company Ltd".to_string(), - ['A', 'N', 'L'] => "Analogix Semiconductor, Inc".to_string(), - ['A', 'N', 'O'] => "Anorad Corporation".to_string(), - ['A', 'N', 'P'] => "Andrew Network Production".to_string(), - ['A', 'N', 'R'] => "ANR Ltd".to_string(), - ['A', 'N', 'S'] => "Ansel Communication Company".to_string(), - ['A', 'N', 'T'] => "Ace CAD Enterprise Company Ltd".to_string(), - ['A', 'N', 'V'] => "Beijing ANTVR Technology Co., Ltd.".to_string(), - ['A', 'N', 'W'] => "Analog Way SAS".to_string(), - ['A', 'N', 'X'] => "Acer Netxus Inc".to_string(), - ['A', 'O', 'A'] => "AOpen Inc.".to_string(), - ['A', 'O', 'E'] => "Advanced Optics Electronics, Inc.".to_string(), - ['A', 'O', 'L'] => "America OnLine".to_string(), - ['A', 'O', 'T'] => "Alcatel".to_string(), - ['A', 'P', 'C'] => "American Power Conversion".to_string(), - ['A', 'P', 'D'] => "AppliAdata".to_string(), - ['A', 'P', 'E'] => "ALPS ALPINE CO., LTD.".to_string(), - ['A', 'P', 'G'] => "Horner Electric Inc".to_string(), - ['A', 'P', 'I'] => "A Plus Info Corporation".to_string(), - ['A', 'P', 'L'] => "Aplicom Oy".to_string(), - ['A', 'P', 'M'] => "Applied Memory Tech".to_string(), - ['A', 'P', 'N'] => "Appian Tech Inc".to_string(), - ['A', 'P', 'P'] => "Apple Computer Inc".to_string(), - ['A', 'P', 'R'] => "Aprilia s.p.a.".to_string(), - ['A', 'P', 'S'] => "Autologic Inc".to_string(), - ['A', 'P', 'T'] => "Audio Processing Technology Ltd".to_string(), - ['A', 'P', 'V'] => "A+V Link".to_string(), - ['A', 'P', 'X'] => "AP Designs Ltd".to_string(), - ['A', 'R', 'C'] => "Alta Research Corporation".to_string(), - ['A', 'R', 'D'] => "AREC Inc.".to_string(), - ['A', 'R', 'E'] => "ICET S.p.A.".to_string(), - ['A', 'R', 'G'] => "Argus Electronics Co., LTD".to_string(), - ['A', 'R', 'I'] => "Argosy Research Inc".to_string(), - ['A', 'R', 'K'] => "Ark Logic Inc".to_string(), - ['A', 'R', 'L'] => "Arlotto Comnet Inc".to_string(), - ['A', 'R', 'M'] => "Arima".to_string(), - ['A', 'R', 'O'] => "Poso International B.V.".to_string(), - ['A', 'R', 'R'] => "ARRIS Group, Inc.".to_string(), - ['A', 'R', 'S'] => "Arescom Inc".to_string(), - ['A', 'R', 'T'] => "Corion Industrial Corporation".to_string(), - ['A', 'S', 'C'] => "Ascom Strategic Technology Unit".to_string(), - ['A', 'S', 'D'] => "USC Information Sciences Institute".to_string(), - ['A', 'S', 'E'] => "AseV Display Labs".to_string(), - ['A', 'S', 'H'] => "Ashton Bentley Concepts".to_string(), - ['A', 'S', 'I'] => "Ahead Systems".to_string(), - ['A', 'S', 'K'] => "Ask A/S".to_string(), - ['A', 'S', 'L'] => "AccuScene Corporation Ltd".to_string(), - ['A', 'S', 'M'] => "ASEM S.p.A.".to_string(), - ['A', 'S', 'N'] => "Asante Tech Inc".to_string(), - ['A', 'S', 'P'] => "ASP Microelectronics Ltd".to_string(), - ['A', 'S', 'T'] => "AST Research Inc".to_string(), - ['A', 'S', 'U'] => "Asuscom Network Inc".to_string(), - ['A', 'S', 'X'] => "AudioScience".to_string(), - ['A', 'S', 'Y'] => "Rockwell Collins / Airshow Systems".to_string(), - ['A', 'T', 'A'] => "Allied Telesyn International (Asia) Pte Ltd".to_string(), - ['A', 'T', 'C'] => "Ably-Tech Corporation".to_string(), - ['A', 'T', 'D'] => "Alpha Telecom Inc".to_string(), - ['A', 'T', 'E'] => "Innovate Ltd".to_string(), - ['A', 'T', 'H'] => "Athena Informatica S.R.L.".to_string(), - ['A', 'T', 'I'] => "Allied Telesis KK".to_string(), - ['A', 'T', 'J'] => "ArchiTek Corporation".to_string(), - ['A', 'T', 'K'] => "Allied Telesyn Int'l".to_string(), - ['A', 'T', 'L'] => "Arcus Technology Ltd".to_string(), - ['A', 'T', 'M'] => "ATM Ltd".to_string(), - ['A', 'T', 'N'] => "Athena Smartcard Solutions Ltd.".to_string(), - ['A', 'T', 'O'] => "ASTRO DESIGN, INC.".to_string(), - ['A', 'T', 'P'] => "Alpha-Top Corporation".to_string(), - ['A', 'T', 'T'] => "AT&T".to_string(), - ['A', 'T', 'U'] => "Avocor Technologies USA, Inc".to_string(), - ['A', 'T', 'V'] => "Office Depot, Inc.".to_string(), - ['A', 'T', 'X'] => "Athenix Corporation".to_string(), - ['A', 'U', 'D'] => "AudioControl".to_string(), - ['A', 'U', 'G'] => "August Home, Inc.".to_string(), - ['A', 'U', 'I'] => "ALPS ALPINE CO., LTD.".to_string(), - ['A', 'U', 'O'] => "AU Optronics".to_string(), - ['A', 'U', 'R'] => "Aureal Semiconductor".to_string(), - ['A', 'U', 'S'] => "ASUSTek COMPUTER INC".to_string(), - ['A', 'U', 'T'] => "Autotime Corporation".to_string(), - ['A', 'U', 'V'] => "Auvidea GmbH".to_string(), - ['A', 'V', 'A'] => "Avaya Communication".to_string(), - ['A', 'V', 'C'] => "Auravision Corporation".to_string(), - ['A', 'V', 'D'] => "Avid Electronics Corporation".to_string(), - ['A', 'V', 'E'] => "Add Value Enterpises (Asia) Pte Ltd".to_string(), - ['A', 'V', 'G'] => "Avegant Corporation".to_string(), - ['A', 'V', 'I'] => "Nippon Avionics Co.,Ltd".to_string(), - ['A', 'V', 'J'] => "Atelier Vision Corporation".to_string(), - ['A', 'V', 'L'] => "Avalue Technology Inc.".to_string(), - ['A', 'V', 'M'] => "AVM GmbH".to_string(), - ['A', 'V', 'N'] => "Advance Computer Corporation".to_string(), - ['A', 'V', 'O'] => "Avocent Corporation".to_string(), - ['A', 'V', 'R'] => "AVer Information Inc.".to_string(), - ['A', 'V', 'S'] => "Avatron Software Inc.".to_string(), - ['A', 'V', 'T'] => "Avtek (Electronics) Pty Ltd".to_string(), - ['A', 'V', 'V'] => "SBS Technologies (Canada), Inc. (was Avvida Systems, Inc.)".to_string(), - ['A', 'V', 'X'] => "A/Vaux Electronics".to_string(), - ['A', 'W', 'C'] => "Access Works Comm Inc".to_string(), - ['A', 'W', 'L'] => "Aironet Wireless Communications, Inc".to_string(), - ['A', 'W', 'S'] => "Wave Systems".to_string(), - ['A', 'X', 'B'] => "Adrienne Electronics Corporation".to_string(), - ['A', 'X', 'C'] => "AXIOMTEK CO., LTD.".to_string(), - ['A', 'X', 'E'] => "Axell Corporation".to_string(), - ['A', 'X', 'I'] => "American Magnetics".to_string(), - ['A', 'X', 'L'] => "Axel".to_string(), - ['A', 'X', 'O'] => "Axonic Labs LLC".to_string(), - ['A', 'X', 'P'] => "American Express".to_string(), - ['A', 'X', 'T'] => "Axtend Technologies Inc".to_string(), - ['A', 'X', 'X'] => "Axxon Computer Corporation".to_string(), - ['A', 'X', 'Y'] => "AXYZ Automation Services, Inc".to_string(), - ['A', 'Y', 'D'] => "Aydin Displays".to_string(), - ['A', 'Y', 'R'] => "Airlib, Inc".to_string(), - ['A', 'Z', 'H'] => { - "Shenzhen three Connaught Information Technology Co., Ltd. (3nod Group)".to_string() - } - ['A', 'Z', 'M'] => "AZ Middelheim - Radiotherapy".to_string(), - ['A', 'Z', 'T'] => "Aztech Systems Ltd".to_string(), - ['B', 'A', 'C'] => "Biometric Access Corporation".to_string(), - ['B', 'A', 'N'] => "Banyan".to_string(), - ['B', 'B', 'B'] => "an-najah university".to_string(), - ['B', 'B', 'H'] => "B&Bh".to_string(), - ['B', 'B', 'L'] => "Brain Boxes Limited".to_string(), - ['B', 'B', 'V'] => "BlueBox Video Limited".to_string(), - ['B', 'B', 'X'] => "Black Box Corporation".to_string(), - ['B', 'C', 'C'] => "Beaver Computer Corporaton".to_string(), - ['B', 'C', 'D'] => "Barco GmbH".to_string(), - ['B', 'C', 'I'] => "Broadata Communications Inc.".to_string(), - ['B', 'C', 'K'] => "Beck GmbH & Co. Elektronik Bauelemente KG".to_string(), - ['B', 'C', 'M'] => "Broadcom".to_string(), - ['B', 'C', 'Q'] => "Deutsche Telekom Berkom GmbH".to_string(), - ['B', 'C', 'S'] => "Booria CAD/CAM systems".to_string(), - ['B', 'D', 'O'] => "Brahler ICS".to_string(), - ['B', 'D', 'R'] => "Blonder Tongue Labs, Inc.".to_string(), - ['B', 'D', 'S'] => "Barco Display Systems".to_string(), - ['B', 'E', 'C'] => "Beckhoff Automation".to_string(), - ['B', 'E', 'I'] => "Beckworth Enterprises Inc".to_string(), - ['B', 'E', 'K'] => "Beko Elektronik A.S.".to_string(), - ['B', 'E', 'L'] => "Beltronic Industrieelektronik GmbH".to_string(), - ['B', 'E', 'O'] => "Baug & Olufsen".to_string(), - ['B', 'F', 'E'] => "B.F. Engineering Corporation".to_string(), - ['B', 'G', 'B'] => "Barco Graphics N.V".to_string(), - ['B', 'G', 'T'] => "Budzetron Inc".to_string(), - ['B', 'H', 'Z'] => "BitHeadz, Inc.".to_string(), - ['B', 'I', 'A'] => "Biamp Systems Corporation".to_string(), - ['B', 'I', 'C'] => "Big Island Communications".to_string(), - ['B', 'I', 'G'] => "Bigscreen, Inc.".to_string(), - ['B', 'I', 'I'] => "Boeckeler Instruments Inc".to_string(), - ['B', 'I', 'L'] => "Billion Electric Company Ltd".to_string(), - ['B', 'I', 'O'] => "BioLink Technologies International, Inc.".to_string(), - ['B', 'I', 'T'] => "Bit 3 Computer".to_string(), - ['B', 'L', 'D'] => "BILD INNOVATIVE TECHNOLOGY LLC".to_string(), - ['B', 'L', 'I'] => "Busicom".to_string(), - ['B', 'L', 'N'] => "BioLink Technologies".to_string(), - ['B', 'L', 'P'] => "Bloomberg L.P.".to_string(), - ['B', 'M', 'D'] => "Blackmagic Design".to_string(), - ['B', 'M', 'I'] => "Benson Medical Instruments Company".to_string(), - ['B', 'M', 'L'] => "BIOMED Lab".to_string(), - ['B', 'M', 'S'] => "BIOMEDISYS".to_string(), - ['B', 'N', 'E'] => "Bull AB".to_string(), - ['B', 'N', 'K'] => "Banksia Tech Pty Ltd".to_string(), - ['B', 'N', 'O'] => "Bang & Olufsen".to_string(), - ['B', 'N', 'S'] => "Boulder Nonlinear Systems".to_string(), - ['B', 'O', 'B'] => "Rainy Orchard".to_string(), - ['B', 'O', 'E'] => "BOE".to_string(), - ['B', 'O', 'I'] => "NINGBO BOIGLE DIGITAL TECHNOLOGY CO.,LTD".to_string(), - ['B', 'O', 'S'] => "BOS".to_string(), - ['B', 'P', 'D'] => "Micro Solutions, Inc.".to_string(), - ['B', 'P', 'S'] => "Barco, N.V.".to_string(), - ['B', 'P', 'U'] => "Best Power".to_string(), - ['B', 'R', 'A'] => "Braemac Pty Ltd".to_string(), - ['B', 'R', 'C'] => "BARC".to_string(), - ['B', 'R', 'G'] => "Bridge Information Co., Ltd".to_string(), - ['B', 'R', 'I'] => "Boca Research Inc".to_string(), - ['B', 'R', 'L'] => "Brainlab AG".to_string(), - ['B', 'R', 'M'] => "Braemar Inc".to_string(), - ['B', 'R', 'O'] => "BROTHER INDUSTRIES,LTD.".to_string(), - ['B', 'S', 'E'] => "Bose Corporation".to_string(), - ['B', 'S', 'G'] => "Robert Bosch GmbH".to_string(), - ['B', 'S', 'L'] => "Biomedical Systems Laboratory".to_string(), - ['B', 'S', 'N'] => "BRIGHTSIGN, LLC".to_string(), - ['B', 'S', 'T'] => "BodySound Technologies, Inc.".to_string(), - ['B', 'T', 'C'] => "Bit 3 Computer".to_string(), - ['B', 'T', 'E'] => "Brilliant Technology".to_string(), - ['B', 'T', 'F'] => "Bitfield Oy".to_string(), - ['B', 'T', 'I'] => "BusTech Inc".to_string(), - ['B', 'T', 'O'] => "BioTao Ltd".to_string(), - ['B', 'U', 'F'] => "Yasuhiko Shirai Melco Inc".to_string(), - ['B', 'U', 'G'] => "B.U.G., Inc.".to_string(), - ['B', 'U', 'J'] => "ATI Tech Inc".to_string(), - ['B', 'U', 'L'] => "Bull".to_string(), - ['B', 'U', 'R'] => "B&R Industrial Automation GmbH".to_string(), - ['B', 'U', 'S'] => "BusTek".to_string(), - ['B', 'U', 'T'] => "21ST CENTURY ENTERTAINMENT".to_string(), - ['B', 'W', 'K'] => "Bitworks Inc.".to_string(), - ['B', 'X', 'E'] => "Buxco Electronics".to_string(), - ['B', 'Y', 'D'] => "byd:sign corporation".to_string(), - ['C', 'A', 'A'] => "Castles Automation Co., Ltd".to_string(), - ['C', 'A', 'C'] => "CA & F Elettronica".to_string(), - ['C', 'A', 'G'] => "CalComp".to_string(), - ['C', 'A', 'I'] => "Canon Inc.".to_string(), - ['C', 'A', 'L'] => "Acon".to_string(), - ['C', 'A', 'M'] => "Cambridge Audio".to_string(), - ['C', 'A', 'N'] => "Canopus Company Ltd".to_string(), - ['C', 'A', 'R'] => "Cardinal Company Ltd".to_string(), - ['C', 'A', 'S'] => "CASIO COMPUTER CO.,LTD".to_string(), - ['C', 'A', 'T'] => "Consultancy in Advanced Technology".to_string(), - ['C', 'A', 'V'] => "Cavium Networks, Inc".to_string(), - ['C', 'B', 'I'] => "ComputerBoards Inc".to_string(), - ['C', 'B', 'R'] => "Cebra Tech A/S".to_string(), - ['C', 'B', 'T'] => "Cabletime Ltd".to_string(), - ['C', 'B', 'X'] => "Cybex Computer Products Corporation".to_string(), - ['C', 'C', 'C'] => "C-Cube Microsystems".to_string(), - ['C', 'C', 'I'] => "Cache".to_string(), - ['C', 'C', 'J'] => "CONTEC CO.,LTD.".to_string(), - ['C', 'C', 'L'] => "CCL/ITRI".to_string(), - ['C', 'C', 'P'] => "Capetronic USA Inc".to_string(), - ['C', 'D', 'C'] => "Core Dynamics Corporation".to_string(), - ['C', 'D', 'D'] => "Convergent Data Devices".to_string(), - ['C', 'D', 'E'] => "Colin.de".to_string(), - ['C', 'D', 'G'] => "Christie Digital Systems Inc".to_string(), - ['C', 'D', 'I'] => "Concept Development Inc".to_string(), - ['C', 'D', 'K'] => "Cray Communications".to_string(), - ['C', 'D', 'N'] => "Codenoll Technical Corporation".to_string(), - ['C', 'D', 'P'] => "CalComp".to_string(), - ['C', 'D', 'S'] => "Computer Diagnostic Systems".to_string(), - ['C', 'D', 'T'] => "IBM Corporation".to_string(), - ['C', 'D', 'V'] => "Convergent Design Inc.".to_string(), - ['C', 'E', 'A'] => "Consumer Electronics Association".to_string(), - ['C', 'E', 'C'] => "Chicony Electronics Company Ltd".to_string(), - ['C', 'E', 'D'] => "Cambridge Electronic Design Ltd".to_string(), - ['C', 'E', 'F'] => "Cefar Digital Vision".to_string(), - ['C', 'E', 'I'] => "Crestron Electronics, Inc.".to_string(), - ['C', 'E', 'M'] => "MEC Electronics GmbH".to_string(), - ['C', 'E', 'N'] => "Centurion Technologies P/L".to_string(), - ['C', 'E', 'P'] => "C-DAC".to_string(), - ['C', 'E', 'R'] => "Ceronix".to_string(), - ['C', 'E', 'T'] => "TEC CORPORATION".to_string(), - ['C', 'F', 'G'] => "Atlantis".to_string(), - ['C', 'F', 'R'] => "Meta View, Inc.".to_string(), - ['C', 'G', 'A'] => "Chunghwa Picture Tubes, LTD".to_string(), - ['C', 'G', 'S'] => "Chyron Corp".to_string(), - ['C', 'G', 'T'] => "congatec AG".to_string(), - ['C', 'H', 'A'] => "Chase Research PLC".to_string(), - ['C', 'H', 'D'] => "ChangHong Electric Co.,Ltd".to_string(), - ['C', 'H', 'E'] => "Acer Inc".to_string(), - ['C', 'H', 'G'] => "Sichuan Changhong Electric CO, LTD.".to_string(), - ['C', 'H', 'I'] => "Chrontel Inc".to_string(), - ['C', 'H', 'L'] => "Chloride-R&D".to_string(), - ['C', 'H', 'M'] => "CHIC TECHNOLOGY CORP.".to_string(), - ['C', 'H', 'O'] => "Sichuang Changhong Corporation".to_string(), - ['C', 'H', 'P'] => "CH Products".to_string(), - ['C', 'H', 'R'] => "christmann informationstechnik + medien GmbH & Co. KG".to_string(), - ['C', 'H', 'S'] => "Agentur Chairos".to_string(), - ['C', 'H', 'T'] => "Chunghwa Picture Tubes,LTD.".to_string(), - ['C', 'H', 'Y'] => "Cherry GmbH".to_string(), - ['C', 'I', 'C'] => "Comm. Intelligence Corporation".to_string(), - ['C', 'I', 'E'] => "Convergent Engineering, Inc.".to_string(), - ['C', 'I', 'I'] => "Cromack Industries Inc".to_string(), - ['C', 'I', 'L'] => "Citicom Infotech Private Limited".to_string(), - ['C', 'I', 'N'] => "Citron GmbH".to_string(), - ['C', 'I', 'P'] => "Ciprico Inc".to_string(), - ['C', 'I', 'R'] => "Cirrus Logic Inc".to_string(), - ['C', 'I', 'S'] => "Cisco Systems Inc".to_string(), - ['C', 'I', 'T'] => "Citifax Limited".to_string(), - ['C', 'K', 'C'] => "The Concept Keyboard Company Ltd".to_string(), - ['C', 'K', 'J'] => "Carina System Co., Ltd.".to_string(), - ['C', 'L', 'A'] => "Clarion Company Ltd".to_string(), - ['C', 'L', 'D'] => "COMMAT L.t.d.".to_string(), - ['C', 'L', 'E'] => "Classe Audio".to_string(), - ['C', 'L', 'G'] => "CoreLogic".to_string(), - ['C', 'L', 'I'] => "Cirrus Logic Inc".to_string(), - ['C', 'L', 'M'] => "CrystaLake Multimedia".to_string(), - ['C', 'L', 'O'] => "Clone Computers".to_string(), - ['C', 'L', 'R'] => "Clover Electronics".to_string(), - ['C', 'L', 'T'] => "automated computer control systems".to_string(), - ['C', 'L', 'V'] => "Clevo Company".to_string(), - ['C', 'L', 'X'] => "CardLogix".to_string(), - ['C', 'M', 'C'] => "CMC Ltd".to_string(), - ['C', 'M', 'D'] => "Colorado MicroDisplay, Inc.".to_string(), - ['C', 'M', 'G'] => "Chenming Mold Ind. Corp.".to_string(), - ['C', 'M', 'I'] => "C-Media Electronics".to_string(), - ['C', 'M', 'K'] => "Comark LLC".to_string(), - ['C', 'M', 'M'] => "Comtime GmbH".to_string(), - ['C', 'M', 'N'] => "Chimei Innolux Corporation".to_string(), - ['C', 'M', 'O'] => "Chi Mei Optoelectronics corp.".to_string(), - ['C', 'M', 'R'] => "Cambridge Research Systems Ltd".to_string(), - ['C', 'M', 'S'] => "CompuMaster Srl".to_string(), - ['C', 'M', 'X'] => "Comex Electronics AB".to_string(), - ['C', 'N', 'B'] => "American Power Conversion".to_string(), - ['C', 'N', 'C'] => "Alvedon Computers Ltd".to_string(), - ['C', 'N', 'D'] => "Micro-Star Int'l Co., Ltd.".to_string(), - ['C', 'N', 'E'] => "Cine-tal".to_string(), - ['C', 'N', 'I'] => "Connect Int'l A/S".to_string(), - ['C', 'N', 'N'] => "Canon Inc".to_string(), - ['C', 'N', 'T'] => "COINT Multimedia Systems".to_string(), - ['C', 'O', 'B'] => "COBY Electronics Co., Ltd".to_string(), - ['C', 'O', 'D'] => "CODAN Pty. Ltd.".to_string(), - ['C', 'O', 'I'] => "Codec Inc.".to_string(), - ['C', 'O', 'L'] => "Rockwell Collins, Inc.".to_string(), - ['C', 'O', 'M'] => "Comtrol Corporation".to_string(), - ['C', 'O', 'N'] => "Contec Company Ltd".to_string(), - ['C', 'O', 'O'] => "coolux GmbH".to_string(), - ['C', 'O', 'R'] => "Corollary Inc".to_string(), - ['C', 'O', 'S'] => "CoStar Corporation".to_string(), - ['C', 'O', 'T'] => "Core Technology Inc".to_string(), - ['C', 'O', 'W'] => "Polycow Productions".to_string(), - ['C', 'O', 'X'] => "Comrex".to_string(), - ['C', 'P', 'C'] => "Ciprico Inc".to_string(), - ['C', 'P', 'D'] => "CompuAdd".to_string(), - ['C', 'P', 'I'] => "Computer Peripherals Inc".to_string(), - ['C', 'P', 'L'] => "Compal Electronics Inc".to_string(), - ['C', 'P', 'M'] => "Capella Microsystems Inc.".to_string(), - ['C', 'P', 'P'] => "Compound Photonics".to_string(), - ['C', 'P', 'Q'] => "Compaq Computer Company".to_string(), - ['C', 'P', 'T'] => "cPATH".to_string(), - ['C', 'P', 'X'] => "Powermatic Data Systems".to_string(), - ['C', 'R', 'A'] => "CRALTECH ELECTRONICA, S.L.".to_string(), - ['C', 'R', 'C'] => "CONRAC GmbH".to_string(), - ['C', 'R', 'D'] => "Cardinal Technical Inc".to_string(), - ['C', 'R', 'E'] => "Creative Labs Inc".to_string(), - ['C', 'R', 'H'] => "Contemporary Research Corp.".to_string(), - ['C', 'R', 'I'] => "Crio Inc.".to_string(), - ['C', 'R', 'L'] => "Creative Logic".to_string(), - ['C', 'R', 'M'] => "CORSAIR MEMORY Inc.".to_string(), - ['C', 'R', 'N'] => "Cornerstone Imaging".to_string(), - ['C', 'R', 'O'] => "Extraordinary Technologies PTY Limited".to_string(), - ['C', 'R', 'Q'] => "Cirque Corporation".to_string(), - ['C', 'R', 'S'] => "Crescendo Communication Inc".to_string(), - ['C', 'R', 'V'] => "Cerevo Inc.".to_string(), - ['C', 'R', 'W'] => "Cammegh Limited".to_string(), - ['C', 'R', 'X'] => "Cyrix Corporation".to_string(), - ['C', 'S', 'B'] => "Transtex SA".to_string(), - ['C', 'S', 'C'] => "Crystal Semiconductor".to_string(), - ['C', 'S', 'D'] => "Cresta Systems Inc".to_string(), - ['C', 'S', 'E'] => "Concept Solutions & Engineering".to_string(), - ['C', 'S', 'I'] => "Cabletron System Inc".to_string(), - ['C', 'S', 'L'] => "Cloudium Systems Ltd.".to_string(), - ['C', 'S', 'M'] => "Cosmic Engineering Inc.".to_string(), - ['C', 'S', 'O'] => "California Institute of Technology".to_string(), - ['C', 'S', 'S'] => "CSS Laboratories".to_string(), - ['C', 'S', 'T'] => "CSTI Inc".to_string(), - ['C', 'S', 'W'] => "China Star Optoelectronics Technology Co., Ltd".to_string(), - ['C', 'T', 'A'] => "CoSystems Inc".to_string(), - ['C', 'T', 'C'] => "CTC Communication Development Company Ltd".to_string(), - ['C', 'T', 'E'] => "Chunghwa Telecom Co., Ltd.".to_string(), - ['C', 'T', 'L'] => "Creative Technology Ltd".to_string(), - ['C', 'T', 'M'] => "Computerm Corporation".to_string(), - ['C', 'T', 'N'] => "Computone Products".to_string(), - ['C', 'T', 'P'] => "Computer Technology Corporation".to_string(), - ['C', 'T', 'R'] => "Control4 Corporation".to_string(), - ['C', 'T', 'S'] => "Comtec Systems Co., Ltd.".to_string(), - ['C', 'T', 'X'] => "Creatix Polymedia GmbH".to_string(), - ['C', 'U', 'B'] => "Cubix Corporation".to_string(), - ['C', 'U', 'K'] => "Calibre UK Ltd".to_string(), - ['C', 'V', 'A'] => "Covia Inc.".to_string(), - ['C', 'V', 'I'] => "Colorado Video, Inc.".to_string(), - ['C', 'V', 'P'] => "Chromatec Video Products Ltd".to_string(), - ['C', 'V', 'S'] => "Clarity Visual Systems".to_string(), - ['C', 'W', 'C'] => "Curtiss-Wright Controls, Inc.".to_string(), - ['C', 'W', 'R'] => "Connectware Inc".to_string(), - ['C', 'X', 'T'] => "Conexant Systems".to_string(), - ['C', 'Y', 'B'] => "CyberVision".to_string(), - ['C', 'Y', 'C'] => "Cylink Corporation".to_string(), - ['C', 'Y', 'D'] => "Cyclades Corporation".to_string(), - ['C', 'Y', 'L'] => "Cyberlabs".to_string(), - ['C', 'Y', 'P'] => "CYPRESS SEMICONDUCTOR CORPORATION".to_string(), - ['C', 'Y', 'T'] => "Cytechinfo Inc".to_string(), - ['C', 'Y', 'V'] => "Cyviz AS".to_string(), - ['C', 'Y', 'W'] => "Cyberware".to_string(), - ['C', 'Y', 'X'] => "Cyrix Corporation".to_string(), - ['C', 'Z', 'C'] => "Shenzhen ChuangZhiCheng Technology Co., Ltd.".to_string(), - ['C', 'Z', 'E'] => "Carl Zeiss AG".to_string(), - ['D', 'A', 'C'] => "Digital Acoustics Corporation".to_string(), - ['D', 'A', 'E'] => "Digatron Industrie Elektronik GmbH".to_string(), - ['D', 'A', 'I'] => "DAIS SET Ltd.".to_string(), - ['D', 'A', 'K'] => "Daktronics".to_string(), - ['D', 'A', 'L'] => "Digital Audio Labs Inc".to_string(), - ['D', 'A', 'N'] => "Danelec Marine A/S".to_string(), - ['D', 'A', 'S'] => "DAVIS AS".to_string(), - ['D', 'A', 'T'] => "Datel Inc".to_string(), - ['D', 'A', 'U'] => "Daou Tech Inc".to_string(), - ['D', 'A', 'V'] => "Davicom Semiconductor Inc".to_string(), - ['D', 'A', 'W'] => "DA2 Technologies Inc".to_string(), - ['D', 'A', 'X'] => "Data Apex Ltd".to_string(), - ['D', 'B', 'D'] => "Diebold Inc.".to_string(), - ['D', 'B', 'I'] => "DigiBoard Inc".to_string(), - ['D', 'B', 'K'] => "Databook Inc".to_string(), - ['D', 'B', 'L'] => "Doble Engineering Company".to_string(), - ['D', 'B', 'N'] => "DB Networks Inc".to_string(), - ['D', 'C', 'A'] => "Digital Communications Association".to_string(), - ['D', 'C', 'C'] => "Dale Computer Corporation".to_string(), - ['D', 'C', 'D'] => "Datacast LLC".to_string(), - ['D', 'C', 'E'] => "dSPACE GmbH".to_string(), - ['D', 'C', 'I'] => "Concepts Inc".to_string(), - ['D', 'C', 'L'] => "Dynamic Controls Ltd".to_string(), - ['D', 'C', 'M'] => "DCM Data Products".to_string(), - ['D', 'C', 'O'] => "Dialogue Technology Corporation".to_string(), - ['D', 'C', 'R'] => "Decros Ltd".to_string(), - ['D', 'C', 'S'] => "Diamond Computer Systems Inc".to_string(), - ['D', 'C', 'T'] => "Dancall Telecom A/S".to_string(), - ['D', 'C', 'V'] => "Datatronics Technology Inc".to_string(), - ['D', 'D', 'A'] => "DA2 Technologies Corporation".to_string(), - ['D', 'D', 'D'] => "Danka Data Devices".to_string(), - ['D', 'D', 'E'] => "Datasat Digital Entertainment".to_string(), - ['D', 'D', 'I'] => "Data Display AG".to_string(), - ['D', 'D', 'S'] => "Barco, N.V.".to_string(), - ['D', 'D', 'T'] => "Datadesk Technologies Inc".to_string(), - ['D', 'D', 'V'] => "Delta Information Systems, Inc".to_string(), - ['D', 'E', 'C'] => "Digital Equipment Corporation".to_string(), - ['D', 'E', 'I'] => "Deico Electronics".to_string(), - ['D', 'E', 'L'] => "Dell Inc.".to_string(), - ['D', 'E', 'M'] => "DemoPad Software Ltd".to_string(), - ['D', 'E', 'N'] => "Densitron Computers Ltd".to_string(), - ['D', 'E', 'X'] => "idex displays".to_string(), - ['D', 'F', 'I'] => "DFI".to_string(), - ['D', 'F', 'K'] => "SharkTec A/S".to_string(), - ['D', 'F', 'T'] => "DEI Holdings dba Definitive Technology".to_string(), - ['D', 'G', 'A'] => "Digiital Arts Inc".to_string(), - ['D', 'G', 'C'] => "Data General Corporation".to_string(), - ['D', 'G', 'I'] => "DIGI International".to_string(), - ['D', 'G', 'K'] => "DugoTech Co., LTD".to_string(), - ['D', 'G', 'P'] => "Digicorp European sales S.A.".to_string(), - ['D', 'G', 'S'] => "Diagsoft Inc".to_string(), - ['D', 'G', 'T'] => "Dearborn Group Technology".to_string(), - ['D', 'H', 'D'] => "Dension Audio Systems".to_string(), - ['D', 'H', 'P'] => "DH Print".to_string(), - ['D', 'H', 'Q'] => "Quadram".to_string(), - ['D', 'H', 'T'] => "Projectavision Inc".to_string(), - ['D', 'I', 'A'] => "Diadem".to_string(), - ['D', 'I', 'G'] => "Digicom S.p.A.".to_string(), - ['D', 'I', 'I'] => "Dataq Instruments Inc".to_string(), - ['D', 'I', 'M'] => "dPict Imaging, Inc.".to_string(), - ['D', 'I', 'N'] => "Daintelecom Co., Ltd".to_string(), - ['D', 'I', 'S'] => "Diseda S.A.".to_string(), - ['D', 'I', 'T'] => "Dragon Information Technology".to_string(), - ['D', 'J', 'E'] => "Capstone Visual Product Development".to_string(), - ['D', 'J', 'P'] => "Maygay Machines, Ltd".to_string(), - ['D', 'K', 'Y'] => "Datakey Inc".to_string(), - ['D', 'L', 'B'] => "Dolby Laboratories Inc.".to_string(), - ['D', 'L', 'C'] => "Diamond Lane Comm. Corporation".to_string(), - ['D', 'L', 'D'] => "Delem".to_string(), - ['D', 'L', 'G'] => "Digital-Logic GmbH".to_string(), - ['D', 'L', 'K'] => "D-Link Systems Inc".to_string(), - ['D', 'L', 'L'] => "Dell Inc".to_string(), - ['D', 'L', 'M'] => "DLOGIC Ltd.".to_string(), - ['D', 'L', 'O'] => "Shenzhen Dlodlo Technologies Co., Ltd.".to_string(), - ['D', 'L', 'T'] => "Digitelec Informatique Park Cadera".to_string(), - ['D', 'M', 'B'] => "Digicom Systems Inc".to_string(), - ['D', 'M', 'C'] => "Dune Microsystems Corporation".to_string(), - ['D', 'M', 'G'] => "Monoprice.Inc".to_string(), - ['D', 'M', 'M'] => "Dimond Multimedia Systems Inc".to_string(), - ['D', 'M', 'N'] => "Dimension Engineering LLC".to_string(), - ['D', 'M', 'O'] => "Data Modul AG".to_string(), - ['D', 'M', 'P'] => "D&M Holdings Inc, Professional Business Company".to_string(), - ['D', 'M', 'S'] => "DOME imaging systems".to_string(), - ['D', 'M', 'T'] => "Distributed Management Task Force, Inc. (DMTF)".to_string(), - ['D', 'M', 'V'] => "NDS Ltd".to_string(), - ['D', 'N', 'A'] => "DNA Enterprises, Inc.".to_string(), - ['D', 'N', 'G'] => "Apache Micro Peripherals Inc".to_string(), - ['D', 'N', 'I'] => "Deterministic Networks Inc.".to_string(), - ['D', 'N', 'T'] => "Dr. Neuhous Telekommunikation GmbH".to_string(), - ['D', 'N', 'V'] => "DiCon".to_string(), - ['D', 'O', 'L'] => "Dolman Technologies Group Inc".to_string(), - ['D', 'O', 'M'] => "Dome Imaging Systems".to_string(), - ['D', 'O', 'N'] => "DENON, Ltd.".to_string(), - ['D', 'O', 'T'] => "Dotronic Mikroelektronik GmbH".to_string(), - ['D', 'P', 'A'] => "DigiTalk Pro AV".to_string(), - ['D', 'P', 'C'] => "Delta Electronics Inc".to_string(), - ['D', 'P', 'H'] => "Delphi Automotive LLP".to_string(), - ['D', 'P', 'I'] => "DocuPoint".to_string(), - ['D', 'P', 'L'] => "Digital Projection Limited".to_string(), - ['D', 'P', 'M'] => "ADPM Synthesis sas".to_string(), - ['D', 'P', 'N'] => "Shanghai Lexiang Technology Limited".to_string(), - ['D', 'P', 'S'] => "Digital Processing Systems".to_string(), - ['D', 'P', 'T'] => "DPT".to_string(), - ['D', 'P', 'X'] => "DpiX, Inc.".to_string(), - ['D', 'Q', 'B'] => "Datacube Inc".to_string(), - ['D', 'R', 'B'] => "Dr. Bott KG".to_string(), - ['D', 'R', 'C'] => "Data Ray Corp.".to_string(), - ['D', 'R', 'D'] => "DIGITAL REFLECTION INC.".to_string(), - ['D', 'R', 'I'] => "Data Race Inc".to_string(), - ['D', 'R', 'S'] => "DRS Defense Solutions, LLC".to_string(), - ['D', 'S', 'A'] => "Display Solution AG".to_string(), - ['D', 'S', 'D'] => "DS Multimedia Pte Ltd".to_string(), - ['D', 'S', 'G'] => "Disguise Technologies".to_string(), - ['D', 'S', 'I'] => "Digitan Systems Inc".to_string(), - ['D', 'S', 'J'] => "VR Technology Holdings Limited".to_string(), - ['D', 'S', 'M'] => "DSM Digital Services GmbH".to_string(), - ['D', 'S', 'P'] => "Domain Technology Inc".to_string(), - ['D', 'T', 'A'] => "DELTATEC".to_string(), - ['D', 'T', 'C'] => "DTC Tech Corporation".to_string(), - ['D', 'T', 'E'] => "Dimension Technologies, Inc.".to_string(), - ['D', 'T', 'I'] => "Diversified Technology, Inc.".to_string(), - ['D', 'T', 'K'] => "Dynax Electronics (HK) Ltd".to_string(), - ['D', 'T', 'L'] => "e-Net Inc".to_string(), - ['D', 'T', 'N'] => "Datang Telephone Co".to_string(), - ['D', 'T', 'O'] => "Deutsche Thomson OHG".to_string(), - ['D', 'T', 'T'] => "Design & Test Technology, Inc.".to_string(), - ['D', 'T', 'X'] => "Data Translation".to_string(), - ['D', 'U', 'A'] => "Dosch & Amand GmbH & Company KG".to_string(), - ['D', 'U', 'N'] => "NCR Corporation".to_string(), - ['D', 'V', 'D'] => "Dictaphone Corporation".to_string(), - ['D', 'V', 'L'] => "Devolo AG".to_string(), - ['D', 'V', 'S'] => "Digital Video System".to_string(), - ['D', 'V', 'T'] => "Data Video".to_string(), - ['D', 'W', 'E'] => "Daewoo Electronics Company Ltd".to_string(), - ['D', 'X', 'C'] => "Digipronix Control Systems".to_string(), - ['D', 'X', 'D'] => "DECIMATOR DESIGN PTY LTD".to_string(), - ['D', 'X', 'L'] => "Dextera Labs Inc".to_string(), - ['D', 'X', 'N'] => "Dixon Technologies (India) Limited".to_string(), - ['D', 'X', 'P'] => "Data Expert Corporation".to_string(), - ['D', 'X', 'S'] => "Signet".to_string(), - ['D', 'Y', 'C'] => "Dycam Inc".to_string(), - ['D', 'Y', 'M'] => "Dymo-CoStar Corporation".to_string(), - ['D', 'Y', 'N'] => "Askey Computer Corporation".to_string(), - ['D', 'Y', 'X'] => "Dynax Electronics (HK) Ltd".to_string(), - ['E', 'A', 'C'] => "Emotiva Audio Corp.".to_string(), - ['E', 'A', 'G'] => "ELTEC Elektronik AG".to_string(), - ['E', 'A', 'S'] => "Evans and Sutherland Computer".to_string(), - ['E', 'B', 'H'] => "Data Price Informatica".to_string(), - ['E', 'B', 'S'] => "EBS Euchner Büro- und Schulsysteme GmbH".to_string(), - ['E', 'B', 'T'] => "HUALONG TECHNOLOGY CO., LTD".to_string(), - ['E', 'C', 'A'] => "Electro Cam Corp.".to_string(), - ['E', 'C', 'C'] => "ESSential Comm. Corporation".to_string(), - ['E', 'C', 'H'] => "EchoStar Corporation".to_string(), - ['E', 'C', 'I'] => "Enciris Technologies".to_string(), - ['E', 'C', 'K'] => "Eugene Chukhlomin Sole Proprietorship, d.b.a.".to_string(), - ['E', 'C', 'L'] => "Excel Company Ltd".to_string(), - ['E', 'C', 'M'] => "E-Cmos Tech Corporation".to_string(), - ['E', 'C', 'O'] => "Echo Speech Corporation".to_string(), - ['E', 'C', 'P'] => "Elecom Company Ltd".to_string(), - ['E', 'C', 'S'] => "Elitegroup Computer Systems Company Ltd".to_string(), - ['E', 'C', 'T'] => "Enciris Technologies".to_string(), - ['E', 'D', 'C'] => "e.Digital Corporation".to_string(), - ['E', 'D', 'G'] => "Electronic-Design GmbH".to_string(), - ['E', 'D', 'I'] => "Edimax Tech. Company Ltd".to_string(), - ['E', 'D', 'M'] => "EDMI".to_string(), - ['E', 'D', 'T'] => "Emerging Display Technologies Corp".to_string(), - ['E', 'E', 'E'] => "ET&T Technology Company Ltd".to_string(), - ['E', 'E', 'H'] => "EEH Datalink GmbH".to_string(), - ['E', 'E', 'I'] => "ELARABY COMPANY FOR ENGINEERING INDUSTRIES".to_string(), - ['E', 'E', 'P'] => "E.E.P.D. GmbH".to_string(), - ['E', 'E', 'S'] => "EE Solutions, Inc.".to_string(), - ['E', 'G', 'A'] => "Elgato Systems LLC".to_string(), - ['E', 'G', 'D'] => "EIZO GmbH Display Technologies".to_string(), - ['E', 'G', 'L'] => "Eagle Technology".to_string(), - ['E', 'G', 'N'] => "Egenera, Inc.".to_string(), - ['E', 'G', 'O'] => "Ergo Electronics".to_string(), - ['E', 'H', 'J'] => "Epson Research".to_string(), - ['E', 'H', 'N'] => "Enhansoft".to_string(), - ['E', 'I', 'C'] => "Eicon Technology Corporation".to_string(), - ['E', 'I', 'N'] => "Elegant Invention".to_string(), - ['E', 'K', 'A'] => "MagTek Inc.".to_string(), - ['E', 'K', 'C'] => "Eastman Kodak Company".to_string(), - ['E', 'K', 'S'] => "EKSEN YAZILIM".to_string(), - ['E', 'L', 'A'] => "ELAD srl".to_string(), - ['E', 'L', 'C'] => "Electro Scientific Ind".to_string(), - ['E', 'L', 'D'] => "Express Luck, Inc.".to_string(), - ['E', 'L', 'E'] => "Elecom Company Ltd".to_string(), - ['E', 'L', 'G'] => "Elmeg GmbH Kommunikationstechnik".to_string(), - ['E', 'L', 'I'] => "Edsun Laboratories".to_string(), - ['E', 'L', 'L'] => "Electrosonic Ltd".to_string(), - ['E', 'L', 'M'] => "Elmic Systems Inc".to_string(), - ['E', 'L', 'O'] => "Elo TouchSystems Inc".to_string(), - ['E', 'L', 'S'] => "ELSA GmbH".to_string(), - ['E', 'L', 'T'] => "Element Labs, Inc.".to_string(), - ['E', 'L', 'U'] => "Express Industrial, Ltd.".to_string(), - ['E', 'L', 'X'] => "Elonex PLC".to_string(), - ['E', 'M', 'B'] => "Embedded computing inc ltd".to_string(), - ['E', 'M', 'C'] => "eMicro Corporation".to_string(), - ['E', 'M', 'D'] => "Embrionix Design Inc.".to_string(), - ['E', 'M', 'E'] => "EMiNE TECHNOLOGY COMPANY, LTD.".to_string(), - ['E', 'M', 'G'] => "EMG Consultants Inc".to_string(), - ['E', 'M', 'I'] => "Ex Machina Inc".to_string(), - ['E', 'M', 'K'] => "Emcore Corporation".to_string(), - ['E', 'M', 'O'] => "ELMO COMPANY, LIMITED".to_string(), - ['E', 'M', 'R'] => "ICC Intelligent Platforms GmbH".to_string(), - ['E', 'M', 'U'] => "Emulex Corporation".to_string(), - ['E', 'N', 'C'] => "Eizo Nanao Corporation".to_string(), - ['E', 'N', 'D'] => "ENIDAN Technologies Ltd".to_string(), - ['E', 'N', 'E'] => "ENE Technology Inc.".to_string(), - ['E', 'N', 'I'] => "Efficient Networks".to_string(), - ['E', 'N', 'S'] => "Ensoniq Corporation".to_string(), - ['E', 'N', 'T'] => "Enterprise Comm. & Computing Inc".to_string(), - ['E', 'O', 'N'] => "Eon Instrumentation, Inc.".to_string(), - ['E', 'P', 'C'] => "Empac".to_string(), - ['E', 'P', 'H'] => "Epiphan Systems Inc.".to_string(), - ['E', 'P', 'I'] => "Envision Peripherals, Inc".to_string(), - ['E', 'P', 'N'] => "EPiCON Inc.".to_string(), - ['E', 'P', 'S'] => "KEPS".to_string(), - ['E', 'Q', 'P'] => "Equipe Electronics Ltd.".to_string(), - ['E', 'Q', 'X'] => "Equinox Systems Inc".to_string(), - ['E', 'R', 'G'] => "Ergo System".to_string(), - ['E', 'R', 'I'] => "Ericsson Mobile Communications AB".to_string(), - ['E', 'R', 'N'] => "Ericsson, Inc.".to_string(), - ['E', 'R', 'P'] => "Euraplan GmbH".to_string(), - ['E', 'R', 'S'] => "Eizo Rugged Solutions".to_string(), - ['E', 'R', 'T'] => "Escort Insturments Corporation".to_string(), - ['E', 'S', 'A'] => "Elbit Systems of America".to_string(), - ['E', 'S', 'B'] => "ScioTeq".to_string(), - ['E', 'S', 'C'] => "Eden Sistemas de Computacao S/A".to_string(), - ['E', 'S', 'D'] => "Ensemble Designs, Inc".to_string(), - ['E', 'S', 'G'] => "ELCON Systemtechnik GmbH".to_string(), - ['E', 'S', 'I'] => "Extended Systems, Inc.".to_string(), - ['E', 'S', 'K'] => "ES&S".to_string(), - ['E', 'S', 'L'] => "Esterline Technologies".to_string(), - ['E', 'S', 'N'] => "eSATURNUS".to_string(), - ['E', 'S', 'S'] => "ESS Technology Inc".to_string(), - ['E', 'S', 'T'] => "Embedded Solution Technology".to_string(), - ['E', 'S', 'Y'] => "E-Systems Inc".to_string(), - ['E', 'T', 'C'] => "Everton Technology Company Ltd".to_string(), - ['E', 'T', 'D'] => "ELAN MICROELECTRONICS CORPORATION".to_string(), - ['E', 'T', 'G'] => "Eizo Technologies GmbH".to_string(), - ['E', 'T', 'H'] => "Etherboot Project".to_string(), - ['E', 'T', 'I'] => "Eclipse Tech Inc".to_string(), - ['E', 'T', 'K'] => "eTEK Labs Inc.".to_string(), - ['E', 'T', 'L'] => "Evertz Microsystems Ltd.".to_string(), - ['E', 'T', 'S'] => "Electronic Trade Solutions Ltd".to_string(), - ['E', 'T', 'T'] => "E-Tech Inc".to_string(), - ['E', 'U', 'T'] => "Ericsson Mobile Networks B.V.".to_string(), - ['E', 'V', 'E'] => "Advanced Micro Peripherals Ltd".to_string(), - ['E', 'V', 'I'] => "eviateg GmbH".to_string(), - ['E', 'V', 'P'] => "EverPro Technologies Company Limited".to_string(), - ['E', 'V', 'X'] => "Everex".to_string(), - ['E', 'X', 'A'] => "Exabyte".to_string(), - ['E', 'X', 'C'] => "Excession Audio".to_string(), - ['E', 'X', 'I'] => "Exide Electronics".to_string(), - ['E', 'X', 'N'] => "RGB Systems, Inc. dba Extron Electronics".to_string(), - ['E', 'X', 'P'] => "Data Export Corporation".to_string(), - ['E', 'X', 'R'] => "Explorer Inc.".to_string(), - ['E', 'X', 'T'] => "Exatech Computadores & Servicos Ltda".to_string(), - ['E', 'X', 'X'] => "Exxact GmbH".to_string(), - ['E', 'X', 'Y'] => "Exterity Ltd".to_string(), - ['E', 'Y', 'E'] => "eyevis GmbH".to_string(), - ['E', 'Y', 'F'] => "eyefactive Gmbh".to_string(), - ['E', 'Z', 'E'] => "EzE Technologies".to_string(), - ['E', 'Z', 'P'] => "Storm Technology".to_string(), - ['F', 'A', 'N'] => "Fantalooks Co., Ltd.".to_string(), - ['F', 'A', 'R'] => "Farallon Computing".to_string(), - ['F', 'B', 'I'] => "Interface Corporation".to_string(), - ['F', 'C', 'B'] => "Furukawa Electric Company Ltd".to_string(), - ['F', 'C', 'G'] => "First International Computer Ltd".to_string(), - ['F', 'C', 'S'] => "Focus Enhancements, Inc.".to_string(), - ['F', 'D', 'C'] => "Future Domain".to_string(), - ['F', 'D', 'D'] => "Forth Dimension Displays Ltd".to_string(), - ['F', 'D', 'I'] => "Future Designs, Inc.".to_string(), - ['F', 'D', 'T'] => "Fujitsu Display Technologies Corp.".to_string(), - ['F', 'D', 'X'] => "Findex, Inc.".to_string(), - ['F', 'E', 'C'] => "FURUNO ELECTRIC CO., LTD.".to_string(), - ['F', 'E', 'L'] => "Fellowes & Questec".to_string(), - ['F', 'E', 'N'] => "Fen Systems Ltd.".to_string(), - ['F', 'E', 'R'] => "Ferranti Int'L".to_string(), - ['F', 'F', 'C'] => "FUJIFILM Corporation".to_string(), - ['F', 'F', 'I'] => "Fairfield Industries".to_string(), - ['F', 'G', 'D'] => "Lisa Draexlmaier GmbH".to_string(), - ['F', 'G', 'L'] => "Fujitsu General Limited.".to_string(), - ['F', 'H', 'L'] => "FHLP".to_string(), - ['F', 'I', 'C'] => "Formosa Industrial Computing Inc".to_string(), - ['F', 'I', 'L'] => "Forefront Int'l Ltd".to_string(), - ['F', 'I', 'N'] => "Finecom Co., Ltd.".to_string(), - ['F', 'I', 'R'] => "Chaplet Systems Inc".to_string(), - ['F', 'I', 'S'] => "FLY-IT Simulators".to_string(), - ['F', 'I', 'T'] => "Feature Integration Technology Inc.".to_string(), - ['F', 'J', 'C'] => "FCL COMPONENTS LIMITED".to_string(), - ['F', 'J', 'S'] => "Fujitsu Spain".to_string(), - ['F', 'J', 'T'] => "F.J. Tieman BV".to_string(), - ['F', 'L', 'E'] => "ADTI Media, Inc".to_string(), - ['F', 'L', 'I'] => "Faroudja Laboratories".to_string(), - ['F', 'L', 'Y'] => "Butterfly Communications".to_string(), - ['F', 'M', 'A'] => "Fast Multimedia AG".to_string(), - ['F', 'M', 'C'] => "Ford Microelectronics Inc".to_string(), - ['F', 'M', 'I'] => "Fellowes, Inc.".to_string(), - ['F', 'M', 'L'] => "Fujitsu Microelect Ltd".to_string(), - ['F', 'M', 'Z'] => "Formoza-Altair".to_string(), - ['F', 'N', 'C'] => "Fanuc LTD".to_string(), - ['F', 'N', 'I'] => "Funai Electric Co., Ltd.".to_string(), - ['F', 'O', 'A'] => "FOR-A Company Limited".to_string(), - ['F', 'O', 'K'] => "Fokus Technologies GmbH".to_string(), - ['F', 'O', 'S'] => "Foss Tecator".to_string(), - ['F', 'O', 'V'] => "FOVE INC".to_string(), - ['F', 'O', 'X'] => "HON HAI PRECISION IND.CO.,LTD.".to_string(), - ['F', 'P', 'C'] => "Fingerprint Cards AB".to_string(), - ['F', 'P', 'E'] => "Fujitsu Peripherals Ltd".to_string(), - ['F', 'P', 'S'] => "Deltec Corporation".to_string(), - ['F', 'P', 'X'] => "Cirel Systemes".to_string(), - ['F', 'R', 'C'] => "Force Computers".to_string(), - ['F', 'R', 'D'] => "Freedom Scientific BLV".to_string(), - ['F', 'R', 'E'] => "Forvus Research Inc".to_string(), - ['F', 'R', 'I'] => "Fibernet Research Inc".to_string(), - ['F', 'R', 'O'] => "FARO Technologies".to_string(), - ['F', 'R', 'S'] => "South Mountain Technologies, LTD".to_string(), - ['F', 'S', 'C'] => "Future Systems Consulting KK".to_string(), - ['F', 'S', 'I'] => "Fore Systems Inc".to_string(), - ['F', 'S', 'T'] => "Modesto PC Inc".to_string(), - ['F', 'T', 'C'] => "Futuretouch Corporation".to_string(), - ['F', 'T', 'E'] => "Frontline Test Equipment Inc.".to_string(), - ['F', 'T', 'G'] => "FTG Data Systems".to_string(), - ['F', 'T', 'I'] => "FastPoint Technologies, Inc.".to_string(), - ['F', 'T', 'L'] => "FUJITSU TEN LIMITED".to_string(), - ['F', 'T', 'N'] => "Fountain Technologies Inc".to_string(), - ['F', 'T', 'R'] => "Mediasonic".to_string(), - ['F', 'T', 'S'] => "FocalTech Systems Co., Ltd.".to_string(), - ['F', 'T', 'W'] => "MindTribe Product Engineering, Inc.".to_string(), - ['F', 'U', 'J'] => "Fujitsu Ltd".to_string(), - ['F', 'U', 'L'] => "Fun Technology Innovation INC.".to_string(), - ['F', 'U', 'N'] => "sisel muhendislik".to_string(), - ['F', 'U', 'S'] => "Fujitsu Siemens Computers GmbH".to_string(), - ['F', 'V', 'C'] => "First Virtual Corporation".to_string(), - ['F', 'V', 'X'] => "C-C-C Group Plc".to_string(), - ['F', 'W', 'A'] => "Attero Tech, LLC".to_string(), - ['F', 'W', 'R'] => "Flat Connections Inc".to_string(), - ['F', 'X', 'X'] => "Fuji Xerox".to_string(), - ['F', 'Z', 'C'] => "Founder Group Shenzhen Co.".to_string(), - ['F', 'Z', 'I'] => "FZI Forschungszentrum Informatik".to_string(), - ['G', 'A', 'C'] => "GreenArrays, Inc.".to_string(), - ['G', 'A', 'G'] => "Gage Applied Sciences Inc".to_string(), - ['G', 'A', 'L'] => "Galil Motion Control".to_string(), - ['G', 'A', 'U'] => "Gaudi Co., Ltd.".to_string(), - ['G', 'B', 'T'] => "GIGA-BYTE TECHNOLOGY CO., LTD.".to_string(), - ['G', 'C', 'C'] => "GCC Technologies Inc".to_string(), - ['G', 'C', 'I'] => "Gateway Comm. Inc".to_string(), - ['G', 'C', 'S'] => "Grey Cell Systems Ltd".to_string(), - ['G', 'D', 'C'] => "General Datacom".to_string(), - ['G', 'D', 'I'] => "G. Diehl ISDN GmbH".to_string(), - ['G', 'D', 'S'] => "GDS".to_string(), - ['G', 'D', 'T'] => "Vortex Computersysteme GmbH".to_string(), - ['G', 'E', 'C'] => "Gechic Corporation".to_string(), - ['G', 'E', 'D'] => "General Dynamics C4 Systems".to_string(), - ['G', 'E', 'F'] => "GE Fanuc Embedded Systems".to_string(), - ['G', 'E', 'H'] => "Abaco Systems, Inc.".to_string(), - ['G', 'E', 'M'] => "Gem Plus".to_string(), - ['G', 'E', 'N'] => "Genesys ATE Inc".to_string(), - ['G', 'E', 'O'] => "GEO Sense".to_string(), - ['G', 'E', 'R'] => "GERMANEERS GmbH".to_string(), - ['G', 'E', 'S'] => "GES Singapore Pte Ltd".to_string(), - ['G', 'E', 'T'] => "Getac Technology Corporation".to_string(), - ['G', 'F', 'M'] => "GFMesstechnik GmbH".to_string(), - ['G', 'F', 'N'] => "Gefen Inc.".to_string(), - ['G', 'G', 'L'] => "Google Inc.".to_string(), - ['G', 'G', 'T'] => "G2TOUCH KOREA".to_string(), - ['G', 'I', 'C'] => "General Inst. Corporation".to_string(), - ['G', 'I', 'M'] => "Guillemont International".to_string(), - ['G', 'I', 'P'] => "GI Provision Ltd".to_string(), - ['G', 'I', 'S'] => "AT&T Global Info Solutions".to_string(), - ['G', 'J', 'N'] => "Grand Junction Networks".to_string(), - ['G', 'L', 'D'] => "Goldmund - Digital Audio SA".to_string(), - ['G', 'L', 'E'] => "AD electronics".to_string(), - ['G', 'L', 'M'] => "Genesys Logic".to_string(), - ['G', 'L', 'S'] => "Gadget Labs LLC".to_string(), - ['G', 'M', 'K'] => "GMK Electronic Design GmbH".to_string(), - ['G', 'M', 'L'] => "General Information Systems".to_string(), - ['G', 'M', 'M'] => "GMM Research Inc".to_string(), - ['G', 'M', 'N'] => "GEMINI 2000 Ltd".to_string(), - ['G', 'M', 'X'] => "GMX Inc".to_string(), - ['G', 'N', 'D'] => "Gennum Corporation".to_string(), - ['G', 'N', 'N'] => "GN Nettest Inc".to_string(), - ['G', 'N', 'Z'] => "Gunze Ltd".to_string(), - ['G', 'O', 'E'] => "GOEPEL electronic GmbH".to_string(), - ['G', 'P', 'R'] => "GoPro, Inc.".to_string(), - ['G', 'R', 'A'] => "Graphica Computer".to_string(), - ['G', 'R', 'E'] => "GOLD RAIN ENTERPRISES CORP.".to_string(), - ['G', 'R', 'H'] => "Granch Ltd".to_string(), - ['G', 'R', 'M'] => "Garmin International".to_string(), - ['G', 'R', 'V'] => "Advanced Gravis".to_string(), - ['G', 'R', 'Y'] => "Robert Gray Company".to_string(), - ['G', 'S', 'B'] => "NIPPONDENCHI CO,.LTD".to_string(), - ['G', 'S', 'C'] => "General Standards Corporation".to_string(), - ['G', 'S', 'M'] => "LG Electronics".to_string(), - ['G', 'S', 'N'] => "Grandstream Networks, Inc.".to_string(), - ['G', 'S', 'T'] => "Graphic SystemTechnology".to_string(), - ['G', 'S', 'Y'] => "Grossenbacher Systeme AG".to_string(), - ['G', 'T', 'C'] => "Graphtec Corporation".to_string(), - ['G', 'T', 'I'] => "Goldtouch".to_string(), - ['G', 'T', 'K'] => "G-Tech Corporation".to_string(), - ['G', 'T', 'M'] => "Garnet System Company Ltd".to_string(), - ['G', 'T', 'S'] => "Geotest Marvin Test Systems Inc".to_string(), - ['G', 'T', 'T'] => "General Touch Technology Co., Ltd.".to_string(), - ['G', 'U', 'D'] => "Guntermann & Drunck GmbH".to_string(), - ['G', 'U', 'P'] => "GoUp Co.,Ltd".to_string(), - ['G', 'U', 'Z'] => "Guzik Technical Enterprises".to_string(), - ['G', 'V', 'C'] => "GVC Corporation".to_string(), - ['G', 'V', 'L'] => "Global Village Communication".to_string(), - ['G', 'V', 'S'] => "G.VISION".to_string(), - ['G', 'W', 'I'] => "GW Instruments".to_string(), - ['G', 'W', 'K'] => "Gateworks Corporation".to_string(), - ['G', 'W', 'Y'] => "Gateway 2000".to_string(), - ['G', 'X', 'L'] => "Galaxy Microsystems Ltd.".to_string(), - ['G', 'Z', 'E'] => "GUNZE Limited".to_string(), - ['H', 'A', 'E'] => "Haider electronics".to_string(), - ['H', 'A', 'I'] => "Haivision Systems Inc.".to_string(), - ['H', 'A', 'L'] => "Halberthal".to_string(), - ['H', 'A', 'N'] => "Hanchang System Corporation".to_string(), - ['H', 'A', 'R'] => "Harris Corporation".to_string(), - ['H', 'A', 'Y'] => "Hayes Microcomputer Products Inc".to_string(), - ['H', 'C', 'A'] => "DAT".to_string(), - ['H', 'C', 'E'] => "Hitachi Consumer Electronics Co., Ltd".to_string(), - ['H', 'C', 'L'] => "HCL America Inc".to_string(), - ['H', 'C', 'M'] => "HCL Peripherals".to_string(), - ['H', 'C', 'P'] => "Hitachi Computer Products Inc".to_string(), - ['H', 'C', 'W'] => "Hauppauge Computer Works Inc".to_string(), - ['H', 'D', 'C'] => "HardCom Elektronik & Datateknik".to_string(), - ['H', 'D', 'I'] => "HD-INFO d.o.o.".to_string(), - ['H', 'D', 'V'] => "Holografika kft.".to_string(), - ['H', 'E', 'C'] => "Hisense Electric Co., Ltd.".to_string(), - ['H', 'E', 'L'] => "Hitachi Micro Systems Europe Ltd".to_string(), - ['H', 'E', 'R'] => "Ascom Business Systems".to_string(), - ['H', 'E', 'T'] => "HETEC Datensysteme GmbH".to_string(), - ['H', 'H', 'C'] => "HIRAKAWA HEWTECH CORP.".to_string(), - ['H', 'H', 'I'] => "Fraunhofer Heinrich-Hertz-Institute".to_string(), - ['H', 'H', 'T'] => "Hitevision Group".to_string(), - ['H', 'I', 'B'] => "Hibino Corporation".to_string(), - ['H', 'I', 'C'] => "Hitachi Information Technology Co., Ltd.".to_string(), - ['H', 'I', 'I'] => "Harman International Industries, Inc".to_string(), - ['H', 'I', 'K'] => "Hikom Co., Ltd.".to_string(), - ['H', 'I', 'L'] => "Hilevel Technology".to_string(), - ['H', 'I', 'Q'] => "Kaohsiung Opto Electronics Americas, Inc.".to_string(), - ['H', 'I', 'S'] => "Hope Industrial Systems, Inc.".to_string(), - ['H', 'I', 'T'] => "Hitachi America Ltd".to_string(), - ['H', 'J', 'I'] => "Harris & Jeffries Inc".to_string(), - ['H', 'K', 'A'] => "HONKO MFG. CO., LTD.".to_string(), - ['H', 'K', 'C'] => "HKC OVERSEAS LIMITED".to_string(), - ['H', 'K', 'G'] => "Josef Heim KG".to_string(), - ['H', 'L', 'G'] => "China Hualu Group Co., Ltd.".to_string(), - ['H', 'M', 'C'] => "Hualon Microelectric Corporation".to_string(), - ['H', 'M', 'K'] => "hmk Daten-System-Technik BmbH".to_string(), - ['H', 'M', 'X'] => "HUMAX Co., Ltd.".to_string(), - ['H', 'N', 'M'] => "HONOR Device Co., Ltd.".to_string(), - ['H', 'N', 'S'] => "Hughes Network Systems".to_string(), - ['H', 'O', 'B'] => "HOB Electronic GmbH".to_string(), - ['H', 'O', 'E'] => "Hosiden Corporation".to_string(), - ['H', 'O', 'L'] => "Holoeye Photonics AG".to_string(), - ['H', 'O', 'N'] => "Sonitronix".to_string(), - ['H', 'P', 'A'] => "Zytor Communications".to_string(), - ['H', 'P', 'C'] => "Hewlett-Packard Co.".to_string(), - ['H', 'P', 'D'] => "Hewlett Packard".to_string(), - ['H', 'P', 'E'] => "Hewlett Packard Enterprise".to_string(), - ['H', 'P', 'I'] => "Headplay, Inc.".to_string(), - ['H', 'P', 'K'] => "HAMAMATSU PHOTONICS K.K.".to_string(), - ['H', 'P', 'N'] => "HP Inc.".to_string(), - ['H', 'P', 'Q'] => "Hewlett-Packard Co.".to_string(), - ['H', 'P', 'R'] => "H.P.R. Electronics GmbH".to_string(), - ['H', 'R', 'C'] => "Hercules".to_string(), - ['H', 'R', 'E'] => "Qingdao Haier Electronics Co., Ltd.".to_string(), - ['H', 'R', 'I'] => "Hall Research".to_string(), - ['H', 'R', 'L'] => "Herolab GmbH".to_string(), - ['H', 'R', 'S'] => "Harris Semiconductor".to_string(), - ['H', 'R', 'T'] => "HERCULES".to_string(), - ['H', 'S', 'C'] => "Hagiwara Sys-Com Company Ltd".to_string(), - ['H', 'S', 'D'] => "HannStar Display Corp".to_string(), - ['H', 'S', 'M'] => "AT&T Microelectronics".to_string(), - ['H', 'S', 'N'] => "Hansung Co., Ltd".to_string(), - ['H', 'S', 'P'] => "HannStar Display Corp".to_string(), - ['H', 'S', 'T'] => "Horsent Technology Co., Ltd.".to_string(), - ['H', 'T', 'C'] => "Hitachi Ltd".to_string(), - ['H', 'T', 'I'] => "Hampshire Company, Inc.".to_string(), - ['H', 'T', 'K'] => "Holtek Microelectronics Inc".to_string(), - ['H', 'T', 'L'] => "HTBLuVA Mödling".to_string(), - ['H', 'T', 'R'] => "Shenzhen ZhuoYi HengTong Computer Technology Limited".to_string(), - ['H', 'T', 'X'] => "Hitex Systementwicklung GmbH".to_string(), - ['H', 'U', 'B'] => "GAI-Tronics, A Hubbell Company".to_string(), - ['H', 'U', 'K'] => "Hoffmann + Krippner GmbH".to_string(), - ['H', 'U', 'M'] => "IMP Electronics Ltd.".to_string(), - ['H', 'V', 'R'] => "HTC Corportation".to_string(), - ['H', 'W', 'A'] => "Harris Canada Inc".to_string(), - ['H', 'W', 'C'] => "DBA Hans Wedemeyer".to_string(), - ['H', 'W', 'D'] => "Highwater Designs Ltd".to_string(), - ['H', 'W', 'P'] => "Hewlett Packard".to_string(), - ['H', 'W', 'V'] => "Huawei Technologies Co., Inc.".to_string(), - ['H', 'X', 'M'] => "Hexium Ltd.".to_string(), - ['H', 'Y', 'C'] => "Hypercope Gmbh Aachen".to_string(), - ['H', 'Y', 'D'] => "Hydis Technologies.Co.,LTD".to_string(), - ['H', 'Y', 'L'] => "Shanghai Chai Ming Huang Info&Tech Co, Ltd".to_string(), - ['H', 'Y', 'O'] => "HYC CO., LTD.".to_string(), - ['H', 'Y', 'P'] => "Hyphen Ltd".to_string(), - ['H', 'Y', 'R'] => "Hypertec Pty Ltd".to_string(), - ['H', 'Y', 'T'] => "Heng Yu Technology (HK) Limited".to_string(), - ['H', 'Y', 'V'] => "Hynix Semiconductor".to_string(), - ['I', 'A', 'D'] => "IAdea Corporation".to_string(), - ['I', 'A', 'F'] => "Institut f r angewandte Funksystemtechnik GmbH".to_string(), - ['I', 'A', 'I'] => "Integration Associates, Inc.".to_string(), - ['I', 'A', 'T'] => "IAT Germany GmbH".to_string(), - ['I', 'B', 'C'] => "Integrated Business Systems".to_string(), - ['I', 'B', 'I'] => "INBINE.CO.LTD".to_string(), - ['I', 'B', 'M'] => "IBM Brasil".to_string(), - ['I', 'B', 'P'] => "IBP Instruments GmbH".to_string(), - ['I', 'B', 'R'] => "IBR GmbH".to_string(), - ['I', 'C', 'A'] => "ICA Inc".to_string(), - ['I', 'C', 'C'] => "BICC Data Networks Ltd".to_string(), - ['I', 'C', 'D'] => "ICD Inc".to_string(), - ['I', 'C', 'E'] => "IC Ensemble".to_string(), - ['I', 'C', 'I'] => "Infotek Communication Inc".to_string(), - ['I', 'C', 'M'] => "Intracom SA".to_string(), - ['I', 'C', 'N'] => "Sanyo Icon".to_string(), - ['I', 'C', 'O'] => "Intel Corp".to_string(), - ['I', 'C', 'P'] => "ICP Electronics, Inc./iEi Technology Corp.".to_string(), - ['I', 'C', 'R'] => "Icron".to_string(), - ['I', 'C', 'S'] => "Integrated Circuit Systems".to_string(), - ['I', 'C', 'V'] => "Inside Contactless".to_string(), - ['I', 'C', 'X'] => "ICCC A/S".to_string(), - ['I', 'D', 'C'] => "International Datacasting Corporation".to_string(), - ['I', 'D', 'E'] => "IDE Associates".to_string(), - ['I', 'D', 'K'] => "IDK Corporation".to_string(), - ['I', 'D', 'N'] => "Idneo Technologies".to_string(), - ['I', 'D', 'O'] => "IDEO Product Development".to_string(), - ['I', 'D', 'P'] => "Integrated Device Technology, Inc.".to_string(), - ['I', 'D', 'S'] => "Interdigital Sistemas de Informacao".to_string(), - ['I', 'D', 'T'] => "International Display Technology".to_string(), - ['I', 'D', 'X'] => "IDEXX Labs".to_string(), - ['I', 'E', 'C'] => "Interlace Engineering Corporation".to_string(), - ['I', 'E', 'E'] => "IEE".to_string(), - ['I', 'E', 'I'] => "Interlink Electronics".to_string(), - ['I', 'F', 'S'] => "In Focus Systems Inc".to_string(), - ['I', 'F', 'T'] => "Informtech".to_string(), - ['I', 'F', 'X'] => "Infineon Technologies AG".to_string(), - ['I', 'F', 'Z'] => "Infinite Z".to_string(), - ['I', 'G', 'C'] => "Intergate Pty Ltd".to_string(), - ['I', 'G', 'M'] => "IGM Communi".to_string(), - ['I', 'H', 'E'] => "InHand Electronics".to_string(), - ['I', 'I', 'C'] => "ISIC Innoscan Industrial Computers A/S".to_string(), - ['I', 'I', 'I'] => "Intelligent Instrumentation".to_string(), - ['I', 'I', 'N'] => "IINFRA Co., Ltd".to_string(), - ['I', 'I', 'T'] => "Informatik Information Technologies".to_string(), - ['I', 'K', 'E'] => "Ikegami Tsushinki Co. Ltd.".to_string(), - ['I', 'K', 'S'] => "Ikos Systems Inc".to_string(), - ['I', 'L', 'C'] => "Image Logic Corporation".to_string(), - ['I', 'L', 'S'] => "Innotech Corporation".to_string(), - ['I', 'M', 'A'] => "Imagraph".to_string(), - ['I', 'M', 'B'] => "ART s.r.l.".to_string(), - ['I', 'M', 'C'] => "IMC Networks".to_string(), - ['I', 'M', 'D'] => "ImasDe Canarias S.A.".to_string(), - ['I', 'M', 'E'] => "Imagraph".to_string(), - ['I', 'M', 'F'] => "Immersive Audio Technologies France".to_string(), - ['I', 'M', 'G'] => "IMAGENICS Co., Ltd.".to_string(), - ['I', 'M', 'I'] => "International Microsystems Inc".to_string(), - ['I', 'M', 'M'] => "Immersion Corporation".to_string(), - ['I', 'M', 'N'] => "Impossible Production".to_string(), - ['I', 'M', 'P'] => "Impinj".to_string(), - ['I', 'M', 'T'] => "Inmax Technology Corporation".to_string(), - ['I', 'M', 'X'] => "arpara Technology Co., Ltd.".to_string(), - ['I', 'N', 'A'] => "Inventec Corporation".to_string(), - ['I', 'N', 'C'] => "Home Row Inc".to_string(), - ['I', 'N', 'D'] => "ILC".to_string(), - ['I', 'N', 'E'] => "Inventec Electronics (M) Sdn. Bhd.".to_string(), - ['I', 'N', 'F'] => "Inframetrics Inc".to_string(), - ['I', 'N', 'G'] => "Integraph Corporation".to_string(), - ['I', 'N', 'I'] => "Initio Corporation".to_string(), - ['I', 'N', 'K'] => "Indtek Co., Ltd.".to_string(), - ['I', 'N', 'L'] => "InnoLux Display Corporation".to_string(), - ['I', 'N', 'M'] => "InnoMedia Inc".to_string(), - ['I', 'N', 'N'] => "Innovent Systems, Inc.".to_string(), - ['I', 'N', 'O'] => "Innolab Pte Ltd".to_string(), - ['I', 'N', 'P'] => "Interphase Corporation".to_string(), - ['I', 'N', 'S'] => "Ines GmbH".to_string(), - ['I', 'N', 'T'] => "Interphase Corporation".to_string(), - ['i', 'n', 'u'] => "Inovatec S.p.A.".to_string(), - ['I', 'N', 'V'] => "Inviso, Inc.".to_string(), - ['I', 'N', 'X'] => "Communications Supply Corporation (A division of WESCO)".to_string(), - ['I', 'N', 'Z'] => "Best Buy".to_string(), - ['I', 'O', 'A'] => "CRE Technology Corporation".to_string(), - ['I', 'O', 'C'] => "Guangxi Century Innovation Display Electronics Co., Ltd".to_string(), - ['I', 'O', 'D'] => "I-O Data Device Inc".to_string(), - ['I', 'O', 'M'] => "Iomega".to_string(), - ['I', 'O', 'N'] => "Inside Out Networks".to_string(), - ['I', 'O', 'S'] => "i-O Display System".to_string(), - ['I', 'O', 'T'] => "I/OTech Inc".to_string(), - ['I', 'P', 'C'] => "IPC Corporation".to_string(), - ['I', 'P', 'D'] => "Industrial Products Design, Inc.".to_string(), - ['I', 'P', 'I'] => { - "Intelligent Platform Management Interface (IPMI) forum (Intel, HP, NEC, Dell)" - .to_string() - } - ['I', 'P', 'M'] => "IPM Industria Politecnica Meridionale SpA".to_string(), - ['I', 'P', 'N'] => "Performance Technologies".to_string(), - ['I', 'P', 'P'] => "IP Power Technologies GmbH".to_string(), - ['I', 'P', 'Q'] => "IP3 Technology Ltd.".to_string(), - ['I', 'P', 'R'] => "Ithaca Peripherals".to_string(), - ['I', 'P', 'S'] => "IPS, Inc. (Intellectual Property Solutions, Inc.)".to_string(), - ['I', 'P', 'T'] => "International Power Technologies".to_string(), - ['I', 'P', 'W'] => "IPWireless, Inc".to_string(), - ['I', 'Q', 'I'] => "IneoQuest Technologies, Inc".to_string(), - ['I', 'Q', 'T'] => "IMAGEQUEST Co., Ltd".to_string(), - ['I', 'R', 'D'] => "Irdata".to_string(), - ['I', 'S', 'A'] => "Symbol Technologies".to_string(), - ['I', 'S', 'C'] => "Id3 Semiconductors".to_string(), - ['I', 'S', 'G'] => "Insignia Solutions Inc".to_string(), - ['I', 'S', 'I'] => "Interface Solutions".to_string(), - ['I', 'S', 'L'] => "Isolation Systems".to_string(), - ['I', 'S', 'M'] => "Image Stream Medical".to_string(), - ['I', 'S', 'P'] => "IntreSource Systems Pte Ltd".to_string(), - ['I', 'S', 'R'] => "INSIS Co., LTD.".to_string(), - ['I', 'S', 'S'] => "ISS Inc".to_string(), - ['I', 'S', 'T'] => "Intersolve Technologies".to_string(), - ['I', 'S', 'Y'] => "International Integrated Systems,Inc.(IISI)".to_string(), - ['I', 'T', 'A'] => "Itausa Export North America".to_string(), - ['I', 'T', 'C'] => "Intercom Inc".to_string(), - ['I', 'T', 'D'] => "Internet Technology Corporation".to_string(), - ['I', 'T', 'E'] => "Integrated Tech Express Inc".to_string(), - ['I', 'T', 'I'] => "VanErum Group".to_string(), - ['I', 'T', 'K'] => "ITK Telekommunikation AG".to_string(), - ['I', 'T', 'L'] => "Inter-Tel".to_string(), - ['I', 'T', 'M'] => "ITM inc.".to_string(), - ['I', 'T', 'N'] => "The NTI Group".to_string(), - ['I', 'T', 'P'] => "IT-PRO Consulting und Systemhaus GmbH".to_string(), - ['I', 'T', 'R'] => "Infotronic America, Inc.".to_string(), - ['I', 'T', 'S'] => "IDTECH".to_string(), - ['I', 'T', 'T'] => "I&T Telecom.".to_string(), - ['I', 'T', 'X'] => "integrated Technology Express Inc".to_string(), - ['I', 'U', 'C'] => "ICSL".to_string(), - ['I', 'V', 'I'] => "Intervoice Inc".to_string(), - ['I', 'V', 'M'] => "Iiyama North America".to_string(), - ['I', 'V', 'O'] => "InfoVision Optoelectronics (Kunshan) Co.,Ltd China".to_string(), - ['I', 'V', 'R'] => "Inlife-Handnet Co., Ltd.".to_string(), - ['I', 'V', 'S'] => "Intevac Photonics Inc.".to_string(), - ['I', 'W', 'R'] => "Icuiti Corporation".to_string(), - ['I', 'W', 'X'] => "Intelliworxx, Inc.".to_string(), - ['I', 'X', 'D'] => "Intertex Data AB".to_string(), - ['I', 'X', 'N'] => "Shenzhen Inet Mobile Internet Technology Co., LTD".to_string(), - ['J', 'A', 'C'] => "Astec Inc".to_string(), - ['J', 'A', 'E'] => "Japan Aviation Electronics Industry, Limited".to_string(), - ['J', 'A', 'S'] => "Janz Automationssysteme AG".to_string(), - ['J', 'A', 'T'] => "Jaton Corporation".to_string(), - ['J', 'A', 'Z'] => "Carrera Computer Inc".to_string(), - ['J', 'C', 'E'] => "Jace Tech Inc".to_string(), - ['J', 'D', 'I'] => "Japan Display Inc.".to_string(), - ['J', 'D', 'L'] => "Japan Digital Laboratory Co.,Ltd.".to_string(), - ['J', 'E', 'M'] => "Japan E.M.Solutions Co., Ltd.".to_string(), - ['J', 'E', 'N'] => "N-Vision".to_string(), - ['J', 'E', 'T'] => "JET POWER TECHNOLOGY CO., LTD.".to_string(), - ['J', 'F', 'X'] => "Jones Futurex Inc".to_string(), - ['J', 'G', 'D'] => "University College".to_string(), - ['J', 'I', 'C'] => "Jaeik Information & Communication Co., Ltd.".to_string(), - ['J', 'K', 'C'] => "JVC KENWOOD Corporation".to_string(), - ['J', 'L', 'K'] => "UNIONMAN TECHNOLOGY CO., LTD".to_string(), - ['J', 'M', 'T'] => "Micro Technical Company Ltd".to_string(), - ['J', 'P', 'C'] => "JPC Technology Limited".to_string(), - ['J', 'P', 'W'] => "Wallis Hamilton Industries".to_string(), - ['J', 'Q', 'E'] => "CNet Technical Inc".to_string(), - ['J', 'S', 'D'] => "JS DigiTech, Inc".to_string(), - ['J', 'S', 'I'] => "Jupiter Systems, Inc.".to_string(), - ['J', 'S', 'K'] => "SANKEN ELECTRIC CO., LTD".to_string(), - ['J', 'T', 'S'] => "JS Motorsports".to_string(), - ['J', 'T', 'Y'] => "jetway security micro,inc".to_string(), - ['J', 'U', 'K'] => "Janich & Klass Computertechnik GmbH".to_string(), - ['J', 'U', 'P'] => "Jupiter Systems".to_string(), - ['J', 'V', 'C'] => "JVC".to_string(), - ['J', 'W', 'D'] => "Video International Inc.".to_string(), - ['J', 'W', 'L'] => "Jewell Instruments, LLC".to_string(), - ['J', 'W', 'S'] => "JWSpencer & Co.".to_string(), - ['J', 'W', 'Y'] => "Jetway Information Co., Ltd".to_string(), - ['K', 'A', 'R'] => "Karna".to_string(), - ['K', 'B', 'I'] => "Kidboard Inc".to_string(), - ['K', 'B', 'L'] => "Kobil Systems GmbH".to_string(), - ['K', 'C', 'D'] => "Chunichi Denshi Co.,LTD.".to_string(), - ['K', 'C', 'L'] => "Keycorp Ltd".to_string(), - ['K', 'D', 'E'] => "KDE".to_string(), - ['K', 'D', 'K'] => "Kodiak Tech".to_string(), - ['K', 'D', 'M'] => "Korea Data Systems Co., Ltd.".to_string(), - ['K', 'D', 'S'] => "KDS USA".to_string(), - ['K', 'D', 'T'] => "KDDI Technology Corporation".to_string(), - ['K', 'E', 'C'] => "Kyushu Electronics Systems Inc".to_string(), - ['K', 'E', 'M'] => "Kontron Embedded Modules GmbH".to_string(), - ['K', 'E', 'S'] => "Kesa Corporation".to_string(), - ['K', 'E', 'U'] => "Kontron Europe GmbH".to_string(), - ['K', 'E', 'Y'] => "Key Tech Inc".to_string(), - ['K', 'F', 'C'] => "SCD Tech".to_string(), - ['K', 'F', 'E'] => "Komatsu Forest".to_string(), - ['K', 'F', 'X'] => "Kofax Image Products".to_string(), - ['K', 'G', 'I'] => "Klipsch Group, Inc".to_string(), - ['K', 'G', 'L'] => "KEISOKU GIKEN Co.,Ltd.".to_string(), - ['K', 'G', 'N'] => "KOGAN AUSTRALIA PTY LTD".to_string(), - ['K', 'I', 'O'] => "Kionix, Inc.".to_string(), - ['K', 'I', 'S'] => "KiSS Technology A/S".to_string(), - ['K', 'L', 'T'] => "Colorlight".to_string(), - ['K', 'M', 'C'] => "Mitsumi Company Ltd".to_string(), - ['K', 'M', 'E'] => "KIMIN Electronics Co., Ltd.".to_string(), - ['K', 'M', 'L'] => "Kensington Microware Ltd".to_string(), - ['K', 'M', 'R'] => "Kramer Electronics Ltd. International".to_string(), - ['K', 'N', 'C'] => "Konica corporation".to_string(), - ['K', 'N', 'X'] => "Nutech Marketing PTL".to_string(), - ['K', 'O', 'B'] => "Kobil Systems GmbH".to_string(), - ['K', 'O', 'D'] => "Eastman Kodak Company".to_string(), - ['K', 'O', 'E'] => "KOLTER ELECTRONIC".to_string(), - ['K', 'O', 'L'] => "Kollmorgen Motion Technologies Group".to_string(), - ['K', 'O', 'M'] => "Kontron GmbH".to_string(), - ['K', 'O', 'P'] => "Kopin Corporation".to_string(), - ['K', 'O', 'U'] => "KOUZIRO Co.,Ltd.".to_string(), - ['K', 'O', 'W'] => "KOWA Company,LTD.".to_string(), - ['K', 'P', 'C'] => "King Phoenix Company".to_string(), - ['K', 'P', 'T'] => "TPK Holding Co., Ltd".to_string(), - ['K', 'R', 'L'] => "Krell Industries Inc.".to_string(), - ['K', 'R', 'M'] => "Kroma Telecom".to_string(), - ['K', 'R', 'Y'] => "Kroy LLC".to_string(), - ['K', 'S', 'C'] => "Kinetic Systems Corporation".to_string(), - ['K', 'S', 'G'] => { - "KUPA China Shenzhen Micro Technology Co., Ltd. Gold Institute".to_string() - } - ['K', 'S', 'L'] => "Karn Solutions Ltd.".to_string(), - ['K', 'S', 'X'] => "King Tester Corporation".to_string(), - ['K', 'T', 'C'] => "Kingston Tech Corporation".to_string(), - ['K', 'T', 'D'] => "Takahata Electronics Co.,Ltd.".to_string(), - ['K', 'T', 'E'] => "K-Tech".to_string(), - ['K', 'T', 'G'] => "Kayser-Threde GmbH".to_string(), - ['K', 'T', 'I'] => "Konica Technical Inc".to_string(), - ['K', 'T', 'K'] => "Key Tronic Corporation".to_string(), - ['K', 'T', 'N'] => "Katron Tech Inc".to_string(), - ['K', 'T', 'S'] => "Kyokko Communication System Co., Ltd.".to_string(), - ['K', 'U', 'R'] => "Kurta Corporation".to_string(), - ['K', 'V', 'A'] => "Kvaser AB".to_string(), - ['K', 'V', 'X'] => "KeyView".to_string(), - ['K', 'W', 'D'] => "Kenwood Corporation".to_string(), - ['K', 'Y', 'C'] => "Kyocera Corporation".to_string(), - ['K', 'Y', 'E'] => "KYE Syst Corporation".to_string(), - ['K', 'Y', 'K'] => "Samsung Electronics America Inc".to_string(), - ['K', 'Y', 'N'] => "KEYENCE CORPORATION".to_string(), - ['K', 'Z', 'I'] => "K-Zone International co. Ltd.".to_string(), - ['K', 'Z', 'N'] => "K-Zone International".to_string(), - ['L', 'A', 'B'] => "ACT Labs Ltd".to_string(), - ['L', 'A', 'C'] => "LaCie".to_string(), - ['L', 'A', 'F'] => "Microline".to_string(), - ['L', 'A', 'G'] => "Laguna Systems".to_string(), - ['L', 'A', 'N'] => "Sodeman Lancom Inc".to_string(), - ['L', 'A', 'S'] => "LASAT Comm. A/S".to_string(), - ['L', 'A', 'V'] => "Lava Computer MFG Inc".to_string(), - ['L', 'B', 'O'] => "Lubosoft".to_string(), - ['L', 'C', 'C'] => "LCI".to_string(), - ['L', 'C', 'D'] => "Toshiba Matsushita Display Technology Co., Ltd".to_string(), - ['L', 'C', 'E'] => "La Commande Electronique".to_string(), - ['L', 'C', 'I'] => "Lite-On Communication Inc".to_string(), - ['L', 'C', 'M'] => "Latitude Comm.".to_string(), - ['L', 'C', 'N'] => "LEXICON".to_string(), - ['L', 'C', 'P'] => "Silent Power Electronics GmbH".to_string(), - ['L', 'C', 'S'] => "Longshine Electronics Company".to_string(), - ['L', 'C', 'T'] => "Labcal Technologies".to_string(), - ['L', 'D', 'N'] => "Laserdyne Technologies".to_string(), - ['L', 'D', 'T'] => "LogiDataTech Electronic GmbH".to_string(), - ['L', 'E', 'C'] => "Lectron Company Ltd".to_string(), - ['L', 'E', 'D'] => "Long Engineering Design Inc".to_string(), - ['L', 'E', 'G'] => "Legerity, Inc".to_string(), - ['L', 'E', 'N'] => "Lenovo Group Limited".to_string(), - ['L', 'E', 'O'] => "First International Computer Inc".to_string(), - ['L', 'E', 'X'] => "Lexical Ltd".to_string(), - ['L', 'G', 'C'] => "Logic Ltd".to_string(), - ['L', 'G', 'D'] => "LG Display".to_string(), - ['L', 'G', 'I'] => "Logitech Inc".to_string(), - ['L', 'G', 'S'] => "LG Semicom Company Ltd".to_string(), - ['L', 'G', 'X'] => "Lasergraphics, Inc.".to_string(), - ['L', 'H', 'A'] => "Lars Haagh ApS".to_string(), - ['L', 'H', 'C'] => "Beihai Century Joint Innovation Technology Co.,Ltd".to_string(), - ['L', 'H', 'E'] => "Lung Hwa Electronics Company Ltd".to_string(), - ['L', 'H', 'T'] => "Lighthouse Technologies Limited".to_string(), - ['L', 'I', 'N'] => "Lenovo Beijing Co. Ltd.".to_string(), - ['L', 'I', 'P'] => "Linked IP GmbH".to_string(), - ['L', 'I', 'S'] => "Life is Style Inc.".to_string(), - ['L', 'I', 'T'] => "Lithics Silicon Technology".to_string(), - ['L', 'J', 'X'] => "Datalogic Corporation".to_string(), - ['L', 'K', 'M'] => "Likom Technology Sdn. Bhd.".to_string(), - ['L', 'L', 'L'] => "L-3 Communications".to_string(), - ['L', 'L', 'T'] => "LUMINO Licht Elektronik GmbH".to_string(), - ['L', 'M', 'G'] => "Lucent Technologies".to_string(), - ['L', 'M', 'I'] => "Lexmark Int'l Inc".to_string(), - ['L', 'M', 'P'] => "Leda Media Products".to_string(), - ['L', 'M', 'S'] => "Lumens Digital Optics Inc.".to_string(), - ['L', 'M', 'T'] => "Laser Master".to_string(), - ['L', 'N', 'C'] => "Lincoln Technology Solutions".to_string(), - ['L', 'N', 'D'] => "Land Computer Company Ltd".to_string(), - ['L', 'N', 'K'] => "Link Tech Inc".to_string(), - ['L', 'N', 'R'] => "Linear Systems Ltd.".to_string(), - ['L', 'N', 'T'] => "LANETCO International".to_string(), - ['L', 'N', 'V'] => "Lenovo".to_string(), - ['L', 'N', 'X'] => "The Linux Foundation".to_string(), - ['L', 'O', 'C'] => "Locamation B.V.".to_string(), - ['L', 'O', 'E'] => "Loewe Opta GmbH".to_string(), - ['L', 'O', 'G'] => "Logicode Technology Inc".to_string(), - ['L', 'O', 'L'] => "Litelogic Operations Ltd".to_string(), - ['L', 'P', 'E'] => "El-PUSK Co., Ltd.".to_string(), - ['L', 'P', 'I'] => "Design Technology".to_string(), - ['L', 'P', 'L'] => "LG Philips".to_string(), - ['L', 'S', 'C'] => "LifeSize Communications".to_string(), - ['L', 'S', 'D'] => "Intersil Corporation".to_string(), - ['L', 'S', 'I'] => "Loughborough Sound Images".to_string(), - ['L', 'S', 'J'] => "LSI Japan Company Ltd".to_string(), - ['L', 'S', 'L'] => "Logical Solutions".to_string(), - ['L', 'S', 'P'] => "Lightspace Technologies".to_string(), - ['L', 'S', 'Y'] => "LSI Systems Inc".to_string(), - ['L', 'T', 'C'] => "Labtec Inc".to_string(), - ['L', 'T', 'I'] => "Jongshine Tech Inc".to_string(), - ['L', 'T', 'K'] => "Lucidity Technology Company Ltd".to_string(), - ['L', 'T', 'N'] => "Litronic Inc".to_string(), - ['L', 'T', 'S'] => "LTS Scale LLC".to_string(), - ['L', 'T', 'V'] => "Leitch Technology International Inc.".to_string(), - ['L', 'T', 'W'] => "Lightware, Inc".to_string(), - ['L', 'U', 'C'] => "Lucent Technologies".to_string(), - ['L', 'U', 'M'] => "Lumagen, Inc.".to_string(), - ['L', 'U', 'X'] => "Luxxell Research Inc".to_string(), - ['L', 'V', 'I'] => "LVI Low Vision International AB".to_string(), - ['L', 'W', 'C'] => "Labway Corporation".to_string(), - ['L', 'W', 'R'] => "Lightware Visual Engineering".to_string(), - ['L', 'W', 'W'] => "Lanier Worldwide".to_string(), - ['L', 'X', 'C'] => "LXCO Technologies AG".to_string(), - ['L', 'X', 'N'] => "Luxeon".to_string(), - ['L', 'X', 'S'] => "ELEA CardWare".to_string(), - ['L', 'Z', 'X'] => "Lightwell Company Ltd".to_string(), - ['M', 'A', 'C'] => "MAC System Company Ltd".to_string(), - ['M', 'A', 'D'] => "Xedia Corporation".to_string(), - ['M', 'A', 'E'] => "Maestro Pty Ltd".to_string(), - ['M', 'A', 'G'] => "MAG InnoVision".to_string(), - ['M', 'A', 'I'] => "Mutoh America Inc".to_string(), - ['M', 'A', 'L'] => "Meridian Audio Ltd".to_string(), - ['M', 'A', 'N'] => "LGIC".to_string(), - ['M', 'A', 'S'] => "Mass Inc.".to_string(), - ['M', 'A', 'T'] => "Panasonic Connect Co.,Ltd.".to_string(), - ['M', 'A', 'X'] => "Rogen Tech Distribution Inc".to_string(), - ['M', 'A', 'Y'] => "Maynard Electronics".to_string(), - ['M', 'A', 'Z'] => "MAZeT GmbH".to_string(), - ['M', 'B', 'C'] => "MBC".to_string(), - ['M', 'B', 'D'] => "Microbus PLC".to_string(), - ['M', 'B', 'M'] => "Marshall Electronics".to_string(), - ['M', 'B', 'V'] => "Moreton Bay".to_string(), - ['M', 'C', 'A'] => "American Nuclear Systems Inc".to_string(), - ['M', 'C', 'C'] => "Micro Industries".to_string(), - ['M', 'C', 'D'] => "McDATA Corporation".to_string(), - ['M', 'C', 'E'] => "Metz-Werke GmbH & Co KG".to_string(), - ['M', 'C', 'G'] => "Motorola Computer Group".to_string(), - ['M', 'C', 'I'] => "Micronics Computers".to_string(), - ['M', 'C', 'J'] => "Medicaroid Corporation".to_string(), - ['M', 'C', 'L'] => "Motorola Communications Israel".to_string(), - ['M', 'C', 'M'] => "Metricom Inc".to_string(), - ['M', 'C', 'N'] => "Micron Electronics Inc".to_string(), - ['M', 'C', 'O'] => "Motion Computing Inc.".to_string(), - ['M', 'C', 'P'] => "Magni Systems Inc".to_string(), - ['M', 'C', 'Q'] => "Mat's Computers".to_string(), - ['M', 'C', 'R'] => "Marina Communicaitons".to_string(), - ['M', 'C', 'S'] => "Micro Computer Systems".to_string(), - ['M', 'C', 'T'] => "Microtec".to_string(), - ['M', 'C', 'X'] => "Millson Custom Solutions Inc.".to_string(), - ['M', 'D', 'A'] => "Media4 Inc".to_string(), - ['M', 'D', 'C'] => "Midori Electronics".to_string(), - ['M', 'D', 'D'] => "MODIS".to_string(), - ['M', 'D', 'F'] => "MILDEF AB".to_string(), - ['M', 'D', 'G'] => "Madge Networks".to_string(), - ['M', 'D', 'I'] => "Micro Design Inc".to_string(), - ['M', 'D', 'K'] => "Mediatek Corporation".to_string(), - ['M', 'D', 'O'] => "Panasonic".to_string(), - ['M', 'D', 'R'] => "Medar Inc".to_string(), - ['M', 'D', 'S'] => "Micro Display Systems Inc".to_string(), - ['M', 'D', 'T'] => "Magus Data Tech".to_string(), - ['M', 'D', 'V'] => "MET Development Inc".to_string(), - ['M', 'D', 'X'] => "MicroDatec GmbH".to_string(), - ['M', 'D', 'Y'] => "Microdyne Inc".to_string(), - ['M', 'E', 'C'] => "Mega System Technologies Inc".to_string(), - ['M', 'E', 'D'] => "Messeltronik Dresden GmbH".to_string(), - ['M', 'E', 'E'] => "Mitsubishi Electric Engineering Co., Ltd.".to_string(), - ['M', 'E', 'G'] => "Abeam Tech Ltd.".to_string(), - ['M', 'E', 'I'] => "Panasonic Industry Company".to_string(), - ['M', 'E', 'J'] => "Mac-Eight Co., LTD.".to_string(), - ['M', 'E', 'K'] => "Mediaedge Corporation".to_string(), - ['M', 'E', 'L'] => "Mitsubishi Electric Corporation".to_string(), - ['M', 'E', 'N'] => "MEN Mikroelectronik Nueruberg GmbH".to_string(), - ['M', 'E', 'P'] => "Meld Technology".to_string(), - ['M', 'E', 'Q'] => "Matelect Ltd.".to_string(), - ['M', 'E', 'T'] => "Metheus Corporation".to_string(), - ['M', 'E', 'U'] => "MPL AG, Elektronik-Unternehmen".to_string(), - ['M', 'E', 'X'] => "MSC Vertriebs GmbH".to_string(), - ['M', 'F', 'G'] => "MicroField Graphics Inc".to_string(), - ['M', 'F', 'I'] => "Micro Firmware".to_string(), - ['M', 'F', 'R'] => "MediaFire Corp.".to_string(), - ['M', 'G', 'A'] => "Mega System Technologies, Inc.".to_string(), - ['M', 'G', 'C'] => "Mentor Graphics Corporation".to_string(), - ['M', 'G', 'E'] => "Schneider Electric S.A.".to_string(), - ['M', 'G', 'L'] => "M-G Technology Ltd".to_string(), - ['M', 'G', 'T'] => "Megatech R & D Company".to_string(), - ['M', 'H', 'Q'] => "Moxa Inc.".to_string(), - ['M', 'I', 'C'] => "Micom Communications Inc".to_string(), - ['M', 'I', 'D'] => "miro Displays".to_string(), - ['M', 'I', 'I'] => "Mitec Inc".to_string(), - ['M', 'I', 'L'] => "Marconi Instruments Ltd".to_string(), - ['M', 'I', 'M'] => "Mimio – A Newell Rubbermaid Company".to_string(), - ['M', 'I', 'N'] => "Minicom Digital Signage".to_string(), - ['M', 'I', 'P'] => "micronpc.com".to_string(), - ['M', 'I', 'R'] => "Miro Computer Prod.".to_string(), - ['M', 'I', 'S'] => "Modular Industrial Solutions Inc".to_string(), - ['M', 'I', 'T'] => "MCM Industrial Technology GmbH".to_string(), - ['M', 'I', 'V'] => "MicroImage Video Systems".to_string(), - ['M', 'J', 'I'] => "MARANTZ JAPAN, INC.".to_string(), - ['M', 'J', 'S'] => "MJS Designs".to_string(), - ['M', 'K', 'C'] => "Media Tek Inc.".to_string(), - ['M', 'K', 'S'] => "MK Seiko Co., Ltd.".to_string(), - ['M', 'K', 'T'] => "MICROTEK Inc.".to_string(), - ['M', 'K', 'V'] => "Trtheim Technology".to_string(), - ['M', 'L', 'C'] => "MILCOTS".to_string(), - ['M', 'L', 'D'] => "Deep Video Imaging Ltd".to_string(), - ['M', 'L', 'G'] => "Micrologica AG".to_string(), - ['M', 'L', 'I'] => "McIntosh Laboratory Inc.".to_string(), - ['M', 'L', 'L'] => "Millogic Ltd.".to_string(), - ['M', 'L', 'M'] => "Millennium Engineering Inc".to_string(), - ['M', 'L', 'N'] => "Mark Levinson".to_string(), - ['M', 'L', 'P'] => "Magic Leap".to_string(), - ['M', 'L', 'S'] => "Milestone EPE".to_string(), - ['M', 'L', 'T'] => "Wanlida Group Co., Ltd.".to_string(), - ['M', 'L', 'X'] => "Mylex Corporation".to_string(), - ['M', 'M', 'A'] => "Micromedia AG".to_string(), - ['M', 'M', 'D'] => "Micromed Biotecnologia Ltd".to_string(), - ['M', 'M', 'F'] => "Minnesota Mining and Manufacturing".to_string(), - ['M', 'M', 'I'] => "Multimax".to_string(), - ['M', 'M', 'M'] => "Electronic Measurements".to_string(), - ['M', 'M', 'N'] => "MiniMan Inc".to_string(), - ['M', 'M', 'S'] => "MMS Electronics".to_string(), - ['M', 'M', 'T'] => "MIMO Monitors".to_string(), - ['M', 'N', 'C'] => "Mini Micro Methods Ltd".to_string(), - ['M', 'N', 'I'] => "Marseille, Inc.".to_string(), - ['M', 'N', 'L'] => "Monorail Inc".to_string(), - ['M', 'N', 'P'] => "Microcom".to_string(), - ['M', 'N', 'S'] => "Maxnerva Technology Services Limited".to_string(), - ['M', 'O', 'C'] => "Matrix Orbital Corporation".to_string(), - ['M', 'O', 'D'] => "Modular Technology".to_string(), - ['M', 'O', 'M'] => "Momentum Data Systems".to_string(), - ['M', 'O', 'S'] => "Moses Corporation".to_string(), - ['M', 'O', 'T'] => "Motorola UDS".to_string(), - ['M', 'P', 'C'] => "M-Pact Inc".to_string(), - ['M', 'P', 'I'] => "Mediatrix Peripherals Inc".to_string(), - ['M', 'P', 'J'] => "Microlab".to_string(), - ['M', 'P', 'L'] => "Maple Research Inst. Company Ltd".to_string(), - ['M', 'P', 'N'] => "Mainpine Limited".to_string(), - ['M', 'P', 'S'] => "mps Software GmbH".to_string(), - ['M', 'P', 'V'] => "Megapixel Visual Realty".to_string(), - ['M', 'P', 'X'] => "Micropix Technologies, Ltd.".to_string(), - ['M', 'Q', 'P'] => "MultiQ Products AB".to_string(), - ['M', 'R', 'A'] => "Miranda Technologies Inc".to_string(), - ['M', 'R', 'C'] => "Marconi Simulation & Ty-Coch Way Training".to_string(), - ['M', 'R', 'D'] => "MicroDisplay Corporation".to_string(), - ['M', 'R', 'G'] => "Nreal".to_string(), - ['M', 'R', 'K'] => "Maruko & Company Ltd".to_string(), - ['M', 'R', 'L'] => "Miratel".to_string(), - ['M', 'R', 'O'] => "Medikro Oy".to_string(), - ['M', 'R', 'T'] => "Merging Technologies".to_string(), - ['M', 'S', 'A'] => "Micro Systemation AB".to_string(), - ['M', 'S', 'C'] => "Mouse Systems Corporation".to_string(), - ['M', 'S', 'D'] => "Datenerfassungs- und Informationssysteme".to_string(), - ['M', 'S', 'F'] => "M-Systems Flash Disk Pioneers".to_string(), - ['M', 'S', 'G'] => "MSI GmbH".to_string(), - ['M', 'S', 'H'] => "Microsoft".to_string(), - ['M', 'S', 'I'] => "Microstep".to_string(), - ['M', 'S', 'K'] => "Megasoft Inc".to_string(), - ['M', 'S', 'L'] => "MicroSlate Inc.".to_string(), - ['M', 'S', 'M'] => "Advanced Digital Systems".to_string(), - ['M', 'S', 'P'] => "Mistral Solutions [P] Ltd.".to_string(), - ['M', 'S', 'R'] => "MASPRO DENKOH Corp.".to_string(), - ['M', 'S', 'T'] => "MS Telematica".to_string(), - ['M', 'S', 'U'] => "motorola".to_string(), - ['M', 'S', 'V'] => "Mosgi Corporation".to_string(), - ['M', 'S', 'X'] => "Micomsoft Co., Ltd.".to_string(), - ['M', 'S', 'Y'] => "MicroTouch Systems Inc".to_string(), - ['M', 'T', 'A'] => "Meta Watch Ltd".to_string(), - ['M', 'T', 'B'] => "Media Technologies Ltd.".to_string(), - ['M', 'T', 'C'] => "Mars-Tech Corporation".to_string(), - ['M', 'T', 'D'] => "MindTech Display Co. Ltd".to_string(), - ['M', 'T', 'E'] => "MediaTec GmbH".to_string(), - ['M', 'T', 'H'] => "Micro-Tech Hearing Instruments".to_string(), - ['M', 'T', 'I'] => "MaxCom Technical Inc".to_string(), - ['M', 'T', 'J'] => "MicroTechnica Co.,Ltd.".to_string(), - ['M', 'T', 'K'] => "Microtek International Inc.".to_string(), - ['M', 'T', 'L'] => "Mitel Corporation".to_string(), - ['M', 'T', 'M'] => "Motium".to_string(), - ['M', 'T', 'N'] => "Mtron Storage Technology Co., Ltd.".to_string(), - ['M', 'T', 'R'] => "Mitron computer Inc".to_string(), - ['M', 'T', 'S'] => "Multi-Tech Systems".to_string(), - ['M', 'T', 'T'] => "Moore Threads Virtual Display".to_string(), - ['M', 'T', 'U'] => "Mark of the Unicorn Inc".to_string(), - ['M', 'T', 'X'] => "Matrox".to_string(), - ['M', 'U', 'D'] => "Multi-Dimension Institute".to_string(), - ['M', 'U', 'K'] => "Mainpine Limited".to_string(), - ['M', 'V', 'D'] => "Microvitec PLC".to_string(), - ['M', 'V', 'I'] => "Media Vision Inc".to_string(), - ['M', 'V', 'M'] => "SOBO VISION".to_string(), - ['M', 'V', 'N'] => "Meta Company".to_string(), - ['M', 'V', 'R'] => "MediCapture, Inc.".to_string(), - ['M', 'V', 'S'] => "Microvision".to_string(), - ['M', 'V', 'X'] => "COM 1".to_string(), - ['M', 'W', 'I'] => "Multiwave Innovation Pte Ltd".to_string(), - ['M', 'W', 'R'] => "mware".to_string(), - ['M', 'W', 'Y'] => "Microway Inc".to_string(), - ['M', 'X', 'D'] => "MaxData Computer GmbH & Co.KG".to_string(), - ['M', 'X', 'I'] => "Macronix Inc".to_string(), - ['M', 'X', 'L'] => "Hitachi Maxell, Ltd.".to_string(), - ['M', 'X', 'M'] => "C&T Solution Inc.".to_string(), - ['M', 'X', 'P'] => "Maxpeed Corporation".to_string(), - ['M', 'X', 'T'] => "Maxtech Corporation".to_string(), - ['M', 'X', 'V'] => "MaxVision Corporation".to_string(), - ['M', 'Y', 'A'] => "Monydata".to_string(), - ['M', 'Y', 'R'] => "Myriad Solutions Ltd".to_string(), - ['M', 'Y', 'X'] => "Micronyx Inc".to_string(), - ['N', 'A', 'C'] => "Ncast Corporation".to_string(), - ['N', 'A', 'D'] => "NAD Electronics".to_string(), - ['N', 'A', 'F'] => "NAFASAE INDIA Pvt. Ltd".to_string(), - ['N', 'A', 'K'] => "Nakano Engineering Co.,Ltd.".to_string(), - ['N', 'A', 'L'] => "Network Alchemy".to_string(), - ['N', 'A', 'T'] => "NaturalPoint Inc.".to_string(), - ['N', 'A', 'V'] => "Navigation Corporation".to_string(), - ['N', 'A', 'X'] => "Naxos Tecnologia".to_string(), - ['N', 'B', 'L'] => "N*Able Technologies Inc".to_string(), - ['N', 'B', 'S'] => "National Key Lab. on ISN".to_string(), - ['N', 'B', 'T'] => "NingBo Bestwinning Technology CO., Ltd".to_string(), - ['N', 'C', 'A'] => "Nixdorf Company".to_string(), - ['N', 'C', 'C'] => "NCR Corporation".to_string(), - ['N', 'C', 'E'] => "Norcent Technology, Inc.".to_string(), - ['N', 'C', 'I'] => "NewCom Inc".to_string(), - ['N', 'C', 'L'] => "NetComm Ltd".to_string(), - ['N', 'C', 'P'] => "Najing CEC Panda FPD Technology CO. ltd".to_string(), - ['N', 'C', 'R'] => "NCR Electronics".to_string(), - ['N', 'C', 'S'] => "Northgate Computer Systems".to_string(), - ['N', 'C', 'T'] => "NEC CustomTechnica, Ltd.".to_string(), - ['N', 'C', 'V'] => "NewCoSemi (Beijing) Technology CO.,Ltd.".to_string(), - ['N', 'D', 'C'] => "National DataComm Corporaiton".to_string(), - ['N', 'D', 'F'] => "NDF Special Light Products B.V.".to_string(), - ['N', 'D', 'I'] => "National Display Systems".to_string(), - ['N', 'D', 'K'] => "Naitoh Densei CO., LTD.".to_string(), - ['N', 'D', 'L'] => "Network Designers".to_string(), - ['N', 'D', 'S'] => "Nokia Data".to_string(), - ['N', 'E', 'C'] => "NEC Corporation".to_string(), - ['N', 'E', 'O'] => "NEO TELECOM CO.,LTD.".to_string(), - ['N', 'E', 'S'] => "INNES".to_string(), - ['N', 'E', 'T'] => "Mettler Toledo".to_string(), - ['N', 'E', 'U'] => { - "NEUROTEC - EMPRESA DE PESQUISA E DESENVOLVIMENTO EM BIOMEDICINA".to_string() - } - ['N', 'E', 'X'] => "Nexgen Mediatech Inc.,".to_string(), - ['N', 'F', 'C'] => "BTC Korea Co., Ltd".to_string(), - ['N', 'F', 'S'] => "Number Five Software".to_string(), - ['N', 'G', 'C'] => "Network General".to_string(), - ['N', 'G', 'S'] => "A D S Exports".to_string(), - ['N', 'H', 'C'] => "New H3C Technology Co., Ltd.".to_string(), - ['N', 'H', 'T'] => "Vinci Labs".to_string(), - ['N', 'I', 'C'] => "National Instruments Corporation".to_string(), - ['N', 'I', 'S'] => "Nissei Electric Company".to_string(), - ['N', 'I', 'T'] => "Network Info Technology".to_string(), - ['N', 'I', 'X'] => "Seanix Technology Inc".to_string(), - ['N', 'L', 'C'] => "Next Level Communications".to_string(), - ['N', 'M', 'E'] => "Navico, Inc.".to_string(), - ['N', 'M', 'P'] => "Nokia Mobile Phones".to_string(), - ['N', 'M', 'S'] => "Natural Micro System".to_string(), - ['N', 'M', 'V'] => "NEC-Mitsubishi Electric Visual Systems Corporation".to_string(), - ['N', 'M', 'X'] => "Neomagic".to_string(), - ['N', 'N', 'C'] => "NNC".to_string(), - ['N', 'O', 'D'] => "3NOD Digital Technology Co. Ltd.".to_string(), - ['N', 'O', 'E'] => "NordicEye AB".to_string(), - ['N', 'O', 'I'] => "North Invent A/S".to_string(), - ['N', 'O', 'K'] => "Nokia Display Products".to_string(), - ['N', 'O', 'R'] => "Norand Corporation".to_string(), - ['N', 'O', 'T'] => "Not Limited Inc".to_string(), - ['N', 'P', 'A'] => "Arvanics".to_string(), - ['N', 'P', 'I'] => "Network Peripherals Inc".to_string(), - ['N', 'R', 'I'] => "Noritake Itron Corporation".to_string(), - ['N', 'R', 'L'] => "U.S. Naval Research Lab".to_string(), - ['N', 'R', 'T'] => "Beijing Northern Radiantelecom Co.".to_string(), - ['N', 'R', 'V'] => "Taugagreining hf".to_string(), - ['N', 'S', 'A'] => "NeuroSky, Inc.".to_string(), - ['N', 'S', 'C'] => "National Semiconductor Corporation".to_string(), - ['N', 'S', 'I'] => "NISSEI ELECTRIC CO.,LTD".to_string(), - ['N', 'S', 'P'] => "Nspire System Inc.".to_string(), - ['N', 'S', 'S'] => "Newport Systems Solutions".to_string(), - ['N', 'S', 'T'] => "Network Security Technology Co".to_string(), - ['N', 'T', 'C'] => "NeoTech S.R.L".to_string(), - ['N', 'T', 'I'] => "New Tech Int'l Company".to_string(), - ['N', 'T', 'K'] => "NewTek".to_string(), - ['N', 'T', 'L'] => "National Transcomm. Ltd".to_string(), - ['N', 'T', 'N'] => "Nuvoton Technology Corporation".to_string(), - ['N', 'T', 'R'] => "N-trig Innovative Technologies, Inc.".to_string(), - ['N', 'T', 'S'] => "Nits Technology Inc.".to_string(), - ['N', 'T', 'T'] => "NTT Advanced Technology Corporation".to_string(), - ['N', 'T', 'W'] => "Networth Inc".to_string(), - ['N', 'T', 'X'] => "Netaccess Inc".to_string(), - ['N', 'U', 'G'] => "NU Technology, Inc.".to_string(), - ['N', 'U', 'I'] => "NU Inc.".to_string(), - ['N', 'V', 'C'] => "NetVision Corporation".to_string(), - ['N', 'V', 'D'] => "Nvidia".to_string(), - ['N', 'V', 'I'] => "NuVision US, Inc.".to_string(), - ['N', 'V', 'L'] => "Novell Inc".to_string(), - ['N', 'V', 'O'] => "Netvio Ltd.".to_string(), - ['N', 'V', 'R'] => "NOLO CO., LTD.".to_string(), - ['N', 'V', 'T'] => "Navatek Engineering Corporation".to_string(), - ['N', 'W', 'C'] => "NW Computer Engineering".to_string(), - ['N', 'W', 'L'] => "Newline Interactive Inc.".to_string(), - ['N', 'W', 'P'] => "NovaWeb Technologies Inc".to_string(), - ['N', 'W', 'S'] => "Newisys, Inc.".to_string(), - ['N', 'X', 'C'] => "NextCom K.K.".to_string(), - ['N', 'X', 'E'] => "Norxe AS".to_string(), - ['N', 'X', 'G'] => "Nexgen".to_string(), - ['N', 'X', 'P'] => "NXP Semiconductors bv.".to_string(), - ['N', 'X', 'Q'] => "Nexiq Technologies, Inc.".to_string(), - ['N', 'X', 'R'] => "Nextorage Corporation".to_string(), - ['N', 'X', 'S'] => "Technology Nexus Secure Open Systems AB".to_string(), - ['N', 'X', 'T'] => "NZXT (PNP same EDID)_".to_string(), - ['N', 'Y', 'C'] => "Nakayo Relecommunications, Inc.".to_string(), - ['O', 'A', 'K'] => "Oak Tech Inc".to_string(), - ['O', 'A', 'S'] => "Oasys Technology Company".to_string(), - ['O', 'B', 'S'] => "Optibase Technologies".to_string(), - ['O', 'C', 'D'] => "Macraigor Systems Inc".to_string(), - ['O', 'C', 'N'] => "Olfan".to_string(), - ['O', 'C', 'S'] => "Open Connect Solutions".to_string(), - ['O', 'D', 'M'] => "ODME Inc.".to_string(), - ['O', 'D', 'R'] => "Odrac".to_string(), - ['O', 'E', 'C'] => "ORION ELECTRIC CO.,LTD".to_string(), - ['O', 'E', 'I'] => "Optum Engineering Inc.".to_string(), - ['O', 'F', 'I'] => "Jiangxi Jinghao Optical Co., Ltd.".to_string(), - ['O', 'H', 'W'] => "M-Labs Limited".to_string(), - ['O', 'I', 'C'] => "Option Industrial Computers".to_string(), - ['O', 'I', 'M'] => "Option International".to_string(), - ['O', 'I', 'N'] => "Option International".to_string(), - ['O', 'K', 'I'] => "OKI Electric Industrial Company Ltd".to_string(), - ['O', 'L', 'C'] => "Olicom A/S".to_string(), - ['O', 'L', 'D'] => "Olidata S.p.A.".to_string(), - ['O', 'L', 'I'] => "Olivetti".to_string(), - ['O', 'L', 'T'] => "Olitec S.A.".to_string(), - ['O', 'L', 'V'] => "Olitec S.A.".to_string(), - ['O', 'L', 'Y'] => "OLYMPUS CORPORATION".to_string(), - ['O', 'M', 'C'] => "OBJIX Multimedia Corporation".to_string(), - ['O', 'M', 'G'] => "RODE".to_string(), - ['O', 'M', 'N'] => "Omnitel".to_string(), - ['O', 'M', 'R'] => "Omron Corporation".to_string(), - ['O', 'N', 'E'] => "Oneac Corporation".to_string(), - ['O', 'N', 'K'] => "ONKYO Corporation".to_string(), - ['O', 'N', 'L'] => "OnLive, Inc".to_string(), - ['O', 'N', 'S'] => "On Systems Inc".to_string(), - ['O', 'N', 'W'] => "OPEN Networks Ltd".to_string(), - ['O', 'N', 'X'] => "SOMELEC Z.I. Du Vert Galanta".to_string(), - ['O', 'O', 'S'] => "OSRAM".to_string(), - ['O', 'P', 'C'] => "Opcode Inc".to_string(), - ['O', 'P', 'I'] => "D.N.S. Corporation".to_string(), - ['O', 'P', 'P'] => "OPPO Digital, Inc.".to_string(), - ['O', 'P', 'T'] => "OPTi Inc".to_string(), - ['O', 'P', 'V'] => "Optivision Inc".to_string(), - ['O', 'Q', 'I'] => "Oksori Company Ltd".to_string(), - ['O', 'R', 'G'] => "ORGA Kartensysteme GmbH".to_string(), - ['O', 'R', 'I'] => "OSR Open Systems Resources, Inc.".to_string(), - ['O', 'R', 'N'] => "ORION ELECTRIC CO., LTD.".to_string(), - ['O', 'S', 'A'] => "OSAKA Micro Computer, Inc.".to_string(), - ['O', 'S', 'D'] => "Optical Systems Design Pty Ltd".to_string(), - ['O', 'S', 'I'] => "Open Stack, Inc.".to_string(), - ['O', 'S', 'P'] => "OPTI-UPS Corporation".to_string(), - ['O', 'S', 'R'] => "Oksori Company Ltd".to_string(), - ['O', 'T', 'B'] => "outsidetheboxstuff.com".to_string(), - ['O', 'T', 'I'] => "Orchid Technology".to_string(), - ['O', 'T', 'K'] => "OmniTek".to_string(), - ['O', 'T', 'M'] => "Optoma Corporation".to_string(), - ['O', 'T', 'T'] => "OPTO22, Inc.".to_string(), - ['O', 'U', 'K'] => "OUK Company Ltd".to_string(), - ['O', 'V', 'R'] => "Oculus VR, Inc.".to_string(), - ['O', 'W', 'L'] => "Mediacom Technologies Pte Ltd".to_string(), - ['O', 'X', 'U'] => "Oxus Research S.A.".to_string(), - ['O', 'Y', 'O'] => "Shadow Systems".to_string(), - ['O', 'Z', 'C'] => "OZ Corporation".to_string(), - ['O', 'Z', 'D'] => "OZO Co.Ltd".to_string(), - ['O', 'Z', 'O'] => "Tribe Computer Works Inc".to_string(), - ['P', 'A', 'C'] => "Pacific Avionics Corporation".to_string(), - ['P', 'A', 'D'] => "Promotion and Display Technology Ltd.".to_string(), - ['P', 'A', 'E'] => "PreSonus Audio Electronics".to_string(), - ['P', 'A', 'K'] => "Many CNC System Co., Ltd.".to_string(), - ['P', 'A', 'M'] => "Peter Antesberger Messtechnik".to_string(), - ['P', 'A', 'N'] => "The Panda Project".to_string(), - ['P', 'A', 'R'] => "Parallan Comp Inc".to_string(), - ['P', 'B', 'I'] => "Pitney Bowes".to_string(), - ['P', 'B', 'L'] => "Packard Bell Electronics".to_string(), - ['P', 'B', 'N'] => "Packard Bell NEC".to_string(), - ['P', 'B', 'V'] => "Pitney Bowes".to_string(), - ['P', 'C', 'A'] => "Philips BU Add On Card".to_string(), - ['P', 'C', 'B'] => "OCTAL S.A.".to_string(), - ['P', 'C', 'C'] => "PowerCom Technology Company Ltd".to_string(), - ['P', 'C', 'G'] => "First Industrial Computer Inc".to_string(), - ['P', 'C', 'I'] => "Pioneer Computer Inc".to_string(), - ['P', 'C', 'K'] => "PCBANK21".to_string(), - ['P', 'C', 'L'] => "pentel.co.,ltd".to_string(), - ['P', 'C', 'M'] => "PCM Systems Corporation".to_string(), - ['P', 'C', 'O'] => "Performance Concepts Inc.,".to_string(), - ['P', 'C', 'P'] => "Procomp USA Inc".to_string(), - ['P', 'C', 'S'] => "TOSHIBA PERSONAL COMPUTER SYSTEM CORPRATION".to_string(), - ['P', 'C', 'T'] => "PC-Tel Inc".to_string(), - ['P', 'C', 'W'] => "Pacific CommWare Inc".to_string(), - ['P', 'C', 'X'] => "PC Xperten".to_string(), - ['P', 'D', 'M'] => "Psion Dacom Plc.".to_string(), - ['P', 'D', 'N'] => "AT&T Paradyne".to_string(), - ['P', 'D', 'R'] => "Pure Data Inc".to_string(), - ['P', 'D', 'S'] => "PD Systems International Ltd".to_string(), - ['P', 'D', 'T'] => "PDTS - Prozessdatentechnik und Systeme".to_string(), - ['P', 'D', 'V'] => "Prodrive B.V.".to_string(), - ['P', 'E', 'C'] => "POTRANS Electrical Corp.".to_string(), - ['P', 'E', 'G'] => "Pegatron Corporation".to_string(), - ['P', 'E', 'I'] => "PEI Electronics Inc".to_string(), - ['P', 'E', 'L'] => "Primax Electric Ltd".to_string(), - ['P', 'E', 'N'] => "Interactive Computer Products Inc".to_string(), - ['P', 'E', 'P'] => "Peppercon AG".to_string(), - ['P', 'E', 'R'] => "Perceptive Signal Technologies".to_string(), - ['P', 'E', 'T'] => "Practical Electronic Tools".to_string(), - ['P', 'F', 'T'] => "Telia ProSoft AB".to_string(), - ['P', 'G', 'I'] => "PACSGEAR, Inc.".to_string(), - ['P', 'G', 'M'] => "Paradigm Advanced Research Centre".to_string(), - ['P', 'G', 'P'] => "propagamma kommunikation".to_string(), - ['P', 'G', 'S'] => "Princeton Graphic Systems".to_string(), - ['P', 'H', 'C'] => "Pijnenburg Beheer N.V.".to_string(), - ['P', 'H', 'E'] => "Philips Medical Systems Boeblingen GmbH".to_string(), - ['P', 'H', 'I'] => "DO NOT USE - PHI".to_string(), - ['P', 'H', 'L'] => "Philips Consumer Electronics Company".to_string(), - ['P', 'H', 'O'] => "Photonics Systems Inc.".to_string(), - ['P', 'H', 'S'] => "Philips Communication Systems".to_string(), - ['P', 'H', 'Y'] => "Phylon Communications".to_string(), - ['P', 'I', 'C'] => "Picturall Ltd.".to_string(), - ['P', 'I', 'E'] => "Pacific Image Electronics Company Ltd".to_string(), - ['P', 'I', 'M'] => "Prism, LLC".to_string(), - ['P', 'I', 'O'] => "Pioneer Electronic Corporation".to_string(), - ['P', 'I', 'R'] => "Pico Technology Inc.".to_string(), - ['P', 'I', 'S'] => "TECNART CO.,LTD.".to_string(), - ['P', 'I', 'X'] => "Pixie Tech Inc".to_string(), - ['P', 'J', 'A'] => "Projecta".to_string(), - ['P', 'J', 'D'] => "Projectiondesign AS".to_string(), - ['P', 'J', 'T'] => "Pan Jit International Inc.".to_string(), - ['P', 'K', 'A'] => "Acco UK Ltd.".to_string(), - ['P', 'L', 'C'] => "Pro-Log Corporation".to_string(), - ['P', 'L', 'F'] => "Panasonic Avionics Corporation".to_string(), - ['P', 'L', 'M'] => "PROLINK Microsystems Corp.".to_string(), - ['P', 'L', 'T'] => "PT Hartono Istana Teknologi".to_string(), - ['P', 'L', 'V'] => "PLUS Vision Corp.".to_string(), - ['P', 'L', 'X'] => "Parallax Graphics".to_string(), - ['P', 'L', 'Y'] => "Polycom Inc.".to_string(), - ['P', 'M', 'C'] => "PMC Consumer Electronics Ltd".to_string(), - ['P', 'M', 'D'] => "TDK USA Corporation".to_string(), - ['P', 'M', 'M'] => "Point Multimedia System".to_string(), - ['P', 'M', 'S'] => "Pabian Embedded Systems".to_string(), - ['P', 'M', 'T'] => "Promate Electronic Co., Ltd.".to_string(), - ['P', 'M', 'X'] => "Photomatrix".to_string(), - ['P', 'N', 'G'] => "Microsoft".to_string(), - ['P', 'N', 'L'] => "Panelview, Inc.".to_string(), - ['P', 'N', 'P'] => "Microsoft".to_string(), - ['P', 'N', 'R'] => "Planar Systems, Inc.".to_string(), - ['P', 'N', 'S'] => "PanaScope".to_string(), - ['P', 'N', 'T'] => "HOYA Corporation PENTAX Lifecare Division".to_string(), - ['P', 'N', 'X'] => "Phoenix Technologies, Ltd.".to_string(), - ['P', 'O', 'L'] => "PolyComp (PTY) Ltd.".to_string(), - ['P', 'O', 'N'] => "Perpetual Technologies, LLC".to_string(), - ['P', 'O', 'R'] => "Portalis LC".to_string(), - ['P', 'O', 'S'] => "Positivo Tecnologia S.A.".to_string(), - ['P', 'O', 'T'] => "Parrot".to_string(), - ['P', 'P', 'C'] => "Phoenixtec Power Company Ltd".to_string(), - ['P', 'P', 'D'] => "MEPhI".to_string(), - ['P', 'P', 'I'] => "Practical Peripherals".to_string(), - ['P', 'P', 'M'] => "Clinton Electronics Corp.".to_string(), - ['P', 'P', 'P'] => "Purup Prepress AS".to_string(), - ['P', 'P', 'R'] => "PicPro".to_string(), - ['P', 'P', 'X'] => "Perceptive Pixel Inc.".to_string(), - ['P', 'Q', 'I'] => "Pixel Qi".to_string(), - ['P', 'R', 'A'] => "PRO/AUTOMATION".to_string(), - ['P', 'R', 'C'] => "PerComm".to_string(), - ['P', 'R', 'D'] => "Praim S.R.L.".to_string(), - ['P', 'R', 'F'] => "Schneider Electric Japan Holdings, Ltd.".to_string(), - ['P', 'R', 'G'] => "The Phoenix Research Group Inc".to_string(), - ['P', 'R', 'I'] => "Priva Hortimation BV".to_string(), - ['P', 'R', 'M'] => "Prometheus".to_string(), - ['P', 'R', 'O'] => "Proteon".to_string(), - ['P', 'R', 'P'] => "UEFI Forum".to_string(), - ['P', 'R', 'S'] => "Leutron Vision".to_string(), - ['P', 'R', 'T'] => "Parade Technologies, Ltd.".to_string(), - ['P', 'R', 'X'] => "Proxima Corporation".to_string(), - ['P', 'S', 'A'] => "Advanced Signal Processing Technologies".to_string(), - ['P', 'S', 'C'] => "Philips Semiconductors".to_string(), - ['P', 'S', 'D'] => "Peus-Systems GmbH".to_string(), - ['P', 'S', 'E'] => "Practical Solutions Pte., Ltd.".to_string(), - ['P', 'S', 'I'] => "PSI-Perceptive Solutions Inc".to_string(), - ['P', 'S', 'L'] => "Perle Systems Limited".to_string(), - ['P', 'S', 'M'] => "Prosum".to_string(), - ['P', 'S', 'T'] => "Global Data SA".to_string(), - ['P', 'S', 'Y'] => "Prodea Systems Inc.".to_string(), - ['P', 'T', 'A'] => "PAR Tech Inc.".to_string(), - ['P', 'T', 'C'] => "PS Technology Corporation".to_string(), - ['P', 'T', 'G'] => "Cipher Systems Inc".to_string(), - ['P', 'T', 'H'] => "Pathlight Technology Inc".to_string(), - ['P', 'T', 'I'] => "Promise Technology Inc".to_string(), - ['P', 'T', 'L'] => "Pantel Inc".to_string(), - ['P', 'T', 'S'] => "Plain Tree Systems Inc".to_string(), - ['P', 'T', 'W'] => "DO NOT USE - PTW".to_string(), - ['P', 'T', 'X'] => "Printronix LLC".to_string(), - ['P', 'U', 'L'] => "Pulse-Eight Ltd".to_string(), - ['P', 'V', 'C'] => "DO NOT USE - PVC".to_string(), - ['P', 'V', 'G'] => "Proview Global Co., Ltd".to_string(), - ['P', 'V', 'I'] => "Prime view international Co., Ltd".to_string(), - ['P', 'V', 'M'] => "Penta Studiotechnik GmbH".to_string(), - ['P', 'V', 'N'] => "Pixel Vision".to_string(), - ['P', 'V', 'P'] => "Klos Technologies, Inc.".to_string(), - ['P', 'V', 'R'] => "Pimax Tech. CO., LTD".to_string(), - ['P', 'X', 'C'] => "Phoenix Contact".to_string(), - ['P', 'X', 'E'] => "PIXELA CORPORATION".to_string(), - ['P', 'X', 'L'] => "The Moving Pixel Company".to_string(), - ['P', 'X', 'M'] => "Proxim Inc".to_string(), - ['P', 'X', 'N'] => "PixelNext Inc".to_string(), - ['P', 'X', 'O'] => "Pixio USA".to_string(), - ['Q', 'C', 'C'] => "QuakeCom Company Ltd".to_string(), - ['Q', 'C', 'H'] => "Metronics Inc".to_string(), - ['Q', 'C', 'I'] => "Quanta Computer Inc".to_string(), - ['Q', 'C', 'K'] => "Quick Corporation".to_string(), - ['Q', 'C', 'L'] => "Quadrant Components Inc".to_string(), - ['Q', 'C', 'P'] => "Qualcomm Inc".to_string(), - ['Q', 'D', 'I'] => "Quantum Data Incorporated".to_string(), - ['Q', 'D', 'L'] => "QD Laser, Inc.".to_string(), - ['Q', 'D', 'M'] => "Quadram".to_string(), - ['Q', 'D', 'S'] => "Quanta Display Inc.".to_string(), - ['Q', 'F', 'F'] => "Padix Co., Inc.".to_string(), - ['Q', 'F', 'I'] => "Quickflex, Inc".to_string(), - ['Q', 'L', 'C'] => "Q-Logic".to_string(), - ['Q', 'Q', 'Q'] => "Chuomusen Co., Ltd.".to_string(), - ['Q', 'S', 'C'] => "QSC, LLC".to_string(), - ['Q', 'S', 'I'] => "Quantum Solutions, Inc.".to_string(), - ['Q', 'T', 'D'] => "Quantum 3D Inc".to_string(), - ['Q', 'T', 'H'] => "Questech Ltd".to_string(), - ['Q', 'T', 'I'] => "Quicknet Technologies Inc".to_string(), - ['Q', 'T', 'M'] => "Quantum".to_string(), - ['Q', 'T', 'R'] => "Qtronix Corporation".to_string(), - ['Q', 'U', 'A'] => "Quatographic AG".to_string(), - ['Q', 'U', 'E'] => "Questra Consulting".to_string(), - ['Q', 'V', 'U'] => "Quartics".to_string(), - ['R', 'A', 'C'] => "Racore Computer Products Inc".to_string(), - ['R', 'A', 'D'] => "Radisys Corporation".to_string(), - ['R', 'A', 'I'] => "Rockwell Automation/Intecolor".to_string(), - ['R', 'A', 'N'] => "Rancho Tech Inc".to_string(), - ['R', 'A', 'R'] => "Raritan, Inc.".to_string(), - ['R', 'A', 'S'] => "RAScom Inc".to_string(), - ['R', 'A', 'T'] => "Rent-A-Tech".to_string(), - ['R', 'A', 'Y'] => "Raylar Design, Inc.".to_string(), - ['R', 'C', 'E'] => "Parc d'Activite des Bellevues".to_string(), - ['R', 'C', 'H'] => "Reach Technology Inc".to_string(), - ['R', 'C', 'I'] => "RC International".to_string(), - ['R', 'C', 'N'] => "Radio Consult SRL".to_string(), - ['R', 'C', 'O'] => "Rockwell Collins".to_string(), - ['R', 'D', 'I'] => "Rainbow Displays, Inc.".to_string(), - ['R', 'D', 'L'] => "Riedel Communications Canada Inc.".to_string(), - ['R', 'D', 'M'] => "Tremon Enterprises Company Ltd".to_string(), - ['R', 'D', 'N'] => "RADIODATA GmbH".to_string(), - ['R', 'D', 'S'] => "Radius Inc".to_string(), - ['R', 'E', 'A'] => "Real D".to_string(), - ['R', 'E', 'C'] => "ReCom".to_string(), - ['R', 'E', 'D'] => "Research Electronics Development Inc".to_string(), - ['R', 'E', 'F'] => "Reflectivity, Inc.".to_string(), - ['R', 'E', 'H'] => "Rehan Electronics Ltd.".to_string(), - ['R', 'E', 'L'] => "Reliance Electric Ind Corporation".to_string(), - ['R', 'E', 'M'] => "SCI Systems Inc.".to_string(), - ['R', 'E', 'N'] => "Renesas Technology Corp.".to_string(), - ['R', 'E', 'S'] => "ResMed Pty Ltd".to_string(), - ['R', 'E', 'T'] => "Resonance Technology, Inc.".to_string(), - ['R', 'E', 'V'] => "Revolution Display, Inc.".to_string(), - ['R', 'E', 'X'] => "RATOC Systems, Inc.".to_string(), - ['R', 'F', 'I'] => "RAFI GmbH & Co. KG".to_string(), - ['R', 'F', 'X'] => "Redfox Technologies Inc.".to_string(), - ['R', 'G', 'B'] => "RGB Spectrum".to_string(), - ['R', 'G', 'L'] => "Robertson Geologging Ltd".to_string(), - ['R', 'H', 'D'] => "RightHand Technologies".to_string(), - ['R', 'H', 'M'] => "Rohm Company Ltd".to_string(), - ['R', 'H', 'T'] => "Red Hat, Inc.".to_string(), - ['R', 'I', 'C'] => "RICOH COMPANY, LTD.".to_string(), - ['R', 'I', 'I'] => "Racal Interlan Inc".to_string(), - ['R', 'I', 'O'] => "Rios Systems Company Ltd".to_string(), - ['R', 'I', 'T'] => "Ritech Inc".to_string(), - ['R', 'I', 'V'] => "Rivulet Communications".to_string(), - ['R', 'J', 'A'] => "Roland Corporation".to_string(), - ['R', 'J', 'S'] => "Advanced Engineering".to_string(), - ['R', 'K', 'C'] => "Reakin Technolohy Corporation".to_string(), - ['R', 'L', 'D'] => "MEPCO".to_string(), - ['R', 'L', 'N'] => "RadioLAN Inc".to_string(), - ['R', 'M', 'C'] => "Raritan Computer, Inc".to_string(), - ['R', 'M', 'P'] => "Research Machines".to_string(), - ['R', 'M', 'S'] => "Shenzhen Ramos Digital Technology Co., Ltd".to_string(), - ['R', 'M', 'T'] => "Roper Mobile".to_string(), - ['R', 'N', 'B'] => "Rainbow Technologies".to_string(), - ['R', 'N', 'L'] => "Reonel Oy".to_string(), - ['R', 'O', 'B'] => "Robust Electronics GmbH".to_string(), - ['R', 'O', 'H'] => "Rohm Co., Ltd.".to_string(), - ['R', 'O', 'K'] => "Rockwell International".to_string(), - ['R', 'O', 'P'] => "Roper International Ltd".to_string(), - ['R', 'O', 'S'] => "Rohde & Schwarz".to_string(), - ['R', 'P', 'I'] => "RoomPro Technologies".to_string(), - ['R', 'P', 'T'] => "R.P.T.Intergroups".to_string(), - ['R', 'R', 'I'] => "Radicom Research Inc".to_string(), - ['R', 'R', 'O'] => "AVARRO".to_string(), - ['R', 'S', 'C'] => "PhotoTelesis".to_string(), - ['R', 'S', 'H'] => "ADC-Centre".to_string(), - ['R', 'S', 'I'] => "Rampage Systems Inc".to_string(), - ['R', 'S', 'N'] => "Radiospire Networks, Inc.".to_string(), - ['R', 'S', 'Q'] => "R Squared".to_string(), - ['R', 'S', 'R'] => "Zhong Shan City Richsound Electronic Industrial Ltd.".to_string(), - ['R', 'S', 'S'] => "Rockwell Semiconductor Systems".to_string(), - ['R', 'S', 'V'] => "Ross Video Ltd".to_string(), - ['R', 'S', 'X'] => "Rapid Tech Corporation".to_string(), - ['R', 'T', 'C'] => "Relia Technologies".to_string(), - ['R', 'T', 'I'] => "Rancho Tech Inc".to_string(), - ['R', 'T', 'K'] => "DO NOT USE - RTK".to_string(), - ['R', 'T', 'L'] => "Realtek Semiconductor Company Ltd".to_string(), - ['R', 'T', 'S'] => "Raintree Systems".to_string(), - ['R', 'U', 'N'] => "RUNCO International".to_string(), - ['R', 'U', 'P'] => "Ups Manufactoring s.r.l.".to_string(), - ['R', 'V', 'C'] => "RSI Systems Inc".to_string(), - ['R', 'V', 'I'] => "Realvision Inc".to_string(), - ['R', 'V', 'L'] => "Reveal Computer Prod".to_string(), - ['R', 'W', 'C'] => "Red Wing Corporation".to_string(), - ['R', 'X', 'T'] => "Tectona SoftSolutions (P) Ltd.,".to_string(), - ['R', 'Z', 'R'] => "Razer Taiwan Co. Ltd.".to_string(), - ['R', 'Z', 'S'] => "Rozsnyó, s.r.o.".to_string(), - ['S', 'A', 'A'] => "Sanritz Automation Co.,Ltd.".to_string(), - ['S', 'A', 'E'] => "Saab Aerotech".to_string(), - ['S', 'A', 'G'] => "Sedlbauer".to_string(), - ['S', 'A', 'I'] => "Sage Inc".to_string(), - ['S', 'A', 'K'] => "Saitek Ltd".to_string(), - ['S', 'A', 'M'] => "Samsung Electric Company".to_string(), - ['S', 'A', 'N'] => "Sanyo Electric Co.,Ltd.".to_string(), - ['S', 'A', 'S'] => "Stores Automated Systems Inc".to_string(), - ['S', 'A', 'T'] => "Shuttle Tech".to_string(), - ['S', 'B', 'C'] => "Shanghai Bell Telephone Equip Mfg Co".to_string(), - ['S', 'B', 'D'] => "Softbed - Consulting & Development Ltd".to_string(), - ['S', 'B', 'I'] => "SMART Technologies Inc.".to_string(), - ['S', 'B', 'S'] => "SBS-or Industrial Computers GmbH".to_string(), - ['S', 'B', 'T'] => "Senseboard Technologies AB".to_string(), - ['S', 'C', 'A'] => "Schneider Consumer Group".to_string(), - ['S', 'C', 'B'] => "SeeCubic B.V.".to_string(), - ['S', 'C', 'C'] => "SORD Computer Corporation".to_string(), - ['S', 'C', 'D'] => "Sanyo Electric Company Ltd".to_string(), - ['S', 'C', 'E'] => "Sun Corporation".to_string(), - ['S', 'C', 'G'] => "Seco S.p.A.".to_string(), - ['S', 'C', 'H'] => "Schlumberger Cards".to_string(), - ['S', 'C', 'I'] => "System Craft".to_string(), - ['S', 'C', 'L'] => "Sigmacom Co., Ltd.".to_string(), - ['S', 'C', 'M'] => "SCM Microsystems Inc".to_string(), - ['S', 'C', 'N'] => "Scanport, Inc.".to_string(), - ['S', 'C', 'O'] => "SORCUS Computer GmbH".to_string(), - ['S', 'C', 'P'] => "Scriptel Corporation".to_string(), - ['S', 'C', 'R'] => "Systran Corporation".to_string(), - ['S', 'C', 'S'] => "Nanomach Anstalt".to_string(), - ['S', 'C', 'T'] => "Smart Card Technology".to_string(), - ['S', 'C', 'X'] => "Socionext Inc.".to_string(), - ['S', 'D', 'A'] => "SAT (Societe Anonyme)".to_string(), - ['S', 'D', 'C'] => "Samsung Display Corp.".to_string(), - ['S', 'D', 'D'] => "Intrada-SDD Ltd".to_string(), - ['S', 'D', 'E'] => "Sherwood Digital Electronics Corporation".to_string(), - ['S', 'D', 'F'] => "SODIFF E&T CO., Ltd.".to_string(), - ['S', 'D', 'H'] => "Communications Specialies, Inc.".to_string(), - ['S', 'D', 'I'] => "Samtron Displays Inc".to_string(), - ['S', 'D', 'K'] => "SAIT-Devlonics".to_string(), - ['S', 'D', 'R'] => "SDR Systems".to_string(), - ['S', 'D', 'S'] => "SunRiver Data System".to_string(), - ['S', 'D', 'T'] => "Siemens AG".to_string(), - ['S', 'D', 'X'] => "SDX Business Systems Ltd".to_string(), - ['S', 'E', 'A'] => "Seanix Technology Inc.".to_string(), - ['S', 'E', 'B'] => "system elektronik GmbH".to_string(), - ['S', 'E', 'C'] => "Seiko Epson Corporation".to_string(), - ['S', 'E', 'E'] => "SeeColor Corporation".to_string(), - ['S', 'E', 'G'] => "DO NOT USE - SEG".to_string(), - ['S', 'E', 'I'] => "Seitz & Associates Inc".to_string(), - ['S', 'E', 'L'] => "Way2Call Communications".to_string(), - ['S', 'E', 'M'] => "Samsung Electronics Company Ltd".to_string(), - ['S', 'E', 'N'] => "Sencore".to_string(), - ['S', 'E', 'O'] => "SEOS Ltd".to_string(), - ['S', 'E', 'P'] => "SEP Eletronica Ltda.".to_string(), - ['S', 'E', 'R'] => "Sony Ericsson Mobile Communications Inc.".to_string(), - ['S', 'E', 'S'] => "Session Control LLC".to_string(), - ['S', 'E', 'T'] => "SendTek Corporation".to_string(), - ['S', 'F', 'L'] => "Shiftall Inc.".to_string(), - ['S', 'F', 'M'] => "TORNADO Company".to_string(), - ['S', 'F', 'T'] => "Mikroforum Ring 3".to_string(), - ['S', 'G', 'C'] => "Spectragraphics Corporation".to_string(), - ['S', 'G', 'D'] => "Sigma Designs, Inc.".to_string(), - ['S', 'G', 'E'] => "Kansai Electric Company Ltd".to_string(), - ['S', 'G', 'I'] => "Scan Group Ltd".to_string(), - ['S', 'G', 'L'] => "Super Gate Technology Company Ltd".to_string(), - ['S', 'G', 'M'] => "SAGEM".to_string(), - ['S', 'G', 'N'] => "Shenzhen Soogeen Electronics Co., LTD.".to_string(), - ['S', 'G', 'O'] => "Logos Design A/S".to_string(), - ['S', 'G', 'T'] => "Stargate Technology".to_string(), - ['S', 'G', 'W'] => "Shanghai Guowei Science and Technology Co., Ltd.".to_string(), - ['S', 'G', 'X'] => "Silicon Graphics Inc".to_string(), - ['S', 'G', 'Z'] => "Systec Computer GmbH".to_string(), - ['S', 'H', 'C'] => "ShibaSoku Co., Ltd.".to_string(), - ['S', 'H', 'G'] => "Soft & Hardware development Goldammer GmbH".to_string(), - ['S', 'H', 'I'] => "Jiangsu Shinco Electronic Group Co., Ltd".to_string(), - ['S', 'H', 'P'] => "Sharp Corporation".to_string(), - ['S', 'H', 'R'] => "Digital Discovery".to_string(), - ['S', 'H', 'T'] => "Shin Ho Tech".to_string(), - ['S', 'I', 'A'] => "SIEMENS AG".to_string(), - ['S', 'I', 'B'] => "Sanyo Electric Company Ltd".to_string(), - ['S', 'I', 'C'] => "Sysmate Corporation".to_string(), - ['S', 'I', 'D'] => "Seiko Instruments Information Devices Inc".to_string(), - ['S', 'I', 'E'] => "Siemens".to_string(), - ['S', 'I', 'G'] => "Sigma Designs Inc".to_string(), - ['S', 'I', 'I'] => "Silicon Image, Inc.".to_string(), - ['S', 'I', 'L'] => "Silicon Laboratories, Inc".to_string(), - ['S', 'I', 'M'] => "S3 Inc".to_string(), - ['S', 'I', 'N'] => "Singular Technology Co., Ltd.".to_string(), - ['S', 'I', 'R'] => "Sirius Technologies Pty Ltd".to_string(), - ['S', 'I', 'S'] => "Silicon Integrated Systems Corporation".to_string(), - ['S', 'I', 'T'] => "Sitintel".to_string(), - ['S', 'I', 'U'] => "Seiko Instruments USA Inc".to_string(), - ['S', 'I', 'X'] => "Zuniq Data Corporation".to_string(), - ['S', 'J', 'E'] => "Sejin Electron Inc".to_string(), - ['S', 'K', 'D'] => "Schneider & Koch".to_string(), - ['S', 'K', 'G'] => "Shenzhen KTC Technology Group".to_string(), - ['S', 'K', 'I'] => "LLC SKTB “SKIT”".to_string(), - ['S', 'K', 'M'] => "Guangzhou Teclast Information Technology Limited".to_string(), - ['S', 'K', 'T'] => "Samsung Electro-Mechanics Company Ltd".to_string(), - ['S', 'K', 'W'] => "Skyworth".to_string(), - ['S', 'K', 'Y'] => "SKYDATA S.P.A.".to_string(), - ['S', 'L', 'A'] => "Systeme Lauer GmbH&Co KG".to_string(), - ['S', 'L', 'B'] => "Shlumberger Ltd".to_string(), - ['S', 'L', 'C'] => "Syslogic Datentechnik AG".to_string(), - ['S', 'L', 'F'] => "StarLeaf".to_string(), - ['S', 'L', 'H'] => "Silicon Library Inc.".to_string(), - ['S', 'L', 'I'] => "Symbios Logic Inc".to_string(), - ['S', 'L', 'K'] => "Silitek Corporation".to_string(), - ['S', 'L', 'M'] => "Solomon Technology Corporation".to_string(), - ['S', 'L', 'R'] => "Schlumberger Technology Corporate".to_string(), - ['S', 'L', 'S'] => "Schnick-Schnack-Systems GmbH".to_string(), - ['S', 'L', 'T'] => "Salt Internatioinal Corp.".to_string(), - ['S', 'L', 'X'] => "Specialix".to_string(), - ['S', 'M', 'A'] => "SMART Modular Technologies".to_string(), - ['S', 'M', 'B'] => "Schlumberger".to_string(), - ['S', 'M', 'C'] => "Standard Microsystems Corporation".to_string(), - ['S', 'M', 'E'] => "Sysmate Company".to_string(), - ['S', 'M', 'I'] => "SpaceLabs Medical Inc".to_string(), - ['S', 'M', 'K'] => "SMK CORPORATION".to_string(), - ['S', 'M', 'L'] => "Sumitomo Metal Industries, Ltd.".to_string(), - ['S', 'M', 'M'] => "Shark Multimedia Inc".to_string(), - ['S', 'M', 'N'] => "Somnium Space Ltd.".to_string(), - ['S', 'M', 'O'] => "STMicroelectronics".to_string(), - ['S', 'M', 'P'] => "Simple Computing".to_string(), - ['S', 'M', 'R'] => "B.& V. s.r.l.".to_string(), - ['S', 'M', 'S'] => "Silicom Multimedia Systems Inc".to_string(), - ['S', 'M', 'T'] => "Silcom Manufacturing Tech Inc".to_string(), - ['S', 'N', 'C'] => "Sentronic International Corp.".to_string(), - ['S', 'N', 'I'] => "Siemens Microdesign GmbH".to_string(), - ['S', 'N', 'K'] => "S&K Electronics".to_string(), - ['S', 'N', 'N'] => "SUNNY ELEKTRONIK".to_string(), - ['S', 'N', 'O'] => "SINOSUN TECHNOLOGY CO., LTD".to_string(), - ['S', 'N', 'P'] => "Siemens Nixdorf Info Systems".to_string(), - ['S', 'N', 'S'] => "Cirtech (UK) Ltd".to_string(), - ['S', 'N', 'T'] => "SuperNet Inc".to_string(), - ['S', 'N', 'V'] => "SONOVE GmbH".to_string(), - ['S', 'N', 'W'] => "Snell & Wilcox".to_string(), - ['S', 'N', 'X'] => "Sonix Comm. Ltd".to_string(), - ['S', 'N', 'Y'] => "Sony".to_string(), - ['S', 'O', 'C'] => "Santec Corporation".to_string(), - ['S', 'O', 'I'] => "Silicon Optix Corporation".to_string(), - ['S', 'O', 'L'] => "Solitron Technologies Inc".to_string(), - ['S', 'O', 'N'] => "Sony".to_string(), - ['S', 'O', 'R'] => "Sorcus Computer GmbH".to_string(), - ['S', 'O', 'T'] => "Sotec Company Ltd".to_string(), - ['S', 'O', 'Y'] => "SOYO Group, Inc".to_string(), - ['S', 'P', 'C'] => "SpinCore Technologies, Inc".to_string(), - ['S', 'P', 'E'] => "SPEA Software AG".to_string(), - ['S', 'P', 'H'] => "G&W Instruments GmbH".to_string(), - ['S', 'P', 'I'] => "SPACE-I Co., Ltd.".to_string(), - ['S', 'P', 'K'] => "SpeakerCraft".to_string(), - ['S', 'P', 'L'] => "Smart Silicon Systems Pty Ltd".to_string(), - ['S', 'P', 'N'] => "Sapience Corporation".to_string(), - ['S', 'P', 'O'] => "SAMPO CORPORATION".to_string(), - ['S', 'P', 'R'] => "pmns GmbH".to_string(), - ['S', 'P', 'S'] => "Synopsys Inc".to_string(), - ['S', 'P', 'T'] => "Sceptre Tech Inc".to_string(), - ['S', 'P', 'U'] => "SIM2 Multimedia S.P.A.".to_string(), - ['S', 'P', 'X'] => "Simplex Time Recorder Co.".to_string(), - ['S', 'Q', 'T'] => "Sequent Computer Systems Inc".to_string(), - ['S', 'R', 'C'] => "Integrated Tech Express Inc".to_string(), - ['S', 'R', 'D'] => "Setred".to_string(), - ['S', 'R', 'F'] => "Surf Communication Solutions Ltd".to_string(), - ['S', 'R', 'G'] => "Intuitive Surgical, Inc.".to_string(), - ['S', 'R', 'S'] => "SR-Systems e.K.".to_string(), - ['S', 'R', 'T'] => "SeeReal Technologies GmbH".to_string(), - ['S', 'S', 'C'] => "Sierra Semiconductor Inc".to_string(), - ['S', 'S', 'D'] => "FlightSafety International".to_string(), - ['S', 'S', 'E'] => "Samsung Electronic Co.".to_string(), - ['S', 'S', 'G'] => "Steelseries ApS".to_string(), - ['S', 'S', 'I'] => "S-S Technology Inc".to_string(), - ['S', 'S', 'J'] => "Sankyo Seiki Mfg.co., Ltd".to_string(), - ['S', 'S', 'L'] => "Shenzhen South-Top Computer Co., Ltd.".to_string(), - ['S', 'S', 'P'] => "Spectrum Signal Proecessing Inc".to_string(), - ['S', 'S', 'S'] => "S3 Inc".to_string(), - ['S', 'S', 'T'] => "SystemSoft Corporation".to_string(), - ['S', 'T', 'A'] => "ST Electronics Systems Assembly Pte Ltd".to_string(), - ['S', 'T', 'B'] => "STB Systems Inc".to_string(), - ['S', 'T', 'C'] => "STAC Electronics".to_string(), - ['S', 'T', 'D'] => "STD Computer Inc".to_string(), - ['S', 'T', 'E'] => "SII Ido-Tsushin Inc".to_string(), - ['S', 'T', 'F'] => "Starflight Electronics".to_string(), - ['S', 'T', 'G'] => "StereoGraphics Corp.".to_string(), - ['S', 'T', 'H'] => "Semtech Corporation".to_string(), - ['S', 'T', 'I'] => "Smart Tech Inc".to_string(), - ['S', 'T', 'K'] => "SANTAK CORP.".to_string(), - ['S', 'T', 'L'] => "SigmaTel Inc".to_string(), - ['S', 'T', 'M'] => "SGS Thomson Microelectronics".to_string(), - ['S', 'T', 'N'] => "Samsung Electronics America".to_string(), - ['S', 'T', 'O'] => "Stollmann E+V GmbH".to_string(), - ['S', 'T', 'P'] => "StreamPlay Ltd".to_string(), - ['S', 'T', 'Q'] => "Synthetel Corporation".to_string(), - ['S', 'T', 'R'] => "Starlight Networks Inc".to_string(), - ['S', 'T', 'S'] => "SITECSYSTEM CO., LTD.".to_string(), - ['S', 'T', 'T'] => "Star Paging Telecom Tech (Shenzhen) Co. Ltd.".to_string(), - ['S', 'T', 'U'] => "Sentelic Corporation".to_string(), - ['S', 'T', 'V'] => "Beijing Guochengwantong Information Technology Co., Ltd.".to_string(), - ['S', 'T', 'W'] => "Starwin Inc.".to_string(), - ['S', 'T', 'X'] => "ST-Ericsson".to_string(), - ['S', 'T', 'Y'] => "SDS Technologies".to_string(), - ['S', 'U', 'B'] => "Subspace Comm. Inc".to_string(), - ['S', 'U', 'M'] => "Summagraphics Corporation".to_string(), - ['S', 'U', 'N'] => "Sun Electronics Corporation".to_string(), - ['S', 'U', 'P'] => "Supra Corporation".to_string(), - ['S', 'U', 'R'] => "Surenam Computer Corporation".to_string(), - ['S', 'V', 'A'] => "SGEG".to_string(), - ['S', 'V', 'C'] => "Intellix Corp.".to_string(), - ['S', 'V', 'D'] => "SVD Computer".to_string(), - ['S', 'V', 'I'] => "Sun Microsystems".to_string(), - ['S', 'V', 'R'] => "Sensics, Inc.".to_string(), - ['S', 'V', 'S'] => "SVSI".to_string(), - ['S', 'V', 'T'] => "SEVIT Co., Ltd.".to_string(), - ['S', 'W', 'C'] => "Software Café".to_string(), - ['S', 'W', 'I'] => "Sierra Wireless Inc.".to_string(), - ['S', 'W', 'L'] => "Sharedware Ltd".to_string(), - ['S', 'W', 'O'] => "Guangzhou Shirui Electronics Co., Ltd.".to_string(), - ['S', 'W', 'S'] => "Static".to_string(), - ['S', 'W', 'T'] => "Software Technologies Group,Inc.".to_string(), - ['S', 'X', 'B'] => "Syntax-Brillian".to_string(), - ['S', 'X', 'D'] => "Silex technology, Inc.".to_string(), - ['S', 'X', 'G'] => "SELEX GALILEO".to_string(), - ['S', 'X', 'I'] => "Silex Inside".to_string(), - ['S', 'X', 'L'] => "SolutionInside".to_string(), - ['S', 'X', 'T'] => "SHARP TAKAYA ELECTRONIC INDUSTRY CO.,LTD.".to_string(), - ['S', 'Y', 'C'] => "Sysmic".to_string(), - ['S', 'Y', 'E'] => "SY Electronics Ltd".to_string(), - ['S', 'Y', 'K'] => "Stryker Communications".to_string(), - ['S', 'Y', 'L'] => "Sylvania Computer Products".to_string(), - ['S', 'Y', 'M'] => "Symicron Computer Communications Ltd.".to_string(), - ['S', 'Y', 'N'] => "Synaptics Inc".to_string(), - ['S', 'Y', 'P'] => "SYPRO Co Ltd".to_string(), - ['S', 'Y', 'S'] => "Sysgration Ltd".to_string(), - ['S', 'Y', 'T'] => "Seyeon Tech Company Ltd".to_string(), - ['S', 'Y', 'V'] => "SYVAX Inc".to_string(), - ['S', 'Y', 'X'] => "Prime Systems, Inc.".to_string(), - ['S', 'Z', 'M'] => "Shenzhen MTC Co., Ltd".to_string(), - ['T', 'A', 'A'] => "Tandberg".to_string(), - ['T', 'A', 'B'] => "Todos Data System AB".to_string(), - ['T', 'A', 'G'] => "Teles AG".to_string(), - ['T', 'A', 'I'] => "Toshiba America Info Systems Inc".to_string(), - ['T', 'A', 'M'] => "Tamura Seisakusyo Ltd".to_string(), - ['T', 'A', 'S'] => "Taskit Rechnertechnik GmbH".to_string(), - ['T', 'A', 'T'] => "Teleliaison Inc".to_string(), - ['T', 'A', 'V'] => "Thales Avionics".to_string(), - ['T', 'A', 'X'] => "Taxan (Europe) Ltd".to_string(), - ['T', 'B', 'B'] => "Triple S Engineering Inc".to_string(), - ['T', 'B', 'C'] => "Turbo Communication, Inc".to_string(), - ['T', 'B', 'S'] => "Turtle Beach System".to_string(), - ['T', 'C', 'C'] => "Tandon Corporation".to_string(), - ['T', 'C', 'D'] => "Taicom Data Systems Co., Ltd.".to_string(), - ['T', 'C', 'E'] => "Century Corporation".to_string(), - ['T', 'C', 'F'] => "Televic Conference".to_string(), - ['T', 'C', 'H'] => "Interaction Systems, Inc".to_string(), - ['T', 'C', 'I'] => "Tulip Computers Int'l B.V.".to_string(), - ['T', 'C', 'J'] => "TEAC America Inc".to_string(), - ['T', 'C', 'L'] => "Technical Concepts Ltd".to_string(), - ['T', 'C', 'M'] => "3Com Corporation".to_string(), - ['T', 'C', 'N'] => "Tecnetics (PTY) Ltd".to_string(), - ['T', 'C', 'O'] => "Thomas-Conrad Corporation".to_string(), - ['T', 'C', 'R'] => "Thomson Consumer Electronics".to_string(), - ['T', 'C', 'S'] => "Tatung Company of America Inc".to_string(), - ['T', 'C', 'T'] => "Telecom Technology Centre Co. Ltd.".to_string(), - ['T', 'C', 'X'] => "FREEMARS Heavy Industries".to_string(), - ['T', 'D', 'C'] => "Teradici".to_string(), - ['T', 'D', 'D'] => "Tandberg Data Display AS".to_string(), - ['T', 'D', 'G'] => "Six15 Technologies".to_string(), - ['T', 'D', 'M'] => "Tandem Computer Europe Inc".to_string(), - ['T', 'D', 'P'] => "3D Perception".to_string(), - ['T', 'D', 'S'] => "Tri-Data Systems Inc".to_string(), - ['T', 'D', 'T'] => "TDT".to_string(), - ['T', 'D', 'V'] => "TDVision Systems, Inc.".to_string(), - ['T', 'D', 'Y'] => "Tandy Electronics".to_string(), - ['T', 'E', 'A'] => "TEAC System Corporation".to_string(), - ['T', 'E', 'C'] => "Tecmar Inc".to_string(), - ['T', 'E', 'K'] => "Tektronix Inc".to_string(), - ['T', 'E', 'L'] => "Promotion and Display Technology Ltd.".to_string(), - ['T', 'E', 'N'] => "Tencent".to_string(), - ['T', 'E', 'R'] => "TerraTec Electronic GmbH".to_string(), - ['T', 'E', 'T'] => "TETRADYNE CO., LTD.".to_string(), - ['T', 'E', 'V'] => "Televés, S.A.".to_string(), - ['T', 'E', 'Z'] => "Tech Source Inc.".to_string(), - ['T', 'G', 'C'] => "Toshiba Global Commerce Solutions, Inc.".to_string(), - ['T', 'G', 'I'] => "TriGem Computer Inc".to_string(), - ['T', 'G', 'M'] => "TriGem Computer,Inc.".to_string(), - ['T', 'G', 'S'] => "Torus Systems Ltd".to_string(), - ['T', 'G', 'V'] => "Grass Valley Germany GmbH".to_string(), - ['T', 'G', 'W'] => "TECHNOGYM S.p.A.".to_string(), - ['T', 'H', 'N'] => "Thundercom Holdings Sdn. Bhd.".to_string(), - ['T', 'I', 'C'] => "Trigem KinfoComm".to_string(), - ['T', 'I', 'L'] => "Technical Illusions Inc.".to_string(), - ['T', 'I', 'P'] => "TIPTEL AG".to_string(), - ['T', 'I', 'V'] => "OOO Technoinvest".to_string(), - ['T', 'I', 'X'] => "Tixi.Com GmbH".to_string(), - ['T', 'K', 'C'] => "Taiko Electric Works.LTD".to_string(), - ['T', 'K', 'G'] => "Tek Gear".to_string(), - ['T', 'K', 'N'] => "Teknor Microsystem Inc".to_string(), - ['T', 'K', 'O'] => "TouchKo, Inc.".to_string(), - ['T', 'K', 'S'] => "TimeKeeping Systems, Inc.".to_string(), - ['T', 'L', 'A'] => "Ferrari Electronic GmbH".to_string(), - ['T', 'L', 'D'] => "Telindus".to_string(), - ['T', 'L', 'E'] => "Zhejiang Tianle Digital Electric Co., Ltd.".to_string(), - ['T', 'L', 'F'] => "Teleforce.,co,ltd".to_string(), - ['T', 'L', 'I'] => "TOSHIBA TELI CORPORATION".to_string(), - ['T', 'L', 'K'] => "Telelink AG".to_string(), - ['T', 'L', 'L'] => "Thinklogical".to_string(), - ['T', 'L', 'N'] => "Techlogix Networx".to_string(), - ['T', 'L', 'S'] => "Teleste Educational OY".to_string(), - ['T', 'L', 'T'] => "Dai Telecom S.p.A.".to_string(), - ['T', 'L', 'V'] => "S3 Inc".to_string(), - ['T', 'L', 'X'] => "Telxon Corporation".to_string(), - ['T', 'L', 'Y'] => "Truly Semiconductors Ltd.".to_string(), - ['T', 'M', 'A'] => "Tianma Microelectronics Ltd.".to_string(), - ['T', 'M', 'C'] => "Techmedia Computer Systems Corporation".to_string(), - ['T', 'M', 'E'] => "AT&T Microelectronics".to_string(), - ['T', 'M', 'I'] => "Texas Microsystem".to_string(), - ['T', 'M', 'M'] => "Time Management, Inc.".to_string(), - ['T', 'M', 'O'] => "Terumo Corporation".to_string(), - ['T', 'M', 'R'] => "Taicom International Inc".to_string(), - ['T', 'M', 'S'] => "Trident Microsystems Ltd".to_string(), - ['T', 'M', 'T'] => "T-Metrics Inc.".to_string(), - ['T', 'M', 'V'] => "TeamViewer Germany GmbH".to_string(), - ['T', 'M', 'X'] => "Thermotrex Corporation".to_string(), - ['T', 'N', 'C'] => "TNC Industrial Company Ltd".to_string(), - ['T', 'N', 'J'] => "DO NOT USE - TNJ".to_string(), - ['T', 'N', 'M'] => "TECNIMAGEN SA".to_string(), - ['T', 'N', 'Y'] => "Tennyson Tech Pty Ltd".to_string(), - ['T', 'O', 'E'] => "TOEI Electronics Co., Ltd.".to_string(), - ['T', 'O', 'G'] => "The OPEN Group".to_string(), - ['T', 'O', 'L'] => "TCL Corporation".to_string(), - ['T', 'O', 'M'] => "Ceton Corporation".to_string(), - ['T', 'O', 'N'] => "TONNA".to_string(), - ['T', 'O', 'P'] => "Orion Communications Co., Ltd.".to_string(), - ['T', 'O', 'S'] => "Dynabook Inc.".to_string(), - ['T', 'O', 'U'] => "Touchstone Technology".to_string(), - ['T', 'P', 'C'] => "Touch Panel Systems Corporation".to_string(), - ['T', 'P', 'D'] => "Times (Shanghai) Computer Co., Ltd.".to_string(), - ['T', 'P', 'E'] => "Technology Power Enterprises Inc".to_string(), - ['T', 'P', 'J'] => "Junnila".to_string(), - ['T', 'P', 'K'] => "TOPRE CORPORATION".to_string(), - ['T', 'P', 'R'] => "Topro Technology Inc".to_string(), - ['T', 'P', 'S'] => "Teleprocessing Systeme GmbH".to_string(), - ['T', 'P', 'T'] => "Thruput Ltd".to_string(), - ['T', 'P', 'V'] => "Top Victory Electronics ( Fujian ) Company Ltd".to_string(), - ['T', 'P', 'Z'] => "Ypoaz Systems Inc".to_string(), - ['T', 'R', 'A'] => "TriTech Microelectronics International".to_string(), - ['T', 'R', 'B'] => "Triumph Board a.s.".to_string(), - ['T', 'R', 'C'] => "Trioc AB".to_string(), - ['T', 'R', 'D'] => "Trident Microsystem Inc".to_string(), - ['T', 'R', 'E'] => "Tremetrics".to_string(), - ['T', 'R', 'I'] => "Tricord Systems".to_string(), - ['T', 'R', 'L'] => "Royal Information".to_string(), - ['T', 'R', 'M'] => "Tekram Technology Company Ltd".to_string(), - ['T', 'R', 'N'] => "Datacommunicatie Tron B.V.".to_string(), - ['T', 'R', 'P'] => "TRAPEZE GROUP".to_string(), - ['T', 'R', 'S'] => "Torus Systems Ltd".to_string(), - ['T', 'R', 'T'] => "Tritec Electronic AG".to_string(), - ['T', 'R', 'U'] => "Aashima Technology B.V.".to_string(), - ['T', 'R', 'V'] => "Trivisio Prototyping GmbH".to_string(), - ['T', 'R', 'X'] => "Trex Enterprises".to_string(), - ['T', 'S', 'B'] => "Toshiba America Info Systems Inc".to_string(), - ['T', 'S', 'C'] => "Sanyo Electric Company Ltd".to_string(), - ['T', 'S', 'D'] => "TechniSat Digital GmbH".to_string(), - ['T', 'S', 'E'] => "Tottori Sanyo Electric".to_string(), - ['T', 'S', 'F'] => "Racal-Airtech Software Forge Ltd".to_string(), - ['T', 'S', 'G'] => "The Software Group Ltd".to_string(), - ['T', 'S', 'H'] => "ELAN MICROELECTRONICS CORPORATION".to_string(), - ['T', 'S', 'I'] => "TeleVideo Systems".to_string(), - ['T', 'S', 'L'] => "Tottori SANYO Electric Co., Ltd.".to_string(), - ['T', 'S', 'P'] => "U.S. Navy".to_string(), - ['T', 'S', 'T'] => "Transtream Inc".to_string(), - ['T', 'S', 'V'] => "TRANSVIDEO".to_string(), - ['T', 'S', 'W'] => "VRSHOW Technology Limited".to_string(), - ['T', 'S', 'Y'] => "TouchSystems".to_string(), - ['T', 'T', 'A'] => "Topson Technology Co., Ltd.".to_string(), - ['T', 'T', 'B'] => "National Semiconductor Japan Ltd".to_string(), - ['T', 'T', 'C'] => "Telecommunications Techniques Corporation".to_string(), - ['T', 'T', 'E'] => "TTE, Inc.".to_string(), - ['T', 'T', 'I'] => "Trenton Terminals Inc".to_string(), - ['T', 'T', 'K'] => "Totoku Electric Company Ltd".to_string(), - ['T', 'T', 'L'] => "2-Tel B.V".to_string(), - ['T', 'T', 'P'] => "Toshiba Corporation".to_string(), - ['T', 'T', 'R'] => "Hubei Century Joint Innovation Technology Co.Ltd".to_string(), - ['T', 'T', 'S'] => "TechnoTrend Systemtechnik GmbH".to_string(), - ['T', 'T', 'X'] => "Taitex Corporation".to_string(), - ['T', 'T', 'Y'] => "TRIDELITY Display Solutions GmbH".to_string(), - ['T', 'U', 'A'] => "T+A elektroakustik GmbH".to_string(), - ['T', 'U', 'T'] => "Tut Systems".to_string(), - ['T', 'V', 'D'] => "Tecnovision".to_string(), - ['T', 'V', 'I'] => "Truevision".to_string(), - ['T', 'V', 'L'] => "Total Vision LTD".to_string(), - ['T', 'V', 'M'] => "Taiwan Video & Monitor Corporation".to_string(), - ['T', 'V', 'O'] => "TV One Ltd".to_string(), - ['T', 'V', 'R'] => "TV Interactive Corporation".to_string(), - ['T', 'V', 'S'] => "TVS Electronics Limited".to_string(), - ['T', 'V', 'V'] => "TV1 GmbH".to_string(), - ['T', 'W', 'A'] => "Tidewater Association".to_string(), - ['T', 'W', 'E'] => "Kontron Electronik".to_string(), - ['T', 'W', 'H'] => "Twinhead International Corporation".to_string(), - ['T', 'W', 'I'] => "Easytel oy".to_string(), - ['T', 'W', 'K'] => "TOWITOKO electronics GmbH".to_string(), - ['T', 'W', 'X'] => "TEKWorx Limited".to_string(), - ['T', 'X', 'L'] => "Trixel Ltd".to_string(), - ['T', 'X', 'N'] => "Texas Insturments".to_string(), - ['T', 'X', 'T'] => "Textron Defense System".to_string(), - ['T', 'Y', 'N'] => "Tyan Computer Corporation".to_string(), - ['U', 'A', 'S'] => "Ultima Associates Pte Ltd".to_string(), - ['U', 'B', 'I'] => "Ungermann-Bass Inc".to_string(), - ['U', 'B', 'L'] => "Ubinetics Ltd.".to_string(), - ['U', 'B', 'U'] => "Canonical Ltd.".to_string(), - ['U', 'D', 'N'] => "Uniden Corporation".to_string(), - ['U', 'E', 'C'] => "Ultima Electronics Corporation".to_string(), - ['U', 'E', 'G'] => "Elitegroup Computer Systems Company Ltd".to_string(), - ['U', 'E', 'I'] => "Universal Electronics Inc".to_string(), - ['U', 'E', 'T'] => "Universal Empowering Technologies".to_string(), - ['U', 'F', 'G'] => "UNIGRAF-USA".to_string(), - ['U', 'F', 'O'] => "UFO Systems Inc".to_string(), - ['U', 'H', 'B'] => "XOCECO".to_string(), - ['U', 'I', 'C'] => "Uniform Industrial Corporation".to_string(), - ['U', 'J', 'R'] => "Ueda Japan Radio Co., Ltd.".to_string(), - ['U', 'L', 'T'] => "Ultra Network Tech".to_string(), - ['U', 'M', 'C'] => "United Microelectr Corporation".to_string(), - ['U', 'M', 'G'] => "Umezawa Giken Co.,Ltd".to_string(), - ['U', 'M', 'M'] => "Universal Multimedia".to_string(), - ['U', 'M', 'T'] => "UltiMachine".to_string(), - ['U', 'N', 'A'] => "Unisys DSD".to_string(), - ['U', 'N', 'B'] => "Unisys Corporation".to_string(), - ['U', 'N', 'C'] => "Unisys Corporation".to_string(), - ['U', 'N', 'D'] => "Unisys Corporation".to_string(), - ['U', 'N', 'E'] => "Unisys Corporation".to_string(), - ['U', 'N', 'F'] => "Unisys Corporation".to_string(), - ['U', 'N', 'I'] => "Uniform Industry Corp.".to_string(), - ['U', 'N', 'M'] => "Unisys Corporation".to_string(), - ['U', 'N', 'O'] => "Unisys Corporation".to_string(), - ['U', 'N', 'P'] => "Unitop".to_string(), - ['U', 'N', 'S'] => "Unisys Corporation".to_string(), - ['U', 'N', 'T'] => "Unisys Corporation".to_string(), - ['U', 'N', 'Y'] => "Unicate".to_string(), - ['U', 'P', 'P'] => "UPPI".to_string(), - ['U', 'P', 'S'] => "Systems Enhancement".to_string(), - ['U', 'R', 'D'] => "Video Computer S.p.A.".to_string(), - ['U', 'S', 'A'] => "Utimaco Safeware AG".to_string(), - ['U', 'S', 'D'] => "U.S. Digital Corporation".to_string(), - ['U', 'S', 'E'] => "U. S. Electronics Inc.".to_string(), - ['U', 'S', 'I'] => "Universal Scientific Industrial Co., Ltd.".to_string(), - ['U', 'S', 'R'] => "U.S. Robotics Inc".to_string(), - ['U', 'T', 'C'] => "Unicompute Technology Co., Ltd.".to_string(), - ['U', 'T', 'D'] => "Up to Date Tech".to_string(), - ['U', 'W', 'C'] => "Uniwill Computer Corp.".to_string(), - ['V', 'A', 'D'] => "Vaddio, LLC".to_string(), - ['V', 'A', 'I'] => "VAIO Corporation".to_string(), - ['V', 'A', 'L'] => "Valence Computing Corporation".to_string(), - ['V', 'A', 'R'] => "Varian Australia Pty Ltd".to_string(), - ['V', 'A', 'T'] => "VADATECH INC".to_string(), - ['V', 'A', 'V'] => "aviica".to_string(), - ['V', 'B', 'R'] => "VBrick Systems Inc.".to_string(), - ['V', 'B', 'T'] => "Valley Board Ltda".to_string(), - ['V', 'C', 'C'] => "Virtual Computer Corporation".to_string(), - ['V', 'C', 'E'] => "VARCem".to_string(), - ['V', 'C', 'I'] => "VistaCom Inc".to_string(), - ['V', 'C', 'J'] => "Victor Company of Japan, Limited".to_string(), - ['V', 'C', 'M'] => "Vector Magnetics, LLC".to_string(), - ['V', 'C', 'X'] => "VCONEX".to_string(), - ['V', 'D', 'A'] => "Victor Data Systems".to_string(), - ['V', 'D', 'C'] => "VDC Display Systems".to_string(), - ['V', 'D', 'M'] => "Vadem".to_string(), - ['V', 'D', 'O'] => "Video & Display Oriented Corporation".to_string(), - ['V', 'D', 'S'] => "Vidisys GmbH & Company".to_string(), - ['V', 'D', 'T'] => "Viditec, Inc.".to_string(), - ['V', 'E', 'C'] => "Vector Informatik GmbH".to_string(), - ['V', 'E', 'K'] => "Vektrex".to_string(), - ['V', 'E', 'S'] => "Vestel Elektronik Sanayi ve Ticaret A. S.".to_string(), - ['V', 'F', 'I'] => "VeriFone Inc".to_string(), - ['V', 'H', 'I'] => "Macrocad Development Inc.".to_string(), - ['V', 'I', 'A'] => "VIA Tech Inc".to_string(), - ['V', 'I', 'B'] => "Tatung UK Ltd".to_string(), - ['V', 'I', 'C'] => "Victron B.V.".to_string(), - ['V', 'I', 'D'] => "Ingram Macrotron Germany".to_string(), - ['V', 'I', 'K'] => "Viking Connectors".to_string(), - ['V', 'I', 'M'] => "Via Mons Ltd.".to_string(), - ['V', 'I', 'N'] => "Vine Micros Ltd".to_string(), - ['V', 'I', 'O'] => "Zake IP Holdings LLC (3B tech)".to_string(), - ['V', 'I', 'R'] => "Visual Interface, Inc".to_string(), - ['V', 'I', 'S'] => "Visioneer".to_string(), - ['V', 'I', 'T'] => "Visitech AS".to_string(), - ['V', 'I', 'Z'] => "VIZIO, Inc".to_string(), - ['V', 'L', 'B'] => "ValleyBoard Ltda.".to_string(), - ['V', 'L', 'C'] => "VersaLogic Corporation".to_string(), - ['V', 'L', 'K'] => "Vislink International Ltd".to_string(), - ['V', 'L', 'M'] => "LENOVO BEIJING CO. LTD.".to_string(), - ['V', 'L', 'T'] => "VideoLan Technologies".to_string(), - ['V', 'L', 'V'] => "Valve Corporation".to_string(), - ['V', 'M', 'I'] => "Vermont Microsystems".to_string(), - ['V', 'M', 'L'] => "Vine Micros Limited".to_string(), - ['V', 'M', 'W'] => "VMware Inc.,".to_string(), - ['V', 'N', 'C'] => "Vinca Corporation".to_string(), - ['V', 'N', 'X'] => "Venetex Corporation".to_string(), - ['V', 'O', 'B'] => "MaxData Computer AG".to_string(), - ['V', 'P', 'I'] => "Video Products Inc".to_string(), - ['V', 'P', 'R'] => "Best Buy".to_string(), - ['V', 'P', 'X'] => "VPixx Technologies Inc.".to_string(), - ['V', 'Q', '@'] => "Vision Quest".to_string(), - ['V', 'R', 'C'] => "Virtual Resources Corporation".to_string(), - ['V', 'R', 'G'] => "VRgineers, Inc.".to_string(), - ['V', 'R', 'M'] => "VRmagic Holding AG".to_string(), - ['V', 'R', 'S'] => "VRstudios, Inc.".to_string(), - ['V', 'R', 'T'] => "Varjo Technologies".to_string(), - ['V', 'S', 'C'] => "ViewSonic Corporation".to_string(), - ['V', 'S', 'D'] => "3M".to_string(), - ['V', 'S', 'I'] => "VideoServer".to_string(), - ['V', 'S', 'N'] => "Ingram Macrotron".to_string(), - ['V', 'S', 'P'] => "Vision Systems GmbH".to_string(), - ['V', 'S', 'R'] => "V-Star Electronics Inc.".to_string(), - ['V', 'T', 'B'] => "Videotechnik Breithaupt".to_string(), - ['V', 'T', 'C'] => "VTel Corporation".to_string(), - ['V', 'T', 'G'] => "Voice Technologies Group Inc".to_string(), - ['V', 'T', 'I'] => "VLSI Tech Inc".to_string(), - ['V', 'T', 'K'] => "Viewteck Co., Ltd.".to_string(), - ['V', 'T', 'L'] => "Vivid Technology Pte Ltd".to_string(), - ['V', 'T', 'M'] => "Miltope Corporation".to_string(), - ['V', 'T', 'N'] => "VIDEOTRON CORP.".to_string(), - ['V', 'T', 'S'] => "VTech Computers Ltd".to_string(), - ['V', 'T', 'V'] => "VATIV Technologies".to_string(), - ['V', 'T', 'X'] => "Vestax Corporation".to_string(), - ['V', 'U', 'T'] => "Vutrix (UK) Ltd".to_string(), - ['V', 'V', 'I'] => "VITEC".to_string(), - ['V', 'W', 'B'] => "Vweb Corp.".to_string(), - ['W', 'A', 'C'] => "Wacom Tech".to_string(), - ['W', 'A', 'L'] => "Wave Access".to_string(), - ['W', 'A', 'N'] => "DO NOT USE - WAN".to_string(), - ['W', 'A', 'V'] => "Wavephore".to_string(), - ['W', 'B', 'N'] => "MicroSoftWare".to_string(), - ['W', 'B', 'S'] => "WB Systemtechnik GmbH".to_string(), - ['W', 'C', 'I'] => "Wisecom Inc".to_string(), - ['W', 'C', 'S'] => "Woodwind Communications Systems Inc".to_string(), - ['W', 'D', 'C'] => "Western Digital".to_string(), - ['W', 'D', 'E'] => "Westinghouse Digital Electronics".to_string(), - ['W', 'E', 'B'] => "WebGear Inc".to_string(), - ['W', 'E', 'C'] => "Winbond Electronics Corporation".to_string(), - ['W', 'E', 'L'] => "W-DEV".to_string(), - ['W', 'E', 'Y'] => "WEY Design AG".to_string(), - ['W', 'H', 'I'] => "Whistle Communications".to_string(), - ['W', 'I', 'I'] => "Innoware Inc".to_string(), - ['W', 'I', 'L'] => "WIPRO Information Technology Ltd".to_string(), - ['W', 'I', 'N'] => "Wintop Technology Inc".to_string(), - ['W', 'I', 'P'] => "Wipro Infotech".to_string(), - ['W', 'K', 'H'] => "Uni-Take Int'l Inc.".to_string(), - ['W', 'L', 'D'] => "Wildfire Communications Inc".to_string(), - ['W', 'L', 'F'] => "WOLF Advanced Technology".to_string(), - ['W', 'M', 'I'] => "Weidmuller Interface GmbH & Co. KG".to_string(), - ['W', 'M', 'L'] => "Wolfson Microelectronics Ltd".to_string(), - ['W', 'M', 'O'] => "Westermo Teleindustri AB".to_string(), - ['W', 'M', 'T'] => "Winmate Communication Inc".to_string(), - ['W', 'N', 'I'] => "WillNet Inc.".to_string(), - ['W', 'N', 'V'] => "Winnov L.P.".to_string(), - ['W', 'N', 'X'] => "Diebold Nixdorf Systems GmbH".to_string(), - ['W', 'P', 'A'] => "Matsushita Communication Industrial Co., Ltd.".to_string(), - ['W', 'P', 'I'] => "Wearnes Peripherals International (Pte) Ltd".to_string(), - ['W', 'R', 'C'] => "WiNRADiO Communications".to_string(), - ['W', 'S', 'C'] => "CIS Technology Inc".to_string(), - ['W', 'S', 'P'] => "Wireless And Smart Products Inc.".to_string(), - ['W', 'S', 'T'] => "Wistron Corporation".to_string(), - ['W', 'T', 'C'] => "ACC Microelectronics".to_string(), - ['W', 'T', 'I'] => "WorkStation Tech".to_string(), - ['W', 'T', 'K'] => "Wearnes Thakral Pte".to_string(), - ['W', 'T', 'S'] => "Restek Electric Company Ltd".to_string(), - ['W', 'V', 'M'] => "Wave Systems Corporation".to_string(), - ['W', 'V', 'V'] => "WolfVision GmbH".to_string(), - ['W', 'W', 'P'] => "Wipotec Wiege- und Positioniersysteme GmbH".to_string(), - ['W', 'W', 'V'] => "World Wide Video, Inc.".to_string(), - ['W', 'X', 'T'] => "Woxter Technology Co. Ltd".to_string(), - ['W', 'Y', 'R'] => "WyreStorm Technologies LLC".to_string(), - ['W', 'Y', 'S'] => "Wyse Technology".to_string(), - ['W', 'Y', 'T'] => "Wooyoung Image & Information Co.,Ltd.".to_string(), - ['X', 'A', 'C'] => "XAC Automation Corp".to_string(), - ['X', 'A', 'D'] => "Alpha Data".to_string(), - ['X', 'D', 'M'] => "XDM Ltd.".to_string(), - ['X', 'E', 'R'] => "DO NOT USE - XER".to_string(), - ['X', 'E', 'S'] => "Extreme Engineering Solutions, Inc.".to_string(), - ['X', 'F', 'G'] => "Jan Strapko - FOTO".to_string(), - ['X', 'F', 'O'] => "EXFO Electro Optical Engineering".to_string(), - ['X', 'I', 'N'] => "Xinex Networks Inc".to_string(), - ['X', 'I', 'O'] => "Xiotech Corporation".to_string(), - ['X', 'I', 'R'] => "Xirocm Inc".to_string(), - ['X', 'I', 'T'] => "Xitel Pty ltd".to_string(), - ['X', 'L', 'X'] => "Xilinx, Inc.".to_string(), - ['X', 'M', 'M'] => "C3PO S.L.".to_string(), - ['X', 'N', 'T'] => "XN Technologies, Inc.".to_string(), - ['X', 'O', 'C'] => "DO NOT USE - XOC".to_string(), - ['X', 'Q', 'U'] => "SHANGHAI SVA-DAV ELECTRONICS CO., LTD".to_string(), - ['X', 'R', 'C'] => "Xircom Inc".to_string(), - ['X', 'R', 'O'] => "XORO ELECTRONICS (CHENGDU) LIMITED".to_string(), - ['X', 'S', 'N'] => "Xscreen AS".to_string(), - ['X', 'S', 'T'] => "XS Technologies Inc".to_string(), - ['X', 'S', 'Y'] => "XSYS".to_string(), - ['X', 'T', 'D'] => "Icuiti Corporation".to_string(), - ['X', 'T', 'E'] => "X2E GmbH".to_string(), - ['X', 'T', 'L'] => "Crystal Computer".to_string(), - ['X', 'T', 'N'] => "X-10 (USA) Inc".to_string(), - ['X', 'Y', 'C'] => "Xycotec Computer GmbH".to_string(), - ['X', 'Y', 'E'] => "Shenzhen Zhuona Technology Co., Ltd.".to_string(), - ['Y', 'E', 'D'] => "Y-E Data Inc".to_string(), - ['Y', 'H', 'Q'] => "Yokogawa Electric Corporation".to_string(), - ['Y', 'H', 'W'] => "Exacom SA".to_string(), - ['Y', 'M', 'H'] => "Yamaha Corporation".to_string(), - ['Y', 'O', 'W'] => "American Biometric Company".to_string(), - ['Z', 'A', 'N'] => "Zandar Technologies plc".to_string(), - ['Z', 'A', 'X'] => "Zefiro Acoustics".to_string(), - ['Z', 'A', 'Z'] => "ZeeVee, Inc.".to_string(), - ['Z', 'B', 'R'] => "Zebra Technologies International, LLC".to_string(), - ['Z', 'B', 'X'] => "Zebax Technologies".to_string(), - ['Z', 'C', 'T'] => "ZeitControl cardsystems GmbH".to_string(), - ['Z', 'D', 'S'] => "Zenith Data Systems".to_string(), - ['Z', 'E', 'N'] => "ZENIC Inc.".to_string(), - ['Z', 'G', 'T'] => "Zenith Data Systems".to_string(), - ['Z', 'I', 'C'] => "Nationz Technologies Inc.".to_string(), - ['Z', 'M', 'C'] => "HangZhou ZMCHIVIN".to_string(), - ['Z', 'M', 'T'] => "Zalman Tech Co., Ltd.".to_string(), - ['Z', 'M', 'Z'] => "Z Microsystems".to_string(), - ['Z', 'N', 'I'] => "Zetinet Inc".to_string(), - ['Z', 'N', 'X'] => "Znyx Adv. Systems".to_string(), - ['Z', 'O', 'W'] => "Zowie Intertainment, Inc".to_string(), - ['Z', 'R', 'N'] => "Zoran Corporation".to_string(), - ['Z', 'S', 'E'] => "Zenith Data Systems".to_string(), - ['Z', 'T', 'C'] => "ZyDAS Technology Corporation".to_string(), - ['Z', 'T', 'E'] => "ZTE Corporation".to_string(), - ['Z', 'T', 'I'] => "Zoom Telephonics Inc".to_string(), - ['Z', 'T', 'M'] => "ZT Group Int'l Inc.".to_string(), - ['Z', 'T', 'T'] => "Z3 Technology".to_string(), - ['Z', 'W', 'E'] => "Shenzhen Zowee Technology Co., LTD".to_string(), - ['Z', 'Y', 'D'] => "Zydacron Inc".to_string(), - ['Z', 'Y', 'P'] => "Zypcom Inc".to_string(), - ['Z', 'Y', 'T'] => "Zytex Computers".to_string(), - ['Z', 'Y', 'X'] => "Zyxel".to_string(), - ['Z', 'Z', 'Z'] => "Boca Research Inc".to_string(), - _ => vendor.iter().collect(), - } -} diff --git a/src/backend/udev/drm/util.rs b/src/backend/udev/drm/util.rs index 8900831..558d953 100644 --- a/src/backend/udev/drm/util.rs +++ b/src/backend/udev/drm/util.rs @@ -1,129 +1,19 @@ -use std::{ffi::CString, io::Write, mem::MaybeUninit, num::NonZeroU32, time::Duration}; +use std::{ffi::CString, io::Write, time::Duration}; use anyhow::Context; use drm_sys::{ drm_mode_modeinfo, DRM_MODE_FLAG_NHSYNC, DRM_MODE_FLAG_NVSYNC, DRM_MODE_FLAG_PHSYNC, DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_USERDEF, }; -use libdisplay_info_sys::cvt::{ - di_cvt_compute, di_cvt_options, di_cvt_reduced_blanking_version_DI_CVT_REDUCED_BLANKING_NONE, - di_cvt_timing, -}; +use libdisplay_info::cvt::{self, ReducedBlankingVersion}; use pinnacle_api_defs::pinnacle::output::v0alpha1::SetModelineRequest; use smithay::reexports::drm::{ self, - control::{connector, property, Device, ModeFlags, ResourceHandle}, + control::{property, Device, ModeFlags, ResourceHandle}, }; -use super::edid_manus::get_manufacturer; - // A bunch of this stuff is from cosmic-comp -#[derive(Debug, Clone)] -pub struct EdidInfo { - pub model: String, - pub manufacturer: String, - pub serial: Option, -} - -impl EdidInfo { - pub fn try_from_connector( - device: &impl Device, - connector: connector::Handle, - ) -> anyhow::Result { - let edid_prop = get_drm_property(device, connector, "EDID")?; - let edid_info = device.get_property(edid_prop)?; - - let mut info = Err(anyhow::anyhow!("No info")); - - let props = device.get_properties(connector)?; - let (ids, vals) = props.as_props_and_values(); - for (&id, &val) in ids.iter().zip(vals.iter()) { - if id == edid_prop { - if let property::Value::Blob(edid_blob) = edid_info.value_type().convert_value(val) - { - let blob = device.get_property_blob(edid_blob)?; - info = parse_edid(&blob); - } - break; - } - } - - info - } -} - -/// Minimally parse the model and manufacturer from the given EDID data buffer. -/// -/// `edid-rs` does not properly parse manufacturer ids (it has the order of the id bytes reversed -/// and doesn't add 64 to map the byte to a character), and it additionally -/// fails to parse detailed timing descriptors with an hactive that's divisible by 256 -/// (see https://github.com/tuomas56/edid-rs/pull/1). -/// -/// Because of this, we're just rolling our own minimal parser instead. -fn parse_edid(buffer: &[u8]) -> anyhow::Result { - // Manufacterer id is bytes 8-9, big endian - let manu_id = u16::from_be_bytes(buffer[8..=9].try_into()?); - - // Characters are bits 14-10, 9-5, and 4-0. - // They also map 0b00001..=0b11010 to A..=Z, so add 64 to get the character. - let char1 = ((manu_id & 0b0111110000000000) >> 10) as u8 + 64; - let char2 = ((manu_id & 0b0000001111100000) >> 5) as u8 + 64; - let char3 = (manu_id & 0b0000000000011111) as u8 + 64; - - let manufacturer = get_manufacturer([char1 as char, char2 as char, char3 as char]); - - // INFO: This probably *isn't* completely unique between all monitors - let serial = u32::from_le_bytes(buffer[12..=15].try_into()?); - - // Monitor names are inside of these display/monitor descriptors at bytes 72..=125. - // Each descriptor is 18 bytes long. - let descriptor1 = &buffer[72..=89]; - let descriptor2 = &buffer[90..=107]; - let descriptor3 = &buffer[108..=125]; - - let descriptors = [descriptor1, descriptor2, descriptor3]; - - let model = descriptors - .into_iter() - .find_map(|desc| { - // The descriptor is a monitor descriptor if its first 2 bytes are 0. - let is_monitor_descriptor = desc[0..=1] == [0, 0]; - // The descriptor describes a monitor name if it has the tag 0xfc at byte 3. - let is_monitor_name = desc[3] == 0xfc; - - if is_monitor_descriptor && is_monitor_name { - // Name is up to 13 bytes at bytes 5..=17 within the descriptor. - let monitor_name = desc[5..=17] - .iter() - // Names are terminated with a newline if shorter than 13 bytes. - .take_while(|&&byte| byte != b'\n') - .map(|&byte| byte as char) - .collect::(); - - // NOTE: The EDID spec mandates that bytes after the newline are padded with - // | spaces (0x20), but we're just gonna ignore that haha - - Some(monitor_name) - } else { - None - } - }) - .or_else(|| { - // Get the product code instead. - // It's at bytes 10..=11, little-endian. - let product_code = u16::from_le_bytes(buffer[10..=11].try_into().ok()?); - Some(format!("{product_code:x}")) - }) - .unwrap_or("Unknown".to_string()); - - Ok(EdidInfo { - model, - manufacturer, - serial: NonZeroU32::new(serial), - }) -} - pub(super) fn get_drm_property( device: &impl Device, handle: impl ResourceHandle, @@ -221,8 +111,8 @@ pub fn create_drm_mode(width: i32, height: i32, refresh_mhz: Option) -> drm // From https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/95ac3e99242b4e7f59f00dd073ede405ff8e9e26/backend/drm/util.c#L247 fn generate_cvt_mode(hdisplay: i32, vdisplay: i32, vrefresh: Option) -> drm_mode_modeinfo { - let options: di_cvt_options = di_cvt_options { - red_blank_ver: di_cvt_reduced_blanking_version_DI_CVT_REDUCED_BLANKING_NONE, + let options = cvt::Options { + red_blank_ver: ReducedBlankingVersion::None, h_pixels: hdisplay, v_lines: vdisplay, ip_freq_rqd: vrefresh.unwrap_or(60.0), @@ -234,12 +124,7 @@ fn generate_cvt_mode(hdisplay: i32, vdisplay: i32, vrefresh: Option) -> drm margins_rqd: false, }; - let mut timing = MaybeUninit::::zeroed(); - // SAFETY: is an ffi function - unsafe { di_cvt_compute(timing.as_mut_ptr(), &options as *const _) }; - - // SAFETY: Initialized in the function above - let timing = unsafe { timing.assume_init() }; + let timing = cvt::Timing::compute(options); let hsync_start = (hdisplay + timing.h_front_porch as i32) as u16; let vsync_start = (timing.v_lines_rnd + timing.v_front_porch) as u16; diff --git a/src/output.rs b/src/output.rs index aea4db3..b610b6a 100644 --- a/src/output.rs +++ b/src/output.rs @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later -use std::{cell::RefCell, num::NonZeroU32}; +use std::cell::RefCell; use indexmap::IndexSet; use pinnacle_api_defs::pinnacle::signal::v0alpha1::{ @@ -64,7 +64,8 @@ pub struct OutputState { pub focus_stack: WindowKeyboardFocusStack, pub screencopy: Option, - pub serial: Option, + // This monitor's edid serial. "Unknown" if it doesn't have one. + pub serial: String, pub modes: Vec, pub lock_surface: Option, pub blanking_state: BlankingState, diff --git a/src/protocol/output_management.rs b/src/protocol/output_management.rs index 574e3d8..7dac23b 100644 --- a/src/protocol/output_management.rs +++ b/src/protocol/output_management.rs @@ -397,10 +397,7 @@ where if head.version() >= zwlr_output_head_v1::EVT_MAKE_SINCE { head.make(physical_props.make); head.model(physical_props.model); - - if let Some(serial_number) = output.with_state(|state| state.serial) { - head.serial_number(serial_number.to_string()); - } + head.serial_number(output.with_state(|state| state.serial.clone())); } if head.version() >= zwlr_output_head_v1::EVT_ADAPTIVE_SYNC_SINCE { diff --git a/tests/common/mod.rs b/tests/common/mod.rs index 97ca1c6..cf4be14 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -1,4 +1,4 @@ -use std::{panic::UnwindSafe, path::PathBuf, time::Duration}; +use std::{panic::UnwindSafe, path::PathBuf, sync::Mutex, time::Duration}; use anyhow::anyhow; use pinnacle::{state::State, tag::TagId}; @@ -27,6 +27,8 @@ pub fn sleep_millis(millis: u64) { std::thread::sleep(Duration::from_millis(millis)); } +static MUTEX: Mutex<()> = Mutex::new(()); + pub fn test_api(test: F) -> anyhow::Result<()> where F: FnOnce(Sender>) -> anyhow::Result<()> @@ -34,6 +36,14 @@ where + UnwindSafe + 'static, { + let _guard = match MUTEX.lock() { + Ok(guard) => guard, + Err(err) => { + MUTEX.clear_poison(); + err.into_inner() + } + }; + let mut event_loop = EventLoop::::try_new()?; let mut state = State::new( pinnacle::cli::Backend::Dummy,