mod constants {
    
    pub const COMBINING_GLAGOLITIC_LETTER_AZU: char = '𞀀';
    
    pub const COMBINING_GLAGOLITIC_LETTER_BUKY: char = '𞀁';
    
    pub const COMBINING_GLAGOLITIC_LETTER_VEDE: char = '𞀂';
    
    pub const COMBINING_GLAGOLITIC_LETTER_GLAGOLI: char = '𞀃';
    
    pub const COMBINING_GLAGOLITIC_LETTER_DOBRO: char = '𞀄';
    
    pub const COMBINING_GLAGOLITIC_LETTER_YESTU: char = '𞀅';
    
    pub const COMBINING_GLAGOLITIC_LETTER_ZHIVETE: char = '𞀆';
    
    pub const COMBINING_GLAGOLITIC_LETTER_ZEMLJA: char = '𞀈';
    
    pub const COMBINING_GLAGOLITIC_LETTER_IZHE: char = '𞀉';
    
    pub const COMBINING_GLAGOLITIC_LETTER_INITIAL_IZHE: char = '𞀊';
    
    pub const COMBINING_GLAGOLITIC_LETTER_I: char = '𞀋';
    
    pub const COMBINING_GLAGOLITIC_LETTER_DJERVI: char = '𞀌';
    
    pub const COMBINING_GLAGOLITIC_LETTER_KAKO: char = '𞀍';
    
    pub const COMBINING_GLAGOLITIC_LETTER_LJUDIJE: char = '𞀎';
    
    pub const COMBINING_GLAGOLITIC_LETTER_MYSLITE: char = '𞀏';
    
    pub const COMBINING_GLAGOLITIC_LETTER_NASHI: char = '𞀐';
    
    pub const COMBINING_GLAGOLITIC_LETTER_ONU: char = '𞀑';
    
    pub const COMBINING_GLAGOLITIC_LETTER_POKOJI: char = '𞀒';
    
    pub const COMBINING_GLAGOLITIC_LETTER_RITSI: char = '𞀓';
    
    pub const COMBINING_GLAGOLITIC_LETTER_SLOVO: char = '𞀔';
    
    pub const COMBINING_GLAGOLITIC_LETTER_TVRIDO: char = '𞀕';
    
    pub const COMBINING_GLAGOLITIC_LETTER_UKU: char = '𞀖';
    
    pub const COMBINING_GLAGOLITIC_LETTER_FRITU: char = '𞀗';
    
    pub const COMBINING_GLAGOLITIC_LETTER_HERU: char = '𞀘';
    
    pub const COMBINING_GLAGOLITIC_LETTER_SHTA: char = '𞀛';
    
    pub const COMBINING_GLAGOLITIC_LETTER_TSI: char = '𞀜';
    
    pub const COMBINING_GLAGOLITIC_LETTER_CHRIVI: char = '𞀝';
    
    pub const COMBINING_GLAGOLITIC_LETTER_SHA: char = '𞀞';
    
    pub const COMBINING_GLAGOLITIC_LETTER_YERU: char = '𞀟';
    
    pub const COMBINING_GLAGOLITIC_LETTER_YERI: char = '𞀠';
    
    pub const COMBINING_GLAGOLITIC_LETTER_YATI: char = '𞀡';
    
    pub const COMBINING_GLAGOLITIC_LETTER_YU: char = '𞀣';
    
    pub const COMBINING_GLAGOLITIC_LETTER_SMALL_YUS: char = '𞀤';
    
    pub const COMBINING_GLAGOLITIC_LETTER_YO: char = '𞀦';
    
    pub const COMBINING_GLAGOLITIC_LETTER_IOTATED_SMALL_YUS: char = '𞀧';
    
    pub const COMBINING_GLAGOLITIC_LETTER_BIG_YUS: char = '𞀨';
    
    pub const COMBINING_GLAGOLITIC_LETTER_IOTATED_BIG_YUS: char = '𞀩';
    
    pub const COMBINING_GLAGOLITIC_LETTER_FITA: char = '𞀪';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum GlagoliticSupplement {
    
    CombiningGlagoliticLetterAzu,
    
    CombiningGlagoliticLetterBuky,
    
    CombiningGlagoliticLetterVede,
    
    CombiningGlagoliticLetterGlagoli,
    
    CombiningGlagoliticLetterDobro,
    
    CombiningGlagoliticLetterYestu,
    
    CombiningGlagoliticLetterZhivete,
    
    CombiningGlagoliticLetterZemlja,
    
    CombiningGlagoliticLetterIzhe,
    
    CombiningGlagoliticLetterInitialIzhe,
    
    CombiningGlagoliticLetterI,
    
    CombiningGlagoliticLetterDjervi,
    
    CombiningGlagoliticLetterKako,
    
    CombiningGlagoliticLetterLjudije,
    
    CombiningGlagoliticLetterMyslite,
    
    CombiningGlagoliticLetterNashi,
    
    CombiningGlagoliticLetterOnu,
    
    CombiningGlagoliticLetterPokoji,
    
    CombiningGlagoliticLetterRitsi,
    
    CombiningGlagoliticLetterSlovo,
    
    CombiningGlagoliticLetterTvrido,
    
    CombiningGlagoliticLetterUku,
    
    CombiningGlagoliticLetterFritu,
    
    CombiningGlagoliticLetterHeru,
    
    CombiningGlagoliticLetterShta,
    
    CombiningGlagoliticLetterTsi,
    
    CombiningGlagoliticLetterChrivi,
    
    CombiningGlagoliticLetterSha,
    
    CombiningGlagoliticLetterYeru,
    
    CombiningGlagoliticLetterYeri,
    
    CombiningGlagoliticLetterYati,
    
    CombiningGlagoliticLetterYu,
    
    CombiningGlagoliticLetterSmallYus,
    
    CombiningGlagoliticLetterYo,
    
    CombiningGlagoliticLetterIotatedSmallYus,
    
    CombiningGlagoliticLetterBigYus,
    
    CombiningGlagoliticLetterIotatedBigYus,
    
    CombiningGlagoliticLetterFita,
}
impl Into<char> for GlagoliticSupplement {
    fn into(self) -> char {
        use constants::*;
        match self {
            GlagoliticSupplement::CombiningGlagoliticLetterAzu => COMBINING_GLAGOLITIC_LETTER_AZU,
            GlagoliticSupplement::CombiningGlagoliticLetterBuky => COMBINING_GLAGOLITIC_LETTER_BUKY,
            GlagoliticSupplement::CombiningGlagoliticLetterVede => COMBINING_GLAGOLITIC_LETTER_VEDE,
            GlagoliticSupplement::CombiningGlagoliticLetterGlagoli => COMBINING_GLAGOLITIC_LETTER_GLAGOLI,
            GlagoliticSupplement::CombiningGlagoliticLetterDobro => COMBINING_GLAGOLITIC_LETTER_DOBRO,
            GlagoliticSupplement::CombiningGlagoliticLetterYestu => COMBINING_GLAGOLITIC_LETTER_YESTU,
            GlagoliticSupplement::CombiningGlagoliticLetterZhivete => COMBINING_GLAGOLITIC_LETTER_ZHIVETE,
            GlagoliticSupplement::CombiningGlagoliticLetterZemlja => COMBINING_GLAGOLITIC_LETTER_ZEMLJA,
            GlagoliticSupplement::CombiningGlagoliticLetterIzhe => COMBINING_GLAGOLITIC_LETTER_IZHE,
            GlagoliticSupplement::CombiningGlagoliticLetterInitialIzhe => COMBINING_GLAGOLITIC_LETTER_INITIAL_IZHE,
            GlagoliticSupplement::CombiningGlagoliticLetterI => COMBINING_GLAGOLITIC_LETTER_I,
            GlagoliticSupplement::CombiningGlagoliticLetterDjervi => COMBINING_GLAGOLITIC_LETTER_DJERVI,
            GlagoliticSupplement::CombiningGlagoliticLetterKako => COMBINING_GLAGOLITIC_LETTER_KAKO,
            GlagoliticSupplement::CombiningGlagoliticLetterLjudije => COMBINING_GLAGOLITIC_LETTER_LJUDIJE,
            GlagoliticSupplement::CombiningGlagoliticLetterMyslite => COMBINING_GLAGOLITIC_LETTER_MYSLITE,
            GlagoliticSupplement::CombiningGlagoliticLetterNashi => COMBINING_GLAGOLITIC_LETTER_NASHI,
            GlagoliticSupplement::CombiningGlagoliticLetterOnu => COMBINING_GLAGOLITIC_LETTER_ONU,
            GlagoliticSupplement::CombiningGlagoliticLetterPokoji => COMBINING_GLAGOLITIC_LETTER_POKOJI,
            GlagoliticSupplement::CombiningGlagoliticLetterRitsi => COMBINING_GLAGOLITIC_LETTER_RITSI,
            GlagoliticSupplement::CombiningGlagoliticLetterSlovo => COMBINING_GLAGOLITIC_LETTER_SLOVO,
            GlagoliticSupplement::CombiningGlagoliticLetterTvrido => COMBINING_GLAGOLITIC_LETTER_TVRIDO,
            GlagoliticSupplement::CombiningGlagoliticLetterUku => COMBINING_GLAGOLITIC_LETTER_UKU,
            GlagoliticSupplement::CombiningGlagoliticLetterFritu => COMBINING_GLAGOLITIC_LETTER_FRITU,
            GlagoliticSupplement::CombiningGlagoliticLetterHeru => COMBINING_GLAGOLITIC_LETTER_HERU,
            GlagoliticSupplement::CombiningGlagoliticLetterShta => COMBINING_GLAGOLITIC_LETTER_SHTA,
            GlagoliticSupplement::CombiningGlagoliticLetterTsi => COMBINING_GLAGOLITIC_LETTER_TSI,
            GlagoliticSupplement::CombiningGlagoliticLetterChrivi => COMBINING_GLAGOLITIC_LETTER_CHRIVI,
            GlagoliticSupplement::CombiningGlagoliticLetterSha => COMBINING_GLAGOLITIC_LETTER_SHA,
            GlagoliticSupplement::CombiningGlagoliticLetterYeru => COMBINING_GLAGOLITIC_LETTER_YERU,
            GlagoliticSupplement::CombiningGlagoliticLetterYeri => COMBINING_GLAGOLITIC_LETTER_YERI,
            GlagoliticSupplement::CombiningGlagoliticLetterYati => COMBINING_GLAGOLITIC_LETTER_YATI,
            GlagoliticSupplement::CombiningGlagoliticLetterYu => COMBINING_GLAGOLITIC_LETTER_YU,
            GlagoliticSupplement::CombiningGlagoliticLetterSmallYus => COMBINING_GLAGOLITIC_LETTER_SMALL_YUS,
            GlagoliticSupplement::CombiningGlagoliticLetterYo => COMBINING_GLAGOLITIC_LETTER_YO,
            GlagoliticSupplement::CombiningGlagoliticLetterIotatedSmallYus => COMBINING_GLAGOLITIC_LETTER_IOTATED_SMALL_YUS,
            GlagoliticSupplement::CombiningGlagoliticLetterBigYus => COMBINING_GLAGOLITIC_LETTER_BIG_YUS,
            GlagoliticSupplement::CombiningGlagoliticLetterIotatedBigYus => COMBINING_GLAGOLITIC_LETTER_IOTATED_BIG_YUS,
            GlagoliticSupplement::CombiningGlagoliticLetterFita => COMBINING_GLAGOLITIC_LETTER_FITA,
        }
    }
}
impl std::convert::TryFrom<char> for GlagoliticSupplement {
    type Error = ();
    fn try_from(c: char) -> Result<Self, Self::Error> {
        use constants::*;
        match c {
            COMBINING_GLAGOLITIC_LETTER_AZU => Ok(GlagoliticSupplement::CombiningGlagoliticLetterAzu),
            COMBINING_GLAGOLITIC_LETTER_BUKY => Ok(GlagoliticSupplement::CombiningGlagoliticLetterBuky),
            COMBINING_GLAGOLITIC_LETTER_VEDE => Ok(GlagoliticSupplement::CombiningGlagoliticLetterVede),
            COMBINING_GLAGOLITIC_LETTER_GLAGOLI => Ok(GlagoliticSupplement::CombiningGlagoliticLetterGlagoli),
            COMBINING_GLAGOLITIC_LETTER_DOBRO => Ok(GlagoliticSupplement::CombiningGlagoliticLetterDobro),
            COMBINING_GLAGOLITIC_LETTER_YESTU => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYestu),
            COMBINING_GLAGOLITIC_LETTER_ZHIVETE => Ok(GlagoliticSupplement::CombiningGlagoliticLetterZhivete),
            COMBINING_GLAGOLITIC_LETTER_ZEMLJA => Ok(GlagoliticSupplement::CombiningGlagoliticLetterZemlja),
            COMBINING_GLAGOLITIC_LETTER_IZHE => Ok(GlagoliticSupplement::CombiningGlagoliticLetterIzhe),
            COMBINING_GLAGOLITIC_LETTER_INITIAL_IZHE => Ok(GlagoliticSupplement::CombiningGlagoliticLetterInitialIzhe),
            COMBINING_GLAGOLITIC_LETTER_I => Ok(GlagoliticSupplement::CombiningGlagoliticLetterI),
            COMBINING_GLAGOLITIC_LETTER_DJERVI => Ok(GlagoliticSupplement::CombiningGlagoliticLetterDjervi),
            COMBINING_GLAGOLITIC_LETTER_KAKO => Ok(GlagoliticSupplement::CombiningGlagoliticLetterKako),
            COMBINING_GLAGOLITIC_LETTER_LJUDIJE => Ok(GlagoliticSupplement::CombiningGlagoliticLetterLjudije),
            COMBINING_GLAGOLITIC_LETTER_MYSLITE => Ok(GlagoliticSupplement::CombiningGlagoliticLetterMyslite),
            COMBINING_GLAGOLITIC_LETTER_NASHI => Ok(GlagoliticSupplement::CombiningGlagoliticLetterNashi),
            COMBINING_GLAGOLITIC_LETTER_ONU => Ok(GlagoliticSupplement::CombiningGlagoliticLetterOnu),
            COMBINING_GLAGOLITIC_LETTER_POKOJI => Ok(GlagoliticSupplement::CombiningGlagoliticLetterPokoji),
            COMBINING_GLAGOLITIC_LETTER_RITSI => Ok(GlagoliticSupplement::CombiningGlagoliticLetterRitsi),
            COMBINING_GLAGOLITIC_LETTER_SLOVO => Ok(GlagoliticSupplement::CombiningGlagoliticLetterSlovo),
            COMBINING_GLAGOLITIC_LETTER_TVRIDO => Ok(GlagoliticSupplement::CombiningGlagoliticLetterTvrido),
            COMBINING_GLAGOLITIC_LETTER_UKU => Ok(GlagoliticSupplement::CombiningGlagoliticLetterUku),
            COMBINING_GLAGOLITIC_LETTER_FRITU => Ok(GlagoliticSupplement::CombiningGlagoliticLetterFritu),
            COMBINING_GLAGOLITIC_LETTER_HERU => Ok(GlagoliticSupplement::CombiningGlagoliticLetterHeru),
            COMBINING_GLAGOLITIC_LETTER_SHTA => Ok(GlagoliticSupplement::CombiningGlagoliticLetterShta),
            COMBINING_GLAGOLITIC_LETTER_TSI => Ok(GlagoliticSupplement::CombiningGlagoliticLetterTsi),
            COMBINING_GLAGOLITIC_LETTER_CHRIVI => Ok(GlagoliticSupplement::CombiningGlagoliticLetterChrivi),
            COMBINING_GLAGOLITIC_LETTER_SHA => Ok(GlagoliticSupplement::CombiningGlagoliticLetterSha),
            COMBINING_GLAGOLITIC_LETTER_YERU => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYeru),
            COMBINING_GLAGOLITIC_LETTER_YERI => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYeri),
            COMBINING_GLAGOLITIC_LETTER_YATI => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYati),
            COMBINING_GLAGOLITIC_LETTER_YU => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYu),
            COMBINING_GLAGOLITIC_LETTER_SMALL_YUS => Ok(GlagoliticSupplement::CombiningGlagoliticLetterSmallYus),
            COMBINING_GLAGOLITIC_LETTER_YO => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYo),
            COMBINING_GLAGOLITIC_LETTER_IOTATED_SMALL_YUS => Ok(GlagoliticSupplement::CombiningGlagoliticLetterIotatedSmallYus),
            COMBINING_GLAGOLITIC_LETTER_BIG_YUS => Ok(GlagoliticSupplement::CombiningGlagoliticLetterBigYus),
            COMBINING_GLAGOLITIC_LETTER_IOTATED_BIG_YUS => Ok(GlagoliticSupplement::CombiningGlagoliticLetterIotatedBigYus),
            COMBINING_GLAGOLITIC_LETTER_FITA => Ok(GlagoliticSupplement::CombiningGlagoliticLetterFita),
            _ => Err(()),
        }
    }
}
impl Into<u32> for GlagoliticSupplement {
    fn into(self) -> u32 {
        let c: char = self.into();
        let hex = c
            .escape_unicode()
            .to_string()
            .replace("\\u{", "")
            .replace("}", "");
        u32::from_str_radix(&hex, 16).unwrap()
    }
}
impl std::convert::TryFrom<u32> for GlagoliticSupplement {
    type Error = ();
    fn try_from(u: u32) -> Result<Self, Self::Error> {
        if let Ok(c) = char::try_from(u) {
            Self::try_from(c)
        } else {
            Err(())
        }
    }
}
impl Iterator for GlagoliticSupplement {
    type Item = Self;
    fn next(&mut self) -> Option<Self> {
        let index: u32 = (*self).into();
        use std::convert::TryFrom;
        Self::try_from(index + 1).ok()
    }
}
impl GlagoliticSupplement {
    
    pub fn new() -> Self {
        GlagoliticSupplement::CombiningGlagoliticLetterAzu
    }
    
    pub fn name(&self) -> &str {
        match self {
            GlagoliticSupplement::CombiningGlagoliticLetterAzu => "combining glagolitic letter azu",
            GlagoliticSupplement::CombiningGlagoliticLetterBuky => "combining glagolitic letter buky",
            GlagoliticSupplement::CombiningGlagoliticLetterVede => "combining glagolitic letter vede",
            GlagoliticSupplement::CombiningGlagoliticLetterGlagoli => "combining glagolitic letter glagoli",
            GlagoliticSupplement::CombiningGlagoliticLetterDobro => "combining glagolitic letter dobro",
            GlagoliticSupplement::CombiningGlagoliticLetterYestu => "combining glagolitic letter yestu",
            GlagoliticSupplement::CombiningGlagoliticLetterZhivete => "combining glagolitic letter zhivete",
            GlagoliticSupplement::CombiningGlagoliticLetterZemlja => "combining glagolitic letter zemlja",
            GlagoliticSupplement::CombiningGlagoliticLetterIzhe => "combining glagolitic letter izhe",
            GlagoliticSupplement::CombiningGlagoliticLetterInitialIzhe => "combining glagolitic letter initial izhe",
            GlagoliticSupplement::CombiningGlagoliticLetterI => "combining glagolitic letter i",
            GlagoliticSupplement::CombiningGlagoliticLetterDjervi => "combining glagolitic letter djervi",
            GlagoliticSupplement::CombiningGlagoliticLetterKako => "combining glagolitic letter kako",
            GlagoliticSupplement::CombiningGlagoliticLetterLjudije => "combining glagolitic letter ljudije",
            GlagoliticSupplement::CombiningGlagoliticLetterMyslite => "combining glagolitic letter myslite",
            GlagoliticSupplement::CombiningGlagoliticLetterNashi => "combining glagolitic letter nashi",
            GlagoliticSupplement::CombiningGlagoliticLetterOnu => "combining glagolitic letter onu",
            GlagoliticSupplement::CombiningGlagoliticLetterPokoji => "combining glagolitic letter pokoji",
            GlagoliticSupplement::CombiningGlagoliticLetterRitsi => "combining glagolitic letter ritsi",
            GlagoliticSupplement::CombiningGlagoliticLetterSlovo => "combining glagolitic letter slovo",
            GlagoliticSupplement::CombiningGlagoliticLetterTvrido => "combining glagolitic letter tvrido",
            GlagoliticSupplement::CombiningGlagoliticLetterUku => "combining glagolitic letter uku",
            GlagoliticSupplement::CombiningGlagoliticLetterFritu => "combining glagolitic letter fritu",
            GlagoliticSupplement::CombiningGlagoliticLetterHeru => "combining glagolitic letter heru",
            GlagoliticSupplement::CombiningGlagoliticLetterShta => "combining glagolitic letter shta",
            GlagoliticSupplement::CombiningGlagoliticLetterTsi => "combining glagolitic letter tsi",
            GlagoliticSupplement::CombiningGlagoliticLetterChrivi => "combining glagolitic letter chrivi",
            GlagoliticSupplement::CombiningGlagoliticLetterSha => "combining glagolitic letter sha",
            GlagoliticSupplement::CombiningGlagoliticLetterYeru => "combining glagolitic letter yeru",
            GlagoliticSupplement::CombiningGlagoliticLetterYeri => "combining glagolitic letter yeri",
            GlagoliticSupplement::CombiningGlagoliticLetterYati => "combining glagolitic letter yati",
            GlagoliticSupplement::CombiningGlagoliticLetterYu => "combining glagolitic letter yu",
            GlagoliticSupplement::CombiningGlagoliticLetterSmallYus => "combining glagolitic letter small yus",
            GlagoliticSupplement::CombiningGlagoliticLetterYo => "combining glagolitic letter yo",
            GlagoliticSupplement::CombiningGlagoliticLetterIotatedSmallYus => "combining glagolitic letter iotated small yus",
            GlagoliticSupplement::CombiningGlagoliticLetterBigYus => "combining glagolitic letter big yus",
            GlagoliticSupplement::CombiningGlagoliticLetterIotatedBigYus => "combining glagolitic letter iotated big yus",
            GlagoliticSupplement::CombiningGlagoliticLetterFita => "combining glagolitic letter fita",
        }
    }
}