https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56270
uint32_t m_flags;
    
    explicit constexpr Type(uint32_t flags) : m_flags(flags) {}
public:
    
    friend constexpr Type operator"" _mst(const char* c, size_t l);
    
    constexpr Type operator|(Type x) const { return Type(m_flags | x.m_flags); }
    
    constexpr Type operator&(Type x) const { return Type(m_flags & x.m_flags); }
    
    constexpr bool operator<<(Type x) const { return (x.m_flags & ~m_flags) == 0; }
    
    constexpr bool operator<(Type x) const { return m_flags < x.m_flags; }
    
    constexpr bool operator==(Type x) const { return m_flags == x.m_flags; }
    
    constexpr Type If(bool x) const { return Type(x ? m_flags : 0); }
};
inline constexpr Type operator"" _mst(const char* c, size_t l) {
    Type typ{0};
    for (const char *p = c; p < c + l; p++) {
        typ = typ | Type(