Commit 238d132406d8dc1123cbcaf68ab12d34c505e7e4

Pierre Le Marre 2023-09-29T11:33:28

Keysyms: Fix missing hpYdiaeresis The handling of keysym name guards (e.g. `#ifndef XK_Ydiaeresis`) was incomplete and led to a missing keysym. Make `sripts/makeheader` more robust to C macros handling.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
diff --git a/include/xkbcommon/xkbcommon-keysyms.h b/include/xkbcommon/xkbcommon-keysyms.h
index be8aa16..0b4ecbf 100644
--- a/include/xkbcommon/xkbcommon-keysyms.h
+++ b/include/xkbcommon/xkbcommon-keysyms.h
@@ -3207,6 +3207,7 @@ performance, or use of this material.
 #define XKB_KEY_hpmute_asciitilde         0x100000ac
 #define XKB_KEY_hplira                    0x100000af
 #define XKB_KEY_hpguilder                 0x100000be
+#define XKB_KEY_hpYdiaeresis              0x100000ee
 #define XKB_KEY_hpIO                      0x100000ee  /* deprecated alias for hpYdiaeresis */
 #define XKB_KEY_hplongminus               0x100000f6
 #define XKB_KEY_hpblock                   0x100000fc
diff --git a/scripts/makeheader b/scripts/makeheader
index 05d2c81..7091aa4 100755
--- a/scripts/makeheader
+++ b/scripts/makeheader
@@ -19,6 +19,9 @@ keysym_entry_pattern = re.compile(
     re.VERBOSE,
 )
 
+# Match keysym guarded by #ifndef
+keysym_ifndef_pattern = re.compile(r"^#ifndef\s+(?P<prefix>\w*)XK_(?P<name>\w+)\s*$")
+
 # Match remaining XK_ references in the comments, e.g we will replace:
 #       XF86XK_CamelCaseKernelName	_EVDEVK(kernel value)
 #       #define XKB_KEY_SunCompose		0x0000FF20	/* Same as XK_Multi_key */
@@ -28,6 +31,10 @@ keysym_entry_pattern = re.compile(
 xorgproto_keysym_prefix_pattern = re.compile(r"\b(?P<prefix>\w*)XK_(?!KOREAN\b)")
 
 
+def make_keysym_name(m: re.Match[str]) -> str:
+    return m.group("prefix") + m.group("name")
+
+
 def make_keysym_entry(m: re.Match[str]) -> str:
     """
     Perform the substitutions
@@ -74,21 +81,50 @@ print(
 """
 )
 
+keysyms: set[str] = set()
 for path in HEADERS:
+    pending_guarded_keysym: str | None = None
     with path.open("rt", encoding="utf-8") as header:
         for line in header:
-            if "#ifdef" in line or "#ifndef" in line or "#endif" in line:
+            # Duplicate keysym name guard
+            if m := keysym_ifndef_pattern.match(line):
+                if pending_guarded_keysym:
+                    raise ValueError(f"Nested #ifndef {pending_guarded_keysym}")
+                pending_guarded_keysym = make_keysym_name(m)
                 continue
 
-            # Remove #define _OSF_Keysyms and such.
-            if "#define _" in line:
+            # Ignore C macro #ifdef/#ifndef
+            elif line.startswith("#ifdef") or line.startswith("#ifndef"):
+                if pending_guarded_keysym:
+                    raise ValueError(f"Nested C macro {pending_guarded_keysym}")
                 continue
 
-            # Handle a duplicate definition in HPkeysyms.h which kicks in if
-            # it's not already defined.
-            if "XK_Ydiaeresis" in line and "0x100000ee" in line:
+            # Ignore C macro #endif and check end of keysym name guard
+            elif line.startswith("#endif"):
+                if pending_guarded_keysym:
+                    pending_guarded_keysym = None
                 continue
 
+            # Remove #define _OSF_Keysyms and such.
+            elif line.startswith("#define _"):
+                continue
+
+            # Keysym entry: proceed various tests
+            if line.startswith("#") and (m := keysym_entry_pattern.match(line)):
+                name = make_keysym_name(m)
+                # Check expected guarded keysym, if relevant
+                if pending_guarded_keysym and name != pending_guarded_keysym:
+                    raise ValueError(f"{path}: Malformed keysym name guard: {line}")
+                # Check if name already defined
+                elif name in keysyms:
+                    if pending_guarded_keysym:
+                        # Ignore guarded keysym
+                        continue
+                    else:
+                        raise ValueError(f"{path}: Unguarded redefinition: {line}")
+                else:
+                    keysyms.add(name)
+
             # Perform _EVDEV and XK_ substitutions
             line = keysym_entry_pattern.sub(make_keysym_entry, line)
             line = xorgproto_keysym_prefix_pattern.sub(r"XKB_KEY_\1", line)
diff --git a/src/ks_tables.h b/src/ks_tables.h
index 5c6ced8..67ebfb3 100644
--- a/src/ks_tables.h
+++ b/src/ks_tables.h
@@ -1287,6 +1287,7 @@ static const char *keysym_names =
     "hpReset\0"
     "hpSystem\0"
     "hpUser\0"
+    "hpYdiaeresis\0"
     "Hstroke\0"
     "hstroke\0"
     "ht\0"
@@ -2587,303 +2588,303 @@ static const char *keysym_names =
 #endif
 
 static const uint16_t keysym_name_G[] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4320, 0, 0, 0,
-    0, 0, 0, 3487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 911,
-    170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, 2237, 0, 0, 1255, 0, 0, 0, 0, 0,
-    4586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2587, 0, 0, 0, 0, 2095, 2473, 0, 0, 0,
-    0, 3660, 3155, 0, 4215, 0, 0, 0, 3269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1233, 0, 938, 0, 0, 0, 0,
-    3024, 0, 0, 0, 0, 0, 0, 2140, 1323, 0, 0, 3357, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 267, 0, 1334, 2206, 0, 0, 0, 0, 0, 0, 2223, 0, 0, 0, 0, 0,
-    2646, 0, 4468, 1654, 0, 3013, 0, 3827, 0, 0, 0, 754, 271, 0, 0, 0, 0,
-    0, 2138, 934, 2447, 3798, 623, 292, 0, 0, 0, 2078, 0, 0, 0, 0, 0, 0, 0,
-    0, 860, 614, 0, 1667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1966, 2819,
-    1086, 0, 613, 0, 0, 0, 2392, 0, 2124, 0, 0, 0, 0, 0, 0, 0, 2683, 2902,
-    0, 0, 0, 0, 0, 0, 4054, 0, 0, 0, 0, 130, 884, 4346, 0, 0, 0, 0, 0, 0,
-    0, 0, 495, 0, 0, 0, 0, 0, 847, 0, 0, 0, 0, 2464, 4132, 1191, 0, 0, 0,
-    0, 0, 2897, 1235, 113, 4597, 0, 0, 1982, 0, 0, 0, 0, 0, 1276, 2857, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 2300, 0, 0, 0, 0, 0, 0, 0, 0, 2956, 0, 0, 0, 0,
-    0, 0, 0, 1500, 0, 0, 0, 3846, 2818, 0, 0, 1274, 0, 1751, 0, 0, 3872, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 1902, 0, 0,
-    0, 0, 0, 0, 0, 1021, 935, 3867, 0, 0, 695, 0, 0, 2791, 1285, 959, 104,
-    3701, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 1986, 249, 830, 0, 1101, 0, 0,
-    702, 0, 2373, 0, 3925, 0, 0, 17, 0, 2474, 1714, 661, 1143, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 3877, 0, 0, 0, 0, 0, 0, 1837, 3205, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 997, 0, 0, 2889, 0, 1001, 1103, 0, 0, 2906,
-    2247, 0, 0, 0, 0, 0, 3811, 2559, 1107, 0, 0, 0, 0, 1281, 1748, 766, 0,
-    478, 0, 794, 2034, 0, 0, 4078, 0, 1052, 43, 0, 0, 0, 0, 370, 0, 4344,
-    0, 336, 0, 2520, 0, 4354, 0, 0, 4115, 106, 0, 0, 0, 0, 4483, 0, 4133,
-    4146, 0, 362, 0, 0, 0, 0, 2155, 2025, 0, 2538, 1624, 1569, 524, 344,
-    4216, 0, 0, 1049, 0, 0, 0, 0, 0, 0, 3971, 0, 0, 0, 0, 0, 0, 0, 0, 3506,
-    134, 0, 1029, 0, 0, 0, 0, 1999, 0, 3959, 3052, 0, 0, 0, 0, 0, 190,
-    4269, 124, 1503, 0, 789, 0, 0, 3157, 1339, 0, 2987, 1230, 340, 2855,
-    3977, 0, 0, 0, 3572, 0, 4005, 0, 0, 3389, 56, 3158, 2568, 1126, 2237,
-    0, 0, 3137, 2064, 2000, 0, 0, 4194, 0, 2009, 0, 0, 0, 352, 333, 0, 699,
-    1725, 0, 0, 1095, 758, 931, 0, 0, 3395, 0, 0, 0, 2779, 4331, 0, 376,
-    2643, 786, 0, 0, 0, 1695, 4476, 250, 1346, 0, 1584, 1546, 0, 0, 0, 547,
-    0, 0, 0, 0, 185, 0, 0, 3138, 0, 0, 0, 780, 2326, 3641, 357, 2909, 0,
-    2744, 0, 0, 3782, 3851, 0, 0, 2410, 0, 165, 0, 3929, 0, 332, 0, 0, 0,
-    285, 0, 132, 0, 0, 0, 0, 614, 2413, 0, 2071, 4452, 0, 2932, 0, 0, 2154,
-    0, 0, 0, 0, 47, 2817, 378, 0, 0, 0, 0, 2675, 2532, 0, 4444, 0, 0, 0,
-    3801, 1146, 1503, 0, 0, 360, 0, 1844, 3762, 0, 0, 0, 0, 808, 1971, 0,
-    0, 0, 3447, 2133, 1130, 277, 0, 2150, 0, 0, 0, 2022, 0, 0, 842, 0,
-    4056, 1546, 0, 2903, 2961, 0, 0, 1147, 0, 0, 0, 0, 0, 178, 2494, 4293,
-    0, 2691, 373, 898, 0, 0, 0, 358, 0, 1566, 1952, 4315, 1333, 0, 0, 0, 0,
-    0, 0, 0, 9, 4181, 0, 0, 3233, 0, 4170, 1838, 0, 4213, 0, 0, 4162, 1623,
-    4072, 0, 0, 4274, 1135, 0, 0, 0, 4580, 0, 0, 4155, 0, 0, 2104, 0, 0, 0,
-    0, 0, 0, 448, 392, 1065, 0, 0, 0, 3992, 0, 0, 0, 0, 874, 1186, 0, 0,
-    3272, 0, 0, 0, 2602, 1968, 2263, 3121, 1106, 0, 3214, 3710, 1824, 0,
-    81, 0, 0, 491, 0, 0, 0, 2160, 0, 0, 0, 1550, 1499, 0, 0, 162, 0, 2511,
-    0, 1750, 938, 114, 28, 0, 0, 0, 4369, 1651, 0, 705, 2124, 3706, 0,
-    2823, 0, 2478, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2047, 4270,
-    875, 2763, 2128, 0, 0, 3258, 0, 0, 0, 0, 0, 368, 0, 0, 0, 793, 0, 214,
-    3900, 905, 0, 406, 3898, 2054, 249, 0, 1331, 1784, 4611, 456, 501,
-    3088, 0, 0, 469, 0, 0, 2591, 0, 0, 0, 0, 1924, 55, 1167, 3760, 1818, 0,
-    0, 0, 1494, 0, 2654, 3852, 0, 0, 0, 0, 3028, 0, 0, 4508, 1985, 0, 0,
-    3133, 1856, 0, 0, 3109, 4002, 2283, 0, 0, 0, 4105, 187, 0, 0, 1929,
-    2367, 0, 0, 3757, 0, 845, 1521, 0, 0, 1719, 1103, 3287, 0, 2813, 1345,
-    4445, 3128, 0, 0, 1629, 1909, 1628, 0, 0, 1206, 0, 0, 0, 0, 2835, 681,
-    690, 901, 2977, 2564, 0, 2775, 548, 2437, 4559, 0, 0, 0, 0, 1736, 615,
-    2162, 3107, 1079, 0, 2046, 3020, 4365, 3527, 0, 1791, 0, 560, 0, 0,
-    1693, 0, 1508, 3077, 0, 3861, 3413, 0, 1644, 0, 2261, 0, 0, 4419, 0, 0,
-    0, 0, 1783, 1949, 670, 0, 2807, 0, 3264, 0, 0, 3500, 0, 3809, 0, 3710,
-    2708, 855, 779, 1897, 1327, 0, 89, 414, 0, 0, 0, 4593, 266, 2482, 0, 0,
-    0, 630, 2992, 598, 0, 0, 0, 0, 2746, 1263, 0, 0, 0, 928, 4158, 0, 0, 0,
-    2804, 0, 98, 2895, 1286, 1852, 1606, 0, 760, 3974, 0, 3593, 0, 2401, 0,
-    0, 0, 979, 1479, 0, 2460, 0, 0, 0, 4357, 0, 1179, 1816, 0, 0, 288, 504,
-    680, 1197, 0, 2419, 1491, 3478, 4381, 357, 2773, 0, 857, 0, 0, 0, 2017,
-    0, 0, 0, 41, 2934, 0, 567, 699, 0, 0, 168, 3581, 1598, 0, 4363, 1661,
-    0, 0, 0, 1962, 0, 2193, 0, 0, 0, 0, 0, 0, 654, 2195, 0, 0, 0, 689, 0,
-    30, 418, 0, 3789, 168, 0, 2310, 0, 1482, 1739, 0, 466, 2856, 1317, 0,
-    1474, 413, 0, 0, 203, 3930, 0, 2854, 0, 0, 0, 0, 0, 0, 939, 480, 0, 0,
-    0, 2769, 0, 3083, 322, 0, 0, 2912, 0, 0, 4317, 0, 1978, 0, 2739, 0, 0,
-    1692, 968, 2256, 2834, 2206, 0, 0, 2922, 4496, 0, 2023, 1618, 1558, 0,
-    0, 0, 3103, 0, 117, 0, 0, 1043, 0, 4545, 0, 1017, 3407, 0, 0, 0, 0, 0,
-    0, 0, 3337, 0, 37, 0, 2483, 0, 0, 3015, 0, 388, 4012, 1582, 0, 0, 0,
-    3336, 426, 0, 0, 0, 257, 0, 0, 2599, 0, 4247, 2006, 3047, 0, 2213, 509,
-    0, 0, 0, 4575, 0, 626, 468, 0, 1886, 41, 0, 4401, 1277, 699, 3046,
-    4021, 640, 216, 2983, 0, 0, 0, 0, 0, 512, 0, 0, 0, 3830, 2250, 0, 0, 0,
-    472, 1251, 580, 54, 1885, 752, 0, 2764, 0, 0, 0, 1136, 0, 0, 0, 0, 0,
-    0, 316, 0, 0, 755, 307, 2168, 0, 0, 0, 2039, 0, 1407, 1154, 3271, 317,
-    0, 3901, 0, 0, 3089, 0, 0, 1927, 2173, 2261, 0, 3960, 3945, 0, 0, 0,
-    3262, 0, 2300, 0, 0, 1050, 0, 4371, 263, 4212, 0, 1765, 490, 1231,
-    1733, 386, 3524, 0, 1741, 145, 3981, 0, 4225, 2019, 4364, 0, 362, 1949,
-    0, 0, 0, 0, 3135, 0, 3799, 17, 1898, 0, 0, 0, 1882, 3926, 0, 0, 906,
-    2272, 4078, 0, 0, 0, 1329, 0, 0, 3206, 2808, 1071, 12, 0, 1132, 826,
-    2189, 3585, 1315, 0, 1446, 0, 3355, 0, 0, 0, 0, 3454, 0, 0, 0, 0, 0,
-    1644, 0, 0, 1239, 0, 0, 0, 0, 0, 0, 0, 4270, 1803, 1120, 810, 3997, 0,
-    4208, 856, 0, 432, 0, 0, 0, 1577, 294, 546, 4593, 1840, 3008, 0, 2831,
-    0, 1024, 548, 432, 0, 0, 3271, 0, 0, 0, 743, 4454, 2733, 492, 3608,
-    450, 394, 0, 0, 0, 0, 0, 0, 3649, 3146, 0, 123, 2509, 0, 648, 0, 1140,
-    1576, 2452, 0, 4466, 0, 0, 0, 917, 2554, 2666, 820, 0, 0, 0, 3847,
-    4485, 1720, 0, 3395, 0, 4207, 1646, 0, 0, 3864, 2769, 0, 0, 0, 1922,
-    1148, 1154, 3890, 3356, 0, 4379, 1216, 3140, 3410, 104, 4133, 1961,
-    2117, 2542, 0, 35, 0, 0, 0, 0, 0, 4566, 1392, 78, 0, 0, 0, 0, 1497,
-    1127, 3475, 2131, 0, 1542, 115, 0, 0, 2423, 0, 1085, 0, 4107, 0, 0, 0,
-    670, 0, 0, 727, 3031, 496, 0, 57, 410, 0, 0, 792, 0, 0, 2294, 819,
-    2235, 0, 2932, 0, 0, 1187, 0, 2607, 0, 2644, 2662, 0, 3119, 754, 3518,
-    0, 4450, 2376, 3838, 0, 2746, 0, 0, 0, 2546, 0, 0, 4014, 0, 0, 773,
-    1800, 4341, 167, 557, 2228, 2192, 0, 3800, 0, 0, 0, 452, 0, 1653, 0,
-    3644, 0, 3310, 2402, 2016, 2197, 4126, 0, 49, 1010, 0, 184, 1760, 0, 0,
-    0, 175, 0, 4572, 2257, 0, 10, 0, 3065, 3576, 0, 4364, 0, 3932, 0, 3972,
-    0, 0, 0, 2929, 2748, 0, 777, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3840, 0,
-    3686, 648, 4560, 2355, 0, 3810, 0, 1185, 3316, 0, 0, 0, 499, 114, 1648,
-    0, 0, 200, 755, 1904, 2791, 0, 0, 1895, 203, 324, 3235, 0, 914, 0,
-    2455, 433, 2094, 0, 1912, 1694, 1060, 0, 265, 1272, 3959, 0, 447, 0,
-    1764, 0, 3672, 0, 0, 879, 4279, 0, 4020, 4545, 2515, 0, 2117, 0, 0,
-    3962, 0, 921, 0, 0, 4294, 1896, 0, 2210, 3360, 1577, 0, 0, 0, 3977, 0,
-    0, 1144, 0, 826, 2324, 1132, 2034, 1158, 1135, 946, 956, 239, 0, 0,
-    3569, 3333, 89, 0, 277, 95, 0, 87, 0, 1121, 4175, 4315, 0, 0, 0, 4327,
-    3717, 0, 0, 1816, 0, 0, 1357, 2223, 4018, 402, 0, 2666, 0, 2433, 0, 62,
-    4019, 4126, 0, 2089, 1465, 0, 0, 0, 0, 1865, 2570, 0, 0, 3547, 0, 0,
-    1738, 2306, 0, 2554, 25, 4148, 0, 894, 44, 2761, 1014, 0, 683, 0, 0, 0,
-    0, 3662, 2450, 0, 386, 0, 0, 2787, 3177, 4183, 0, 938, 0, 0, 680, 1290,
-    2558, 2639, 3187, 0, 3103, 0, 3969, 0, 1322, 2924, 0, 2736, 2280, 0, 0,
-    1917, 1812, 203, 0, 0, 0, 2461, 0, 2593, 0, 0, 3621, 0, 1220, 1648,
-    106, 829, 3850, 0, 1075, 0, 606, 0, 0, 0, 0, 0, 0, 1920, 2590, 96,
-    2374, 0, 0, 0, 601, 1893, 954, 0, 4300, 0, 1536, 247, 0, 0, 22, 0,
-    2829, 2555, 4439, 0, 0, 1085, 0, 0, 0, 0, 0, 168, 2604, 2767, 746,
-    3025, 0, 0, 0, 1450, 322, 2587, 0, 3406, 4597, 4511, 4129, 0, 1978, 0,
-    0, 0, 0, 0, 4011, 0, 3285, 1026, 0, 0, 1323, 0, 0, 0, 0, 0, 0, 0, 2385,
-    4525, 4454, 0, 612, 0, 1005, 905, 1176, 4261, 0, 0, 0, 0, 0, 4024, 904,
-    1519, 2375, 1332, 2396, 3030, 3260, 0, 0, 1997, 0, 346, 805, 0, 882, 0,
-    0, 3798, 0, 1445, 3177, 0, 3276, 0, 0, 0, 3708, 1862, 0, 0, 1791, 2259,
-    0, 2541, 2344, 0, 1206, 0, 179, 2055, 0, 2004, 0, 2398, 2566, 4529, 0,
-    0, 4408, 3074, 759, 0, 1870, 2819, 480, 0, 1073, 0, 0, 54, 0, 0, 0,
-    3155, 0, 2157, 2647, 0, 4360, 1175, 0, 0, 0, 0, 1516, 0, 1412, 0, 0, 0,
-    3822, 0, 0, 208, 2376, 0, 0, 2470, 2285, 0, 3535, 0, 0, 0, 2189, 0,
-    3893, 0, 0, 2904, 1834, 0, 2047, 0, 1673, 0, 3400, 444, 2149, 0, 3722,
-    4374, 0, 0, 1765, 32, 0, 1845, 0, 2227, 0, 2218, 1189, 635, 0, 0, 4043,
-    0, 0, 1355, 546, 880, 1232, 0, 0, 979, 1026, 2994, 847, 4444, 1700, 0,
-    715, 2754, 1754, 1593, 2000, 2866, 75, 2984, 0, 3366, 0, 0, 4310, 0, 0,
-    1454, 1314, 2974, 1861, 0, 631, 0, 438, 0, 1356, 1, 0, 1741, 4142, 0,
-    2052, 0, 1413, 4150, 0, 0, 2030, 0, 0, 0, 2107, 3073, 0, 4274, 0, 3454,
-    0, 0, 0, 489, 0, 0, 1406, 240, 0, 4341, 0, 4521, 0, 779, 2086, 0, 147,
-    4363, 0, 1677, 3165, 94, 0, 0, 756, 0, 0, 2489, 0, 0, 348, 0, 2440,
-    3650, 0, 0, 0, 860, 0, 476, 4182, 0, 1660, 2876, 0, 614, 0, 2459, 2348,
-    1300, 869, 0, 0, 4191, 892, 0, 568, 1619, 1407, 0, 2008, 3378, 3560,
-    671, 0, 0, 1195, 2593, 1701, 0, 1066, 1386, 2346, 0, 157, 0, 1385, 0,
-    1539, 0, 4037, 0, 876, 470, 0, 0, 3501, 0, 2981, 0, 2518, 1965, 714,
-    742, 0, 1146, 4523, 925, 1750, 0, 793, 1214, 0, 0, 0, 986, 0, 1419, 0,
-    422, 0, 0, 3102, 0, 0, 1161, 0, 0, 1922, 384, 3114, 1338, 673, 2544,
-    1178, 0, 2655, 0, 0, 2115, 0, 0, 1186, 0, 1442, 0, 0, 1481, 0, 1249,
-    2298, 0, 654, 0, 2037, 2897, 44, 0, 980, 0, 2331, 237, 1433, 3625,
-    3499, 0, 0, 0, 0, 3647, 0, 4314, 0, 0, 3036, 2163, 0, 1508, 0, 0, 0,
-    3902, 1316, 0, 4039, 221, 2193, 0, 4408, 0, 2270, 1942, 0, 926, 0,
-    1357, 3155, 370, 3727, 2686, 486, 0, 2195, 0, 3232, 0, 2638, 3788, 0,
-    0, 4468, 0, 301, 2376, 1629, 0, 2617, 0, 0, 0, 0, 3051, 0, 0, 0, 2993,
-    1215, 1858, 2975, 2521, 3692, 0, 0, 0, 3415, 330, 0, 0, 0, 3843, 863,
-    783, 0, 1169, 0, 1959, 0, 1170, 0, 141, 962, 4052, 3117, 2148, 1529, 0,
-    2295, 199, 679, 1686, 0, 0, 0, 0, 0, 3989, 134, 0, 2985, 0, 2368, 1163,
-    0, 3044, 0, 0, 2082, 2087, 2363, 927, 1803, 2273, 0, 2139, 1758, 558,
-    2097, 3701, 2157, 0, 1072, 2318, 384, 697, 926, 0, 45, 4570, 1136, 0,
-    0, 0, 0, 1262, 131, 0, 1221, 509, 0, 0, 0, 2424, 2271, 0, 3312, 1760,
-    0, 3206, 1726, 0, 0, 0, 1191, 4271, 0, 1232, 1865, 0, 4273, 2759, 0,
-    73, 4001, 914, 1791, 0, 0, 0, 780, 2128, 4578, 2457, 718, 640, 0, 0,
-    4459, 2308, 0, 0, 1829, 786, 2262, 4353, 2218, 1066, 0, 3008, 0, 0,
-    1472, 413, 3432, 2224, 0, 928, 1456, 366, 0, 1833, 1960, 461, 401, 0,
-    1153, 4573, 4279, 0, 955, 0, 452, 0, 3923, 4321, 982, 0, 2740, 2306,
-    4436, 505, 475, 0, 0, 2155, 618, 2209, 0, 2294, 1073, 4372, 1727, 637,
-    3760, 1622, 0, 0, 1132, 24, 3006, 1848, 0, 0, 0, 2214, 498, 41, 0, 0,
-    0, 0, 1243, 0, 0, 0, 1408, 0, 1267, 590, 893, 3099, 219, 4387, 2079,
-    1046, 741, 1263, 0, 1591, 729, 4048, 4089, 0, 0, 0, 0, 4356, 1404,
-    4137, 0, 2006, 532, 4260, 2539, 0, 0, 3768, 0, 1365, 3632, 667, 0, 0,
-    0, 575, 1056, 0, 1940, 4403, 2407, 542, 477, 1672, 0, 0, 2115, 194,
-    1223, 3127, 232, 806, 1427, 465, 0, 1084, 4353, 1867, 2110, 916, 0, 0,
-    0, 189, 0, 0, 0, 1027, 0, 1941, 0, 507, 1250, 186, 0, 806, 1551, 0, 0,
-    3379, 0, 3241, 1046, 0, 0, 0, 4397, 0, 1879, 0, 0, 0, 1307, 500, 0,
-    269, 3410, 0, 0, 1704, 4066, 0, 1658, 0, 0, 2145, 0, 0, 67, 2385, 0,
-    2870, 1720, 3313, 135, 422, 3949, 416, 0, 0, 0, 0, 2383, 4498, 274,
-    3732, 4606, 1790, 4026, 455, 1208, 0, 0, 0, 1435, 4443, 1809, 688,
-    1261, 2208, 1162, 3110, 983, 614, 956, 0, 0, 2359, 546, 0, 1757, 1323,
-    3127, 1460, 1960, 0, 1618, 3415, 2671, 0, 0, 0, 0, 0, 1309, 4469, 3190,
-    0, 91, 1713, 0, 2493, 0, 3447, 3135, 756, 0, 1771, 83, 3691, 639, 0, 0,
-    1540, 0, 0, 1238, 901, 1278, 2740, 0, 1178, 0, 0, 763, 766, 198, 0,
-    1387, 953, 1489, 0, 0, 0, 0, 0, 2303, 223, 976, 0, 0, 4245, 307, 157,
-    1206, 1274, 0, 308, 0, 2383, 1239, 2282, 2427, 1263, 728, 0, 0, 0,
-    3416, 554, 3315, 676, 32, 2314, 3964, 2787, 0, 990, 94, 0, 2503, 0,
-    649, 4520, 2460, 1954, 1970, 0, 2239, 10, 2262, 489, 2114, 0, 4069,
-    1359, 0, 0, 0, 2238, 1574, 513, 778, 0, 1481, 1306, 2154, 1524, 0,
-    1874, 2319, 876, 3874, 803, 0, 0, 0, 791, 0, 2170, 4415, 932, 0, 43,
-    18, 1742, 0, 2177, 1260, 1831, 1251, 1863, 770, 236, 1431, 0, 0, 0,
-    2079, 2232, 1549, 0, 2576, 0, 259, 0, 621, 1145, 0, 82, 558, 1493, 0,
-    0, 0, 0, 0, 0, 268, 1885, 2256, 244, 0, 4446, 3820, 0, 0, 0, 378, 0,
-    1501, 0, 0, 0, 1514, 3959, 1176, 0, 672, 2850, 3333, 2604, 1491, 0,
-    168, 0, 0, 166, 0, 0, 232, 0, 0, 2038, 107, 72, 0, 1934, 548, 1752,
-    521, 686, 3319, 1870, 0, 908, 2282, 3795, 2507, 3130, 3193, 0, 718,
-    1719, 2524, 1009, 3547, 4434, 0, 2226, 1467, 2434, 0, 1492, 1703, 3906,
-    0, 3136, 0, 0, 0, 1982, 4083, 0, 0, 678, 4376, 820, 0, 1824, 1878,
-    4547, 3898, 0, 2474, 0, 3527, 0, 0, 0, 4300, 1984, 0, 1538, 609, 1871,
-    1057, 91, 754, 3623, 0, 81, 650, 0, 0, 0, 2511, 3336, 2943, 645, 582,
-    1540, 234, 3076, 0, 0, 0, 1182, 1626, 0, 135, 0, 0, 1070, 593, 3974,
-    1201, 3010, 841, 789, 2161, 0, 170, 0, 694, 0, 173, 1625, 151, 0, 74,
-    1739, 1396, 1562, 1660, 983, 0, 0, 4372, 795, 710, 1229, 0, 851, 0,
-    1560, 0, 1068, 864, 4015, 0, 0, 0, 1379, 2130, 1248, 2249, 1779, 0, 0,
-    2458, 0, 1571, 0, 0, 2801, 0, 1031, 2097, 0, 0, 0, 970, 2887, 3117,
-    3683, 0, 605, 1252, 2635, 561, 237, 0, 3399, 1219, 0, 0, 4338, 1551,
-    2682, 0, 0, 3866, 876, 2472, 1606, 3122, 4141, 0, 0, 1156, 1675, 0, 0,
-    2339, 0, 1178, 2992, 0, 481, 0, 1442, 2412, 0, 0, 0, 459, 0, 1969, 0,
-    1780, 1322, 2942, 0, 3040, 0, 100, 938, 1780, 0, 2221, 516, 803, 2692,
-    121, 0, 3620, 1321, 0, 324, 4171, 956, 1553, 4184, 2462, 3604, 411, 0,
-    1797, 0, 3767, 0, 343, 0, 4420, 4463, 2887, 139, 2146, 0, 1171, 921,
-    2470, 4567, 0, 895, 63, 4295, 915, 108, 0, 2499, 1618, 189, 508, 2479,
-    691, 0, 4492, 4387, 575, 0, 139, 1520, 0, 2553, 2328, 0, 0, 4163, 1443,
-    1328, 0, 0, 0, 98, 0, 1063, 0, 281, 2373, 1958, 0, 0, 2523, 0, 3045, 0,
-    3401, 905, 0, 0, 1459, 0, 2542, 1401, 4036, 0, 3986, 3804, 0, 448,
-    4199, 2354, 0, 0, 737, 875, 579, 3407, 2269, 3386, 3526, 856, 4502,
-    293, 4206, 1128, 0, 0, 4575, 0, 3408, 665, 0, 0, 0, 1975, 3768, 0, 895,
-    0, 4265, 0, 1137, 0, 1550, 2075, 1644, 375, 4072, 1565, 2881, 2203,
-    1994, 0, 2963, 0, 0, 768, 1782, 2777, 451, 673, 0, 944, 2569, 3292,
-    1887, 0, 0, 3424, 1252, 1678, 0, 4009, 4450, 0, 1854, 934, 2056, 3595,
-    0, 0, 1721, 2411, 474, 4124, 0, 3968, 0, 0, 0, 0, 3712, 2639, 4503,
-    266, 0, 683, 3452, 0, 2561, 2601, 0, 0, 0, 0, 0, 4449, 2045, 906, 0, 0,
-    0, 694, 785, 1675, 1568, 770, 0, 1077, 1802, 2977, 323, 2499, 0, 2224,
-    768, 0, 3199, 994, 0, 1415, 1651, 0, 4050, 3810, 1445, 0, 4008, 2352,
-    1227, 0, 0, 0, 1558, 0, 0, 3892, 1681, 2935, 3854, 0, 331, 1822, 0, 0,
-    0, 3075, 2244, 3397, 3740, 3817, 0, 887, 4000, 0, 0, 3958, 2295, 153,
-    2381, 841, 0, 4387, 0, 749, 0, 1102, 292, 2236, 0, 64, 4080, 4079,
-    2156, 1635, 0, 2280, 0, 4071, 3890, 0, 2728, 0, 2321, 0, 1329, 280,
-    2511, 0, 4325, 945, 0, 0, 1492, 1409, 3620, 3209, 4206, 0, 2380, 0,
-    3329, 0, 0, 595, 1188, 0, 355, 3644, 4412, 907, 2500, 0, 2756, 994,
-    4396, 0, 0, 2526, 2188, 0, 1071, 0, 3025, 2109, 0, 3108, 4118, 1275,
-    455, 0, 2185, 2656, 0, 4048, 1177, 0, 1783, 954, 0, 3029, 0, 0, 37, 0,
-    4485, 1684, 4352, 3102, 3215, 1982, 897, 0, 0, 217, 407, 2090, 0, 1018,
-    0, 2242, 0, 0, 4484, 243, 3005, 599, 0, 2170, 1477, 1183, 2268, 2219,
-    3091, 0, 0, 658, 922, 1663, 2237, 2354, 2133, 0, 1447, 0, 0, 0, 0,
-    2373, 1235, 0, 1254, 999, 481, 1986, 1841, 1749, 0, 2996, 0, 4305, 668,
-    4457, 0, 402, 0, 2073, 2492, 0, 1907, 0, 547, 3906, 1385, 4301, 610,
-    3710, 0, 4109, 662, 0, 0, 908, 973, 0, 0, 3643, 2278, 1562, 3749, 2077,
-    2, 1579, 0, 2054, 0, 255, 1572, 2428, 0, 0, 1245, 0, 2011, 2162, 0,
-    4464, 3666, 734, 0, 1410, 1654, 938, 0, 2308, 2319, 1105, 0, 1875, 0,
-    0, 1284, 2051, 1823, 0, 0, 0, 2044, 1989, 0, 0, 0, 2765, 0, 959, 2179,
-    1357, 2221, 0, 1178, 940, 776, 0, 0, 0, 2301, 0, 0, 1552, 1569, 1563,
-    2304, 0, 0, 2184, 0, 0, 1947, 250, 3985, 721, 2529, 0, 2484, 4077,
-    4190, 0, 0, 1330, 1155, 0, 0, 0, 1992, 1076, 0, 3109, 4209, 0, 1053,
-    1634, 0, 0, 2301, 1000, 846, 1990, 0, 3692, 891, 1498, 0, 1717, 1379,
-    0, 1602, 0, 0, 4296, 1184, 551, 3740, 0, 0, 0, 0, 3978, 0, 2819, 0,
-    798, 3737, 455, 455, 0, 868, 1172, 534, 1667, 1743, 259, 807, 185, 0,
-    691, 1809, 1818, 0, 2555, 3932, 0, 3603, 652, 3316, 406, 0, 4370, 2502,
-    0, 953, 1012, 0, 0, 1531, 405, 2297, 1287, 3925, 4421, 1211, 126, 0,
-    2239, 0, 2856, 3085, 0, 1565, 1837, 0, 4337, 0, 800, 4515, 4339, 0,
-    2503, 321, 1097, 76, 4378, 1654, 0, 0, 0, 0, 580, 760, 3993, 1708,
-    1048, 3113, 2204, 0, 0, 1478, 0, 1773, 0, 511, 1074, 2864, 0, 325, 0,
-    0, 0, 1611, 1410, 292, 0, 1106, 792, 215, 2126, 3979, 0, 2162, 0, 0,
-    1589, 888, 3080, 0, 370, 633, 0, 1925, 697, 2439, 1248, 1495, 2064, 0,
-    2557, 2312, 962, 4295, 1003, 0, 443, 0, 0, 0, 0, 1868, 3881, 0, 627, 0,
-    0, 2475, 0, 149, 2594, 3913, 427, 987, 0, 0, 1895, 548, 0, 0, 0, 0,
-    3841, 4400, 0, 1167, 1544, 3890, 904, 1509, 0, 327, 0, 0, 0, 0, 0,
-    1927, 1072, 0, 1020, 1417, 0, 2159, 0, 0, 0, 1488, 1053, 2508, 2253,
-    1070, 3787, 0, 1152, 0, 2926, 0, 0, 760, 62, 3666, 519, 2472, 2194,
-    1075, 3738, 786, 2312, 2225, 3012, 0, 0, 1963, 2184, 0, 0, 0, 0, 4377,
-    0, 4572, 2177, 4048, 0, 273, 3854, 0, 1722, 3730, 0, 345, 2198, 491, 0,
-    3223, 1644, 0, 318, 0, 0, 3276, 888, 21, 2501, 147, 0, 362, 3764, 0,
-    1434, 2518, 0, 0, 2196, 0, 0, 2302, 0, 1924, 0, 1452, 1322, 1938, 429,
-    2339, 0, 0, 1505, 0, 1108, 1526, 0, 0, 2565, 1295, 0, 3120, 0, 1576, 0,
-    1969, 0, 3235, 1777, 0, 436, 3493, 3407, 129, 4595, 1234, 0, 0, 1506,
-    2927, 4450, 0, 0, 231, 0, 2147, 2221, 0, 0, 3140, 3899, 0, 918, 0, 322,
-    3241, 2195, 596, 3441, 0, 1030, 1415, 0, 1457, 262, 1752, 3006, 0,
-    1991, 2081, 450, 320, 4468, 90, 119, 1462, 1115, 4372, 1478, 2432, 0,
-    1711, 3502, 47, 171, 27, 0, 1910, 4095, 4045, 0, 1530, 1386, 889, 1749,
-    2521, 0, 1211, 3177, 84, 860, 0, 0, 3532, 3302, 4243, 0, 0, 0, 0, 11,
-    0, 425, 0, 0, 1810, 4403, 170, 4534, 912, 121, 73, 1694, 1715, 1085, 0,
-    1211, 0, 1499, 2300, 0, 0, 0, 1155, 1482, 2392, 0, 2460, 44, 4257,
-    2192, 4279, 351, 4530, 0, 2947, 323, 441, 483, 1916, 2100, 136, 1619,
-    0, 2554, 0, 139, 3717, 0, 0, 2871, 4598, 4345, 3350, 377, 1592, 1126,
-    0, 3052, 330, 481, 0, 4228, 1776, 870, 0, 1589, 381, 742, 0, 2092, 0,
-    0, 67, 2552, 2961, 387, 0, 1513, 85, 0, 0, 0, 0, 0, 0, 497, 2744, 971,
-    3547, 890, 1655, 965, 0, 1978, 158, 1617, 0, 0, 2083, 0, 2133, 2142, 0,
-    122, 1918, 1517, 0, 420, 3896, 249, 4537, 3582, 2197, 0, 2269, 0, 0, 0,
-    3428, 0, 712, 0, 0, 0, 1990, 118, 0, 0, 0, 2158, 632, 1421, 4020, 2618,
-    0, 2551, 0, 1139, 853, 3202, 1747, 2556, 0, 0, 0, 1076, 1601, 3316,
-    2248, 2735, 331, 983, 2943, 1849, 0, 4239, 616, 854, 2714, 0, 71, 0, 0,
-    1699, 823, 1106, 2374, 696, 1427, 758, 3450, 2227, 651, 2022, 1777,
-    1485, 0, 3073, 4168, 4468, 0, 3297, 2232, 146, 2062, 2069, 1607, 2020,
-    0, 1111, 252, 807, 499, 19, 2068, 0, 859, 0, 2456, 0, 226, 2014, 4336,
-    3076, 1354, 2190, 1141, 4335, 0, 0, 0, 626, 1445, 0, 1323, 93, 551, 0,
-    3766, 3094, 4130, 0, 802, 851, 4357, 210, 4348, 155, 2173, 3068, 0,
-    576, 1015, 0, 1207, 0, 650, 1510, 0, 393, 4434, 0, 0, 2486, 0, 0, 881,
-    545, 1619, 2522, 0, 13, 0, 1439, 1072, 4538, 141, 875, 363, 3108, 1639,
-    2093, 1683, 0, 0, 1275, 1380, 0, 0, 2250, 1671, 383, 0, 735, 2113, 246,
-    0, 2571, 0, 0, 63, 4169, 2381, 0, 0, 0, 270, 0, 0, 0, 0, 597, 0, 1445,
-    161, 3611, 517, 858, 2565, 0, 898, 3906, 0, 724, 3848, 1292, 588, 4288,
-    0, 4289, 0, 2040, 4461, 2488, 902, 0, 1553, 4434, 0, 1634, 1660, 0,
-    227, 680, 351, 134, 0, 721, 552, 0, 0, 350, 2106, 2361, 1161, 0, 3509,
-    0, 2066, 3599, 2713, 0, 0, 0, 958, 0, 3985, 2235, 0, 3484, 1526, 0,
-    3997, 3856, 3705, 0, 1114, 478, 3496, 0, 2065, 1798, 0, 438, 2183,
-    3691, 2138, 0, 4347, 2773, 1812, 634, 653, 1352, 1167, 2857, 3336, 669,
-    0, 3571, 0, 0, 0, 4331, 1078, 3414, 321, 0, 1168, 605, 0, 0, 3475, 514,
-    3183, 0, 2396, 2752, 0, 0, 707, 502, 581, 861, 1139, 220, 0, 0, 2153,
-    0, 720, 3989, 588, 0, 0, 375, 1656, 0, 3602, 2160, 3452, 3644, 3271,
-    1107, 0, 1209, 0, 0, 1491, 0, 1956, 936, 3001, 0, 673, 3628, 0, 549,
-    166, 0, 0, 1052, 1940, 80, 4319, 817, 2753, 4416, 2497, 453, 3395,
-    2372, 0, 0, 0, 0, 3332, 0, 0, 4077, 695, 0, 112, 1483, 1263, 3434,
-    2098, 2184, 2076, 2041, 1784, 0, 2750, 1463, 1172, 1700, 629, 728,
-    1930, 1906, 397, 3282, 0, 1192, 4395, 1937, 4085, 2044, 0, 634, 201, 0,
-    0, 1702, 3943, 0, 0, 252, 1346, 3797, 2283, 0, 3054, 0, 1616, 0, 0,
-    352, 1218, 0, 748, 3804, 0, 0, 1573, 3709, 189, 894, 695, 4152, 3200,
-    0, 1870, 587, 0, 617, 2304, 715, 1375, 1033, 0, 0, 1555, 296, 620, 0,
-    3252, 406, 1015, 3277, 0, 4545, 6, 1495, 0
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3070, 0, 1487, 0, 0, 0,
+    3342, 2475, 0, 0, 0, 0, 0, 0, 0, 0, 2451, 0, 0, 0, 4410, 0, 1745, 0, 0,
+    0, 0, 0, 0, 420, 595, 0, 0, 0, 0, 0, 0, 0, 1591, 80, 0, 0, 0, 0, 4466,
+    3548, 4530, 0, 3337, 0, 641, 0, 0, 0, 1526, 2544, 1141, 1417, 0, 2614,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0,
+    3648, 0, 4540, 0, 0, 0, 0, 1862, 0, 0, 0, 0, 562, 3489, 0, 1099, 0,
+    2991, 0, 0, 0, 618, 0, 0, 0, 0, 3483, 0, 982, 0, 0, 1033, 0, 2549, 0,
+    0, 443, 476, 0, 316, 2401, 3049, 0, 0, 692, 0, 1537, 3513, 0, 0, 0, 0,
+    0, 0, 0, 4040, 3443, 3826, 1813, 0, 906, 3544, 0, 0, 0, 0, 2141, 0,
+    4212, 0, 3093, 1806, 0, 0, 555, 0, 2923, 0, 414, 0, 0, 991, 4080, 1986,
+    0, 0, 0, 0, 1553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 804, 0, 0, 0,
+    3345, 0, 0, 1045, 0, 2997, 0, 0, 0, 0, 1122, 0, 0, 0, 0, 3101, 0, 0,
+    632, 0, 0, 0, 1699, 861, 3750, 0, 0, 0, 0, 0, 2830, 0, 0, 2581, 2112,
+    0, 2365, 0, 1378, 3291, 0, 0, 270, 0, 3427, 0, 0, 2346, 0, 0, 3801, 0,
+    0, 0, 0, 0, 109, 806, 0, 0, 0, 0, 2965, 1928, 2215, 0, 3244, 0, 0, 0,
+    2570, 0, 2433, 3730, 0, 0, 0, 1982, 0, 0, 0, 0, 887, 0, 0, 0, 0, 650,
+    0, 0, 0, 4425, 0, 0, 0, 4416, 692, 0, 2215, 1228, 0, 867, 2856, 1026,
+    2316, 0, 539, 0, 0, 3519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 1398, 0,
+    0, 755, 4452, 0, 0, 3786, 0, 0, 0, 0, 0, 2766, 0, 0, 0, 0, 0, 0, 0,
+    1195, 740, 2771, 1611, 0, 574, 2556, 0, 0, 291, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 449, 35, 0, 0, 0, 0, 0, 0, 2295, 3363, 1887, 3722, 2046,
+    3783, 2089, 0, 535, 0, 2052, 0, 0, 0, 1615, 0, 85, 0, 0, 0, 0, 0, 0, 0,
+    3283, 0, 0, 3688, 0, 0, 0, 2860, 3223, 0, 205, 0, 3277, 2646, 0, 4012,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1369, 0, 0, 0, 0, 0, 0, 3255, 0, 0, 0,
+    2788, 0, 0, 0, 0, 2338, 0, 0, 4091, 0, 0, 286, 0, 2759, 0, 1910, 1986,
+    4086, 536, 0, 0, 0, 3586, 0, 2351, 0, 0, 0, 1192, 2474, 2650, 0, 0, 0,
+    0, 0, 1567, 1103, 0, 290, 0, 0, 0, 1069, 896, 0, 906, 1463, 0, 0, 908,
+    0, 0, 3329, 1797, 1121, 379, 0, 0, 0, 0, 0, 4070, 348, 0, 0, 4255, 20,
+    0, 0, 0, 2499, 1636, 0, 0, 0, 0, 0, 3698, 0, 2172, 0, 2679, 0, 0, 303,
+    2030, 0, 675, 0, 0, 0, 921, 0, 0, 0, 0, 1854, 0, 0, 0, 0, 994, 0, 0, 0,
+    1270, 0, 0, 0, 0, 0, 0, 987, 0, 4593, 0, 0, 0, 4259, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 46, 1610, 1355, 1348, 1899, 0, 0, 0, 4016, 0, 0, 1298, 1401,
+    687, 2994, 4211, 0, 1629, 3648, 2058, 3783, 897, 0, 4421, 1824, 0, 0,
+    3033, 0, 3504, 0, 0, 0, 1256, 1179, 4269, 0, 0, 0, 0, 0, 4281, 0, 1656,
+    2450, 0, 2957, 0, 3700, 42, 0, 0, 1165, 0, 4454, 0, 3064, 2331, 0, 829,
+    0, 0, 0, 0, 0, 0, 0, 1644, 1788, 0, 2111, 0, 2923, 53, 2201, 0, 2138,
+    1418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, 0, 0, 0, 0, 4118,
+    0, 1418, 3044, 0, 2886, 1217, 0, 2170, 4504, 3314, 0, 0, 0, 677, 0,
+    2254, 1711, 0, 1492, 0, 0, 1427, 1977, 0, 0, 3459, 3442, 0, 0, 0, 3187,
+    4399, 0, 352, 0, 1723, 0, 2822, 0, 0, 2125, 0, 0, 0, 0, 0, 1628, 1005,
+    1270, 0, 0, 0, 0, 0, 4457, 845, 0, 0, 155, 1255, 0, 3635, 4179, 0, 0,
+    0, 0, 0, 0, 4516, 0, 0, 0, 0, 1617, 0, 2936, 0, 1671, 222, 1511, 588,
+    0, 1953, 0, 0, 558, 0, 1043, 1253, 0, 0, 0, 0, 1069, 113, 3420, 2916,
+    0, 4037, 1157, 0, 0, 1802, 76, 336, 587, 0, 0, 0, 0, 496, 2649, 1762,
+    0, 0, 0, 2021, 2250, 0, 0, 0, 0, 1376, 2078, 0, 4265, 0, 2858, 0, 2132,
+    0, 743, 705, 0, 3163, 0, 0, 887, 0, 3280, 0, 0, 0, 1591, 0, 0, 0, 2885,
+    0, 1492, 2302, 0, 0, 0, 0, 2025, 77, 0, 0, 0, 0, 0, 2709, 4311, 1482,
+    3688, 0, 1839, 0, 0, 0, 1910, 26, 0, 0, 2400, 2924, 2063, 0, 0, 0, 0,
+    0, 0, 1829, 524, 0, 0, 4190, 0, 0, 1162, 1715, 1324, 0, 1736, 1168,
+    308, 0, 0, 0, 0, 3441, 0, 0, 0, 2855, 0, 0, 562, 0, 0, 0, 0, 2596, 0,
+    239, 0, 0, 4104, 0, 204, 0, 1012, 0, 0, 0, 1700, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 711, 0, 2163, 0, 0, 0, 2767, 1921, 1783, 3630, 0, 1899, 0, 3401,
+    178, 2114, 0, 3598, 0, 3388, 0, 0, 3573, 0, 2465, 795, 707, 0, 3066,
+    463, 4410, 0, 0, 0, 0, 3405, 1760, 1002, 3137, 2233, 425, 1427, 0, 0,
+    2762, 0, 0, 467, 1759, 273, 1357, 997, 2651, 0, 0, 0, 0, 0, 0, 0, 938,
+    0, 0, 0, 0, 549, 0, 0, 0, 3419, 3806, 1204, 0, 94, 0, 0, 0, 0, 217,
+    150, 0, 0, 1873, 417, 0, 2307, 221, 0, 0, 0, 0, 3476, 0, 186, 0, 0, 0,
+    4532, 0, 0, 1915, 0, 3259, 0, 0, 1728, 0, 0, 3794, 3998, 1648, 3497, 0,
+    0, 0, 3578, 2749, 3358, 0, 51, 3857, 4121, 2754, 2397, 0, 336, 937,
+    2605, 0, 361, 0, 0, 0, 428, 2598, 0, 0, 4458, 4149, 0, 0, 4303, 3461,
+    3723, 0, 0, 0, 0, 0, 0, 419, 1652, 2921, 4065, 0, 1678, 1636, 1141,
+    1903, 608, 375, 0, 0, 0, 199, 3788, 3814, 0, 1502, 0, 0, 419, 2237,
+    2205, 2627, 1345, 0, 1186, 0, 0, 2545, 0, 2620, 0, 0, 0, 958, 0, 0, 0,
+    270, 0, 0, 0, 4570, 780, 0, 866, 0, 0, 2606, 0, 0, 89, 0, 2149, 0,
+    2829, 0, 0, 4285, 263, 503, 993, 964, 2542, 0, 403, 3729, 188, 0, 0, 0,
+    1425, 1785, 0, 0, 2528, 2755, 2528, 3503, 1756, 0, 0, 0, 0, 0, 88,
+    1316, 4420, 0, 0, 922, 1769, 0, 0, 1171, 0, 0, 2437, 0, 0, 0, 1849, 0,
+    0, 2232, 4435, 4160, 0, 644, 0, 0, 4527, 0, 0, 308, 1379, 0, 2036,
+    2169, 3896, 1014, 3864, 0, 628, 0, 1622, 0, 0, 2004, 1241, 4174, 86, 0,
+    4078, 0, 1610, 0, 0, 0, 2516, 1561, 2988, 874, 0, 1658, 4220, 0, 331,
+    0, 0, 0, 0, 0, 0, 0, 0, 566, 4576, 0, 0, 0, 0, 1589, 636, 0, 2538, 0,
+    1724, 2207, 0, 0, 0, 0, 0, 0, 1676, 0, 0, 2079, 1633, 3155, 0, 0, 1630,
+    168, 0, 0, 0, 0, 3646, 2124, 0, 1797, 1044, 3903, 283, 0, 0, 2384,
+    3669, 0, 2841, 1554, 219, 0, 0, 3951, 3689, 1475, 1184, 1203, 1000,
+    548, 501, 0, 0, 0, 1777, 0, 4335, 0, 0, 1553, 0, 912, 0, 1145, 22, 0,
+    1928, 1172, 705, 0, 0, 0, 0, 1256, 0, 2517, 956, 0, 0, 2018, 3152, 0,
+    1815, 0, 0, 0, 266, 0, 0, 2072, 0, 4537, 0, 1791, 0, 941, 1642, 1988,
+    2312, 0, 0, 4529, 0, 4599, 0, 3282, 1566, 0, 0, 0, 2745, 57, 0, 2363,
+    708, 3764, 1303, 2769, 3301, 0, 0, 0, 0, 3464, 525, 1496, 1298, 1065,
+    3018, 1012, 244, 1393, 4333, 0, 1563, 0, 0, 0, 3492, 0, 0, 3112, 1928,
+    0, 0, 0, 0, 0, 2454, 0, 1975, 57, 0, 0, 6, 0, 3957, 0, 0, 4444, 752, 0,
+    742, 0, 822, 0, 2714, 2205, 4076, 939, 0, 0, 0, 1024, 1100, 0, 0, 1027,
+    1093, 0, 0, 1208, 1849, 4427, 2316, 548, 1422, 1672, 0, 3350, 0, 1016,
+    0, 0, 0, 681, 255, 835, 1569, 1873, 1575, 0, 0, 0, 0, 0, 0, 0, 2720, 0,
+    1290, 0, 0, 0, 1944, 0, 0, 4406, 2699, 3220, 1161, 0, 2221, 1705, 0,
+    4455, 3294, 1532, 0, 1417, 4392, 0, 1266, 1417, 1979, 0, 0, 3227, 91,
+    1594, 0, 0, 3907, 0, 1329, 0, 2760, 0, 4285, 1684, 0, 1693, 2354, 2271,
+    0, 1932, 4178, 2364, 1431, 2034, 1894, 0, 4267, 0, 159, 0, 3532, 0,
+    4118, 1932, 81, 0, 1658, 2932, 0, 0, 1647, 0, 2422, 703, 0, 0, 2613,
+    2319, 2260, 4400, 921, 0, 2487, 963, 1670, 1190, 0, 0, 1460, 2527, 0,
+    0, 1723, 0, 4355, 901, 0, 0, 0, 0, 2293, 0, 3354, 2058, 0, 0, 1407, 0,
+    0, 514, 0, 103, 1154, 1966, 0, 0, 0, 2513, 0, 0, 3018, 3122, 1, 0, 0,
+    945, 1877, 4319, 0, 1958, 0, 389, 1735, 0, 0, 0, 272, 0, 0, 1006, 3031,
+    0, 2150, 4072, 0, 0, 0, 1853, 0, 0, 3839, 748, 2135, 0, 794, 2376, 681,
+    2143, 3978, 1997, 0, 0, 2630, 0, 1292, 2244, 858, 1525, 0, 250, 1984,
+    3567, 4480, 0, 0, 1201, 2013, 0, 0, 0, 86, 965, 850, 370, 1484, 940, 0,
+    0, 63, 3807, 613, 0, 3481, 631, 2752, 0, 73, 718, 0, 0, 2280, 0, 4473,
+    0, 0, 0, 1611, 0, 0, 0, 1164, 0, 0, 686, 0, 0, 2018, 0, 0, 0, 0, 4290,
+    257, 557, 1951, 0, 0, 0, 2205, 838, 3733, 4135, 0, 0, 0, 3976, 0, 3427,
+    1709, 4185, 0, 1801, 21, 3451, 0, 0, 142, 0, 1831, 709, 4450, 0, 0, 0,
+    0, 0, 1203, 3545, 0, 1392, 2072, 0, 0, 1567, 1681, 2386, 0, 811, 0, 0,
+    3745, 0, 1985, 0, 0, 0, 4460, 4029, 4064, 212, 638, 3101, 0, 0, 9, 0,
+    0, 0, 0, 0, 4160, 0, 224, 0, 3644, 985, 0, 328, 4381, 1151, 0, 4070,
+    4576, 3597, 2492, 3372, 809, 2518, 0, 1126, 696, 0, 0, 1078, 1062,
+    1947, 1361, 4465, 3936, 0, 4008, 1592, 0, 0, 0, 3779, 1119, 0, 0, 0,
+    2358, 0, 0, 1134, 0, 3337, 1025, 0, 0, 2472, 0, 0, 2853, 0, 0, 0, 4168,
+    1559, 0, 2566, 938, 0, 336, 3764, 126, 2074, 454, 6, 56, 0, 4057, 3538,
+    0, 3801, 0, 647, 102, 0, 0, 0, 4355, 0, 0, 789, 0, 4489, 0, 3615, 1527,
+    2306, 0, 298, 3807, 160, 0, 0, 0, 983, 2034, 887, 1116, 797, 0, 0, 0,
+    2497, 412, 668, 2746, 30, 1242, 2359, 0, 1340, 2152, 0, 2493, 3461,
+    4091, 0, 0, 2752, 129, 0, 601, 2416, 253, 1801, 0, 0, 5, 0, 0, 776, 0,
+    4418, 0, 943, 588, 1029, 0, 4608, 620, 0, 0, 514, 352, 660, 0, 0, 0,
+    4456, 4548, 46, 860, 0, 3936, 1095, 0, 2022, 122, 0, 0, 0, 0, 0, 4161,
+    0, 4046, 883, 3562, 4162, 342, 0, 0, 0, 814, 0, 2552, 0, 0, 0, 2360,
+    3305, 0, 210, 2087, 2822, 241, 0, 0, 1172, 0, 600, 0, 0, 1066, 3519,
+    4280, 0, 2684, 356, 287, 0, 3679, 0, 4398, 1142, 1237, 0, 4385, 2433,
+    2833, 3191, 138, 0, 3242, 2265, 0, 4479, 0, 0, 0, 0, 2498, 2865, 2000,
+    0, 1692, 2443, 3211, 3342, 3088, 1439, 3704, 1155, 3426, 683, 0, 124,
+    0, 0, 0, 1890, 2518, 0, 3328, 2478, 0, 2100, 1665, 2947, 4234, 2361,
+    4214, 2777, 358, 0, 4506, 0, 2655, 0, 0, 3533, 0, 0, 208, 4219, 0, 290,
+    0, 0, 1221, 738, 2751, 0, 0, 2283, 4206, 2067, 388, 2515, 763, 1871, 0,
+    160, 886, 0, 2998, 0, 827, 89, 521, 2132, 2005, 565, 0, 0, 2294, 0, 0,
+    0, 0, 4603, 1505, 1096, 1597, 0, 0, 392, 0, 0, 4188, 0, 2167, 0, 3648,
+    1531, 882, 0, 2031, 4345, 2099, 0, 0, 0, 1682, 2494, 4547, 2438, 0,
+    134, 0, 0, 2931, 3355, 1747, 0, 4541, 0, 180, 4178, 911, 3615, 1010,
+    4310, 0, 0, 448, 0, 0, 0, 1914, 1487, 0, 2002, 1648, 3126, 1042, 0,
+    3408, 3176, 0, 1406, 396, 1245, 795, 1545, 0, 147, 0, 4030, 1384, 4515,
+    1433, 522, 3532, 0, 1315, 1051, 0, 288, 1275, 0, 1279, 1549, 816, 461,
+    408, 0, 2184, 4253, 0, 2520, 0, 0, 4385, 2991, 2264, 0, 1873, 1409,
+    174, 2462, 2345, 4153, 3700, 203, 3282, 0, 1602, 1618, 3147, 0, 0, 0,
+    0, 0, 2031, 4508, 4087, 584, 1157, 0, 4203, 0, 1901, 0, 0, 0, 1327,
+    589, 1831, 0, 1839, 2232, 0, 57, 0, 266, 4476, 0, 0, 412, 34, 0, 1220,
+    1685, 2864, 3353, 0, 0, 1488, 1654, 0, 0, 0, 324, 2825, 0, 3378, 2557,
+    2230, 0, 655, 0, 966, 0, 139, 0, 3946, 0, 2181, 4039, 1834, 0, 646, 0,
+    0, 0, 0, 1729, 172, 3150, 0, 2035, 0, 0, 4388, 3694, 2944, 192, 462,
+    977, 0, 1731, 2732, 0, 3394, 0, 4470, 0, 0, 3426, 3512, 0, 1104, 0,
+    765, 0, 407, 0, 0, 3938, 4100, 1734, 308, 1641, 0, 2169, 903, 3353, 0,
+    0, 0, 0, 0, 416, 132, 0, 0, 4218, 4447, 1151, 1471, 0, 0, 0, 0, 1422,
+    288, 2063, 0, 4117, 1155, 0, 0, 0, 0, 3406, 1484, 0, 4356, 4184, 3509,
+    0, 3999, 3333, 0, 2275, 2037, 0, 1863, 3124, 0, 0, 3788, 0, 0, 0, 1607,
+    234, 0, 2056, 378, 0, 2716, 0, 2065, 2424, 0, 465, 1730, 0, 1173, 0,
+    1233, 488, 1878, 508, 0, 2909, 1578, 0, 0, 32, 0, 0, 181, 0, 1629,
+    3349, 4449, 1176, 0, 600, 2019, 1703, 2731, 0, 0, 0, 0, 0, 0, 0, 533,
+    0, 220, 1502, 1470, 0, 2380, 0, 4318, 0, 3357, 0, 2581, 2298, 0, 3020,
+    0, 2033, 720, 4570, 1262, 3809, 0, 3304, 2786, 3741, 379, 2913, 3794,
+    527, 676, 0, 1832, 0, 1107, 0, 3389, 2007, 1846, 3829, 1497, 2403,
+    2630, 738, 468, 1812, 2179, 4376, 4286, 0, 3872, 2695, 1801, 1971, 0,
+    606, 1795, 1898, 0, 0, 0, 0, 4487, 1194, 0, 0, 477, 1468, 2217, 400, 0,
+    0, 375, 0, 1813, 0, 628, 1400, 2587, 11, 1039, 0, 131, 0, 688, 0, 0,
+    857, 389, 0, 790, 2316, 2253, 0, 0, 0, 3418, 1804, 0, 0, 0, 0, 1218, 0,
+    4283, 0, 0, 0, 2267, 0, 1568, 2632, 2096, 0, 314, 2045, 1297, 335, 490,
+    1566, 3185, 807, 4381, 484, 294, 0, 0, 3802, 0, 428, 26, 0, 1322, 2114,
+    4438, 3866, 1294, 142, 0, 3932, 457, 1236, 3925, 4077, 0, 2608, 1272,
+    508, 0, 2819, 0, 0, 0, 0, 1204, 0, 0, 1175, 0, 3354, 4289, 2385, 2381,
+    193, 0, 50, 0, 1419, 2136, 58, 0, 0, 469, 307, 0, 1991, 3735, 0, 0,
+    144, 2328, 0, 678, 0, 4142, 1411, 56, 671, 4273, 0, 391, 3743, 3195, 0,
+    0, 2166, 495, 0, 3359, 0, 0, 0, 492, 4531, 0, 0, 4316, 666, 432, 3468,
+    1719, 2632, 0, 244, 261, 0, 0, 1018, 0, 444, 1366, 1562, 1245, 0, 0, 0,
+    93, 0, 557, 3470, 0, 864, 0, 0, 227, 3450, 4411, 4030, 45, 322, 0, 0,
+    559, 1939, 2475, 1248, 2639, 2187, 2092, 2202, 0, 4591, 4479, 4188,
+    4375, 4401, 0, 786, 1899, 0, 0, 92, 2955, 0, 4362, 0, 320, 1162, 697,
+    0, 563, 0, 0, 2263, 2064, 1599, 1460, 0, 3477, 2362, 0, 394, 3937,
+    1875, 0, 0, 0, 1306, 1646, 4375, 673, 0, 5, 0, 0, 732, 2921, 772, 1059,
+    443, 1887, 0, 0, 166, 0, 0, 3574, 4523, 0, 16, 1979, 235, 0, 0, 2223,
+    3559, 0, 0, 0, 1723, 0, 0, 0, 2648, 0, 0, 0, 0, 0, 2494, 537, 0, 1282,
+    0, 1002, 833, 2209, 2995, 1388, 0, 0, 1843, 561, 0, 0, 4127, 0, 0, 330,
+    1317, 745, 2423, 2351, 0, 528, 2316, 2101, 0, 4409, 0, 3242, 1385, 0,
+    0, 326, 4493, 4392, 99, 2193, 2755, 1601, 0, 4447, 0, 0, 2462, 0, 3925,
+    2281, 1277, 0, 0, 0, 1273, 226, 3388, 2203, 1269, 0, 1165, 2228, 0, 0,
+    1150, 3453, 1242, 162, 2103, 0, 1315, 0, 0, 1128, 4272, 0, 0, 1672, 0,
+    1373, 3253, 484, 1012, 109, 0, 4449, 0, 0, 653, 1999, 114, 0, 1503,
+    647, 742, 332, 0, 639, 3652, 0, 0, 0, 891, 0, 1663, 4146, 3307, 0, 0,
+    2352, 230, 680, 0, 528, 2578, 0, 0, 2835, 2228, 1979, 0, 346, 2141, 0,
+    3427, 852, 3386, 563, 0, 1246, 1989, 0, 0, 0, 0, 0, 3074, 820, 1872,
+    2118, 2364, 2971, 2781, 1912, 334, 0, 0, 0, 0, 0, 0, 0, 2775, 2195,
+    635, 0, 933, 4434, 0, 781, 0, 560, 0, 0, 2442, 0, 0, 0, 1823, 3294,
+    2185, 3134, 0, 698, 2477, 2332, 0, 0, 2613, 1726, 0, 1178, 0, 3795,
+    2343, 0, 0, 4328, 0, 0, 0, 52, 2852, 0, 4119, 1782, 0, 2915, 0, 0,
+    2382, 57, 1956, 0, 1927, 0, 4590, 249, 0, 2868, 618, 1664, 0, 1013,
+    1616, 0, 1408, 2226, 0, 3705, 0, 1996, 0, 0, 1540, 2180, 0, 0, 1668,
+    1225, 0, 1438, 796, 643, 0, 0, 1196, 0, 0, 0, 293, 0, 0, 4297, 0, 1742,
+    4427, 0, 0, 3361, 0, 0, 0, 3582, 2701, 2175, 3834, 0, 0, 1740, 3312, 0,
+    2289, 228, 800, 1852, 2387, 4417, 928, 3299, 0, 1889, 2739, 840, 365,
+    0, 1037, 0, 1993, 1676, 188, 0, 0, 0, 58, 0, 2592, 716, 0, 0, 0, 1957,
+    8, 1683, 4590, 0, 0, 0, 0, 1969, 0, 0, 4596, 0, 0, 1132, 2818, 4110, 0,
+    1250, 4470, 362, 2921, 1344, 0, 0, 1407, 0, 0, 0, 0, 0, 0, 3550, 1333,
+    486, 1062, 0, 0, 0, 115, 1596, 0, 1368, 1854, 0, 1283, 2334, 595, 0, 0,
+    746, 0, 2328, 3335, 4162, 0, 3077, 0, 2595, 0, 0, 666, 0, 3863, 354,
+    368, 0, 1543, 256, 1401, 622, 3243, 0, 0, 3141, 4065, 3009, 2441, 140,
+    0, 0, 0, 794, 0, 0, 0, 4256, 715, 0, 0, 4060, 0, 0, 0, 1788, 0, 1413,
+    1646, 4481, 611, 1275, 4310, 3995, 2535, 1188, 1805, 0, 0, 1345, 0,
+    3883, 543, 0, 853, 1074, 176, 0, 3982, 0, 2045, 0, 0, 1956, 1971, 0,
+    174, 0, 16, 78, 2530, 0, 3803, 0, 0, 885, 839, 689, 0, 0, 444, 375, 0,
+    0, 0, 2744, 1374, 246, 0, 1497, 1032, 2556, 3135, 0, 909, 0, 1042,
+    1618, 0, 261, 1579, 0, 329, 753, 1574, 1251, 0, 362, 0, 0, 778, 1332,
+    161, 2086, 0, 0, 2836, 3448, 1744, 19, 479, 256, 0, 907, 578, 3397,
+    1218, 3865, 0, 778, 2106, 344, 195, 519, 1343, 0, 3943, 0, 366, 2692,
+    0, 0, 1186, 0, 0, 4263, 4373, 0, 0, 2336, 0, 2867, 3355, 1455, 1189, 0,
+    0, 2634, 832, 809, 737, 3878, 0, 0, 0, 0, 191, 4475, 3356, 1111, 0, 0,
+    0, 0, 0, 663, 0, 2344, 0, 0, 0, 783, 1558, 3113, 2510, 0, 4558, 679, 0,
+    2693, 77, 1791, 2322, 1019, 0, 0, 0, 108, 1742, 0, 335, 1764, 278, 0,
+    345, 651, 0, 0, 4428, 0, 786, 1203, 0, 0, 1474, 0, 0, 0, 787, 0, 3384,
+    4370, 2217, 0, 0, 223, 1693, 0, 0, 706, 2337, 0, 0, 3250, 2340, 3669,
+    3079, 4135, 450, 0, 0, 4409, 0, 0, 0, 1055, 467, 3443, 2931, 0, 0,
+    1889, 734, 349, 0, 0, 3903, 1668, 3436, 1618, 337, 2792, 1113, 0, 0, 0,
+    0, 0, 4602, 0, 0, 111, 0, 720, 187, 239, 0, 0, 1632, 0, 0, 1723, 0, 53,
+    4369, 0, 0, 1193, 1860, 2008, 637, 2062, 0, 0, 0, 0, 1647, 0, 4550,
+    400, 4562, 1435, 3864, 0, 211, 982, 0, 0, 0, 339, 0, 1772, 1000, 0, 0,
+    0, 3201, 0, 0, 0, 3521, 0, 2160, 391, 1363, 0, 1071, 0, 861, 2152,
+    3227, 132, 4054, 0, 0, 2039, 0, 665, 2764, 0, 458, 1233, 3998, 0, 1369,
+    3980, 1311, 0, 2466, 0, 0, 3167, 3554, 0, 1806, 1381, 1796, 1232, 2896,
+    1652, 0, 3480, 347, 3005, 0, 0, 1401, 607, 1265, 0, 2239, 639, 3901,
+    1536, 285, 1623, 0, 0, 56, 0, 640, 3084, 0, 974, 1434, 0, 1803, 14, 0,
+    4160, 0, 2310, 401, 2047, 0, 0, 0, 1253, 0, 1683, 0, 0, 4271, 1138,
+    2296, 2645, 0, 0, 2036, 0, 543, 3551, 0, 2404, 0, 0, 4252, 1393, 3379,
+    2569, 182, 2725, 0, 0, 0, 1917, 0, 0, 3720, 4266, 1865, 668, 624, 0,
+    1566, 0, 0, 441, 0, 4210, 2559, 380, 1685, 0, 0, 0, 0, 0, 2544, 1610,
+    0, 3791, 1896, 0, 0, 0, 775, 0, 1546, 474, 3487, 873, 0, 0, 270, 2635,
+    2083, 0, 4475, 105, 0, 3768, 0, 4401, 4, 2076, 1308, 4400, 4263, 1187,
+    1197, 3581, 0, 0, 0, 0, 3365, 3759, 547, 0, 1116, 2075, 0, 4134, 0, 0,
+    0, 2023, 0, 1850, 0, 376, 4378, 0, 3672, 4360, 0, 1458, 998, 0, 3892,
+    0, 4119, 363, 1069, 4504, 2135, 0, 0, 14, 2710, 0, 0, 0, 0, 0, 0, 0, 0,
+    570, 1646, 1898, 1629, 2447, 3392, 2042, 3339, 3558, 0, 1211, 0, 4098,
+    823, 4458, 769, 2006, 713, 2075, 4203, 1022, 473, 0, 0, 0, 0, 2260, 0,
+    1828, 0, 0, 4149, 3045, 0, 0, 0, 737, 969, 1363, 0, 2023, 0, 0, 0, 506,
+    0, 769, 2490, 0, 3727, 2502, 398, 4458, 3099, 290, 0, 2189, 0, 0, 2989,
+    341, 0, 0, 1027, 0, 3735, 2769, 0, 0, 3295, 3085, 0, 1086, 3941, 0,
+    2705, 2498, 4322, 0, 443, 3826, 2522, 0, 3573, 0, 1307, 0, 3952, 4241,
+    1247, 3706, 2473, 0, 2348, 1670, 2459, 2550, 3385, 0, 0, 775, 146,
+    1686, 395, 0, 4205, 1124, 1094, 0, 1659, 2859, 0, 1665, 0, 1895, 3863,
+    0, 0, 0, 0, 297, 4582, 0, 0, 996, 383, 574, 0, 4303, 43, 0, 1856, 0,
+    2077, 0, 4514, 0, 0, 3951, 676, 0, 1034, 0, 0, 4593, 2531, 1004, 0,
+    3690, 2346, 2118, 0, 0, 1404, 1847, 1314, 1432, 0, 0, 1244, 4102, 2144,
+    0, 2519, 0, 0, 0, 0, 3586, 0, 2546, 1091, 0, 4409, 1209, 1499, 0, 1230,
+    0, 4567, 2002, 2771, 1842, 4401, 4233, 105, 1301, 0, 1384, 3982, 0,
+    150, 0, 1348, 4226, 227, 0, 2967, 1075, 2788, 0, 0, 1149, 2038, 0, 0,
+    0, 729, 0, 497, 1722, 3650, 3209, 0, 0, 3781, 3878, 3680, 427, 0, 0, 0,
+    2638, 0, 1333, 3982, 1207, 2012, 2123, 3940, 2236, 3154, 0, 349, 2511,
+    1178, 1494, 1810, 0, 633, 815, 2036, 1517, 2331, 1323, 558, 0, 379,
+    3292, 168, 33, 160, 4506, 2957, 0, 1528, 376, 4135, 384, 0, 606, 70,
+    280, 230, 0, 2287, 0, 0, 2325, 0, 0, 0, 4169, 1721, 0, 2748, 0, 3386,
+    1184, 2070, 206, 1662, 822, 0, 2269, 1869, 1017, 3519, 3108, 374, 0,
+    3165, 2065, 0, 3353, 0, 222, 1632, 994, 0, 1852, 2137, 3869, 0, 238, 0,
+    0, 302, 0, 0, 0, 1542, 343, 1115, 1235, 0, 0, 0, 1378, 0, 0, 3165, 0,
+    695, 0, 1598, 4012, 1057, 647, 0, 0, 1018, 4569, 3255, 16, 2450, 475,
+    0, 0, 0, 441, 4011, 2980, 3168, 3720, 1181, 0, 225, 0, 2338, 1397, 0,
+    0, 3219, 2458, 49, 1901, 0, 0, 0, 0, 2523, 4029, 0, 2461, 1060, 1109,
+    1741, 406, 1732, 1096, 0, 2520, 868, 0, 2627, 4381, 885, 762, 0, 3526,
+    1637, 3647, 3305, 763, 103, 0, 0, 0, 0, 0, 0, 142, 2924, 207, 1429,
+    3927, 0, 3233, 0, 0, 4093, 0, 636, 335, 0, 0, 1598, 0, 816, 2680, 3851,
+    0, 0, 999, 847, 1606, 3547, 126, 3967, 3377, 3885, 0, 0, 3848, 0, 2320,
+    4230, 2332, 0, 2339, 0, 0, 2878, 0, 230, 0, 3707, 0, 0, 2994, 4407, 28,
+    487, 1244, 477, 0, 442, 1548, 2412, 2368, 2265, 0, 469, 4399, 0, 4251,
+    626, 885, 421, 0, 1129, 0, 1654, 0, 3616, 2046, 1146, 3523, 0, 4130,
+    12, 2583, 0, 0, 1909, 3377, 241, 343, 771, 957, 0, 1031, 0, 0, 2541,
+    253, 1050, 3224, 566, 2010, 799, 0, 0, 0, 0, 604, 0, 647, 0, 0, 4524,
+    3830, 3561, 4349, 1805, 0, 2081, 0, 422, 1064, 3649, 0, 0, 2158, 955,
+    519, 4012, 0, 0, 102, 515, 1295, 2566, 0, 1186, 200, 1024, 1122, 1254,
+    2513, 0, 485, 431, 1833, 0, 2078, 15, 1949, 2097, 0, 0, 0, 0, 0, 4402,
+    0, 2272, 1210, 0, 0, 0, 4438, 1526, 2509, 2073, 816, 0, 916, 4308, 0,
+    3745, 590, 1528, 0, 0, 4601, 4144, 0, 3163, 4586, 0, 878, 1486, 1971,
+    447, 0, 1765, 1789, 2023, 1245, 2241, 0, 2948, 1999, 0, 1263, 0, 1391,
+    2292, 2644, 686, 2341, 2611, 2508, 1551, 0, 4482, 0, 4222, 523, 4355,
+    2099, 0, 1569, 1400, 692, 0, 4533, 0, 1109, 493, 3325, 3602, 0, 1595,
+    3850, 433, 1266, 798, 2992, 0, 3489, 0, 0, 0, 2045, 2174, 1861, 1284,
+    1570, 1959, 71, 0, 0, 2481, 1484, 1191, 117, 0, 0, 0, 459, 0, 3031,
+    986, 3121, 0, 1385, 1640, 1198, 610, 1100, 0, 2943, 2947, 0, 0, 0,
+    1487, 3675, 2471, 525, 2131, 0, 2273, 281, 0, 995, 1653, 856, 2151,
+    4340, 2292, 2485, 1696, 0, 0, 4507, 1863, 0, 827, 2903, 1049, 525,
+    1278, 1360, 980, 2547, 1003, 1827, 175, 1635, 1611, 1129, 0, 435, 3095,
+    892, 701, 0, 3633, 629, 0, 0, 0, 0, 1395, 0, 2148, 3281, 439, 0, 0,
+    2176, 0, 2077, 0, 230, 872, 1825, 0, 2206, 131, 301, 91, 1794, 2044,
+    3945, 4099, 4547, 1759, 4596, 605, 4242, 0, 0, 0, 0, 1739, 1394, 0, 0,
+    1773, 1807, 3755, 1506, 3059, 2210, 1813, 808, 4034, 543, 979, 2545, 0,
+    3461, 3518, 0, 3087, 0, 0, 1037, 529, 0, 1763, 0, 0, 1377, 2433, 4036,
+    125, 2705, 0, 352, 3929, 1154, 2468, 0, 0, 521, 1240, 0, 0, 1304, 0, 0,
+    0, 971, 0, 3620, 274, 4150, 3958, 967, 396, 0, 503, 2468, 3365, 2313,
+    1803, 0, 756, 4025, 1716, 0, 0, 0, 1900, 1017, 4532, 0, 455, 0, 4073,
+    0, 1986, 4291, 776, 0, 0, 391, 777, 245, 2963, 0, 3270, 1289, 2610,
+    1046, 1489, 0, 0, 0, 1791, 545, 1524, 746, 0, 856, 110, 3500, 367,
+    2119, 0, 0, 1476, 0, 2455, 225, 3464, 4260, 2138, 1249, 2700, 1426,
+    4544, 1411, 0, 0, 0, 742, 1164, 0, 846, 2045, 1751, 2350, 1083, 2957,
+    1752, 0, 2171, 4275, 1771, 0, 614, 662, 0, 1392, 3732, 472, 299, 0,
+    904, 2849, 0, 0, 697, 4435, 0, 0, 3948, 2003, 2162, 0, 4421, 1283,
+    4151, 2263, 13, 2213, 181, 60, 2142, 3274, 2032, 1505, 3495, 0, 0,
+    1518, 0, 1337, 3207, 0, 3629, 0, 0, 1863, 286, 2822, 900, 4175, 3477,
+    0, 131, 4409, 0, 0, 0, 265, 4536, 1399, 695, 0, 0, 2226, 294, 0, 2961,
+    4125, 1549, 1687, 1821, 29, 3797, 1752, 3941, 1169, 2171, 1858, 0, 0,
+    0, 0, 1150, 0, 0, 0, 2297, 0, 0, 352, 0, 896, 0, 1132, 985, 3313, 1806,
+    0, 2862, 0, 397, 4019, 4097, 777, 0, 0, 4540, 0, 3286, 2538, 2945,
+    2155, 1463, 4000, 0, 3062, 2156, 0, 0, 2986, 0, 0, 0, 0, 674, 0, 895,
+    435, 2088, 1738, 1492, 0, 3785, 0, 0, 2578, 263, 3777, 3857, 1473, 0,
+    0, 3348, 0, 501, 2377, 1585, 2405, 1681, 0, 821, 0, 1022, 3372, 901,
+    63, 1380, 0, 2153, 2631, 1309, 0, 179, 500, 3940, 0, 0, 637, 203, 770,
+    0, 1897, 2910, 2892, 174, 0, 0, 236, 0, 0, 3752, 0, 0, 2330, 0, 0, 465,
+    1126, 829, 0, 0, 0, 0, 0, 145, 4336, 386, 1848, 0, 0, 530, 1195, 0,
+    1124, 634, 3351
 };
 
 static size_t
@@ -2892,16 +2893,16 @@ keysym_name_hash_f(const char *key, const char *T)
     size_t sum = 0;
     for (size_t i = 0; key[i] != '\0'; i++)
         sum += T[i % 32] * key[i];
-    return sum % 4612;
+    return sum % 4613;
 }
 
 static size_t
 keysym_name_perfect_hash(const char *key)
 {
     return (
-        keysym_name_G[keysym_name_hash_f(key, "kGpyFyaH2vL17QkpsHYTxpmPRdRQGX1d")] +
-        keysym_name_G[keysym_name_hash_f(key, "bvkOjMVxdRlqBmcnPnEdGTGOrfAJmDxh")]
-    ) % 4612;
+        keysym_name_G[keysym_name_hash_f(key, "9Vee7ufycLGTZrwfm1LysA4Nmxu1thxU")] +
+        keysym_name_G[keysym_name_hash_f(key, "nljAj6I9jqQdDIOT7KCyZ3mT2nHoDcln")]
+    ) % 4613;
 }
 
 
@@ -4188,1320 +4189,1321 @@ static const struct name_keysym name_to_keysym[] = {
     { 0x1000ff6c, 17051 }, /* hpReset */
     { 0x1000ff6d, 17059 }, /* hpSystem */
     { 0x1000ff6e, 17068 }, /* hpUser */
-    { 0x000002a1, 17075 }, /* Hstroke */
-    { 0x000002b1, 17083 }, /* hstroke */
-    { 0x000009e2, 17091 }, /* ht */
-    { 0x0000ffed, 17094 }, /* Hyper_L */
-    { 0x0000ffee, 17102 }, /* Hyper_R */
-    { 0x000000ad, 17110 }, /* hyphen */
-    { 0x00000049, 17117 }, /* I */
-    { 0x00000069, 17119 }, /* i */
-    { 0x000002a9, 17121 }, /* Iabovedot */
-    { 0x000000cd, 17131 }, /* Iacute */
-    { 0x000000ed, 17138 }, /* iacute */
-    { 0x01001eca, 17145 }, /* Ibelowdot */
-    { 0x01001ecb, 17155 }, /* ibelowdot */
-    { 0x0100012c, 17165 }, /* Ibreve */
-    { 0x0100012d, 17172 }, /* ibreve */
-    { 0x000000ce, 17179 }, /* Icircumflex */
-    { 0x000000ee, 17191 }, /* icircumflex */
-    { 0x000008cf, 17203 }, /* identical */
-    { 0x000000cf, 17213 }, /* Idiaeresis */
-    { 0x000000ef, 17224 }, /* idiaeresis */
-    { 0x000002b9, 17235 }, /* idotless */
-    { 0x000008cd, 17244 }, /* ifonlyif */
-    { 0x000000cc, 17253 }, /* Igrave */
-    { 0x000000ec, 17260 }, /* igrave */
-    { 0x01001ec8, 17267 }, /* Ihook */
-    { 0x01001ec9, 17273 }, /* ihook */
-    { 0x000003cf, 17279 }, /* Imacron */
-    { 0x000003ef, 17287 }, /* imacron */
-    { 0x000008ce, 17295 }, /* implies */
-    { 0x000008da, 17303 }, /* includedin */
-    { 0x000008db, 17314 }, /* includes */
-    { 0x000008c2, 17323 }, /* infinity */
-    { 0x0000ff63, 17332 }, /* Insert */
-    { 0x1000ff72, 17339 }, /* InsertChar */
-    { 0x1000ff70, 17350 }, /* InsertLine */
-    { 0x000008bf, 17361 }, /* integral */
-    { 0x000008dc, 17370 }, /* intersection */
-    { 0x100000ee, 17383 }, /* IO */
-    { 0x000003c7, 17386 }, /* Iogonek */
-    { 0x000003e7, 17394 }, /* iogonek */
-    { 0x0000fe33, 17402 }, /* ISO_Center_Object */
-    { 0x0000fe30, 17420 }, /* ISO_Continuous_Underline */
-    { 0x0000fe31, 17445 }, /* ISO_Discontinuous_Underline */
-    { 0x0000fe32, 17473 }, /* ISO_Emphasize */
-    { 0x0000fe34, 17487 }, /* ISO_Enter */
-    { 0x0000fe2f, 17497 }, /* ISO_Fast_Cursor_Down */
-    { 0x0000fe2c, 17518 }, /* ISO_Fast_Cursor_Left */
-    { 0x0000fe2d, 17539 }, /* ISO_Fast_Cursor_Right */
-    { 0x0000fe2e, 17561 }, /* ISO_Fast_Cursor_Up */
-    { 0x0000fe0c, 17580 }, /* ISO_First_Group */
-    { 0x0000fe0d, 17596 }, /* ISO_First_Group_Lock */
-    { 0x0000fe06, 17617 }, /* ISO_Group_Latch */
-    { 0x0000fe07, 17633 }, /* ISO_Group_Lock */
-    { 0x0000ff7e, 17648 }, /* ISO_Group_Shift */
-    { 0x0000fe0e, 17664 }, /* ISO_Last_Group */
-    { 0x0000fe0f, 17679 }, /* ISO_Last_Group_Lock */
-    { 0x0000fe20, 17699 }, /* ISO_Left_Tab */
-    { 0x0000fe02, 17712 }, /* ISO_Level2_Latch */
-    { 0x0000fe04, 17729 }, /* ISO_Level3_Latch */
-    { 0x0000fe05, 17746 }, /* ISO_Level3_Lock */
-    { 0x0000fe03, 17762 }, /* ISO_Level3_Shift */
-    { 0x0000fe12, 17779 }, /* ISO_Level5_Latch */
-    { 0x0000fe13, 17796 }, /* ISO_Level5_Lock */
-    { 0x0000fe11, 17812 }, /* ISO_Level5_Shift */
-    { 0x0000fe01, 17829 }, /* ISO_Lock */
-    { 0x0000fe22, 17838 }, /* ISO_Move_Line_Down */
-    { 0x0000fe21, 17857 }, /* ISO_Move_Line_Up */
-    { 0x0000fe08, 17874 }, /* ISO_Next_Group */
-    { 0x0000fe09, 17889 }, /* ISO_Next_Group_Lock */
-    { 0x0000fe24, 17909 }, /* ISO_Partial_Line_Down */
-    { 0x0000fe23, 17931 }, /* ISO_Partial_Line_Up */
-    { 0x0000fe25, 17951 }, /* ISO_Partial_Space_Left */
-    { 0x0000fe26, 17974 }, /* ISO_Partial_Space_Right */
-    { 0x0000fe0a, 17998 }, /* ISO_Prev_Group */
-    { 0x0000fe0b, 18013 }, /* ISO_Prev_Group_Lock */
-    { 0x0000fe2b, 18033 }, /* ISO_Release_Both_Margins */
-    { 0x0000fe29, 18058 }, /* ISO_Release_Margin_Left */
-    { 0x0000fe2a, 18082 }, /* ISO_Release_Margin_Right */
-    { 0x0000fe27, 18107 }, /* ISO_Set_Margin_Left */
-    { 0x0000fe28, 18127 }, /* ISO_Set_Margin_Right */
-    { 0x000003a5, 18148 }, /* Itilde */
-    { 0x000003b5, 18155 }, /* itilde */
-    { 0x0000004a, 18162 }, /* J */
-    { 0x0000006a, 18164 }, /* j */
-    { 0x000002ac, 18166 }, /* Jcircumflex */
-    { 0x000002bc, 18178 }, /* jcircumflex */
-    { 0x00000bca, 18190 }, /* jot */
-    { 0x0000004b, 18194 }, /* K */
-    { 0x0000006b, 18196 }, /* k */
-    { 0x000004a7, 18198 }, /* kana_a */
-    { 0x000004b1, 18205 }, /* kana_A */
-    { 0x000004c1, 18212 }, /* kana_CHI */
-    { 0x000004a3, 18221 }, /* kana_closingbracket */
-    { 0x000004a4, 18241 }, /* kana_comma */
-    { 0x000004a5, 18252 }, /* kana_conjunctive */
-    { 0x000004aa, 18269 }, /* kana_e */
-    { 0x000004b4, 18276 }, /* kana_E */
-    { 0x000004cc, 18283 }, /* kana_FU */
-    { 0x000004a1, 18291 }, /* kana_fullstop */
-    { 0x000004ca, 18305 }, /* kana_HA */
-    { 0x000004cd, 18313 }, /* kana_HE */
-    { 0x000004cb, 18321 }, /* kana_HI */
-    { 0x000004ce, 18329 }, /* kana_HO */
-    { 0x000004cc, 18337 }, /* kana_HU */
-    { 0x000004a8, 18345 }, /* kana_i */
-    { 0x000004b2, 18352 }, /* kana_I */
-    { 0x000004b6, 18359 }, /* kana_KA */
-    { 0x000004b9, 18367 }, /* kana_KE */
-    { 0x000004b7, 18375 }, /* kana_KI */
-    { 0x000004ba, 18383 }, /* kana_KO */
-    { 0x000004b8, 18391 }, /* kana_KU */
-    { 0x0000ff2d, 18399 }, /* Kana_Lock */
-    { 0x000004cf, 18409 }, /* kana_MA */
-    { 0x000004d2, 18417 }, /* kana_ME */
-    { 0x000004d0, 18425 }, /* kana_MI */
-    { 0x000004a5, 18433 }, /* kana_middledot */
-    { 0x000004d3, 18448 }, /* kana_MO */
-    { 0x000004d1, 18456 }, /* kana_MU */
-    { 0x000004dd, 18464 }, /* kana_N */
-    { 0x000004c5, 18471 }, /* kana_NA */
-    { 0x000004c8, 18479 }, /* kana_NE */
-    { 0x000004c6, 18487 }, /* kana_NI */
-    { 0x000004c9, 18495 }, /* kana_NO */
-    { 0x000004c7, 18503 }, /* kana_NU */
-    { 0x000004ab, 18511 }, /* kana_o */
-    { 0x000004b5, 18518 }, /* kana_O */
-    { 0x000004a2, 18525 }, /* kana_openingbracket */
-    { 0x000004d7, 18545 }, /* kana_RA */
-    { 0x000004da, 18553 }, /* kana_RE */
-    { 0x000004d8, 18561 }, /* kana_RI */
-    { 0x000004db, 18569 }, /* kana_RO */
-    { 0x000004d9, 18577 }, /* kana_RU */
-    { 0x000004bb, 18585 }, /* kana_SA */
-    { 0x000004be, 18593 }, /* kana_SE */
-    { 0x000004bc, 18601 }, /* kana_SHI */
-    { 0x0000ff2e, 18610 }, /* Kana_Shift */
-    { 0x000004bf, 18621 }, /* kana_SO */
-    { 0x000004bd, 18629 }, /* kana_SU */
-    { 0x0000ff7e, 18637 }, /* kana_switch */
-    { 0x000004c0, 18649 }, /* kana_TA */
-    { 0x000004c3, 18657 }, /* kana_TE */
-    { 0x000004c1, 18665 }, /* kana_TI */
-    { 0x000004c4, 18673 }, /* kana_TO */
-    { 0x000004af, 18681 }, /* kana_tsu */
-    { 0x000004c2, 18690 }, /* kana_TSU */
-    { 0x000004af, 18699 }, /* kana_tu */
-    { 0x000004c2, 18707 }, /* kana_TU */
-    { 0x000004a9, 18715 }, /* kana_u */
-    { 0x000004b3, 18722 }, /* kana_U */
-    { 0x000004dc, 18729 }, /* kana_WA */
-    { 0x000004a6, 18737 }, /* kana_WO */
-    { 0x000004ac, 18745 }, /* kana_ya */
-    { 0x000004d4, 18753 }, /* kana_YA */
-    { 0x000004ae, 18761 }, /* kana_yo */
-    { 0x000004d6, 18769 }, /* kana_YO */
-    { 0x000004ad, 18777 }, /* kana_yu */
-    { 0x000004d5, 18785 }, /* kana_YU */
-    { 0x0000ff21, 18793 }, /* Kanji */
-    { 0x0000ff37, 18799 }, /* Kanji_Bangou */
-    { 0x000003a2, 18812 }, /* kappa */
-    { 0x0000ff26, 18818 }, /* Katakana */
-    { 0x000003d3, 18827 }, /* Kcedilla */
-    { 0x000003f3, 18836 }, /* kcedilla */
-    { 0x00000eff, 18845 }, /* Korean_Won */
-    { 0x0000ffb0, 18856 }, /* KP_0 */
-    { 0x0000ffb1, 18861 }, /* KP_1 */
-    { 0x0000ffb2, 18866 }, /* KP_2 */
-    { 0x0000ffb3, 18871 }, /* KP_3 */
-    { 0x0000ffb4, 18876 }, /* KP_4 */
-    { 0x0000ffb5, 18881 }, /* KP_5 */
-    { 0x0000ffb6, 18886 }, /* KP_6 */
-    { 0x0000ffb7, 18891 }, /* KP_7 */
-    { 0x0000ffb8, 18896 }, /* KP_8 */
-    { 0x0000ffb9, 18901 }, /* KP_9 */
-    { 0x0000ffab, 18906 }, /* KP_Add */
-    { 0x1000ff75, 18913 }, /* KP_BackTab */
-    { 0x0000ff9d, 18924 }, /* KP_Begin */
-    { 0x0000ffae, 18933 }, /* KP_Decimal */
-    { 0x0000ff9f, 18944 }, /* KP_Delete */
-    { 0x0000ffaf, 18954 }, /* KP_Divide */
-    { 0x0000ff99, 18964 }, /* KP_Down */
-    { 0x0000ff9c, 18972 }, /* KP_End */
-    { 0x0000ff8d, 18979 }, /* KP_Enter */
-    { 0x0000ffbd, 18988 }, /* KP_Equal */
-    { 0x0000ff91, 18997 }, /* KP_F1 */
-    { 0x0000ff92, 19003 }, /* KP_F2 */
-    { 0x0000ff93, 19009 }, /* KP_F3 */
-    { 0x0000ff94, 19015 }, /* KP_F4 */
-    { 0x0000ff95, 19021 }, /* KP_Home */
-    { 0x0000ff9e, 19029 }, /* KP_Insert */
-    { 0x0000ff96, 19039 }, /* KP_Left */
-    { 0x0000ffaa, 19047 }, /* KP_Multiply */
-    { 0x0000ff9b, 19059 }, /* KP_Next */
-    { 0x0000ff9b, 19067 }, /* KP_Page_Down */
-    { 0x0000ff9a, 19080 }, /* KP_Page_Up */
-    { 0x0000ff9a, 19091 }, /* KP_Prior */
-    { 0x0000ff98, 19100 }, /* KP_Right */
-    { 0x0000ffac, 19109 }, /* KP_Separator */
-    { 0x0000ff80, 19122 }, /* KP_Space */
-    { 0x0000ffad, 19131 }, /* KP_Subtract */
-    { 0x0000ff89, 19143 }, /* KP_Tab */
-    { 0x0000ff97, 19150 }, /* KP_Up */
-    { 0x000003a2, 19156 }, /* kra */
-    { 0x0000004c, 19160 }, /* L */
-    { 0x0000006c, 19162 }, /* l */
-    { 0x0000ffc8, 19164 }, /* L1 */
-    { 0x0000ffd1, 19167 }, /* L10 */
-    { 0x0000ffc9, 19171 }, /* L2 */
-    { 0x0000ffca, 19174 }, /* L3 */
-    { 0x0000ffcb, 19177 }, /* L4 */
-    { 0x0000ffcc, 19180 }, /* L5 */
-    { 0x0000ffcd, 19183 }, /* L6 */
-    { 0x0000ffce, 19186 }, /* L7 */
-    { 0x0000ffcf, 19189 }, /* L8 */
-    { 0x0000ffd0, 19192 }, /* L9 */
-    { 0x000001c5, 19195 }, /* Lacute */
-    { 0x000001e5, 19202 }, /* lacute */
-    { 0x0000fed4, 19209 }, /* Last_Virtual_Screen */
-    { 0x00000ad9, 19229 }, /* latincross */
-    { 0x01001e36, 19240 }, /* Lbelowdot */
-    { 0x01001e37, 19250 }, /* lbelowdot */
-    { 0x000001a5, 19260 }, /* Lcaron */
-    { 0x000001b5, 19267 }, /* lcaron */
-    { 0x000003a6, 19274 }, /* Lcedilla */
-    { 0x000003b6, 19283 }, /* lcedilla */
-    { 0x0000ff51, 19292 }, /* Left */
-    { 0x00000abc, 19297 }, /* leftanglebracket */
-    { 0x000008fb, 19314 }, /* leftarrow */
-    { 0x00000ba3, 19324 }, /* leftcaret */
-    { 0x00000ad2, 19334 }, /* leftdoublequotemark */
-    { 0x000008af, 19354 }, /* leftmiddlecurlybrace */
-    { 0x00000acc, 19375 }, /* leftopentriangle */
-    { 0x00000aea, 19392 }, /* leftpointer */
-    { 0x000008a1, 19404 }, /* leftradical */
-    { 0x00000bda, 19416 }, /* leftshoe */
-    { 0x00000ad0, 19425 }, /* leftsinglequotemark */
-    { 0x000009f4, 19445 }, /* leftt */
-    { 0x00000bdc, 19451 }, /* lefttack */
-    { 0x0000003c, 19460 }, /* less */
-    { 0x000008bc, 19465 }, /* lessthanequal */
-    { 0x000009e5, 19479 }, /* lf */
-    { 0x0000ff0a, 19482 }, /* Linefeed */
-    { 0x100000af, 19491 }, /* lira */
-    { 0x010020a4, 19496 }, /* LiraSign */
-    { 0x000008de, 19505 }, /* logicaland */
-    { 0x000008df, 19516 }, /* logicalor */
-    { 0x100000f6, 19526 }, /* longminus */
-    { 0x000009ed, 19536 }, /* lowleftcorner */
-    { 0x000009ea, 19550 }, /* lowrightcorner */
-    { 0x000001a3, 19565 }, /* Lstroke */
-    { 0x000001b3, 19573 }, /* lstroke */
-    { 0x0000004d, 19581 }, /* M */
-    { 0x0000006d, 19583 }, /* m */
-    { 0x01001e40, 19585 }, /* Mabovedot */
-    { 0x01001e41, 19595 }, /* mabovedot */
-    { 0x000006a5, 19605 }, /* Macedonia_dse */
-    { 0x000006b5, 19619 }, /* Macedonia_DSE */
-    { 0x000006a2, 19633 }, /* Macedonia_gje */
-    { 0x000006b2, 19647 }, /* Macedonia_GJE */
-    { 0x000006ac, 19661 }, /* Macedonia_kje */
-    { 0x000006bc, 19675 }, /* Macedonia_KJE */
-    { 0x000000af, 19689 }, /* macron */
-    { 0x0000ff3e, 19696 }, /* Mae_Koho */
-    { 0x00000af7, 19705 }, /* malesymbol */
-    { 0x00000af0, 19716 }, /* maltesecross */
-    { 0x00000abf, 19729 }, /* marker */
-    { 0x000000ba, 19736 }, /* masculine */
-    { 0x0000ff2c, 19746 }, /* Massyo */
-    { 0x0000ff67, 19753 }, /* Menu */
-    { 0x0000ffe7, 19758 }, /* Meta_L */
-    { 0x0000ffe8, 19765 }, /* Meta_R */
-    { 0x010020a5, 19772 }, /* MillSign */
-    { 0x0000002d, 19781 }, /* minus */
-    { 0x00000ad6, 19787 }, /* minutes */
-    { 0x0000ff7e, 19795 }, /* Mode_switch */
-    { 0x0000fe77, 19807 }, /* MouseKeys_Accel_Enable */
-    { 0x0000fe76, 19830 }, /* MouseKeys_Enable */
-    { 0x000000b5, 19847 }, /* mu */
-    { 0x0000ff22, 19850 }, /* Muhenkan */
-    { 0x0000ff20, 19859 }, /* Multi_key */
-    { 0x0000ff3d, 19869 }, /* MultipleCandidate */
-    { 0x000000d7, 19887 }, /* multiply */
-    { 0x00000af6, 19896 }, /* musicalflat */
-    { 0x00000af5, 19908 }, /* musicalsharp */
-    { 0x100000a8, 19921 }, /* mute_acute */
-    { 0x100000aa, 19932 }, /* mute_asciicircum */
-    { 0x100000ac, 19949 }, /* mute_asciitilde */
-    { 0x100000ab, 19965 }, /* mute_diaeresis */
-    { 0x100000a9, 19980 }, /* mute_grave */
-    { 0x0000004e, 19991 }, /* N */
-    { 0x0000006e, 19993 }, /* n */
-    { 0x000008c5, 19995 }, /* nabla */
-    { 0x000001d1, 20001 }, /* Nacute */
-    { 0x000001f1, 20008 }, /* nacute */
-    { 0x010020a6, 20015 }, /* NairaSign */
-    { 0x000001d2, 20025 }, /* Ncaron */
-    { 0x000001f2, 20032 }, /* ncaron */
-    { 0x000003d1, 20039 }, /* Ncedilla */
-    { 0x000003f1, 20048 }, /* ncedilla */
-    { 0x010020aa, 20057 }, /* NewSheqelSign */
-    { 0x0000ff56, 20071 }, /* Next */
-    { 0x0000fed2, 20076 }, /* Next_Virtual_Screen */
-    { 0x01002089, 20096 }, /* ninesubscript */
-    { 0x01002079, 20110 }, /* ninesuperior */
-    { 0x000009e8, 20123 }, /* nl */
-    { 0x000000a0, 20126 }, /* nobreakspace */
-    { 0x00000000, 20139 }, /* NoSymbol */
-    { 0x01002247, 20148 }, /* notapproxeq */
-    { 0x01002209, 20160 }, /* notelementof */
-    { 0x000008bd, 20173 }, /* notequal */
-    { 0x01002262, 20182 }, /* notidentical */
-    { 0x000000ac, 20195 }, /* notsign */
-    { 0x000000d1, 20203 }, /* Ntilde */
-    { 0x000000f1, 20210 }, /* ntilde */
-    { 0x0000ff7f, 20217 }, /* Num_Lock */
-    { 0x00000023, 20226 }, /* numbersign */
-    { 0x000006b0, 20237 }, /* numerosign */
-    { 0x0000004f, 20248 }, /* O */
-    { 0x0000006f, 20250 }, /* o */
-    { 0x000000d3, 20252 }, /* Oacute */
-    { 0x000000f3, 20259 }, /* oacute */
-    { 0x0100019f, 20266 }, /* Obarred */
-    { 0x01000275, 20274 }, /* obarred */
-    { 0x01001ecc, 20282 }, /* Obelowdot */
-    { 0x01001ecd, 20292 }, /* obelowdot */
-    { 0x010001d1, 20302 }, /* Ocaron */
-    { 0x010001d2, 20309 }, /* ocaron */
-    { 0x000000d4, 20316 }, /* Ocircumflex */
-    { 0x000000f4, 20328 }, /* ocircumflex */
-    { 0x01001ed0, 20340 }, /* Ocircumflexacute */
-    { 0x01001ed1, 20357 }, /* ocircumflexacute */
-    { 0x01001ed8, 20374 }, /* Ocircumflexbelowdot */
-    { 0x01001ed9, 20394 }, /* ocircumflexbelowdot */
-    { 0x01001ed2, 20414 }, /* Ocircumflexgrave */
-    { 0x01001ed3, 20431 }, /* ocircumflexgrave */
-    { 0x01001ed4, 20448 }, /* Ocircumflexhook */
-    { 0x01001ed5, 20464 }, /* ocircumflexhook */
-    { 0x01001ed6, 20480 }, /* Ocircumflextilde */
-    { 0x01001ed7, 20497 }, /* ocircumflextilde */
-    { 0x000000d6, 20514 }, /* Odiaeresis */
-    { 0x000000f6, 20525 }, /* odiaeresis */
-    { 0x000001d5, 20536 }, /* Odoubleacute */
-    { 0x000001f5, 20549 }, /* odoubleacute */
-    { 0x000013bc, 20562 }, /* OE */
-    { 0x000013bd, 20565 }, /* oe */
-    { 0x000001b2, 20568 }, /* ogonek */
-    { 0x000000d2, 20575 }, /* Ograve */
-    { 0x000000f2, 20582 }, /* ograve */
-    { 0x01001ece, 20589 }, /* Ohook */
-    { 0x01001ecf, 20595 }, /* ohook */
-    { 0x010001a0, 20601 }, /* Ohorn */
-    { 0x010001a1, 20607 }, /* ohorn */
-    { 0x01001eda, 20613 }, /* Ohornacute */
-    { 0x01001edb, 20624 }, /* ohornacute */
-    { 0x01001ee2, 20635 }, /* Ohornbelowdot */
-    { 0x01001ee3, 20649 }, /* ohornbelowdot */
-    { 0x01001edc, 20663 }, /* Ohorngrave */
-    { 0x01001edd, 20674 }, /* ohorngrave */
-    { 0x01001ede, 20685 }, /* Ohornhook */
-    { 0x01001edf, 20695 }, /* ohornhook */
-    { 0x01001ee0, 20705 }, /* Ohorntilde */
-    { 0x01001ee1, 20716 }, /* ohorntilde */
-    { 0x000003d2, 20727 }, /* Omacron */
-    { 0x000003f2, 20735 }, /* omacron */
-    { 0x00000ac3, 20743 }, /* oneeighth */
-    { 0x00000ab2, 20753 }, /* onefifth */
-    { 0x000000bd, 20762 }, /* onehalf */
-    { 0x000000bc, 20770 }, /* onequarter */
-    { 0x00000ab6, 20781 }, /* onesixth */
-    { 0x01002081, 20790 }, /* onesubscript */
-    { 0x000000b9, 20803 }, /* onesuperior */
-    { 0x00000ab0, 20815 }, /* onethird */
-    { 0x000000d8, 20824 }, /* Ooblique */
-    { 0x000000f8, 20833 }, /* ooblique */
-    { 0x00000ae2, 20842 }, /* openrectbullet */
-    { 0x00000ae5, 20857 }, /* openstar */
-    { 0x00000ae4, 20866 }, /* opentribulletdown */
-    { 0x00000ae3, 20884 }, /* opentribulletup */
-    { 0x000000aa, 20900 }, /* ordfeminine */
-    { 0x000000ba, 20912 }, /* ordmasculine */
-    { 0x1004ff44, 20925 }, /* osfActivate */
-    { 0x1004ff31, 20937 }, /* osfAddMode */
-    { 0x1004ff08, 20948 }, /* osfBackSpace */
-    { 0x1004ff07, 20961 }, /* osfBackTab */
-    { 0x1004ff5a, 20972 }, /* osfBeginData */
-    { 0x1004ff58, 20985 }, /* osfBeginLine */
-    { 0x1004ff69, 20998 }, /* osfCancel */
-    { 0x1004ff0b, 21008 }, /* osfClear */
-    { 0x1004ff02, 21017 }, /* osfCopy */
-    { 0x1004ff03, 21025 }, /* osfCut */
-    { 0x1004ffff, 21032 }, /* osfDelete */
-    { 0x1004ff72, 21042 }, /* osfDeselectAll */
-    { 0x1004ff54, 21057 }, /* osfDown */
-    { 0x1004ff59, 21065 }, /* osfEndData */
-    { 0x1004ff57, 21076 }, /* osfEndLine */
-    { 0x1004ff1b, 21087 }, /* osfEscape */
-    { 0x1004ff74, 21097 }, /* osfExtend */
-    { 0x1004ff6a, 21107 }, /* osfHelp */
-    { 0x1004ff63, 21115 }, /* osfInsert */
-    { 0x1004ff51, 21125 }, /* osfLeft */
-    { 0x1004ff67, 21133 }, /* osfMenu */
-    { 0x1004ff45, 21141 }, /* osfMenuBar */
-    { 0x1004ff5e, 21152 }, /* osfNextField */
-    { 0x1004ff5c, 21165 }, /* osfNextMenu */
-    { 0x1004ff42, 21177 }, /* osfPageDown */
-    { 0x1004ff40, 21189 }, /* osfPageLeft */
-    { 0x1004ff43, 21201 }, /* osfPageRight */
-    { 0x1004ff41, 21214 }, /* osfPageUp */
-    { 0x1004ff04, 21224 }, /* osfPaste */
-    { 0x1004ff5d, 21233 }, /* osfPrevField */
-    { 0x1004ff5b, 21246 }, /* osfPrevMenu */
-    { 0x1004ff32, 21258 }, /* osfPrimaryPaste */
-    { 0x1004ff33, 21274 }, /* osfQuickPaste */
-    { 0x1004ff73, 21288 }, /* osfReselect */
-    { 0x1004ff78, 21300 }, /* osfRestore */
-    { 0x1004ff53, 21311 }, /* osfRight */
-    { 0x1004ff60, 21320 }, /* osfSelect */
-    { 0x1004ff71, 21330 }, /* osfSelectAll */
-    { 0x1004ff65, 21343 }, /* osfUndo */
-    { 0x1004ff52, 21351 }, /* osfUp */
-    { 0x000000d8, 21357 }, /* Oslash */
-    { 0x000000f8, 21364 }, /* oslash */
-    { 0x000000d5, 21371 }, /* Otilde */
-    { 0x000000f5, 21378 }, /* otilde */
-    { 0x00000bc0, 21385 }, /* overbar */
-    { 0x0000fe78, 21393 }, /* Overlay1_Enable */
-    { 0x0000fe79, 21409 }, /* Overlay2_Enable */
-    { 0x0000047e, 21425 }, /* overline */
-    { 0x00000050, 21434 }, /* P */
-    { 0x00000070, 21436 }, /* p */
-    { 0x01001e56, 21438 }, /* Pabovedot */
-    { 0x01001e57, 21448 }, /* pabovedot */
-    { 0x0000ff56, 21458 }, /* Page_Down */
-    { 0x0000ff55, 21468 }, /* Page_Up */
-    { 0x000000b6, 21476 }, /* paragraph */
-    { 0x00000028, 21486 }, /* parenleft */
-    { 0x00000029, 21496 }, /* parenright */
-    { 0x01002202, 21507 }, /* partdifferential */
-    { 0x000008ef, 21524 }, /* partialderivative */
-    { 0x0000ff13, 21542 }, /* Pause */
-    { 0x00000025, 21548 }, /* percent */
-    { 0x0000002e, 21556 }, /* period */
-    { 0x000000b7, 21563 }, /* periodcentered */
-    { 0x00000ad5, 21578 }, /* permille */
-    { 0x010020a7, 21587 }, /* PesetaSign */
-    { 0x00000afb, 21598 }, /* phonographcopyright */
-    { 0x0000002b, 21618 }, /* plus */
-    { 0x000000b1, 21623 }, /* plusminus */
-    { 0x0000fefa, 21633 }, /* Pointer_Accelerate */
-    { 0x0000fee9, 21652 }, /* Pointer_Button1 */
-    { 0x0000feea, 21668 }, /* Pointer_Button2 */
-    { 0x0000feeb, 21684 }, /* Pointer_Button3 */
-    { 0x0000feec, 21700 }, /* Pointer_Button4 */
-    { 0x0000feed, 21716 }, /* Pointer_Button5 */
-    { 0x0000fee8, 21732 }, /* Pointer_Button_Dflt */
-    { 0x0000feef, 21752 }, /* Pointer_DblClick1 */
-    { 0x0000fef0, 21770 }, /* Pointer_DblClick2 */
-    { 0x0000fef1, 21788 }, /* Pointer_DblClick3 */
-    { 0x0000fef2, 21806 }, /* Pointer_DblClick4 */
-    { 0x0000fef3, 21824 }, /* Pointer_DblClick5 */
-    { 0x0000feee, 21842 }, /* Pointer_DblClick_Dflt */
-    { 0x0000fefb, 21864 }, /* Pointer_DfltBtnNext */
-    { 0x0000fefc, 21884 }, /* Pointer_DfltBtnPrev */
-    { 0x0000fee3, 21904 }, /* Pointer_Down */
-    { 0x0000fee6, 21917 }, /* Pointer_DownLeft */
-    { 0x0000fee7, 21934 }, /* Pointer_DownRight */
-    { 0x0000fef5, 21952 }, /* Pointer_Drag1 */
-    { 0x0000fef6, 21966 }, /* Pointer_Drag2 */
-    { 0x0000fef7, 21980 }, /* Pointer_Drag3 */
-    { 0x0000fef8, 21994 }, /* Pointer_Drag4 */
-    { 0x0000fefd, 22008 }, /* Pointer_Drag5 */
-    { 0x0000fef4, 22022 }, /* Pointer_Drag_Dflt */
-    { 0x0000fef9, 22040 }, /* Pointer_EnableKeys */
-    { 0x0000fee0, 22059 }, /* Pointer_Left */
-    { 0x0000fee1, 22072 }, /* Pointer_Right */
-    { 0x0000fee2, 22086 }, /* Pointer_Up */
-    { 0x0000fee4, 22097 }, /* Pointer_UpLeft */
-    { 0x0000fee5, 22112 }, /* Pointer_UpRight */
-    { 0x00000ad4, 22128 }, /* prescription */
-    { 0x0000fed1, 22141 }, /* Prev_Virtual_Screen */
-    { 0x0000ff3e, 22161 }, /* PreviousCandidate */
-    { 0x0000ff61, 22179 }, /* Print */
-    { 0x0000ff55, 22185 }, /* Prior */
-    { 0x000004b0, 22191 }, /* prolongedsound */
-    { 0x00000aa6, 22206 }, /* punctspace */
-    { 0x00000051, 22217 }, /* Q */
-    { 0x00000071, 22219 }, /* q */
-    { 0x00000bcc, 22221 }, /* quad */
-    { 0x0000003f, 22226 }, /* question */
-    { 0x000000bf, 22235 }, /* questiondown */
-    { 0x00000022, 22248 }, /* quotedbl */
-    { 0x00000060, 22257 }, /* quoteleft */
-    { 0x00000027, 22267 }, /* quoteright */
-    { 0x00000052, 22278 }, /* R */
-    { 0x00000072, 22280 }, /* r */
-    { 0x0000ffd2, 22282 }, /* R1 */
-    { 0x0000ffdb, 22285 }, /* R10 */
-    { 0x0000ffdc, 22289 }, /* R11 */
-    { 0x0000ffdd, 22293 }, /* R12 */
-    { 0x0000ffde, 22297 }, /* R13 */
-    { 0x0000ffdf, 22301 }, /* R14 */
-    { 0x0000ffe0, 22305 }, /* R15 */
-    { 0x0000ffd3, 22309 }, /* R2 */
-    { 0x0000ffd4, 22312 }, /* R3 */
-    { 0x0000ffd5, 22315 }, /* R4 */
-    { 0x0000ffd6, 22318 }, /* R5 */
-    { 0x0000ffd7, 22321 }, /* R6 */
-    { 0x0000ffd8, 22324 }, /* R7 */
-    { 0x0000ffd9, 22327 }, /* R8 */
-    { 0x0000ffda, 22330 }, /* R9 */
-    { 0x000001c0, 22333 }, /* Racute */
-    { 0x000001e0, 22340 }, /* racute */
-    { 0x000008d6, 22347 }, /* radical */
-    { 0x000001d8, 22355 }, /* Rcaron */
-    { 0x000001f8, 22362 }, /* rcaron */
-    { 0x000003a3, 22369 }, /* Rcedilla */
-    { 0x000003b3, 22378 }, /* rcedilla */
-    { 0x0000ff66, 22387 }, /* Redo */
-    { 0x000000ae, 22392 }, /* registered */
-    { 0x0000fe72, 22403 }, /* RepeatKeys_Enable */
-    { 0x1000ff6c, 22421 }, /* Reset */
-    { 0x0000ff0d, 22427 }, /* Return */
-    { 0x0000ff53, 22434 }, /* Right */
-    { 0x00000abe, 22440 }, /* rightanglebracket */
-    { 0x000008fd, 22458 }, /* rightarrow */
-    { 0x00000ba6, 22469 }, /* rightcaret */
-    { 0x00000ad3, 22480 }, /* rightdoublequotemark */
-    { 0x000008b0, 22501 }, /* rightmiddlecurlybrace */
-    { 0x000008b7, 22523 }, /* rightmiddlesummation */
-    { 0x00000acd, 22544 }, /* rightopentriangle */
-    { 0x00000aeb, 22562 }, /* rightpointer */
-    { 0x00000bd8, 22575 }, /* rightshoe */
-    { 0x00000ad1, 22585 }, /* rightsinglequotemark */
-    { 0x000009f5, 22606 }, /* rightt */
-    { 0x00000bfc, 22613 }, /* righttack */
-    { 0x0000ff24, 22623 }, /* Romaji */
-    { 0x010020a8, 22630 }, /* RupeeSign */
-    { 0x00000053, 22640 }, /* S */
-    { 0x00000073, 22642 }, /* s */
-    { 0x01001e60, 22644 }, /* Sabovedot */
-    { 0x01001e61, 22654 }, /* sabovedot */
-    { 0x000001a6, 22664 }, /* Sacute */
-    { 0x000001b6, 22671 }, /* sacute */
-    { 0x000001a9, 22678 }, /* Scaron */
-    { 0x000001b9, 22685 }, /* scaron */
-    { 0x000001aa, 22692 }, /* Scedilla */
-    { 0x000001ba, 22701 }, /* scedilla */
-    { 0x0100018f, 22710 }, /* SCHWA */
-    { 0x01000259, 22716 }, /* schwa */
-    { 0x000002de, 22722 }, /* Scircumflex */
-    { 0x000002fe, 22734 }, /* scircumflex */
-    { 0x0000ff7e, 22746 }, /* script_switch */
-    { 0x0000ff14, 22760 }, /* Scroll_Lock */
-    { 0x00000ad7, 22772 }, /* seconds */
-    { 0x000000a7, 22780 }, /* section */
-    { 0x0000ff60, 22788 }, /* Select */
-    { 0x0000003b, 22795 }, /* semicolon */
-    { 0x000004df, 22805 }, /* semivoicedsound */
-    { 0x000006a1, 22821 }, /* Serbian_dje */
-    { 0x000006b1, 22833 }, /* Serbian_DJE */
-    { 0x000006af, 22845 }, /* Serbian_dze */
-    { 0x000006bf, 22857 }, /* Serbian_DZE */
-    { 0x000006a8, 22869 }, /* Serbian_je */
-    { 0x000006b8, 22880 }, /* Serbian_JE */
-    { 0x000006a9, 22891 }, /* Serbian_lje */
-    { 0x000006b9, 22903 }, /* Serbian_LJE */
-    { 0x000006aa, 22915 }, /* Serbian_nje */
-    { 0x000006ba, 22927 }, /* Serbian_NJE */
-    { 0x000006ab, 22939 }, /* Serbian_tshe */
-    { 0x000006bb, 22952 }, /* Serbian_TSHE */
-    { 0x00000ac6, 22965 }, /* seveneighths */
-    { 0x01002087, 22978 }, /* sevensubscript */
-    { 0x01002077, 22993 }, /* sevensuperior */
-    { 0x0000ffe1, 23007 }, /* Shift_L */
-    { 0x0000ffe6, 23015 }, /* Shift_Lock */
-    { 0x0000ffe2, 23026 }, /* Shift_R */
-    { 0x00000aca, 23034 }, /* signaturemark */
-    { 0x00000aac, 23048 }, /* signifblank */
-    { 0x000008c9, 23060 }, /* similarequal */
-    { 0x0000ff3c, 23073 }, /* SingleCandidate */
-    { 0x00000afd, 23089 }, /* singlelowquotemark */
-    { 0x01000d85, 23108 }, /* Sinh_a */
-    { 0x01000d86, 23115 }, /* Sinh_aa */
-    { 0x01000dcf, 23123 }, /* Sinh_aa2 */
-    { 0x01000d87, 23132 }, /* Sinh_ae */
-    { 0x01000dd0, 23140 }, /* Sinh_ae2 */
-    { 0x01000d88, 23149 }, /* Sinh_aee */
-    { 0x01000dd1, 23158 }, /* Sinh_aee2 */
-    { 0x01000d93, 23168 }, /* Sinh_ai */
-    { 0x01000ddb, 23176 }, /* Sinh_ai2 */
-    { 0x01000dca, 23185 }, /* Sinh_al */
-    { 0x01000d96, 23193 }, /* Sinh_au */
-    { 0x01000dde, 23201 }, /* Sinh_au2 */
-    { 0x01000db6, 23210 }, /* Sinh_ba */
-    { 0x01000db7, 23218 }, /* Sinh_bha */
-    { 0x01000da0, 23227 }, /* Sinh_ca */
-    { 0x01000da1, 23235 }, /* Sinh_cha */
-    { 0x01000da9, 23244 }, /* Sinh_dda */
-    { 0x01000daa, 23253 }, /* Sinh_ddha */
-    { 0x01000daf, 23263 }, /* Sinh_dha */
-    { 0x01000db0, 23272 }, /* Sinh_dhha */
-    { 0x01000d91, 23282 }, /* Sinh_e */
-    { 0x01000dd9, 23289 }, /* Sinh_e2 */
-    { 0x01000d92, 23297 }, /* Sinh_ee */
-    { 0x01000dda, 23305 }, /* Sinh_ee2 */
-    { 0x01000dc6, 23314 }, /* Sinh_fa */
-    { 0x01000d9c, 23322 }, /* Sinh_ga */
-    { 0x01000d9d, 23330 }, /* Sinh_gha */
-    { 0x01000d83, 23339 }, /* Sinh_h2 */
-    { 0x01000dc4, 23347 }, /* Sinh_ha */
-    { 0x01000d89, 23355 }, /* Sinh_i */
-    { 0x01000dd2, 23362 }, /* Sinh_i2 */
-    { 0x01000d8a, 23370 }, /* Sinh_ii */
-    { 0x01000dd3, 23378 }, /* Sinh_ii2 */
-    { 0x01000da2, 23387 }, /* Sinh_ja */
-    { 0x01000da3, 23395 }, /* Sinh_jha */
-    { 0x01000da5, 23404 }, /* Sinh_jnya */
-    { 0x01000d9a, 23414 }, /* Sinh_ka */
-    { 0x01000d9b, 23422 }, /* Sinh_kha */
-    { 0x01000df4, 23431 }, /* Sinh_kunddaliya */
-    { 0x01000dbd, 23447 }, /* Sinh_la */
-    { 0x01000dc5, 23455 }, /* Sinh_lla */
-    { 0x01000d8f, 23464 }, /* Sinh_lu */
-    { 0x01000ddf, 23472 }, /* Sinh_lu2 */
-    { 0x01000d90, 23481 }, /* Sinh_luu */
-    { 0x01000df3, 23490 }, /* Sinh_luu2 */
-    { 0x01000db8, 23500 }, /* Sinh_ma */
-    { 0x01000db9, 23508 }, /* Sinh_mba */
-    { 0x01000db1, 23517 }, /* Sinh_na */
-    { 0x01000dac, 23525 }, /* Sinh_ndda */
-    { 0x01000db3, 23535 }, /* Sinh_ndha */
-    { 0x01000d82, 23545 }, /* Sinh_ng */
-    { 0x01000d9e, 23553 }, /* Sinh_ng2 */
-    { 0x01000d9f, 23562 }, /* Sinh_nga */
-    { 0x01000da6, 23571 }, /* Sinh_nja */
-    { 0x01000dab, 23580 }, /* Sinh_nna */
-    { 0x01000da4, 23589 }, /* Sinh_nya */
-    { 0x01000d94, 23598 }, /* Sinh_o */
-    { 0x01000ddc, 23605 }, /* Sinh_o2 */
-    { 0x01000d95, 23613 }, /* Sinh_oo */
-    { 0x01000ddd, 23621 }, /* Sinh_oo2 */
-    { 0x01000db4, 23630 }, /* Sinh_pa */
-    { 0x01000db5, 23638 }, /* Sinh_pha */
-    { 0x01000dbb, 23647 }, /* Sinh_ra */
-    { 0x01000d8d, 23655 }, /* Sinh_ri */
-    { 0x01000d8e, 23663 }, /* Sinh_rii */
-    { 0x01000dd8, 23672 }, /* Sinh_ru2 */
-    { 0x01000df2, 23681 }, /* Sinh_ruu2 */
-    { 0x01000dc3, 23691 }, /* Sinh_sa */
-    { 0x01000dc1, 23699 }, /* Sinh_sha */
-    { 0x01000dc2, 23708 }, /* Sinh_ssha */
-    { 0x01000dad, 23718 }, /* Sinh_tha */
-    { 0x01000dae, 23727 }, /* Sinh_thha */
-    { 0x01000da7, 23737 }, /* Sinh_tta */
-    { 0x01000da8, 23746 }, /* Sinh_ttha */
-    { 0x01000d8b, 23756 }, /* Sinh_u */
-    { 0x01000dd4, 23763 }, /* Sinh_u2 */
-    { 0x01000d8c, 23771 }, /* Sinh_uu */
-    { 0x01000dd6, 23779 }, /* Sinh_uu2 */
-    { 0x01000dc0, 23788 }, /* Sinh_va */
-    { 0x01000dba, 23796 }, /* Sinh_ya */
-    { 0x01002086, 23804 }, /* sixsubscript */
-    { 0x01002076, 23817 }, /* sixsuperior */
-    { 0x0000002f, 23829 }, /* slash */
-    { 0x0000fe73, 23835 }, /* SlowKeys_Enable */
-    { 0x000009e0, 23851 }, /* soliddiamond */
-    { 0x00000020, 23864 }, /* space */
-    { 0x0100221a, 23870 }, /* squareroot */
-    { 0x000000df, 23881 }, /* ssharp */
-    { 0x000000a3, 23888 }, /* sterling */
-    { 0x0000fe75, 23897 }, /* StickyKeys_Enable */
-    { 0x01002263, 23915 }, /* stricteq */
-    { 0x0000ff66, 23924 }, /* SunAgain */
-    { 0x0000ff7e, 23933 }, /* SunAltGraph */
-    { 0x1005ff77, 23945 }, /* SunAudioLowerVolume */
-    { 0x1005ff78, 23965 }, /* SunAudioMute */
-    { 0x1005ff79, 23978 }, /* SunAudioRaiseVolume */
-    { 0x0000ff20, 23998 }, /* SunCompose */
-    { 0x1005ff72, 24009 }, /* SunCopy */
-    { 0x1005ff75, 24017 }, /* SunCut */
-    { 0x1005ff10, 24024 }, /* SunF36 */
-    { 0x1005ff11, 24031 }, /* SunF37 */
-    { 0x1005ff03, 24038 }, /* SunFA_Acute */
-    { 0x1005ff05, 24050 }, /* SunFA_Cedilla */
-    { 0x1005ff01, 24064 }, /* SunFA_Circum */
-    { 0x1005ff04, 24077 }, /* SunFA_Diaeresis */
-    { 0x1005ff00, 24093 }, /* SunFA_Grave */
-    { 0x1005ff02, 24105 }, /* SunFA_Tilde */
-    { 0x0000ff68, 24117 }, /* SunFind */
-    { 0x1005ff71, 24125 }, /* SunFront */
-    { 0x1005ff73, 24134 }, /* SunOpen */
-    { 0x0000ff56, 24142 }, /* SunPageDown */
-    { 0x0000ff55, 24154 }, /* SunPageUp */
-    { 0x1005ff74, 24164 }, /* SunPaste */
-    { 0x1005ff76, 24173 }, /* SunPowerSwitch */
-    { 0x1005ff7d, 24188 }, /* SunPowerSwitchShift */
-    { 0x0000ff61, 24208 }, /* SunPrint_Screen */
-    { 0x1005ff70, 24224 }, /* SunProps */
-    { 0x0000ff69, 24233 }, /* SunStop */
-    { 0x1005ff60, 24241 }, /* SunSys_Req */
-    { 0x0000ff65, 24252 }, /* SunUndo */
-    { 0x1005ff7a, 24260 }, /* SunVideoDegauss */
-    { 0x1005ff7b, 24276 }, /* SunVideoLowerBrightness */
-    { 0x1005ff7c, 24300 }, /* SunVideoRaiseBrightness */
-    { 0x0000ffeb, 24324 }, /* Super_L */
-    { 0x0000ffec, 24332 }, /* Super_R */
-    { 0x0000ff15, 24340 }, /* Sys_Req */
-    { 0x1000ff6d, 24348 }, /* System */
-    { 0x00000054, 24355 }, /* T */
-    { 0x00000074, 24357 }, /* t */
-    { 0x0000ff09, 24359 }, /* Tab */
-    { 0x01001e6a, 24363 }, /* Tabovedot */
-    { 0x01001e6b, 24373 }, /* tabovedot */
-    { 0x000001ab, 24383 }, /* Tcaron */
-    { 0x000001bb, 24390 }, /* tcaron */
-    { 0x000001de, 24397 }, /* Tcedilla */
-    { 0x000001fe, 24406 }, /* tcedilla */
-    { 0x00000af9, 24415 }, /* telephone */
-    { 0x00000afa, 24425 }, /* telephonerecorder */
-    { 0x0000fed5, 24443 }, /* Terminate_Server */
-    { 0x00000ddf, 24460 }, /* Thai_baht */
-    { 0x00000dba, 24470 }, /* Thai_bobaimai */
-    { 0x00000da8, 24484 }, /* Thai_chochan */
-    { 0x00000daa, 24497 }, /* Thai_chochang */
-    { 0x00000da9, 24511 }, /* Thai_choching */
-    { 0x00000dac, 24525 }, /* Thai_chochoe */
-    { 0x00000dae, 24538 }, /* Thai_dochada */
-    { 0x00000db4, 24551 }, /* Thai_dodek */
-    { 0x00000dbd, 24562 }, /* Thai_fofa */
-    { 0x00000dbf, 24572 }, /* Thai_fofan */
-    { 0x00000dcb, 24583 }, /* Thai_hohip */
-    { 0x00000dce, 24594 }, /* Thai_honokhuk */
-    { 0x00000da2, 24608 }, /* Thai_khokhai */
-    { 0x00000da5, 24621 }, /* Thai_khokhon */
-    { 0x00000da3, 24634 }, /* Thai_khokhuat */
-    { 0x00000da4, 24648 }, /* Thai_khokhwai */
-    { 0x00000da6, 24662 }, /* Thai_khorakhang */
-    { 0x00000da1, 24678 }, /* Thai_kokai */
-    { 0x00000de5, 24689 }, /* Thai_lakkhangyao */
-    { 0x00000df7, 24706 }, /* Thai_lekchet */
-    { 0x00000df5, 24719 }, /* Thai_lekha */
-    { 0x00000df6, 24730 }, /* Thai_lekhok */
-    { 0x00000df9, 24742 }, /* Thai_lekkao */
-    { 0x00000df1, 24754 }, /* Thai_leknung */
-    { 0x00000df8, 24767 }, /* Thai_lekpaet */
-    { 0x00000df3, 24780 }, /* Thai_leksam */
-    { 0x00000df4, 24792 }, /* Thai_leksi */
-    { 0x00000df2, 24803 }, /* Thai_leksong */
-    { 0x00000df0, 24816 }, /* Thai_leksun */
-    { 0x00000dcc, 24828 }, /* Thai_lochula */
-    { 0x00000dc5, 24841 }, /* Thai_loling */
-    { 0x00000dc6, 24853 }, /* Thai_lu */
-    { 0x00000deb, 24861 }, /* Thai_maichattawa */
-    { 0x00000de8, 24878 }, /* Thai_maiek */
-    { 0x00000dd1, 24889 }, /* Thai_maihanakat */
-    { 0x00000dde, 24905 }, /* Thai_maihanakat_maitho */
-    { 0x00000de7, 24928 }, /* Thai_maitaikhu */
-    { 0x00000de9, 24943 }, /* Thai_maitho */
-    { 0x00000dea, 24955 }, /* Thai_maitri */
-    { 0x00000de6, 24967 }, /* Thai_maiyamok */
-    { 0x00000dc1, 24981 }, /* Thai_moma */
-    { 0x00000da7, 24991 }, /* Thai_ngongu */
-    { 0x00000ded, 25003 }, /* Thai_nikhahit */
-    { 0x00000db3, 25017 }, /* Thai_nonen */
-    { 0x00000db9, 25028 }, /* Thai_nonu */
-    { 0x00000dcd, 25038 }, /* Thai_oang */
-    { 0x00000dcf, 25048 }, /* Thai_paiyannoi */
-    { 0x00000dda, 25063 }, /* Thai_phinthu */
-    { 0x00000dbe, 25076 }, /* Thai_phophan */
-    { 0x00000dbc, 25089 }, /* Thai_phophung */
-    { 0x00000dc0, 25103 }, /* Thai_phosamphao */
-    { 0x00000dbb, 25119 }, /* Thai_popla */
-    { 0x00000dc3, 25130 }, /* Thai_rorua */
-    { 0x00000dc4, 25141 }, /* Thai_ru */
-    { 0x00000dd0, 25149 }, /* Thai_saraa */
-    { 0x00000dd2, 25160 }, /* Thai_saraaa */
-    { 0x00000de1, 25172 }, /* Thai_saraae */
-    { 0x00000de4, 25184 }, /* Thai_saraaimaimalai */
-    { 0x00000de3, 25204 }, /* Thai_saraaimaimuan */
-    { 0x00000dd3, 25223 }, /* Thai_saraam */
-    { 0x00000de0, 25235 }, /* Thai_sarae */
-    { 0x00000dd4, 25246 }, /* Thai_sarai */
-    { 0x00000dd5, 25257 }, /* Thai_saraii */
-    { 0x00000de2, 25269 }, /* Thai_sarao */
-    { 0x00000dd8, 25280 }, /* Thai_sarau */
-    { 0x00000dd6, 25291 }, /* Thai_saraue */
-    { 0x00000dd7, 25303 }, /* Thai_sarauee */
-    { 0x00000dd9, 25316 }, /* Thai_sarauu */
-    { 0x00000dc9, 25328 }, /* Thai_sorusi */
-    { 0x00000dc8, 25340 }, /* Thai_sosala */
-    { 0x00000dab, 25352 }, /* Thai_soso */
-    { 0x00000dca, 25362 }, /* Thai_sosua */
-    { 0x00000dec, 25373 }, /* Thai_thanthakhat */
-    { 0x00000db1, 25390 }, /* Thai_thonangmontho */
-    { 0x00000db2, 25409 }, /* Thai_thophuthao */
-    { 0x00000db7, 25425 }, /* Thai_thothahan */
-    { 0x00000db0, 25440 }, /* Thai_thothan */
-    { 0x00000db8, 25453 }, /* Thai_thothong */
-    { 0x00000db6, 25467 }, /* Thai_thothung */
-    { 0x00000daf, 25481 }, /* Thai_topatak */
-    { 0x00000db5, 25494 }, /* Thai_totao */
-    { 0x00000dc7, 25505 }, /* Thai_wowaen */
-    { 0x00000dc2, 25517 }, /* Thai_yoyak */
-    { 0x00000dad, 25528 }, /* Thai_yoying */
-    { 0x000008c0, 25540 }, /* therefore */
-    { 0x00000aa7, 25550 }, /* thinspace */
-    { 0x000000de, 25560 }, /* THORN */
-    { 0x000000de, 25566 }, /* Thorn */
-    { 0x000000fe, 25572 }, /* thorn */
-    { 0x00000ac4, 25578 }, /* threeeighths */
-    { 0x00000ab4, 25591 }, /* threefifths */
-    { 0x000000be, 25603 }, /* threequarters */
-    { 0x01002083, 25617 }, /* threesubscript */
-    { 0x000000b3, 25632 }, /* threesuperior */
-    { 0x0100222d, 25646 }, /* tintegral */
-    { 0x000008a4, 25656 }, /* topintegral */
-    { 0x000008ab, 25668 }, /* topleftparens */
-    { 0x000008a2, 25682 }, /* topleftradical */
-    { 0x000008a7, 25697 }, /* topleftsqbracket */
-    { 0x000008b1, 25714 }, /* topleftsummation */
-    { 0x000008ad, 25731 }, /* toprightparens */
-    { 0x000008a9, 25746 }, /* toprightsqbracket */
-    { 0x000008b5, 25764 }, /* toprightsummation */
-    { 0x000009f7, 25782 }, /* topt */
-    { 0x000008b3, 25787 }, /* topvertsummationconnector */
-    { 0x0000ff2b, 25813 }, /* Touroku */
-    { 0x00000ac9, 25821 }, /* trademark */
-    { 0x00000acb, 25831 }, /* trademarkincircle */
-    { 0x000003ac, 25849 }, /* Tslash */
-    { 0x000003bc, 25856 }, /* tslash */
-    { 0x00000ab3, 25863 }, /* twofifths */
-    { 0x01002082, 25873 }, /* twosubscript */
-    { 0x000000b2, 25886 }, /* twosuperior */
-    { 0x00000ab1, 25898 }, /* twothirds */
-    { 0x00000055, 25908 }, /* U */
-    { 0x00000075, 25910 }, /* u */
-    { 0x000000da, 25912 }, /* Uacute */
-    { 0x000000fa, 25919 }, /* uacute */
-    { 0x01001ee4, 25926 }, /* Ubelowdot */
-    { 0x01001ee5, 25936 }, /* ubelowdot */
-    { 0x000002dd, 25946 }, /* Ubreve */
-    { 0x000002fd, 25953 }, /* ubreve */
-    { 0x000000db, 25960 }, /* Ucircumflex */
-    { 0x000000fb, 25972 }, /* ucircumflex */
-    { 0x000000dc, 25984 }, /* Udiaeresis */
-    { 0x000000fc, 25995 }, /* udiaeresis */
-    { 0x000001db, 26006 }, /* Udoubleacute */
-    { 0x000001fb, 26019 }, /* udoubleacute */
-    { 0x000000d9, 26032 }, /* Ugrave */
-    { 0x000000f9, 26039 }, /* ugrave */
-    { 0x01001ee6, 26046 }, /* Uhook */
-    { 0x01001ee7, 26052 }, /* uhook */
-    { 0x010001af, 26058 }, /* Uhorn */
-    { 0x010001b0, 26064 }, /* uhorn */
-    { 0x01001ee8, 26070 }, /* Uhornacute */
-    { 0x01001ee9, 26081 }, /* uhornacute */
-    { 0x01001ef0, 26092 }, /* Uhornbelowdot */
-    { 0x01001ef1, 26106 }, /* uhornbelowdot */
-    { 0x01001eea, 26120 }, /* Uhorngrave */
-    { 0x01001eeb, 26131 }, /* uhorngrave */
-    { 0x01001eec, 26142 }, /* Uhornhook */
-    { 0x01001eed, 26152 }, /* uhornhook */
-    { 0x01001eee, 26162 }, /* Uhorntilde */
-    { 0x01001eef, 26173 }, /* uhorntilde */
-    { 0x000006ad, 26184 }, /* Ukrainian_ghe_with_upturn */
-    { 0x000006bd, 26210 }, /* Ukrainian_GHE_WITH_UPTURN */
-    { 0x000006a6, 26236 }, /* Ukrainian_i */
-    { 0x000006b6, 26248 }, /* Ukrainian_I */
-    { 0x000006a4, 26260 }, /* Ukrainian_ie */
-    { 0x000006b4, 26273 }, /* Ukrainian_IE */
-    { 0x000006a7, 26286 }, /* Ukrainian_yi */
-    { 0x000006b7, 26299 }, /* Ukrainian_YI */
-    { 0x000006a6, 26312 }, /* Ukranian_i */
-    { 0x000006b6, 26323 }, /* Ukranian_I */
-    { 0x000006a4, 26334 }, /* Ukranian_je */
-    { 0x000006b4, 26346 }, /* Ukranian_JE */
-    { 0x000006a7, 26358 }, /* Ukranian_yi */
-    { 0x000006b7, 26370 }, /* Ukranian_YI */
-    { 0x000003de, 26382 }, /* Umacron */
-    { 0x000003fe, 26390 }, /* umacron */
-    { 0x00000bc6, 26398 }, /* underbar */
-    { 0x0000005f, 26407 }, /* underscore */
-    { 0x0000ff65, 26418 }, /* Undo */
-    { 0x000008dd, 26423 }, /* union */
-    { 0x000003d9, 26429 }, /* Uogonek */
-    { 0x000003f9, 26437 }, /* uogonek */
-    { 0x0000ff52, 26445 }, /* Up */
-    { 0x000008fc, 26448 }, /* uparrow */
-    { 0x00000ba9, 26456 }, /* upcaret */
-    { 0x000009ec, 26464 }, /* upleftcorner */
-    { 0x000009eb, 26477 }, /* uprightcorner */
-    { 0x00000bc3, 26491 }, /* upshoe */
-    { 0x00000bd3, 26498 }, /* upstile */
-    { 0x00000bce, 26506 }, /* uptack */
-    { 0x000001d9, 26513 }, /* Uring */
-    { 0x000001f9, 26519 }, /* uring */
-    { 0x1000ff6e, 26525 }, /* User */
-    { 0x000003dd, 26530 }, /* Utilde */
-    { 0x000003fd, 26537 }, /* utilde */
-    { 0x00000056, 26544 }, /* V */
-    { 0x00000076, 26546 }, /* v */
-    { 0x000008c1, 26548 }, /* variation */
-    { 0x000009f8, 26558 }, /* vertbar */
-    { 0x000008a6, 26566 }, /* vertconnector */
-    { 0x000004de, 26580 }, /* voicedsound */
-    { 0x00ffffff, 26592 }, /* VoidSymbol */
-    { 0x000009e9, 26603 }, /* vt */
-    { 0x00000057, 26606 }, /* W */
-    { 0x00000077, 26608 }, /* w */
-    { 0x01001e82, 26610 }, /* Wacute */
-    { 0x01001e83, 26617 }, /* wacute */
-    { 0x01000174, 26624 }, /* Wcircumflex */
-    { 0x01000175, 26636 }, /* wcircumflex */
-    { 0x01001e84, 26648 }, /* Wdiaeresis */
-    { 0x01001e85, 26659 }, /* wdiaeresis */
-    { 0x01001e80, 26670 }, /* Wgrave */
-    { 0x01001e81, 26677 }, /* wgrave */
-    { 0x010020a9, 26684 }, /* WonSign */
-    { 0x00000058, 26692 }, /* X */
-    { 0x00000078, 26694 }, /* x */
-    { 0x01001e8a, 26696 }, /* Xabovedot */
-    { 0x01001e8b, 26706 }, /* xabovedot */
-    { 0x100811b9, 26716 }, /* XF8610ChannelsDown */
-    { 0x100811b8, 26735 }, /* XF8610ChannelsUp */
-    { 0x1008126f, 26752 }, /* XF863DMode */
-    { 0x1008ff39, 26763 }, /* XF86AddFavorite */
-    { 0x100811ad, 26779 }, /* XF86Addressbook */
-    { 0x10081230, 26795 }, /* XF86ALSToggle */
-    { 0x1008ff50, 26809 }, /* XF86ApplicationLeft */
-    { 0x1008ff51, 26829 }, /* XF86ApplicationRight */
-    { 0x10081244, 26850 }, /* XF86AppSelect */
-    { 0x10081177, 26864 }, /* XF86AspectRatio */
-    { 0x10081247, 26880 }, /* XF86Assistant */
-    { 0x1008121c, 26894 }, /* XF86AttendantOff */
-    { 0x1008121b, 26911 }, /* XF86AttendantOn */
-    { 0x1008121d, 26927 }, /* XF86AttendantToggle */
-    { 0x10081188, 26947 }, /* XF86Audio */
-    { 0x1008ff9b, 26957 }, /* XF86AudioCycleTrack */
-    { 0x1008126e, 26977 }, /* XF86AudioDesc */
-    { 0x1008ff97, 26991 }, /* XF86AudioForward */
-    { 0x1008ff11, 27008 }, /* XF86AudioLowerVolume */
-    { 0x1008ff32, 27029 }, /* XF86AudioMedia */
-    { 0x1008ffb2, 27044 }, /* XF86AudioMicMute */
-    { 0x1008ff12, 27061 }, /* XF86AudioMute */
-    { 0x1008ff17, 27075 }, /* XF86AudioNext */
-    { 0x1008ff31, 27089 }, /* XF86AudioPause */
-    { 0x1008ff14, 27104 }, /* XF86AudioPlay */
-    { 0x1008ffb6, 27118 }, /* XF86AudioPreset */
-    { 0x1008ff16, 27134 }, /* XF86AudioPrev */
-    { 0x1008ff13, 27148 }, /* XF86AudioRaiseVolume */
-    { 0x1008ff99, 27169 }, /* XF86AudioRandomPlay */
-    { 0x1008ff1c, 27189 }, /* XF86AudioRecord */
-    { 0x1008ff98, 27205 }, /* XF86AudioRepeat */
-    { 0x1008ff3e, 27221 }, /* XF86AudioRewind */
-    { 0x1008ff15, 27237 }, /* XF86AudioStop */
-    { 0x1008127d, 27251 }, /* XF86AutopilotEngageToggle */
-    { 0x1008ff8d, 27277 }, /* XF86Away */
-    { 0x1008ff26, 27286 }, /* XF86Back */
-    { 0x1008ff3f, 27295 }, /* XF86BackForward */
-    { 0x1008ff93, 27311 }, /* XF86Battery */
-    { 0x1008ffa6, 27323 }, /* XF86Blue */
-    { 0x1008ff94, 27332 }, /* XF86Bluetooth */
-    { 0x1008ff52, 27346 }, /* XF86Book */
-    { 0x1008119b, 27355 }, /* XF86Break */
-    { 0x1008ff3b, 27365 }, /* XF86BrightnessAdjust */
-    { 0x100810f4, 27386 }, /* XF86BrightnessAuto */
-    { 0x10081251, 27405 }, /* XF86BrightnessMax */
-    { 0x10081250, 27423 }, /* XF86BrightnessMin */
-    { 0x10081240, 27441 }, /* XF86Buttonconfig */
-    { 0x1008ff54, 27458 }, /* XF86Calculater */
-    { 0x1008ff1d, 27473 }, /* XF86Calculator */
-    { 0x1008ff20, 27488 }, /* XF86Calendar */
-    { 0x1008124c, 27501 }, /* XF86CameraAccessDisable */
-    { 0x1008124b, 27525 }, /* XF86CameraAccessEnable */
-    { 0x1008124d, 27548 }, /* XF86CameraAccessToggle */
-    { 0x10081218, 27571 }, /* XF86CameraDown */
-    { 0x10081210, 27586 }, /* XF86CameraFocus */
-    { 0x10081219, 27602 }, /* XF86CameraLeft */
-    { 0x1008121a, 27617 }, /* XF86CameraRight */
-    { 0x10081217, 27633 }, /* XF86CameraUp */
-    { 0x10081215, 27646 }, /* XF86CameraZoomIn */
-    { 0x10081216, 27663 }, /* XF86CameraZoomOut */
-    { 0x1008ff53, 27681 }, /* XF86CD */
-    { 0x10081193, 27688 }, /* XF86ChannelDown */
-    { 0x10081192, 27704 }, /* XF86ChannelUp */
-    { 0x1008ff55, 27718 }, /* XF86Clear */
-    { 0x1008fe21, 27728 }, /* XF86ClearGrab */
-    { 0x10081286, 27742 }, /* XF86ClearvuSonar */
-    { 0x1008ff56, 27759 }, /* XF86Close */
-    { 0x1008ff3d, 27769 }, /* XF86Community */
-    { 0x100811b6, 27783 }, /* XF86ContextMenu */
-    { 0x1008ff22, 27799 }, /* XF86ContrastAdjust */
-    { 0x10081243, 27818 }, /* XF86ControlPanel */
-    { 0x1008ff57, 27835 }, /* XF86Copy */
-    { 0x1008ff58, 27844 }, /* XF86Cut */
-    { 0x1008ff9c, 27852 }, /* XF86CycleAngle */
-    { 0x10081277, 27867 }, /* XF86Data */
-    { 0x100811aa, 27876 }, /* XF86Database */
-    { 0x1008124a, 27889 }, /* XF86Dictate */
-    { 0x1008ff59, 27901 }, /* XF86Display */
-    { 0x100810f5, 27913 }, /* XF86DisplayOff */
-    { 0x100811af, 27928 }, /* XF86DisplayToggle */
-    { 0x1008ff5b, 27946 }, /* XF86Documents */
-    { 0x1008ff5a, 27960 }, /* XF86DOS */
-    { 0x10081283, 27968 }, /* XF86DualRangeRadar */
-    { 0x10081185, 27987 }, /* XF86DVD */
-    { 0x100811a6, 27995 }, /* XF86Editor */
-    { 0x1008ff2c, 28006 }, /* XF86Eject */
-    { 0x10081249, 28016 }, /* XF86EmojiPicker */
-    { 0x1008ff5c, 28032 }, /* XF86Excel */
-    { 0x1008ff5d, 28042 }, /* XF86Explorer */
-    { 0x10081275, 28055 }, /* XF86FastReverse */
-    { 0x1008ff30, 28071 }, /* XF86Favorites */
-    { 0x1008ff3c, 28085 }, /* XF86Finance */
-    { 0x10081281, 28097 }, /* XF86FishingChart */
-    { 0x100811d0, 28114 }, /* XF86Fn */
-    { 0x100811d1, 28121 }, /* XF86Fn_Esc */
-    { 0x100811e5, 28132 }, /* XF86FnRightShift */
-    { 0x1008ff27, 28149 }, /* XF86Forward */
-    { 0x1008ff9d, 28161 }, /* XF86FrameBack */
-    { 0x1008ff9e, 28175 }, /* XF86FrameForward */
-    { 0x1008ffb8, 28192 }, /* XF86FullScreen */
-    { 0x1008ff5e, 28207 }, /* XF86Game */
-    { 0x1008ff5f, 28216 }, /* XF86Go */
-    { 0x100811a8, 28223 }, /* XF86GraphicsEditor */
-    { 0x1008ffa4, 28242 }, /* XF86Green */
-    { 0x100811be, 28252 }, /* XF86HangupPhone */
-    { 0x1008ffa8, 28268 }, /* XF86Hibernate */
-    { 0x1008ff37, 28282 }, /* XF86History */
-    { 0x1008ff18, 28294 }, /* XF86HomePage */
-    { 0x1008ff3a, 28307 }, /* XF86HotLinks */
-    { 0x100811ba, 28320 }, /* XF86Images */
-    { 0x10081166, 28331 }, /* XF86Info */
-    { 0x1008ff60, 28340 }, /* XF86iTouch */
-    { 0x10081242, 28351 }, /* XF86Journal */
-    { 0x1008ff06, 28363 }, /* XF86KbdBrightnessDown */
-    { 0x1008ff05, 28385 }, /* XF86KbdBrightnessUp */
-    { 0x10081264, 28405 }, /* XF86KbdInputAssistAccept */
-    { 0x10081265, 28430 }, /* XF86KbdInputAssistCancel */
-    { 0x10081261, 28455 }, /* XF86KbdInputAssistNext */
-    { 0x10081263, 28478 }, /* XF86KbdInputAssistNextgroup */
-    { 0x10081260, 28506 }, /* XF86KbdInputAssistPrev */
-    { 0x10081262, 28529 }, /* XF86KbdInputAssistPrevgroup */
-    { 0x100812b8, 28557 }, /* XF86KbdLcdMenu1 */
-    { 0x100812b9, 28573 }, /* XF86KbdLcdMenu2 */
-    { 0x100812ba, 28589 }, /* XF86KbdLcdMenu3 */
-    { 0x100812bb, 28605 }, /* XF86KbdLcdMenu4 */
-    { 0x100812bc, 28621 }, /* XF86KbdLcdMenu5 */
-    { 0x1008ff04, 28637 }, /* XF86KbdLightOnOff */
-    { 0x1008ffb3, 28655 }, /* XF86Keyboard */
-    { 0x1008ff40, 28668 }, /* XF86Launch0 */
-    { 0x1008ff41, 28680 }, /* XF86Launch1 */
-    { 0x1008ff42, 28692 }, /* XF86Launch2 */
-    { 0x1008ff43, 28704 }, /* XF86Launch3 */
-    { 0x1008ff44, 28716 }, /* XF86Launch4 */
-    { 0x1008ff45, 28728 }, /* XF86Launch5 */
-    { 0x1008ff46, 28740 }, /* XF86Launch6 */
-    { 0x1008ff47, 28752 }, /* XF86Launch7 */
-    { 0x1008ff48, 28764 }, /* XF86Launch8 */
-    { 0x1008ff49, 28776 }, /* XF86Launch9 */
-    { 0x1008ff4a, 28788 }, /* XF86LaunchA */
-    { 0x1008ff4b, 28800 }, /* XF86LaunchB */
-    { 0x1008ff4c, 28812 }, /* XF86LaunchC */
-    { 0x1008ff4d, 28824 }, /* XF86LaunchD */
-    { 0x1008ff4e, 28836 }, /* XF86LaunchE */
-    { 0x1008ff4f, 28848 }, /* XF86LaunchF */
-    { 0x10081269, 28860 }, /* XF86LeftDown */
-    { 0x10081268, 28873 }, /* XF86LeftUp */
-    { 0x1008ff35, 28884 }, /* XF86LightBulb */
-    { 0x1008121e, 28898 }, /* XF86LightsToggle */
-    { 0x1008fe25, 28915 }, /* XF86LogGrabInfo */
-    { 0x1008ff61, 28931 }, /* XF86LogOff */
-    { 0x1008fe24, 28942 }, /* XF86LogWindowTree */
-    { 0x10081290, 28960 }, /* XF86Macro1 */
-    { 0x10081299, 28971 }, /* XF86Macro10 */
-    { 0x1008129a, 28983 }, /* XF86Macro11 */
-    { 0x1008129b, 28995 }, /* XF86Macro12 */
-    { 0x1008129c, 29007 }, /* XF86Macro13 */
-    { 0x1008129d, 29019 }, /* XF86Macro14 */
-    { 0x1008129e, 29031 }, /* XF86Macro15 */
-    { 0x1008129f, 29043 }, /* XF86Macro16 */
-    { 0x100812a0, 29055 }, /* XF86Macro17 */
-    { 0x100812a1, 29067 }, /* XF86Macro18 */
-    { 0x100812a2, 29079 }, /* XF86Macro19 */
-    { 0x10081291, 29091 }, /* XF86Macro2 */
-    { 0x100812a3, 29102 }, /* XF86Macro20 */
-    { 0x100812a4, 29114 }, /* XF86Macro21 */
-    { 0x100812a5, 29126 }, /* XF86Macro22 */
-    { 0x100812a6, 29138 }, /* XF86Macro23 */
-    { 0x100812a7, 29150 }, /* XF86Macro24 */
-    { 0x100812a8, 29162 }, /* XF86Macro25 */
-    { 0x100812a9, 29174 }, /* XF86Macro26 */
-    { 0x100812aa, 29186 }, /* XF86Macro27 */
-    { 0x100812ab, 29198 }, /* XF86Macro28 */
-    { 0x100812ac, 29210 }, /* XF86Macro29 */
-    { 0x10081292, 29222 }, /* XF86Macro3 */
-    { 0x100812ad, 29233 }, /* XF86Macro30 */
-    { 0x10081293, 29245 }, /* XF86Macro4 */
-    { 0x10081294, 29256 }, /* XF86Macro5 */
-    { 0x10081295, 29267 }, /* XF86Macro6 */
-    { 0x10081296, 29278 }, /* XF86Macro7 */
-    { 0x10081297, 29289 }, /* XF86Macro8 */
-    { 0x10081298, 29300 }, /* XF86Macro9 */
-    { 0x100812b3, 29311 }, /* XF86MacroPreset1 */
-    { 0x100812b4, 29328 }, /* XF86MacroPreset2 */
-    { 0x100812b5, 29345 }, /* XF86MacroPreset3 */
-    { 0x100812b2, 29362 }, /* XF86MacroPresetCycle */
-    { 0x100812b0, 29383 }, /* XF86MacroRecordStart */
-    { 0x100812b1, 29404 }, /* XF86MacroRecordStop */
-    { 0x1008ff19, 29424 }, /* XF86Mail */
-    { 0x1008ff90, 29433 }, /* XF86MailForward */
-    { 0x1008ff62, 29449 }, /* XF86Market */
-    { 0x1008127e, 29460 }, /* XF86MarkWaypoint */
-    { 0x100811b7, 29477 }, /* XF86MediaRepeat */
-    { 0x1008126b, 29493 }, /* XF86MediaTopMenu */
-    { 0x1008ff63, 29510 }, /* XF86Meeting */
-    { 0x1008ff1e, 29522 }, /* XF86Memo */
-    { 0x1008ff65, 29531 }, /* XF86MenuKB */
-    { 0x1008ff66, 29542 }, /* XF86MenuPB */
-    { 0x1008ff8e, 29553 }, /* XF86Messenger */
-    { 0x1008ff01, 29567 }, /* XF86ModeLock */
-    { 0x1008ff07, 29580 }, /* XF86MonBrightnessCycle */
-    { 0x1008ff03, 29603 }, /* XF86MonBrightnessDown */
-    { 0x1008ff02, 29625 }, /* XF86MonBrightnessUp */
-    { 0x1008ff92, 29645 }, /* XF86Music */
-    { 0x1008ff33, 29655 }, /* XF86MyComputer */
-    { 0x1008ff67, 29670 }, /* XF86MySites */
-    { 0x10081280, 29682 }, /* XF86NavChart */
-    { 0x10081288, 29695 }, /* XF86NavInfo */
-    { 0x1008ff68, 29707 }, /* XF86New */
-    { 0x1008ff69, 29715 }, /* XF86News */
-    { 0x1008fe22, 29724 }, /* XF86Next_VMode */
-    { 0x1008127b, 29739 }, /* XF86NextElement */
-    { 0x10081270, 29755 }, /* XF86NextFavorite */
-    { 0x100811bc, 29772 }, /* XF86NotificationCenter */
-    { 0x10081200, 29795 }, /* XF86Numeric0 */
-    { 0x10081201, 29808 }, /* XF86Numeric1 */
-    { 0x1008126c, 29821 }, /* XF86Numeric11 */
-    { 0x1008126d, 29835 }, /* XF86Numeric12 */
-    { 0x10081202, 29849 }, /* XF86Numeric2 */
-    { 0x10081203, 29862 }, /* XF86Numeric3 */
-    { 0x10081204, 29875 }, /* XF86Numeric4 */
-    { 0x10081205, 29888 }, /* XF86Numeric5 */
-    { 0x10081206, 29901 }, /* XF86Numeric6 */
-    { 0x10081207, 29914 }, /* XF86Numeric7 */
-    { 0x10081208, 29927 }, /* XF86Numeric8 */
-    { 0x10081209, 29940 }, /* XF86Numeric9 */
-    { 0x1008120c, 29953 }, /* XF86NumericA */
-    { 0x1008120d, 29966 }, /* XF86NumericB */
-    { 0x1008120e, 29979 }, /* XF86NumericC */
-    { 0x1008120f, 29992 }, /* XF86NumericD */
-    { 0x1008120b, 30005 }, /* XF86NumericPound */
-    { 0x1008120a, 30022 }, /* XF86NumericStar */
-    { 0x1008ff6a, 30038 }, /* XF86OfficeHome */
-    { 0x10081278, 30053 }, /* XF86OnScreenKeyboard */
-    { 0x1008ff6b, 30074 }, /* XF86Open */
-    { 0x1008ff38, 30083 }, /* XF86OpenURL */
-    { 0x1008ff6c, 30095 }, /* XF86Option */
-    { 0x1008ff6d, 30106 }, /* XF86Paste */
-    { 0x10081272, 30116 }, /* XF86PauseRecord */
-    { 0x1008ff6e, 30132 }, /* XF86Phone */
-    { 0x100811bd, 30142 }, /* XF86PickupPhone */
-    { 0x1008ff91, 30158 }, /* XF86Pictures */
-    { 0x1008ff21, 30171 }, /* XF86PowerDown */
-    { 0x1008ff2a, 30185 }, /* XF86PowerOff */
-    { 0x100811a9, 30198 }, /* XF86Presentation */
-    { 0x1008fe23, 30215 }, /* XF86Prev_VMode */
-    { 0x1008127c, 30230 }, /* XF86PreviousElement */
-    { 0x10081279, 30250 }, /* XF86PrivacyScreenToggle */
-    { 0x1008ff70, 30274 }, /* XF86Q */
-    { 0x10081284, 30280 }, /* XF86RadarOverlay */
-    { 0x1008ffa3, 30297 }, /* XF86Red */
-    { 0x1008ff29, 30305 }, /* XF86Refresh */
-    { 0x1008ff73, 30317 }, /* XF86Reload */
-    { 0x1008ff72, 30328 }, /* XF86Reply */
-    { 0x1008ffb5, 30338 }, /* XF86RFKill */
-    { 0x10081267, 30349 }, /* XF86RightDown */
-    { 0x10081266, 30363 }, /* XF86RightUp */
-    { 0x1008ff24, 30375 }, /* XF86RockerDown */
-    { 0x1008ff25, 30390 }, /* XF86RockerEnter */
-    { 0x1008ff23, 30406 }, /* XF86RockerUp */
-    { 0x1008126a, 30419 }, /* XF86RootMenu */
-    { 0x1008ff74, 30432 }, /* XF86RotateWindows */
-    { 0x1008ff76, 30450 }, /* XF86RotationKB */
-    { 0x1008ffb7, 30465 }, /* XF86RotationLockToggle */
-    { 0x1008ff75, 30488 }, /* XF86RotationPB */
-    { 0x1008ff77, 30503 }, /* XF86Save */
-    { 0x1008ff2d, 30512 }, /* XF86ScreenSaver */
-    { 0x10081245, 30528 }, /* XF86Screensaver */
-    { 0x1008ff7a, 30544 }, /* XF86ScrollClick */
-    { 0x1008ff79, 30560 }, /* XF86ScrollDown */
-    { 0x1008ff78, 30575 }, /* XF86ScrollUp */
-    { 0x1008ff1b, 30588 }, /* XF86Search */
-    { 0x1008ffa0, 30599 }, /* XF86Select */
-    { 0x1008127a, 30610 }, /* XF86SelectiveScreenshot */
-    { 0x1008ff7b, 30634 }, /* XF86Send */
-    { 0x1008ff36, 30643 }, /* XF86Shop */
-    { 0x10081287, 30652 }, /* XF86SidevuSonar */
-    { 0x10081282, 30668 }, /* XF86SingleRangeRadar */
-    { 0x1008ff2f, 30689 }, /* XF86Sleep */
-    { 0x10081276, 30699 }, /* XF86SlowReverse */
-    { 0x1008127f, 30715 }, /* XF86Sos */
-    { 0x1008ff7c, 30723 }, /* XF86Spell */
-    { 0x100811b0, 30733 }, /* XF86SpellCheck */
-    { 0x1008ff7d, 30748 }, /* XF86SplitScreen */
-    { 0x1008ff10, 30764 }, /* XF86Standby */
-    { 0x1008ff1a, 30776 }, /* XF86Start */
-    { 0x1008ff28, 30786 }, /* XF86Stop */
-    { 0x10081271, 30795 }, /* XF86StopRecord */
-    { 0x1008ff9a, 30810 }, /* XF86Subtitle */
-    { 0x1008ff7e, 30823 }, /* XF86Support */
-    { 0x1008ffa7, 30835 }, /* XF86Suspend */
-    { 0x1008fe01, 30847 }, /* XF86Switch_VT_1 */
-    { 0x1008fe0a, 30863 }, /* XF86Switch_VT_10 */
-    { 0x1008fe0b, 30880 }, /* XF86Switch_VT_11 */
-    { 0x1008fe0c, 30897 }, /* XF86Switch_VT_12 */
-    { 0x1008fe02, 30914 }, /* XF86Switch_VT_2 */
-    { 0x1008fe03, 30930 }, /* XF86Switch_VT_3 */
-    { 0x1008fe04, 30946 }, /* XF86Switch_VT_4 */
-    { 0x1008fe05, 30962 }, /* XF86Switch_VT_5 */
-    { 0x1008fe06, 30978 }, /* XF86Switch_VT_6 */
-    { 0x1008fe07, 30994 }, /* XF86Switch_VT_7 */
-    { 0x1008fe08, 31010 }, /* XF86Switch_VT_8 */
-    { 0x1008fe09, 31026 }, /* XF86Switch_VT_9 */
-    { 0x10081241, 31042 }, /* XF86Taskmanager */
-    { 0x1008ff7f, 31058 }, /* XF86TaskPane */
-    { 0x1008ff80, 31071 }, /* XF86Terminal */
-    { 0x1008ff9f, 31084 }, /* XF86Time */
-    { 0x1008ff1f, 31093 }, /* XF86ToDoList */
-    { 0x1008ff81, 31106 }, /* XF86Tools */
-    { 0x1008ffa2, 31116 }, /* XF86TopMenu */
-    { 0x1008ffb1, 31128 }, /* XF86TouchpadOff */
-    { 0x1008ffb0, 31144 }, /* XF86TouchpadOn */
-    { 0x1008ffa9, 31159 }, /* XF86TouchpadToggle */
-    { 0x10081285, 31178 }, /* XF86TraditionalSonar */
-    { 0x1008ff82, 31199 }, /* XF86Travel */
-    { 0x1008fe20, 31210 }, /* XF86Ungrab */
-    { 0x10081274, 31221 }, /* XF86Unmute */
-    { 0x1008ff85, 31232 }, /* XF86User1KB */
-    { 0x1008ff86, 31244 }, /* XF86User2KB */
-    { 0x1008ff84, 31256 }, /* XF86UserPB */
-    { 0x1008ff96, 31267 }, /* XF86UWB */
-    { 0x1008ff34, 31275 }, /* XF86VendorHome */
-    { 0x1008ff87, 31290 }, /* XF86Video */
-    { 0x100811a0, 31300 }, /* XF86VideoPhone */
-    { 0x1008ffa1, 31315 }, /* XF86View */
-    { 0x10081273, 31324 }, /* XF86VOD */
-    { 0x10081246, 31332 }, /* XF86VoiceCommand */
-    { 0x100811ac, 31349 }, /* XF86Voicemail */
-    { 0x1008ff2b, 31363 }, /* XF86WakeUp */
-    { 0x1008ff8f, 31374 }, /* XF86WebCam */
-    { 0x1008ff88, 31385 }, /* XF86WheelButton */
-    { 0x1008ff95, 31401 }, /* XF86WLAN */
-    { 0x1008ff89, 31410 }, /* XF86Word */
-    { 0x10081211, 31419 }, /* XF86WPSButton */
-    { 0x1008ffb4, 31433 }, /* XF86WWAN */
-    { 0x1008ff2e, 31442 }, /* XF86WWW */
-    { 0x1008ff8a, 31450 }, /* XF86Xfer */
-    { 0x1008ffa5, 31459 }, /* XF86Yellow */
-    { 0x1008ff8b, 31470 }, /* XF86ZoomIn */
-    { 0x1008ff8c, 31481 }, /* XF86ZoomOut */
-    { 0x100811a4, 31493 }, /* XF86ZoomReset */
-    { 0x00000059, 31507 }, /* Y */
-    { 0x00000079, 31509 }, /* y */
-    { 0x000000dd, 31511 }, /* Yacute */
-    { 0x000000fd, 31518 }, /* yacute */
-    { 0x01001ef4, 31525 }, /* Ybelowdot */
-    { 0x01001ef5, 31535 }, /* ybelowdot */
-    { 0x01000176, 31545 }, /* Ycircumflex */
-    { 0x01000177, 31557 }, /* ycircumflex */
-    { 0x000000ff, 31569 }, /* ydiaeresis */
-    { 0x000013be, 31580 }, /* Ydiaeresis */
-    { 0x000000a5, 31591 }, /* yen */
-    { 0x01001ef2, 31595 }, /* Ygrave */
-    { 0x01001ef3, 31602 }, /* ygrave */
-    { 0x01001ef6, 31609 }, /* Yhook */
-    { 0x01001ef7, 31615 }, /* yhook */
-    { 0x01001ef8, 31621 }, /* Ytilde */
-    { 0x01001ef9, 31628 }, /* ytilde */
-    { 0x0000005a, 31635 }, /* Z */
-    { 0x0000007a, 31637 }, /* z */
-    { 0x000001af, 31639 }, /* Zabovedot */
-    { 0x000001bf, 31649 }, /* zabovedot */
-    { 0x000001ac, 31659 }, /* Zacute */
-    { 0x000001bc, 31666 }, /* zacute */
-    { 0x000001ae, 31673 }, /* Zcaron */
-    { 0x000001be, 31680 }, /* zcaron */
-    { 0x0000ff3d, 31687 }, /* Zen_Koho */
-    { 0x0000ff28, 31696 }, /* Zenkaku */
-    { 0x0000ff2a, 31704 }, /* Zenkaku_Hankaku */
-    { 0x01002080, 31720 }, /* zerosubscript */
-    { 0x01002070, 31734 }, /* zerosuperior */
-    { 0x010001b5, 31747 }, /* Zstroke */
-    { 0x010001b6, 31755 }, /* zstroke */
+    { 0x100000ee, 17075 }, /* hpYdiaeresis */
+    { 0x000002a1, 17088 }, /* Hstroke */
+    { 0x000002b1, 17096 }, /* hstroke */
+    { 0x000009e2, 17104 }, /* ht */
+    { 0x0000ffed, 17107 }, /* Hyper_L */
+    { 0x0000ffee, 17115 }, /* Hyper_R */
+    { 0x000000ad, 17123 }, /* hyphen */
+    { 0x00000049, 17130 }, /* I */
+    { 0x00000069, 17132 }, /* i */
+    { 0x000002a9, 17134 }, /* Iabovedot */
+    { 0x000000cd, 17144 }, /* Iacute */
+    { 0x000000ed, 17151 }, /* iacute */
+    { 0x01001eca, 17158 }, /* Ibelowdot */
+    { 0x01001ecb, 17168 }, /* ibelowdot */
+    { 0x0100012c, 17178 }, /* Ibreve */
+    { 0x0100012d, 17185 }, /* ibreve */
+    { 0x000000ce, 17192 }, /* Icircumflex */
+    { 0x000000ee, 17204 }, /* icircumflex */
+    { 0x000008cf, 17216 }, /* identical */
+    { 0x000000cf, 17226 }, /* Idiaeresis */
+    { 0x000000ef, 17237 }, /* idiaeresis */
+    { 0x000002b9, 17248 }, /* idotless */
+    { 0x000008cd, 17257 }, /* ifonlyif */
+    { 0x000000cc, 17266 }, /* Igrave */
+    { 0x000000ec, 17273 }, /* igrave */
+    { 0x01001ec8, 17280 }, /* Ihook */
+    { 0x01001ec9, 17286 }, /* ihook */
+    { 0x000003cf, 17292 }, /* Imacron */
+    { 0x000003ef, 17300 }, /* imacron */
+    { 0x000008ce, 17308 }, /* implies */
+    { 0x000008da, 17316 }, /* includedin */
+    { 0x000008db, 17327 }, /* includes */
+    { 0x000008c2, 17336 }, /* infinity */
+    { 0x0000ff63, 17345 }, /* Insert */
+    { 0x1000ff72, 17352 }, /* InsertChar */
+    { 0x1000ff70, 17363 }, /* InsertLine */
+    { 0x000008bf, 17374 }, /* integral */
+    { 0x000008dc, 17383 }, /* intersection */
+    { 0x100000ee, 17396 }, /* IO */
+    { 0x000003c7, 17399 }, /* Iogonek */
+    { 0x000003e7, 17407 }, /* iogonek */
+    { 0x0000fe33, 17415 }, /* ISO_Center_Object */
+    { 0x0000fe30, 17433 }, /* ISO_Continuous_Underline */
+    { 0x0000fe31, 17458 }, /* ISO_Discontinuous_Underline */
+    { 0x0000fe32, 17486 }, /* ISO_Emphasize */
+    { 0x0000fe34, 17500 }, /* ISO_Enter */
+    { 0x0000fe2f, 17510 }, /* ISO_Fast_Cursor_Down */
+    { 0x0000fe2c, 17531 }, /* ISO_Fast_Cursor_Left */
+    { 0x0000fe2d, 17552 }, /* ISO_Fast_Cursor_Right */
+    { 0x0000fe2e, 17574 }, /* ISO_Fast_Cursor_Up */
+    { 0x0000fe0c, 17593 }, /* ISO_First_Group */
+    { 0x0000fe0d, 17609 }, /* ISO_First_Group_Lock */
+    { 0x0000fe06, 17630 }, /* ISO_Group_Latch */
+    { 0x0000fe07, 17646 }, /* ISO_Group_Lock */
+    { 0x0000ff7e, 17661 }, /* ISO_Group_Shift */
+    { 0x0000fe0e, 17677 }, /* ISO_Last_Group */
+    { 0x0000fe0f, 17692 }, /* ISO_Last_Group_Lock */
+    { 0x0000fe20, 17712 }, /* ISO_Left_Tab */
+    { 0x0000fe02, 17725 }, /* ISO_Level2_Latch */
+    { 0x0000fe04, 17742 }, /* ISO_Level3_Latch */
+    { 0x0000fe05, 17759 }, /* ISO_Level3_Lock */
+    { 0x0000fe03, 17775 }, /* ISO_Level3_Shift */
+    { 0x0000fe12, 17792 }, /* ISO_Level5_Latch */
+    { 0x0000fe13, 17809 }, /* ISO_Level5_Lock */
+    { 0x0000fe11, 17825 }, /* ISO_Level5_Shift */
+    { 0x0000fe01, 17842 }, /* ISO_Lock */
+    { 0x0000fe22, 17851 }, /* ISO_Move_Line_Down */
+    { 0x0000fe21, 17870 }, /* ISO_Move_Line_Up */
+    { 0x0000fe08, 17887 }, /* ISO_Next_Group */
+    { 0x0000fe09, 17902 }, /* ISO_Next_Group_Lock */
+    { 0x0000fe24, 17922 }, /* ISO_Partial_Line_Down */
+    { 0x0000fe23, 17944 }, /* ISO_Partial_Line_Up */
+    { 0x0000fe25, 17964 }, /* ISO_Partial_Space_Left */
+    { 0x0000fe26, 17987 }, /* ISO_Partial_Space_Right */
+    { 0x0000fe0a, 18011 }, /* ISO_Prev_Group */
+    { 0x0000fe0b, 18026 }, /* ISO_Prev_Group_Lock */
+    { 0x0000fe2b, 18046 }, /* ISO_Release_Both_Margins */
+    { 0x0000fe29, 18071 }, /* ISO_Release_Margin_Left */
+    { 0x0000fe2a, 18095 }, /* ISO_Release_Margin_Right */
+    { 0x0000fe27, 18120 }, /* ISO_Set_Margin_Left */
+    { 0x0000fe28, 18140 }, /* ISO_Set_Margin_Right */
+    { 0x000003a5, 18161 }, /* Itilde */
+    { 0x000003b5, 18168 }, /* itilde */
+    { 0x0000004a, 18175 }, /* J */
+    { 0x0000006a, 18177 }, /* j */
+    { 0x000002ac, 18179 }, /* Jcircumflex */
+    { 0x000002bc, 18191 }, /* jcircumflex */
+    { 0x00000bca, 18203 }, /* jot */
+    { 0x0000004b, 18207 }, /* K */
+    { 0x0000006b, 18209 }, /* k */
+    { 0x000004a7, 18211 }, /* kana_a */
+    { 0x000004b1, 18218 }, /* kana_A */
+    { 0x000004c1, 18225 }, /* kana_CHI */
+    { 0x000004a3, 18234 }, /* kana_closingbracket */
+    { 0x000004a4, 18254 }, /* kana_comma */
+    { 0x000004a5, 18265 }, /* kana_conjunctive */
+    { 0x000004aa, 18282 }, /* kana_e */
+    { 0x000004b4, 18289 }, /* kana_E */
+    { 0x000004cc, 18296 }, /* kana_FU */
+    { 0x000004a1, 18304 }, /* kana_fullstop */
+    { 0x000004ca, 18318 }, /* kana_HA */
+    { 0x000004cd, 18326 }, /* kana_HE */
+    { 0x000004cb, 18334 }, /* kana_HI */
+    { 0x000004ce, 18342 }, /* kana_HO */
+    { 0x000004cc, 18350 }, /* kana_HU */
+    { 0x000004a8, 18358 }, /* kana_i */
+    { 0x000004b2, 18365 }, /* kana_I */
+    { 0x000004b6, 18372 }, /* kana_KA */
+    { 0x000004b9, 18380 }, /* kana_KE */
+    { 0x000004b7, 18388 }, /* kana_KI */
+    { 0x000004ba, 18396 }, /* kana_KO */
+    { 0x000004b8, 18404 }, /* kana_KU */
+    { 0x0000ff2d, 18412 }, /* Kana_Lock */
+    { 0x000004cf, 18422 }, /* kana_MA */
+    { 0x000004d2, 18430 }, /* kana_ME */
+    { 0x000004d0, 18438 }, /* kana_MI */
+    { 0x000004a5, 18446 }, /* kana_middledot */
+    { 0x000004d3, 18461 }, /* kana_MO */
+    { 0x000004d1, 18469 }, /* kana_MU */
+    { 0x000004dd, 18477 }, /* kana_N */
+    { 0x000004c5, 18484 }, /* kana_NA */
+    { 0x000004c8, 18492 }, /* kana_NE */
+    { 0x000004c6, 18500 }, /* kana_NI */
+    { 0x000004c9, 18508 }, /* kana_NO */
+    { 0x000004c7, 18516 }, /* kana_NU */
+    { 0x000004ab, 18524 }, /* kana_o */
+    { 0x000004b5, 18531 }, /* kana_O */
+    { 0x000004a2, 18538 }, /* kana_openingbracket */
+    { 0x000004d7, 18558 }, /* kana_RA */
+    { 0x000004da, 18566 }, /* kana_RE */
+    { 0x000004d8, 18574 }, /* kana_RI */
+    { 0x000004db, 18582 }, /* kana_RO */
+    { 0x000004d9, 18590 }, /* kana_RU */
+    { 0x000004bb, 18598 }, /* kana_SA */
+    { 0x000004be, 18606 }, /* kana_SE */
+    { 0x000004bc, 18614 }, /* kana_SHI */
+    { 0x0000ff2e, 18623 }, /* Kana_Shift */
+    { 0x000004bf, 18634 }, /* kana_SO */
+    { 0x000004bd, 18642 }, /* kana_SU */
+    { 0x0000ff7e, 18650 }, /* kana_switch */
+    { 0x000004c0, 18662 }, /* kana_TA */
+    { 0x000004c3, 18670 }, /* kana_TE */
+    { 0x000004c1, 18678 }, /* kana_TI */
+    { 0x000004c4, 18686 }, /* kana_TO */
+    { 0x000004af, 18694 }, /* kana_tsu */
+    { 0x000004c2, 18703 }, /* kana_TSU */
+    { 0x000004af, 18712 }, /* kana_tu */
+    { 0x000004c2, 18720 }, /* kana_TU */
+    { 0x000004a9, 18728 }, /* kana_u */
+    { 0x000004b3, 18735 }, /* kana_U */
+    { 0x000004dc, 18742 }, /* kana_WA */
+    { 0x000004a6, 18750 }, /* kana_WO */
+    { 0x000004ac, 18758 }, /* kana_ya */
+    { 0x000004d4, 18766 }, /* kana_YA */
+    { 0x000004ae, 18774 }, /* kana_yo */
+    { 0x000004d6, 18782 }, /* kana_YO */
+    { 0x000004ad, 18790 }, /* kana_yu */
+    { 0x000004d5, 18798 }, /* kana_YU */
+    { 0x0000ff21, 18806 }, /* Kanji */
+    { 0x0000ff37, 18812 }, /* Kanji_Bangou */
+    { 0x000003a2, 18825 }, /* kappa */
+    { 0x0000ff26, 18831 }, /* Katakana */
+    { 0x000003d3, 18840 }, /* Kcedilla */
+    { 0x000003f3, 18849 }, /* kcedilla */
+    { 0x00000eff, 18858 }, /* Korean_Won */
+    { 0x0000ffb0, 18869 }, /* KP_0 */
+    { 0x0000ffb1, 18874 }, /* KP_1 */
+    { 0x0000ffb2, 18879 }, /* KP_2 */
+    { 0x0000ffb3, 18884 }, /* KP_3 */
+    { 0x0000ffb4, 18889 }, /* KP_4 */
+    { 0x0000ffb5, 18894 }, /* KP_5 */
+    { 0x0000ffb6, 18899 }, /* KP_6 */
+    { 0x0000ffb7, 18904 }, /* KP_7 */
+    { 0x0000ffb8, 18909 }, /* KP_8 */
+    { 0x0000ffb9, 18914 }, /* KP_9 */
+    { 0x0000ffab, 18919 }, /* KP_Add */
+    { 0x1000ff75, 18926 }, /* KP_BackTab */
+    { 0x0000ff9d, 18937 }, /* KP_Begin */
+    { 0x0000ffae, 18946 }, /* KP_Decimal */
+    { 0x0000ff9f, 18957 }, /* KP_Delete */
+    { 0x0000ffaf, 18967 }, /* KP_Divide */
+    { 0x0000ff99, 18977 }, /* KP_Down */
+    { 0x0000ff9c, 18985 }, /* KP_End */
+    { 0x0000ff8d, 18992 }, /* KP_Enter */
+    { 0x0000ffbd, 19001 }, /* KP_Equal */
+    { 0x0000ff91, 19010 }, /* KP_F1 */
+    { 0x0000ff92, 19016 }, /* KP_F2 */
+    { 0x0000ff93, 19022 }, /* KP_F3 */
+    { 0x0000ff94, 19028 }, /* KP_F4 */
+    { 0x0000ff95, 19034 }, /* KP_Home */
+    { 0x0000ff9e, 19042 }, /* KP_Insert */
+    { 0x0000ff96, 19052 }, /* KP_Left */
+    { 0x0000ffaa, 19060 }, /* KP_Multiply */
+    { 0x0000ff9b, 19072 }, /* KP_Next */
+    { 0x0000ff9b, 19080 }, /* KP_Page_Down */
+    { 0x0000ff9a, 19093 }, /* KP_Page_Up */
+    { 0x0000ff9a, 19104 }, /* KP_Prior */
+    { 0x0000ff98, 19113 }, /* KP_Right */
+    { 0x0000ffac, 19122 }, /* KP_Separator */
+    { 0x0000ff80, 19135 }, /* KP_Space */
+    { 0x0000ffad, 19144 }, /* KP_Subtract */
+    { 0x0000ff89, 19156 }, /* KP_Tab */
+    { 0x0000ff97, 19163 }, /* KP_Up */
+    { 0x000003a2, 19169 }, /* kra */
+    { 0x0000004c, 19173 }, /* L */
+    { 0x0000006c, 19175 }, /* l */
+    { 0x0000ffc8, 19177 }, /* L1 */
+    { 0x0000ffd1, 19180 }, /* L10 */
+    { 0x0000ffc9, 19184 }, /* L2 */
+    { 0x0000ffca, 19187 }, /* L3 */
+    { 0x0000ffcb, 19190 }, /* L4 */
+    { 0x0000ffcc, 19193 }, /* L5 */
+    { 0x0000ffcd, 19196 }, /* L6 */
+    { 0x0000ffce, 19199 }, /* L7 */
+    { 0x0000ffcf, 19202 }, /* L8 */
+    { 0x0000ffd0, 19205 }, /* L9 */
+    { 0x000001c5, 19208 }, /* Lacute */
+    { 0x000001e5, 19215 }, /* lacute */
+    { 0x0000fed4, 19222 }, /* Last_Virtual_Screen */
+    { 0x00000ad9, 19242 }, /* latincross */
+    { 0x01001e36, 19253 }, /* Lbelowdot */
+    { 0x01001e37, 19263 }, /* lbelowdot */
+    { 0x000001a5, 19273 }, /* Lcaron */
+    { 0x000001b5, 19280 }, /* lcaron */
+    { 0x000003a6, 19287 }, /* Lcedilla */
+    { 0x000003b6, 19296 }, /* lcedilla */
+    { 0x0000ff51, 19305 }, /* Left */
+    { 0x00000abc, 19310 }, /* leftanglebracket */
+    { 0x000008fb, 19327 }, /* leftarrow */
+    { 0x00000ba3, 19337 }, /* leftcaret */
+    { 0x00000ad2, 19347 }, /* leftdoublequotemark */
+    { 0x000008af, 19367 }, /* leftmiddlecurlybrace */
+    { 0x00000acc, 19388 }, /* leftopentriangle */
+    { 0x00000aea, 19405 }, /* leftpointer */
+    { 0x000008a1, 19417 }, /* leftradical */
+    { 0x00000bda, 19429 }, /* leftshoe */
+    { 0x00000ad0, 19438 }, /* leftsinglequotemark */
+    { 0x000009f4, 19458 }, /* leftt */
+    { 0x00000bdc, 19464 }, /* lefttack */
+    { 0x0000003c, 19473 }, /* less */
+    { 0x000008bc, 19478 }, /* lessthanequal */
+    { 0x000009e5, 19492 }, /* lf */
+    { 0x0000ff0a, 19495 }, /* Linefeed */
+    { 0x100000af, 19504 }, /* lira */
+    { 0x010020a4, 19509 }, /* LiraSign */
+    { 0x000008de, 19518 }, /* logicaland */
+    { 0x000008df, 19529 }, /* logicalor */
+    { 0x100000f6, 19539 }, /* longminus */
+    { 0x000009ed, 19549 }, /* lowleftcorner */
+    { 0x000009ea, 19563 }, /* lowrightcorner */
+    { 0x000001a3, 19578 }, /* Lstroke */
+    { 0x000001b3, 19586 }, /* lstroke */
+    { 0x0000004d, 19594 }, /* M */
+    { 0x0000006d, 19596 }, /* m */
+    { 0x01001e40, 19598 }, /* Mabovedot */
+    { 0x01001e41, 19608 }, /* mabovedot */
+    { 0x000006a5, 19618 }, /* Macedonia_dse */
+    { 0x000006b5, 19632 }, /* Macedonia_DSE */
+    { 0x000006a2, 19646 }, /* Macedonia_gje */
+    { 0x000006b2, 19660 }, /* Macedonia_GJE */
+    { 0x000006ac, 19674 }, /* Macedonia_kje */
+    { 0x000006bc, 19688 }, /* Macedonia_KJE */
+    { 0x000000af, 19702 }, /* macron */
+    { 0x0000ff3e, 19709 }, /* Mae_Koho */
+    { 0x00000af7, 19718 }, /* malesymbol */
+    { 0x00000af0, 19729 }, /* maltesecross */
+    { 0x00000abf, 19742 }, /* marker */
+    { 0x000000ba, 19749 }, /* masculine */
+    { 0x0000ff2c, 19759 }, /* Massyo */
+    { 0x0000ff67, 19766 }, /* Menu */
+    { 0x0000ffe7, 19771 }, /* Meta_L */
+    { 0x0000ffe8, 19778 }, /* Meta_R */
+    { 0x010020a5, 19785 }, /* MillSign */
+    { 0x0000002d, 19794 }, /* minus */
+    { 0x00000ad6, 19800 }, /* minutes */
+    { 0x0000ff7e, 19808 }, /* Mode_switch */
+    { 0x0000fe77, 19820 }, /* MouseKeys_Accel_Enable */
+    { 0x0000fe76, 19843 }, /* MouseKeys_Enable */
+    { 0x000000b5, 19860 }, /* mu */
+    { 0x0000ff22, 19863 }, /* Muhenkan */
+    { 0x0000ff20, 19872 }, /* Multi_key */
+    { 0x0000ff3d, 19882 }, /* MultipleCandidate */
+    { 0x000000d7, 19900 }, /* multiply */
+    { 0x00000af6, 19909 }, /* musicalflat */
+    { 0x00000af5, 19921 }, /* musicalsharp */
+    { 0x100000a8, 19934 }, /* mute_acute */
+    { 0x100000aa, 19945 }, /* mute_asciicircum */
+    { 0x100000ac, 19962 }, /* mute_asciitilde */
+    { 0x100000ab, 19978 }, /* mute_diaeresis */
+    { 0x100000a9, 19993 }, /* mute_grave */
+    { 0x0000004e, 20004 }, /* N */
+    { 0x0000006e, 20006 }, /* n */
+    { 0x000008c5, 20008 }, /* nabla */
+    { 0x000001d1, 20014 }, /* Nacute */
+    { 0x000001f1, 20021 }, /* nacute */
+    { 0x010020a6, 20028 }, /* NairaSign */
+    { 0x000001d2, 20038 }, /* Ncaron */
+    { 0x000001f2, 20045 }, /* ncaron */
+    { 0x000003d1, 20052 }, /* Ncedilla */
+    { 0x000003f1, 20061 }, /* ncedilla */
+    { 0x010020aa, 20070 }, /* NewSheqelSign */
+    { 0x0000ff56, 20084 }, /* Next */
+    { 0x0000fed2, 20089 }, /* Next_Virtual_Screen */
+    { 0x01002089, 20109 }, /* ninesubscript */
+    { 0x01002079, 20123 }, /* ninesuperior */
+    { 0x000009e8, 20136 }, /* nl */
+    { 0x000000a0, 20139 }, /* nobreakspace */
+    { 0x00000000, 20152 }, /* NoSymbol */
+    { 0x01002247, 20161 }, /* notapproxeq */
+    { 0x01002209, 20173 }, /* notelementof */
+    { 0x000008bd, 20186 }, /* notequal */
+    { 0x01002262, 20195 }, /* notidentical */
+    { 0x000000ac, 20208 }, /* notsign */
+    { 0x000000d1, 20216 }, /* Ntilde */
+    { 0x000000f1, 20223 }, /* ntilde */
+    { 0x0000ff7f, 20230 }, /* Num_Lock */
+    { 0x00000023, 20239 }, /* numbersign */
+    { 0x000006b0, 20250 }, /* numerosign */
+    { 0x0000004f, 20261 }, /* O */
+    { 0x0000006f, 20263 }, /* o */
+    { 0x000000d3, 20265 }, /* Oacute */
+    { 0x000000f3, 20272 }, /* oacute */
+    { 0x0100019f, 20279 }, /* Obarred */
+    { 0x01000275, 20287 }, /* obarred */
+    { 0x01001ecc, 20295 }, /* Obelowdot */
+    { 0x01001ecd, 20305 }, /* obelowdot */
+    { 0x010001d1, 20315 }, /* Ocaron */
+    { 0x010001d2, 20322 }, /* ocaron */
+    { 0x000000d4, 20329 }, /* Ocircumflex */
+    { 0x000000f4, 20341 }, /* ocircumflex */
+    { 0x01001ed0, 20353 }, /* Ocircumflexacute */
+    { 0x01001ed1, 20370 }, /* ocircumflexacute */
+    { 0x01001ed8, 20387 }, /* Ocircumflexbelowdot */
+    { 0x01001ed9, 20407 }, /* ocircumflexbelowdot */
+    { 0x01001ed2, 20427 }, /* Ocircumflexgrave */
+    { 0x01001ed3, 20444 }, /* ocircumflexgrave */
+    { 0x01001ed4, 20461 }, /* Ocircumflexhook */
+    { 0x01001ed5, 20477 }, /* ocircumflexhook */
+    { 0x01001ed6, 20493 }, /* Ocircumflextilde */
+    { 0x01001ed7, 20510 }, /* ocircumflextilde */
+    { 0x000000d6, 20527 }, /* Odiaeresis */
+    { 0x000000f6, 20538 }, /* odiaeresis */
+    { 0x000001d5, 20549 }, /* Odoubleacute */
+    { 0x000001f5, 20562 }, /* odoubleacute */
+    { 0x000013bc, 20575 }, /* OE */
+    { 0x000013bd, 20578 }, /* oe */
+    { 0x000001b2, 20581 }, /* ogonek */
+    { 0x000000d2, 20588 }, /* Ograve */
+    { 0x000000f2, 20595 }, /* ograve */
+    { 0x01001ece, 20602 }, /* Ohook */
+    { 0x01001ecf, 20608 }, /* ohook */
+    { 0x010001a0, 20614 }, /* Ohorn */
+    { 0x010001a1, 20620 }, /* ohorn */
+    { 0x01001eda, 20626 }, /* Ohornacute */
+    { 0x01001edb, 20637 }, /* ohornacute */
+    { 0x01001ee2, 20648 }, /* Ohornbelowdot */
+    { 0x01001ee3, 20662 }, /* ohornbelowdot */
+    { 0x01001edc, 20676 }, /* Ohorngrave */
+    { 0x01001edd, 20687 }, /* ohorngrave */
+    { 0x01001ede, 20698 }, /* Ohornhook */
+    { 0x01001edf, 20708 }, /* ohornhook */
+    { 0x01001ee0, 20718 }, /* Ohorntilde */
+    { 0x01001ee1, 20729 }, /* ohorntilde */
+    { 0x000003d2, 20740 }, /* Omacron */
+    { 0x000003f2, 20748 }, /* omacron */
+    { 0x00000ac3, 20756 }, /* oneeighth */
+    { 0x00000ab2, 20766 }, /* onefifth */
+    { 0x000000bd, 20775 }, /* onehalf */
+    { 0x000000bc, 20783 }, /* onequarter */
+    { 0x00000ab6, 20794 }, /* onesixth */
+    { 0x01002081, 20803 }, /* onesubscript */
+    { 0x000000b9, 20816 }, /* onesuperior */
+    { 0x00000ab0, 20828 }, /* onethird */
+    { 0x000000d8, 20837 }, /* Ooblique */
+    { 0x000000f8, 20846 }, /* ooblique */
+    { 0x00000ae2, 20855 }, /* openrectbullet */
+    { 0x00000ae5, 20870 }, /* openstar */
+    { 0x00000ae4, 20879 }, /* opentribulletdown */
+    { 0x00000ae3, 20897 }, /* opentribulletup */
+    { 0x000000aa, 20913 }, /* ordfeminine */
+    { 0x000000ba, 20925 }, /* ordmasculine */
+    { 0x1004ff44, 20938 }, /* osfActivate */
+    { 0x1004ff31, 20950 }, /* osfAddMode */
+    { 0x1004ff08, 20961 }, /* osfBackSpace */
+    { 0x1004ff07, 20974 }, /* osfBackTab */
+    { 0x1004ff5a, 20985 }, /* osfBeginData */
+    { 0x1004ff58, 20998 }, /* osfBeginLine */
+    { 0x1004ff69, 21011 }, /* osfCancel */
+    { 0x1004ff0b, 21021 }, /* osfClear */
+    { 0x1004ff02, 21030 }, /* osfCopy */
+    { 0x1004ff03, 21038 }, /* osfCut */
+    { 0x1004ffff, 21045 }, /* osfDelete */
+    { 0x1004ff72, 21055 }, /* osfDeselectAll */
+    { 0x1004ff54, 21070 }, /* osfDown */
+    { 0x1004ff59, 21078 }, /* osfEndData */
+    { 0x1004ff57, 21089 }, /* osfEndLine */
+    { 0x1004ff1b, 21100 }, /* osfEscape */
+    { 0x1004ff74, 21110 }, /* osfExtend */
+    { 0x1004ff6a, 21120 }, /* osfHelp */
+    { 0x1004ff63, 21128 }, /* osfInsert */
+    { 0x1004ff51, 21138 }, /* osfLeft */
+    { 0x1004ff67, 21146 }, /* osfMenu */
+    { 0x1004ff45, 21154 }, /* osfMenuBar */
+    { 0x1004ff5e, 21165 }, /* osfNextField */
+    { 0x1004ff5c, 21178 }, /* osfNextMenu */
+    { 0x1004ff42, 21190 }, /* osfPageDown */
+    { 0x1004ff40, 21202 }, /* osfPageLeft */
+    { 0x1004ff43, 21214 }, /* osfPageRight */
+    { 0x1004ff41, 21227 }, /* osfPageUp */
+    { 0x1004ff04, 21237 }, /* osfPaste */
+    { 0x1004ff5d, 21246 }, /* osfPrevField */
+    { 0x1004ff5b, 21259 }, /* osfPrevMenu */
+    { 0x1004ff32, 21271 }, /* osfPrimaryPaste */
+    { 0x1004ff33, 21287 }, /* osfQuickPaste */
+    { 0x1004ff73, 21301 }, /* osfReselect */
+    { 0x1004ff78, 21313 }, /* osfRestore */
+    { 0x1004ff53, 21324 }, /* osfRight */
+    { 0x1004ff60, 21333 }, /* osfSelect */
+    { 0x1004ff71, 21343 }, /* osfSelectAll */
+    { 0x1004ff65, 21356 }, /* osfUndo */
+    { 0x1004ff52, 21364 }, /* osfUp */
+    { 0x000000d8, 21370 }, /* Oslash */
+    { 0x000000f8, 21377 }, /* oslash */
+    { 0x000000d5, 21384 }, /* Otilde */
+    { 0x000000f5, 21391 }, /* otilde */
+    { 0x00000bc0, 21398 }, /* overbar */
+    { 0x0000fe78, 21406 }, /* Overlay1_Enable */
+    { 0x0000fe79, 21422 }, /* Overlay2_Enable */
+    { 0x0000047e, 21438 }, /* overline */
+    { 0x00000050, 21447 }, /* P */
+    { 0x00000070, 21449 }, /* p */
+    { 0x01001e56, 21451 }, /* Pabovedot */
+    { 0x01001e57, 21461 }, /* pabovedot */
+    { 0x0000ff56, 21471 }, /* Page_Down */
+    { 0x0000ff55, 21481 }, /* Page_Up */
+    { 0x000000b6, 21489 }, /* paragraph */
+    { 0x00000028, 21499 }, /* parenleft */
+    { 0x00000029, 21509 }, /* parenright */
+    { 0x01002202, 21520 }, /* partdifferential */
+    { 0x000008ef, 21537 }, /* partialderivative */
+    { 0x0000ff13, 21555 }, /* Pause */
+    { 0x00000025, 21561 }, /* percent */
+    { 0x0000002e, 21569 }, /* period */
+    { 0x000000b7, 21576 }, /* periodcentered */
+    { 0x00000ad5, 21591 }, /* permille */
+    { 0x010020a7, 21600 }, /* PesetaSign */
+    { 0x00000afb, 21611 }, /* phonographcopyright */
+    { 0x0000002b, 21631 }, /* plus */
+    { 0x000000b1, 21636 }, /* plusminus */
+    { 0x0000fefa, 21646 }, /* Pointer_Accelerate */
+    { 0x0000fee9, 21665 }, /* Pointer_Button1 */
+    { 0x0000feea, 21681 }, /* Pointer_Button2 */
+    { 0x0000feeb, 21697 }, /* Pointer_Button3 */
+    { 0x0000feec, 21713 }, /* Pointer_Button4 */
+    { 0x0000feed, 21729 }, /* Pointer_Button5 */
+    { 0x0000fee8, 21745 }, /* Pointer_Button_Dflt */
+    { 0x0000feef, 21765 }, /* Pointer_DblClick1 */
+    { 0x0000fef0, 21783 }, /* Pointer_DblClick2 */
+    { 0x0000fef1, 21801 }, /* Pointer_DblClick3 */
+    { 0x0000fef2, 21819 }, /* Pointer_DblClick4 */
+    { 0x0000fef3, 21837 }, /* Pointer_DblClick5 */
+    { 0x0000feee, 21855 }, /* Pointer_DblClick_Dflt */
+    { 0x0000fefb, 21877 }, /* Pointer_DfltBtnNext */
+    { 0x0000fefc, 21897 }, /* Pointer_DfltBtnPrev */
+    { 0x0000fee3, 21917 }, /* Pointer_Down */
+    { 0x0000fee6, 21930 }, /* Pointer_DownLeft */
+    { 0x0000fee7, 21947 }, /* Pointer_DownRight */
+    { 0x0000fef5, 21965 }, /* Pointer_Drag1 */
+    { 0x0000fef6, 21979 }, /* Pointer_Drag2 */
+    { 0x0000fef7, 21993 }, /* Pointer_Drag3 */
+    { 0x0000fef8, 22007 }, /* Pointer_Drag4 */
+    { 0x0000fefd, 22021 }, /* Pointer_Drag5 */
+    { 0x0000fef4, 22035 }, /* Pointer_Drag_Dflt */
+    { 0x0000fef9, 22053 }, /* Pointer_EnableKeys */
+    { 0x0000fee0, 22072 }, /* Pointer_Left */
+    { 0x0000fee1, 22085 }, /* Pointer_Right */
+    { 0x0000fee2, 22099 }, /* Pointer_Up */
+    { 0x0000fee4, 22110 }, /* Pointer_UpLeft */
+    { 0x0000fee5, 22125 }, /* Pointer_UpRight */
+    { 0x00000ad4, 22141 }, /* prescription */
+    { 0x0000fed1, 22154 }, /* Prev_Virtual_Screen */
+    { 0x0000ff3e, 22174 }, /* PreviousCandidate */
+    { 0x0000ff61, 22192 }, /* Print */
+    { 0x0000ff55, 22198 }, /* Prior */
+    { 0x000004b0, 22204 }, /* prolongedsound */
+    { 0x00000aa6, 22219 }, /* punctspace */
+    { 0x00000051, 22230 }, /* Q */
+    { 0x00000071, 22232 }, /* q */
+    { 0x00000bcc, 22234 }, /* quad */
+    { 0x0000003f, 22239 }, /* question */
+    { 0x000000bf, 22248 }, /* questiondown */
+    { 0x00000022, 22261 }, /* quotedbl */
+    { 0x00000060, 22270 }, /* quoteleft */
+    { 0x00000027, 22280 }, /* quoteright */
+    { 0x00000052, 22291 }, /* R */
+    { 0x00000072, 22293 }, /* r */
+    { 0x0000ffd2, 22295 }, /* R1 */
+    { 0x0000ffdb, 22298 }, /* R10 */
+    { 0x0000ffdc, 22302 }, /* R11 */
+    { 0x0000ffdd, 22306 }, /* R12 */
+    { 0x0000ffde, 22310 }, /* R13 */
+    { 0x0000ffdf, 22314 }, /* R14 */
+    { 0x0000ffe0, 22318 }, /* R15 */
+    { 0x0000ffd3, 22322 }, /* R2 */
+    { 0x0000ffd4, 22325 }, /* R3 */
+    { 0x0000ffd5, 22328 }, /* R4 */
+    { 0x0000ffd6, 22331 }, /* R5 */
+    { 0x0000ffd7, 22334 }, /* R6 */
+    { 0x0000ffd8, 22337 }, /* R7 */
+    { 0x0000ffd9, 22340 }, /* R8 */
+    { 0x0000ffda, 22343 }, /* R9 */
+    { 0x000001c0, 22346 }, /* Racute */
+    { 0x000001e0, 22353 }, /* racute */
+    { 0x000008d6, 22360 }, /* radical */
+    { 0x000001d8, 22368 }, /* Rcaron */
+    { 0x000001f8, 22375 }, /* rcaron */
+    { 0x000003a3, 22382 }, /* Rcedilla */
+    { 0x000003b3, 22391 }, /* rcedilla */
+    { 0x0000ff66, 22400 }, /* Redo */
+    { 0x000000ae, 22405 }, /* registered */
+    { 0x0000fe72, 22416 }, /* RepeatKeys_Enable */
+    { 0x1000ff6c, 22434 }, /* Reset */
+    { 0x0000ff0d, 22440 }, /* Return */
+    { 0x0000ff53, 22447 }, /* Right */
+    { 0x00000abe, 22453 }, /* rightanglebracket */
+    { 0x000008fd, 22471 }, /* rightarrow */
+    { 0x00000ba6, 22482 }, /* rightcaret */
+    { 0x00000ad3, 22493 }, /* rightdoublequotemark */
+    { 0x000008b0, 22514 }, /* rightmiddlecurlybrace */
+    { 0x000008b7, 22536 }, /* rightmiddlesummation */
+    { 0x00000acd, 22557 }, /* rightopentriangle */
+    { 0x00000aeb, 22575 }, /* rightpointer */
+    { 0x00000bd8, 22588 }, /* rightshoe */
+    { 0x00000ad1, 22598 }, /* rightsinglequotemark */
+    { 0x000009f5, 22619 }, /* rightt */
+    { 0x00000bfc, 22626 }, /* righttack */
+    { 0x0000ff24, 22636 }, /* Romaji */
+    { 0x010020a8, 22643 }, /* RupeeSign */
+    { 0x00000053, 22653 }, /* S */
+    { 0x00000073, 22655 }, /* s */
+    { 0x01001e60, 22657 }, /* Sabovedot */
+    { 0x01001e61, 22667 }, /* sabovedot */
+    { 0x000001a6, 22677 }, /* Sacute */
+    { 0x000001b6, 22684 }, /* sacute */
+    { 0x000001a9, 22691 }, /* Scaron */
+    { 0x000001b9, 22698 }, /* scaron */
+    { 0x000001aa, 22705 }, /* Scedilla */
+    { 0x000001ba, 22714 }, /* scedilla */
+    { 0x0100018f, 22723 }, /* SCHWA */
+    { 0x01000259, 22729 }, /* schwa */
+    { 0x000002de, 22735 }, /* Scircumflex */
+    { 0x000002fe, 22747 }, /* scircumflex */
+    { 0x0000ff7e, 22759 }, /* script_switch */
+    { 0x0000ff14, 22773 }, /* Scroll_Lock */
+    { 0x00000ad7, 22785 }, /* seconds */
+    { 0x000000a7, 22793 }, /* section */
+    { 0x0000ff60, 22801 }, /* Select */
+    { 0x0000003b, 22808 }, /* semicolon */
+    { 0x000004df, 22818 }, /* semivoicedsound */
+    { 0x000006a1, 22834 }, /* Serbian_dje */
+    { 0x000006b1, 22846 }, /* Serbian_DJE */
+    { 0x000006af, 22858 }, /* Serbian_dze */
+    { 0x000006bf, 22870 }, /* Serbian_DZE */
+    { 0x000006a8, 22882 }, /* Serbian_je */
+    { 0x000006b8, 22893 }, /* Serbian_JE */
+    { 0x000006a9, 22904 }, /* Serbian_lje */
+    { 0x000006b9, 22916 }, /* Serbian_LJE */
+    { 0x000006aa, 22928 }, /* Serbian_nje */
+    { 0x000006ba, 22940 }, /* Serbian_NJE */
+    { 0x000006ab, 22952 }, /* Serbian_tshe */
+    { 0x000006bb, 22965 }, /* Serbian_TSHE */
+    { 0x00000ac6, 22978 }, /* seveneighths */
+    { 0x01002087, 22991 }, /* sevensubscript */
+    { 0x01002077, 23006 }, /* sevensuperior */
+    { 0x0000ffe1, 23020 }, /* Shift_L */
+    { 0x0000ffe6, 23028 }, /* Shift_Lock */
+    { 0x0000ffe2, 23039 }, /* Shift_R */
+    { 0x00000aca, 23047 }, /* signaturemark */
+    { 0x00000aac, 23061 }, /* signifblank */
+    { 0x000008c9, 23073 }, /* similarequal */
+    { 0x0000ff3c, 23086 }, /* SingleCandidate */
+    { 0x00000afd, 23102 }, /* singlelowquotemark */
+    { 0x01000d85, 23121 }, /* Sinh_a */
+    { 0x01000d86, 23128 }, /* Sinh_aa */
+    { 0x01000dcf, 23136 }, /* Sinh_aa2 */
+    { 0x01000d87, 23145 }, /* Sinh_ae */
+    { 0x01000dd0, 23153 }, /* Sinh_ae2 */
+    { 0x01000d88, 23162 }, /* Sinh_aee */
+    { 0x01000dd1, 23171 }, /* Sinh_aee2 */
+    { 0x01000d93, 23181 }, /* Sinh_ai */
+    { 0x01000ddb, 23189 }, /* Sinh_ai2 */
+    { 0x01000dca, 23198 }, /* Sinh_al */
+    { 0x01000d96, 23206 }, /* Sinh_au */
+    { 0x01000dde, 23214 }, /* Sinh_au2 */
+    { 0x01000db6, 23223 }, /* Sinh_ba */
+    { 0x01000db7, 23231 }, /* Sinh_bha */
+    { 0x01000da0, 23240 }, /* Sinh_ca */
+    { 0x01000da1, 23248 }, /* Sinh_cha */
+    { 0x01000da9, 23257 }, /* Sinh_dda */
+    { 0x01000daa, 23266 }, /* Sinh_ddha */
+    { 0x01000daf, 23276 }, /* Sinh_dha */
+    { 0x01000db0, 23285 }, /* Sinh_dhha */
+    { 0x01000d91, 23295 }, /* Sinh_e */
+    { 0x01000dd9, 23302 }, /* Sinh_e2 */
+    { 0x01000d92, 23310 }, /* Sinh_ee */
+    { 0x01000dda, 23318 }, /* Sinh_ee2 */
+    { 0x01000dc6, 23327 }, /* Sinh_fa */
+    { 0x01000d9c, 23335 }, /* Sinh_ga */
+    { 0x01000d9d, 23343 }, /* Sinh_gha */
+    { 0x01000d83, 23352 }, /* Sinh_h2 */
+    { 0x01000dc4, 23360 }, /* Sinh_ha */
+    { 0x01000d89, 23368 }, /* Sinh_i */
+    { 0x01000dd2, 23375 }, /* Sinh_i2 */
+    { 0x01000d8a, 23383 }, /* Sinh_ii */
+    { 0x01000dd3, 23391 }, /* Sinh_ii2 */
+    { 0x01000da2, 23400 }, /* Sinh_ja */
+    { 0x01000da3, 23408 }, /* Sinh_jha */
+    { 0x01000da5, 23417 }, /* Sinh_jnya */
+    { 0x01000d9a, 23427 }, /* Sinh_ka */
+    { 0x01000d9b, 23435 }, /* Sinh_kha */
+    { 0x01000df4, 23444 }, /* Sinh_kunddaliya */
+    { 0x01000dbd, 23460 }, /* Sinh_la */
+    { 0x01000dc5, 23468 }, /* Sinh_lla */
+    { 0x01000d8f, 23477 }, /* Sinh_lu */
+    { 0x01000ddf, 23485 }, /* Sinh_lu2 */
+    { 0x01000d90, 23494 }, /* Sinh_luu */
+    { 0x01000df3, 23503 }, /* Sinh_luu2 */
+    { 0x01000db8, 23513 }, /* Sinh_ma */
+    { 0x01000db9, 23521 }, /* Sinh_mba */
+    { 0x01000db1, 23530 }, /* Sinh_na */
+    { 0x01000dac, 23538 }, /* Sinh_ndda */
+    { 0x01000db3, 23548 }, /* Sinh_ndha */
+    { 0x01000d82, 23558 }, /* Sinh_ng */
+    { 0x01000d9e, 23566 }, /* Sinh_ng2 */
+    { 0x01000d9f, 23575 }, /* Sinh_nga */
+    { 0x01000da6, 23584 }, /* Sinh_nja */
+    { 0x01000dab, 23593 }, /* Sinh_nna */
+    { 0x01000da4, 23602 }, /* Sinh_nya */
+    { 0x01000d94, 23611 }, /* Sinh_o */
+    { 0x01000ddc, 23618 }, /* Sinh_o2 */
+    { 0x01000d95, 23626 }, /* Sinh_oo */
+    { 0x01000ddd, 23634 }, /* Sinh_oo2 */
+    { 0x01000db4, 23643 }, /* Sinh_pa */
+    { 0x01000db5, 23651 }, /* Sinh_pha */
+    { 0x01000dbb, 23660 }, /* Sinh_ra */
+    { 0x01000d8d, 23668 }, /* Sinh_ri */
+    { 0x01000d8e, 23676 }, /* Sinh_rii */
+    { 0x01000dd8, 23685 }, /* Sinh_ru2 */
+    { 0x01000df2, 23694 }, /* Sinh_ruu2 */
+    { 0x01000dc3, 23704 }, /* Sinh_sa */
+    { 0x01000dc1, 23712 }, /* Sinh_sha */
+    { 0x01000dc2, 23721 }, /* Sinh_ssha */
+    { 0x01000dad, 23731 }, /* Sinh_tha */
+    { 0x01000dae, 23740 }, /* Sinh_thha */
+    { 0x01000da7, 23750 }, /* Sinh_tta */
+    { 0x01000da8, 23759 }, /* Sinh_ttha */
+    { 0x01000d8b, 23769 }, /* Sinh_u */
+    { 0x01000dd4, 23776 }, /* Sinh_u2 */
+    { 0x01000d8c, 23784 }, /* Sinh_uu */
+    { 0x01000dd6, 23792 }, /* Sinh_uu2 */
+    { 0x01000dc0, 23801 }, /* Sinh_va */
+    { 0x01000dba, 23809 }, /* Sinh_ya */
+    { 0x01002086, 23817 }, /* sixsubscript */
+    { 0x01002076, 23830 }, /* sixsuperior */
+    { 0x0000002f, 23842 }, /* slash */
+    { 0x0000fe73, 23848 }, /* SlowKeys_Enable */
+    { 0x000009e0, 23864 }, /* soliddiamond */
+    { 0x00000020, 23877 }, /* space */
+    { 0x0100221a, 23883 }, /* squareroot */
+    { 0x000000df, 23894 }, /* ssharp */
+    { 0x000000a3, 23901 }, /* sterling */
+    { 0x0000fe75, 23910 }, /* StickyKeys_Enable */
+    { 0x01002263, 23928 }, /* stricteq */
+    { 0x0000ff66, 23937 }, /* SunAgain */
+    { 0x0000ff7e, 23946 }, /* SunAltGraph */
+    { 0x1005ff77, 23958 }, /* SunAudioLowerVolume */
+    { 0x1005ff78, 23978 }, /* SunAudioMute */
+    { 0x1005ff79, 23991 }, /* SunAudioRaiseVolume */
+    { 0x0000ff20, 24011 }, /* SunCompose */
+    { 0x1005ff72, 24022 }, /* SunCopy */
+    { 0x1005ff75, 24030 }, /* SunCut */
+    { 0x1005ff10, 24037 }, /* SunF36 */
+    { 0x1005ff11, 24044 }, /* SunF37 */
+    { 0x1005ff03, 24051 }, /* SunFA_Acute */
+    { 0x1005ff05, 24063 }, /* SunFA_Cedilla */
+    { 0x1005ff01, 24077 }, /* SunFA_Circum */
+    { 0x1005ff04, 24090 }, /* SunFA_Diaeresis */
+    { 0x1005ff00, 24106 }, /* SunFA_Grave */
+    { 0x1005ff02, 24118 }, /* SunFA_Tilde */
+    { 0x0000ff68, 24130 }, /* SunFind */
+    { 0x1005ff71, 24138 }, /* SunFront */
+    { 0x1005ff73, 24147 }, /* SunOpen */
+    { 0x0000ff56, 24155 }, /* SunPageDown */
+    { 0x0000ff55, 24167 }, /* SunPageUp */
+    { 0x1005ff74, 24177 }, /* SunPaste */
+    { 0x1005ff76, 24186 }, /* SunPowerSwitch */
+    { 0x1005ff7d, 24201 }, /* SunPowerSwitchShift */
+    { 0x0000ff61, 24221 }, /* SunPrint_Screen */
+    { 0x1005ff70, 24237 }, /* SunProps */
+    { 0x0000ff69, 24246 }, /* SunStop */
+    { 0x1005ff60, 24254 }, /* SunSys_Req */
+    { 0x0000ff65, 24265 }, /* SunUndo */
+    { 0x1005ff7a, 24273 }, /* SunVideoDegauss */
+    { 0x1005ff7b, 24289 }, /* SunVideoLowerBrightness */
+    { 0x1005ff7c, 24313 }, /* SunVideoRaiseBrightness */
+    { 0x0000ffeb, 24337 }, /* Super_L */
+    { 0x0000ffec, 24345 }, /* Super_R */
+    { 0x0000ff15, 24353 }, /* Sys_Req */
+    { 0x1000ff6d, 24361 }, /* System */
+    { 0x00000054, 24368 }, /* T */
+    { 0x00000074, 24370 }, /* t */
+    { 0x0000ff09, 24372 }, /* Tab */
+    { 0x01001e6a, 24376 }, /* Tabovedot */
+    { 0x01001e6b, 24386 }, /* tabovedot */
+    { 0x000001ab, 24396 }, /* Tcaron */
+    { 0x000001bb, 24403 }, /* tcaron */
+    { 0x000001de, 24410 }, /* Tcedilla */
+    { 0x000001fe, 24419 }, /* tcedilla */
+    { 0x00000af9, 24428 }, /* telephone */
+    { 0x00000afa, 24438 }, /* telephonerecorder */
+    { 0x0000fed5, 24456 }, /* Terminate_Server */
+    { 0x00000ddf, 24473 }, /* Thai_baht */
+    { 0x00000dba, 24483 }, /* Thai_bobaimai */
+    { 0x00000da8, 24497 }, /* Thai_chochan */
+    { 0x00000daa, 24510 }, /* Thai_chochang */
+    { 0x00000da9, 24524 }, /* Thai_choching */
+    { 0x00000dac, 24538 }, /* Thai_chochoe */
+    { 0x00000dae, 24551 }, /* Thai_dochada */
+    { 0x00000db4, 24564 }, /* Thai_dodek */
+    { 0x00000dbd, 24575 }, /* Thai_fofa */
+    { 0x00000dbf, 24585 }, /* Thai_fofan */
+    { 0x00000dcb, 24596 }, /* Thai_hohip */
+    { 0x00000dce, 24607 }, /* Thai_honokhuk */
+    { 0x00000da2, 24621 }, /* Thai_khokhai */
+    { 0x00000da5, 24634 }, /* Thai_khokhon */
+    { 0x00000da3, 24647 }, /* Thai_khokhuat */
+    { 0x00000da4, 24661 }, /* Thai_khokhwai */
+    { 0x00000da6, 24675 }, /* Thai_khorakhang */
+    { 0x00000da1, 24691 }, /* Thai_kokai */
+    { 0x00000de5, 24702 }, /* Thai_lakkhangyao */
+    { 0x00000df7, 24719 }, /* Thai_lekchet */
+    { 0x00000df5, 24732 }, /* Thai_lekha */
+    { 0x00000df6, 24743 }, /* Thai_lekhok */
+    { 0x00000df9, 24755 }, /* Thai_lekkao */
+    { 0x00000df1, 24767 }, /* Thai_leknung */
+    { 0x00000df8, 24780 }, /* Thai_lekpaet */
+    { 0x00000df3, 24793 }, /* Thai_leksam */
+    { 0x00000df4, 24805 }, /* Thai_leksi */
+    { 0x00000df2, 24816 }, /* Thai_leksong */
+    { 0x00000df0, 24829 }, /* Thai_leksun */
+    { 0x00000dcc, 24841 }, /* Thai_lochula */
+    { 0x00000dc5, 24854 }, /* Thai_loling */
+    { 0x00000dc6, 24866 }, /* Thai_lu */
+    { 0x00000deb, 24874 }, /* Thai_maichattawa */
+    { 0x00000de8, 24891 }, /* Thai_maiek */
+    { 0x00000dd1, 24902 }, /* Thai_maihanakat */
+    { 0x00000dde, 24918 }, /* Thai_maihanakat_maitho */
+    { 0x00000de7, 24941 }, /* Thai_maitaikhu */
+    { 0x00000de9, 24956 }, /* Thai_maitho */
+    { 0x00000dea, 24968 }, /* Thai_maitri */
+    { 0x00000de6, 24980 }, /* Thai_maiyamok */
+    { 0x00000dc1, 24994 }, /* Thai_moma */
+    { 0x00000da7, 25004 }, /* Thai_ngongu */
+    { 0x00000ded, 25016 }, /* Thai_nikhahit */
+    { 0x00000db3, 25030 }, /* Thai_nonen */
+    { 0x00000db9, 25041 }, /* Thai_nonu */
+    { 0x00000dcd, 25051 }, /* Thai_oang */
+    { 0x00000dcf, 25061 }, /* Thai_paiyannoi */
+    { 0x00000dda, 25076 }, /* Thai_phinthu */
+    { 0x00000dbe, 25089 }, /* Thai_phophan */
+    { 0x00000dbc, 25102 }, /* Thai_phophung */
+    { 0x00000dc0, 25116 }, /* Thai_phosamphao */
+    { 0x00000dbb, 25132 }, /* Thai_popla */
+    { 0x00000dc3, 25143 }, /* Thai_rorua */
+    { 0x00000dc4, 25154 }, /* Thai_ru */
+    { 0x00000dd0, 25162 }, /* Thai_saraa */
+    { 0x00000dd2, 25173 }, /* Thai_saraaa */
+    { 0x00000de1, 25185 }, /* Thai_saraae */
+    { 0x00000de4, 25197 }, /* Thai_saraaimaimalai */
+    { 0x00000de3, 25217 }, /* Thai_saraaimaimuan */
+    { 0x00000dd3, 25236 }, /* Thai_saraam */
+    { 0x00000de0, 25248 }, /* Thai_sarae */
+    { 0x00000dd4, 25259 }, /* Thai_sarai */
+    { 0x00000dd5, 25270 }, /* Thai_saraii */
+    { 0x00000de2, 25282 }, /* Thai_sarao */
+    { 0x00000dd8, 25293 }, /* Thai_sarau */
+    { 0x00000dd6, 25304 }, /* Thai_saraue */
+    { 0x00000dd7, 25316 }, /* Thai_sarauee */
+    { 0x00000dd9, 25329 }, /* Thai_sarauu */
+    { 0x00000dc9, 25341 }, /* Thai_sorusi */
+    { 0x00000dc8, 25353 }, /* Thai_sosala */
+    { 0x00000dab, 25365 }, /* Thai_soso */
+    { 0x00000dca, 25375 }, /* Thai_sosua */
+    { 0x00000dec, 25386 }, /* Thai_thanthakhat */
+    { 0x00000db1, 25403 }, /* Thai_thonangmontho */
+    { 0x00000db2, 25422 }, /* Thai_thophuthao */
+    { 0x00000db7, 25438 }, /* Thai_thothahan */
+    { 0x00000db0, 25453 }, /* Thai_thothan */
+    { 0x00000db8, 25466 }, /* Thai_thothong */
+    { 0x00000db6, 25480 }, /* Thai_thothung */
+    { 0x00000daf, 25494 }, /* Thai_topatak */
+    { 0x00000db5, 25507 }, /* Thai_totao */
+    { 0x00000dc7, 25518 }, /* Thai_wowaen */
+    { 0x00000dc2, 25530 }, /* Thai_yoyak */
+    { 0x00000dad, 25541 }, /* Thai_yoying */
+    { 0x000008c0, 25553 }, /* therefore */
+    { 0x00000aa7, 25563 }, /* thinspace */
+    { 0x000000de, 25573 }, /* THORN */
+    { 0x000000de, 25579 }, /* Thorn */
+    { 0x000000fe, 25585 }, /* thorn */
+    { 0x00000ac4, 25591 }, /* threeeighths */
+    { 0x00000ab4, 25604 }, /* threefifths */
+    { 0x000000be, 25616 }, /* threequarters */
+    { 0x01002083, 25630 }, /* threesubscript */
+    { 0x000000b3, 25645 }, /* threesuperior */
+    { 0x0100222d, 25659 }, /* tintegral */
+    { 0x000008a4, 25669 }, /* topintegral */
+    { 0x000008ab, 25681 }, /* topleftparens */
+    { 0x000008a2, 25695 }, /* topleftradical */
+    { 0x000008a7, 25710 }, /* topleftsqbracket */
+    { 0x000008b1, 25727 }, /* topleftsummation */
+    { 0x000008ad, 25744 }, /* toprightparens */
+    { 0x000008a9, 25759 }, /* toprightsqbracket */
+    { 0x000008b5, 25777 }, /* toprightsummation */
+    { 0x000009f7, 25795 }, /* topt */
+    { 0x000008b3, 25800 }, /* topvertsummationconnector */
+    { 0x0000ff2b, 25826 }, /* Touroku */
+    { 0x00000ac9, 25834 }, /* trademark */
+    { 0x00000acb, 25844 }, /* trademarkincircle */
+    { 0x000003ac, 25862 }, /* Tslash */
+    { 0x000003bc, 25869 }, /* tslash */
+    { 0x00000ab3, 25876 }, /* twofifths */
+    { 0x01002082, 25886 }, /* twosubscript */
+    { 0x000000b2, 25899 }, /* twosuperior */
+    { 0x00000ab1, 25911 }, /* twothirds */
+    { 0x00000055, 25921 }, /* U */
+    { 0x00000075, 25923 }, /* u */
+    { 0x000000da, 25925 }, /* Uacute */
+    { 0x000000fa, 25932 }, /* uacute */
+    { 0x01001ee4, 25939 }, /* Ubelowdot */
+    { 0x01001ee5, 25949 }, /* ubelowdot */
+    { 0x000002dd, 25959 }, /* Ubreve */
+    { 0x000002fd, 25966 }, /* ubreve */
+    { 0x000000db, 25973 }, /* Ucircumflex */
+    { 0x000000fb, 25985 }, /* ucircumflex */
+    { 0x000000dc, 25997 }, /* Udiaeresis */
+    { 0x000000fc, 26008 }, /* udiaeresis */
+    { 0x000001db, 26019 }, /* Udoubleacute */
+    { 0x000001fb, 26032 }, /* udoubleacute */
+    { 0x000000d9, 26045 }, /* Ugrave */
+    { 0x000000f9, 26052 }, /* ugrave */
+    { 0x01001ee6, 26059 }, /* Uhook */
+    { 0x01001ee7, 26065 }, /* uhook */
+    { 0x010001af, 26071 }, /* Uhorn */
+    { 0x010001b0, 26077 }, /* uhorn */
+    { 0x01001ee8, 26083 }, /* Uhornacute */
+    { 0x01001ee9, 26094 }, /* uhornacute */
+    { 0x01001ef0, 26105 }, /* Uhornbelowdot */
+    { 0x01001ef1, 26119 }, /* uhornbelowdot */
+    { 0x01001eea, 26133 }, /* Uhorngrave */
+    { 0x01001eeb, 26144 }, /* uhorngrave */
+    { 0x01001eec, 26155 }, /* Uhornhook */
+    { 0x01001eed, 26165 }, /* uhornhook */
+    { 0x01001eee, 26175 }, /* Uhorntilde */
+    { 0x01001eef, 26186 }, /* uhorntilde */
+    { 0x000006ad, 26197 }, /* Ukrainian_ghe_with_upturn */
+    { 0x000006bd, 26223 }, /* Ukrainian_GHE_WITH_UPTURN */
+    { 0x000006a6, 26249 }, /* Ukrainian_i */
+    { 0x000006b6, 26261 }, /* Ukrainian_I */
+    { 0x000006a4, 26273 }, /* Ukrainian_ie */
+    { 0x000006b4, 26286 }, /* Ukrainian_IE */
+    { 0x000006a7, 26299 }, /* Ukrainian_yi */
+    { 0x000006b7, 26312 }, /* Ukrainian_YI */
+    { 0x000006a6, 26325 }, /* Ukranian_i */
+    { 0x000006b6, 26336 }, /* Ukranian_I */
+    { 0x000006a4, 26347 }, /* Ukranian_je */
+    { 0x000006b4, 26359 }, /* Ukranian_JE */
+    { 0x000006a7, 26371 }, /* Ukranian_yi */
+    { 0x000006b7, 26383 }, /* Ukranian_YI */
+    { 0x000003de, 26395 }, /* Umacron */
+    { 0x000003fe, 26403 }, /* umacron */
+    { 0x00000bc6, 26411 }, /* underbar */
+    { 0x0000005f, 26420 }, /* underscore */
+    { 0x0000ff65, 26431 }, /* Undo */
+    { 0x000008dd, 26436 }, /* union */
+    { 0x000003d9, 26442 }, /* Uogonek */
+    { 0x000003f9, 26450 }, /* uogonek */
+    { 0x0000ff52, 26458 }, /* Up */
+    { 0x000008fc, 26461 }, /* uparrow */
+    { 0x00000ba9, 26469 }, /* upcaret */
+    { 0x000009ec, 26477 }, /* upleftcorner */
+    { 0x000009eb, 26490 }, /* uprightcorner */
+    { 0x00000bc3, 26504 }, /* upshoe */
+    { 0x00000bd3, 26511 }, /* upstile */
+    { 0x00000bce, 26519 }, /* uptack */
+    { 0x000001d9, 26526 }, /* Uring */
+    { 0x000001f9, 26532 }, /* uring */
+    { 0x1000ff6e, 26538 }, /* User */
+    { 0x000003dd, 26543 }, /* Utilde */
+    { 0x000003fd, 26550 }, /* utilde */
+    { 0x00000056, 26557 }, /* V */
+    { 0x00000076, 26559 }, /* v */
+    { 0x000008c1, 26561 }, /* variation */
+    { 0x000009f8, 26571 }, /* vertbar */
+    { 0x000008a6, 26579 }, /* vertconnector */
+    { 0x000004de, 26593 }, /* voicedsound */
+    { 0x00ffffff, 26605 }, /* VoidSymbol */
+    { 0x000009e9, 26616 }, /* vt */
+    { 0x00000057, 26619 }, /* W */
+    { 0x00000077, 26621 }, /* w */
+    { 0x01001e82, 26623 }, /* Wacute */
+    { 0x01001e83, 26630 }, /* wacute */
+    { 0x01000174, 26637 }, /* Wcircumflex */
+    { 0x01000175, 26649 }, /* wcircumflex */
+    { 0x01001e84, 26661 }, /* Wdiaeresis */
+    { 0x01001e85, 26672 }, /* wdiaeresis */
+    { 0x01001e80, 26683 }, /* Wgrave */
+    { 0x01001e81, 26690 }, /* wgrave */
+    { 0x010020a9, 26697 }, /* WonSign */
+    { 0x00000058, 26705 }, /* X */
+    { 0x00000078, 26707 }, /* x */
+    { 0x01001e8a, 26709 }, /* Xabovedot */
+    { 0x01001e8b, 26719 }, /* xabovedot */
+    { 0x100811b9, 26729 }, /* XF8610ChannelsDown */
+    { 0x100811b8, 26748 }, /* XF8610ChannelsUp */
+    { 0x1008126f, 26765 }, /* XF863DMode */
+    { 0x1008ff39, 26776 }, /* XF86AddFavorite */
+    { 0x100811ad, 26792 }, /* XF86Addressbook */
+    { 0x10081230, 26808 }, /* XF86ALSToggle */
+    { 0x1008ff50, 26822 }, /* XF86ApplicationLeft */
+    { 0x1008ff51, 26842 }, /* XF86ApplicationRight */
+    { 0x10081244, 26863 }, /* XF86AppSelect */
+    { 0x10081177, 26877 }, /* XF86AspectRatio */
+    { 0x10081247, 26893 }, /* XF86Assistant */
+    { 0x1008121c, 26907 }, /* XF86AttendantOff */
+    { 0x1008121b, 26924 }, /* XF86AttendantOn */
+    { 0x1008121d, 26940 }, /* XF86AttendantToggle */
+    { 0x10081188, 26960 }, /* XF86Audio */
+    { 0x1008ff9b, 26970 }, /* XF86AudioCycleTrack */
+    { 0x1008126e, 26990 }, /* XF86AudioDesc */
+    { 0x1008ff97, 27004 }, /* XF86AudioForward */
+    { 0x1008ff11, 27021 }, /* XF86AudioLowerVolume */
+    { 0x1008ff32, 27042 }, /* XF86AudioMedia */
+    { 0x1008ffb2, 27057 }, /* XF86AudioMicMute */
+    { 0x1008ff12, 27074 }, /* XF86AudioMute */
+    { 0x1008ff17, 27088 }, /* XF86AudioNext */
+    { 0x1008ff31, 27102 }, /* XF86AudioPause */
+    { 0x1008ff14, 27117 }, /* XF86AudioPlay */
+    { 0x1008ffb6, 27131 }, /* XF86AudioPreset */
+    { 0x1008ff16, 27147 }, /* XF86AudioPrev */
+    { 0x1008ff13, 27161 }, /* XF86AudioRaiseVolume */
+    { 0x1008ff99, 27182 }, /* XF86AudioRandomPlay */
+    { 0x1008ff1c, 27202 }, /* XF86AudioRecord */
+    { 0x1008ff98, 27218 }, /* XF86AudioRepeat */
+    { 0x1008ff3e, 27234 }, /* XF86AudioRewind */
+    { 0x1008ff15, 27250 }, /* XF86AudioStop */
+    { 0x1008127d, 27264 }, /* XF86AutopilotEngageToggle */
+    { 0x1008ff8d, 27290 }, /* XF86Away */
+    { 0x1008ff26, 27299 }, /* XF86Back */
+    { 0x1008ff3f, 27308 }, /* XF86BackForward */
+    { 0x1008ff93, 27324 }, /* XF86Battery */
+    { 0x1008ffa6, 27336 }, /* XF86Blue */
+    { 0x1008ff94, 27345 }, /* XF86Bluetooth */
+    { 0x1008ff52, 27359 }, /* XF86Book */
+    { 0x1008119b, 27368 }, /* XF86Break */
+    { 0x1008ff3b, 27378 }, /* XF86BrightnessAdjust */
+    { 0x100810f4, 27399 }, /* XF86BrightnessAuto */
+    { 0x10081251, 27418 }, /* XF86BrightnessMax */
+    { 0x10081250, 27436 }, /* XF86BrightnessMin */
+    { 0x10081240, 27454 }, /* XF86Buttonconfig */
+    { 0x1008ff54, 27471 }, /* XF86Calculater */
+    { 0x1008ff1d, 27486 }, /* XF86Calculator */
+    { 0x1008ff20, 27501 }, /* XF86Calendar */
+    { 0x1008124c, 27514 }, /* XF86CameraAccessDisable */
+    { 0x1008124b, 27538 }, /* XF86CameraAccessEnable */
+    { 0x1008124d, 27561 }, /* XF86CameraAccessToggle */
+    { 0x10081218, 27584 }, /* XF86CameraDown */
+    { 0x10081210, 27599 }, /* XF86CameraFocus */
+    { 0x10081219, 27615 }, /* XF86CameraLeft */
+    { 0x1008121a, 27630 }, /* XF86CameraRight */
+    { 0x10081217, 27646 }, /* XF86CameraUp */
+    { 0x10081215, 27659 }, /* XF86CameraZoomIn */
+    { 0x10081216, 27676 }, /* XF86CameraZoomOut */
+    { 0x1008ff53, 27694 }, /* XF86CD */
+    { 0x10081193, 27701 }, /* XF86ChannelDown */
+    { 0x10081192, 27717 }, /* XF86ChannelUp */
+    { 0x1008ff55, 27731 }, /* XF86Clear */
+    { 0x1008fe21, 27741 }, /* XF86ClearGrab */
+    { 0x10081286, 27755 }, /* XF86ClearvuSonar */
+    { 0x1008ff56, 27772 }, /* XF86Close */
+    { 0x1008ff3d, 27782 }, /* XF86Community */
+    { 0x100811b6, 27796 }, /* XF86ContextMenu */
+    { 0x1008ff22, 27812 }, /* XF86ContrastAdjust */
+    { 0x10081243, 27831 }, /* XF86ControlPanel */
+    { 0x1008ff57, 27848 }, /* XF86Copy */
+    { 0x1008ff58, 27857 }, /* XF86Cut */
+    { 0x1008ff9c, 27865 }, /* XF86CycleAngle */
+    { 0x10081277, 27880 }, /* XF86Data */
+    { 0x100811aa, 27889 }, /* XF86Database */
+    { 0x1008124a, 27902 }, /* XF86Dictate */
+    { 0x1008ff59, 27914 }, /* XF86Display */
+    { 0x100810f5, 27926 }, /* XF86DisplayOff */
+    { 0x100811af, 27941 }, /* XF86DisplayToggle */
+    { 0x1008ff5b, 27959 }, /* XF86Documents */
+    { 0x1008ff5a, 27973 }, /* XF86DOS */
+    { 0x10081283, 27981 }, /* XF86DualRangeRadar */
+    { 0x10081185, 28000 }, /* XF86DVD */
+    { 0x100811a6, 28008 }, /* XF86Editor */
+    { 0x1008ff2c, 28019 }, /* XF86Eject */
+    { 0x10081249, 28029 }, /* XF86EmojiPicker */
+    { 0x1008ff5c, 28045 }, /* XF86Excel */
+    { 0x1008ff5d, 28055 }, /* XF86Explorer */
+    { 0x10081275, 28068 }, /* XF86FastReverse */
+    { 0x1008ff30, 28084 }, /* XF86Favorites */
+    { 0x1008ff3c, 28098 }, /* XF86Finance */
+    { 0x10081281, 28110 }, /* XF86FishingChart */
+    { 0x100811d0, 28127 }, /* XF86Fn */
+    { 0x100811d1, 28134 }, /* XF86Fn_Esc */
+    { 0x100811e5, 28145 }, /* XF86FnRightShift */
+    { 0x1008ff27, 28162 }, /* XF86Forward */
+    { 0x1008ff9d, 28174 }, /* XF86FrameBack */
+    { 0x1008ff9e, 28188 }, /* XF86FrameForward */
+    { 0x1008ffb8, 28205 }, /* XF86FullScreen */
+    { 0x1008ff5e, 28220 }, /* XF86Game */
+    { 0x1008ff5f, 28229 }, /* XF86Go */
+    { 0x100811a8, 28236 }, /* XF86GraphicsEditor */
+    { 0x1008ffa4, 28255 }, /* XF86Green */
+    { 0x100811be, 28265 }, /* XF86HangupPhone */
+    { 0x1008ffa8, 28281 }, /* XF86Hibernate */
+    { 0x1008ff37, 28295 }, /* XF86History */
+    { 0x1008ff18, 28307 }, /* XF86HomePage */
+    { 0x1008ff3a, 28320 }, /* XF86HotLinks */
+    { 0x100811ba, 28333 }, /* XF86Images */
+    { 0x10081166, 28344 }, /* XF86Info */
+    { 0x1008ff60, 28353 }, /* XF86iTouch */
+    { 0x10081242, 28364 }, /* XF86Journal */
+    { 0x1008ff06, 28376 }, /* XF86KbdBrightnessDown */
+    { 0x1008ff05, 28398 }, /* XF86KbdBrightnessUp */
+    { 0x10081264, 28418 }, /* XF86KbdInputAssistAccept */
+    { 0x10081265, 28443 }, /* XF86KbdInputAssistCancel */
+    { 0x10081261, 28468 }, /* XF86KbdInputAssistNext */
+    { 0x10081263, 28491 }, /* XF86KbdInputAssistNextgroup */
+    { 0x10081260, 28519 }, /* XF86KbdInputAssistPrev */
+    { 0x10081262, 28542 }, /* XF86KbdInputAssistPrevgroup */
+    { 0x100812b8, 28570 }, /* XF86KbdLcdMenu1 */
+    { 0x100812b9, 28586 }, /* XF86KbdLcdMenu2 */
+    { 0x100812ba, 28602 }, /* XF86KbdLcdMenu3 */
+    { 0x100812bb, 28618 }, /* XF86KbdLcdMenu4 */
+    { 0x100812bc, 28634 }, /* XF86KbdLcdMenu5 */
+    { 0x1008ff04, 28650 }, /* XF86KbdLightOnOff */
+    { 0x1008ffb3, 28668 }, /* XF86Keyboard */
+    { 0x1008ff40, 28681 }, /* XF86Launch0 */
+    { 0x1008ff41, 28693 }, /* XF86Launch1 */
+    { 0x1008ff42, 28705 }, /* XF86Launch2 */
+    { 0x1008ff43, 28717 }, /* XF86Launch3 */
+    { 0x1008ff44, 28729 }, /* XF86Launch4 */
+    { 0x1008ff45, 28741 }, /* XF86Launch5 */
+    { 0x1008ff46, 28753 }, /* XF86Launch6 */
+    { 0x1008ff47, 28765 }, /* XF86Launch7 */
+    { 0x1008ff48, 28777 }, /* XF86Launch8 */
+    { 0x1008ff49, 28789 }, /* XF86Launch9 */
+    { 0x1008ff4a, 28801 }, /* XF86LaunchA */
+    { 0x1008ff4b, 28813 }, /* XF86LaunchB */
+    { 0x1008ff4c, 28825 }, /* XF86LaunchC */
+    { 0x1008ff4d, 28837 }, /* XF86LaunchD */
+    { 0x1008ff4e, 28849 }, /* XF86LaunchE */
+    { 0x1008ff4f, 28861 }, /* XF86LaunchF */
+    { 0x10081269, 28873 }, /* XF86LeftDown */
+    { 0x10081268, 28886 }, /* XF86LeftUp */
+    { 0x1008ff35, 28897 }, /* XF86LightBulb */
+    { 0x1008121e, 28911 }, /* XF86LightsToggle */
+    { 0x1008fe25, 28928 }, /* XF86LogGrabInfo */
+    { 0x1008ff61, 28944 }, /* XF86LogOff */
+    { 0x1008fe24, 28955 }, /* XF86LogWindowTree */
+    { 0x10081290, 28973 }, /* XF86Macro1 */
+    { 0x10081299, 28984 }, /* XF86Macro10 */
+    { 0x1008129a, 28996 }, /* XF86Macro11 */
+    { 0x1008129b, 29008 }, /* XF86Macro12 */
+    { 0x1008129c, 29020 }, /* XF86Macro13 */
+    { 0x1008129d, 29032 }, /* XF86Macro14 */
+    { 0x1008129e, 29044 }, /* XF86Macro15 */
+    { 0x1008129f, 29056 }, /* XF86Macro16 */
+    { 0x100812a0, 29068 }, /* XF86Macro17 */
+    { 0x100812a1, 29080 }, /* XF86Macro18 */
+    { 0x100812a2, 29092 }, /* XF86Macro19 */
+    { 0x10081291, 29104 }, /* XF86Macro2 */
+    { 0x100812a3, 29115 }, /* XF86Macro20 */
+    { 0x100812a4, 29127 }, /* XF86Macro21 */
+    { 0x100812a5, 29139 }, /* XF86Macro22 */
+    { 0x100812a6, 29151 }, /* XF86Macro23 */
+    { 0x100812a7, 29163 }, /* XF86Macro24 */
+    { 0x100812a8, 29175 }, /* XF86Macro25 */
+    { 0x100812a9, 29187 }, /* XF86Macro26 */
+    { 0x100812aa, 29199 }, /* XF86Macro27 */
+    { 0x100812ab, 29211 }, /* XF86Macro28 */
+    { 0x100812ac, 29223 }, /* XF86Macro29 */
+    { 0x10081292, 29235 }, /* XF86Macro3 */
+    { 0x100812ad, 29246 }, /* XF86Macro30 */
+    { 0x10081293, 29258 }, /* XF86Macro4 */
+    { 0x10081294, 29269 }, /* XF86Macro5 */
+    { 0x10081295, 29280 }, /* XF86Macro6 */
+    { 0x10081296, 29291 }, /* XF86Macro7 */
+    { 0x10081297, 29302 }, /* XF86Macro8 */
+    { 0x10081298, 29313 }, /* XF86Macro9 */
+    { 0x100812b3, 29324 }, /* XF86MacroPreset1 */
+    { 0x100812b4, 29341 }, /* XF86MacroPreset2 */
+    { 0x100812b5, 29358 }, /* XF86MacroPreset3 */
+    { 0x100812b2, 29375 }, /* XF86MacroPresetCycle */
+    { 0x100812b0, 29396 }, /* XF86MacroRecordStart */
+    { 0x100812b1, 29417 }, /* XF86MacroRecordStop */
+    { 0x1008ff19, 29437 }, /* XF86Mail */
+    { 0x1008ff90, 29446 }, /* XF86MailForward */
+    { 0x1008ff62, 29462 }, /* XF86Market */
+    { 0x1008127e, 29473 }, /* XF86MarkWaypoint */
+    { 0x100811b7, 29490 }, /* XF86MediaRepeat */
+    { 0x1008126b, 29506 }, /* XF86MediaTopMenu */
+    { 0x1008ff63, 29523 }, /* XF86Meeting */
+    { 0x1008ff1e, 29535 }, /* XF86Memo */
+    { 0x1008ff65, 29544 }, /* XF86MenuKB */
+    { 0x1008ff66, 29555 }, /* XF86MenuPB */
+    { 0x1008ff8e, 29566 }, /* XF86Messenger */
+    { 0x1008ff01, 29580 }, /* XF86ModeLock */
+    { 0x1008ff07, 29593 }, /* XF86MonBrightnessCycle */
+    { 0x1008ff03, 29616 }, /* XF86MonBrightnessDown */
+    { 0x1008ff02, 29638 }, /* XF86MonBrightnessUp */
+    { 0x1008ff92, 29658 }, /* XF86Music */
+    { 0x1008ff33, 29668 }, /* XF86MyComputer */
+    { 0x1008ff67, 29683 }, /* XF86MySites */
+    { 0x10081280, 29695 }, /* XF86NavChart */
+    { 0x10081288, 29708 }, /* XF86NavInfo */
+    { 0x1008ff68, 29720 }, /* XF86New */
+    { 0x1008ff69, 29728 }, /* XF86News */
+    { 0x1008fe22, 29737 }, /* XF86Next_VMode */
+    { 0x1008127b, 29752 }, /* XF86NextElement */
+    { 0x10081270, 29768 }, /* XF86NextFavorite */
+    { 0x100811bc, 29785 }, /* XF86NotificationCenter */
+    { 0x10081200, 29808 }, /* XF86Numeric0 */
+    { 0x10081201, 29821 }, /* XF86Numeric1 */
+    { 0x1008126c, 29834 }, /* XF86Numeric11 */
+    { 0x1008126d, 29848 }, /* XF86Numeric12 */
+    { 0x10081202, 29862 }, /* XF86Numeric2 */
+    { 0x10081203, 29875 }, /* XF86Numeric3 */
+    { 0x10081204, 29888 }, /* XF86Numeric4 */
+    { 0x10081205, 29901 }, /* XF86Numeric5 */
+    { 0x10081206, 29914 }, /* XF86Numeric6 */
+    { 0x10081207, 29927 }, /* XF86Numeric7 */
+    { 0x10081208, 29940 }, /* XF86Numeric8 */
+    { 0x10081209, 29953 }, /* XF86Numeric9 */
+    { 0x1008120c, 29966 }, /* XF86NumericA */
+    { 0x1008120d, 29979 }, /* XF86NumericB */
+    { 0x1008120e, 29992 }, /* XF86NumericC */
+    { 0x1008120f, 30005 }, /* XF86NumericD */
+    { 0x1008120b, 30018 }, /* XF86NumericPound */
+    { 0x1008120a, 30035 }, /* XF86NumericStar */
+    { 0x1008ff6a, 30051 }, /* XF86OfficeHome */
+    { 0x10081278, 30066 }, /* XF86OnScreenKeyboard */
+    { 0x1008ff6b, 30087 }, /* XF86Open */
+    { 0x1008ff38, 30096 }, /* XF86OpenURL */
+    { 0x1008ff6c, 30108 }, /* XF86Option */
+    { 0x1008ff6d, 30119 }, /* XF86Paste */
+    { 0x10081272, 30129 }, /* XF86PauseRecord */
+    { 0x1008ff6e, 30145 }, /* XF86Phone */
+    { 0x100811bd, 30155 }, /* XF86PickupPhone */
+    { 0x1008ff91, 30171 }, /* XF86Pictures */
+    { 0x1008ff21, 30184 }, /* XF86PowerDown */
+    { 0x1008ff2a, 30198 }, /* XF86PowerOff */
+    { 0x100811a9, 30211 }, /* XF86Presentation */
+    { 0x1008fe23, 30228 }, /* XF86Prev_VMode */
+    { 0x1008127c, 30243 }, /* XF86PreviousElement */
+    { 0x10081279, 30263 }, /* XF86PrivacyScreenToggle */
+    { 0x1008ff70, 30287 }, /* XF86Q */
+    { 0x10081284, 30293 }, /* XF86RadarOverlay */
+    { 0x1008ffa3, 30310 }, /* XF86Red */
+    { 0x1008ff29, 30318 }, /* XF86Refresh */
+    { 0x1008ff73, 30330 }, /* XF86Reload */
+    { 0x1008ff72, 30341 }, /* XF86Reply */
+    { 0x1008ffb5, 30351 }, /* XF86RFKill */
+    { 0x10081267, 30362 }, /* XF86RightDown */
+    { 0x10081266, 30376 }, /* XF86RightUp */
+    { 0x1008ff24, 30388 }, /* XF86RockerDown */
+    { 0x1008ff25, 30403 }, /* XF86RockerEnter */
+    { 0x1008ff23, 30419 }, /* XF86RockerUp */
+    { 0x1008126a, 30432 }, /* XF86RootMenu */
+    { 0x1008ff74, 30445 }, /* XF86RotateWindows */
+    { 0x1008ff76, 30463 }, /* XF86RotationKB */
+    { 0x1008ffb7, 30478 }, /* XF86RotationLockToggle */
+    { 0x1008ff75, 30501 }, /* XF86RotationPB */
+    { 0x1008ff77, 30516 }, /* XF86Save */
+    { 0x1008ff2d, 30525 }, /* XF86ScreenSaver */
+    { 0x10081245, 30541 }, /* XF86Screensaver */
+    { 0x1008ff7a, 30557 }, /* XF86ScrollClick */
+    { 0x1008ff79, 30573 }, /* XF86ScrollDown */
+    { 0x1008ff78, 30588 }, /* XF86ScrollUp */
+    { 0x1008ff1b, 30601 }, /* XF86Search */
+    { 0x1008ffa0, 30612 }, /* XF86Select */
+    { 0x1008127a, 30623 }, /* XF86SelectiveScreenshot */
+    { 0x1008ff7b, 30647 }, /* XF86Send */
+    { 0x1008ff36, 30656 }, /* XF86Shop */
+    { 0x10081287, 30665 }, /* XF86SidevuSonar */
+    { 0x10081282, 30681 }, /* XF86SingleRangeRadar */
+    { 0x1008ff2f, 30702 }, /* XF86Sleep */
+    { 0x10081276, 30712 }, /* XF86SlowReverse */
+    { 0x1008127f, 30728 }, /* XF86Sos */
+    { 0x1008ff7c, 30736 }, /* XF86Spell */
+    { 0x100811b0, 30746 }, /* XF86SpellCheck */
+    { 0x1008ff7d, 30761 }, /* XF86SplitScreen */
+    { 0x1008ff10, 30777 }, /* XF86Standby */
+    { 0x1008ff1a, 30789 }, /* XF86Start */
+    { 0x1008ff28, 30799 }, /* XF86Stop */
+    { 0x10081271, 30808 }, /* XF86StopRecord */
+    { 0x1008ff9a, 30823 }, /* XF86Subtitle */
+    { 0x1008ff7e, 30836 }, /* XF86Support */
+    { 0x1008ffa7, 30848 }, /* XF86Suspend */
+    { 0x1008fe01, 30860 }, /* XF86Switch_VT_1 */
+    { 0x1008fe0a, 30876 }, /* XF86Switch_VT_10 */
+    { 0x1008fe0b, 30893 }, /* XF86Switch_VT_11 */
+    { 0x1008fe0c, 30910 }, /* XF86Switch_VT_12 */
+    { 0x1008fe02, 30927 }, /* XF86Switch_VT_2 */
+    { 0x1008fe03, 30943 }, /* XF86Switch_VT_3 */
+    { 0x1008fe04, 30959 }, /* XF86Switch_VT_4 */
+    { 0x1008fe05, 30975 }, /* XF86Switch_VT_5 */
+    { 0x1008fe06, 30991 }, /* XF86Switch_VT_6 */
+    { 0x1008fe07, 31007 }, /* XF86Switch_VT_7 */
+    { 0x1008fe08, 31023 }, /* XF86Switch_VT_8 */
+    { 0x1008fe09, 31039 }, /* XF86Switch_VT_9 */
+    { 0x10081241, 31055 }, /* XF86Taskmanager */
+    { 0x1008ff7f, 31071 }, /* XF86TaskPane */
+    { 0x1008ff80, 31084 }, /* XF86Terminal */
+    { 0x1008ff9f, 31097 }, /* XF86Time */
+    { 0x1008ff1f, 31106 }, /* XF86ToDoList */
+    { 0x1008ff81, 31119 }, /* XF86Tools */
+    { 0x1008ffa2, 31129 }, /* XF86TopMenu */
+    { 0x1008ffb1, 31141 }, /* XF86TouchpadOff */
+    { 0x1008ffb0, 31157 }, /* XF86TouchpadOn */
+    { 0x1008ffa9, 31172 }, /* XF86TouchpadToggle */
+    { 0x10081285, 31191 }, /* XF86TraditionalSonar */
+    { 0x1008ff82, 31212 }, /* XF86Travel */
+    { 0x1008fe20, 31223 }, /* XF86Ungrab */
+    { 0x10081274, 31234 }, /* XF86Unmute */
+    { 0x1008ff85, 31245 }, /* XF86User1KB */
+    { 0x1008ff86, 31257 }, /* XF86User2KB */
+    { 0x1008ff84, 31269 }, /* XF86UserPB */
+    { 0x1008ff96, 31280 }, /* XF86UWB */
+    { 0x1008ff34, 31288 }, /* XF86VendorHome */
+    { 0x1008ff87, 31303 }, /* XF86Video */
+    { 0x100811a0, 31313 }, /* XF86VideoPhone */
+    { 0x1008ffa1, 31328 }, /* XF86View */
+    { 0x10081273, 31337 }, /* XF86VOD */
+    { 0x10081246, 31345 }, /* XF86VoiceCommand */
+    { 0x100811ac, 31362 }, /* XF86Voicemail */
+    { 0x1008ff2b, 31376 }, /* XF86WakeUp */
+    { 0x1008ff8f, 31387 }, /* XF86WebCam */
+    { 0x1008ff88, 31398 }, /* XF86WheelButton */
+    { 0x1008ff95, 31414 }, /* XF86WLAN */
+    { 0x1008ff89, 31423 }, /* XF86Word */
+    { 0x10081211, 31432 }, /* XF86WPSButton */
+    { 0x1008ffb4, 31446 }, /* XF86WWAN */
+    { 0x1008ff2e, 31455 }, /* XF86WWW */
+    { 0x1008ff8a, 31463 }, /* XF86Xfer */
+    { 0x1008ffa5, 31472 }, /* XF86Yellow */
+    { 0x1008ff8b, 31483 }, /* XF86ZoomIn */
+    { 0x1008ff8c, 31494 }, /* XF86ZoomOut */
+    { 0x100811a4, 31506 }, /* XF86ZoomReset */
+    { 0x00000059, 31520 }, /* Y */
+    { 0x00000079, 31522 }, /* y */
+    { 0x000000dd, 31524 }, /* Yacute */
+    { 0x000000fd, 31531 }, /* yacute */
+    { 0x01001ef4, 31538 }, /* Ybelowdot */
+    { 0x01001ef5, 31548 }, /* ybelowdot */
+    { 0x01000176, 31558 }, /* Ycircumflex */
+    { 0x01000177, 31570 }, /* ycircumflex */
+    { 0x000000ff, 31582 }, /* ydiaeresis */
+    { 0x000013be, 31593 }, /* Ydiaeresis */
+    { 0x000000a5, 31604 }, /* yen */
+    { 0x01001ef2, 31608 }, /* Ygrave */
+    { 0x01001ef3, 31615 }, /* ygrave */
+    { 0x01001ef6, 31622 }, /* Yhook */
+    { 0x01001ef7, 31628 }, /* yhook */
+    { 0x01001ef8, 31634 }, /* Ytilde */
+    { 0x01001ef9, 31641 }, /* ytilde */
+    { 0x0000005a, 31648 }, /* Z */
+    { 0x0000007a, 31650 }, /* z */
+    { 0x000001af, 31652 }, /* Zabovedot */
+    { 0x000001bf, 31662 }, /* zabovedot */
+    { 0x000001ac, 31672 }, /* Zacute */
+    { 0x000001bc, 31679 }, /* zacute */
+    { 0x000001ae, 31686 }, /* Zcaron */
+    { 0x000001be, 31693 }, /* zcaron */
+    { 0x0000ff3d, 31700 }, /* Zen_Koho */
+    { 0x0000ff28, 31709 }, /* Zenkaku */
+    { 0x0000ff2a, 31717 }, /* Zenkaku_Hankaku */
+    { 0x01002080, 31733 }, /* zerosubscript */
+    { 0x01002070, 31747 }, /* zerosuperior */
+    { 0x010001b5, 31760 }, /* Zstroke */
+    { 0x010001b6, 31768 }, /* zstroke */
 };
 
 static const struct name_keysym keysym_to_name[] = {
-    { 0x00000000, 20139 }, /* NoSymbol */
-    { 0x00000020, 23864 }, /* space */
+    { 0x00000000, 20152 }, /* NoSymbol */
+    { 0x00000020, 23877 }, /* space */
     { 0x00000021, 12131 }, /* exclam */
-    { 0x00000022, 22248 }, /* quotedbl */
-    { 0x00000023, 20226 }, /* numbersign */
+    { 0x00000022, 22261 }, /* quotedbl */
+    { 0x00000023, 20239 }, /* numbersign */
     { 0x00000024, 11283 }, /* dollar */
-    { 0x00000025, 21548 }, /* percent */
+    { 0x00000025, 21561 }, /* percent */
     { 0x00000026, 908 }, /* ampersand */
     { 0x00000027, 934 }, /* apostrophe */
-    { 0x00000028, 21486 }, /* parenleft */
-    { 0x00000029, 21496 }, /* parenright */
+    { 0x00000028, 21499 }, /* parenleft */
+    { 0x00000029, 21509 }, /* parenright */
     { 0x0000002a, 3283 }, /* asterisk */
-    { 0x0000002b, 21618 }, /* plus */
+    { 0x0000002b, 21631 }, /* plus */
     { 0x0000002c, 8762 }, /* comma */
-    { 0x0000002d, 19781 }, /* minus */
-    { 0x0000002e, 21556 }, /* period */
-    { 0x0000002f, 23829 }, /* slash */
+    { 0x0000002d, 19794 }, /* minus */
+    { 0x0000002e, 21569 }, /* period */
+    { 0x0000002f, 23842 }, /* slash */
     { 0x00000030, 0 }, /* 0 */
     { 0x00000031, 2 }, /* 1 */
     { 0x00000032, 4 }, /* 2 */
@@ -5513,11 +5515,11 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x00000038, 394 }, /* 8 */
     { 0x00000039, 396 }, /* 9 */
     { 0x0000003a, 8664 }, /* colon */
-    { 0x0000003b, 22795 }, /* semicolon */
-    { 0x0000003c, 19460 }, /* less */
+    { 0x0000003b, 22808 }, /* semicolon */
+    { 0x0000003c, 19473 }, /* less */
     { 0x0000003d, 12083 }, /* equal */
     { 0x0000003e, 13304 }, /* greater */
-    { 0x0000003f, 22226 }, /* question */
+    { 0x0000003f, 22239 }, /* question */
     { 0x00000040, 3292 }, /* at */
     { 0x00000041, 398 }, /* A */
     { 0x00000042, 3328 }, /* B */
@@ -5527,29 +5529,29 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x00000046, 12187 }, /* F */
     { 0x00000047, 12697 }, /* G */
     { 0x00000048, 14439 }, /* H */
-    { 0x00000049, 17117 }, /* I */
-    { 0x0000004a, 18162 }, /* J */
-    { 0x0000004b, 18194 }, /* K */
-    { 0x0000004c, 19160 }, /* L */
-    { 0x0000004d, 19581 }, /* M */
-    { 0x0000004e, 19991 }, /* N */
-    { 0x0000004f, 20248 }, /* O */
-    { 0x00000050, 21434 }, /* P */
-    { 0x00000051, 22217 }, /* Q */
-    { 0x00000052, 22278 }, /* R */
-    { 0x00000053, 22640 }, /* S */
-    { 0x00000054, 24355 }, /* T */
-    { 0x00000055, 25908 }, /* U */
-    { 0x00000056, 26544 }, /* V */
-    { 0x00000057, 26606 }, /* W */
-    { 0x00000058, 26692 }, /* X */
-    { 0x00000059, 31507 }, /* Y */
-    { 0x0000005a, 31635 }, /* Z */
+    { 0x00000049, 17130 }, /* I */
+    { 0x0000004a, 18175 }, /* J */
+    { 0x0000004b, 18207 }, /* K */
+    { 0x0000004c, 19173 }, /* L */
+    { 0x0000004d, 19594 }, /* M */
+    { 0x0000004e, 20004 }, /* N */
+    { 0x0000004f, 20261 }, /* O */
+    { 0x00000050, 21447 }, /* P */
+    { 0x00000051, 22230 }, /* Q */
+    { 0x00000052, 22291 }, /* R */
+    { 0x00000053, 22653 }, /* S */
+    { 0x00000054, 24368 }, /* T */
+    { 0x00000055, 25921 }, /* U */
+    { 0x00000056, 26557 }, /* V */
+    { 0x00000057, 26619 }, /* W */
+    { 0x00000058, 26705 }, /* X */
+    { 0x00000059, 31520 }, /* Y */
+    { 0x0000005a, 31648 }, /* Z */
     { 0x0000005b, 3603 }, /* bracketleft */
     { 0x0000005c, 3352 }, /* backslash */
     { 0x0000005d, 3615 }, /* bracketright */
     { 0x0000005e, 3260 }, /* asciicircum */
-    { 0x0000005f, 26407 }, /* underscore */
+    { 0x0000005f, 26420 }, /* underscore */
     { 0x00000060, 13298 }, /* grave */
     { 0x00000061, 400 }, /* a */
     { 0x00000062, 3330 }, /* b */
@@ -5559,60 +5561,60 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x00000066, 12189 }, /* f */
     { 0x00000067, 12699 }, /* g */
     { 0x00000068, 14441 }, /* h */
-    { 0x00000069, 17119 }, /* i */
-    { 0x0000006a, 18164 }, /* j */
-    { 0x0000006b, 18196 }, /* k */
-    { 0x0000006c, 19162 }, /* l */
-    { 0x0000006d, 19583 }, /* m */
-    { 0x0000006e, 19993 }, /* n */
-    { 0x0000006f, 20250 }, /* o */
-    { 0x00000070, 21436 }, /* p */
-    { 0x00000071, 22219 }, /* q */
-    { 0x00000072, 22280 }, /* r */
-    { 0x00000073, 22642 }, /* s */
-    { 0x00000074, 24357 }, /* t */
-    { 0x00000075, 25910 }, /* u */
-    { 0x00000076, 26546 }, /* v */
-    { 0x00000077, 26608 }, /* w */
-    { 0x00000078, 26694 }, /* x */
-    { 0x00000079, 31509 }, /* y */
-    { 0x0000007a, 31637 }, /* z */
+    { 0x00000069, 17132 }, /* i */
+    { 0x0000006a, 18177 }, /* j */
+    { 0x0000006b, 18209 }, /* k */
+    { 0x0000006c, 19175 }, /* l */
+    { 0x0000006d, 19596 }, /* m */
+    { 0x0000006e, 20006 }, /* n */
+    { 0x0000006f, 20263 }, /* o */
+    { 0x00000070, 21449 }, /* p */
+    { 0x00000071, 22232 }, /* q */
+    { 0x00000072, 22293 }, /* r */
+    { 0x00000073, 22655 }, /* s */
+    { 0x00000074, 24370 }, /* t */
+    { 0x00000075, 25923 }, /* u */
+    { 0x00000076, 26559 }, /* v */
+    { 0x00000077, 26621 }, /* w */
+    { 0x00000078, 26707 }, /* x */
+    { 0x00000079, 31522 }, /* y */
+    { 0x0000007a, 31650 }, /* z */
     { 0x0000007b, 3582 }, /* braceleft */
     { 0x0000007c, 3392 }, /* bar */
     { 0x0000007d, 3592 }, /* braceright */
     { 0x0000007e, 3272 }, /* asciitilde */
-    { 0x000000a0, 20126 }, /* nobreakspace */
+    { 0x000000a0, 20139 }, /* nobreakspace */
     { 0x000000a1, 12138 }, /* exclamdown */
     { 0x000000a2, 8589 }, /* cent */
-    { 0x000000a3, 23888 }, /* sterling */
+    { 0x000000a3, 23901 }, /* sterling */
     { 0x000000a4, 8848 }, /* currency */
-    { 0x000000a5, 31591 }, /* yen */
+    { 0x000000a5, 31604 }, /* yen */
     { 0x000000a6, 8389 }, /* brokenbar */
-    { 0x000000a7, 22780 }, /* section */
+    { 0x000000a7, 22793 }, /* section */
     { 0x000000a8, 11235 }, /* diaeresis */
     { 0x000000a9, 8799 }, /* copyright */
-    { 0x000000aa, 20900 }, /* ordfeminine */
+    { 0x000000aa, 20913 }, /* ordfeminine */
     { 0x000000ab, 14381 }, /* guillemetleft */
-    { 0x000000ac, 20195 }, /* notsign */
-    { 0x000000ad, 17110 }, /* hyphen */
-    { 0x000000ae, 22392 }, /* registered */
-    { 0x000000af, 19689 }, /* macron */
+    { 0x000000ac, 20208 }, /* notsign */
+    { 0x000000ad, 17123 }, /* hyphen */
+    { 0x000000ae, 22405 }, /* registered */
+    { 0x000000af, 19702 }, /* macron */
     { 0x000000b0, 11185 }, /* degree */
-    { 0x000000b1, 21623 }, /* plusminus */
-    { 0x000000b2, 25886 }, /* twosuperior */
-    { 0x000000b3, 25632 }, /* threesuperior */
+    { 0x000000b1, 21636 }, /* plusminus */
+    { 0x000000b2, 25899 }, /* twosuperior */
+    { 0x000000b3, 25645 }, /* threesuperior */
     { 0x000000b4, 820 }, /* acute */
-    { 0x000000b5, 19847 }, /* mu */
-    { 0x000000b6, 21476 }, /* paragraph */
-    { 0x000000b7, 21563 }, /* periodcentered */
+    { 0x000000b5, 19860 }, /* mu */
+    { 0x000000b6, 21489 }, /* paragraph */
+    { 0x000000b7, 21576 }, /* periodcentered */
     { 0x000000b8, 8581 }, /* cedilla */
-    { 0x000000b9, 20803 }, /* onesuperior */
-    { 0x000000ba, 20912 }, /* ordmasculine */
+    { 0x000000b9, 20816 }, /* onesuperior */
+    { 0x000000ba, 20925 }, /* ordmasculine */
     { 0x000000bb, 14395 }, /* guillemetright */
-    { 0x000000bc, 20770 }, /* onequarter */
-    { 0x000000bd, 20762 }, /* onehalf */
-    { 0x000000be, 25603 }, /* threequarters */
-    { 0x000000bf, 22235 }, /* questiondown */
+    { 0x000000bc, 20783 }, /* onequarter */
+    { 0x000000bd, 20775 }, /* onehalf */
+    { 0x000000be, 25616 }, /* threequarters */
+    { 0x000000bf, 22248 }, /* questiondown */
     { 0x000000c0, 854 }, /* Agrave */
     { 0x000000c1, 402 }, /* Aacute */
     { 0x000000c2, 622 }, /* Acircumflex */
@@ -5625,26 +5627,26 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x000000c9, 11480 }, /* Eacute */
     { 0x000000ca, 11528 }, /* Ecircumflex */
     { 0x000000cb, 11734 }, /* Ediaeresis */
-    { 0x000000cc, 17253 }, /* Igrave */
-    { 0x000000cd, 17131 }, /* Iacute */
-    { 0x000000ce, 17179 }, /* Icircumflex */
-    { 0x000000cf, 17213 }, /* Idiaeresis */
+    { 0x000000cc, 17266 }, /* Igrave */
+    { 0x000000cd, 17144 }, /* Iacute */
+    { 0x000000ce, 17192 }, /* Icircumflex */
+    { 0x000000cf, 17226 }, /* Idiaeresis */
     { 0x000000d0, 12096 }, /* ETH */
-    { 0x000000d1, 20203 }, /* Ntilde */
-    { 0x000000d2, 20575 }, /* Ograve */
-    { 0x000000d3, 20252 }, /* Oacute */
-    { 0x000000d4, 20316 }, /* Ocircumflex */
-    { 0x000000d5, 21371 }, /* Otilde */
-    { 0x000000d6, 20514 }, /* Odiaeresis */
-    { 0x000000d7, 19887 }, /* multiply */
-    { 0x000000d8, 21357 }, /* Oslash */
-    { 0x000000d9, 26032 }, /* Ugrave */
-    { 0x000000da, 25912 }, /* Uacute */
-    { 0x000000db, 25960 }, /* Ucircumflex */
-    { 0x000000dc, 25984 }, /* Udiaeresis */
-    { 0x000000dd, 31511 }, /* Yacute */
-    { 0x000000de, 25560 }, /* THORN */
-    { 0x000000df, 23881 }, /* ssharp */
+    { 0x000000d1, 20216 }, /* Ntilde */
+    { 0x000000d2, 20588 }, /* Ograve */
+    { 0x000000d3, 20265 }, /* Oacute */
+    { 0x000000d4, 20329 }, /* Ocircumflex */
+    { 0x000000d5, 21384 }, /* Otilde */
+    { 0x000000d6, 20527 }, /* Odiaeresis */
+    { 0x000000d7, 19900 }, /* multiply */
+    { 0x000000d8, 21370 }, /* Oslash */
+    { 0x000000d9, 26045 }, /* Ugrave */
+    { 0x000000da, 25925 }, /* Uacute */
+    { 0x000000db, 25973 }, /* Ucircumflex */
+    { 0x000000dc, 25997 }, /* Udiaeresis */
+    { 0x000000dd, 31524 }, /* Yacute */
+    { 0x000000de, 25573 }, /* THORN */
+    { 0x000000df, 23894 }, /* ssharp */
     { 0x000000e0, 861 }, /* agrave */
     { 0x000000e1, 409 }, /* aacute */
     { 0x000000e2, 634 }, /* acircumflex */
@@ -5657,204 +5659,204 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x000000e9, 11487 }, /* eacute */
     { 0x000000ea, 11540 }, /* ecircumflex */
     { 0x000000eb, 11745 }, /* ediaeresis */
-    { 0x000000ec, 17260 }, /* igrave */
-    { 0x000000ed, 17138 }, /* iacute */
-    { 0x000000ee, 17191 }, /* icircumflex */
-    { 0x000000ef, 17224 }, /* idiaeresis */
+    { 0x000000ec, 17273 }, /* igrave */
+    { 0x000000ed, 17151 }, /* iacute */
+    { 0x000000ee, 17204 }, /* icircumflex */
+    { 0x000000ef, 17237 }, /* idiaeresis */
     { 0x000000f0, 12104 }, /* eth */
-    { 0x000000f1, 20210 }, /* ntilde */
-    { 0x000000f2, 20582 }, /* ograve */
-    { 0x000000f3, 20259 }, /* oacute */
-    { 0x000000f4, 20328 }, /* ocircumflex */
-    { 0x000000f5, 21378 }, /* otilde */
-    { 0x000000f6, 20525 }, /* odiaeresis */
+    { 0x000000f1, 20223 }, /* ntilde */
+    { 0x000000f2, 20595 }, /* ograve */
+    { 0x000000f3, 20272 }, /* oacute */
+    { 0x000000f4, 20341 }, /* ocircumflex */
+    { 0x000000f5, 21391 }, /* otilde */
+    { 0x000000f6, 20538 }, /* odiaeresis */
     { 0x000000f7, 11274 }, /* division */
-    { 0x000000f8, 21364 }, /* oslash */
-    { 0x000000f9, 26039 }, /* ugrave */
-    { 0x000000fa, 25919 }, /* uacute */
-    { 0x000000fb, 25972 }, /* ucircumflex */
-    { 0x000000fc, 25995 }, /* udiaeresis */
-    { 0x000000fd, 31518 }, /* yacute */
-    { 0x000000fe, 25572 }, /* thorn */
-    { 0x000000ff, 31569 }, /* ydiaeresis */
+    { 0x000000f8, 21377 }, /* oslash */
+    { 0x000000f9, 26052 }, /* ugrave */
+    { 0x000000fa, 25932 }, /* uacute */
+    { 0x000000fb, 25985 }, /* ucircumflex */
+    { 0x000000fc, 26008 }, /* udiaeresis */
+    { 0x000000fd, 31531 }, /* yacute */
+    { 0x000000fe, 25585 }, /* thorn */
+    { 0x000000ff, 31582 }, /* ydiaeresis */
     { 0x000001a1, 918 }, /* Aogonek */
     { 0x000001a2, 8383 }, /* breve */
-    { 0x000001a3, 19565 }, /* Lstroke */
-    { 0x000001a5, 19260 }, /* Lcaron */
-    { 0x000001a6, 22664 }, /* Sacute */
-    { 0x000001a9, 22678 }, /* Scaron */
-    { 0x000001aa, 22692 }, /* Scedilla */
-    { 0x000001ab, 24383 }, /* Tcaron */
-    { 0x000001ac, 31659 }, /* Zacute */
-    { 0x000001ae, 31673 }, /* Zcaron */
-    { 0x000001af, 31639 }, /* Zabovedot */
+    { 0x000001a3, 19578 }, /* Lstroke */
+    { 0x000001a5, 19273 }, /* Lcaron */
+    { 0x000001a6, 22677 }, /* Sacute */
+    { 0x000001a9, 22691 }, /* Scaron */
+    { 0x000001aa, 22705 }, /* Scedilla */
+    { 0x000001ab, 24396 }, /* Tcaron */
+    { 0x000001ac, 31672 }, /* Zacute */
+    { 0x000001ae, 31686 }, /* Zcaron */
+    { 0x000001af, 31652 }, /* Zabovedot */
     { 0x000001b1, 926 }, /* aogonek */
-    { 0x000001b2, 20568 }, /* ogonek */
-    { 0x000001b3, 19573 }, /* lstroke */
-    { 0x000001b5, 19267 }, /* lcaron */
-    { 0x000001b6, 22671 }, /* sacute */
+    { 0x000001b2, 20581 }, /* ogonek */
+    { 0x000001b3, 19586 }, /* lstroke */
+    { 0x000001b5, 19280 }, /* lcaron */
+    { 0x000001b6, 22684 }, /* sacute */
     { 0x000001b7, 8519 }, /* caron */
-    { 0x000001b9, 22685 }, /* scaron */
-    { 0x000001ba, 22701 }, /* scedilla */
-    { 0x000001bb, 24390 }, /* tcaron */
-    { 0x000001bc, 31666 }, /* zacute */
+    { 0x000001b9, 22698 }, /* scaron */
+    { 0x000001ba, 22714 }, /* scedilla */
+    { 0x000001bb, 24403 }, /* tcaron */
+    { 0x000001bc, 31679 }, /* zacute */
     { 0x000001bd, 11315 }, /* doubleacute */
-    { 0x000001be, 31680 }, /* zcaron */
-    { 0x000001bf, 31649 }, /* zabovedot */
-    { 0x000001c0, 22333 }, /* Racute */
+    { 0x000001be, 31693 }, /* zcaron */
+    { 0x000001bf, 31662 }, /* zabovedot */
+    { 0x000001c0, 22346 }, /* Racute */
     { 0x000001c3, 445 }, /* Abreve */
-    { 0x000001c5, 19195 }, /* Lacute */
+    { 0x000001c5, 19208 }, /* Lacute */
     { 0x000001c6, 8475 }, /* Cacute */
     { 0x000001c8, 8525 }, /* Ccaron */
     { 0x000001ca, 12067 }, /* Eogonek */
     { 0x000001cc, 11514 }, /* Ecaron */
     { 0x000001cf, 10447 }, /* Dcaron */
     { 0x000001d0, 11433 }, /* Dstroke */
-    { 0x000001d1, 20001 }, /* Nacute */
-    { 0x000001d2, 20025 }, /* Ncaron */
-    { 0x000001d5, 20536 }, /* Odoubleacute */
-    { 0x000001d8, 22355 }, /* Rcaron */
-    { 0x000001d9, 26513 }, /* Uring */
-    { 0x000001db, 26006 }, /* Udoubleacute */
-    { 0x000001de, 24397 }, /* Tcedilla */
-    { 0x000001e0, 22340 }, /* racute */
+    { 0x000001d1, 20014 }, /* Nacute */
+    { 0x000001d2, 20038 }, /* Ncaron */
+    { 0x000001d5, 20549 }, /* Odoubleacute */
+    { 0x000001d8, 22368 }, /* Rcaron */
+    { 0x000001d9, 26526 }, /* Uring */
+    { 0x000001db, 26019 }, /* Udoubleacute */
+    { 0x000001de, 24410 }, /* Tcedilla */
+    { 0x000001e0, 22353 }, /* racute */
     { 0x000001e3, 452 }, /* abreve */
-    { 0x000001e5, 19202 }, /* lacute */
+    { 0x000001e5, 19215 }, /* lacute */
     { 0x000001e6, 8482 }, /* cacute */
     { 0x000001e8, 8532 }, /* ccaron */
     { 0x000001ea, 12075 }, /* eogonek */
     { 0x000001ec, 11521 }, /* ecaron */
     { 0x000001ef, 10454 }, /* dcaron */
     { 0x000001f0, 11441 }, /* dstroke */
-    { 0x000001f1, 20008 }, /* nacute */
-    { 0x000001f2, 20032 }, /* ncaron */
-    { 0x000001f5, 20549 }, /* odoubleacute */
-    { 0x000001f8, 22362 }, /* rcaron */
-    { 0x000001f9, 26519 }, /* uring */
-    { 0x000001fb, 26019 }, /* udoubleacute */
-    { 0x000001fe, 24406 }, /* tcedilla */
+    { 0x000001f1, 20021 }, /* nacute */
+    { 0x000001f2, 20045 }, /* ncaron */
+    { 0x000001f5, 20562 }, /* odoubleacute */
+    { 0x000001f8, 22375 }, /* rcaron */
+    { 0x000001f9, 26532 }, /* uring */
+    { 0x000001fb, 26032 }, /* udoubleacute */
+    { 0x000001fe, 24419 }, /* tcedilla */
     { 0x000001ff, 436 }, /* abovedot */
-    { 0x000002a1, 17075 }, /* Hstroke */
+    { 0x000002a1, 17088 }, /* Hstroke */
     { 0x000002a6, 16117 }, /* Hcircumflex */
-    { 0x000002a9, 17121 }, /* Iabovedot */
+    { 0x000002a9, 17134 }, /* Iabovedot */
     { 0x000002ab, 12721 }, /* Gbreve */
-    { 0x000002ac, 18166 }, /* Jcircumflex */
-    { 0x000002b1, 17083 }, /* hstroke */
+    { 0x000002ac, 18179 }, /* Jcircumflex */
+    { 0x000002b1, 17096 }, /* hstroke */
     { 0x000002b6, 16129 }, /* hcircumflex */
-    { 0x000002b9, 17235 }, /* idotless */
+    { 0x000002b9, 17248 }, /* idotless */
     { 0x000002bb, 12728 }, /* gbreve */
-    { 0x000002bc, 18178 }, /* jcircumflex */
+    { 0x000002bc, 18191 }, /* jcircumflex */
     { 0x000002c5, 8455 }, /* Cabovedot */
     { 0x000002c6, 8557 }, /* Ccircumflex */
     { 0x000002d5, 12701 }, /* Gabovedot */
     { 0x000002d8, 12767 }, /* Gcircumflex */
-    { 0x000002dd, 25946 }, /* Ubreve */
-    { 0x000002de, 22722 }, /* Scircumflex */
+    { 0x000002dd, 25959 }, /* Ubreve */
+    { 0x000002de, 22735 }, /* Scircumflex */
     { 0x000002e5, 8465 }, /* cabovedot */
     { 0x000002e6, 8569 }, /* ccircumflex */
     { 0x000002f5, 12711 }, /* gabovedot */
     { 0x000002f8, 12779 }, /* gcircumflex */
-    { 0x000002fd, 25953 }, /* ubreve */
-    { 0x000002fe, 22734 }, /* scircumflex */
-    { 0x000003a2, 19156 }, /* kra */
-    { 0x000003a3, 22369 }, /* Rcedilla */
-    { 0x000003a5, 18148 }, /* Itilde */
-    { 0x000003a6, 19274 }, /* Lcedilla */
+    { 0x000002fd, 25966 }, /* ubreve */
+    { 0x000002fe, 22747 }, /* scircumflex */
+    { 0x000003a2, 19169 }, /* kra */
+    { 0x000003a3, 22382 }, /* Rcedilla */
+    { 0x000003a5, 18161 }, /* Itilde */
+    { 0x000003a6, 19287 }, /* Lcedilla */
     { 0x000003aa, 11871 }, /* Emacron */
     { 0x000003ab, 12749 }, /* Gcedilla */
-    { 0x000003ac, 25849 }, /* Tslash */
-    { 0x000003b3, 22378 }, /* rcedilla */
-    { 0x000003b5, 18155 }, /* itilde */
-    { 0x000003b6, 19283 }, /* lcedilla */
+    { 0x000003ac, 25862 }, /* Tslash */
+    { 0x000003b3, 22391 }, /* rcedilla */
+    { 0x000003b5, 18168 }, /* itilde */
+    { 0x000003b6, 19296 }, /* lcedilla */
     { 0x000003ba, 11879 }, /* emacron */
     { 0x000003bb, 12758 }, /* gcedilla */
-    { 0x000003bc, 25856 }, /* tslash */
+    { 0x000003bc, 25869 }, /* tslash */
     { 0x000003bd, 12015 }, /* ENG */
     { 0x000003bf, 12019 }, /* eng */
     { 0x000003c0, 892 }, /* Amacron */
-    { 0x000003c7, 17386 }, /* Iogonek */
+    { 0x000003c7, 17399 }, /* Iogonek */
     { 0x000003cc, 11460 }, /* Eabovedot */
-    { 0x000003cf, 17279 }, /* Imacron */
-    { 0x000003d1, 20039 }, /* Ncedilla */
-    { 0x000003d2, 20727 }, /* Omacron */
-    { 0x000003d3, 18827 }, /* Kcedilla */
-    { 0x000003d9, 26429 }, /* Uogonek */
-    { 0x000003dd, 26530 }, /* Utilde */
-    { 0x000003de, 26382 }, /* Umacron */
+    { 0x000003cf, 17292 }, /* Imacron */
+    { 0x000003d1, 20052 }, /* Ncedilla */
+    { 0x000003d2, 20740 }, /* Omacron */
+    { 0x000003d3, 18840 }, /* Kcedilla */
+    { 0x000003d9, 26442 }, /* Uogonek */
+    { 0x000003dd, 26543 }, /* Utilde */
+    { 0x000003de, 26395 }, /* Umacron */
     { 0x000003e0, 900 }, /* amacron */
-    { 0x000003e7, 17394 }, /* iogonek */
+    { 0x000003e7, 17407 }, /* iogonek */
     { 0x000003ec, 11470 }, /* eabovedot */
-    { 0x000003ef, 17287 }, /* imacron */
-    { 0x000003f1, 20048 }, /* ncedilla */
-    { 0x000003f2, 20735 }, /* omacron */
-    { 0x000003f3, 18836 }, /* kcedilla */
-    { 0x000003f9, 26437 }, /* uogonek */
-    { 0x000003fd, 26537 }, /* utilde */
-    { 0x000003fe, 26390 }, /* umacron */
-    { 0x0000047e, 21425 }, /* overline */
-    { 0x000004a1, 18291 }, /* kana_fullstop */
-    { 0x000004a2, 18525 }, /* kana_openingbracket */
-    { 0x000004a3, 18221 }, /* kana_closingbracket */
-    { 0x000004a4, 18241 }, /* kana_comma */
-    { 0x000004a5, 18252 }, /* kana_conjunctive */
-    { 0x000004a6, 18737 }, /* kana_WO */
-    { 0x000004a7, 18198 }, /* kana_a */
-    { 0x000004a8, 18345 }, /* kana_i */
-    { 0x000004a9, 18715 }, /* kana_u */
-    { 0x000004aa, 18269 }, /* kana_e */
-    { 0x000004ab, 18511 }, /* kana_o */
-    { 0x000004ac, 18745 }, /* kana_ya */
-    { 0x000004ad, 18777 }, /* kana_yu */
-    { 0x000004ae, 18761 }, /* kana_yo */
-    { 0x000004af, 18681 }, /* kana_tsu */
-    { 0x000004b0, 22191 }, /* prolongedsound */
-    { 0x000004b1, 18205 }, /* kana_A */
-    { 0x000004b2, 18352 }, /* kana_I */
-    { 0x000004b3, 18722 }, /* kana_U */
-    { 0x000004b4, 18276 }, /* kana_E */
-    { 0x000004b5, 18518 }, /* kana_O */
-    { 0x000004b6, 18359 }, /* kana_KA */
-    { 0x000004b7, 18375 }, /* kana_KI */
-    { 0x000004b8, 18391 }, /* kana_KU */
-    { 0x000004b9, 18367 }, /* kana_KE */
-    { 0x000004ba, 18383 }, /* kana_KO */
-    { 0x000004bb, 18585 }, /* kana_SA */
-    { 0x000004bc, 18601 }, /* kana_SHI */
-    { 0x000004bd, 18629 }, /* kana_SU */
-    { 0x000004be, 18593 }, /* kana_SE */
-    { 0x000004bf, 18621 }, /* kana_SO */
-    { 0x000004c0, 18649 }, /* kana_TA */
-    { 0x000004c1, 18212 }, /* kana_CHI */
-    { 0x000004c2, 18690 }, /* kana_TSU */
-    { 0x000004c3, 18657 }, /* kana_TE */
-    { 0x000004c4, 18673 }, /* kana_TO */
-    { 0x000004c5, 18471 }, /* kana_NA */
-    { 0x000004c6, 18487 }, /* kana_NI */
-    { 0x000004c7, 18503 }, /* kana_NU */
-    { 0x000004c8, 18479 }, /* kana_NE */
-    { 0x000004c9, 18495 }, /* kana_NO */
-    { 0x000004ca, 18305 }, /* kana_HA */
-    { 0x000004cb, 18321 }, /* kana_HI */
-    { 0x000004cc, 18283 }, /* kana_FU */
-    { 0x000004cd, 18313 }, /* kana_HE */
-    { 0x000004ce, 18329 }, /* kana_HO */
-    { 0x000004cf, 18409 }, /* kana_MA */
-    { 0x000004d0, 18425 }, /* kana_MI */
-    { 0x000004d1, 18456 }, /* kana_MU */
-    { 0x000004d2, 18417 }, /* kana_ME */
-    { 0x000004d3, 18448 }, /* kana_MO */
-    { 0x000004d4, 18753 }, /* kana_YA */
-    { 0x000004d5, 18785 }, /* kana_YU */
-    { 0x000004d6, 18769 }, /* kana_YO */
-    { 0x000004d7, 18545 }, /* kana_RA */
-    { 0x000004d8, 18561 }, /* kana_RI */
-    { 0x000004d9, 18577 }, /* kana_RU */
-    { 0x000004da, 18553 }, /* kana_RE */
-    { 0x000004db, 18569 }, /* kana_RO */
-    { 0x000004dc, 18729 }, /* kana_WA */
-    { 0x000004dd, 18464 }, /* kana_N */
-    { 0x000004de, 26580 }, /* voicedsound */
-    { 0x000004df, 22805 }, /* semivoicedsound */
+    { 0x000003ef, 17300 }, /* imacron */
+    { 0x000003f1, 20061 }, /* ncedilla */
+    { 0x000003f2, 20748 }, /* omacron */
+    { 0x000003f3, 18849 }, /* kcedilla */
+    { 0x000003f9, 26450 }, /* uogonek */
+    { 0x000003fd, 26550 }, /* utilde */
+    { 0x000003fe, 26403 }, /* umacron */
+    { 0x0000047e, 21438 }, /* overline */
+    { 0x000004a1, 18304 }, /* kana_fullstop */
+    { 0x000004a2, 18538 }, /* kana_openingbracket */
+    { 0x000004a3, 18234 }, /* kana_closingbracket */
+    { 0x000004a4, 18254 }, /* kana_comma */
+    { 0x000004a5, 18265 }, /* kana_conjunctive */
+    { 0x000004a6, 18750 }, /* kana_WO */
+    { 0x000004a7, 18211 }, /* kana_a */
+    { 0x000004a8, 18358 }, /* kana_i */
+    { 0x000004a9, 18728 }, /* kana_u */
+    { 0x000004aa, 18282 }, /* kana_e */
+    { 0x000004ab, 18524 }, /* kana_o */
+    { 0x000004ac, 18758 }, /* kana_ya */
+    { 0x000004ad, 18790 }, /* kana_yu */
+    { 0x000004ae, 18774 }, /* kana_yo */
+    { 0x000004af, 18694 }, /* kana_tsu */
+    { 0x000004b0, 22204 }, /* prolongedsound */
+    { 0x000004b1, 18218 }, /* kana_A */
+    { 0x000004b2, 18365 }, /* kana_I */
+    { 0x000004b3, 18735 }, /* kana_U */
+    { 0x000004b4, 18289 }, /* kana_E */
+    { 0x000004b5, 18531 }, /* kana_O */
+    { 0x000004b6, 18372 }, /* kana_KA */
+    { 0x000004b7, 18388 }, /* kana_KI */
+    { 0x000004b8, 18404 }, /* kana_KU */
+    { 0x000004b9, 18380 }, /* kana_KE */
+    { 0x000004ba, 18396 }, /* kana_KO */
+    { 0x000004bb, 18598 }, /* kana_SA */
+    { 0x000004bc, 18614 }, /* kana_SHI */
+    { 0x000004bd, 18642 }, /* kana_SU */
+    { 0x000004be, 18606 }, /* kana_SE */
+    { 0x000004bf, 18634 }, /* kana_SO */
+    { 0x000004c0, 18662 }, /* kana_TA */
+    { 0x000004c1, 18225 }, /* kana_CHI */
+    { 0x000004c2, 18703 }, /* kana_TSU */
+    { 0x000004c3, 18670 }, /* kana_TE */
+    { 0x000004c4, 18686 }, /* kana_TO */
+    { 0x000004c5, 18484 }, /* kana_NA */
+    { 0x000004c6, 18500 }, /* kana_NI */
+    { 0x000004c7, 18516 }, /* kana_NU */
+    { 0x000004c8, 18492 }, /* kana_NE */
+    { 0x000004c9, 18508 }, /* kana_NO */
+    { 0x000004ca, 18318 }, /* kana_HA */
+    { 0x000004cb, 18334 }, /* kana_HI */
+    { 0x000004cc, 18296 }, /* kana_FU */
+    { 0x000004cd, 18326 }, /* kana_HE */
+    { 0x000004ce, 18342 }, /* kana_HO */
+    { 0x000004cf, 18422 }, /* kana_MA */
+    { 0x000004d0, 18438 }, /* kana_MI */
+    { 0x000004d1, 18469 }, /* kana_MU */
+    { 0x000004d2, 18430 }, /* kana_ME */
+    { 0x000004d3, 18461 }, /* kana_MO */
+    { 0x000004d4, 18766 }, /* kana_YA */
+    { 0x000004d5, 18798 }, /* kana_YU */
+    { 0x000004d6, 18782 }, /* kana_YO */
+    { 0x000004d7, 18558 }, /* kana_RA */
+    { 0x000004d8, 18574 }, /* kana_RI */
+    { 0x000004d9, 18590 }, /* kana_RU */
+    { 0x000004da, 18566 }, /* kana_RE */
+    { 0x000004db, 18582 }, /* kana_RO */
+    { 0x000004dc, 18742 }, /* kana_WA */
+    { 0x000004dd, 18477 }, /* kana_N */
+    { 0x000004de, 26593 }, /* voicedsound */
+    { 0x000004df, 22818 }, /* semivoicedsound */
     { 0x000005ac, 1109 }, /* Arabic_comma */
     { 0x000005bb, 1764 }, /* Arabic_semicolon */
     { 0x000005bf, 1698 }, /* Arabic_question_mark */
@@ -5903,35 +5905,35 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x000005f0, 1515 }, /* Arabic_kasra */
     { 0x000005f1, 1781 }, /* Arabic_shadda */
     { 0x000005f2, 1808 }, /* Arabic_sukun */
-    { 0x000006a1, 22821 }, /* Serbian_dje */
-    { 0x000006a2, 19633 }, /* Macedonia_gje */
+    { 0x000006a1, 22834 }, /* Serbian_dje */
+    { 0x000006a2, 19646 }, /* Macedonia_gje */
     { 0x000006a3, 9538 }, /* Cyrillic_io */
-    { 0x000006a4, 26260 }, /* Ukrainian_ie */
-    { 0x000006a5, 19605 }, /* Macedonia_dse */
-    { 0x000006a6, 26236 }, /* Ukrainian_i */
-    { 0x000006a7, 26286 }, /* Ukrainian_yi */
+    { 0x000006a4, 26273 }, /* Ukrainian_ie */
+    { 0x000006a5, 19618 }, /* Macedonia_dse */
+    { 0x000006a6, 26249 }, /* Ukrainian_i */
+    { 0x000006a7, 26299 }, /* Ukrainian_yi */
     { 0x000006a8, 9562 }, /* Cyrillic_je */
     { 0x000006a9, 9700 }, /* Cyrillic_lje */
     { 0x000006aa, 9726 }, /* Cyrillic_nje */
-    { 0x000006ab, 22939 }, /* Serbian_tshe */
-    { 0x000006ac, 19661 }, /* Macedonia_kje */
-    { 0x000006ad, 26184 }, /* Ukrainian_ghe_with_upturn */
+    { 0x000006ab, 22952 }, /* Serbian_tshe */
+    { 0x000006ac, 19674 }, /* Macedonia_kje */
+    { 0x000006ad, 26197 }, /* Ukrainian_ghe_with_upturn */
     { 0x000006ae, 8399 }, /* Byelorussian_shortu */
     { 0x000006af, 9054 }, /* Cyrillic_dzhe */
-    { 0x000006b0, 20237 }, /* numerosign */
-    { 0x000006b1, 22833 }, /* Serbian_DJE */
-    { 0x000006b2, 19647 }, /* Macedonia_GJE */
+    { 0x000006b0, 20250 }, /* numerosign */
+    { 0x000006b1, 22846 }, /* Serbian_DJE */
+    { 0x000006b2, 19660 }, /* Macedonia_GJE */
     { 0x000006b3, 9550 }, /* Cyrillic_IO */
-    { 0x000006b4, 26273 }, /* Ukrainian_IE */
-    { 0x000006b5, 19619 }, /* Macedonia_DSE */
-    { 0x000006b6, 26248 }, /* Ukrainian_I */
-    { 0x000006b7, 26299 }, /* Ukrainian_YI */
+    { 0x000006b4, 26286 }, /* Ukrainian_IE */
+    { 0x000006b5, 19632 }, /* Macedonia_DSE */
+    { 0x000006b6, 26261 }, /* Ukrainian_I */
+    { 0x000006b7, 26312 }, /* Ukrainian_YI */
     { 0x000006b8, 9574 }, /* Cyrillic_JE */
     { 0x000006b9, 9713 }, /* Cyrillic_LJE */
     { 0x000006ba, 9739 }, /* Cyrillic_NJE */
-    { 0x000006bb, 22952 }, /* Serbian_TSHE */
-    { 0x000006bc, 19675 }, /* Macedonia_KJE */
-    { 0x000006bd, 26210 }, /* Ukrainian_GHE_WITH_UPTURN */
+    { 0x000006bb, 22965 }, /* Serbian_TSHE */
+    { 0x000006bc, 19688 }, /* Macedonia_KJE */
+    { 0x000006bd, 26223 }, /* Ukrainian_GHE_WITH_UPTURN */
     { 0x000006be, 8419 }, /* Byelorussian_SHORTU */
     { 0x000006bf, 9068 }, /* Cyrillic_DZHE */
     { 0x000006c0, 10282 }, /* Cyrillic_yu */
@@ -6069,126 +6071,126 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x000007f7, 13442 }, /* Greek_chi */
     { 0x000007f8, 14082 }, /* Greek_psi */
     { 0x000007f9, 13918 }, /* Greek_omega */
-    { 0x000008a1, 19404 }, /* leftradical */
-    { 0x000008a2, 25682 }, /* topleftradical */
+    { 0x000008a1, 19417 }, /* leftradical */
+    { 0x000008a2, 25695 }, /* topleftradical */
     { 0x000008a3, 16728 }, /* horizconnector */
-    { 0x000008a4, 25656 }, /* topintegral */
+    { 0x000008a4, 25669 }, /* topintegral */
     { 0x000008a5, 3422 }, /* botintegral */
-    { 0x000008a6, 26566 }, /* vertconnector */
-    { 0x000008a7, 25697 }, /* topleftsqbracket */
+    { 0x000008a6, 26579 }, /* vertconnector */
+    { 0x000008a7, 25710 }, /* topleftsqbracket */
     { 0x000008a8, 3448 }, /* botleftsqbracket */
-    { 0x000008a9, 25746 }, /* toprightsqbracket */
+    { 0x000008a9, 25759 }, /* toprightsqbracket */
     { 0x000008aa, 3497 }, /* botrightsqbracket */
-    { 0x000008ab, 25668 }, /* topleftparens */
+    { 0x000008ab, 25681 }, /* topleftparens */
     { 0x000008ac, 3434 }, /* botleftparens */
-    { 0x000008ad, 25731 }, /* toprightparens */
+    { 0x000008ad, 25744 }, /* toprightparens */
     { 0x000008ae, 3482 }, /* botrightparens */
-    { 0x000008af, 19354 }, /* leftmiddlecurlybrace */
-    { 0x000008b0, 22501 }, /* rightmiddlecurlybrace */
-    { 0x000008b1, 25714 }, /* topleftsummation */
+    { 0x000008af, 19367 }, /* leftmiddlecurlybrace */
+    { 0x000008b0, 22514 }, /* rightmiddlecurlybrace */
+    { 0x000008b1, 25727 }, /* topleftsummation */
     { 0x000008b2, 3465 }, /* botleftsummation */
-    { 0x000008b3, 25787 }, /* topvertsummationconnector */
+    { 0x000008b3, 25800 }, /* topvertsummationconnector */
     { 0x000008b4, 3538 }, /* botvertsummationconnector */
-    { 0x000008b5, 25764 }, /* toprightsummation */
+    { 0x000008b5, 25777 }, /* toprightsummation */
     { 0x000008b6, 3515 }, /* botrightsummation */
-    { 0x000008b7, 22523 }, /* rightmiddlesummation */
-    { 0x000008bc, 19465 }, /* lessthanequal */
-    { 0x000008bd, 20173 }, /* notequal */
+    { 0x000008b7, 22536 }, /* rightmiddlesummation */
+    { 0x000008bc, 19478 }, /* lessthanequal */
+    { 0x000008bd, 20186 }, /* notequal */
     { 0x000008be, 13312 }, /* greaterthanequal */
-    { 0x000008bf, 17361 }, /* integral */
-    { 0x000008c0, 25540 }, /* therefore */
-    { 0x000008c1, 26548 }, /* variation */
-    { 0x000008c2, 17323 }, /* infinity */
-    { 0x000008c5, 19995 }, /* nabla */
+    { 0x000008bf, 17374 }, /* integral */
+    { 0x000008c0, 25553 }, /* therefore */
+    { 0x000008c1, 26561 }, /* variation */
+    { 0x000008c2, 17336 }, /* infinity */
+    { 0x000008c5, 20008 }, /* nabla */
     { 0x000008c8, 954 }, /* approximate */
-    { 0x000008c9, 23060 }, /* similarequal */
-    { 0x000008cd, 17244 }, /* ifonlyif */
-    { 0x000008ce, 17295 }, /* implies */
-    { 0x000008cf, 17203 }, /* identical */
-    { 0x000008d6, 22347 }, /* radical */
-    { 0x000008da, 17303 }, /* includedin */
-    { 0x000008db, 17314 }, /* includes */
-    { 0x000008dc, 17370 }, /* intersection */
-    { 0x000008dd, 26423 }, /* union */
-    { 0x000008de, 19505 }, /* logicaland */
-    { 0x000008df, 19516 }, /* logicalor */
-    { 0x000008ef, 21524 }, /* partialderivative */
+    { 0x000008c9, 23073 }, /* similarequal */
+    { 0x000008cd, 17257 }, /* ifonlyif */
+    { 0x000008ce, 17308 }, /* implies */
+    { 0x000008cf, 17216 }, /* identical */
+    { 0x000008d6, 22360 }, /* radical */
+    { 0x000008da, 17316 }, /* includedin */
+    { 0x000008db, 17327 }, /* includes */
+    { 0x000008dc, 17383 }, /* intersection */
+    { 0x000008dd, 26436 }, /* union */
+    { 0x000008de, 19518 }, /* logicaland */
+    { 0x000008df, 19529 }, /* logicalor */
+    { 0x000008ef, 21537 }, /* partialderivative */
     { 0x000008f6, 12688 }, /* function */
-    { 0x000008fb, 19314 }, /* leftarrow */
-    { 0x000008fc, 26448 }, /* uparrow */
-    { 0x000008fd, 22458 }, /* rightarrow */
+    { 0x000008fb, 19327 }, /* leftarrow */
+    { 0x000008fc, 26461 }, /* uparrow */
+    { 0x000008fd, 22471 }, /* rightarrow */
     { 0x000008fe, 11364 }, /* downarrow */
     { 0x000009df, 3410 }, /* blank */
-    { 0x000009e0, 23851 }, /* soliddiamond */
+    { 0x000009e0, 23864 }, /* soliddiamond */
     { 0x000009e1, 8603 }, /* checkerboard */
-    { 0x000009e2, 17091 }, /* ht */
+    { 0x000009e2, 17104 }, /* ht */
     { 0x000009e3, 12445 }, /* ff */
     { 0x000009e4, 8809 }, /* cr */
-    { 0x000009e5, 19479 }, /* lf */
-    { 0x000009e8, 20123 }, /* nl */
-    { 0x000009e9, 26603 }, /* vt */
-    { 0x000009ea, 19550 }, /* lowrightcorner */
-    { 0x000009eb, 26477 }, /* uprightcorner */
-    { 0x000009ec, 26464 }, /* upleftcorner */
-    { 0x000009ed, 19536 }, /* lowleftcorner */
+    { 0x000009e5, 19492 }, /* lf */
+    { 0x000009e8, 20136 }, /* nl */
+    { 0x000009e9, 26616 }, /* vt */
+    { 0x000009ea, 19563 }, /* lowrightcorner */
+    { 0x000009eb, 26490 }, /* uprightcorner */
+    { 0x000009ec, 26477 }, /* upleftcorner */
+    { 0x000009ed, 19549 }, /* lowleftcorner */
     { 0x000009ee, 8812 }, /* crossinglines */
     { 0x000009ef, 16743 }, /* horizlinescan1 */
     { 0x000009f0, 16758 }, /* horizlinescan3 */
     { 0x000009f1, 16773 }, /* horizlinescan5 */
     { 0x000009f2, 16788 }, /* horizlinescan7 */
     { 0x000009f3, 16803 }, /* horizlinescan9 */
-    { 0x000009f4, 19445 }, /* leftt */
-    { 0x000009f5, 22606 }, /* rightt */
+    { 0x000009f4, 19458 }, /* leftt */
+    { 0x000009f5, 22619 }, /* rightt */
     { 0x000009f6, 3533 }, /* bott */
-    { 0x000009f7, 25782 }, /* topt */
-    { 0x000009f8, 26558 }, /* vertbar */
+    { 0x000009f7, 25795 }, /* topt */
+    { 0x000009f8, 26571 }, /* vertbar */
     { 0x00000aa1, 11960 }, /* emspace */
     { 0x00000aa2, 12059 }, /* enspace */
     { 0x00000aa3, 11853 }, /* em3space */
     { 0x00000aa4, 11862 }, /* em4space */
     { 0x00000aa5, 11253 }, /* digitspace */
-    { 0x00000aa6, 22206 }, /* punctspace */
-    { 0x00000aa7, 25550 }, /* thinspace */
+    { 0x00000aa6, 22219 }, /* punctspace */
+    { 0x00000aa7, 25563 }, /* thinspace */
     { 0x00000aa8, 14443 }, /* hairspace */
     { 0x00000aa9, 11887 }, /* emdash */
     { 0x00000aaa, 11972 }, /* endash */
-    { 0x00000aac, 23048 }, /* signifblank */
+    { 0x00000aac, 23061 }, /* signifblank */
     { 0x00000aae, 11844 }, /* ellipsis */
     { 0x00000aaf, 11299 }, /* doubbaselinedot */
-    { 0x00000ab0, 20815 }, /* onethird */
-    { 0x00000ab1, 25898 }, /* twothirds */
-    { 0x00000ab2, 20753 }, /* onefifth */
-    { 0x00000ab3, 25863 }, /* twofifths */
-    { 0x00000ab4, 25591 }, /* threefifths */
+    { 0x00000ab0, 20828 }, /* onethird */
+    { 0x00000ab1, 25911 }, /* twothirds */
+    { 0x00000ab2, 20766 }, /* onefifth */
+    { 0x00000ab3, 25876 }, /* twofifths */
+    { 0x00000ab4, 25604 }, /* threefifths */
     { 0x00000ab5, 12639 }, /* fourfifths */
-    { 0x00000ab6, 20781 }, /* onesixth */
+    { 0x00000ab6, 20794 }, /* onesixth */
     { 0x00000ab7, 12601 }, /* fivesixths */
     { 0x00000ab8, 8506 }, /* careof */
     { 0x00000abb, 12459 }, /* figdash */
-    { 0x00000abc, 19297 }, /* leftanglebracket */
+    { 0x00000abc, 19310 }, /* leftanglebracket */
     { 0x00000abd, 11172 }, /* decimalpoint */
-    { 0x00000abe, 22440 }, /* rightanglebracket */
-    { 0x00000abf, 19729 }, /* marker */
-    { 0x00000ac3, 20743 }, /* oneeighth */
-    { 0x00000ac4, 25578 }, /* threeeighths */
+    { 0x00000abe, 22453 }, /* rightanglebracket */
+    { 0x00000abf, 19742 }, /* marker */
+    { 0x00000ac3, 20756 }, /* oneeighth */
+    { 0x00000ac4, 25591 }, /* threeeighths */
     { 0x00000ac5, 12589 }, /* fiveeighths */
-    { 0x00000ac6, 22965 }, /* seveneighths */
-    { 0x00000ac9, 25821 }, /* trademark */
-    { 0x00000aca, 23034 }, /* signaturemark */
-    { 0x00000acb, 25831 }, /* trademarkincircle */
-    { 0x00000acc, 19375 }, /* leftopentriangle */
-    { 0x00000acd, 22544 }, /* rightopentriangle */
+    { 0x00000ac6, 22978 }, /* seveneighths */
+    { 0x00000ac9, 25834 }, /* trademark */
+    { 0x00000aca, 23047 }, /* signaturemark */
+    { 0x00000acb, 25844 }, /* trademarkincircle */
+    { 0x00000acc, 19388 }, /* leftopentriangle */
+    { 0x00000acd, 22557 }, /* rightopentriangle */
     { 0x00000ace, 11922 }, /* emopencircle */
     { 0x00000acf, 11935 }, /* emopenrectangle */
-    { 0x00000ad0, 19425 }, /* leftsinglequotemark */
-    { 0x00000ad1, 22585 }, /* rightsinglequotemark */
-    { 0x00000ad2, 19334 }, /* leftdoublequotemark */
-    { 0x00000ad3, 22480 }, /* rightdoublequotemark */
-    { 0x00000ad4, 22128 }, /* prescription */
-    { 0x00000ad5, 21578 }, /* permille */
-    { 0x00000ad6, 19787 }, /* minutes */
-    { 0x00000ad7, 22772 }, /* seconds */
-    { 0x00000ad9, 19229 }, /* latincross */
+    { 0x00000ad0, 19438 }, /* leftsinglequotemark */
+    { 0x00000ad1, 22598 }, /* rightsinglequotemark */
+    { 0x00000ad2, 19347 }, /* leftdoublequotemark */
+    { 0x00000ad3, 22493 }, /* rightdoublequotemark */
+    { 0x00000ad4, 22141 }, /* prescription */
+    { 0x00000ad5, 21591 }, /* permille */
+    { 0x00000ad6, 19800 }, /* minutes */
+    { 0x00000ad7, 22785 }, /* seconds */
+    { 0x00000ad9, 19242 }, /* latincross */
     { 0x00000ada, 16687 }, /* hexagram */
     { 0x00000adb, 12487 }, /* filledrectbullet */
     { 0x00000adc, 12467 }, /* filledlefttribullet */
@@ -6197,54 +6199,54 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x00000adf, 11909 }, /* emfilledrect */
     { 0x00000ae0, 12023 }, /* enopencircbullet */
     { 0x00000ae1, 12040 }, /* enopensquarebullet */
-    { 0x00000ae2, 20842 }, /* openrectbullet */
-    { 0x00000ae3, 20884 }, /* opentribulletup */
-    { 0x00000ae4, 20866 }, /* opentribulletdown */
-    { 0x00000ae5, 20857 }, /* openstar */
+    { 0x00000ae2, 20855 }, /* openrectbullet */
+    { 0x00000ae3, 20897 }, /* opentribulletup */
+    { 0x00000ae4, 20879 }, /* opentribulletdown */
+    { 0x00000ae5, 20870 }, /* openstar */
     { 0x00000ae6, 11979 }, /* enfilledcircbullet */
     { 0x00000ae7, 11998 }, /* enfilledsqbullet */
     { 0x00000ae8, 12545 }, /* filledtribulletup */
     { 0x00000ae9, 12525 }, /* filledtribulletdown */
-    { 0x00000aea, 19392 }, /* leftpointer */
-    { 0x00000aeb, 22562 }, /* rightpointer */
+    { 0x00000aea, 19405 }, /* leftpointer */
+    { 0x00000aeb, 22575 }, /* rightpointer */
     { 0x00000aec, 8649 }, /* club */
     { 0x00000aed, 11245 }, /* diamond */
     { 0x00000aee, 16141 }, /* heart */
-    { 0x00000af0, 19716 }, /* maltesecross */
+    { 0x00000af0, 19729 }, /* maltesecross */
     { 0x00000af1, 10440 }, /* dagger */
     { 0x00000af2, 11327 }, /* doubledagger */
     { 0x00000af3, 8616 }, /* checkmark */
     { 0x00000af4, 3380 }, /* ballotcross */
-    { 0x00000af5, 19908 }, /* musicalsharp */
-    { 0x00000af6, 19896 }, /* musicalflat */
-    { 0x00000af7, 19705 }, /* malesymbol */
+    { 0x00000af5, 19921 }, /* musicalsharp */
+    { 0x00000af6, 19909 }, /* musicalflat */
+    { 0x00000af7, 19718 }, /* malesymbol */
     { 0x00000af8, 12432 }, /* femalesymbol */
-    { 0x00000af9, 24415 }, /* telephone */
-    { 0x00000afa, 24425 }, /* telephonerecorder */
-    { 0x00000afb, 21598 }, /* phonographcopyright */
+    { 0x00000af9, 24428 }, /* telephone */
+    { 0x00000afa, 24438 }, /* telephonerecorder */
+    { 0x00000afb, 21611 }, /* phonographcopyright */
     { 0x00000afc, 8513 }, /* caret */
-    { 0x00000afd, 23089 }, /* singlelowquotemark */
+    { 0x00000afd, 23102 }, /* singlelowquotemark */
     { 0x00000afe, 11340 }, /* doublelowquotemark */
     { 0x00000aff, 8857 }, /* cursor */
-    { 0x00000ba3, 19324 }, /* leftcaret */
-    { 0x00000ba6, 22469 }, /* rightcaret */
+    { 0x00000ba3, 19337 }, /* leftcaret */
+    { 0x00000ba6, 22482 }, /* rightcaret */
     { 0x00000ba8, 11374 }, /* downcaret */
-    { 0x00000ba9, 26456 }, /* upcaret */
-    { 0x00000bc0, 21385 }, /* overbar */
+    { 0x00000ba9, 26469 }, /* upcaret */
+    { 0x00000bc0, 21398 }, /* overbar */
     { 0x00000bc2, 11403 }, /* downtack */
-    { 0x00000bc3, 26491 }, /* upshoe */
+    { 0x00000bc3, 26504 }, /* upshoe */
     { 0x00000bc4, 11393 }, /* downstile */
-    { 0x00000bc6, 26398 }, /* underbar */
-    { 0x00000bca, 18190 }, /* jot */
-    { 0x00000bcc, 22221 }, /* quad */
-    { 0x00000bce, 26506 }, /* uptack */
+    { 0x00000bc6, 26411 }, /* underbar */
+    { 0x00000bca, 18203 }, /* jot */
+    { 0x00000bcc, 22234 }, /* quad */
+    { 0x00000bce, 26519 }, /* uptack */
     { 0x00000bcf, 8626 }, /* circle */
-    { 0x00000bd3, 26498 }, /* upstile */
+    { 0x00000bd3, 26511 }, /* upstile */
     { 0x00000bd6, 11384 }, /* downshoe */
-    { 0x00000bd8, 22575 }, /* rightshoe */
-    { 0x00000bda, 19416 }, /* leftshoe */
-    { 0x00000bdc, 19451 }, /* lefttack */
-    { 0x00000bfc, 22613 }, /* righttack */
+    { 0x00000bd8, 22588 }, /* rightshoe */
+    { 0x00000bda, 19429 }, /* leftshoe */
+    { 0x00000bdc, 19464 }, /* lefttack */
+    { 0x00000bfc, 22626 }, /* righttack */
     { 0x00000cdf, 16234 }, /* hebrew_doublelowline */
     { 0x00000ce0, 16147 }, /* hebrew_aleph */
     { 0x00000ce1, 16172 }, /* hebrew_bet */
@@ -6273,90 +6275,90 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x00000cf8, 16481 }, /* hebrew_resh */
     { 0x00000cf9, 16521 }, /* hebrew_shin */
     { 0x00000cfa, 16558 }, /* hebrew_taw */
-    { 0x00000da1, 24678 }, /* Thai_kokai */
-    { 0x00000da2, 24608 }, /* Thai_khokhai */
-    { 0x00000da3, 24634 }, /* Thai_khokhuat */
-    { 0x00000da4, 24648 }, /* Thai_khokhwai */
-    { 0x00000da5, 24621 }, /* Thai_khokhon */
-    { 0x00000da6, 24662 }, /* Thai_khorakhang */
-    { 0x00000da7, 24991 }, /* Thai_ngongu */
-    { 0x00000da8, 24484 }, /* Thai_chochan */
-    { 0x00000da9, 24511 }, /* Thai_choching */
-    { 0x00000daa, 24497 }, /* Thai_chochang */
-    { 0x00000dab, 25352 }, /* Thai_soso */
-    { 0x00000dac, 24525 }, /* Thai_chochoe */
-    { 0x00000dad, 25528 }, /* Thai_yoying */
-    { 0x00000dae, 24538 }, /* Thai_dochada */
-    { 0x00000daf, 25481 }, /* Thai_topatak */
-    { 0x00000db0, 25440 }, /* Thai_thothan */
-    { 0x00000db1, 25390 }, /* Thai_thonangmontho */
-    { 0x00000db2, 25409 }, /* Thai_thophuthao */
-    { 0x00000db3, 25017 }, /* Thai_nonen */
-    { 0x00000db4, 24551 }, /* Thai_dodek */
-    { 0x00000db5, 25494 }, /* Thai_totao */
-    { 0x00000db6, 25467 }, /* Thai_thothung */
-    { 0x00000db7, 25425 }, /* Thai_thothahan */
-    { 0x00000db8, 25453 }, /* Thai_thothong */
-    { 0x00000db9, 25028 }, /* Thai_nonu */
-    { 0x00000dba, 24470 }, /* Thai_bobaimai */
-    { 0x00000dbb, 25119 }, /* Thai_popla */
-    { 0x00000dbc, 25089 }, /* Thai_phophung */
-    { 0x00000dbd, 24562 }, /* Thai_fofa */
-    { 0x00000dbe, 25076 }, /* Thai_phophan */
-    { 0x00000dbf, 24572 }, /* Thai_fofan */
-    { 0x00000dc0, 25103 }, /* Thai_phosamphao */
-    { 0x00000dc1, 24981 }, /* Thai_moma */
-    { 0x00000dc2, 25517 }, /* Thai_yoyak */
-    { 0x00000dc3, 25130 }, /* Thai_rorua */
-    { 0x00000dc4, 25141 }, /* Thai_ru */
-    { 0x00000dc5, 24841 }, /* Thai_loling */
-    { 0x00000dc6, 24853 }, /* Thai_lu */
-    { 0x00000dc7, 25505 }, /* Thai_wowaen */
-    { 0x00000dc8, 25340 }, /* Thai_sosala */
-    { 0x00000dc9, 25328 }, /* Thai_sorusi */
-    { 0x00000dca, 25362 }, /* Thai_sosua */
-    { 0x00000dcb, 24583 }, /* Thai_hohip */
-    { 0x00000dcc, 24828 }, /* Thai_lochula */
-    { 0x00000dcd, 25038 }, /* Thai_oang */
-    { 0x00000dce, 24594 }, /* Thai_honokhuk */
-    { 0x00000dcf, 25048 }, /* Thai_paiyannoi */
-    { 0x00000dd0, 25149 }, /* Thai_saraa */
-    { 0x00000dd1, 24889 }, /* Thai_maihanakat */
-    { 0x00000dd2, 25160 }, /* Thai_saraaa */
-    { 0x00000dd3, 25223 }, /* Thai_saraam */
-    { 0x00000dd4, 25246 }, /* Thai_sarai */
-    { 0x00000dd5, 25257 }, /* Thai_saraii */
-    { 0x00000dd6, 25291 }, /* Thai_saraue */
-    { 0x00000dd7, 25303 }, /* Thai_sarauee */
-    { 0x00000dd8, 25280 }, /* Thai_sarau */
-    { 0x00000dd9, 25316 }, /* Thai_sarauu */
-    { 0x00000dda, 25063 }, /* Thai_phinthu */
-    { 0x00000dde, 24905 }, /* Thai_maihanakat_maitho */
-    { 0x00000ddf, 24460 }, /* Thai_baht */
-    { 0x00000de0, 25235 }, /* Thai_sarae */
-    { 0x00000de1, 25172 }, /* Thai_saraae */
-    { 0x00000de2, 25269 }, /* Thai_sarao */
-    { 0x00000de3, 25204 }, /* Thai_saraaimaimuan */
-    { 0x00000de4, 25184 }, /* Thai_saraaimaimalai */
-    { 0x00000de5, 24689 }, /* Thai_lakkhangyao */
-    { 0x00000de6, 24967 }, /* Thai_maiyamok */
-    { 0x00000de7, 24928 }, /* Thai_maitaikhu */
-    { 0x00000de8, 24878 }, /* Thai_maiek */
-    { 0x00000de9, 24943 }, /* Thai_maitho */
-    { 0x00000dea, 24955 }, /* Thai_maitri */
-    { 0x00000deb, 24861 }, /* Thai_maichattawa */
-    { 0x00000dec, 25373 }, /* Thai_thanthakhat */
-    { 0x00000ded, 25003 }, /* Thai_nikhahit */
-    { 0x00000df0, 24816 }, /* Thai_leksun */
-    { 0x00000df1, 24754 }, /* Thai_leknung */
-    { 0x00000df2, 24803 }, /* Thai_leksong */
-    { 0x00000df3, 24780 }, /* Thai_leksam */
-    { 0x00000df4, 24792 }, /* Thai_leksi */
-    { 0x00000df5, 24719 }, /* Thai_lekha */
-    { 0x00000df6, 24730 }, /* Thai_lekhok */
-    { 0x00000df7, 24706 }, /* Thai_lekchet */
-    { 0x00000df8, 24767 }, /* Thai_lekpaet */
-    { 0x00000df9, 24742 }, /* Thai_lekkao */
+    { 0x00000da1, 24691 }, /* Thai_kokai */
+    { 0x00000da2, 24621 }, /* Thai_khokhai */
+    { 0x00000da3, 24647 }, /* Thai_khokhuat */
+    { 0x00000da4, 24661 }, /* Thai_khokhwai */
+    { 0x00000da5, 24634 }, /* Thai_khokhon */
+    { 0x00000da6, 24675 }, /* Thai_khorakhang */
+    { 0x00000da7, 25004 }, /* Thai_ngongu */
+    { 0x00000da8, 24497 }, /* Thai_chochan */
+    { 0x00000da9, 24524 }, /* Thai_choching */
+    { 0x00000daa, 24510 }, /* Thai_chochang */
+    { 0x00000dab, 25365 }, /* Thai_soso */
+    { 0x00000dac, 24538 }, /* Thai_chochoe */
+    { 0x00000dad, 25541 }, /* Thai_yoying */
+    { 0x00000dae, 24551 }, /* Thai_dochada */
+    { 0x00000daf, 25494 }, /* Thai_topatak */
+    { 0x00000db0, 25453 }, /* Thai_thothan */
+    { 0x00000db1, 25403 }, /* Thai_thonangmontho */
+    { 0x00000db2, 25422 }, /* Thai_thophuthao */
+    { 0x00000db3, 25030 }, /* Thai_nonen */
+    { 0x00000db4, 24564 }, /* Thai_dodek */
+    { 0x00000db5, 25507 }, /* Thai_totao */
+    { 0x00000db6, 25480 }, /* Thai_thothung */
+    { 0x00000db7, 25438 }, /* Thai_thothahan */
+    { 0x00000db8, 25466 }, /* Thai_thothong */
+    { 0x00000db9, 25041 }, /* Thai_nonu */
+    { 0x00000dba, 24483 }, /* Thai_bobaimai */
+    { 0x00000dbb, 25132 }, /* Thai_popla */
+    { 0x00000dbc, 25102 }, /* Thai_phophung */
+    { 0x00000dbd, 24575 }, /* Thai_fofa */
+    { 0x00000dbe, 25089 }, /* Thai_phophan */
+    { 0x00000dbf, 24585 }, /* Thai_fofan */
+    { 0x00000dc0, 25116 }, /* Thai_phosamphao */
+    { 0x00000dc1, 24994 }, /* Thai_moma */
+    { 0x00000dc2, 25530 }, /* Thai_yoyak */
+    { 0x00000dc3, 25143 }, /* Thai_rorua */
+    { 0x00000dc4, 25154 }, /* Thai_ru */
+    { 0x00000dc5, 24854 }, /* Thai_loling */
+    { 0x00000dc6, 24866 }, /* Thai_lu */
+    { 0x00000dc7, 25518 }, /* Thai_wowaen */
+    { 0x00000dc8, 25353 }, /* Thai_sosala */
+    { 0x00000dc9, 25341 }, /* Thai_sorusi */
+    { 0x00000dca, 25375 }, /* Thai_sosua */
+    { 0x00000dcb, 24596 }, /* Thai_hohip */
+    { 0x00000dcc, 24841 }, /* Thai_lochula */
+    { 0x00000dcd, 25051 }, /* Thai_oang */
+    { 0x00000dce, 24607 }, /* Thai_honokhuk */
+    { 0x00000dcf, 25061 }, /* Thai_paiyannoi */
+    { 0x00000dd0, 25162 }, /* Thai_saraa */
+    { 0x00000dd1, 24902 }, /* Thai_maihanakat */
+    { 0x00000dd2, 25173 }, /* Thai_saraaa */
+    { 0x00000dd3, 25236 }, /* Thai_saraam */
+    { 0x00000dd4, 25259 }, /* Thai_sarai */
+    { 0x00000dd5, 25270 }, /* Thai_saraii */
+    { 0x00000dd6, 25304 }, /* Thai_saraue */
+    { 0x00000dd7, 25316 }, /* Thai_sarauee */
+    { 0x00000dd8, 25293 }, /* Thai_sarau */
+    { 0x00000dd9, 25329 }, /* Thai_sarauu */
+    { 0x00000dda, 25076 }, /* Thai_phinthu */
+    { 0x00000dde, 24918 }, /* Thai_maihanakat_maitho */
+    { 0x00000ddf, 24473 }, /* Thai_baht */
+    { 0x00000de0, 25248 }, /* Thai_sarae */
+    { 0x00000de1, 25185 }, /* Thai_saraae */
+    { 0x00000de2, 25282 }, /* Thai_sarao */
+    { 0x00000de3, 25217 }, /* Thai_saraaimaimuan */
+    { 0x00000de4, 25197 }, /* Thai_saraaimaimalai */
+    { 0x00000de5, 24702 }, /* Thai_lakkhangyao */
+    { 0x00000de6, 24980 }, /* Thai_maiyamok */
+    { 0x00000de7, 24941 }, /* Thai_maitaikhu */
+    { 0x00000de8, 24891 }, /* Thai_maiek */
+    { 0x00000de9, 24956 }, /* Thai_maitho */
+    { 0x00000dea, 24968 }, /* Thai_maitri */
+    { 0x00000deb, 24874 }, /* Thai_maichattawa */
+    { 0x00000dec, 25386 }, /* Thai_thanthakhat */
+    { 0x00000ded, 25016 }, /* Thai_nikhahit */
+    { 0x00000df0, 24829 }, /* Thai_leksun */
+    { 0x00000df1, 24767 }, /* Thai_leknung */
+    { 0x00000df2, 24816 }, /* Thai_leksong */
+    { 0x00000df3, 24793 }, /* Thai_leksam */
+    { 0x00000df4, 24805 }, /* Thai_leksi */
+    { 0x00000df5, 24732 }, /* Thai_lekha */
+    { 0x00000df6, 24743 }, /* Thai_lekhok */
+    { 0x00000df7, 24719 }, /* Thai_lekchet */
+    { 0x00000df8, 24780 }, /* Thai_lekpaet */
+    { 0x00000df9, 24755 }, /* Thai_lekkao */
     { 0x00000ea1, 15242 }, /* Hangul_Kiyeog */
     { 0x00000ea2, 15787 }, /* Hangul_SsangKiyeog */
     { 0x00000ea3, 15256 }, /* Hangul_KiyeogSios */
@@ -6447,10 +6449,10 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x00000ef8, 14876 }, /* Hangul_J_PanSios */
     { 0x00000ef9, 14779 }, /* Hangul_J_KkogjiDalrinIeung */
     { 0x00000efa, 15168 }, /* Hangul_J_YeorinHieuh */
-    { 0x00000eff, 18845 }, /* Korean_Won */
-    { 0x000013bc, 20562 }, /* OE */
-    { 0x000013bd, 20565 }, /* oe */
-    { 0x000013be, 31580 }, /* Ydiaeresis */
+    { 0x00000eff, 18858 }, /* Korean_Won */
+    { 0x000013bc, 20575 }, /* OE */
+    { 0x000013bd, 20578 }, /* oe */
+    { 0x000013be, 31593 }, /* Ydiaeresis */
     { 0x000020ac, 12122 }, /* EuroSign */
     { 0x0000fd01, 125 }, /* 3270_Duplicate */
     { 0x0000fd02, 195 }, /* 3270_FieldMark */
@@ -6482,45 +6484,45 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x0000fd1c, 91 }, /* 3270_CursorSelect */
     { 0x0000fd1d, 293 }, /* 3270_PrintScreen */
     { 0x0000fd1e, 140 }, /* 3270_Enter */
-    { 0x0000fe01, 17829 }, /* ISO_Lock */
-    { 0x0000fe02, 17712 }, /* ISO_Level2_Latch */
-    { 0x0000fe03, 17762 }, /* ISO_Level3_Shift */
-    { 0x0000fe04, 17729 }, /* ISO_Level3_Latch */
-    { 0x0000fe05, 17746 }, /* ISO_Level3_Lock */
-    { 0x0000fe06, 17617 }, /* ISO_Group_Latch */
-    { 0x0000fe07, 17633 }, /* ISO_Group_Lock */
-    { 0x0000fe08, 17874 }, /* ISO_Next_Group */
-    { 0x0000fe09, 17889 }, /* ISO_Next_Group_Lock */
-    { 0x0000fe0a, 17998 }, /* ISO_Prev_Group */
-    { 0x0000fe0b, 18013 }, /* ISO_Prev_Group_Lock */
-    { 0x0000fe0c, 17580 }, /* ISO_First_Group */
-    { 0x0000fe0d, 17596 }, /* ISO_First_Group_Lock */
-    { 0x0000fe0e, 17664 }, /* ISO_Last_Group */
-    { 0x0000fe0f, 17679 }, /* ISO_Last_Group_Lock */
-    { 0x0000fe11, 17812 }, /* ISO_Level5_Shift */
-    { 0x0000fe12, 17779 }, /* ISO_Level5_Latch */
-    { 0x0000fe13, 17796 }, /* ISO_Level5_Lock */
-    { 0x0000fe20, 17699 }, /* ISO_Left_Tab */
-    { 0x0000fe21, 17857 }, /* ISO_Move_Line_Up */
-    { 0x0000fe22, 17838 }, /* ISO_Move_Line_Down */
-    { 0x0000fe23, 17931 }, /* ISO_Partial_Line_Up */
-    { 0x0000fe24, 17909 }, /* ISO_Partial_Line_Down */
-    { 0x0000fe25, 17951 }, /* ISO_Partial_Space_Left */
-    { 0x0000fe26, 17974 }, /* ISO_Partial_Space_Right */
-    { 0x0000fe27, 18107 }, /* ISO_Set_Margin_Left */
-    { 0x0000fe28, 18127 }, /* ISO_Set_Margin_Right */
-    { 0x0000fe29, 18058 }, /* ISO_Release_Margin_Left */
-    { 0x0000fe2a, 18082 }, /* ISO_Release_Margin_Right */
-    { 0x0000fe2b, 18033 }, /* ISO_Release_Both_Margins */
-    { 0x0000fe2c, 17518 }, /* ISO_Fast_Cursor_Left */
-    { 0x0000fe2d, 17539 }, /* ISO_Fast_Cursor_Right */
-    { 0x0000fe2e, 17561 }, /* ISO_Fast_Cursor_Up */
-    { 0x0000fe2f, 17497 }, /* ISO_Fast_Cursor_Down */
-    { 0x0000fe30, 17420 }, /* ISO_Continuous_Underline */
-    { 0x0000fe31, 17445 }, /* ISO_Discontinuous_Underline */
-    { 0x0000fe32, 17473 }, /* ISO_Emphasize */
-    { 0x0000fe33, 17402 }, /* ISO_Center_Object */
-    { 0x0000fe34, 17487 }, /* ISO_Enter */
+    { 0x0000fe01, 17842 }, /* ISO_Lock */
+    { 0x0000fe02, 17725 }, /* ISO_Level2_Latch */
+    { 0x0000fe03, 17775 }, /* ISO_Level3_Shift */
+    { 0x0000fe04, 17742 }, /* ISO_Level3_Latch */
+    { 0x0000fe05, 17759 }, /* ISO_Level3_Lock */
+    { 0x0000fe06, 17630 }, /* ISO_Group_Latch */
+    { 0x0000fe07, 17646 }, /* ISO_Group_Lock */
+    { 0x0000fe08, 17887 }, /* ISO_Next_Group */
+    { 0x0000fe09, 17902 }, /* ISO_Next_Group_Lock */
+    { 0x0000fe0a, 18011 }, /* ISO_Prev_Group */
+    { 0x0000fe0b, 18026 }, /* ISO_Prev_Group_Lock */
+    { 0x0000fe0c, 17593 }, /* ISO_First_Group */
+    { 0x0000fe0d, 17609 }, /* ISO_First_Group_Lock */
+    { 0x0000fe0e, 17677 }, /* ISO_Last_Group */
+    { 0x0000fe0f, 17692 }, /* ISO_Last_Group_Lock */
+    { 0x0000fe11, 17825 }, /* ISO_Level5_Shift */
+    { 0x0000fe12, 17792 }, /* ISO_Level5_Latch */
+    { 0x0000fe13, 17809 }, /* ISO_Level5_Lock */
+    { 0x0000fe20, 17712 }, /* ISO_Left_Tab */
+    { 0x0000fe21, 17870 }, /* ISO_Move_Line_Up */
+    { 0x0000fe22, 17851 }, /* ISO_Move_Line_Down */
+    { 0x0000fe23, 17944 }, /* ISO_Partial_Line_Up */
+    { 0x0000fe24, 17922 }, /* ISO_Partial_Line_Down */
+    { 0x0000fe25, 17964 }, /* ISO_Partial_Space_Left */
+    { 0x0000fe26, 17987 }, /* ISO_Partial_Space_Right */
+    { 0x0000fe27, 18120 }, /* ISO_Set_Margin_Left */
+    { 0x0000fe28, 18140 }, /* ISO_Set_Margin_Right */
+    { 0x0000fe29, 18071 }, /* ISO_Release_Margin_Left */
+    { 0x0000fe2a, 18095 }, /* ISO_Release_Margin_Right */
+    { 0x0000fe2b, 18046 }, /* ISO_Release_Both_Margins */
+    { 0x0000fe2c, 17531 }, /* ISO_Fast_Cursor_Left */
+    { 0x0000fe2d, 17552 }, /* ISO_Fast_Cursor_Right */
+    { 0x0000fe2e, 17574 }, /* ISO_Fast_Cursor_Up */
+    { 0x0000fe2f, 17510 }, /* ISO_Fast_Cursor_Down */
+    { 0x0000fe30, 17433 }, /* ISO_Continuous_Underline */
+    { 0x0000fe31, 17458 }, /* ISO_Discontinuous_Underline */
+    { 0x0000fe32, 17486 }, /* ISO_Emphasize */
+    { 0x0000fe33, 17415 }, /* ISO_Center_Object */
+    { 0x0000fe34, 17500 }, /* ISO_Enter */
     { 0x0000fe50, 10894 }, /* dead_grave */
     { 0x0000fe51, 10590 }, /* dead_acute */
     { 0x0000fe52, 10790 }, /* dead_circumflex */
@@ -6555,14 +6557,14 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x0000fe6f, 10806 }, /* dead_currency */
     { 0x0000fe70, 583 }, /* AccessX_Enable */
     { 0x0000fe71, 598 }, /* AccessX_Feedback_Enable */
-    { 0x0000fe72, 22403 }, /* RepeatKeys_Enable */
-    { 0x0000fe73, 23835 }, /* SlowKeys_Enable */
+    { 0x0000fe72, 22416 }, /* RepeatKeys_Enable */
+    { 0x0000fe73, 23848 }, /* SlowKeys_Enable */
     { 0x0000fe74, 3564 }, /* BounceKeys_Enable */
-    { 0x0000fe75, 23897 }, /* StickyKeys_Enable */
-    { 0x0000fe76, 19830 }, /* MouseKeys_Enable */
-    { 0x0000fe77, 19807 }, /* MouseKeys_Accel_Enable */
-    { 0x0000fe78, 21393 }, /* Overlay1_Enable */
-    { 0x0000fe79, 21409 }, /* Overlay2_Enable */
+    { 0x0000fe75, 23910 }, /* StickyKeys_Enable */
+    { 0x0000fe76, 19843 }, /* MouseKeys_Enable */
+    { 0x0000fe77, 19820 }, /* MouseKeys_Accel_Enable */
+    { 0x0000fe78, 21406 }, /* Overlay1_Enable */
+    { 0x0000fe79, 21422 }, /* Overlay2_Enable */
     { 0x0000fe7a, 3309 }, /* AudibleBell_Enable */
     { 0x0000fe80, 10507 }, /* dead_a */
     { 0x0000fe81, 10514 }, /* dead_A */
@@ -6585,64 +6587,64 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x0000fea4, 8447 }, /* C_h */
     { 0x0000fea5, 8451 }, /* C_H */
     { 0x0000fed0, 12568 }, /* First_Virtual_Screen */
-    { 0x0000fed1, 22141 }, /* Prev_Virtual_Screen */
-    { 0x0000fed2, 20076 }, /* Next_Virtual_Screen */
-    { 0x0000fed4, 19209 }, /* Last_Virtual_Screen */
-    { 0x0000fed5, 24443 }, /* Terminate_Server */
-    { 0x0000fee0, 22059 }, /* Pointer_Left */
-    { 0x0000fee1, 22072 }, /* Pointer_Right */
-    { 0x0000fee2, 22086 }, /* Pointer_Up */
-    { 0x0000fee3, 21904 }, /* Pointer_Down */
-    { 0x0000fee4, 22097 }, /* Pointer_UpLeft */
-    { 0x0000fee5, 22112 }, /* Pointer_UpRight */
-    { 0x0000fee6, 21917 }, /* Pointer_DownLeft */
-    { 0x0000fee7, 21934 }, /* Pointer_DownRight */
-    { 0x0000fee8, 21732 }, /* Pointer_Button_Dflt */
-    { 0x0000fee9, 21652 }, /* Pointer_Button1 */
-    { 0x0000feea, 21668 }, /* Pointer_Button2 */
-    { 0x0000feeb, 21684 }, /* Pointer_Button3 */
-    { 0x0000feec, 21700 }, /* Pointer_Button4 */
-    { 0x0000feed, 21716 }, /* Pointer_Button5 */
-    { 0x0000feee, 21842 }, /* Pointer_DblClick_Dflt */
-    { 0x0000feef, 21752 }, /* Pointer_DblClick1 */
-    { 0x0000fef0, 21770 }, /* Pointer_DblClick2 */
-    { 0x0000fef1, 21788 }, /* Pointer_DblClick3 */
-    { 0x0000fef2, 21806 }, /* Pointer_DblClick4 */
-    { 0x0000fef3, 21824 }, /* Pointer_DblClick5 */
-    { 0x0000fef4, 22022 }, /* Pointer_Drag_Dflt */
-    { 0x0000fef5, 21952 }, /* Pointer_Drag1 */
-    { 0x0000fef6, 21966 }, /* Pointer_Drag2 */
-    { 0x0000fef7, 21980 }, /* Pointer_Drag3 */
-    { 0x0000fef8, 21994 }, /* Pointer_Drag4 */
-    { 0x0000fef9, 22040 }, /* Pointer_EnableKeys */
-    { 0x0000fefa, 21633 }, /* Pointer_Accelerate */
-    { 0x0000fefb, 21864 }, /* Pointer_DfltBtnNext */
-    { 0x0000fefc, 21884 }, /* Pointer_DfltBtnPrev */
-    { 0x0000fefd, 22008 }, /* Pointer_Drag5 */
+    { 0x0000fed1, 22154 }, /* Prev_Virtual_Screen */
+    { 0x0000fed2, 20089 }, /* Next_Virtual_Screen */
+    { 0x0000fed4, 19222 }, /* Last_Virtual_Screen */
+    { 0x0000fed5, 24456 }, /* Terminate_Server */
+    { 0x0000fee0, 22072 }, /* Pointer_Left */
+    { 0x0000fee1, 22085 }, /* Pointer_Right */
+    { 0x0000fee2, 22099 }, /* Pointer_Up */
+    { 0x0000fee3, 21917 }, /* Pointer_Down */
+    { 0x0000fee4, 22110 }, /* Pointer_UpLeft */
+    { 0x0000fee5, 22125 }, /* Pointer_UpRight */
+    { 0x0000fee6, 21930 }, /* Pointer_DownLeft */
+    { 0x0000fee7, 21947 }, /* Pointer_DownRight */
+    { 0x0000fee8, 21745 }, /* Pointer_Button_Dflt */
+    { 0x0000fee9, 21665 }, /* Pointer_Button1 */
+    { 0x0000feea, 21681 }, /* Pointer_Button2 */
+    { 0x0000feeb, 21697 }, /* Pointer_Button3 */
+    { 0x0000feec, 21713 }, /* Pointer_Button4 */
+    { 0x0000feed, 21729 }, /* Pointer_Button5 */
+    { 0x0000feee, 21855 }, /* Pointer_DblClick_Dflt */
+    { 0x0000feef, 21765 }, /* Pointer_DblClick1 */
+    { 0x0000fef0, 21783 }, /* Pointer_DblClick2 */
+    { 0x0000fef1, 21801 }, /* Pointer_DblClick3 */
+    { 0x0000fef2, 21819 }, /* Pointer_DblClick4 */
+    { 0x0000fef3, 21837 }, /* Pointer_DblClick5 */
+    { 0x0000fef4, 22035 }, /* Pointer_Drag_Dflt */
+    { 0x0000fef5, 21965 }, /* Pointer_Drag1 */
+    { 0x0000fef6, 21979 }, /* Pointer_Drag2 */
+    { 0x0000fef7, 21993 }, /* Pointer_Drag3 */
+    { 0x0000fef8, 22007 }, /* Pointer_Drag4 */
+    { 0x0000fef9, 22053 }, /* Pointer_EnableKeys */
+    { 0x0000fefa, 21646 }, /* Pointer_Accelerate */
+    { 0x0000fefb, 21877 }, /* Pointer_DfltBtnNext */
+    { 0x0000fefc, 21897 }, /* Pointer_DfltBtnPrev */
+    { 0x0000fefd, 22021 }, /* Pointer_Drag5 */
     { 0x0000ff08, 3362 }, /* BackSpace */
-    { 0x0000ff09, 24359 }, /* Tab */
-    { 0x0000ff0a, 19482 }, /* Linefeed */
+    { 0x0000ff09, 24372 }, /* Tab */
+    { 0x0000ff0a, 19495 }, /* Linefeed */
     { 0x0000ff0b, 8633 }, /* Clear */
-    { 0x0000ff0d, 22427 }, /* Return */
-    { 0x0000ff13, 21542 }, /* Pause */
-    { 0x0000ff14, 22760 }, /* Scroll_Lock */
-    { 0x0000ff15, 24340 }, /* Sys_Req */
+    { 0x0000ff0d, 22440 }, /* Return */
+    { 0x0000ff13, 21555 }, /* Pause */
+    { 0x0000ff14, 22773 }, /* Scroll_Lock */
+    { 0x0000ff15, 24353 }, /* Sys_Req */
     { 0x0000ff1b, 12089 }, /* Escape */
-    { 0x0000ff20, 19859 }, /* Multi_key */
-    { 0x0000ff21, 18793 }, /* Kanji */
-    { 0x0000ff22, 19850 }, /* Muhenkan */
+    { 0x0000ff20, 19872 }, /* Multi_key */
+    { 0x0000ff21, 18806 }, /* Kanji */
+    { 0x0000ff22, 19863 }, /* Muhenkan */
     { 0x0000ff23, 16675 }, /* Henkan_Mode */
-    { 0x0000ff24, 22623 }, /* Romaji */
+    { 0x0000ff24, 22636 }, /* Romaji */
     { 0x0000ff25, 16696 }, /* Hiragana */
-    { 0x0000ff26, 18818 }, /* Katakana */
+    { 0x0000ff26, 18831 }, /* Katakana */
     { 0x0000ff27, 16705 }, /* Hiragana_Katakana */
-    { 0x0000ff28, 31696 }, /* Zenkaku */
+    { 0x0000ff28, 31709 }, /* Zenkaku */
     { 0x0000ff29, 16109 }, /* Hankaku */
-    { 0x0000ff2a, 31704 }, /* Zenkaku_Hankaku */
-    { 0x0000ff2b, 25813 }, /* Touroku */
-    { 0x0000ff2c, 19746 }, /* Massyo */
-    { 0x0000ff2d, 18399 }, /* Kana_Lock */
-    { 0x0000ff2e, 18610 }, /* Kana_Shift */
+    { 0x0000ff2a, 31717 }, /* Zenkaku_Hankaku */
+    { 0x0000ff2b, 25826 }, /* Touroku */
+    { 0x0000ff2c, 19759 }, /* Massyo */
+    { 0x0000ff2d, 18412 }, /* Kana_Lock */
+    { 0x0000ff2e, 18623 }, /* Kana_Shift */
     { 0x0000ff2f, 11811 }, /* Eisu_Shift */
     { 0x0000ff30, 11822 }, /* Eisu_toggle */
     { 0x0000ff31, 14453 }, /* Hangul */
@@ -6656,67 +6658,67 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x0000ff39, 14506 }, /* Hangul_Banja */
     { 0x0000ff3a, 15481 }, /* Hangul_PreHanja */
     { 0x0000ff3b, 15464 }, /* Hangul_PostHanja */
-    { 0x0000ff3c, 23073 }, /* SingleCandidate */
-    { 0x0000ff3d, 19869 }, /* MultipleCandidate */
-    { 0x0000ff3e, 22161 }, /* PreviousCandidate */
+    { 0x0000ff3c, 23086 }, /* SingleCandidate */
+    { 0x0000ff3d, 19882 }, /* MultipleCandidate */
+    { 0x0000ff3e, 22174 }, /* PreviousCandidate */
     { 0x0000ff3f, 15735 }, /* Hangul_Special */
     { 0x0000ff50, 16723 }, /* Home */
-    { 0x0000ff51, 19292 }, /* Left */
-    { 0x0000ff52, 26445 }, /* Up */
-    { 0x0000ff53, 22434 }, /* Right */
+    { 0x0000ff51, 19305 }, /* Left */
+    { 0x0000ff52, 26458 }, /* Up */
+    { 0x0000ff53, 22447 }, /* Right */
     { 0x0000ff54, 11359 }, /* Down */
-    { 0x0000ff55, 22185 }, /* Prior */
-    { 0x0000ff56, 20071 }, /* Next */
+    { 0x0000ff55, 22198 }, /* Prior */
+    { 0x0000ff56, 20084 }, /* Next */
     { 0x0000ff57, 11968 }, /* End */
     { 0x0000ff58, 3404 }, /* Begin */
-    { 0x0000ff60, 22788 }, /* Select */
-    { 0x0000ff61, 22179 }, /* Print */
+    { 0x0000ff60, 22801 }, /* Select */
+    { 0x0000ff61, 22192 }, /* Print */
     { 0x0000ff62, 12149 }, /* Execute */
-    { 0x0000ff63, 17332 }, /* Insert */
-    { 0x0000ff65, 26418 }, /* Undo */
-    { 0x0000ff66, 22387 }, /* Redo */
-    { 0x0000ff67, 19753 }, /* Menu */
+    { 0x0000ff63, 17345 }, /* Insert */
+    { 0x0000ff65, 26431 }, /* Undo */
+    { 0x0000ff66, 22400 }, /* Redo */
+    { 0x0000ff67, 19766 }, /* Menu */
     { 0x0000ff68, 12563 }, /* Find */
     { 0x0000ff69, 8489 }, /* Cancel */
     { 0x0000ff6a, 16663 }, /* Help */
     { 0x0000ff6b, 8377 }, /* Break */
-    { 0x0000ff7e, 19795 }, /* Mode_switch */
-    { 0x0000ff7f, 20217 }, /* Num_Lock */
-    { 0x0000ff80, 19122 }, /* KP_Space */
-    { 0x0000ff89, 19143 }, /* KP_Tab */
-    { 0x0000ff8d, 18979 }, /* KP_Enter */
-    { 0x0000ff91, 18997 }, /* KP_F1 */
-    { 0x0000ff92, 19003 }, /* KP_F2 */
-    { 0x0000ff93, 19009 }, /* KP_F3 */
-    { 0x0000ff94, 19015 }, /* KP_F4 */
-    { 0x0000ff95, 19021 }, /* KP_Home */
-    { 0x0000ff96, 19039 }, /* KP_Left */
-    { 0x0000ff97, 19150 }, /* KP_Up */
-    { 0x0000ff98, 19100 }, /* KP_Right */
-    { 0x0000ff99, 18964 }, /* KP_Down */
-    { 0x0000ff9a, 19091 }, /* KP_Prior */
-    { 0x0000ff9b, 19059 }, /* KP_Next */
-    { 0x0000ff9c, 18972 }, /* KP_End */
-    { 0x0000ff9d, 18924 }, /* KP_Begin */
-    { 0x0000ff9e, 19029 }, /* KP_Insert */
-    { 0x0000ff9f, 18944 }, /* KP_Delete */
-    { 0x0000ffaa, 19047 }, /* KP_Multiply */
-    { 0x0000ffab, 18906 }, /* KP_Add */
-    { 0x0000ffac, 19109 }, /* KP_Separator */
-    { 0x0000ffad, 19131 }, /* KP_Subtract */
-    { 0x0000ffae, 18933 }, /* KP_Decimal */
-    { 0x0000ffaf, 18954 }, /* KP_Divide */
-    { 0x0000ffb0, 18856 }, /* KP_0 */
-    { 0x0000ffb1, 18861 }, /* KP_1 */
-    { 0x0000ffb2, 18866 }, /* KP_2 */
-    { 0x0000ffb3, 18871 }, /* KP_3 */
-    { 0x0000ffb4, 18876 }, /* KP_4 */
-    { 0x0000ffb5, 18881 }, /* KP_5 */
-    { 0x0000ffb6, 18886 }, /* KP_6 */
-    { 0x0000ffb7, 18891 }, /* KP_7 */
-    { 0x0000ffb8, 18896 }, /* KP_8 */
-    { 0x0000ffb9, 18901 }, /* KP_9 */
-    { 0x0000ffbd, 18988 }, /* KP_Equal */
+    { 0x0000ff7e, 19808 }, /* Mode_switch */
+    { 0x0000ff7f, 20230 }, /* Num_Lock */
+    { 0x0000ff80, 19135 }, /* KP_Space */
+    { 0x0000ff89, 19156 }, /* KP_Tab */
+    { 0x0000ff8d, 18992 }, /* KP_Enter */
+    { 0x0000ff91, 19010 }, /* KP_F1 */
+    { 0x0000ff92, 19016 }, /* KP_F2 */
+    { 0x0000ff93, 19022 }, /* KP_F3 */
+    { 0x0000ff94, 19028 }, /* KP_F4 */
+    { 0x0000ff95, 19034 }, /* KP_Home */
+    { 0x0000ff96, 19052 }, /* KP_Left */
+    { 0x0000ff97, 19163 }, /* KP_Up */
+    { 0x0000ff98, 19113 }, /* KP_Right */
+    { 0x0000ff99, 18977 }, /* KP_Down */
+    { 0x0000ff9a, 19104 }, /* KP_Prior */
+    { 0x0000ff9b, 19072 }, /* KP_Next */
+    { 0x0000ff9c, 18985 }, /* KP_End */
+    { 0x0000ff9d, 18937 }, /* KP_Begin */
+    { 0x0000ff9e, 19042 }, /* KP_Insert */
+    { 0x0000ff9f, 18957 }, /* KP_Delete */
+    { 0x0000ffaa, 19060 }, /* KP_Multiply */
+    { 0x0000ffab, 18919 }, /* KP_Add */
+    { 0x0000ffac, 19122 }, /* KP_Separator */
+    { 0x0000ffad, 19144 }, /* KP_Subtract */
+    { 0x0000ffae, 18946 }, /* KP_Decimal */
+    { 0x0000ffaf, 18967 }, /* KP_Divide */
+    { 0x0000ffb0, 18869 }, /* KP_0 */
+    { 0x0000ffb1, 18874 }, /* KP_1 */
+    { 0x0000ffb2, 18879 }, /* KP_2 */
+    { 0x0000ffb3, 18884 }, /* KP_3 */
+    { 0x0000ffb4, 18889 }, /* KP_4 */
+    { 0x0000ffb5, 18894 }, /* KP_5 */
+    { 0x0000ffb6, 18899 }, /* KP_6 */
+    { 0x0000ffb7, 18904 }, /* KP_7 */
+    { 0x0000ffb8, 18909 }, /* KP_8 */
+    { 0x0000ffb9, 18914 }, /* KP_9 */
+    { 0x0000ffbd, 19001 }, /* KP_Equal */
     { 0x0000ffbe, 12191 }, /* F1 */
     { 0x0000ffbf, 12234 }, /* F2 */
     { 0x0000ffc0, 12277 }, /* F3 */
@@ -6752,20 +6754,20 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x0000ffde, 12292 }, /* F33 */
     { 0x0000ffdf, 12296 }, /* F34 */
     { 0x0000ffe0, 12300 }, /* F35 */
-    { 0x0000ffe1, 23007 }, /* Shift_L */
-    { 0x0000ffe2, 23026 }, /* Shift_R */
+    { 0x0000ffe1, 23020 }, /* Shift_L */
+    { 0x0000ffe2, 23039 }, /* Shift_R */
     { 0x0000ffe3, 8779 }, /* Control_L */
     { 0x0000ffe4, 8789 }, /* Control_R */
     { 0x0000ffe5, 8496 }, /* Caps_Lock */
-    { 0x0000ffe6, 23015 }, /* Shift_Lock */
-    { 0x0000ffe7, 19758 }, /* Meta_L */
-    { 0x0000ffe8, 19765 }, /* Meta_R */
+    { 0x0000ffe6, 23028 }, /* Shift_Lock */
+    { 0x0000ffe7, 19771 }, /* Meta_L */
+    { 0x0000ffe8, 19778 }, /* Meta_R */
     { 0x0000ffe9, 880 }, /* Alt_L */
     { 0x0000ffea, 886 }, /* Alt_R */
-    { 0x0000ffeb, 24324 }, /* Super_L */
-    { 0x0000ffec, 24332 }, /* Super_R */
-    { 0x0000ffed, 17094 }, /* Hyper_L */
-    { 0x0000ffee, 17102 }, /* Hyper_R */
+    { 0x0000ffeb, 24337 }, /* Super_L */
+    { 0x0000ffec, 24345 }, /* Super_R */
+    { 0x0000ffed, 17107 }, /* Hyper_L */
+    { 0x0000ffee, 17115 }, /* Hyper_R */
     { 0x0000fff1, 3642 }, /* braille_dot_1 */
     { 0x0000fff2, 3671 }, /* braille_dot_2 */
     { 0x0000fff3, 3685 }, /* braille_dot_3 */
@@ -6777,28 +6779,28 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x0000fff9, 3769 }, /* braille_dot_9 */
     { 0x0000fffa, 3656 }, /* braille_dot_10 */
     { 0x0000ffff, 11192 }, /* Delete */
-    { 0x00ffffff, 26592 }, /* VoidSymbol */
-    { 0x0100012c, 17165 }, /* Ibreve */
-    { 0x0100012d, 17172 }, /* ibreve */
-    { 0x01000174, 26624 }, /* Wcircumflex */
-    { 0x01000175, 26636 }, /* wcircumflex */
-    { 0x01000176, 31545 }, /* Ycircumflex */
-    { 0x01000177, 31557 }, /* ycircumflex */
-    { 0x0100018f, 22710 }, /* SCHWA */
-    { 0x0100019f, 20266 }, /* Obarred */
-    { 0x010001a0, 20601 }, /* Ohorn */
-    { 0x010001a1, 20607 }, /* ohorn */
-    { 0x010001af, 26058 }, /* Uhorn */
-    { 0x010001b0, 26064 }, /* uhorn */
-    { 0x010001b5, 31747 }, /* Zstroke */
-    { 0x010001b6, 31755 }, /* zstroke */
+    { 0x00ffffff, 26605 }, /* VoidSymbol */
+    { 0x0100012c, 17178 }, /* Ibreve */
+    { 0x0100012d, 17185 }, /* ibreve */
+    { 0x01000174, 26637 }, /* Wcircumflex */
+    { 0x01000175, 26649 }, /* wcircumflex */
+    { 0x01000176, 31558 }, /* Ycircumflex */
+    { 0x01000177, 31570 }, /* ycircumflex */
+    { 0x0100018f, 22723 }, /* SCHWA */
+    { 0x0100019f, 20279 }, /* Obarred */
+    { 0x010001a0, 20614 }, /* Ohorn */
+    { 0x010001a1, 20620 }, /* ohorn */
+    { 0x010001af, 26071 }, /* Uhorn */
+    { 0x010001b0, 26077 }, /* uhorn */
+    { 0x010001b5, 31760 }, /* Zstroke */
+    { 0x010001b6, 31768 }, /* zstroke */
     { 0x010001b7, 12179 }, /* EZH */
-    { 0x010001d1, 20302 }, /* Ocaron */
-    { 0x010001d2, 20309 }, /* ocaron */
+    { 0x010001d1, 20315 }, /* Ocaron */
+    { 0x010001d2, 20322 }, /* ocaron */
     { 0x010001e6, 12735 }, /* Gcaron */
     { 0x010001e7, 12742 }, /* gcaron */
-    { 0x01000259, 22716 }, /* schwa */
-    { 0x01000275, 20274 }, /* obarred */
+    { 0x01000259, 22729 }, /* schwa */
+    { 0x01000275, 20287 }, /* obarred */
     { 0x01000292, 12183 }, /* ezh */
     { 0x01000300, 8715 }, /* combining_grave */
     { 0x01000301, 8680 }, /* combining_acute */
@@ -6959,86 +6961,86 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x010006f7, 12398 }, /* Farsi_7 */
     { 0x010006f8, 12406 }, /* Farsi_8 */
     { 0x010006f9, 12414 }, /* Farsi_9 */
-    { 0x01000d82, 23545 }, /* Sinh_ng */
-    { 0x01000d83, 23339 }, /* Sinh_h2 */
-    { 0x01000d85, 23108 }, /* Sinh_a */
-    { 0x01000d86, 23115 }, /* Sinh_aa */
-    { 0x01000d87, 23132 }, /* Sinh_ae */
-    { 0x01000d88, 23149 }, /* Sinh_aee */
-    { 0x01000d89, 23355 }, /* Sinh_i */
-    { 0x01000d8a, 23370 }, /* Sinh_ii */
-    { 0x01000d8b, 23756 }, /* Sinh_u */
-    { 0x01000d8c, 23771 }, /* Sinh_uu */
-    { 0x01000d8d, 23655 }, /* Sinh_ri */
-    { 0x01000d8e, 23663 }, /* Sinh_rii */
-    { 0x01000d8f, 23464 }, /* Sinh_lu */
-    { 0x01000d90, 23481 }, /* Sinh_luu */
-    { 0x01000d91, 23282 }, /* Sinh_e */
-    { 0x01000d92, 23297 }, /* Sinh_ee */
-    { 0x01000d93, 23168 }, /* Sinh_ai */
-    { 0x01000d94, 23598 }, /* Sinh_o */
-    { 0x01000d95, 23613 }, /* Sinh_oo */
-    { 0x01000d96, 23193 }, /* Sinh_au */
-    { 0x01000d9a, 23414 }, /* Sinh_ka */
-    { 0x01000d9b, 23422 }, /* Sinh_kha */
-    { 0x01000d9c, 23322 }, /* Sinh_ga */
-    { 0x01000d9d, 23330 }, /* Sinh_gha */
-    { 0x01000d9e, 23553 }, /* Sinh_ng2 */
-    { 0x01000d9f, 23562 }, /* Sinh_nga */
-    { 0x01000da0, 23227 }, /* Sinh_ca */
-    { 0x01000da1, 23235 }, /* Sinh_cha */
-    { 0x01000da2, 23387 }, /* Sinh_ja */
-    { 0x01000da3, 23395 }, /* Sinh_jha */
-    { 0x01000da4, 23589 }, /* Sinh_nya */
-    { 0x01000da5, 23404 }, /* Sinh_jnya */
-    { 0x01000da6, 23571 }, /* Sinh_nja */
-    { 0x01000da7, 23737 }, /* Sinh_tta */
-    { 0x01000da8, 23746 }, /* Sinh_ttha */
-    { 0x01000da9, 23244 }, /* Sinh_dda */
-    { 0x01000daa, 23253 }, /* Sinh_ddha */
-    { 0x01000dab, 23580 }, /* Sinh_nna */
-    { 0x01000dac, 23525 }, /* Sinh_ndda */
-    { 0x01000dad, 23718 }, /* Sinh_tha */
-    { 0x01000dae, 23727 }, /* Sinh_thha */
-    { 0x01000daf, 23263 }, /* Sinh_dha */
-    { 0x01000db0, 23272 }, /* Sinh_dhha */
-    { 0x01000db1, 23517 }, /* Sinh_na */
-    { 0x01000db3, 23535 }, /* Sinh_ndha */
-    { 0x01000db4, 23630 }, /* Sinh_pa */
-    { 0x01000db5, 23638 }, /* Sinh_pha */
-    { 0x01000db6, 23210 }, /* Sinh_ba */
-    { 0x01000db7, 23218 }, /* Sinh_bha */
-    { 0x01000db8, 23500 }, /* Sinh_ma */
-    { 0x01000db9, 23508 }, /* Sinh_mba */
-    { 0x01000dba, 23796 }, /* Sinh_ya */
-    { 0x01000dbb, 23647 }, /* Sinh_ra */
-    { 0x01000dbd, 23447 }, /* Sinh_la */
-    { 0x01000dc0, 23788 }, /* Sinh_va */
-    { 0x01000dc1, 23699 }, /* Sinh_sha */
-    { 0x01000dc2, 23708 }, /* Sinh_ssha */
-    { 0x01000dc3, 23691 }, /* Sinh_sa */
-    { 0x01000dc4, 23347 }, /* Sinh_ha */
-    { 0x01000dc5, 23455 }, /* Sinh_lla */
-    { 0x01000dc6, 23314 }, /* Sinh_fa */
-    { 0x01000dca, 23185 }, /* Sinh_al */
-    { 0x01000dcf, 23123 }, /* Sinh_aa2 */
-    { 0x01000dd0, 23140 }, /* Sinh_ae2 */
-    { 0x01000dd1, 23158 }, /* Sinh_aee2 */
-    { 0x01000dd2, 23362 }, /* Sinh_i2 */
-    { 0x01000dd3, 23378 }, /* Sinh_ii2 */
-    { 0x01000dd4, 23763 }, /* Sinh_u2 */
-    { 0x01000dd6, 23779 }, /* Sinh_uu2 */
-    { 0x01000dd8, 23672 }, /* Sinh_ru2 */
-    { 0x01000dd9, 23289 }, /* Sinh_e2 */
-    { 0x01000dda, 23305 }, /* Sinh_ee2 */
-    { 0x01000ddb, 23176 }, /* Sinh_ai2 */
-    { 0x01000ddc, 23605 }, /* Sinh_o2 */
-    { 0x01000ddd, 23621 }, /* Sinh_oo2 */
-    { 0x01000dde, 23201 }, /* Sinh_au2 */
-    { 0x01000ddf, 23472 }, /* Sinh_lu2 */
-    { 0x01000df2, 23681 }, /* Sinh_ruu2 */
-    { 0x01000df3, 23490 }, /* Sinh_luu2 */
-    { 0x01000df4, 23431 }, /* Sinh_kunddaliya */
+    { 0x01000d82, 23558 }, /* Sinh_ng */
+    { 0x01000d83, 23352 }, /* Sinh_h2 */
+    { 0x01000d85, 23121 }, /* Sinh_a */
+    { 0x01000d86, 23128 }, /* Sinh_aa */
+    { 0x01000d87, 23145 }, /* Sinh_ae */
+    { 0x01000d88, 23162 }, /* Sinh_aee */
+    { 0x01000d89, 23368 }, /* Sinh_i */
+    { 0x01000d8a, 23383 }, /* Sinh_ii */
+    { 0x01000d8b, 23769 }, /* Sinh_u */
+    { 0x01000d8c, 23784 }, /* Sinh_uu */
+    { 0x01000d8d, 23668 }, /* Sinh_ri */
+    { 0x01000d8e, 23676 }, /* Sinh_rii */
+    { 0x01000d8f, 23477 }, /* Sinh_lu */
+    { 0x01000d90, 23494 }, /* Sinh_luu */
+    { 0x01000d91, 23295 }, /* Sinh_e */
+    { 0x01000d92, 23310 }, /* Sinh_ee */
+    { 0x01000d93, 23181 }, /* Sinh_ai */
+    { 0x01000d94, 23611 }, /* Sinh_o */
+    { 0x01000d95, 23626 }, /* Sinh_oo */
+    { 0x01000d96, 23206 }, /* Sinh_au */
+    { 0x01000d9a, 23427 }, /* Sinh_ka */
+    { 0x01000d9b, 23435 }, /* Sinh_kha */
+    { 0x01000d9c, 23335 }, /* Sinh_ga */
+    { 0x01000d9d, 23343 }, /* Sinh_gha */
+    { 0x01000d9e, 23566 }, /* Sinh_ng2 */
+    { 0x01000d9f, 23575 }, /* Sinh_nga */
+    { 0x01000da0, 23240 }, /* Sinh_ca */
+    { 0x01000da1, 23248 }, /* Sinh_cha */
+    { 0x01000da2, 23400 }, /* Sinh_ja */
+    { 0x01000da3, 23408 }, /* Sinh_jha */
+    { 0x01000da4, 23602 }, /* Sinh_nya */
+    { 0x01000da5, 23417 }, /* Sinh_jnya */
+    { 0x01000da6, 23584 }, /* Sinh_nja */
+    { 0x01000da7, 23750 }, /* Sinh_tta */
+    { 0x01000da8, 23759 }, /* Sinh_ttha */
+    { 0x01000da9, 23257 }, /* Sinh_dda */
+    { 0x01000daa, 23266 }, /* Sinh_ddha */
+    { 0x01000dab, 23593 }, /* Sinh_nna */
+    { 0x01000dac, 23538 }, /* Sinh_ndda */
+    { 0x01000dad, 23731 }, /* Sinh_tha */
+    { 0x01000dae, 23740 }, /* Sinh_thha */
+    { 0x01000daf, 23276 }, /* Sinh_dha */
+    { 0x01000db0, 23285 }, /* Sinh_dhha */
+    { 0x01000db1, 23530 }, /* Sinh_na */
+    { 0x01000db3, 23548 }, /* Sinh_ndha */
+    { 0x01000db4, 23643 }, /* Sinh_pa */
+    { 0x01000db5, 23651 }, /* Sinh_pha */
+    { 0x01000db6, 23223 }, /* Sinh_ba */
+    { 0x01000db7, 23231 }, /* Sinh_bha */
+    { 0x01000db8, 23513 }, /* Sinh_ma */
+    { 0x01000db9, 23521 }, /* Sinh_mba */
+    { 0x01000dba, 23809 }, /* Sinh_ya */
+    { 0x01000dbb, 23660 }, /* Sinh_ra */
+    { 0x01000dbd, 23460 }, /* Sinh_la */
+    { 0x01000dc0, 23801 }, /* Sinh_va */
+    { 0x01000dc1, 23712 }, /* Sinh_sha */
+    { 0x01000dc2, 23721 }, /* Sinh_ssha */
+    { 0x01000dc3, 23704 }, /* Sinh_sa */
+    { 0x01000dc4, 23360 }, /* Sinh_ha */
+    { 0x01000dc5, 23468 }, /* Sinh_lla */
+    { 0x01000dc6, 23327 }, /* Sinh_fa */
+    { 0x01000dca, 23198 }, /* Sinh_al */
+    { 0x01000dcf, 23136 }, /* Sinh_aa2 */
+    { 0x01000dd0, 23153 }, /* Sinh_ae2 */
+    { 0x01000dd1, 23171 }, /* Sinh_aee2 */
+    { 0x01000dd2, 23375 }, /* Sinh_i2 */
+    { 0x01000dd3, 23391 }, /* Sinh_ii2 */
+    { 0x01000dd4, 23776 }, /* Sinh_u2 */
+    { 0x01000dd6, 23792 }, /* Sinh_uu2 */
+    { 0x01000dd8, 23685 }, /* Sinh_ru2 */
+    { 0x01000dd9, 23302 }, /* Sinh_e2 */
+    { 0x01000dda, 23318 }, /* Sinh_ee2 */
+    { 0x01000ddb, 23189 }, /* Sinh_ai2 */
+    { 0x01000ddc, 23618 }, /* Sinh_o2 */
+    { 0x01000ddd, 23634 }, /* Sinh_oo2 */
+    { 0x01000dde, 23214 }, /* Sinh_au2 */
+    { 0x01000ddf, 23485 }, /* Sinh_lu2 */
+    { 0x01000df2, 23694 }, /* Sinh_ruu2 */
+    { 0x01000df3, 23503 }, /* Sinh_luu2 */
+    { 0x01000df4, 23444 }, /* Sinh_kunddaliya */
     { 0x010010d0, 12791 }, /* Georgian_an */
     { 0x010010d1, 12803 }, /* Georgian_ban */
     { 0x010010d2, 12907 }, /* Georgian_gan */
@@ -7084,24 +7086,24 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x01001e0b, 10416 }, /* dabovedot */
     { 0x01001e1e, 12322 }, /* Fabovedot */
     { 0x01001e1f, 12332 }, /* fabovedot */
-    { 0x01001e36, 19240 }, /* Lbelowdot */
-    { 0x01001e37, 19250 }, /* lbelowdot */
-    { 0x01001e40, 19585 }, /* Mabovedot */
-    { 0x01001e41, 19595 }, /* mabovedot */
-    { 0x01001e56, 21438 }, /* Pabovedot */
-    { 0x01001e57, 21448 }, /* pabovedot */
-    { 0x01001e60, 22644 }, /* Sabovedot */
-    { 0x01001e61, 22654 }, /* sabovedot */
-    { 0x01001e6a, 24363 }, /* Tabovedot */
-    { 0x01001e6b, 24373 }, /* tabovedot */
-    { 0x01001e80, 26670 }, /* Wgrave */
-    { 0x01001e81, 26677 }, /* wgrave */
-    { 0x01001e82, 26610 }, /* Wacute */
-    { 0x01001e83, 26617 }, /* wacute */
-    { 0x01001e84, 26648 }, /* Wdiaeresis */
-    { 0x01001e85, 26659 }, /* wdiaeresis */
-    { 0x01001e8a, 26696 }, /* Xabovedot */
-    { 0x01001e8b, 26706 }, /* xabovedot */
+    { 0x01001e36, 19253 }, /* Lbelowdot */
+    { 0x01001e37, 19263 }, /* lbelowdot */
+    { 0x01001e40, 19598 }, /* Mabovedot */
+    { 0x01001e41, 19608 }, /* mabovedot */
+    { 0x01001e56, 21451 }, /* Pabovedot */
+    { 0x01001e57, 21461 }, /* pabovedot */
+    { 0x01001e60, 22657 }, /* Sabovedot */
+    { 0x01001e61, 22667 }, /* sabovedot */
+    { 0x01001e6a, 24376 }, /* Tabovedot */
+    { 0x01001e6b, 24386 }, /* tabovedot */
+    { 0x01001e80, 26683 }, /* Wgrave */
+    { 0x01001e81, 26690 }, /* wgrave */
+    { 0x01001e82, 26623 }, /* Wacute */
+    { 0x01001e83, 26630 }, /* wacute */
+    { 0x01001e84, 26661 }, /* Wdiaeresis */
+    { 0x01001e85, 26672 }, /* wdiaeresis */
+    { 0x01001e8a, 26709 }, /* Xabovedot */
+    { 0x01001e8b, 26719 }, /* xabovedot */
     { 0x01001ea0, 416 }, /* Abelowdot */
     { 0x01001ea1, 426 }, /* abelowdot */
     { 0x01001ea2, 868 }, /* Ahook */
@@ -7142,100 +7144,100 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x01001ec5, 11709 }, /* ecircumflextilde */
     { 0x01001ec6, 11586 }, /* Ecircumflexbelowdot */
     { 0x01001ec7, 11606 }, /* ecircumflexbelowdot */
-    { 0x01001ec8, 17267 }, /* Ihook */
-    { 0x01001ec9, 17273 }, /* ihook */
-    { 0x01001eca, 17145 }, /* Ibelowdot */
-    { 0x01001ecb, 17155 }, /* ibelowdot */
-    { 0x01001ecc, 20282 }, /* Obelowdot */
-    { 0x01001ecd, 20292 }, /* obelowdot */
-    { 0x01001ece, 20589 }, /* Ohook */
-    { 0x01001ecf, 20595 }, /* ohook */
-    { 0x01001ed0, 20340 }, /* Ocircumflexacute */
-    { 0x01001ed1, 20357 }, /* ocircumflexacute */
-    { 0x01001ed2, 20414 }, /* Ocircumflexgrave */
-    { 0x01001ed3, 20431 }, /* ocircumflexgrave */
-    { 0x01001ed4, 20448 }, /* Ocircumflexhook */
-    { 0x01001ed5, 20464 }, /* ocircumflexhook */
-    { 0x01001ed6, 20480 }, /* Ocircumflextilde */
-    { 0x01001ed7, 20497 }, /* ocircumflextilde */
-    { 0x01001ed8, 20374 }, /* Ocircumflexbelowdot */
-    { 0x01001ed9, 20394 }, /* ocircumflexbelowdot */
-    { 0x01001eda, 20613 }, /* Ohornacute */
-    { 0x01001edb, 20624 }, /* ohornacute */
-    { 0x01001edc, 20663 }, /* Ohorngrave */
-    { 0x01001edd, 20674 }, /* ohorngrave */
-    { 0x01001ede, 20685 }, /* Ohornhook */
-    { 0x01001edf, 20695 }, /* ohornhook */
-    { 0x01001ee0, 20705 }, /* Ohorntilde */
-    { 0x01001ee1, 20716 }, /* ohorntilde */
-    { 0x01001ee2, 20635 }, /* Ohornbelowdot */
-    { 0x01001ee3, 20649 }, /* ohornbelowdot */
-    { 0x01001ee4, 25926 }, /* Ubelowdot */
-    { 0x01001ee5, 25936 }, /* ubelowdot */
-    { 0x01001ee6, 26046 }, /* Uhook */
-    { 0x01001ee7, 26052 }, /* uhook */
-    { 0x01001ee8, 26070 }, /* Uhornacute */
-    { 0x01001ee9, 26081 }, /* uhornacute */
-    { 0x01001eea, 26120 }, /* Uhorngrave */
-    { 0x01001eeb, 26131 }, /* uhorngrave */
-    { 0x01001eec, 26142 }, /* Uhornhook */
-    { 0x01001eed, 26152 }, /* uhornhook */
-    { 0x01001eee, 26162 }, /* Uhorntilde */
-    { 0x01001eef, 26173 }, /* uhorntilde */
-    { 0x01001ef0, 26092 }, /* Uhornbelowdot */
-    { 0x01001ef1, 26106 }, /* uhornbelowdot */
-    { 0x01001ef2, 31595 }, /* Ygrave */
-    { 0x01001ef3, 31602 }, /* ygrave */
-    { 0x01001ef4, 31525 }, /* Ybelowdot */
-    { 0x01001ef5, 31535 }, /* ybelowdot */
-    { 0x01001ef6, 31609 }, /* Yhook */
-    { 0x01001ef7, 31615 }, /* yhook */
-    { 0x01001ef8, 31621 }, /* Ytilde */
-    { 0x01001ef9, 31628 }, /* ytilde */
-    { 0x01002070, 31734 }, /* zerosuperior */
+    { 0x01001ec8, 17280 }, /* Ihook */
+    { 0x01001ec9, 17286 }, /* ihook */
+    { 0x01001eca, 17158 }, /* Ibelowdot */
+    { 0x01001ecb, 17168 }, /* ibelowdot */
+    { 0x01001ecc, 20295 }, /* Obelowdot */
+    { 0x01001ecd, 20305 }, /* obelowdot */
+    { 0x01001ece, 20602 }, /* Ohook */
+    { 0x01001ecf, 20608 }, /* ohook */
+    { 0x01001ed0, 20353 }, /* Ocircumflexacute */
+    { 0x01001ed1, 20370 }, /* ocircumflexacute */
+    { 0x01001ed2, 20427 }, /* Ocircumflexgrave */
+    { 0x01001ed3, 20444 }, /* ocircumflexgrave */
+    { 0x01001ed4, 20461 }, /* Ocircumflexhook */
+    { 0x01001ed5, 20477 }, /* ocircumflexhook */
+    { 0x01001ed6, 20493 }, /* Ocircumflextilde */
+    { 0x01001ed7, 20510 }, /* ocircumflextilde */
+    { 0x01001ed8, 20387 }, /* Ocircumflexbelowdot */
+    { 0x01001ed9, 20407 }, /* ocircumflexbelowdot */
+    { 0x01001eda, 20626 }, /* Ohornacute */
+    { 0x01001edb, 20637 }, /* ohornacute */
+    { 0x01001edc, 20676 }, /* Ohorngrave */
+    { 0x01001edd, 20687 }, /* ohorngrave */
+    { 0x01001ede, 20698 }, /* Ohornhook */
+    { 0x01001edf, 20708 }, /* ohornhook */
+    { 0x01001ee0, 20718 }, /* Ohorntilde */
+    { 0x01001ee1, 20729 }, /* ohorntilde */
+    { 0x01001ee2, 20648 }, /* Ohornbelowdot */
+    { 0x01001ee3, 20662 }, /* ohornbelowdot */
+    { 0x01001ee4, 25939 }, /* Ubelowdot */
+    { 0x01001ee5, 25949 }, /* ubelowdot */
+    { 0x01001ee6, 26059 }, /* Uhook */
+    { 0x01001ee7, 26065 }, /* uhook */
+    { 0x01001ee8, 26083 }, /* Uhornacute */
+    { 0x01001ee9, 26094 }, /* uhornacute */
+    { 0x01001eea, 26133 }, /* Uhorngrave */
+    { 0x01001eeb, 26144 }, /* uhorngrave */
+    { 0x01001eec, 26155 }, /* Uhornhook */
+    { 0x01001eed, 26165 }, /* uhornhook */
+    { 0x01001eee, 26175 }, /* Uhorntilde */
+    { 0x01001eef, 26186 }, /* uhorntilde */
+    { 0x01001ef0, 26105 }, /* Uhornbelowdot */
+    { 0x01001ef1, 26119 }, /* uhornbelowdot */
+    { 0x01001ef2, 31608 }, /* Ygrave */
+    { 0x01001ef3, 31615 }, /* ygrave */
+    { 0x01001ef4, 31538 }, /* Ybelowdot */
+    { 0x01001ef5, 31548 }, /* ybelowdot */
+    { 0x01001ef6, 31622 }, /* Yhook */
+    { 0x01001ef7, 31628 }, /* yhook */
+    { 0x01001ef8, 31634 }, /* Ytilde */
+    { 0x01001ef9, 31641 }, /* ytilde */
+    { 0x01002070, 31747 }, /* zerosuperior */
     { 0x01002074, 12664 }, /* foursuperior */
     { 0x01002075, 12626 }, /* fivesuperior */
-    { 0x01002076, 23817 }, /* sixsuperior */
-    { 0x01002077, 22993 }, /* sevensuperior */
+    { 0x01002076, 23830 }, /* sixsuperior */
+    { 0x01002077, 23006 }, /* sevensuperior */
     { 0x01002078, 11797 }, /* eightsuperior */
-    { 0x01002079, 20110 }, /* ninesuperior */
-    { 0x01002080, 31720 }, /* zerosubscript */
-    { 0x01002081, 20790 }, /* onesubscript */
-    { 0x01002082, 25873 }, /* twosubscript */
-    { 0x01002083, 25617 }, /* threesubscript */
+    { 0x01002079, 20123 }, /* ninesuperior */
+    { 0x01002080, 31733 }, /* zerosubscript */
+    { 0x01002081, 20803 }, /* onesubscript */
+    { 0x01002082, 25886 }, /* twosubscript */
+    { 0x01002083, 25630 }, /* threesubscript */
     { 0x01002084, 12650 }, /* foursubscript */
     { 0x01002085, 12612 }, /* fivesubscript */
-    { 0x01002086, 23804 }, /* sixsubscript */
-    { 0x01002087, 22978 }, /* sevensubscript */
+    { 0x01002086, 23817 }, /* sixsubscript */
+    { 0x01002087, 22991 }, /* sevensubscript */
     { 0x01002088, 11782 }, /* eightsubscript */
-    { 0x01002089, 20096 }, /* ninesubscript */
+    { 0x01002089, 20109 }, /* ninesubscript */
     { 0x010020a0, 11726 }, /* EcuSign */
     { 0x010020a1, 8670 }, /* ColonSign */
     { 0x010020a2, 8826 }, /* CruzeiroSign */
     { 0x010020a3, 12448 }, /* FFrancSign */
-    { 0x010020a4, 19496 }, /* LiraSign */
-    { 0x010020a5, 19772 }, /* MillSign */
-    { 0x010020a6, 20015 }, /* NairaSign */
-    { 0x010020a7, 21587 }, /* PesetaSign */
-    { 0x010020a8, 22630 }, /* RupeeSign */
-    { 0x010020a9, 26684 }, /* WonSign */
-    { 0x010020aa, 20057 }, /* NewSheqelSign */
+    { 0x010020a4, 19509 }, /* LiraSign */
+    { 0x010020a5, 19785 }, /* MillSign */
+    { 0x010020a6, 20028 }, /* NairaSign */
+    { 0x010020a7, 21600 }, /* PesetaSign */
+    { 0x010020a8, 22643 }, /* RupeeSign */
+    { 0x010020a9, 26697 }, /* WonSign */
+    { 0x010020aa, 20070 }, /* NewSheqelSign */
     { 0x010020ab, 11290 }, /* DongSign */
-    { 0x01002202, 21507 }, /* partdifferential */
+    { 0x01002202, 21520 }, /* partdifferential */
     { 0x01002205, 11951 }, /* emptyset */
     { 0x01002208, 11834 }, /* elementof */
-    { 0x01002209, 20160 }, /* notelementof */
+    { 0x01002209, 20173 }, /* notelementof */
     { 0x0100220b, 8768 }, /* containsas */
-    { 0x0100221a, 23870 }, /* squareroot */
+    { 0x0100221a, 23883 }, /* squareroot */
     { 0x0100221b, 8839 }, /* cuberoot */
     { 0x0100221c, 12677 }, /* fourthroot */
     { 0x0100222c, 11264 }, /* dintegral */
-    { 0x0100222d, 25646 }, /* tintegral */
+    { 0x0100222d, 25659 }, /* tintegral */
     { 0x01002235, 3396 }, /* because */
-    { 0x01002247, 20148 }, /* notapproxeq */
+    { 0x01002247, 20161 }, /* notapproxeq */
     { 0x01002248, 945 }, /* approxeq */
-    { 0x01002262, 20182 }, /* notidentical */
-    { 0x01002263, 23915 }, /* stricteq */
+    { 0x01002262, 20195 }, /* notidentical */
+    { 0x01002263, 23928 }, /* stricteq */
     { 0x01002800, 3628 }, /* braille_blank */
     { 0x01002801, 3783 }, /* braille_dots_1 */
     { 0x01002802, 6151 }, /* braille_dots_2 */
@@ -7499,7 +7501,7 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x100000ac, 17003 }, /* hpmute_asciitilde */
     { 0x100000af, 16928 }, /* hplira */
     { 0x100000be, 16874 }, /* hpguilder */
-    { 0x100000ee, 16910 }, /* hpIO */
+    { 0x100000ee, 17075 }, /* hpYdiaeresis */
     { 0x100000f6, 16935 }, /* hplongminus */
     { 0x100000fc, 16828 }, /* hpblock */
     { 0x1000fe22, 10496 }, /* Ddiaeresis */
@@ -7524,407 +7526,407 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x1000ff75, 16915 }, /* hpKP_BackTab */
     { 0x1000ff76, 12157 }, /* Ext16bit_L */
     { 0x1000ff77, 12168 }, /* Ext16bit_R */
-    { 0x1004ff02, 21017 }, /* osfCopy */
-    { 0x1004ff03, 21025 }, /* osfCut */
-    { 0x1004ff04, 21224 }, /* osfPaste */
-    { 0x1004ff07, 20961 }, /* osfBackTab */
-    { 0x1004ff08, 20948 }, /* osfBackSpace */
-    { 0x1004ff0b, 21008 }, /* osfClear */
-    { 0x1004ff1b, 21087 }, /* osfEscape */
-    { 0x1004ff31, 20937 }, /* osfAddMode */
-    { 0x1004ff32, 21258 }, /* osfPrimaryPaste */
-    { 0x1004ff33, 21274 }, /* osfQuickPaste */
-    { 0x1004ff40, 21189 }, /* osfPageLeft */
-    { 0x1004ff41, 21214 }, /* osfPageUp */
-    { 0x1004ff42, 21177 }, /* osfPageDown */
-    { 0x1004ff43, 21201 }, /* osfPageRight */
-    { 0x1004ff44, 20925 }, /* osfActivate */
-    { 0x1004ff45, 21141 }, /* osfMenuBar */
-    { 0x1004ff51, 21125 }, /* osfLeft */
-    { 0x1004ff52, 21351 }, /* osfUp */
-    { 0x1004ff53, 21311 }, /* osfRight */
-    { 0x1004ff54, 21057 }, /* osfDown */
-    { 0x1004ff57, 21076 }, /* osfEndLine */
-    { 0x1004ff58, 20985 }, /* osfBeginLine */
-    { 0x1004ff59, 21065 }, /* osfEndData */
-    { 0x1004ff5a, 20972 }, /* osfBeginData */
-    { 0x1004ff5b, 21246 }, /* osfPrevMenu */
-    { 0x1004ff5c, 21165 }, /* osfNextMenu */
-    { 0x1004ff5d, 21233 }, /* osfPrevField */
-    { 0x1004ff5e, 21152 }, /* osfNextField */
-    { 0x1004ff60, 21320 }, /* osfSelect */
-    { 0x1004ff63, 21115 }, /* osfInsert */
-    { 0x1004ff65, 21343 }, /* osfUndo */
-    { 0x1004ff67, 21133 }, /* osfMenu */
-    { 0x1004ff69, 20998 }, /* osfCancel */
-    { 0x1004ff6a, 21107 }, /* osfHelp */
-    { 0x1004ff71, 21330 }, /* osfSelectAll */
-    { 0x1004ff72, 21042 }, /* osfDeselectAll */
-    { 0x1004ff73, 21288 }, /* osfReselect */
-    { 0x1004ff74, 21097 }, /* osfExtend */
-    { 0x1004ff78, 21300 }, /* osfRestore */
-    { 0x1004ffff, 21032 }, /* osfDelete */
-    { 0x1005ff00, 24093 }, /* SunFA_Grave */
-    { 0x1005ff01, 24064 }, /* SunFA_Circum */
-    { 0x1005ff02, 24105 }, /* SunFA_Tilde */
-    { 0x1005ff03, 24038 }, /* SunFA_Acute */
-    { 0x1005ff04, 24077 }, /* SunFA_Diaeresis */
-    { 0x1005ff05, 24050 }, /* SunFA_Cedilla */
-    { 0x1005ff10, 24024 }, /* SunF36 */
-    { 0x1005ff11, 24031 }, /* SunF37 */
-    { 0x1005ff60, 24241 }, /* SunSys_Req */
-    { 0x1005ff70, 24224 }, /* SunProps */
-    { 0x1005ff71, 24125 }, /* SunFront */
-    { 0x1005ff72, 24009 }, /* SunCopy */
-    { 0x1005ff73, 24134 }, /* SunOpen */
-    { 0x1005ff74, 24164 }, /* SunPaste */
-    { 0x1005ff75, 24017 }, /* SunCut */
-    { 0x1005ff76, 24173 }, /* SunPowerSwitch */
-    { 0x1005ff77, 23945 }, /* SunAudioLowerVolume */
-    { 0x1005ff78, 23965 }, /* SunAudioMute */
-    { 0x1005ff79, 23978 }, /* SunAudioRaiseVolume */
-    { 0x1005ff7a, 24260 }, /* SunVideoDegauss */
-    { 0x1005ff7b, 24276 }, /* SunVideoLowerBrightness */
-    { 0x1005ff7c, 24300 }, /* SunVideoRaiseBrightness */
-    { 0x1005ff7d, 24188 }, /* SunPowerSwitchShift */
-    { 0x100810f4, 27386 }, /* XF86BrightnessAuto */
-    { 0x100810f5, 27913 }, /* XF86DisplayOff */
-    { 0x10081166, 28331 }, /* XF86Info */
-    { 0x10081177, 26864 }, /* XF86AspectRatio */
-    { 0x10081185, 27987 }, /* XF86DVD */
-    { 0x10081188, 26947 }, /* XF86Audio */
-    { 0x10081192, 27704 }, /* XF86ChannelUp */
-    { 0x10081193, 27688 }, /* XF86ChannelDown */
-    { 0x1008119b, 27355 }, /* XF86Break */
-    { 0x100811a0, 31300 }, /* XF86VideoPhone */
-    { 0x100811a4, 31493 }, /* XF86ZoomReset */
-    { 0x100811a6, 27995 }, /* XF86Editor */
-    { 0x100811a8, 28223 }, /* XF86GraphicsEditor */
-    { 0x100811a9, 30198 }, /* XF86Presentation */
-    { 0x100811aa, 27876 }, /* XF86Database */
-    { 0x100811ac, 31349 }, /* XF86Voicemail */
-    { 0x100811ad, 26779 }, /* XF86Addressbook */
-    { 0x100811af, 27928 }, /* XF86DisplayToggle */
-    { 0x100811b0, 30733 }, /* XF86SpellCheck */
-    { 0x100811b6, 27783 }, /* XF86ContextMenu */
-    { 0x100811b7, 29477 }, /* XF86MediaRepeat */
-    { 0x100811b8, 26735 }, /* XF8610ChannelsUp */
-    { 0x100811b9, 26716 }, /* XF8610ChannelsDown */
-    { 0x100811ba, 28320 }, /* XF86Images */
-    { 0x100811bc, 29772 }, /* XF86NotificationCenter */
-    { 0x100811bd, 30142 }, /* XF86PickupPhone */
-    { 0x100811be, 28252 }, /* XF86HangupPhone */
-    { 0x100811d0, 28114 }, /* XF86Fn */
-    { 0x100811d1, 28121 }, /* XF86Fn_Esc */
-    { 0x100811e5, 28132 }, /* XF86FnRightShift */
-    { 0x10081200, 29795 }, /* XF86Numeric0 */
-    { 0x10081201, 29808 }, /* XF86Numeric1 */
-    { 0x10081202, 29849 }, /* XF86Numeric2 */
-    { 0x10081203, 29862 }, /* XF86Numeric3 */
-    { 0x10081204, 29875 }, /* XF86Numeric4 */
-    { 0x10081205, 29888 }, /* XF86Numeric5 */
-    { 0x10081206, 29901 }, /* XF86Numeric6 */
-    { 0x10081207, 29914 }, /* XF86Numeric7 */
-    { 0x10081208, 29927 }, /* XF86Numeric8 */
-    { 0x10081209, 29940 }, /* XF86Numeric9 */
-    { 0x1008120a, 30022 }, /* XF86NumericStar */
-    { 0x1008120b, 30005 }, /* XF86NumericPound */
-    { 0x1008120c, 29953 }, /* XF86NumericA */
-    { 0x1008120d, 29966 }, /* XF86NumericB */
-    { 0x1008120e, 29979 }, /* XF86NumericC */
-    { 0x1008120f, 29992 }, /* XF86NumericD */
-    { 0x10081210, 27586 }, /* XF86CameraFocus */
-    { 0x10081211, 31419 }, /* XF86WPSButton */
-    { 0x10081215, 27646 }, /* XF86CameraZoomIn */
-    { 0x10081216, 27663 }, /* XF86CameraZoomOut */
-    { 0x10081217, 27633 }, /* XF86CameraUp */
-    { 0x10081218, 27571 }, /* XF86CameraDown */
-    { 0x10081219, 27602 }, /* XF86CameraLeft */
-    { 0x1008121a, 27617 }, /* XF86CameraRight */
-    { 0x1008121b, 26911 }, /* XF86AttendantOn */
-    { 0x1008121c, 26894 }, /* XF86AttendantOff */
-    { 0x1008121d, 26927 }, /* XF86AttendantToggle */
-    { 0x1008121e, 28898 }, /* XF86LightsToggle */
-    { 0x10081230, 26795 }, /* XF86ALSToggle */
-    { 0x10081240, 27441 }, /* XF86Buttonconfig */
-    { 0x10081241, 31042 }, /* XF86Taskmanager */
-    { 0x10081242, 28351 }, /* XF86Journal */
-    { 0x10081243, 27818 }, /* XF86ControlPanel */
-    { 0x10081244, 26850 }, /* XF86AppSelect */
-    { 0x10081245, 30528 }, /* XF86Screensaver */
-    { 0x10081246, 31332 }, /* XF86VoiceCommand */
-    { 0x10081247, 26880 }, /* XF86Assistant */
-    { 0x10081249, 28016 }, /* XF86EmojiPicker */
-    { 0x1008124a, 27889 }, /* XF86Dictate */
-    { 0x1008124b, 27525 }, /* XF86CameraAccessEnable */
-    { 0x1008124c, 27501 }, /* XF86CameraAccessDisable */
-    { 0x1008124d, 27548 }, /* XF86CameraAccessToggle */
-    { 0x10081250, 27423 }, /* XF86BrightnessMin */
-    { 0x10081251, 27405 }, /* XF86BrightnessMax */
-    { 0x10081260, 28506 }, /* XF86KbdInputAssistPrev */
-    { 0x10081261, 28455 }, /* XF86KbdInputAssistNext */
-    { 0x10081262, 28529 }, /* XF86KbdInputAssistPrevgroup */
-    { 0x10081263, 28478 }, /* XF86KbdInputAssistNextgroup */
-    { 0x10081264, 28405 }, /* XF86KbdInputAssistAccept */
-    { 0x10081265, 28430 }, /* XF86KbdInputAssistCancel */
-    { 0x10081266, 30363 }, /* XF86RightUp */
-    { 0x10081267, 30349 }, /* XF86RightDown */
-    { 0x10081268, 28873 }, /* XF86LeftUp */
-    { 0x10081269, 28860 }, /* XF86LeftDown */
-    { 0x1008126a, 30419 }, /* XF86RootMenu */
-    { 0x1008126b, 29493 }, /* XF86MediaTopMenu */
-    { 0x1008126c, 29821 }, /* XF86Numeric11 */
-    { 0x1008126d, 29835 }, /* XF86Numeric12 */
-    { 0x1008126e, 26977 }, /* XF86AudioDesc */
-    { 0x1008126f, 26752 }, /* XF863DMode */
-    { 0x10081270, 29755 }, /* XF86NextFavorite */
-    { 0x10081271, 30795 }, /* XF86StopRecord */
-    { 0x10081272, 30116 }, /* XF86PauseRecord */
-    { 0x10081273, 31324 }, /* XF86VOD */
-    { 0x10081274, 31221 }, /* XF86Unmute */
-    { 0x10081275, 28055 }, /* XF86FastReverse */
-    { 0x10081276, 30699 }, /* XF86SlowReverse */
-    { 0x10081277, 27867 }, /* XF86Data */
-    { 0x10081278, 30053 }, /* XF86OnScreenKeyboard */
-    { 0x10081279, 30250 }, /* XF86PrivacyScreenToggle */
-    { 0x1008127a, 30610 }, /* XF86SelectiveScreenshot */
-    { 0x1008127b, 29739 }, /* XF86NextElement */
-    { 0x1008127c, 30230 }, /* XF86PreviousElement */
-    { 0x1008127d, 27251 }, /* XF86AutopilotEngageToggle */
-    { 0x1008127e, 29460 }, /* XF86MarkWaypoint */
-    { 0x1008127f, 30715 }, /* XF86Sos */
-    { 0x10081280, 29682 }, /* XF86NavChart */
-    { 0x10081281, 28097 }, /* XF86FishingChart */
-    { 0x10081282, 30668 }, /* XF86SingleRangeRadar */
-    { 0x10081283, 27968 }, /* XF86DualRangeRadar */
-    { 0x10081284, 30280 }, /* XF86RadarOverlay */
-    { 0x10081285, 31178 }, /* XF86TraditionalSonar */
-    { 0x10081286, 27742 }, /* XF86ClearvuSonar */
-    { 0x10081287, 30652 }, /* XF86SidevuSonar */
-    { 0x10081288, 29695 }, /* XF86NavInfo */
-    { 0x10081290, 28960 }, /* XF86Macro1 */
-    { 0x10081291, 29091 }, /* XF86Macro2 */
-    { 0x10081292, 29222 }, /* XF86Macro3 */
-    { 0x10081293, 29245 }, /* XF86Macro4 */
-    { 0x10081294, 29256 }, /* XF86Macro5 */
-    { 0x10081295, 29267 }, /* XF86Macro6 */
-    { 0x10081296, 29278 }, /* XF86Macro7 */
-    { 0x10081297, 29289 }, /* XF86Macro8 */
-    { 0x10081298, 29300 }, /* XF86Macro9 */
-    { 0x10081299, 28971 }, /* XF86Macro10 */
-    { 0x1008129a, 28983 }, /* XF86Macro11 */
-    { 0x1008129b, 28995 }, /* XF86Macro12 */
-    { 0x1008129c, 29007 }, /* XF86Macro13 */
-    { 0x1008129d, 29019 }, /* XF86Macro14 */
-    { 0x1008129e, 29031 }, /* XF86Macro15 */
-    { 0x1008129f, 29043 }, /* XF86Macro16 */
-    { 0x100812a0, 29055 }, /* XF86Macro17 */
-    { 0x100812a1, 29067 }, /* XF86Macro18 */
-    { 0x100812a2, 29079 }, /* XF86Macro19 */
-    { 0x100812a3, 29102 }, /* XF86Macro20 */
-    { 0x100812a4, 29114 }, /* XF86Macro21 */
-    { 0x100812a5, 29126 }, /* XF86Macro22 */
-    { 0x100812a6, 29138 }, /* XF86Macro23 */
-    { 0x100812a7, 29150 }, /* XF86Macro24 */
-    { 0x100812a8, 29162 }, /* XF86Macro25 */
-    { 0x100812a9, 29174 }, /* XF86Macro26 */
-    { 0x100812aa, 29186 }, /* XF86Macro27 */
-    { 0x100812ab, 29198 }, /* XF86Macro28 */
-    { 0x100812ac, 29210 }, /* XF86Macro29 */
-    { 0x100812ad, 29233 }, /* XF86Macro30 */
-    { 0x100812b0, 29383 }, /* XF86MacroRecordStart */
-    { 0x100812b1, 29404 }, /* XF86MacroRecordStop */
-    { 0x100812b2, 29362 }, /* XF86MacroPresetCycle */
-    { 0x100812b3, 29311 }, /* XF86MacroPreset1 */
-    { 0x100812b4, 29328 }, /* XF86MacroPreset2 */
-    { 0x100812b5, 29345 }, /* XF86MacroPreset3 */
-    { 0x100812b8, 28557 }, /* XF86KbdLcdMenu1 */
-    { 0x100812b9, 28573 }, /* XF86KbdLcdMenu2 */
-    { 0x100812ba, 28589 }, /* XF86KbdLcdMenu3 */
-    { 0x100812bb, 28605 }, /* XF86KbdLcdMenu4 */
-    { 0x100812bc, 28621 }, /* XF86KbdLcdMenu5 */
-    { 0x1008fe01, 30847 }, /* XF86Switch_VT_1 */
-    { 0x1008fe02, 30914 }, /* XF86Switch_VT_2 */
-    { 0x1008fe03, 30930 }, /* XF86Switch_VT_3 */
-    { 0x1008fe04, 30946 }, /* XF86Switch_VT_4 */
-    { 0x1008fe05, 30962 }, /* XF86Switch_VT_5 */
-    { 0x1008fe06, 30978 }, /* XF86Switch_VT_6 */
-    { 0x1008fe07, 30994 }, /* XF86Switch_VT_7 */
-    { 0x1008fe08, 31010 }, /* XF86Switch_VT_8 */
-    { 0x1008fe09, 31026 }, /* XF86Switch_VT_9 */
-    { 0x1008fe0a, 30863 }, /* XF86Switch_VT_10 */
-    { 0x1008fe0b, 30880 }, /* XF86Switch_VT_11 */
-    { 0x1008fe0c, 30897 }, /* XF86Switch_VT_12 */
-    { 0x1008fe20, 31210 }, /* XF86Ungrab */
-    { 0x1008fe21, 27728 }, /* XF86ClearGrab */
-    { 0x1008fe22, 29724 }, /* XF86Next_VMode */
-    { 0x1008fe23, 30215 }, /* XF86Prev_VMode */
-    { 0x1008fe24, 28942 }, /* XF86LogWindowTree */
-    { 0x1008fe25, 28915 }, /* XF86LogGrabInfo */
-    { 0x1008ff01, 29567 }, /* XF86ModeLock */
-    { 0x1008ff02, 29625 }, /* XF86MonBrightnessUp */
-    { 0x1008ff03, 29603 }, /* XF86MonBrightnessDown */
-    { 0x1008ff04, 28637 }, /* XF86KbdLightOnOff */
-    { 0x1008ff05, 28385 }, /* XF86KbdBrightnessUp */
-    { 0x1008ff06, 28363 }, /* XF86KbdBrightnessDown */
-    { 0x1008ff07, 29580 }, /* XF86MonBrightnessCycle */
-    { 0x1008ff10, 30764 }, /* XF86Standby */
-    { 0x1008ff11, 27008 }, /* XF86AudioLowerVolume */
-    { 0x1008ff12, 27061 }, /* XF86AudioMute */
-    { 0x1008ff13, 27148 }, /* XF86AudioRaiseVolume */
-    { 0x1008ff14, 27104 }, /* XF86AudioPlay */
-    { 0x1008ff15, 27237 }, /* XF86AudioStop */
-    { 0x1008ff16, 27134 }, /* XF86AudioPrev */
-    { 0x1008ff17, 27075 }, /* XF86AudioNext */
-    { 0x1008ff18, 28294 }, /* XF86HomePage */
-    { 0x1008ff19, 29424 }, /* XF86Mail */
-    { 0x1008ff1a, 30776 }, /* XF86Start */
-    { 0x1008ff1b, 30588 }, /* XF86Search */
-    { 0x1008ff1c, 27189 }, /* XF86AudioRecord */
-    { 0x1008ff1d, 27473 }, /* XF86Calculator */
-    { 0x1008ff1e, 29522 }, /* XF86Memo */
-    { 0x1008ff1f, 31093 }, /* XF86ToDoList */
-    { 0x1008ff20, 27488 }, /* XF86Calendar */
-    { 0x1008ff21, 30171 }, /* XF86PowerDown */
-    { 0x1008ff22, 27799 }, /* XF86ContrastAdjust */
-    { 0x1008ff23, 30406 }, /* XF86RockerUp */
-    { 0x1008ff24, 30375 }, /* XF86RockerDown */
-    { 0x1008ff25, 30390 }, /* XF86RockerEnter */
-    { 0x1008ff26, 27286 }, /* XF86Back */
-    { 0x1008ff27, 28149 }, /* XF86Forward */
-    { 0x1008ff28, 30786 }, /* XF86Stop */
-    { 0x1008ff29, 30305 }, /* XF86Refresh */
-    { 0x1008ff2a, 30185 }, /* XF86PowerOff */
-    { 0x1008ff2b, 31363 }, /* XF86WakeUp */
-    { 0x1008ff2c, 28006 }, /* XF86Eject */
-    { 0x1008ff2d, 30512 }, /* XF86ScreenSaver */
-    { 0x1008ff2e, 31442 }, /* XF86WWW */
-    { 0x1008ff2f, 30689 }, /* XF86Sleep */
-    { 0x1008ff30, 28071 }, /* XF86Favorites */
-    { 0x1008ff31, 27089 }, /* XF86AudioPause */
-    { 0x1008ff32, 27029 }, /* XF86AudioMedia */
-    { 0x1008ff33, 29655 }, /* XF86MyComputer */
-    { 0x1008ff34, 31275 }, /* XF86VendorHome */
-    { 0x1008ff35, 28884 }, /* XF86LightBulb */
-    { 0x1008ff36, 30643 }, /* XF86Shop */
-    { 0x1008ff37, 28282 }, /* XF86History */
-    { 0x1008ff38, 30083 }, /* XF86OpenURL */
-    { 0x1008ff39, 26763 }, /* XF86AddFavorite */
-    { 0x1008ff3a, 28307 }, /* XF86HotLinks */
-    { 0x1008ff3b, 27365 }, /* XF86BrightnessAdjust */
-    { 0x1008ff3c, 28085 }, /* XF86Finance */
-    { 0x1008ff3d, 27769 }, /* XF86Community */
-    { 0x1008ff3e, 27221 }, /* XF86AudioRewind */
-    { 0x1008ff3f, 27295 }, /* XF86BackForward */
-    { 0x1008ff40, 28668 }, /* XF86Launch0 */
-    { 0x1008ff41, 28680 }, /* XF86Launch1 */
-    { 0x1008ff42, 28692 }, /* XF86Launch2 */
-    { 0x1008ff43, 28704 }, /* XF86Launch3 */
-    { 0x1008ff44, 28716 }, /* XF86Launch4 */
-    { 0x1008ff45, 28728 }, /* XF86Launch5 */
-    { 0x1008ff46, 28740 }, /* XF86Launch6 */
-    { 0x1008ff47, 28752 }, /* XF86Launch7 */
-    { 0x1008ff48, 28764 }, /* XF86Launch8 */
-    { 0x1008ff49, 28776 }, /* XF86Launch9 */
-    { 0x1008ff4a, 28788 }, /* XF86LaunchA */
-    { 0x1008ff4b, 28800 }, /* XF86LaunchB */
-    { 0x1008ff4c, 28812 }, /* XF86LaunchC */
-    { 0x1008ff4d, 28824 }, /* XF86LaunchD */
-    { 0x1008ff4e, 28836 }, /* XF86LaunchE */
-    { 0x1008ff4f, 28848 }, /* XF86LaunchF */
-    { 0x1008ff50, 26809 }, /* XF86ApplicationLeft */
-    { 0x1008ff51, 26829 }, /* XF86ApplicationRight */
-    { 0x1008ff52, 27346 }, /* XF86Book */
-    { 0x1008ff53, 27681 }, /* XF86CD */
-    { 0x1008ff54, 27458 }, /* XF86Calculater */
-    { 0x1008ff55, 27718 }, /* XF86Clear */
-    { 0x1008ff56, 27759 }, /* XF86Close */
-    { 0x1008ff57, 27835 }, /* XF86Copy */
-    { 0x1008ff58, 27844 }, /* XF86Cut */
-    { 0x1008ff59, 27901 }, /* XF86Display */
-    { 0x1008ff5a, 27960 }, /* XF86DOS */
-    { 0x1008ff5b, 27946 }, /* XF86Documents */
-    { 0x1008ff5c, 28032 }, /* XF86Excel */
-    { 0x1008ff5d, 28042 }, /* XF86Explorer */
-    { 0x1008ff5e, 28207 }, /* XF86Game */
-    { 0x1008ff5f, 28216 }, /* XF86Go */
-    { 0x1008ff60, 28340 }, /* XF86iTouch */
-    { 0x1008ff61, 28931 }, /* XF86LogOff */
-    { 0x1008ff62, 29449 }, /* XF86Market */
-    { 0x1008ff63, 29510 }, /* XF86Meeting */
-    { 0x1008ff65, 29531 }, /* XF86MenuKB */
-    { 0x1008ff66, 29542 }, /* XF86MenuPB */
-    { 0x1008ff67, 29670 }, /* XF86MySites */
-    { 0x1008ff68, 29707 }, /* XF86New */
-    { 0x1008ff69, 29715 }, /* XF86News */
-    { 0x1008ff6a, 30038 }, /* XF86OfficeHome */
-    { 0x1008ff6b, 30074 }, /* XF86Open */
-    { 0x1008ff6c, 30095 }, /* XF86Option */
-    { 0x1008ff6d, 30106 }, /* XF86Paste */
-    { 0x1008ff6e, 30132 }, /* XF86Phone */
-    { 0x1008ff70, 30274 }, /* XF86Q */
-    { 0x1008ff72, 30328 }, /* XF86Reply */
-    { 0x1008ff73, 30317 }, /* XF86Reload */
-    { 0x1008ff74, 30432 }, /* XF86RotateWindows */
-    { 0x1008ff75, 30488 }, /* XF86RotationPB */
-    { 0x1008ff76, 30450 }, /* XF86RotationKB */
-    { 0x1008ff77, 30503 }, /* XF86Save */
-    { 0x1008ff78, 30575 }, /* XF86ScrollUp */
-    { 0x1008ff79, 30560 }, /* XF86ScrollDown */
-    { 0x1008ff7a, 30544 }, /* XF86ScrollClick */
-    { 0x1008ff7b, 30634 }, /* XF86Send */
-    { 0x1008ff7c, 30723 }, /* XF86Spell */
-    { 0x1008ff7d, 30748 }, /* XF86SplitScreen */
-    { 0x1008ff7e, 30823 }, /* XF86Support */
-    { 0x1008ff7f, 31058 }, /* XF86TaskPane */
-    { 0x1008ff80, 31071 }, /* XF86Terminal */
-    { 0x1008ff81, 31106 }, /* XF86Tools */
-    { 0x1008ff82, 31199 }, /* XF86Travel */
-    { 0x1008ff84, 31256 }, /* XF86UserPB */
-    { 0x1008ff85, 31232 }, /* XF86User1KB */
-    { 0x1008ff86, 31244 }, /* XF86User2KB */
-    { 0x1008ff87, 31290 }, /* XF86Video */
-    { 0x1008ff88, 31385 }, /* XF86WheelButton */
-    { 0x1008ff89, 31410 }, /* XF86Word */
-    { 0x1008ff8a, 31450 }, /* XF86Xfer */
-    { 0x1008ff8b, 31470 }, /* XF86ZoomIn */
-    { 0x1008ff8c, 31481 }, /* XF86ZoomOut */
-    { 0x1008ff8d, 27277 }, /* XF86Away */
-    { 0x1008ff8e, 29553 }, /* XF86Messenger */
-    { 0x1008ff8f, 31374 }, /* XF86WebCam */
-    { 0x1008ff90, 29433 }, /* XF86MailForward */
-    { 0x1008ff91, 30158 }, /* XF86Pictures */
-    { 0x1008ff92, 29645 }, /* XF86Music */
-    { 0x1008ff93, 27311 }, /* XF86Battery */
-    { 0x1008ff94, 27332 }, /* XF86Bluetooth */
-    { 0x1008ff95, 31401 }, /* XF86WLAN */
-    { 0x1008ff96, 31267 }, /* XF86UWB */
-    { 0x1008ff97, 26991 }, /* XF86AudioForward */
-    { 0x1008ff98, 27205 }, /* XF86AudioRepeat */
-    { 0x1008ff99, 27169 }, /* XF86AudioRandomPlay */
-    { 0x1008ff9a, 30810 }, /* XF86Subtitle */
-    { 0x1008ff9b, 26957 }, /* XF86AudioCycleTrack */
-    { 0x1008ff9c, 27852 }, /* XF86CycleAngle */
-    { 0x1008ff9d, 28161 }, /* XF86FrameBack */
-    { 0x1008ff9e, 28175 }, /* XF86FrameForward */
-    { 0x1008ff9f, 31084 }, /* XF86Time */
-    { 0x1008ffa0, 30599 }, /* XF86Select */
-    { 0x1008ffa1, 31315 }, /* XF86View */
-    { 0x1008ffa2, 31116 }, /* XF86TopMenu */
-    { 0x1008ffa3, 30297 }, /* XF86Red */
-    { 0x1008ffa4, 28242 }, /* XF86Green */
-    { 0x1008ffa5, 31459 }, /* XF86Yellow */
-    { 0x1008ffa6, 27323 }, /* XF86Blue */
-    { 0x1008ffa7, 30835 }, /* XF86Suspend */
-    { 0x1008ffa8, 28268 }, /* XF86Hibernate */
-    { 0x1008ffa9, 31159 }, /* XF86TouchpadToggle */
-    { 0x1008ffb0, 31144 }, /* XF86TouchpadOn */
-    { 0x1008ffb1, 31128 }, /* XF86TouchpadOff */
-    { 0x1008ffb2, 27044 }, /* XF86AudioMicMute */
-    { 0x1008ffb3, 28655 }, /* XF86Keyboard */
-    { 0x1008ffb4, 31433 }, /* XF86WWAN */
-    { 0x1008ffb5, 30338 }, /* XF86RFKill */
-    { 0x1008ffb6, 27118 }, /* XF86AudioPreset */
-    { 0x1008ffb7, 30465 }, /* XF86RotationLockToggle */
-    { 0x1008ffb8, 28192 }, /* XF86FullScreen */
+    { 0x1004ff02, 21030 }, /* osfCopy */
+    { 0x1004ff03, 21038 }, /* osfCut */
+    { 0x1004ff04, 21237 }, /* osfPaste */
+    { 0x1004ff07, 20974 }, /* osfBackTab */
+    { 0x1004ff08, 20961 }, /* osfBackSpace */
+    { 0x1004ff0b, 21021 }, /* osfClear */
+    { 0x1004ff1b, 21100 }, /* osfEscape */
+    { 0x1004ff31, 20950 }, /* osfAddMode */
+    { 0x1004ff32, 21271 }, /* osfPrimaryPaste */
+    { 0x1004ff33, 21287 }, /* osfQuickPaste */
+    { 0x1004ff40, 21202 }, /* osfPageLeft */
+    { 0x1004ff41, 21227 }, /* osfPageUp */
+    { 0x1004ff42, 21190 }, /* osfPageDown */
+    { 0x1004ff43, 21214 }, /* osfPageRight */
+    { 0x1004ff44, 20938 }, /* osfActivate */
+    { 0x1004ff45, 21154 }, /* osfMenuBar */
+    { 0x1004ff51, 21138 }, /* osfLeft */
+    { 0x1004ff52, 21364 }, /* osfUp */
+    { 0x1004ff53, 21324 }, /* osfRight */
+    { 0x1004ff54, 21070 }, /* osfDown */
+    { 0x1004ff57, 21089 }, /* osfEndLine */
+    { 0x1004ff58, 20998 }, /* osfBeginLine */
+    { 0x1004ff59, 21078 }, /* osfEndData */
+    { 0x1004ff5a, 20985 }, /* osfBeginData */
+    { 0x1004ff5b, 21259 }, /* osfPrevMenu */
+    { 0x1004ff5c, 21178 }, /* osfNextMenu */
+    { 0x1004ff5d, 21246 }, /* osfPrevField */
+    { 0x1004ff5e, 21165 }, /* osfNextField */
+    { 0x1004ff60, 21333 }, /* osfSelect */
+    { 0x1004ff63, 21128 }, /* osfInsert */
+    { 0x1004ff65, 21356 }, /* osfUndo */
+    { 0x1004ff67, 21146 }, /* osfMenu */
+    { 0x1004ff69, 21011 }, /* osfCancel */
+    { 0x1004ff6a, 21120 }, /* osfHelp */
+    { 0x1004ff71, 21343 }, /* osfSelectAll */
+    { 0x1004ff72, 21055 }, /* osfDeselectAll */
+    { 0x1004ff73, 21301 }, /* osfReselect */
+    { 0x1004ff74, 21110 }, /* osfExtend */
+    { 0x1004ff78, 21313 }, /* osfRestore */
+    { 0x1004ffff, 21045 }, /* osfDelete */
+    { 0x1005ff00, 24106 }, /* SunFA_Grave */
+    { 0x1005ff01, 24077 }, /* SunFA_Circum */
+    { 0x1005ff02, 24118 }, /* SunFA_Tilde */
+    { 0x1005ff03, 24051 }, /* SunFA_Acute */
+    { 0x1005ff04, 24090 }, /* SunFA_Diaeresis */
+    { 0x1005ff05, 24063 }, /* SunFA_Cedilla */
+    { 0x1005ff10, 24037 }, /* SunF36 */
+    { 0x1005ff11, 24044 }, /* SunF37 */
+    { 0x1005ff60, 24254 }, /* SunSys_Req */
+    { 0x1005ff70, 24237 }, /* SunProps */
+    { 0x1005ff71, 24138 }, /* SunFront */
+    { 0x1005ff72, 24022 }, /* SunCopy */
+    { 0x1005ff73, 24147 }, /* SunOpen */
+    { 0x1005ff74, 24177 }, /* SunPaste */
+    { 0x1005ff75, 24030 }, /* SunCut */
+    { 0x1005ff76, 24186 }, /* SunPowerSwitch */
+    { 0x1005ff77, 23958 }, /* SunAudioLowerVolume */
+    { 0x1005ff78, 23978 }, /* SunAudioMute */
+    { 0x1005ff79, 23991 }, /* SunAudioRaiseVolume */
+    { 0x1005ff7a, 24273 }, /* SunVideoDegauss */
+    { 0x1005ff7b, 24289 }, /* SunVideoLowerBrightness */
+    { 0x1005ff7c, 24313 }, /* SunVideoRaiseBrightness */
+    { 0x1005ff7d, 24201 }, /* SunPowerSwitchShift */
+    { 0x100810f4, 27399 }, /* XF86BrightnessAuto */
+    { 0x100810f5, 27926 }, /* XF86DisplayOff */
+    { 0x10081166, 28344 }, /* XF86Info */
+    { 0x10081177, 26877 }, /* XF86AspectRatio */
+    { 0x10081185, 28000 }, /* XF86DVD */
+    { 0x10081188, 26960 }, /* XF86Audio */
+    { 0x10081192, 27717 }, /* XF86ChannelUp */
+    { 0x10081193, 27701 }, /* XF86ChannelDown */
+    { 0x1008119b, 27368 }, /* XF86Break */
+    { 0x100811a0, 31313 }, /* XF86VideoPhone */
+    { 0x100811a4, 31506 }, /* XF86ZoomReset */
+    { 0x100811a6, 28008 }, /* XF86Editor */
+    { 0x100811a8, 28236 }, /* XF86GraphicsEditor */
+    { 0x100811a9, 30211 }, /* XF86Presentation */
+    { 0x100811aa, 27889 }, /* XF86Database */
+    { 0x100811ac, 31362 }, /* XF86Voicemail */
+    { 0x100811ad, 26792 }, /* XF86Addressbook */
+    { 0x100811af, 27941 }, /* XF86DisplayToggle */
+    { 0x100811b0, 30746 }, /* XF86SpellCheck */
+    { 0x100811b6, 27796 }, /* XF86ContextMenu */
+    { 0x100811b7, 29490 }, /* XF86MediaRepeat */
+    { 0x100811b8, 26748 }, /* XF8610ChannelsUp */
+    { 0x100811b9, 26729 }, /* XF8610ChannelsDown */
+    { 0x100811ba, 28333 }, /* XF86Images */
+    { 0x100811bc, 29785 }, /* XF86NotificationCenter */
+    { 0x100811bd, 30155 }, /* XF86PickupPhone */
+    { 0x100811be, 28265 }, /* XF86HangupPhone */
+    { 0x100811d0, 28127 }, /* XF86Fn */
+    { 0x100811d1, 28134 }, /* XF86Fn_Esc */
+    { 0x100811e5, 28145 }, /* XF86FnRightShift */
+    { 0x10081200, 29808 }, /* XF86Numeric0 */
+    { 0x10081201, 29821 }, /* XF86Numeric1 */
+    { 0x10081202, 29862 }, /* XF86Numeric2 */
+    { 0x10081203, 29875 }, /* XF86Numeric3 */
+    { 0x10081204, 29888 }, /* XF86Numeric4 */
+    { 0x10081205, 29901 }, /* XF86Numeric5 */
+    { 0x10081206, 29914 }, /* XF86Numeric6 */
+    { 0x10081207, 29927 }, /* XF86Numeric7 */
+    { 0x10081208, 29940 }, /* XF86Numeric8 */
+    { 0x10081209, 29953 }, /* XF86Numeric9 */
+    { 0x1008120a, 30035 }, /* XF86NumericStar */
+    { 0x1008120b, 30018 }, /* XF86NumericPound */
+    { 0x1008120c, 29966 }, /* XF86NumericA */
+    { 0x1008120d, 29979 }, /* XF86NumericB */
+    { 0x1008120e, 29992 }, /* XF86NumericC */
+    { 0x1008120f, 30005 }, /* XF86NumericD */
+    { 0x10081210, 27599 }, /* XF86CameraFocus */
+    { 0x10081211, 31432 }, /* XF86WPSButton */
+    { 0x10081215, 27659 }, /* XF86CameraZoomIn */
+    { 0x10081216, 27676 }, /* XF86CameraZoomOut */
+    { 0x10081217, 27646 }, /* XF86CameraUp */
+    { 0x10081218, 27584 }, /* XF86CameraDown */
+    { 0x10081219, 27615 }, /* XF86CameraLeft */
+    { 0x1008121a, 27630 }, /* XF86CameraRight */
+    { 0x1008121b, 26924 }, /* XF86AttendantOn */
+    { 0x1008121c, 26907 }, /* XF86AttendantOff */
+    { 0x1008121d, 26940 }, /* XF86AttendantToggle */
+    { 0x1008121e, 28911 }, /* XF86LightsToggle */
+    { 0x10081230, 26808 }, /* XF86ALSToggle */
+    { 0x10081240, 27454 }, /* XF86Buttonconfig */
+    { 0x10081241, 31055 }, /* XF86Taskmanager */
+    { 0x10081242, 28364 }, /* XF86Journal */
+    { 0x10081243, 27831 }, /* XF86ControlPanel */
+    { 0x10081244, 26863 }, /* XF86AppSelect */
+    { 0x10081245, 30541 }, /* XF86Screensaver */
+    { 0x10081246, 31345 }, /* XF86VoiceCommand */
+    { 0x10081247, 26893 }, /* XF86Assistant */
+    { 0x10081249, 28029 }, /* XF86EmojiPicker */
+    { 0x1008124a, 27902 }, /* XF86Dictate */
+    { 0x1008124b, 27538 }, /* XF86CameraAccessEnable */
+    { 0x1008124c, 27514 }, /* XF86CameraAccessDisable */
+    { 0x1008124d, 27561 }, /* XF86CameraAccessToggle */
+    { 0x10081250, 27436 }, /* XF86BrightnessMin */
+    { 0x10081251, 27418 }, /* XF86BrightnessMax */
+    { 0x10081260, 28519 }, /* XF86KbdInputAssistPrev */
+    { 0x10081261, 28468 }, /* XF86KbdInputAssistNext */
+    { 0x10081262, 28542 }, /* XF86KbdInputAssistPrevgroup */
+    { 0x10081263, 28491 }, /* XF86KbdInputAssistNextgroup */
+    { 0x10081264, 28418 }, /* XF86KbdInputAssistAccept */
+    { 0x10081265, 28443 }, /* XF86KbdInputAssistCancel */
+    { 0x10081266, 30376 }, /* XF86RightUp */
+    { 0x10081267, 30362 }, /* XF86RightDown */
+    { 0x10081268, 28886 }, /* XF86LeftUp */
+    { 0x10081269, 28873 }, /* XF86LeftDown */
+    { 0x1008126a, 30432 }, /* XF86RootMenu */
+    { 0x1008126b, 29506 }, /* XF86MediaTopMenu */
+    { 0x1008126c, 29834 }, /* XF86Numeric11 */
+    { 0x1008126d, 29848 }, /* XF86Numeric12 */
+    { 0x1008126e, 26990 }, /* XF86AudioDesc */
+    { 0x1008126f, 26765 }, /* XF863DMode */
+    { 0x10081270, 29768 }, /* XF86NextFavorite */
+    { 0x10081271, 30808 }, /* XF86StopRecord */
+    { 0x10081272, 30129 }, /* XF86PauseRecord */
+    { 0x10081273, 31337 }, /* XF86VOD */
+    { 0x10081274, 31234 }, /* XF86Unmute */
+    { 0x10081275, 28068 }, /* XF86FastReverse */
+    { 0x10081276, 30712 }, /* XF86SlowReverse */
+    { 0x10081277, 27880 }, /* XF86Data */
+    { 0x10081278, 30066 }, /* XF86OnScreenKeyboard */
+    { 0x10081279, 30263 }, /* XF86PrivacyScreenToggle */
+    { 0x1008127a, 30623 }, /* XF86SelectiveScreenshot */
+    { 0x1008127b, 29752 }, /* XF86NextElement */
+    { 0x1008127c, 30243 }, /* XF86PreviousElement */
+    { 0x1008127d, 27264 }, /* XF86AutopilotEngageToggle */
+    { 0x1008127e, 29473 }, /* XF86MarkWaypoint */
+    { 0x1008127f, 30728 }, /* XF86Sos */
+    { 0x10081280, 29695 }, /* XF86NavChart */
+    { 0x10081281, 28110 }, /* XF86FishingChart */
+    { 0x10081282, 30681 }, /* XF86SingleRangeRadar */
+    { 0x10081283, 27981 }, /* XF86DualRangeRadar */
+    { 0x10081284, 30293 }, /* XF86RadarOverlay */
+    { 0x10081285, 31191 }, /* XF86TraditionalSonar */
+    { 0x10081286, 27755 }, /* XF86ClearvuSonar */
+    { 0x10081287, 30665 }, /* XF86SidevuSonar */
+    { 0x10081288, 29708 }, /* XF86NavInfo */
+    { 0x10081290, 28973 }, /* XF86Macro1 */
+    { 0x10081291, 29104 }, /* XF86Macro2 */
+    { 0x10081292, 29235 }, /* XF86Macro3 */
+    { 0x10081293, 29258 }, /* XF86Macro4 */
+    { 0x10081294, 29269 }, /* XF86Macro5 */
+    { 0x10081295, 29280 }, /* XF86Macro6 */
+    { 0x10081296, 29291 }, /* XF86Macro7 */
+    { 0x10081297, 29302 }, /* XF86Macro8 */
+    { 0x10081298, 29313 }, /* XF86Macro9 */
+    { 0x10081299, 28984 }, /* XF86Macro10 */
+    { 0x1008129a, 28996 }, /* XF86Macro11 */
+    { 0x1008129b, 29008 }, /* XF86Macro12 */
+    { 0x1008129c, 29020 }, /* XF86Macro13 */
+    { 0x1008129d, 29032 }, /* XF86Macro14 */
+    { 0x1008129e, 29044 }, /* XF86Macro15 */
+    { 0x1008129f, 29056 }, /* XF86Macro16 */
+    { 0x100812a0, 29068 }, /* XF86Macro17 */
+    { 0x100812a1, 29080 }, /* XF86Macro18 */
+    { 0x100812a2, 29092 }, /* XF86Macro19 */
+    { 0x100812a3, 29115 }, /* XF86Macro20 */
+    { 0x100812a4, 29127 }, /* XF86Macro21 */
+    { 0x100812a5, 29139 }, /* XF86Macro22 */
+    { 0x100812a6, 29151 }, /* XF86Macro23 */
+    { 0x100812a7, 29163 }, /* XF86Macro24 */
+    { 0x100812a8, 29175 }, /* XF86Macro25 */
+    { 0x100812a9, 29187 }, /* XF86Macro26 */
+    { 0x100812aa, 29199 }, /* XF86Macro27 */
+    { 0x100812ab, 29211 }, /* XF86Macro28 */
+    { 0x100812ac, 29223 }, /* XF86Macro29 */
+    { 0x100812ad, 29246 }, /* XF86Macro30 */
+    { 0x100812b0, 29396 }, /* XF86MacroRecordStart */
+    { 0x100812b1, 29417 }, /* XF86MacroRecordStop */
+    { 0x100812b2, 29375 }, /* XF86MacroPresetCycle */
+    { 0x100812b3, 29324 }, /* XF86MacroPreset1 */
+    { 0x100812b4, 29341 }, /* XF86MacroPreset2 */
+    { 0x100812b5, 29358 }, /* XF86MacroPreset3 */
+    { 0x100812b8, 28570 }, /* XF86KbdLcdMenu1 */
+    { 0x100812b9, 28586 }, /* XF86KbdLcdMenu2 */
+    { 0x100812ba, 28602 }, /* XF86KbdLcdMenu3 */
+    { 0x100812bb, 28618 }, /* XF86KbdLcdMenu4 */
+    { 0x100812bc, 28634 }, /* XF86KbdLcdMenu5 */
+    { 0x1008fe01, 30860 }, /* XF86Switch_VT_1 */
+    { 0x1008fe02, 30927 }, /* XF86Switch_VT_2 */
+    { 0x1008fe03, 30943 }, /* XF86Switch_VT_3 */
+    { 0x1008fe04, 30959 }, /* XF86Switch_VT_4 */
+    { 0x1008fe05, 30975 }, /* XF86Switch_VT_5 */
+    { 0x1008fe06, 30991 }, /* XF86Switch_VT_6 */
+    { 0x1008fe07, 31007 }, /* XF86Switch_VT_7 */
+    { 0x1008fe08, 31023 }, /* XF86Switch_VT_8 */
+    { 0x1008fe09, 31039 }, /* XF86Switch_VT_9 */
+    { 0x1008fe0a, 30876 }, /* XF86Switch_VT_10 */
+    { 0x1008fe0b, 30893 }, /* XF86Switch_VT_11 */
+    { 0x1008fe0c, 30910 }, /* XF86Switch_VT_12 */
+    { 0x1008fe20, 31223 }, /* XF86Ungrab */
+    { 0x1008fe21, 27741 }, /* XF86ClearGrab */
+    { 0x1008fe22, 29737 }, /* XF86Next_VMode */
+    { 0x1008fe23, 30228 }, /* XF86Prev_VMode */
+    { 0x1008fe24, 28955 }, /* XF86LogWindowTree */
+    { 0x1008fe25, 28928 }, /* XF86LogGrabInfo */
+    { 0x1008ff01, 29580 }, /* XF86ModeLock */
+    { 0x1008ff02, 29638 }, /* XF86MonBrightnessUp */
+    { 0x1008ff03, 29616 }, /* XF86MonBrightnessDown */
+    { 0x1008ff04, 28650 }, /* XF86KbdLightOnOff */
+    { 0x1008ff05, 28398 }, /* XF86KbdBrightnessUp */
+    { 0x1008ff06, 28376 }, /* XF86KbdBrightnessDown */
+    { 0x1008ff07, 29593 }, /* XF86MonBrightnessCycle */
+    { 0x1008ff10, 30777 }, /* XF86Standby */
+    { 0x1008ff11, 27021 }, /* XF86AudioLowerVolume */
+    { 0x1008ff12, 27074 }, /* XF86AudioMute */
+    { 0x1008ff13, 27161 }, /* XF86AudioRaiseVolume */
+    { 0x1008ff14, 27117 }, /* XF86AudioPlay */
+    { 0x1008ff15, 27250 }, /* XF86AudioStop */
+    { 0x1008ff16, 27147 }, /* XF86AudioPrev */
+    { 0x1008ff17, 27088 }, /* XF86AudioNext */
+    { 0x1008ff18, 28307 }, /* XF86HomePage */
+    { 0x1008ff19, 29437 }, /* XF86Mail */
+    { 0x1008ff1a, 30789 }, /* XF86Start */
+    { 0x1008ff1b, 30601 }, /* XF86Search */
+    { 0x1008ff1c, 27202 }, /* XF86AudioRecord */
+    { 0x1008ff1d, 27486 }, /* XF86Calculator */
+    { 0x1008ff1e, 29535 }, /* XF86Memo */
+    { 0x1008ff1f, 31106 }, /* XF86ToDoList */
+    { 0x1008ff20, 27501 }, /* XF86Calendar */
+    { 0x1008ff21, 30184 }, /* XF86PowerDown */
+    { 0x1008ff22, 27812 }, /* XF86ContrastAdjust */
+    { 0x1008ff23, 30419 }, /* XF86RockerUp */
+    { 0x1008ff24, 30388 }, /* XF86RockerDown */
+    { 0x1008ff25, 30403 }, /* XF86RockerEnter */
+    { 0x1008ff26, 27299 }, /* XF86Back */
+    { 0x1008ff27, 28162 }, /* XF86Forward */
+    { 0x1008ff28, 30799 }, /* XF86Stop */
+    { 0x1008ff29, 30318 }, /* XF86Refresh */
+    { 0x1008ff2a, 30198 }, /* XF86PowerOff */
+    { 0x1008ff2b, 31376 }, /* XF86WakeUp */
+    { 0x1008ff2c, 28019 }, /* XF86Eject */
+    { 0x1008ff2d, 30525 }, /* XF86ScreenSaver */
+    { 0x1008ff2e, 31455 }, /* XF86WWW */
+    { 0x1008ff2f, 30702 }, /* XF86Sleep */
+    { 0x1008ff30, 28084 }, /* XF86Favorites */
+    { 0x1008ff31, 27102 }, /* XF86AudioPause */
+    { 0x1008ff32, 27042 }, /* XF86AudioMedia */
+    { 0x1008ff33, 29668 }, /* XF86MyComputer */
+    { 0x1008ff34, 31288 }, /* XF86VendorHome */
+    { 0x1008ff35, 28897 }, /* XF86LightBulb */
+    { 0x1008ff36, 30656 }, /* XF86Shop */
+    { 0x1008ff37, 28295 }, /* XF86History */
+    { 0x1008ff38, 30096 }, /* XF86OpenURL */
+    { 0x1008ff39, 26776 }, /* XF86AddFavorite */
+    { 0x1008ff3a, 28320 }, /* XF86HotLinks */
+    { 0x1008ff3b, 27378 }, /* XF86BrightnessAdjust */
+    { 0x1008ff3c, 28098 }, /* XF86Finance */
+    { 0x1008ff3d, 27782 }, /* XF86Community */
+    { 0x1008ff3e, 27234 }, /* XF86AudioRewind */
+    { 0x1008ff3f, 27308 }, /* XF86BackForward */
+    { 0x1008ff40, 28681 }, /* XF86Launch0 */
+    { 0x1008ff41, 28693 }, /* XF86Launch1 */
+    { 0x1008ff42, 28705 }, /* XF86Launch2 */
+    { 0x1008ff43, 28717 }, /* XF86Launch3 */
+    { 0x1008ff44, 28729 }, /* XF86Launch4 */
+    { 0x1008ff45, 28741 }, /* XF86Launch5 */
+    { 0x1008ff46, 28753 }, /* XF86Launch6 */
+    { 0x1008ff47, 28765 }, /* XF86Launch7 */
+    { 0x1008ff48, 28777 }, /* XF86Launch8 */
+    { 0x1008ff49, 28789 }, /* XF86Launch9 */
+    { 0x1008ff4a, 28801 }, /* XF86LaunchA */
+    { 0x1008ff4b, 28813 }, /* XF86LaunchB */
+    { 0x1008ff4c, 28825 }, /* XF86LaunchC */
+    { 0x1008ff4d, 28837 }, /* XF86LaunchD */
+    { 0x1008ff4e, 28849 }, /* XF86LaunchE */
+    { 0x1008ff4f, 28861 }, /* XF86LaunchF */
+    { 0x1008ff50, 26822 }, /* XF86ApplicationLeft */
+    { 0x1008ff51, 26842 }, /* XF86ApplicationRight */
+    { 0x1008ff52, 27359 }, /* XF86Book */
+    { 0x1008ff53, 27694 }, /* XF86CD */
+    { 0x1008ff54, 27471 }, /* XF86Calculater */
+    { 0x1008ff55, 27731 }, /* XF86Clear */
+    { 0x1008ff56, 27772 }, /* XF86Close */
+    { 0x1008ff57, 27848 }, /* XF86Copy */
+    { 0x1008ff58, 27857 }, /* XF86Cut */
+    { 0x1008ff59, 27914 }, /* XF86Display */
+    { 0x1008ff5a, 27973 }, /* XF86DOS */
+    { 0x1008ff5b, 27959 }, /* XF86Documents */
+    { 0x1008ff5c, 28045 }, /* XF86Excel */
+    { 0x1008ff5d, 28055 }, /* XF86Explorer */
+    { 0x1008ff5e, 28220 }, /* XF86Game */
+    { 0x1008ff5f, 28229 }, /* XF86Go */
+    { 0x1008ff60, 28353 }, /* XF86iTouch */
+    { 0x1008ff61, 28944 }, /* XF86LogOff */
+    { 0x1008ff62, 29462 }, /* XF86Market */
+    { 0x1008ff63, 29523 }, /* XF86Meeting */
+    { 0x1008ff65, 29544 }, /* XF86MenuKB */
+    { 0x1008ff66, 29555 }, /* XF86MenuPB */
+    { 0x1008ff67, 29683 }, /* XF86MySites */
+    { 0x1008ff68, 29720 }, /* XF86New */
+    { 0x1008ff69, 29728 }, /* XF86News */
+    { 0x1008ff6a, 30051 }, /* XF86OfficeHome */
+    { 0x1008ff6b, 30087 }, /* XF86Open */
+    { 0x1008ff6c, 30108 }, /* XF86Option */
+    { 0x1008ff6d, 30119 }, /* XF86Paste */
+    { 0x1008ff6e, 30145 }, /* XF86Phone */
+    { 0x1008ff70, 30287 }, /* XF86Q */
+    { 0x1008ff72, 30341 }, /* XF86Reply */
+    { 0x1008ff73, 30330 }, /* XF86Reload */
+    { 0x1008ff74, 30445 }, /* XF86RotateWindows */
+    { 0x1008ff75, 30501 }, /* XF86RotationPB */
+    { 0x1008ff76, 30463 }, /* XF86RotationKB */
+    { 0x1008ff77, 30516 }, /* XF86Save */
+    { 0x1008ff78, 30588 }, /* XF86ScrollUp */
+    { 0x1008ff79, 30573 }, /* XF86ScrollDown */
+    { 0x1008ff7a, 30557 }, /* XF86ScrollClick */
+    { 0x1008ff7b, 30647 }, /* XF86Send */
+    { 0x1008ff7c, 30736 }, /* XF86Spell */
+    { 0x1008ff7d, 30761 }, /* XF86SplitScreen */
+    { 0x1008ff7e, 30836 }, /* XF86Support */
+    { 0x1008ff7f, 31071 }, /* XF86TaskPane */
+    { 0x1008ff80, 31084 }, /* XF86Terminal */
+    { 0x1008ff81, 31119 }, /* XF86Tools */
+    { 0x1008ff82, 31212 }, /* XF86Travel */
+    { 0x1008ff84, 31269 }, /* XF86UserPB */
+    { 0x1008ff85, 31245 }, /* XF86User1KB */
+    { 0x1008ff86, 31257 }, /* XF86User2KB */
+    { 0x1008ff87, 31303 }, /* XF86Video */
+    { 0x1008ff88, 31398 }, /* XF86WheelButton */
+    { 0x1008ff89, 31423 }, /* XF86Word */
+    { 0x1008ff8a, 31463 }, /* XF86Xfer */
+    { 0x1008ff8b, 31483 }, /* XF86ZoomIn */
+    { 0x1008ff8c, 31494 }, /* XF86ZoomOut */
+    { 0x1008ff8d, 27290 }, /* XF86Away */
+    { 0x1008ff8e, 29566 }, /* XF86Messenger */
+    { 0x1008ff8f, 31387 }, /* XF86WebCam */
+    { 0x1008ff90, 29446 }, /* XF86MailForward */
+    { 0x1008ff91, 30171 }, /* XF86Pictures */
+    { 0x1008ff92, 29658 }, /* XF86Music */
+    { 0x1008ff93, 27324 }, /* XF86Battery */
+    { 0x1008ff94, 27345 }, /* XF86Bluetooth */
+    { 0x1008ff95, 31414 }, /* XF86WLAN */
+    { 0x1008ff96, 31280 }, /* XF86UWB */
+    { 0x1008ff97, 27004 }, /* XF86AudioForward */
+    { 0x1008ff98, 27218 }, /* XF86AudioRepeat */
+    { 0x1008ff99, 27182 }, /* XF86AudioRandomPlay */
+    { 0x1008ff9a, 30823 }, /* XF86Subtitle */
+    { 0x1008ff9b, 26970 }, /* XF86AudioCycleTrack */
+    { 0x1008ff9c, 27865 }, /* XF86CycleAngle */
+    { 0x1008ff9d, 28174 }, /* XF86FrameBack */
+    { 0x1008ff9e, 28188 }, /* XF86FrameForward */
+    { 0x1008ff9f, 31097 }, /* XF86Time */
+    { 0x1008ffa0, 30612 }, /* XF86Select */
+    { 0x1008ffa1, 31328 }, /* XF86View */
+    { 0x1008ffa2, 31129 }, /* XF86TopMenu */
+    { 0x1008ffa3, 30310 }, /* XF86Red */
+    { 0x1008ffa4, 28255 }, /* XF86Green */
+    { 0x1008ffa5, 31472 }, /* XF86Yellow */
+    { 0x1008ffa6, 27336 }, /* XF86Blue */
+    { 0x1008ffa7, 30848 }, /* XF86Suspend */
+    { 0x1008ffa8, 28281 }, /* XF86Hibernate */
+    { 0x1008ffa9, 31172 }, /* XF86TouchpadToggle */
+    { 0x1008ffb0, 31157 }, /* XF86TouchpadOn */
+    { 0x1008ffb1, 31141 }, /* XF86TouchpadOff */
+    { 0x1008ffb2, 27057 }, /* XF86AudioMicMute */
+    { 0x1008ffb3, 28668 }, /* XF86Keyboard */
+    { 0x1008ffb4, 31446 }, /* XF86WWAN */
+    { 0x1008ffb5, 30351 }, /* XF86RFKill */
+    { 0x1008ffb6, 27131 }, /* XF86AudioPreset */
+    { 0x1008ffb7, 30478 }, /* XF86RotationLockToggle */
+    { 0x1008ffb8, 28205 }, /* XF86FullScreen */
 };