1313#include <stdint.h>
1414
1515static const uint32_t wcw0_lo [] = {
16- 0x000300 , 0x000483 , 0x000591 , 0x0005bf , 0x0005c1 , 0x0005c4 , 0x0005c7 , 0x000610 ,
17- 0x00061c , 0x00064b , 0x000670 , 0x0006d6 , 0x0006df , 0x0006e7 , 0x0006ea , 0x000711 ,
18- 0x000730 , 0x0007a6 , 0x0007eb , 0x0007fd , 0x000816 , 0x00081b , 0x000825 , 0x000829 ,
19- 0x000859 , 0x000897 , 0x0008ca , 0x0008e3 , 0x00093a , 0x00093c , 0x000941 , 0x00094d ,
20- 0x000951 , 0x000962 , 0x000981 , 0x0009bc , 0x0009c1 , 0x0009cd , 0x0009e2 , 0x0009fe ,
21- 0x000a01 , 0x000a3c , 0x000a41 , 0x000a47 , 0x000a4b , 0x000a51 , 0x000a70 , 0x000a75 ,
22- 0x000a81 , 0x000abc , 0x000ac1 , 0x000ac7 , 0x000acd , 0x000ae2 , 0x000afa , 0x000b01 ,
23- 0x000b3c , 0x000b3f , 0x000b41 , 0x000b4d , 0x000b55 , 0x000b62 , 0x000b82 , 0x000bc0 ,
24- 0x000bcd , 0x000c00 , 0x000c04 , 0x000c3c , 0x000c3e , 0x000c46 , 0x000c4a , 0x000c55 ,
25- 0x000c62 , 0x000c81 , 0x000cbc , 0x000cbf , 0x000cc6 , 0x000ccc , 0x000ce2 , 0x000d00 ,
26- 0x000d3b , 0x000d41 , 0x000d4d , 0x000d62 , 0x000d81 , 0x000dca , 0x000dd2 , 0x000dd6 ,
27- 0x000e31 , 0x000e34 , 0x000e47 , 0x000eb1 , 0x000eb4 , 0x000ec8 , 0x000f18 , 0x000f35 ,
28- 0x000f37 , 0x000f39 , 0x000f71 , 0x000f80 , 0x000f86 , 0x000f8d , 0x000f99 , 0x000fc6 ,
29- 0x00102d , 0x001032 , 0x001039 , 0x00103d , 0x001058 , 0x00105e , 0x001071 , 0x001082 ,
30- 0x001085 , 0x00108d , 0x00109d , 0x001160 , 0x00135d , 0x001712 , 0x001732 , 0x001752 ,
31- 0x001772 , 0x0017b4 , 0x0017b7 , 0x0017c6 , 0x0017c9 , 0x0017dd , 0x00180b , 0x001885 ,
32- 0x0018a9 , 0x001920 , 0x001927 , 0x001932 , 0x001939 , 0x001a17 , 0x001a1b , 0x001a56 ,
33- 0x001a58 , 0x001a60 , 0x001a62 , 0x001a65 , 0x001a73 , 0x001a7f , 0x001ab0 , 0x001b00 ,
34- 0x001b34 , 0x001b36 , 0x001b3c , 0x001b42 , 0x001b6b , 0x001b80 , 0x001ba2 , 0x001ba8 ,
35- 0x001bab , 0x001be6 , 0x001be8 , 0x001bed , 0x001bef , 0x001c2c , 0x001c36 , 0x001cd0 ,
36- 0x001cd4 , 0x001ce2 , 0x001ced , 0x001cf4 , 0x001cf8 , 0x001dc0 , 0x00200b , 0x00202a ,
37- 0x002060 , 0x002066 , 0x0020d0 , 0x002cef , 0x002d7f , 0x002de0 , 0x00302a , 0x003099 ,
38- 0x003164 , 0x00a66f , 0x00a674 , 0x00a69e , 0x00a6f0 , 0x00a802 , 0x00a806 , 0x00a80b ,
39- 0x00a825 , 0x00a82c , 0x00a8c4 , 0x00a8e0 , 0x00a8ff , 0x00a926 , 0x00a947 , 0x00a980 ,
40- 0x00a9b3 , 0x00a9b6 , 0x00a9bc , 0x00a9e5 , 0x00aa29 , 0x00aa31 , 0x00aa35 , 0x00aa43 ,
41- 0x00aa4c , 0x00aa7c , 0x00aab0 , 0x00aab2 , 0x00aab7 , 0x00aabe , 0x00aac1 , 0x00aaec ,
42- 0x00aaf6 , 0x00abe5 , 0x00abe8 , 0x00abed , 0x00d7b0 , 0x00d7cb , 0x00fb1e , 0x00fe00 ,
43- 0x00fe20 , 0x00feff , 0x00ffa0 , 0x0101fd , 0x0102e0 , 0x010376 , 0x010a01 , 0x010a05 ,
44- 0x010a0c , 0x010a38 , 0x010a3f , 0x010ae5 , 0x010d24 , 0x010d69 , 0x010eab , 0x010efc ,
45- 0x010f46 , 0x010f82 , 0x011001 , 0x011038 , 0x011070 , 0x011073 , 0x01107f , 0x0110b3 ,
46- 0x0110b9 , 0x0110c2 , 0x011100 , 0x011127 , 0x01112d , 0x011173 , 0x011180 , 0x0111b6 ,
47- 0x0111c9 , 0x0111cf , 0x01122f , 0x011234 , 0x011236 , 0x01123e , 0x011241 , 0x0112df ,
48- 0x0112e3 , 0x011300 , 0x01133b , 0x011340 , 0x011366 , 0x011370 , 0x0113bb , 0x0113ce ,
49- 0x0113d0 , 0x0113d2 , 0x0113e1 , 0x011438 , 0x011442 , 0x011446 , 0x01145e , 0x0114b3 ,
50- 0x0114ba , 0x0114bf , 0x0114c2 , 0x0115b2 , 0x0115bc , 0x0115bf , 0x0115dc , 0x011633 ,
51- 0x01163d , 0x01163f , 0x0116ab , 0x0116ad , 0x0116b0 , 0x0116b7 , 0x01171d , 0x01171f ,
52- 0x011722 , 0x011727 , 0x01182f , 0x011839 , 0x01193b , 0x01193e , 0x011943 , 0x0119d4 ,
53- 0x0119da , 0x0119e0 , 0x011a01 , 0x011a33 , 0x011a3b , 0x011a47 , 0x011a51 , 0x011a59 ,
54- 0x011a8a , 0x011a98 , 0x011c30 , 0x011c38 , 0x011c3f , 0x011c92 , 0x011caa , 0x011cb2 ,
55- 0x011cb5 , 0x011d31 , 0x011d3a , 0x011d3c , 0x011d3f , 0x011d47 , 0x011d90 , 0x011d95 ,
56- 0x011d97 , 0x011ef3 , 0x011f00 , 0x011f36 , 0x011f40 , 0x011f42 , 0x011f5a , 0x013440 ,
57- 0x013447 , 0x01611e , 0x01612d , 0x016af0 , 0x016b30 , 0x016f4f , 0x016f8f , 0x016fe4 ,
58- 0x01bc9d , 0x01bca0 , 0x01cf00 , 0x01cf30 , 0x01d167 , 0x01d173 , 0x01d185 , 0x01d1aa ,
59- 0x01d242 , 0x01da00 , 0x01da3b , 0x01da75 , 0x01da84 , 0x01da9b , 0x01daa1 , 0x01e000 ,
60- 0x01e008 , 0x01e01b , 0x01e023 , 0x01e026 , 0x01e08f , 0x01e130 , 0x01e2ae , 0x01e2ec ,
61- 0x01e4ec , 0x01e5ee , 0x01e8d0 , 0x01e944 , 0x0e0001 , 0x0e0020 , 0x0e0100
62- };
16+ 0x000300 , 0x000483 , 0x000591 , 0x0005bf , 0x0005c1 , 0x0005c4 , 0x0005c7 ,
17+ 0x000610 , 0x00061c , 0x00064b , 0x000670 , 0x0006d6 , 0x0006df , 0x0006e7 ,
18+ 0x0006ea , 0x000711 , 0x000730 , 0x0007a6 , 0x0007eb , 0x0007fd , 0x000816 ,
19+ 0x00081b , 0x000825 , 0x000829 , 0x000859 , 0x000897 , 0x0008ca , 0x0008e3 ,
20+ 0x00093a , 0x00093c , 0x000941 , 0x00094d , 0x000951 , 0x000962 , 0x000981 ,
21+ 0x0009bc , 0x0009c1 , 0x0009cd , 0x0009e2 , 0x0009fe , 0x000a01 , 0x000a3c ,
22+ 0x000a41 , 0x000a47 , 0x000a4b , 0x000a51 , 0x000a70 , 0x000a75 , 0x000a81 ,
23+ 0x000abc , 0x000ac1 , 0x000ac7 , 0x000acd , 0x000ae2 , 0x000afa , 0x000b01 ,
24+ 0x000b3c , 0x000b3f , 0x000b41 , 0x000b4d , 0x000b55 , 0x000b62 , 0x000b82 ,
25+ 0x000bc0 , 0x000bcd , 0x000c00 , 0x000c04 , 0x000c3c , 0x000c3e , 0x000c46 ,
26+ 0x000c4a , 0x000c55 , 0x000c62 , 0x000c81 , 0x000cbc , 0x000cbf , 0x000cc6 ,
27+ 0x000ccc , 0x000ce2 , 0x000d00 , 0x000d3b , 0x000d41 , 0x000d4d , 0x000d62 ,
28+ 0x000d81 , 0x000dca , 0x000dd2 , 0x000dd6 , 0x000e31 , 0x000e34 , 0x000e47 ,
29+ 0x000eb1 , 0x000eb4 , 0x000ec8 , 0x000f18 , 0x000f35 , 0x000f37 , 0x000f39 ,
30+ 0x000f71 , 0x000f80 , 0x000f86 , 0x000f8d , 0x000f99 , 0x000fc6 , 0x00102d ,
31+ 0x001032 , 0x001039 , 0x00103d , 0x001058 , 0x00105e , 0x001071 , 0x001082 ,
32+ 0x001085 , 0x00108d , 0x00109d , 0x001160 , 0x00135d , 0x001712 , 0x001732 ,
33+ 0x001752 , 0x001772 , 0x0017b4 , 0x0017b7 , 0x0017c6 , 0x0017c9 , 0x0017dd ,
34+ 0x00180b , 0x001885 , 0x0018a9 , 0x001920 , 0x001927 , 0x001932 , 0x001939 ,
35+ 0x001a17 , 0x001a1b , 0x001a56 , 0x001a58 , 0x001a60 , 0x001a62 , 0x001a65 ,
36+ 0x001a73 , 0x001a7f , 0x001ab0 , 0x001b00 , 0x001b34 , 0x001b36 , 0x001b3c ,
37+ 0x001b42 , 0x001b6b , 0x001b80 , 0x001ba2 , 0x001ba8 , 0x001bab , 0x001be6 ,
38+ 0x001be8 , 0x001bed , 0x001bef , 0x001c2c , 0x001c36 , 0x001cd0 , 0x001cd4 ,
39+ 0x001ce2 , 0x001ced , 0x001cf4 , 0x001cf8 , 0x001dc0 , 0x00200b , 0x00202a ,
40+ 0x002060 , 0x002066 , 0x0020d0 , 0x002cef , 0x002d7f , 0x002de0 , 0x00302a ,
41+ 0x003099 , 0x003164 , 0x00a66f , 0x00a674 , 0x00a69e , 0x00a6f0 , 0x00a802 ,
42+ 0x00a806 , 0x00a80b , 0x00a825 , 0x00a82c , 0x00a8c4 , 0x00a8e0 , 0x00a8ff ,
43+ 0x00a926 , 0x00a947 , 0x00a980 , 0x00a9b3 , 0x00a9b6 , 0x00a9bc , 0x00a9e5 ,
44+ 0x00aa29 , 0x00aa31 , 0x00aa35 , 0x00aa43 , 0x00aa4c , 0x00aa7c , 0x00aab0 ,
45+ 0x00aab2 , 0x00aab7 , 0x00aabe , 0x00aac1 , 0x00aaec , 0x00aaf6 , 0x00abe5 ,
46+ 0x00abe8 , 0x00abed , 0x00d7b0 , 0x00d7cb , 0x00fb1e , 0x00fe00 , 0x00fe20 ,
47+ 0x00feff , 0x00ffa0 , 0x0101fd , 0x0102e0 , 0x010376 , 0x010a01 , 0x010a05 ,
48+ 0x010a0c , 0x010a38 , 0x010a3f , 0x010ae5 , 0x010d24 , 0x010d69 , 0x010eab ,
49+ 0x010efc , 0x010f46 , 0x010f82 , 0x011001 , 0x011038 , 0x011070 , 0x011073 ,
50+ 0x01107f , 0x0110b3 , 0x0110b9 , 0x0110c2 , 0x011100 , 0x011127 , 0x01112d ,
51+ 0x011173 , 0x011180 , 0x0111b6 , 0x0111c9 , 0x0111cf , 0x01122f , 0x011234 ,
52+ 0x011236 , 0x01123e , 0x011241 , 0x0112df , 0x0112e3 , 0x011300 , 0x01133b ,
53+ 0x011340 , 0x011366 , 0x011370 , 0x0113bb , 0x0113ce , 0x0113d0 , 0x0113d2 ,
54+ 0x0113e1 , 0x011438 , 0x011442 , 0x011446 , 0x01145e , 0x0114b3 , 0x0114ba ,
55+ 0x0114bf , 0x0114c2 , 0x0115b2 , 0x0115bc , 0x0115bf , 0x0115dc , 0x011633 ,
56+ 0x01163d , 0x01163f , 0x0116ab , 0x0116ad , 0x0116b0 , 0x0116b7 , 0x01171d ,
57+ 0x01171f , 0x011722 , 0x011727 , 0x01182f , 0x011839 , 0x01193b , 0x01193e ,
58+ 0x011943 , 0x0119d4 , 0x0119da , 0x0119e0 , 0x011a01 , 0x011a33 , 0x011a3b ,
59+ 0x011a47 , 0x011a51 , 0x011a59 , 0x011a8a , 0x011a98 , 0x011c30 , 0x011c38 ,
60+ 0x011c3f , 0x011c92 , 0x011caa , 0x011cb2 , 0x011cb5 , 0x011d31 , 0x011d3a ,
61+ 0x011d3c , 0x011d3f , 0x011d47 , 0x011d90 , 0x011d95 , 0x011d97 , 0x011ef3 ,
62+ 0x011f00 , 0x011f36 , 0x011f40 , 0x011f42 , 0x011f5a , 0x013440 , 0x013447 ,
63+ 0x01611e , 0x01612d , 0x016af0 , 0x016b30 , 0x016f4f , 0x016f8f , 0x016fe4 ,
64+ 0x01bc9d , 0x01bca0 , 0x01cf00 , 0x01cf30 , 0x01d167 , 0x01d173 , 0x01d185 ,
65+ 0x01d1aa , 0x01d242 , 0x01da00 , 0x01da3b , 0x01da75 , 0x01da84 , 0x01da9b ,
66+ 0x01daa1 , 0x01e000 , 0x01e008 , 0x01e01b , 0x01e023 , 0x01e026 , 0x01e08f ,
67+ 0x01e130 , 0x01e2ae , 0x01e2ec , 0x01e4ec , 0x01e5ee , 0x01e8d0 , 0x01e944 ,
68+ 0x0e0001 , 0x0e0020 , 0x0e0100 };
6369static const uint16_t wcw0_cnt [] = {
64- 0x006f , 0x0006 , 0x002c , 0x0000 , 0x0001 , 0x0001 , 0x0000 , 0x000a ,
65- 0x0000 , 0x0014 , 0x0000 , 0x0006 , 0x0005 , 0x0001 , 0x0003 , 0x0000 ,
66- 0x001a , 0x000a , 0x0008 , 0x0000 , 0x0003 , 0x0008 , 0x0002 , 0x0004 ,
67- 0x0002 , 0x0008 , 0x0017 , 0x001f , 0x0000 , 0x0000 , 0x0007 , 0x0000 ,
68- 0x0006 , 0x0001 , 0x0000 , 0x0000 , 0x0003 , 0x0000 , 0x0001 , 0x0000 ,
69- 0x0001 , 0x0000 , 0x0001 , 0x0001 , 0x0002 , 0x0000 , 0x0001 , 0x0000 ,
70- 0x0001 , 0x0000 , 0x0004 , 0x0001 , 0x0000 , 0x0001 , 0x0005 , 0x0000 ,
71- 0x0000 , 0x0000 , 0x0003 , 0x0000 , 0x0001 , 0x0001 , 0x0000 , 0x0000 ,
72- 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0002 , 0x0002 , 0x0003 , 0x0001 ,
73- 0x0001 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0001 , 0x0001 , 0x0001 ,
74- 0x0001 , 0x0003 , 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x0002 , 0x0000 ,
75- 0x0000 , 0x0006 , 0x0007 , 0x0000 , 0x0008 , 0x0006 , 0x0001 , 0x0000 ,
76- 0x0000 , 0x0000 , 0x000d , 0x0004 , 0x0001 , 0x000a , 0x0023 , 0x0000 ,
77- 0x0003 , 0x0005 , 0x0001 , 0x0001 , 0x0001 , 0x0002 , 0x0003 , 0x0000 ,
78- 0x0001 , 0x0000 , 0x0000 , 0x009f , 0x0002 , 0x0002 , 0x0001 , 0x0001 ,
79- 0x0001 , 0x0001 , 0x0006 , 0x0000 , 0x000a , 0x0000 , 0x0004 , 0x0001 ,
80- 0x0000 , 0x0002 , 0x0001 , 0x0000 , 0x0002 , 0x0001 , 0x0000 , 0x0000 ,
81- 0x0006 , 0x0000 , 0x0000 , 0x0007 , 0x0009 , 0x0000 , 0x001e , 0x0003 ,
82- 0x0000 , 0x0004 , 0x0000 , 0x0000 , 0x0008 , 0x0001 , 0x0003 , 0x0001 ,
83- 0x0002 , 0x0000 , 0x0001 , 0x0000 , 0x0002 , 0x0007 , 0x0001 , 0x0002 ,
84- 0x000c , 0x0006 , 0x0000 , 0x0000 , 0x0001 , 0x003f , 0x0004 , 0x0004 ,
85- 0x0004 , 0x0009 , 0x0020 , 0x0002 , 0x0000 , 0x001f , 0x0003 , 0x0001 ,
86- 0x0000 , 0x0003 , 0x0009 , 0x0001 , 0x0001 , 0x0000 , 0x0000 , 0x0000 ,
87- 0x0001 , 0x0000 , 0x0001 , 0x0011 , 0x0000 , 0x0007 , 0x000a , 0x0002 ,
88- 0x0000 , 0x0003 , 0x0001 , 0x0000 , 0x0005 , 0x0001 , 0x0001 , 0x0000 ,
89- 0x0000 , 0x0000 , 0x0000 , 0x0002 , 0x0001 , 0x0001 , 0x0000 , 0x0001 ,
90- 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0016 , 0x0030 , 0x0000 , 0x000f ,
91- 0x000f , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0004 , 0x0002 , 0x0001 ,
92- 0x0003 , 0x0002 , 0x0000 , 0x0001 , 0x0003 , 0x0004 , 0x0001 , 0x0003 ,
93- 0x000a , 0x0003 , 0x0000 , 0x000e , 0x0000 , 0x0001 , 0x0002 , 0x0003 ,
94- 0x0001 , 0x0000 , 0x0002 , 0x0004 , 0x0007 , 0x0000 , 0x0001 , 0x0008 ,
95- 0x0003 , 0x0000 , 0x0002 , 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x0000 ,
96- 0x0007 , 0x0001 , 0x0001 , 0x0000 , 0x0006 , 0x0004 , 0x0005 , 0x0000 ,
97- 0x0000 , 0x0000 , 0x0001 , 0x0007 , 0x0002 , 0x0000 , 0x0000 , 0x0005 ,
98- 0x0000 , 0x0001 , 0x0001 , 0x0003 , 0x0001 , 0x0001 , 0x0001 , 0x0007 ,
99- 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x0005 , 0x0000 , 0x0000 , 0x0000 ,
100- 0x0003 , 0x0004 , 0x0008 , 0x0001 , 0x0001 , 0x0000 , 0x0000 , 0x0003 ,
101- 0x0001 , 0x0000 , 0x0009 , 0x0005 , 0x0003 , 0x0000 , 0x0005 , 0x0002 ,
102- 0x000c , 0x0001 , 0x0006 , 0x0005 , 0x0000 , 0x0015 , 0x0006 , 0x0001 ,
103- 0x0001 , 0x0005 , 0x0000 , 0x0001 , 0x0006 , 0x0000 , 0x0001 , 0x0000 ,
104- 0x0000 , 0x0001 , 0x0001 , 0x0004 , 0x0000 , 0x0000 , 0x0000 , 0x0000 ,
105- 0x000e , 0x000b , 0x0002 , 0x0004 , 0x0006 , 0x0000 , 0x0003 , 0x0000 ,
106- 0x0001 , 0x0003 , 0x002d , 0x0016 , 0x0002 , 0x000f , 0x0006 , 0x0003 ,
107- 0x0002 , 0x0036 , 0x0031 , 0x0000 , 0x0000 , 0x0004 , 0x000e , 0x0006 ,
108- 0x0010 , 0x0006 , 0x0001 , 0x0004 , 0x0000 , 0x0006 , 0x0000 , 0x0003 ,
109- 0x0003 , 0x0001 , 0x0006 , 0x0006 , 0x0000 , 0x005f , 0x00ef
110- };
70+ 0x006f , 0x0006 , 0x002c , 0x0000 , 0x0001 , 0x0001 , 0x0000 , 0x000a , 0x0000 ,
71+ 0x0014 , 0x0000 , 0x0006 , 0x0005 , 0x0001 , 0x0003 , 0x0000 , 0x001a , 0x000a ,
72+ 0x0008 , 0x0000 , 0x0003 , 0x0008 , 0x0002 , 0x0004 , 0x0002 , 0x0008 , 0x0017 ,
73+ 0x001f , 0x0000 , 0x0000 , 0x0007 , 0x0000 , 0x0006 , 0x0001 , 0x0000 , 0x0000 ,
74+ 0x0003 , 0x0000 , 0x0001 , 0x0000 , 0x0001 , 0x0000 , 0x0001 , 0x0001 , 0x0002 ,
75+ 0x0000 , 0x0001 , 0x0000 , 0x0001 , 0x0000 , 0x0004 , 0x0001 , 0x0000 , 0x0001 ,
76+ 0x0005 , 0x0000 , 0x0000 , 0x0000 , 0x0003 , 0x0000 , 0x0001 , 0x0001 , 0x0000 ,
77+ 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0002 , 0x0002 , 0x0003 , 0x0001 ,
78+ 0x0001 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0001 , 0x0001 , 0x0001 , 0x0001 ,
79+ 0x0003 , 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x0002 , 0x0000 , 0x0000 , 0x0006 ,
80+ 0x0007 , 0x0000 , 0x0008 , 0x0006 , 0x0001 , 0x0000 , 0x0000 , 0x0000 , 0x000d ,
81+ 0x0004 , 0x0001 , 0x000a , 0x0023 , 0x0000 , 0x0003 , 0x0005 , 0x0001 , 0x0001 ,
82+ 0x0001 , 0x0002 , 0x0003 , 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x009f , 0x0002 ,
83+ 0x0002 , 0x0001 , 0x0001 , 0x0001 , 0x0001 , 0x0006 , 0x0000 , 0x000a , 0x0000 ,
84+ 0x0004 , 0x0001 , 0x0000 , 0x0002 , 0x0001 , 0x0000 , 0x0002 , 0x0001 , 0x0000 ,
85+ 0x0000 , 0x0006 , 0x0000 , 0x0000 , 0x0007 , 0x0009 , 0x0000 , 0x001e , 0x0003 ,
86+ 0x0000 , 0x0004 , 0x0000 , 0x0000 , 0x0008 , 0x0001 , 0x0003 , 0x0001 , 0x0002 ,
87+ 0x0000 , 0x0001 , 0x0000 , 0x0002 , 0x0007 , 0x0001 , 0x0002 , 0x000c , 0x0006 ,
88+ 0x0000 , 0x0000 , 0x0001 , 0x003f , 0x0004 , 0x0004 , 0x0004 , 0x0009 , 0x0020 ,
89+ 0x0002 , 0x0000 , 0x001f , 0x0003 , 0x0001 , 0x0000 , 0x0003 , 0x0009 , 0x0001 ,
90+ 0x0001 , 0x0000 , 0x0000 , 0x0000 , 0x0001 , 0x0000 , 0x0001 , 0x0011 , 0x0000 ,
91+ 0x0007 , 0x000a , 0x0002 , 0x0000 , 0x0003 , 0x0001 , 0x0000 , 0x0005 , 0x0001 ,
92+ 0x0001 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0002 , 0x0001 , 0x0001 , 0x0000 ,
93+ 0x0001 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0016 , 0x0030 , 0x0000 , 0x000f ,
94+ 0x000f , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0004 , 0x0002 , 0x0001 , 0x0003 ,
95+ 0x0002 , 0x0000 , 0x0001 , 0x0003 , 0x0004 , 0x0001 , 0x0003 , 0x000a , 0x0003 ,
96+ 0x0000 , 0x000e , 0x0000 , 0x0001 , 0x0002 , 0x0003 , 0x0001 , 0x0000 , 0x0002 ,
97+ 0x0004 , 0x0007 , 0x0000 , 0x0001 , 0x0008 , 0x0003 , 0x0000 , 0x0002 , 0x0000 ,
98+ 0x0001 , 0x0000 , 0x0000 , 0x0000 , 0x0007 , 0x0001 , 0x0001 , 0x0000 , 0x0006 ,
99+ 0x0004 , 0x0005 , 0x0000 , 0x0000 , 0x0000 , 0x0001 , 0x0007 , 0x0002 , 0x0000 ,
100+ 0x0000 , 0x0005 , 0x0000 , 0x0001 , 0x0001 , 0x0003 , 0x0001 , 0x0001 , 0x0001 ,
101+ 0x0007 , 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x0005 , 0x0000 , 0x0000 , 0x0000 ,
102+ 0x0003 , 0x0004 , 0x0008 , 0x0001 , 0x0001 , 0x0000 , 0x0000 , 0x0003 , 0x0001 ,
103+ 0x0000 , 0x0009 , 0x0005 , 0x0003 , 0x0000 , 0x0005 , 0x0002 , 0x000c , 0x0001 ,
104+ 0x0006 , 0x0005 , 0x0000 , 0x0015 , 0x0006 , 0x0001 , 0x0001 , 0x0005 , 0x0000 ,
105+ 0x0001 , 0x0006 , 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x0001 , 0x0001 , 0x0004 ,
106+ 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x000e , 0x000b , 0x0002 , 0x0004 , 0x0006 ,
107+ 0x0000 , 0x0003 , 0x0000 , 0x0001 , 0x0003 , 0x002d , 0x0016 , 0x0002 , 0x000f ,
108+ 0x0006 , 0x0003 , 0x0002 , 0x0036 , 0x0031 , 0x0000 , 0x0000 , 0x0004 , 0x000e ,
109+ 0x0006 , 0x0010 , 0x0006 , 0x0001 , 0x0004 , 0x0000 , 0x0006 , 0x0000 , 0x0003 ,
110+ 0x0003 , 0x0001 , 0x0006 , 0x0006 , 0x0000 , 0x005f , 0x00ef };
111111#define WCW0_LEN 367
112112
113113static const uint32_t wcw2_lo [] = {
114- 0x001100 , 0x00231a , 0x002329 , 0x0023e9 , 0x0023f0 , 0x0023f3 , 0x0025fd , 0x002614 ,
115- 0x002630 , 0x002648 , 0x00267f , 0x00268a , 0x002693 , 0x0026a1 , 0x0026aa , 0x0026bd ,
116- 0x0026c4 , 0x0026ce , 0x0026d4 , 0x0026ea , 0x0026f2 , 0x0026f5 , 0x0026fa , 0x0026fd ,
117- 0x002705 , 0x00270a , 0x002728 , 0x00274c , 0x00274e , 0x002753 , 0x002757 , 0x002795 ,
118- 0x0027b0 , 0x0027bf , 0x002b1b , 0x002b50 , 0x002b55 , 0x002e80 , 0x002e9b , 0x002f00 ,
119- 0x002ff0 , 0x00302e , 0x003041 , 0x00309b , 0x003105 , 0x003131 , 0x003165 , 0x003190 ,
120- 0x0031ef , 0x003220 , 0x00a490 , 0x00a960 , 0x00ac00 , 0x00f900 , 0x00fa70 , 0x00fe10 ,
121- 0x00fe30 , 0x00fe54 , 0x00fe68 , 0x00ff01 , 0x00ffe0 , 0x016fe0 , 0x016ff0 , 0x017000 ,
122- 0x018800 , 0x018cff , 0x01aff0 , 0x01aff5 , 0x01affd , 0x01b000 , 0x01b132 , 0x01b150 ,
123- 0x01b155 , 0x01b164 , 0x01b170 , 0x01d300 , 0x01d360 , 0x01f004 , 0x01f0cf , 0x01f18e ,
124- 0x01f191 , 0x01f200 , 0x01f210 , 0x01f240 , 0x01f250 , 0x01f260 , 0x01f300 , 0x01f32d ,
125- 0x01f337 , 0x01f37e , 0x01f3a0 , 0x01f3cf , 0x01f3e0 , 0x01f3f4 , 0x01f3f8 , 0x01f440 ,
126- 0x01f442 , 0x01f4ff , 0x01f54b , 0x01f550 , 0x01f57a , 0x01f595 , 0x01f5a4 , 0x01f5fb ,
127- 0x01f680 , 0x01f6cc , 0x01f6d0 , 0x01f6d5 , 0x01f6dc , 0x01f6eb , 0x01f6f4 , 0x01f7e0 ,
128- 0x01f7f0 , 0x01f90c , 0x01f93c , 0x01f947 , 0x01fa70 , 0x01fa80 , 0x01fa8f , 0x01face ,
129- 0x01fadf , 0x01faf0 , 0x020000 , 0x02a700 , 0x02b740 , 0x02b820 , 0x02ceb0 , 0x02ebf0 ,
130- 0x02f800 , 0x030000 , 0x031350
131- };
114+ 0x001100 , 0x00231a , 0x002329 , 0x0023e9 , 0x0023f0 , 0x0023f3 , 0x0025fd ,
115+ 0x002614 , 0x002630 , 0x002648 , 0x00267f , 0x00268a , 0x002693 , 0x0026a1 ,
116+ 0x0026aa , 0x0026bd , 0x0026c4 , 0x0026ce , 0x0026d4 , 0x0026ea , 0x0026f2 ,
117+ 0x0026f5 , 0x0026fa , 0x0026fd , 0x002705 , 0x00270a , 0x002728 , 0x00274c ,
118+ 0x00274e , 0x002753 , 0x002757 , 0x002795 , 0x0027b0 , 0x0027bf , 0x002b1b ,
119+ 0x002b50 , 0x002b55 , 0x002e80 , 0x002e9b , 0x002f00 , 0x002ff0 , 0x00302e ,
120+ 0x003041 , 0x00309b , 0x003105 , 0x003131 , 0x003165 , 0x003190 , 0x0031ef ,
121+ 0x003220 , 0x00a490 , 0x00a960 , 0x00ac00 , 0x00f900 , 0x00fa70 , 0x00fe10 ,
122+ 0x00fe30 , 0x00fe54 , 0x00fe68 , 0x00ff01 , 0x00ffe0 , 0x016fe0 , 0x016ff0 ,
123+ 0x017000 , 0x018800 , 0x018cff , 0x01aff0 , 0x01aff5 , 0x01affd , 0x01b000 ,
124+ 0x01b132 , 0x01b150 , 0x01b155 , 0x01b164 , 0x01b170 , 0x01d300 , 0x01d360 ,
125+ 0x01f004 , 0x01f0cf , 0x01f18e , 0x01f191 , 0x01f200 , 0x01f210 , 0x01f240 ,
126+ 0x01f250 , 0x01f260 , 0x01f300 , 0x01f32d , 0x01f337 , 0x01f37e , 0x01f3a0 ,
127+ 0x01f3cf , 0x01f3e0 , 0x01f3f4 , 0x01f3f8 , 0x01f440 , 0x01f442 , 0x01f4ff ,
128+ 0x01f54b , 0x01f550 , 0x01f57a , 0x01f595 , 0x01f5a4 , 0x01f5fb , 0x01f680 ,
129+ 0x01f6cc , 0x01f6d0 , 0x01f6d5 , 0x01f6dc , 0x01f6eb , 0x01f6f4 , 0x01f7e0 ,
130+ 0x01f7f0 , 0x01f90c , 0x01f93c , 0x01f947 , 0x01fa70 , 0x01fa80 , 0x01fa8f ,
131+ 0x01face , 0x01fadf , 0x01faf0 , 0x020000 , 0x02a700 , 0x02b740 , 0x02b820 ,
132+ 0x02ceb0 , 0x02ebf0 , 0x02f800 , 0x030000 , 0x031350 };
132133static const uint16_t wcw2_cnt [] = {
133- 0x005f , 0x0001 , 0x0001 , 0x0003 , 0x0000 , 0x0000 , 0x0001 , 0x0001 ,
134- 0x0007 , 0x000b , 0x0000 , 0x0005 , 0x0000 , 0x0000 , 0x0001 , 0x0001 ,
135- 0x0001 , 0x0000 , 0x0000 , 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x0000 ,
136- 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x0000 , 0x0002 , 0x0000 , 0x0002 ,
137- 0x0000 , 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x0019 , 0x0058 , 0x00d5 ,
138- 0x0039 , 0x0010 , 0x0055 , 0x0064 , 0x002a , 0x0032 , 0x0029 , 0x0055 ,
139- 0x002f , 0x726c , 0x0036 , 0x001c , 0x2ba3 , 0x016d , 0x0069 , 0x0009 ,
140- 0x0022 , 0x0012 , 0x0003 , 0x005f , 0x0006 , 0x0003 , 0x0001 , 0x17f7 ,
141- 0x04d5 , 0x0009 , 0x0003 , 0x0006 , 0x0001 , 0x0122 , 0x0000 , 0x0002 ,
142- 0x0000 , 0x0003 , 0x018b , 0x0056 , 0x0016 , 0x0000 , 0x0000 , 0x0000 ,
143- 0x0009 , 0x0002 , 0x002b , 0x0008 , 0x0001 , 0x0005 , 0x0020 , 0x0008 ,
144- 0x0045 , 0x0015 , 0x002a , 0x0004 , 0x0010 , 0x0000 , 0x0046 , 0x0000 ,
145- 0x00ba , 0x003e , 0x0003 , 0x0017 , 0x0000 , 0x0001 , 0x0000 , 0x0054 ,
146- 0x0045 , 0x0000 , 0x0002 , 0x0002 , 0x0003 , 0x0001 , 0x0008 , 0x000b ,
147- 0x0000 , 0x002e , 0x0009 , 0x00b8 , 0x000c , 0x0009 , 0x0037 , 0x000e ,
148- 0x000a , 0x0008 , 0xa6df , 0x1039 , 0x00dd , 0x1681 , 0x1d30 , 0x026d ,
149- 0x021d , 0x134a , 0x105f
150- };
134+ 0x005f , 0x0001 , 0x0001 , 0x0003 , 0x0000 , 0x0000 , 0x0001 , 0x0001 , 0x0007 ,
135+ 0x000b , 0x0000 , 0x0005 , 0x0000 , 0x0000 , 0x0001 , 0x0001 , 0x0001 , 0x0000 ,
136+ 0x0000 , 0x0000 , 0x0001 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0001 , 0x0000 ,
137+ 0x0000 , 0x0000 , 0x0002 , 0x0000 , 0x0002 , 0x0000 , 0x0000 , 0x0001 , 0x0000 ,
138+ 0x0000 , 0x0019 , 0x0058 , 0x00d5 , 0x0039 , 0x0010 , 0x0055 , 0x0064 , 0x002a ,
139+ 0x0032 , 0x0029 , 0x0055 , 0x002f , 0x726c , 0x0036 , 0x001c , 0x2ba3 , 0x016d ,
140+ 0x0069 , 0x0009 , 0x0022 , 0x0012 , 0x0003 , 0x005f , 0x0006 , 0x0003 , 0x0001 ,
141+ 0x17f7 , 0x04d5 , 0x0009 , 0x0003 , 0x0006 , 0x0001 , 0x0122 , 0x0000 , 0x0002 ,
142+ 0x0000 , 0x0003 , 0x018b , 0x0056 , 0x0016 , 0x0000 , 0x0000 , 0x0000 , 0x0009 ,
143+ 0x0002 , 0x002b , 0x0008 , 0x0001 , 0x0005 , 0x0020 , 0x0008 , 0x0045 , 0x0015 ,
144+ 0x002a , 0x0004 , 0x0010 , 0x0000 , 0x0046 , 0x0000 , 0x00ba , 0x003e , 0x0003 ,
145+ 0x0017 , 0x0000 , 0x0001 , 0x0000 , 0x0054 , 0x0045 , 0x0000 , 0x0002 , 0x0002 ,
146+ 0x0003 , 0x0001 , 0x0008 , 0x000b , 0x0000 , 0x002e , 0x0009 , 0x00b8 , 0x000c ,
147+ 0x0009 , 0x0037 , 0x000e , 0x000a , 0x0008 , 0xa6df , 0x1039 , 0x00dd , 0x1681 ,
148+ 0x1d30 , 0x026d , 0x021d , 0x134a , 0x105f };
151149#define WCW2_LEN 131
152150
153- static int wcrange (const uint32_t * lo , const uint16_t * cnt , int n , uint32_t ch ) {
151+ static int wcrange (const uint32_t * lo , const uint16_t * cnt , int n ,
152+ uint32_t ch ) {
154153 int l = 0 , h = n - 1 ;
155154 while (l <= h ) {
156155 int m = (l + h ) / 2 ;
157- if (ch < lo [m ]) h = m - 1 ;
158- else if (ch > lo [m ] + cnt [m ]) l = m + 1 ;
159- else return 1 ;
156+ if (ch < lo [m ])
157+ h = m - 1 ;
158+ else if (ch > lo [m ] + cnt [m ])
159+ l = m + 1 ;
160+ else
161+ return 1 ;
160162 }
161163 return 0 ;
162164}
@@ -168,8 +170,10 @@ int wcwidth(uint32_t ch) {
168170 return 1 ;
169171 if (ch < 0x20 || (ch > 0x7e && ch < 0xa0 ))
170172 return ch == 0 ? 0 : -1 ;
171- if (wcrange (wcw0_lo , wcw0_cnt , WCW0_LEN , ch )) return 0 ;
172- if (wcrange (wcw2_lo , wcw2_cnt , WCW2_LEN , ch )) return 2 ;
173+ if (wcrange (wcw0_lo , wcw0_cnt , WCW0_LEN , ch ))
174+ return 0 ;
175+ if (wcrange (wcw2_lo , wcw2_cnt , WCW2_LEN , ch ))
176+ return 2 ;
173177 return 1 ;
174178}
175179
0 commit comments