Adjust struct Pinyin
authorPeng Huang <shawn.p.huang@gmail.com>
Thu, 20 May 2010 02:18:49 +0000 (10:18 +0800)
committerPeng Huang <shawn.p.huang@gmail.com>
Thu, 20 May 2010 02:18:49 +0000 (10:18 +0800)
scripts/genpytable.py
src/Database.cc
src/PinyinParserTable.h
src/Types.h

index 240401a..8128104 100644 (file)
@@ -314,12 +314,7 @@ def gen_table():
         bopomofo    : L"%s",
         sheng       : "%s",
         yun         : "%s",
-        sheng_id    : %s,
-        yun_id      : %s,
-        fsheng_id   : %s,
-        fyun_id     : %s,
-        fsheng_id_2 : %s,
-        fyun_id_2   : %s,
+        pinyin_id   : {{ %s, %s }, { %s, %s }, { %s, %s }},
         len         : %d,
         flags       : %s
     },''' % (i, text, bopomofo, s, y.replace("v", "ü"), s_id, y_id, fs1_id, fy1_id, fs2_id, fy2_id, l, flags)
index ff560c6..3467072 100644 (file)
@@ -427,8 +427,8 @@ Database::query (const PinyinArray &pinyin,
         gboolean fs1, fs2;
         p = pinyin[i + pinyin_begin];
 
-        fs1 = pinyin_option_check_sheng (option, p->sheng_id, p->fsheng_id);
-        fs2 = pinyin_option_check_sheng (option, p->sheng_id, p->fsheng_id_2);
+        fs1 = pinyin_option_check_sheng (option, p->pinyin_id[0].sheng, p->pinyin_id[1].sheng);
+        fs2 = pinyin_option_check_sheng (option, p->pinyin_id[0].sheng, p->pinyin_id[2].sheng);
 
         if (G_LIKELY (i > 0))
             conditions.appendPrintf (0, conditions.size (),
@@ -439,65 +439,65 @@ Database::query (const PinyinArray &pinyin,
                 if (fs1 && fs2 == 0) {
                     conditions.double_ ();
                     conditions.appendPrintf (0, conditions.size ()  >> 1,
-                                               "s%d=%d", i, p->sheng_id);
+                                               "s%d=%d", i, p->pinyin_id[0].sheng);
                     conditions.appendPrintf (conditions.size () >> 1, conditions.size (),
-                                               "s%d=%d", i, p->fsheng_id);
+                                               "s%d=%d", i, p->pinyin_id[1].sheng);
                 }
                 else if (fs1 == 0 && fs2) {
                     conditions.double_ ();
                     conditions.appendPrintf (0, conditions.size ()  >> 1,
-                                               "s%d=%d", i, p->sheng_id);
+                                               "s%d=%d", i, p->pinyin_id[0].sheng);
                     conditions.appendPrintf (conditions.size () >> 1, conditions.size (),
-                                               "s%d=%d", i, p->fsheng_id_2);
+                                               "s%d=%d", i, p->pinyin_id[2].sheng);
                 }
                 else {
                     gint len = conditions.size ();
                     conditions.triple ();
                     conditions.appendPrintf (0, len,
-                                               "s%d=%d", i, p->sheng_id);
+                                               "s%d=%d", i, p->pinyin_id[0].sheng);
                     conditions.appendPrintf (len, len << 1,
-                                               "s%d=%d", i, p->fsheng_id);
+                                               "s%d=%d", i, p->pinyin_id[1].sheng);
                     conditions.appendPrintf (len << 1, conditions.size (),
-                                               "s%d=%d", i, p->fsheng_id_2);
+                                               "s%d=%d", i, p->pinyin_id[2].sheng);
                 }
             }
             else {
                 if (fs1 && fs2 == 0) {
                     conditions.appendPrintf (0, conditions.size (),
-                                               "s%d IN (%d,%d)", i, p->sheng_id, p->fsheng_id);
+                                               "s%d IN (%d,%d)", i, p->pinyin_id[0].sheng, p->pinyin_id[1].sheng);
                 }
                 else if (fs1 == 0 && fs2) {
                     conditions.appendPrintf (0, conditions.size (),
-                                               "s%d IN (%d,%d)", i, p->sheng_id, p->fsheng_id_2);
+                                               "s%d IN (%d,%d)", i, p->pinyin_id[0].sheng, p->pinyin_id[2].sheng);
                 }
                 else {
                     conditions.appendPrintf (0, conditions.size (),
-                                               "s%d IN (%d,%d,%d)", i, p->sheng_id, p->fsheng_id, p->fsheng_id_2);
+                                               "s%d IN (%d,%d,%d)", i, p->pinyin_id[0].sheng, p->pinyin_id[1].sheng, p->pinyin_id[2].sheng);
                 }
             }
         }
         else {
             conditions.appendPrintf (0, conditions.size (),
-                                       "s%d=%d", i, p->sheng_id);
+                                       "s%d=%d", i, p->pinyin_id[0].sheng);
         }
 
-        if (p->yun_id != PINYIN_ID_ZERO) {
-            if (pinyin_option_check_yun (option, p->yun_id, p->fyun_id)) {
+        if (p->pinyin_id[0].yun != PINYIN_ID_ZERO) {
+            if (pinyin_option_check_yun (option, p->pinyin_id[0].yun, p->pinyin_id[1].yun)) {
                 if (G_LIKELY (i < DB_INDEX_SIZE)) {
                     conditions.double_ ();
                     conditions.appendPrintf (0, conditions.size ()  >> 1,
-                                               " AND y%d=%d", i, p->yun_id);
+                                               " AND y%d=%d", i, p->pinyin_id[0].yun);
                     conditions.appendPrintf (conditions.size () >> 1, conditions.size (),
-                                               " and y%d=%d", i, p->fyun_id);
+                                               " and y%d=%d", i, p->pinyin_id[1].yun);
                 }
                 else {
                     conditions.appendPrintf (0, conditions.size (),
-                                               " AND y%d IN (%d,%d)", i, p->yun_id, p->fyun_id);
+                                               " AND y%d IN (%d,%d)", i, p->pinyin_id[0].yun, p->pinyin_id[1].yun);
                 }
             }
             else {
                 conditions.appendPrintf (0, conditions.size (),
-                                           " AND y%d=%d", i, p->yun_id);
+                                           " AND y%d=%d", i, p->pinyin_id[0].yun);
             }
         }
     }
index 8e7548f..89487d1 100644 (file)
@@ -4,12 +4,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄚ",
         sheng       : "",
         yun         : "a",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : 0
     },
@@ -18,12 +13,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -32,12 +22,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄞ",
         sheng       : "",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -46,12 +31,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -60,12 +40,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄢ",
         sheng       : "",
         yun         : "an",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -74,12 +49,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄤ",
         sheng       : "",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -88,12 +58,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄠ",
         sheng       : "",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -102,12 +67,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅ",
         sheng       : "b",
         yun         : "",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -116,12 +76,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄚ",
         sheng       : "b",
         yun         : "a",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -130,12 +85,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "b",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -144,12 +94,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄞ",
         sheng       : "b",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -158,12 +103,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "b",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -172,12 +112,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄢ",
         sheng       : "b",
         yun         : "an",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -186,12 +121,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄤ",
         sheng       : "b",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -200,12 +130,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄠ",
         sheng       : "b",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -214,12 +139,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "b",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -228,12 +148,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄟ",
         sheng       : "b",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -242,12 +157,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "b",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -256,12 +166,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄣ",
         sheng       : "b",
         yun         : "en",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -270,12 +175,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄥ",
         sheng       : "b",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -284,12 +184,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄧ",
         sheng       : "b",
         yun         : "i",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -298,12 +193,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄧㄢ",
         sheng       : "b",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -312,12 +202,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄧㄤ",
         sheng       : "b",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_IANG_IAN
     },
@@ -326,12 +211,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄧㄠ",
         sheng       : "b",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -340,12 +220,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄧㄝ",
         sheng       : "b",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -354,12 +229,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "b",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -368,12 +238,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "b",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -382,12 +247,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄧㄣ",
         sheng       : "b",
         yun         : "in",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -396,12 +256,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄧㄥ",
         sheng       : "b",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -410,12 +265,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄛ",
         sheng       : "b",
         yun         : "o",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -424,12 +274,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄅㄨ",
         sheng       : "b",
         yun         : "u",
-        sheng_id    : PINYIN_ID_B,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_B, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -438,12 +283,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "c",
         yun         : "",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -452,12 +292,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄚ",
         sheng       : "c",
         yun         : "a",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_A }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -466,12 +301,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "c",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_ANG }, { PINYIN_ID_CH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -480,12 +310,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄞ",
         sheng       : "c",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_AI }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -494,12 +319,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "c",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_ANG }, { PINYIN_ID_CH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -508,12 +328,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄢ",
         sheng       : "c",
         yun         : "an",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_AN }, { PINYIN_ID_CH, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -522,12 +337,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄤ",
         sheng       : "c",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_ANG }, { PINYIN_ID_CH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -536,12 +346,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄠ",
         sheng       : "c",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_AO }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -550,12 +355,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄜ",
         sheng       : "c",
         yun         : "e",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_E }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -564,12 +364,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "c",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_ENG }, { PINYIN_ID_CH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -578,12 +373,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "c",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_ENG }, { PINYIN_ID_CH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -592,12 +382,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄣ",
         sheng       : "c",
         yun         : "en",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_EN }, { PINYIN_ID_CH, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -606,12 +391,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄥ",
         sheng       : "c",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_ENG }, { PINYIN_ID_CH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -620,12 +400,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -634,12 +409,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄚ",
         sheng       : "ch",
         yun         : "a",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_A }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -648,12 +418,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_ANG }, { PINYIN_ID_C, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -662,12 +427,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄞ",
         sheng       : "ch",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_AI }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -676,12 +436,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_ANG }, { PINYIN_ID_C, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -690,12 +445,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄢ",
         sheng       : "ch",
         yun         : "an",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_AN }, { PINYIN_ID_C, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -704,12 +454,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄤ",
         sheng       : "ch",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_ANG }, { PINYIN_ID_C, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -718,12 +463,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄠ",
         sheng       : "ch",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_AO }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -732,12 +472,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄜ",
         sheng       : "ch",
         yun         : "e",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_E }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -746,12 +481,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_ENG }, { PINYIN_ID_C, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -760,12 +490,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_ENG }, { PINYIN_ID_C, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -774,12 +499,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄣ",
         sheng       : "ch",
         yun         : "en",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_EN }, { PINYIN_ID_C, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -788,12 +508,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄥ",
         sheng       : "ch",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_ENG }, { PINYIN_ID_C, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -802,12 +517,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔ",
         sheng       : "ch",
         yun         : "i",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_I }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -816,12 +526,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_ONG }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -830,12 +535,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_ONG }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -844,12 +544,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄨㄥ",
         sheng       : "ch",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_ONG }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -858,12 +553,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄡ",
         sheng       : "ch",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_OU }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -872,12 +562,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄨ",
         sheng       : "ch",
         yun         : "u",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_U }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -886,12 +571,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_UANG }, { PINYIN_ID_C, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 6,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -900,12 +580,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄨㄞ",
         sheng       : "ch",
         yun         : "uai",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_UAI,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_UAI }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -914,12 +589,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_UANG }, { PINYIN_ID_C, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 6,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -928,12 +598,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄨㄢ",
         sheng       : "ch",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_UAN }, { PINYIN_ID_C, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -942,12 +607,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄨㄤ",
         sheng       : "ch",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_UANG }, { PINYIN_ID_C, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 6,
         flags       : 0
     },
@@ -956,12 +616,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_UI }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -970,12 +625,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "ch",
         yun         : "un",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_UN }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -984,12 +634,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄨㄟ",
         sheng       : "ch",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_UI }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -998,12 +643,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄨㄣ",
         sheng       : "ch",
         yun         : "un",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_UN }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1012,12 +652,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄔㄨㄛ",
         sheng       : "ch",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_CH,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_C,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_CH, PINYIN_ID_UO }, { PINYIN_ID_C, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1026,12 +661,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘ",
         sheng       : "c",
         yun         : "i",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_I }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -1040,12 +670,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "c",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_ONG }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -1054,12 +679,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "c",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_ONG }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -1068,12 +688,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄨㄥ",
         sheng       : "c",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_ONG }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1082,12 +697,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄡ",
         sheng       : "c",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_OU }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1096,12 +706,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄨ",
         sheng       : "c",
         yun         : "u",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_U }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -1110,12 +715,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄨㄞ",
         sheng       : "c",
         yun         : "uai",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_UAI,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_UAI }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_C_CH
     },
@@ -1124,12 +724,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄨㄢ",
         sheng       : "c",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_UAN }, { PINYIN_ID_CH, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1138,12 +733,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄨㄤ",
         sheng       : "c",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_UANG }, { PINYIN_ID_CH, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_C_CH | PINYIN_FUZZY_UANG_UAN
     },
@@ -1152,12 +742,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "c",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_UI }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -1166,12 +751,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "c",
         yun         : "un",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_UN }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -1180,12 +760,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄨㄟ",
         sheng       : "c",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_UI }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1194,12 +769,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄨㄣ",
         sheng       : "c",
         yun         : "un",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_UN }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1208,12 +778,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄘㄨㄛ",
         sheng       : "c",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_C,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_CH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_C, PINYIN_ID_UO }, { PINYIN_ID_CH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1222,12 +787,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉ",
         sheng       : "d",
         yun         : "",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -1236,12 +796,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄚ",
         sheng       : "d",
         yun         : "a",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -1250,12 +805,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -1264,12 +814,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄞ",
         sheng       : "d",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1278,12 +823,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -1292,12 +832,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄢ",
         sheng       : "d",
         yun         : "an",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1306,12 +841,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄤ",
         sheng       : "d",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1320,12 +850,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄠ",
         sheng       : "d",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1334,12 +859,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄜ",
         sheng       : "d",
         yun         : "e",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_E }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -1348,12 +868,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -1362,12 +877,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄟ",
         sheng       : "d",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1376,12 +886,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -1390,12 +895,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄣ",
         sheng       : "d",
         yun         : "en",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_EN_ENG
     },
@@ -1404,12 +904,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄥ",
         sheng       : "d",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1418,12 +913,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄧ",
         sheng       : "d",
         yun         : "i",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -1432,12 +922,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄧㄚ",
         sheng       : "d",
         yun         : "ia",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_IA,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_IA }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1446,12 +931,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄧㄢ",
         sheng       : "d",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1460,12 +940,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄧㄤ",
         sheng       : "d",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_IANG_IAN
     },
@@ -1474,12 +949,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄧㄠ",
         sheng       : "d",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1488,12 +958,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄧㄝ",
         sheng       : "d",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1502,12 +967,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -1516,12 +976,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -1530,12 +985,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄧㄣ",
         sheng       : "d",
         yun         : "in",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_IN_ING
     },
@@ -1544,12 +994,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄧㄥ",
         sheng       : "d",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1558,12 +1003,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_IOU_TO_IU
     },
@@ -1572,12 +1012,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄧㄡ",
         sheng       : "d",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1586,12 +1021,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -1600,12 +1030,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -1614,12 +1039,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄨㄥ",
         sheng       : "d",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1628,12 +1048,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄡ",
         sheng       : "d",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1642,12 +1057,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄨ",
         sheng       : "d",
         yun         : "u",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -1656,12 +1066,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄨㄢ",
         sheng       : "d",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1670,12 +1075,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄨㄤ",
         sheng       : "d",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN
     },
@@ -1684,12 +1084,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_UI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -1698,12 +1093,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "d",
         yun         : "un",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -1712,12 +1102,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄨㄟ",
         sheng       : "d",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_UI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1726,12 +1111,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄨㄣ",
         sheng       : "d",
         yun         : "un",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1740,12 +1120,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄉㄨㄛ",
         sheng       : "d",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_D,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_D, PINYIN_ID_UO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1754,12 +1129,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄜ",
         sheng       : "",
         yun         : "e",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_E }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : 0
     },
@@ -1768,12 +1138,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄟ",
         sheng       : "",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -1782,12 +1147,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄣ",
         sheng       : "",
         yun         : "en",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -1796,12 +1156,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄦ",
         sheng       : "",
         yun         : "er",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_ER,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_ER }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -1810,12 +1165,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈ",
         sheng       : "f",
         yun         : "",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -1824,12 +1174,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄚ",
         sheng       : "f",
         yun         : "a",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_A }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -1838,12 +1183,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "f",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_ANG }, { PINYIN_ID_H, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -1852,12 +1192,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄞ",
         sheng       : "f",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_AI }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -1866,12 +1201,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "f",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_ANG }, { PINYIN_ID_H, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -1880,12 +1210,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄢ",
         sheng       : "f",
         yun         : "an",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_AN }, { PINYIN_ID_H, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1894,12 +1219,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄤ",
         sheng       : "f",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_ANG }, { PINYIN_ID_H, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -1908,12 +1228,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄠ",
         sheng       : "f",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_AO }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -1922,12 +1237,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄜ",
         sheng       : "f",
         yun         : "e",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_E }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -1936,12 +1246,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "f",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_ENG }, { PINYIN_ID_H, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -1950,12 +1255,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄟ",
         sheng       : "f",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_EI }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1964,12 +1264,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "f",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_ENG }, { PINYIN_ID_H, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -1978,12 +1273,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄣ",
         sheng       : "f",
         yun         : "en",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_EN }, { PINYIN_ID_H, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -1992,12 +1282,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄥ",
         sheng       : "f",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_ENG }, { PINYIN_ID_H, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2006,12 +1291,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄛ",
         sheng       : "f",
         yun         : "o",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_O }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -2020,12 +1300,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄨㄥ",
         sheng       : "f",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_ONG }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -2034,12 +1309,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄡ",
         sheng       : "f",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_OU }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2048,12 +1318,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄨ",
         sheng       : "f",
         yun         : "u",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_U }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -2062,12 +1327,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄨㄚ",
         sheng       : "f",
         yun         : "ua",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_UA,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_UA }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -2076,12 +1336,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄨㄞ",
         sheng       : "f",
         yun         : "uai",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_UAI,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_UAI }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -2090,12 +1345,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄨㄢ",
         sheng       : "f",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_UAN }, { PINYIN_ID_H, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -2104,12 +1354,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄨㄤ",
         sheng       : "f",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_UANG }, { PINYIN_ID_H, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -2118,12 +1363,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "f",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_UI }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_F_H | PINYIN_CORRECT_UEI_TO_UI
     },
@@ -2132,12 +1372,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "f",
         yun         : "un",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_UN }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_F_H | PINYIN_CORRECT_UEN_TO_UN
     },
@@ -2146,12 +1381,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄨㄟ",
         sheng       : "f",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_UI }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -2160,12 +1390,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄨㄣ",
         sheng       : "f",
         yun         : "un",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_UN }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -2174,12 +1399,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄈㄨㄛ",
         sheng       : "f",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_F,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_H,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_F, PINYIN_ID_UO }, { PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_F_H
     },
@@ -2188,12 +1408,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍ",
         sheng       : "g",
         yun         : "",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -2202,12 +1417,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄚ",
         sheng       : "g",
         yun         : "a",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_A }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -2216,12 +1426,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "g",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_ANG }, { PINYIN_ID_K, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -2230,12 +1435,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄞ",
         sheng       : "g",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_AI }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2244,12 +1444,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "g",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_ANG }, { PINYIN_ID_K, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -2258,12 +1453,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄢ",
         sheng       : "g",
         yun         : "an",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_AN }, { PINYIN_ID_K, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2272,12 +1462,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄤ",
         sheng       : "g",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_ANG }, { PINYIN_ID_K, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2286,12 +1471,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄠ",
         sheng       : "g",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_AO }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2300,12 +1480,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄜ",
         sheng       : "g",
         yun         : "e",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_E }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -2314,12 +1489,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "g",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_ENG }, { PINYIN_ID_K, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -2328,12 +1498,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄟ",
         sheng       : "g",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_EI }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2342,12 +1507,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "g",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_ENG }, { PINYIN_ID_K, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -2356,12 +1516,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄣ",
         sheng       : "g",
         yun         : "en",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_EN }, { PINYIN_ID_K, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2370,12 +1525,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄥ",
         sheng       : "g",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_ENG }, { PINYIN_ID_K, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2384,12 +1534,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "g",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_ONG }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -2398,12 +1543,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "g",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_ONG }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -2412,12 +1552,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄨㄥ",
         sheng       : "g",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_ONG }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2426,12 +1561,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄡ",
         sheng       : "g",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_OU }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2440,12 +1570,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄨ",
         sheng       : "g",
         yun         : "u",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_U }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -2454,12 +1579,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄨㄚ",
         sheng       : "g",
         yun         : "ua",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UA,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UA }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2468,12 +1588,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "g",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UANG }, { PINYIN_ID_K, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -2482,12 +1597,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄨㄞ",
         sheng       : "g",
         yun         : "uai",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UAI,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UAI }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2496,12 +1606,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "g",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UANG }, { PINYIN_ID_K, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -2510,12 +1615,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄨㄢ",
         sheng       : "g",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UAN }, { PINYIN_ID_K, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2524,12 +1624,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄨㄤ",
         sheng       : "g",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UANG }, { PINYIN_ID_K, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -2538,12 +1633,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "g",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UI }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -2552,12 +1642,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "g",
         yun         : "un",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UN }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -2566,12 +1651,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄨㄟ",
         sheng       : "g",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UI }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2580,12 +1660,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄨㄣ",
         sheng       : "g",
         yun         : "un",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UN }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2594,12 +1669,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄍㄨㄛ",
         sheng       : "g",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_G,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_K,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_G, PINYIN_ID_UO }, { PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2608,12 +1678,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏ",
         sheng       : "h",
         yun         : "",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_ZERO }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -2622,12 +1687,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄚ",
         sheng       : "h",
         yun         : "a",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_A }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -2636,12 +1696,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "h",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_ANG }, { PINYIN_ID_F, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -2650,12 +1705,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄞ",
         sheng       : "h",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_AI }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2664,12 +1714,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "h",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_ANG }, { PINYIN_ID_F, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -2678,12 +1723,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄢ",
         sheng       : "h",
         yun         : "an",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_AN }, { PINYIN_ID_F, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2692,12 +1732,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄤ",
         sheng       : "h",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_ANG }, { PINYIN_ID_F, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2706,12 +1741,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄠ",
         sheng       : "h",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_AO }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2720,12 +1750,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄜ",
         sheng       : "h",
         yun         : "e",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_E }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -2734,12 +1759,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "h",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_ENG }, { PINYIN_ID_F, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -2748,12 +1768,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄟ",
         sheng       : "h",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_EI }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2762,12 +1777,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "h",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_ENG }, { PINYIN_ID_F, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -2776,12 +1786,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄣ",
         sheng       : "h",
         yun         : "en",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_EN }, { PINYIN_ID_F, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2790,12 +1795,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄥ",
         sheng       : "h",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_ENG }, { PINYIN_ID_F, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2804,12 +1804,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄛ",
         sheng       : "h",
         yun         : "o",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_O }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_FUZZY_H_F
     },
@@ -2818,12 +1813,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "h",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_ONG }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -2832,12 +1822,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "h",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_ONG }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -2846,12 +1831,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄨㄥ",
         sheng       : "h",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_ONG }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2860,12 +1840,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄡ",
         sheng       : "h",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_OU }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2874,12 +1849,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄨ",
         sheng       : "h",
         yun         : "u",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_U }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -2888,12 +1858,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄨㄚ",
         sheng       : "h",
         yun         : "ua",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UA,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UA }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -2902,12 +1867,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "h",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UANG }, { PINYIN_ID_F, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -2916,12 +1876,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄨㄞ",
         sheng       : "h",
         yun         : "uai",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UAI,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UAI }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2930,12 +1885,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "h",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UANG }, { PINYIN_ID_F, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -2944,12 +1894,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄨㄢ",
         sheng       : "h",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UAN }, { PINYIN_ID_F, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -2958,12 +1903,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄨㄤ",
         sheng       : "h",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UANG }, { PINYIN_ID_F, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -2972,12 +1912,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "h",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UI }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -2986,12 +1921,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "h",
         yun         : "un",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UN }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -3000,12 +1930,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄨㄟ",
         sheng       : "h",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UI }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3014,12 +1939,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄨㄣ",
         sheng       : "h",
         yun         : "un",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UN }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3028,12 +1948,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄏㄨㄛ",
         sheng       : "h",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_H,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_F,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_H, PINYIN_ID_UO }, { PINYIN_ID_F, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3042,12 +1957,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐ",
         sheng       : "j",
         yun         : "",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -3056,12 +1966,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄧ",
         sheng       : "j",
         yun         : "i",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -3070,12 +1975,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄧㄚ",
         sheng       : "j",
         yun         : "ia",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IA,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IA }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3084,12 +1984,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -3098,12 +1993,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -3112,12 +2002,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄧㄢ",
         sheng       : "j",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -3126,12 +2011,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄧㄤ",
         sheng       : "j",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -3140,12 +2020,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄧㄠ",
         sheng       : "j",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -3154,12 +2029,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄧㄝ",
         sheng       : "j",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3168,12 +2038,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -3182,12 +2047,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -3196,12 +2056,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄧㄣ",
         sheng       : "j",
         yun         : "in",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3210,12 +2065,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄧㄥ",
         sheng       : "j",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -3224,12 +2074,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "iong",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -3238,12 +2083,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "iong",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -3252,12 +2092,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄩㄥ",
         sheng       : "j",
         yun         : "iong",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -3266,12 +2101,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_IOU_TO_IU
     },
@@ -3280,12 +2110,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄧㄡ",
         sheng       : "j",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3294,12 +2119,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄩ",
         sheng       : "j",
         yun         : "u",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -3308,12 +2128,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄩㄢ",
         sheng       : "j",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -3322,12 +2137,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄩㄤ",
         sheng       : "j",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN
     },
@@ -3336,12 +2146,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄩㄝ",
         sheng       : "j",
         yun         : "ue",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_UE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3350,12 +2155,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "un",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -3364,12 +2164,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄐㄩㄣ",
         sheng       : "j",
         yun         : "un",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3378,12 +2173,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "u",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -3392,12 +2182,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -3406,12 +2191,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U
     },
@@ -3420,12 +2200,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "ue",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_UE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -3434,12 +2209,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "un",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U
     },
@@ -3448,12 +2218,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "j",
         yun         : "un",
-        sheng_id    : PINYIN_ID_J,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_J, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -3462,12 +2227,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎ",
         sheng       : "k",
         yun         : "",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_ZERO }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -3476,12 +2236,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄚ",
         sheng       : "k",
         yun         : "a",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_A }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -3490,12 +2245,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "k",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_ANG }, { PINYIN_ID_G, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -3504,12 +2254,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄞ",
         sheng       : "k",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_AI }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3518,12 +2263,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "k",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_ANG }, { PINYIN_ID_G, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -3532,12 +2272,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄢ",
         sheng       : "k",
         yun         : "an",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_AN }, { PINYIN_ID_G, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3546,12 +2281,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄤ",
         sheng       : "k",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_ANG }, { PINYIN_ID_G, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -3560,12 +2290,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄠ",
         sheng       : "k",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_AO }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3574,12 +2299,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄜ",
         sheng       : "k",
         yun         : "e",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_E }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -3588,12 +2308,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "k",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_ENG }, { PINYIN_ID_G, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -3602,12 +2317,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄟ",
         sheng       : "k",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_EI }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_K_G
     },
@@ -3616,12 +2326,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "k",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_ENG }, { PINYIN_ID_G, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -3630,12 +2335,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄣ",
         sheng       : "k",
         yun         : "en",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_EN }, { PINYIN_ID_G, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3644,12 +2344,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄥ",
         sheng       : "k",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_ENG }, { PINYIN_ID_G, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -3658,12 +2353,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "k",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_ONG }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -3672,12 +2362,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "k",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_ONG }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -3686,12 +2371,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄨㄥ",
         sheng       : "k",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_ONG }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -3700,12 +2380,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄡ",
         sheng       : "k",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_OU }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3714,12 +2389,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄨ",
         sheng       : "k",
         yun         : "u",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_U }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -3728,12 +2398,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄨㄚ",
         sheng       : "k",
         yun         : "ua",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UA,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UA }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3742,12 +2407,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "k",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UANG }, { PINYIN_ID_G, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -3756,12 +2416,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄨㄞ",
         sheng       : "k",
         yun         : "uai",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UAI,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UAI }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -3770,12 +2425,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "k",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UANG }, { PINYIN_ID_G, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -3784,12 +2434,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄨㄢ",
         sheng       : "k",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UAN }, { PINYIN_ID_G, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -3798,12 +2443,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄨㄤ",
         sheng       : "k",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UANG }, { PINYIN_ID_G, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -3812,12 +2452,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "k",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UI }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -3826,12 +2461,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "k",
         yun         : "un",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UN }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -3840,12 +2470,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄨㄟ",
         sheng       : "k",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UI }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3854,12 +2479,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄨㄣ",
         sheng       : "k",
         yun         : "un",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UN }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3868,12 +2488,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄎㄨㄛ",
         sheng       : "k",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_K,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_G,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_K, PINYIN_ID_UO }, { PINYIN_ID_G, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3882,12 +2497,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌ",
         sheng       : "l",
         yun         : "",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -3896,12 +2506,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄚ",
         sheng       : "l",
         yun         : "a",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_A }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -3910,12 +2515,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ANG }, { PINYIN_ID_N, PINYIN_ID_AN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -3924,12 +2524,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄞ",
         sheng       : "l",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_AI }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3938,12 +2533,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ANG }, { PINYIN_ID_N, PINYIN_ID_AN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -3952,12 +2542,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄢ",
         sheng       : "l",
         yun         : "an",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_N, PINYIN_ID_ANG }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3966,12 +2551,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄤ",
         sheng       : "l",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ANG }, { PINYIN_ID_N, PINYIN_ID_AN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -3980,12 +2560,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄠ",
         sheng       : "l",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_AO }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -3994,12 +2569,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄜ",
         sheng       : "l",
         yun         : "e",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_E }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4008,12 +2578,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ENG }, { PINYIN_ID_N, PINYIN_ID_EN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -4022,12 +2587,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄟ",
         sheng       : "l",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_EI }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4036,12 +2596,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ENG }, { PINYIN_ID_N, PINYIN_ID_EN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -4050,12 +2605,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄣ",
         sheng       : "l",
         yun         : "en",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_N, PINYIN_ID_ENG }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_L_N | PINYIN_FUZZY_L_R | PINYIN_FUZZY_EN_ENG
     },
@@ -4064,12 +2614,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄥ",
         sheng       : "l",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ENG }, { PINYIN_ID_N, PINYIN_ID_EN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4078,12 +2623,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄧ",
         sheng       : "l",
         yun         : "i",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_I }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4092,12 +2632,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄧㄚ",
         sheng       : "l",
         yun         : "ia",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_IA,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_IA }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4106,12 +2641,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_IANG }, { PINYIN_ID_N, PINYIN_ID_IAN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -4120,12 +2650,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_IANG }, { PINYIN_ID_N, PINYIN_ID_IAN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -4134,12 +2659,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄧㄢ",
         sheng       : "l",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_IAN }, { PINYIN_ID_N, PINYIN_ID_IANG }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4148,12 +2668,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄧㄤ",
         sheng       : "l",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_IANG }, { PINYIN_ID_N, PINYIN_ID_IAN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -4162,12 +2677,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄧㄠ",
         sheng       : "l",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_IAO }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4176,12 +2686,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄧㄝ",
         sheng       : "l",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_IE }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4190,12 +2695,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ING }, { PINYIN_ID_N, PINYIN_ID_IN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -4204,12 +2704,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ING }, { PINYIN_ID_N, PINYIN_ID_IN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -4218,12 +2713,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄧㄣ",
         sheng       : "l",
         yun         : "in",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_IN }, { PINYIN_ID_N, PINYIN_ID_ING }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4232,12 +2722,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄧㄥ",
         sheng       : "l",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ING }, { PINYIN_ID_N, PINYIN_ID_IN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4246,12 +2731,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_IU }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_IOU_TO_IU
     },
@@ -4260,12 +2740,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄧㄡ",
         sheng       : "l",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_IU }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4274,12 +2749,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄛ",
         sheng       : "l",
         yun         : "o",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_O }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4288,12 +2758,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ONG }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -4302,12 +2767,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ONG }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -4316,12 +2776,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄨㄥ",
         sheng       : "l",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_ONG }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4330,12 +2785,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄡ",
         sheng       : "l",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_OU }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4344,12 +2794,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄨ",
         sheng       : "l",
         yun         : "u",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_U }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4358,12 +2803,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄨㄢ",
         sheng       : "l",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_UAN }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4372,12 +2812,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄨㄤ",
         sheng       : "l",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_UANG }, { PINYIN_ID_N, PINYIN_ID_UAN }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN
     },
@@ -4386,12 +2821,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "üe",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_VE,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_VE }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_UE_TO_VE
     },
@@ -4400,12 +2830,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_UI }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_L_R | PINYIN_CORRECT_UEI_TO_UI
     },
@@ -4414,12 +2839,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "l",
         yun         : "un",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_UN }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -4428,12 +2848,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄨㄟ",
         sheng       : "l",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_UI }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_L_R
     },
@@ -4442,12 +2857,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄨㄣ",
         sheng       : "l",
         yun         : "un",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_UN }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4456,12 +2866,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄨㄛ",
         sheng       : "l",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_UO }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4470,12 +2875,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄩ",
         sheng       : "l",
         yun         : "ü",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_V,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_V }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4484,12 +2884,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄌㄩㄝ",
         sheng       : "l",
         yun         : "üe",
-        sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_VE,
-        fsheng_id   : PINYIN_ID_N,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_R,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_L, PINYIN_ID_VE }, { PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_R, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4498,12 +2893,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇ",
         sheng       : "m",
         yun         : "",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -4512,12 +2902,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄚ",
         sheng       : "m",
         yun         : "a",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4526,12 +2911,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "m",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -4540,12 +2920,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄞ",
         sheng       : "m",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4554,12 +2929,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "m",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -4568,12 +2938,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄢ",
         sheng       : "m",
         yun         : "an",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4582,12 +2947,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄤ",
         sheng       : "m",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4596,12 +2956,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄠ",
         sheng       : "m",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4610,12 +2965,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄜ",
         sheng       : "m",
         yun         : "e",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_E }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4624,12 +2974,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "m",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -4638,12 +2983,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄟ",
         sheng       : "m",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4652,12 +2992,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "m",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -4666,12 +3001,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄣ",
         sheng       : "m",
         yun         : "en",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4680,12 +3010,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄥ",
         sheng       : "m",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4694,12 +3019,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄧ",
         sheng       : "m",
         yun         : "i",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4708,12 +3028,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄧㄢ",
         sheng       : "m",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4722,12 +3037,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄧㄤ",
         sheng       : "m",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_IANG_IAN
     },
@@ -4736,12 +3046,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄧㄠ",
         sheng       : "m",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4750,12 +3055,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄧㄝ",
         sheng       : "m",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4764,12 +3064,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "m",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -4778,12 +3073,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "m",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -4792,12 +3082,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄧㄣ",
         sheng       : "m",
         yun         : "in",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4806,12 +3091,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄧㄥ",
         sheng       : "m",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4820,12 +3100,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "m",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_IOU_TO_IU
     },
@@ -4834,12 +3109,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄧㄡ",
         sheng       : "m",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4848,12 +3118,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄛ",
         sheng       : "m",
         yun         : "o",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4862,12 +3127,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄡ",
         sheng       : "m",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4876,12 +3136,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄇㄨ",
         sheng       : "m",
         yun         : "u",
-        sheng_id    : PINYIN_ID_M,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_M, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4890,12 +3145,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋ",
         sheng       : "n",
         yun         : "",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ZERO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -4904,12 +3154,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄚ",
         sheng       : "n",
         yun         : "a",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_A }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -4918,12 +3163,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -4932,12 +3172,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄞ",
         sheng       : "n",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_AI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4946,12 +3181,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -4960,12 +3190,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄢ",
         sheng       : "n",
         yun         : "an",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_AN }, { PINYIN_ID_L, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -4974,12 +3199,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄤ",
         sheng       : "n",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -4988,12 +3208,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄠ",
         sheng       : "n",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_AO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5002,12 +3217,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄜ",
         sheng       : "n",
         yun         : "e",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_E }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -5016,12 +3226,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -5030,12 +3235,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄟ",
         sheng       : "n",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_EI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5044,12 +3244,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -5058,12 +3253,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄣ",
         sheng       : "n",
         yun         : "en",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_EN }, { PINYIN_ID_L, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5072,12 +3262,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄥ",
         sheng       : "n",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5086,12 +3271,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄧ",
         sheng       : "n",
         yun         : "i",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_I }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -5100,12 +3280,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄧㄚ",
         sheng       : "n",
         yun         : "ia",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_IA,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_IA }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_N_L
     },
@@ -5114,12 +3289,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_IANG }, { PINYIN_ID_L, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -5128,12 +3298,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_IANG }, { PINYIN_ID_L, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -5142,12 +3307,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄧㄢ",
         sheng       : "n",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_IAN }, { PINYIN_ID_L, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5156,12 +3316,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄧㄤ",
         sheng       : "n",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_IANG }, { PINYIN_ID_L, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -5170,12 +3325,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄧㄠ",
         sheng       : "n",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_IAO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5184,12 +3334,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄧㄝ",
         sheng       : "n",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_IE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5198,12 +3343,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ING }, { PINYIN_ID_L, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -5212,12 +3352,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ING }, { PINYIN_ID_L, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -5226,12 +3361,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄧㄣ",
         sheng       : "n",
         yun         : "in",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_IN }, { PINYIN_ID_L, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5240,12 +3370,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄧㄥ",
         sheng       : "n",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ING }, { PINYIN_ID_L, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5254,12 +3379,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_IU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_IOU_TO_IU
     },
@@ -5268,12 +3388,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄧㄡ",
         sheng       : "n",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_IU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5282,12 +3397,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄛ",
         sheng       : "n",
         yun         : "o",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_O }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_FUZZY_N_L
     },
@@ -5296,12 +3406,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -5310,12 +3415,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -5324,12 +3424,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄨㄥ",
         sheng       : "n",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5338,12 +3433,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄡ",
         sheng       : "n",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_OU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5352,12 +3442,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄨ",
         sheng       : "n",
         yun         : "u",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_U }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -5366,12 +3451,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄨㄢ",
         sheng       : "n",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_UAN }, { PINYIN_ID_L, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5380,12 +3460,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄨㄤ",
         sheng       : "n",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_UANG }, { PINYIN_ID_L, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN
     },
@@ -5394,12 +3469,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "üe",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_VE,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_VE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_UE_TO_VE
     },
@@ -5408,12 +3478,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "n",
         yun         : "un",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_UN }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_N_L | PINYIN_CORRECT_UEN_TO_UN
     },
@@ -5422,12 +3487,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄨㄣ",
         sheng       : "n",
         yun         : "un",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_UN }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_N_L
     },
@@ -5436,12 +3496,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄨㄛ",
         sheng       : "n",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_UO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5450,12 +3505,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄩ",
         sheng       : "n",
         yun         : "ü",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_V,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_V }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -5464,12 +3514,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄋㄩㄝ",
         sheng       : "n",
         yun         : "üe",
-        sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_VE,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_N, PINYIN_ID_VE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5478,12 +3523,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄛ",
         sheng       : "",
         yun         : "o",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : 0
     },
@@ -5492,12 +3532,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄡ",
         sheng       : "",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_ZERO,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZERO, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -5506,12 +3541,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆ",
         sheng       : "p",
         yun         : "",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -5520,12 +3550,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄚ",
         sheng       : "p",
         yun         : "a",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -5534,12 +3559,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "p",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -5548,12 +3568,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄞ",
         sheng       : "p",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5562,12 +3577,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "p",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -5576,12 +3586,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄢ",
         sheng       : "p",
         yun         : "an",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5590,12 +3595,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄤ",
         sheng       : "p",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5604,12 +3604,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄠ",
         sheng       : "p",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5618,12 +3613,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "p",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -5632,12 +3622,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄟ",
         sheng       : "p",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5646,12 +3631,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "p",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -5660,12 +3640,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄣ",
         sheng       : "p",
         yun         : "en",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5674,12 +3649,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄥ",
         sheng       : "p",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5688,12 +3658,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄧ",
         sheng       : "p",
         yun         : "i",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -5702,12 +3667,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄧㄢ",
         sheng       : "p",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5716,12 +3676,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄧㄤ",
         sheng       : "p",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_IANG_IAN
     },
@@ -5730,12 +3685,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄧㄠ",
         sheng       : "p",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5744,12 +3694,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄧㄝ",
         sheng       : "p",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5758,12 +3703,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "p",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -5772,12 +3712,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "p",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -5786,12 +3721,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄧㄣ",
         sheng       : "p",
         yun         : "in",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5800,12 +3730,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄧㄥ",
         sheng       : "p",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5814,12 +3739,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄛ",
         sheng       : "p",
         yun         : "o",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -5828,12 +3748,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄡ",
         sheng       : "p",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5842,12 +3757,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄆㄨ",
         sheng       : "p",
         yun         : "u",
-        sheng_id    : PINYIN_ID_P,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_P, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -5856,12 +3766,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑ",
         sheng       : "q",
         yun         : "",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -5870,12 +3775,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄧ",
         sheng       : "q",
         yun         : "i",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -5884,12 +3784,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄧㄚ",
         sheng       : "q",
         yun         : "ia",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IA,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IA }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5898,12 +3793,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -5912,12 +3802,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -5926,12 +3811,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄧㄢ",
         sheng       : "q",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5940,12 +3820,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄧㄤ",
         sheng       : "q",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -5954,12 +3829,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄧㄠ",
         sheng       : "q",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -5968,12 +3838,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄧㄝ",
         sheng       : "q",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -5982,12 +3847,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -5996,12 +3856,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -6010,12 +3865,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄧㄣ",
         sheng       : "q",
         yun         : "in",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6024,12 +3874,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄧㄥ",
         sheng       : "q",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -6038,12 +3883,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "iong",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -6052,12 +3892,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "iong",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -6066,12 +3901,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄩㄥ",
         sheng       : "q",
         yun         : "iong",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -6080,12 +3910,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_IOU_TO_IU
     },
@@ -6094,12 +3919,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄧㄡ",
         sheng       : "q",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6108,12 +3928,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄩ",
         sheng       : "q",
         yun         : "u",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -6122,12 +3937,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄩㄢ",
         sheng       : "q",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -6136,12 +3946,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄩㄤ",
         sheng       : "q",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN
     },
@@ -6150,12 +3955,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄩㄝ",
         sheng       : "q",
         yun         : "ue",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_UE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6164,12 +3964,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "un",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -6178,12 +3973,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄑㄩㄣ",
         sheng       : "q",
         yun         : "un",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6192,12 +3982,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "u",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -6206,12 +3991,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -6220,12 +4000,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U
     },
@@ -6234,12 +4009,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "ue",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_UE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -6248,12 +4018,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "un",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U
     },
@@ -6262,12 +4027,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "q",
         yun         : "un",
-        sheng_id    : PINYIN_ID_Q,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Q, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -6276,12 +4036,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ZERO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -6290,12 +4045,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄚ",
         sheng       : "r",
         yun         : "a",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_A }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6304,12 +4054,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -6318,12 +4063,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄞ",
         sheng       : "r",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_AI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6332,12 +4072,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -6346,12 +4081,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄢ",
         sheng       : "r",
         yun         : "an",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_AN }, { PINYIN_ID_L, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6360,12 +4090,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄤ",
         sheng       : "r",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ANG }, { PINYIN_ID_L, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -6374,12 +4099,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄠ",
         sheng       : "r",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_AO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6388,12 +4108,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄜ",
         sheng       : "r",
         yun         : "e",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_E }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -6402,12 +4117,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -6416,12 +4126,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄟ",
         sheng       : "r",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_EI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6430,12 +4135,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -6444,12 +4144,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄣ",
         sheng       : "r",
         yun         : "en",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_EN }, { PINYIN_ID_L, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6458,12 +4153,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄥ",
         sheng       : "r",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ENG }, { PINYIN_ID_L, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -6472,12 +4162,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖ",
         sheng       : "r",
         yun         : "i",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_I }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -6486,12 +4171,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄧㄚ",
         sheng       : "r",
         yun         : "ia",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_IA,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_IA }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6500,12 +4180,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄧㄢ",
         sheng       : "r",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_IAN }, { PINYIN_ID_L, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6514,12 +4189,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄧㄤ",
         sheng       : "r",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_IANG }, { PINYIN_ID_L, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6528,12 +4198,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄧㄠ",
         sheng       : "r",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_IAO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6542,12 +4207,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄧㄝ",
         sheng       : "r",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_IE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6556,12 +4216,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄧㄣ",
         sheng       : "r",
         yun         : "in",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_IN }, { PINYIN_ID_L, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6570,12 +4225,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄧㄥ",
         sheng       : "r",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ING }, { PINYIN_ID_L, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6584,12 +4234,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_IU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_R_L | PINYIN_CORRECT_IOU_TO_IU
     },
@@ -6598,12 +4243,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄧㄡ",
         sheng       : "r",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_IU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6612,12 +4252,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄛ",
         sheng       : "r",
         yun         : "o",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_O }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6626,12 +4261,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -6640,12 +4270,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -6654,12 +4279,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄨㄥ",
         sheng       : "r",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_ONG }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -6668,12 +4288,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄡ",
         sheng       : "r",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_OU }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6682,12 +4297,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄨ",
         sheng       : "r",
         yun         : "u",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_U }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -6696,12 +4306,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄨㄢ",
         sheng       : "r",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_UAN }, { PINYIN_ID_L, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -6710,12 +4315,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄨㄤ",
         sheng       : "r",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_UANG }, { PINYIN_ID_L, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN
     },
@@ -6724,12 +4324,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "üe",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_VE,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_VE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_R_L | PINYIN_CORRECT_UE_TO_VE
     },
@@ -6738,12 +4333,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_UI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -6752,12 +4342,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "r",
         yun         : "un",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_UN }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -6766,12 +4351,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄨㄟ",
         sheng       : "r",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_UI }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6780,12 +4360,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄨㄣ",
         sheng       : "r",
         yun         : "un",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_UN }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6794,12 +4369,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄨㄛ",
         sheng       : "r",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_UO }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6808,12 +4378,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄩ",
         sheng       : "r",
         yun         : "ü",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_V,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_V }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6822,12 +4387,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄖㄩㄝ",
         sheng       : "r",
         yun         : "üe",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_VE,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_R, PINYIN_ID_VE }, { PINYIN_ID_L, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_R_L
     },
@@ -6836,12 +4396,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "s",
         yun         : "",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -6850,12 +4405,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄚ",
         sheng       : "s",
         yun         : "a",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_A }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -6864,12 +4414,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "s",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_ANG }, { PINYIN_ID_SH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -6878,12 +4423,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄞ",
         sheng       : "s",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_AI }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6892,12 +4432,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "s",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_ANG }, { PINYIN_ID_SH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -6906,12 +4441,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄢ",
         sheng       : "s",
         yun         : "an",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_AN }, { PINYIN_ID_SH, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6920,12 +4450,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄤ",
         sheng       : "s",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_ANG }, { PINYIN_ID_SH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -6934,12 +4459,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄠ",
         sheng       : "s",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_AO }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -6948,12 +4468,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄜ",
         sheng       : "s",
         yun         : "e",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_E }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -6962,12 +4477,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "s",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_ENG }, { PINYIN_ID_SH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -6976,12 +4486,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄟ",
         sheng       : "s",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_EI }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_S_SH
     },
@@ -6990,12 +4495,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "s",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_ENG }, { PINYIN_ID_SH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -7004,12 +4504,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄣ",
         sheng       : "s",
         yun         : "en",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_EN }, { PINYIN_ID_SH, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7018,12 +4513,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄥ",
         sheng       : "s",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_ENG }, { PINYIN_ID_SH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7032,12 +4522,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "sh",
         yun         : "",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -7046,12 +4531,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄚ",
         sheng       : "sh",
         yun         : "a",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_A }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7060,12 +4540,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "sh",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_ANG }, { PINYIN_ID_S, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -7074,12 +4549,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄞ",
         sheng       : "sh",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_AI }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7088,12 +4558,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "sh",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_ANG }, { PINYIN_ID_S, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -7102,12 +4567,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄢ",
         sheng       : "sh",
         yun         : "an",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_AN }, { PINYIN_ID_S, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7116,12 +4576,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄤ",
         sheng       : "sh",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_ANG }, { PINYIN_ID_S, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -7130,12 +4585,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄠ",
         sheng       : "sh",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_AO }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7144,12 +4594,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄜ",
         sheng       : "sh",
         yun         : "e",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_E }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7158,12 +4603,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "sh",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_ENG }, { PINYIN_ID_S, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -7172,12 +4612,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄟ",
         sheng       : "sh",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_EI }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7186,12 +4621,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "sh",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_ENG }, { PINYIN_ID_S, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -7200,12 +4630,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄣ",
         sheng       : "sh",
         yun         : "en",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_EN }, { PINYIN_ID_S, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7214,12 +4639,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄥ",
         sheng       : "sh",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_ENG }, { PINYIN_ID_S, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -7228,12 +4648,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕ",
         sheng       : "sh",
         yun         : "i",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_I }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7242,12 +4657,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄨㄥ",
         sheng       : "sh",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_ONG }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_SH_S
     },
@@ -7256,12 +4666,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄡ",
         sheng       : "sh",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_OU }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7270,12 +4675,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄨ",
         sheng       : "sh",
         yun         : "u",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_U }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7284,12 +4684,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄨㄚ",
         sheng       : "sh",
         yun         : "ua",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UA,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UA }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7298,12 +4693,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "sh",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UANG }, { PINYIN_ID_S, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 6,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -7312,12 +4702,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄨㄞ",
         sheng       : "sh",
         yun         : "uai",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UAI,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UAI }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -7326,12 +4711,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "sh",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UANG }, { PINYIN_ID_S, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 6,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -7340,12 +4720,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄨㄢ",
         sheng       : "sh",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UAN }, { PINYIN_ID_S, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -7354,12 +4729,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄨㄤ",
         sheng       : "sh",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UANG }, { PINYIN_ID_S, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 6,
         flags       : 0
     },
@@ -7368,12 +4738,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "sh",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UI }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -7382,12 +4747,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "sh",
         yun         : "un",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UN }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -7396,12 +4756,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄨㄟ",
         sheng       : "sh",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UI }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7410,12 +4765,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄨㄣ",
         sheng       : "sh",
         yun         : "un",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UN }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7424,12 +4774,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄕㄨㄛ",
         sheng       : "sh",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_SH,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_S,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_SH, PINYIN_ID_UO }, { PINYIN_ID_S, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7438,12 +4783,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙ",
         sheng       : "s",
         yun         : "i",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_I }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -7452,12 +4792,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "s",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_ONG }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -7466,12 +4801,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "s",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_ONG }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -7480,12 +4810,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄨㄥ",
         sheng       : "s",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_ONG }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7494,12 +4819,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄡ",
         sheng       : "s",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_OU }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7508,12 +4828,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄨ",
         sheng       : "s",
         yun         : "u",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_U }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -7522,12 +4837,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄨㄚ",
         sheng       : "s",
         yun         : "ua",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_UA,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_UA }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_S_SH
     },
@@ -7536,12 +4846,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄨㄞ",
         sheng       : "s",
         yun         : "uai",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_UAI,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_UAI }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_S_SH
     },
@@ -7550,12 +4855,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄨㄢ",
         sheng       : "s",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_UAN }, { PINYIN_ID_SH, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7564,12 +4864,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄨㄤ",
         sheng       : "s",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_UANG }, { PINYIN_ID_SH, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_S_SH | PINYIN_FUZZY_UANG_UAN
     },
@@ -7578,12 +4873,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "s",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_UI }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -7592,12 +4882,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "s",
         yun         : "un",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_UN }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -7606,12 +4891,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄨㄟ",
         sheng       : "s",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_UI }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7620,12 +4900,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄨㄣ",
         sheng       : "s",
         yun         : "un",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_UN }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7634,12 +4909,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄙㄨㄛ",
         sheng       : "s",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_S,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_SH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_S, PINYIN_ID_UO }, { PINYIN_ID_SH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7648,12 +4918,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊ",
         sheng       : "t",
         yun         : "",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -7662,12 +4927,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄚ",
         sheng       : "t",
         yun         : "a",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -7676,12 +4936,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "t",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -7690,12 +4945,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄞ",
         sheng       : "t",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7704,12 +4954,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "t",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -7718,12 +4963,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄢ",
         sheng       : "t",
         yun         : "an",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7732,12 +4972,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄤ",
         sheng       : "t",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7746,12 +4981,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄠ",
         sheng       : "t",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7760,12 +4990,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄜ",
         sheng       : "t",
         yun         : "e",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_E }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -7774,12 +4999,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "t",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -7788,12 +5008,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "t",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -7802,12 +5017,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄣ",
         sheng       : "t",
         yun         : "en",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_EN_ENG
     },
@@ -7816,12 +5026,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄥ",
         sheng       : "t",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7830,12 +5035,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄧ",
         sheng       : "t",
         yun         : "i",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -7844,12 +5044,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄧㄢ",
         sheng       : "t",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7858,12 +5053,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄧㄤ",
         sheng       : "t",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_IANG_IAN
     },
@@ -7872,12 +5062,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄧㄠ",
         sheng       : "t",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7886,12 +5071,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄧㄝ",
         sheng       : "t",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -7900,12 +5080,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "t",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -7914,12 +5089,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "t",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -7928,12 +5098,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄧㄣ",
         sheng       : "t",
         yun         : "in",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_IN_ING
     },
@@ -7942,12 +5107,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄧㄥ",
         sheng       : "t",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7956,12 +5116,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "t",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -7970,12 +5125,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "t",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -7984,12 +5134,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄨㄥ",
         sheng       : "t",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -7998,12 +5143,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄡ",
         sheng       : "t",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8012,12 +5152,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄨ",
         sheng       : "t",
         yun         : "u",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -8026,12 +5161,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄨㄢ",
         sheng       : "t",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -8040,12 +5170,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄨㄤ",
         sheng       : "t",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN
     },
@@ -8054,12 +5179,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "t",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_UI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -8068,12 +5188,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "t",
         yun         : "un",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -8082,12 +5197,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄨㄟ",
         sheng       : "t",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_UI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8096,12 +5206,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄨㄣ",
         sheng       : "t",
         yun         : "un",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8110,12 +5215,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄊㄨㄛ",
         sheng       : "t",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_T,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_T, PINYIN_ID_UO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8124,12 +5224,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "w",
         yun         : "",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -8138,12 +5233,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄨㄚ",
         sheng       : "w",
         yun         : "a",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -8152,12 +5242,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "w",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -8166,12 +5251,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄨㄞ",
         sheng       : "w",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_AI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8180,12 +5260,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "w",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -8194,12 +5269,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄨㄢ",
         sheng       : "w",
         yun         : "an",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8208,12 +5278,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄨㄤ",
         sheng       : "w",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -8222,12 +5287,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "w",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -8236,12 +5296,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄨㄟ",
         sheng       : "w",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_EI }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8250,12 +5305,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "w",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -8264,12 +5314,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄨㄣ",
         sheng       : "w",
         yun         : "en",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8278,12 +5323,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄨㄥ",
         sheng       : "w",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -8292,12 +5332,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄨㄛ",
         sheng       : "w",
         yun         : "o",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -8306,12 +5341,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄨ",
         sheng       : "w",
         yun         : "u",
-        sheng_id    : PINYIN_ID_W,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_W, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -8320,12 +5350,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒ",
         sheng       : "x",
         yun         : "",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -8334,12 +5359,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄧ",
         sheng       : "x",
         yun         : "i",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -8348,12 +5368,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄧㄚ",
         sheng       : "x",
         yun         : "ia",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IA,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IA }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8362,12 +5377,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -8376,12 +5386,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -8390,12 +5395,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄧㄢ",
         sheng       : "x",
         yun         : "ian",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -8404,12 +5404,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄧㄤ",
         sheng       : "x",
         yun         : "iang",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IANG }, { PINYIN_ID_ZERO, PINYIN_ID_IAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -8418,12 +5413,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄧㄠ",
         sheng       : "x",
         yun         : "iao",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IAO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IAO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -8432,12 +5422,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄧㄝ",
         sheng       : "x",
         yun         : "ie",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8446,12 +5431,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -8460,12 +5440,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -8474,12 +5449,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄧㄣ",
         sheng       : "x",
         yun         : "in",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8488,12 +5458,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄧㄥ",
         sheng       : "x",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -8502,12 +5467,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "iong",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -8516,12 +5476,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "iong",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -8530,12 +5485,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄩㄥ",
         sheng       : "x",
         yun         : "iong",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -8544,12 +5494,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_IOU_TO_IU
     },
@@ -8558,12 +5503,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄧㄡ",
         sheng       : "x",
         yun         : "iu",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_IU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_IU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8572,12 +5512,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄩ",
         sheng       : "x",
         yun         : "u",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -8586,12 +5521,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄩㄢ",
         sheng       : "x",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -8600,12 +5530,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄩㄤ",
         sheng       : "x",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN
     },
@@ -8614,12 +5539,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄩㄝ",
         sheng       : "x",
         yun         : "ue",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_UE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8628,12 +5548,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "un",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -8642,12 +5557,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄒㄩㄣ",
         sheng       : "x",
         yun         : "un",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8656,12 +5566,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "u",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -8670,12 +5575,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -8684,12 +5584,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U
     },
@@ -8698,12 +5593,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "ue",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_UE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -8712,12 +5602,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "un",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U
     },
@@ -8726,12 +5611,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "x",
         yun         : "un",
-        sheng_id    : PINYIN_ID_X,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_X, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -8740,12 +5620,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -8754,12 +5629,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧㄚ",
         sheng       : "y",
         yun         : "a",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_A }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -8768,12 +5638,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -8782,12 +5647,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -8796,12 +5656,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧㄢ",
         sheng       : "y",
         yun         : "an",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8810,12 +5665,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧㄤ",
         sheng       : "y",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -8824,12 +5674,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧㄠ",
         sheng       : "y",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_AO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8838,12 +5683,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧㄝ",
         sheng       : "y",
         yun         : "e",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_E }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -8852,12 +5692,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧ",
         sheng       : "y",
         yun         : "i",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_I }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -8866,12 +5701,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -8880,12 +5710,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -8894,12 +5719,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧㄣ",
         sheng       : "y",
         yun         : "in",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_IN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ING,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8908,12 +5728,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧㄥ",
         sheng       : "y",
         yun         : "ing",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_ING,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_IN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_ING }, { PINYIN_ID_ZERO, PINYIN_ID_IN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -8922,12 +5737,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧㄛ",
         sheng       : "y",
         yun         : "o",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_O,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_O }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -8936,12 +5746,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -8950,12 +5755,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -8964,12 +5764,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄩㄥ",
         sheng       : "y",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_ONG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -8978,12 +5773,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧㄡ",
         sheng       : "y",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_OU }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -8992,12 +5782,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄩ",
         sheng       : "y",
         yun         : "u",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -9006,12 +5791,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄩㄢ",
         sheng       : "y",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9020,12 +5800,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄧㄩㄤ",
         sheng       : "y",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN
     },
@@ -9034,12 +5809,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄩㄝ",
         sheng       : "y",
         yun         : "ue",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_UE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9048,12 +5818,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "un",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -9062,12 +5827,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄩㄣ",
         sheng       : "y",
         yun         : "un",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9076,12 +5836,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "u",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_U }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -9090,12 +5845,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -9104,12 +5854,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_UANG_UAN | PINYIN_CORRECT_V_TO_U
     },
@@ -9118,12 +5863,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "ue",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_UE,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_UE }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -9132,12 +5872,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "un",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U
     },
@@ -9146,12 +5881,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "y",
         yun         : "un",
-        sheng_id    : PINYIN_ID_Y,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZERO,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Y, PINYIN_ID_UN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_CORRECT_V_TO_U
     },
@@ -9160,12 +5890,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "z",
         yun         : "",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 1,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -9174,12 +5899,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄚ",
         sheng       : "z",
         yun         : "a",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_A }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -9188,12 +5908,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "z",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_ANG }, { PINYIN_ID_ZH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -9202,12 +5917,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄞ",
         sheng       : "z",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_AI }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9216,12 +5926,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "z",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_ANG }, { PINYIN_ID_ZH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -9230,12 +5935,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄢ",
         sheng       : "z",
         yun         : "an",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_AN }, { PINYIN_ID_ZH, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9244,12 +5944,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄤ",
         sheng       : "z",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_ANG }, { PINYIN_ID_ZH, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9258,12 +5953,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄠ",
         sheng       : "z",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_AO }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9272,12 +5962,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄜ",
         sheng       : "z",
         yun         : "e",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_E }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -9286,12 +5971,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "z",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_ENG }, { PINYIN_ID_ZH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -9300,12 +5980,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄟ",
         sheng       : "z",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_EI }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9314,12 +5989,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "z",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_ENG }, { PINYIN_ID_ZH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -9328,12 +5998,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄣ",
         sheng       : "z",
         yun         : "en",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_EN }, { PINYIN_ID_ZH, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9342,12 +6007,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄥ",
         sheng       : "z",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_ENG }, { PINYIN_ID_ZH, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9356,12 +6016,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_ZERO,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : PINYIN_INCOMPLETE_PINYIN
     },
@@ -9370,12 +6025,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄚ",
         sheng       : "zh",
         yun         : "a",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_A,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_A }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9384,12 +6034,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_ANG }, { PINYIN_ID_Z, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -9398,12 +6043,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄞ",
         sheng       : "zh",
         yun         : "ai",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_AI,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_AI }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9412,12 +6052,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_ANG }, { PINYIN_ID_Z, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -9426,12 +6061,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄢ",
         sheng       : "zh",
         yun         : "an",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_AN,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_AN }, { PINYIN_ID_Z, PINYIN_ID_ANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9440,12 +6070,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄤ",
         sheng       : "zh",
         yun         : "ang",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_ANG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_AN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_ANG }, { PINYIN_ID_Z, PINYIN_ID_AN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -9454,12 +6079,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄠ",
         sheng       : "zh",
         yun         : "ao",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_AO,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_AO }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9468,12 +6088,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄜ",
         sheng       : "zh",
         yun         : "e",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_E,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_E }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9482,12 +6097,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_ENG }, { PINYIN_ID_Z, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -9496,12 +6106,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄟ",
         sheng       : "zh",
         yun         : "ei",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_EI,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_EI }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_ZH_Z
     },
@@ -9510,12 +6115,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_ENG }, { PINYIN_ID_Z, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -9524,12 +6124,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄣ",
         sheng       : "zh",
         yun         : "en",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_EN,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ENG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_EN }, { PINYIN_ID_Z, PINYIN_ID_ENG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9538,12 +6133,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄥ",
         sheng       : "zh",
         yun         : "eng",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_ENG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_EN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_ENG }, { PINYIN_ID_Z, PINYIN_ID_EN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -9552,12 +6142,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓ",
         sheng       : "zh",
         yun         : "i",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_I }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9566,12 +6151,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_ONG }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -9580,12 +6160,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_ONG }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -9594,12 +6169,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄨㄥ",
         sheng       : "zh",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_ONG }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -9608,12 +6178,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄡ",
         sheng       : "zh",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_OU }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9622,12 +6187,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄨ",
         sheng       : "zh",
         yun         : "u",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_U }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9636,12 +6196,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄨㄚ",
         sheng       : "zh",
         yun         : "ua",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UA,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UA }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9650,12 +6205,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UANG }, { PINYIN_ID_Z, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 6,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -9664,12 +6214,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄨㄞ",
         sheng       : "zh",
         yun         : "uai",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UAI,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UAI }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -9678,12 +6223,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UANG }, { PINYIN_ID_Z, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 6,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -9692,12 +6232,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄨㄢ",
         sheng       : "zh",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UAN }, { PINYIN_ID_Z, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : 0
     },
@@ -9706,12 +6241,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄨㄤ",
         sheng       : "zh",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UANG }, { PINYIN_ID_Z, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 6,
         flags       : 0
     },
@@ -9720,12 +6250,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UI }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -9734,12 +6259,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "zh",
         yun         : "un",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UN }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -9748,12 +6268,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄨㄟ",
         sheng       : "zh",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UI }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9762,12 +6277,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄨㄣ",
         sheng       : "zh",
         yun         : "un",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UN }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9776,12 +6286,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄓㄨㄛ",
         sheng       : "zh",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_ZH,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_Z,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_ZH, PINYIN_ID_UO }, { PINYIN_ID_Z, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9790,12 +6295,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗ",
         sheng       : "z",
         yun         : "i",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_I,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_I }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -9804,12 +6304,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "z",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_ONG }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_GN_TO_NG
     },
@@ -9818,12 +6313,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "z",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_ONG }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_MG_TO_NG
     },
@@ -9832,12 +6322,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄨㄥ",
         sheng       : "z",
         yun         : "ong",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_ONG,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_ONG }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9846,12 +6331,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄡ",
         sheng       : "z",
         yun         : "ou",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_OU,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_OU }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9860,12 +6340,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄨ",
         sheng       : "z",
         yun         : "u",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_U,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_U }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 2,
         flags       : 0
     },
@@ -9874,12 +6349,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄨㄚ",
         sheng       : "z",
         yun         : "ua",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_UA,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_UA }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : PINYIN_FUZZY_Z_ZH
     },
@@ -9888,12 +6358,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄨㄞ",
         sheng       : "z",
         yun         : "uai",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_UAI,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_UAI }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_FUZZY_Z_ZH
     },
@@ -9902,12 +6367,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄨㄢ",
         sheng       : "z",
         yun         : "uan",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_UAN,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_UANG,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_UAN }, { PINYIN_ID_ZH, PINYIN_ID_UANG }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : 0
     },
@@ -9916,12 +6376,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄨㄤ",
         sheng       : "z",
         yun         : "uang",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_UANG,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_UAN,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_UANG }, { PINYIN_ID_ZH, PINYIN_ID_UAN }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 5,
         flags       : PINYIN_FUZZY_Z_ZH | PINYIN_FUZZY_UANG_UAN
     },
@@ -9930,12 +6385,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "z",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_UI }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
@@ -9944,12 +6394,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"",
         sheng       : "z",
         yun         : "un",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_UN }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
@@ -9958,12 +6403,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄨㄟ",
         sheng       : "z",
         yun         : "ui",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_UI,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_UI }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9972,12 +6412,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄨㄣ",
         sheng       : "z",
         yun         : "un",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_UN,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_UN }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -9986,12 +6421,7 @@ static const Pinyin pinyin_table[] = {
         bopomofo    : L"ㄗㄨㄛ",
         sheng       : "z",
         yun         : "uo",
-        sheng_id    : PINYIN_ID_Z,
-        yun_id      : PINYIN_ID_UO,
-        fsheng_id   : PINYIN_ID_ZH,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
+        pinyin_id   : {{ PINYIN_ID_Z, PINYIN_ID_UO }, { PINYIN_ID_ZH, PINYIN_ID_ZERO }, { PINYIN_ID_ZERO, PINYIN_ID_ZERO }},
         len         : 3,
         flags       : 0
     },
@@ -11438,3 +7868,4 @@ static const Pinyin *special_table[][4] = {
     { &pinyin_table[712],  &pinyin_table[125],  &pinyin_table[704],  &pinyin_table[357],  }, /* zun e => zu ne */
     { &pinyin_table[712],  &pinyin_table[126],  &pinyin_table[704],  &pinyin_table[359],  }, /* zun ei => zu nei */
 };
+
index c42049d..7415178 100644 (file)
@@ -110,14 +110,12 @@ struct Pinyin {
     const wchar_t *bopomofo;
     const gchar *sheng;
     const gchar *yun;
-    const guint8 sheng_id;
-    const guint8 yun_id;
-    const guint8 fsheng_id;
-    const guint8 fyun_id;
-    const guint8 fsheng_id_2;
-    const guint8 fyun_id_2;
+    struct {
+        guint8 sheng;
+        guint8 yun;
+    } pinyin_id[3];
     const guint len;
-    const guint  flags;
+    const guint flags;
 };
 
 #define MAX_UTF8_LEN 6