From 2397c02eda5e93bbeee23b481c29d6bae3a31095 Mon Sep 17 00:00:00 2001 From: Haozhun Jin Date: Wed, 18 Mar 2015 19:36:41 -0700 Subject: [PATCH] Add unicode blocks and char properties in Java --- resources/tables/CR_L1.bin | Bin 0 -> 16 bytes resources/tables/CR_LD.bin | Bin 0 -> 4120 bytes resources/tables/CR_javaAlphabetic.bin | Bin 0 -> 4328 bytes resources/tables/CR_javaDefined.bin | Bin 0 -> 4320 bytes resources/tables/CR_javaDigit.bin | Bin 0 -> 344 bytes resources/tables/CR_javaISOControl.bin | Bin 0 -> 24 bytes .../tables/CR_javaIdentifierIgnorable.bin | Bin 0 -> 144 bytes resources/tables/CR_javaIdeographic.bin | Bin 0 -> 96 bytes .../tables/CR_javaJavaIdentifierPart.bin | Bin 0 -> 4744 bytes .../tables/CR_javaJavaIdentifierStart.bin | Bin 0 -> 4080 bytes resources/tables/CR_javaLetter.bin | Bin 0 -> 3896 bytes resources/tables/CR_javaLetterOrDigit.bin | Bin 0 -> 4120 bytes resources/tables/CR_javaLowerCase.bin | Bin 0 -> 4952 bytes resources/tables/CR_javaMirrored.bin | Bin 0 -> 896 bytes resources/tables/CR_javaSpaceChar.bin | Bin 0 -> 80 bytes resources/tables/CR_javaTitleCase.bin | Bin 0 -> 88 bytes .../tables/CR_javaUnicodeIdentifierPart.bin | Bin 0 -> 4640 bytes .../tables/CR_javaUnicodeIdentifierStart.bin | Bin 0 -> 3928 bytes resources/tables/CR_javaUpperCase.bin | Bin 0 -> 4888 bytes resources/tables/CR_javaWhitespace.bin | Bin 0 -> 80 bytes .../tables/CR_perlHorizontalWhiteSpace.bin | Bin 0 -> 80 bytes .../tables/CR_perlVerticalWhiteSpace.bin | Bin 0 -> 32 bytes scripts/ExtractTables.rb | 38 +- scripts/additional_name2ctype.src | 6356 +++++++++++++++++ .../jcodings/unicode/UnicodeProperties.java | 28 +- 25 files changed, 6402 insertions(+), 20 deletions(-) create mode 100644 resources/tables/CR_L1.bin create mode 100644 resources/tables/CR_LD.bin create mode 100644 resources/tables/CR_javaAlphabetic.bin create mode 100644 resources/tables/CR_javaDefined.bin create mode 100644 resources/tables/CR_javaDigit.bin create mode 100644 resources/tables/CR_javaISOControl.bin create mode 100644 resources/tables/CR_javaIdentifierIgnorable.bin create mode 100644 resources/tables/CR_javaIdeographic.bin create mode 100644 resources/tables/CR_javaJavaIdentifierPart.bin create mode 100644 resources/tables/CR_javaJavaIdentifierStart.bin create mode 100644 resources/tables/CR_javaLetter.bin create mode 100644 resources/tables/CR_javaLetterOrDigit.bin create mode 100644 resources/tables/CR_javaLowerCase.bin create mode 100644 resources/tables/CR_javaMirrored.bin create mode 100644 resources/tables/CR_javaSpaceChar.bin create mode 100644 resources/tables/CR_javaTitleCase.bin create mode 100644 resources/tables/CR_javaUnicodeIdentifierPart.bin create mode 100644 resources/tables/CR_javaUnicodeIdentifierStart.bin create mode 100644 resources/tables/CR_javaUpperCase.bin create mode 100644 resources/tables/CR_javaWhitespace.bin create mode 100644 resources/tables/CR_perlHorizontalWhiteSpace.bin create mode 100644 resources/tables/CR_perlVerticalWhiteSpace.bin create mode 100644 scripts/additional_name2ctype.src diff --git a/resources/tables/CR_L1.bin b/resources/tables/CR_L1.bin new file mode 100644 index 0000000000000000000000000000000000000000..d10bff6f9731325b595a7af70a4ea340ee3c1e23 GIT binary patch literal 16 TcmZQzU|?ooU|E}N0AD{V6?mPFK@A;kc9z+Zs z7Ex0Z5p7K62u|fpE}<*;pqhCs*Q0LaH9p}p^E}N9{DsZD!~3~@l_3jQ$c0>lHHKWq z&vJ{@Yq&1ASY6KDe9Wg2L$AP?VS6!|lbM~9d)Uue&wFg)!-ySPIF7mefO*X4d|stD z_pbU+WZhvKgI^k6j;Lx-_hkkvxIfpUT5tGA$T@uLmqtXyh@BXd+g;5}$hE8AVp;Ak z_1=iup*WA)!*a9KjIp)$SbG-o*UDe3kF^(bIX^}3YHwf(H_=HK-K@(!q&~_MxtG<< z8@$Qe{2jfh{UD++i~=Jm(}+D3_Mwga*q;M9kb{uFFq?04dQR?w+=UBp4+`=Yu1DU& zFOat&Z$aLIyajm+5AY!J7UZp3uVywQXF<-we2Krl+vnXd#f2*!iGx8R%VKGa%kza8uw{d&!PIW2nZSfxLsc28dwb(~d z_A0rHa;I{qa;J63oi-qMDt9VxDsL)pDsPp0kj`c<@}}~p@}}~o&Oenel`oYqwRURl zR3B4)Os${lW7S(~MjumsOyxd}Rx|6_ z%C?AxV>pf(Sg*nFV}turW!(nrHq1rF2K{Te9`iSJqYn-4NW&vMNl)$>)w&HYv60sz z8q2s3jXN)8}B#`rN!v~VKEjk%g7+=@Gu*?AcI^L37A7PIl&vGX$4@@|BsW9)9U<6ew) zR%0*29>%^;KOZ3L*iRzH89(l+h+Wi*epmFn;$fu)YgL?i#T*suRZhX0Ri~+$Ik_`b z>r^`UEf4WKp3FJtihEyi=PQ50{wuGtk-xDS`6?gs5wcabMYNosbH*(heQCKpVth?* zxSA=@h&@y_tM)N|_uQUpWs3wmv{IN zdOA_=iT{f*Wwh?WUO5k1Gu~@G8~3%UL%o@0ti)YvT}wB5*ZK&0*V==gwZ6p5tVhpU zU*oNaN%CjfhOq&ENS$uH*sa=-h<OE*mzZEk|Dd$MmtAxEXEDF1LKA~%S*fx$x!2mdOpt*p7LN zo)<5O#MdB6kBOu_1R4C>o|NZv758D!<$tk-&m*Zfu3rD@4@Aa#dEz53oe96j%K4|;c`iLp4--l-hI;j|-H@ATYps*Jtg zjAWxVH+Is)GrZ0lxGx*GMbc;9KJ)fXL7)0&;@v*`?_0nkuE89Ademo*KE3nZOZr}B zFp_@z?$_&nnfoh@XIFO5?WJb+WFqouOvVy` literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaAlphabetic.bin b/resources/tables/CR_javaAlphabetic.bin new file mode 100644 index 0000000000000000000000000000000000000000..10c9b03efd3690528c81cc524896ef14bb917372 GIT binary patch literal 4328 zcmXZed303e83*9+CM?O^JCm4bLLfMarHTkN5u|_%(Yjj@txC}%sBQIl6sS@?TCJ&V zmEuOV)uUAbQ4#{RaY1nfw@TG2R+3n&mLBb?T02tr5+r?QxPLt7J)S^dI8`WN3=X1Vv|5N;tSJ}$De3&Yzlpm2=s4n6nF2-8r zmvdEWvATq7Q`f62SjlI65yGIK;X8x(p_NmZoznl{tLf$mHl*}8_-UTyIi62#RzF}H zABQlcn&C7t3(p-gm-)O#4{!1h-s3-f#CCQtu**=-89I&W+{X)8XXvNMG1T{qDvYqA z9&1*NrH${hJaw147Bj7QAAMHr4589}l?QS#-)06gIhnKg5$0QY30Gidl|Sc~m~G_^ zEafIT>7twaQxB<+V1|`uR%u?9n|P6zcsbRl7MV%qTl}4O&}Zd;L&!vwGnfojR8z}n z#?Zq4OyB?}F_|eG!eJc6(Hw`onG;g>C-Xf{Pc2k`jJz3nGxBDxL*C4a7Ra>Xsk70VUN70VOb zulR7}iRFpqiRFo%;dmCZ#B-R-S=h&tD^+=7dEzB_FXE-#$Zxro+qgY-r@D-l+>Ok! z%<;X*89#~lA@<(Jn|J{^V>wIgX-pz#B4;9JB4?6A&ZGu86FC$468RGO68RGOk|U8X zITrbnlaVoTwv*Y+L%u|=M6N`x+k(DDWM^=uk99cQCQ_*);-&uWU^_|ssR^QnfDSMMG(sx$h z*-PILW4??2s+{4fV>l1zv`UXvdaAO1mG!G055b5-^(4H{C4RH2r!kW=`2puJ zpR2e&bj_1~#f^$}Ksyc^x=&i=QYOZ4`-Q16} zRkI%NM9s$3)2elAHes)7>{D$u&P(kc48yZ)=cd}#8_;j9-}v3_W1YFwE#L~wrtUUe zuls-k+d`-hB;=^2i3zmv9p>RV_2yH*kPEnwb{^m%^jP1QvQPC4^PFK9<9oyG^)Ok7 zeHKDPpb^&__M?T#%;bEm(Xa^jH8>v)?rZQnINW{1N8rBUr*j6rH{4k&aw&|MzyW-V zBk;f>k~r=)7OPCLtSP+T@H6& zi@xsuDujFddsRX;dCYs&ezY;4Mf`*-xP@hW6hcQmzTdGI=H77)*6&!#O<1U-i!Vdy zj3`I1ow9ajux6*3cUq_OLfUx-`_lOZ{kyF8-PL1g;Y8+f8NR>zeja24uk6wl{0Tpa zHm2kIT^Dg_%6(n-scU1(dG9K6w!7Y9EAn;eqwBK}*64lB5Gu*B8+A0{oUR$ocsy^- z2O+EtA@uowr>`65pzlRw`Jd0XpU*=68iJ2PzvuRQ7y8Yz-#gInS^Z>ztbasr$?C~B-G-bOg#-uU>=u+DE57S(?)R{o*(->z92-7bL8*7s9LQ)f-6~% ztkv&@$gzob+n;u z;HTWgvJiFqygLff7In)>oPs%Txf9p7+?BdVUBznFaxahYSn3JY+_yXzq8_v88H(BV z*zca*siP5l)?a}KXCmVU1H+U20qIXA#`aHMKbNePT zi5a-J&m8&|vX~`!Mqd}6(Pw7fsi+`t!M+vrTFBGPUW`iZqZaLpxfiTaa7GGxFVTOY z=&;mLYSA&N$k{KMs}`NXnS4KWwt6n-aRH0Cm`k_} xdt1`3{)%h(9V=LgnHKC}VGWOkGVf*Cs@_o6p*}p3wotZyWGM5qTef}V{{bYs8Ib@0 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaDefined.bin b/resources/tables/CR_javaDefined.bin new file mode 100644 index 0000000000000000000000000000000000000000..2b0db09dc85debdff8f84114999c677bf195cf4b GIT binary patch literal 4320 zcmXZe32;@_83*w1hDGx3eUFeRAreTa6l@_hxPUvUTdS5fu1FQZ*3pg|xD{=!rmY<- zb)nkos8pgL1W*TU-D;(1#a#qVK&uEdb{N~4#y|)ZBBZ~B$INdI@7;6mIsfmRd-Edt zPmU-V9)17%&5h{yGj8EF=5c4y-P%W46fs~d6FHCR%;aKj=MIb;a8J?iwQsPF|IopX zh=FDt*dPBHX#RmCBM!(jnA4fc)2wDs#320#)ltt0G;jeI6*X&nJ;oFKi+vHL#+Axd zdK0(uOMcC7kge1@OXqVREi7jx&lEkUeUZQM8nTqW$vdoNW6`JDO>E|Kw$dGuOX$Y{ za>$n}qk=>ECNkv?<8Y2-5=U_~#}&z(JCX13UCuy_a%UFVhunpzN1sczHz03L-kiL- zyO1|$Pjd3+v6d9!ll&E(DG%;e1E%#KIS>{R5;PDjq{Tx8A8XF9WxGm|r$&5by>nY@|2nY@{E zo5`EWo5`EWlF5?UzwBA$$?RX|yk_!b@?`R4@?>pn;Ikt8n0=01*_YVMYkxEmzOUuU;Y^6$;*?MCofN4p8WT*XMNncpad!gXm7tB?-t>|{`Z<$wgm$ug* zcz_34$fGRc@uH>LUdvg*lc;aOS_{@%u+D-y7p%39S{Ky0;M^2G=2NV5aNvv&K8-86 z2J;R!?_hg1*!dg$E^GN`gi=S@8r~>!&$3?bTdv;a>RmpSMx38==cmsPwKJH7yyfzi z-^F}Z@(j*M`3sn{-1_^xsx@D^^_Q!0x%yU=VZSR5Vi@jS;ocQD(}cBGG^73pM#Rts z_&l^DqSEI|=cdxRsdTZjmPs^lHnUKN%Bz{fwOmINo7lp?>AlzP2-C+f_Zn746}8Mo z|6%rK*h;!0T#Bk{T(25OJ;%~e53_$vEaWqg(QT-7?%zsmD*@Nh=Z04Ybb@$WE5?XkQ zmB?K80;^b!>~+p{-CEY626Z3t8CxPI97_}SbHc+|$G3tuI_Qq5_ql!w-^RT4`qs-e zaRAmgaU$w8aX#uZaW$V~{9z-hWnaYM?lbjSTwnNZM6=I}@5H#p*133H#FB9|@Bjy zGBsJYIl`@D`6L>cN+Z*`ke_4Ra_@}gpRhAxh5cPIkWvZ^VJNkX;ZP>9n*Y+l?uaKM zVx#x%#+Asw@g1zw_Qam6n1glsD!SdjyMjtQ8{O8|eH6!WLQ#X(9(A9@$(+h7d>FBJ z3UchdhkJPg>)5+D!q&vTDr&Lbef6BhIb6z5xB~0h=b6~|Q@)~SzaIH}R-q<6?%VS= zYTEMw8}Ux*`IIeebS~4F8HwYOln$qcqj9}YllFO5@%Kn_`uW|Q_}!f329i<1K~z$OynZJq zId#gpkKe{gu95SZ#jTN~?&G&+;7os;$7U{fTHS@OXtkvQhb zhvzYiYa(g&x%C`;*J}S;AHn@vA1iuXy99gM`UFq$A}bk+48(JdqtS1}S(i4eCA!)bY?dE8&VH96u zbkSICFL~P!L+#rqW6nP2ZSQqrk+aa=>$IXXw7u+Y`wuu1YiU=TKGU?lrWakH?KPul zrnc9`*uVBmiZ0V$&Xrut^~~iaZpI$=Y0}=o?|7I;S%g}&t9|$2jV_ zk7n#m$J4Ch72an(nvxSaGb_Di&M?;bN@7Tp|zKW#F^{(S_y~}gbWxg&o z>*|hVr|)*2g8kUp#F|KU>A&l`DDgflS+XHYmTI3rf`%x0VMLVpb62uwL=?RJ_N&$2 Vy8q{Y^5y=Y+1{sR#+UW%{Xe{{fZr BK287t literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaISOControl.bin b/resources/tables/CR_javaISOControl.bin new file mode 100644 index 0000000000000000000000000000000000000000..a355c6c5eec4357b51c1e793de4c840efedf87f6 GIT binary patch literal 24 YcmZQzU|?lnU|<4b5ReDrdLW(;00h(lMF0Q* literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaIdentifierIgnorable.bin b/resources/tables/CR_javaIdentifierIgnorable.bin new file mode 100644 index 0000000000000000000000000000000000000000..c06a9f885ef73d613cb7a8a97777413f077d301d GIT binary patch literal 144 zcmXZVy$OIY07T&nNE8HrY8%1M!kH|rY%J_-9K{J7!66*LK}0aV5Dz|Hd6F7QCHxX( tsIX$g9#~={TtS>mUY)|XMTZ^(MoiM{0(VR9ktvSgoMq01H}k9M`T literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaIdeographic.bin b/resources/tables/CR_javaIdeographic.bin new file mode 100644 index 0000000000000000000000000000000000000000..1369add09c8025a6bb37e684e6c6f6a64ba484b6 GIT binary patch literal 96 zcmZQzU=U|uVBlt8Fkk~>b|6*+Voe~n0Aec!1{0vP?^Xr|KOjB-3dG?n_EtP+LJwc%o==T*g`(aaRJQzxQ&T`OP=H`|ds8|2yY~U|976_ z6}IpmA7?sMdiiRvSzN-USi9G6xGHmvI+yD+H>$GrTEdrn9YXKl@q4bucl+$YXij2E zMy@`t_nDXZqxvLIXY|@v}OI9XyH^AW$Z`)doj!YJ42}Sy~;B=n;HBPbF93K zIhakQ*;HPM8CJ?)IiH(Z&PrDEVCEt9QJ%moD$SvC9WU`R#mr_^zDoHj-{k{7r>jRC zg%J0m4>9t_W);^mg1u;FANFNG_UAyH%lMGYIQ4Lj~H*2PRp1>{43;+ z<&Nc!Z$R$Yp2u>>a>sJVa>sJVe`O7F$8yK^KbAXw0lDLUu_3cXl{c0*{)A6^B=RQm zCh{gJ@+R^o@+R^o@+R^o@+R^o@+NX7awbP0Um{;3Um{=P>?S88TQZetoQZtN4D55+ z6{?(xoXK3gAIW@f;?FGLHg3<{sV-y*cViZbStR!(fASRGgXB5Z@gnjk@|W5Fq(uHi z{^Z*psr;$@sr;$@X&(908styqPvuVKPUTJyMecM0a;HZlcX}eSr$1o|(~&!sJC!?? zHxr2}+Cr3_>oE$kha+9!kW%|$QKd1kk{&Sb(z0ApxlOrcb z?iTD(?g8|kdz>dTZK~dL`Yv0qwxjnlKW}s1!Ca}=&;6LU4|#p%$D@z@WXv(|eaKrg z|A)-g>NU*G+@O~HiCbBKbCO@o67IK&;%it};)t7NIV3jJ0sz+P8bx5O5OYTvDvzxoaq z@hs10^i*AE5ul4L&&#s+DEA!BA?H3{JVn6HTt#fwj=3pP|Zo~Du zkLYA;2m=Go=fFI>(7+g4IG*Wv&cF+q$wgdDE3Z+^ys5s$7XA~$poAQH9%P>eHE=2J z8{`ZOTFsXsxD@J#;(GnwG;=T$xPY0=!hQA5O}+c-Utj~9LKy7+!9#HW;M17SY-ApM zE%RA`vsdD)VaPE|W(vPRo*}J#9)ecF&;w|}IT&hBhyDiZ4Skh%z6xQO?+yEa?I9HG zN5Os+d{}7Uhd2`j_ZF;EI2mh|ovM~h&Dgtw=NDS}8xQdW&O(`UQ1D(9oXx^N(MQ4D z3mbWpEqu&pe1YBydTL1UvNY_)D8|#m37P5YS)7M6(%`))Gq;A4`P|MT9>cl~n|UYm zzPdGp#)?cowIrq%GbyWA&82a8W_Pt@L`Hv&O?;oR9D-gO&9Kq@8z*J-+vxon8IWgW zGxmF=&quz;f3bfa6`H=s9vL4rmH2+sImlWjW791xVkyhHpViodrbn;`O>LNc(>h*e z17_d!I&ZUu?hr=lzofYj=Fr?o>CdCtj{}jd`7o^8ya4ZG^BpW?G27UV=Z*H9(fS_k z{?Rw0&(Zc_^j2IS6GE7{CWJ}qLg&KeaQF4-@9rHvzj`lCLs(kP-n1b5(pflfOXqMa z)?WH)2+IaiU^mQp*>zZV*?exs0?StNO$f`)cDX!dp1b^FT6qTRFW4`8I@mLkLBGe-&3_|BEjni%VhK18iyHyN2P} zU3(!%mpOIW_pWi77S$Q(`T<8Ufd_akgdK+>?~Zxg#PjH9hcmI$Iys`U#Ua=^ zkz+YGqpzLzc&AzIEZx`Lqq}zqWz}jujU2@IjGnqr;cT4yZnN#Se)o&4$Irg*B5$yn zExg0~e1O4pcZEosQAo(KJ0m!VLpYT2Ok^@sX=Pi8q84Vcqeq3$D{f~I8$#48@Ew{t z8rOT>f$P2g!8+FS3LPO5H|p(rZ`XUT2vL83?%#+0nONPA12_=``Lacp3{C;<{ot^_Ne_{?&nb+&&b$5;+#94%PC!wk!unGRVxejK8W*4((9HrDb6n{f^|ZVyq>bBmr^G|!@W z7AN7}qInf(at(9wjH0|n&nTL;pAk{72n?nRC?hI3MS+ za~79!8MAQ~%39THvFDwCVKGZE+fIAgxr)a_g`Wo%OE-p!W$MFYXbBaM3=0+h8mZVe S%>P}AG7ajSo_~f!pZp(H_HZ=- literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaJavaIdentifierStart.bin b/resources/tables/CR_javaJavaIdentifierStart.bin new file mode 100644 index 0000000000000000000000000000000000000000..2562a5b26d11e49a4a5594d0c4bb5cd62afea2cb GIT binary patch literal 4080 zcmXZed2m(L9S87p6OiP+`<@}u1T^#|ii(zCB51|BL~C&y5IZhKi=xwN>nNb5Iyze8 z(w4d))mBHV0xn4m79-XLt%_T9Y^zvFVqLMLPHUYf?n;pKb06oA&-^BLIp=$R=iE05 zp?Wxk=dO zJ4E)OCNnAORDa0w$UfBE6GH7MrgK0vTg`a3)|zYOuhq}m3%G<|p@+5lP`i}t>7|c; zR!0x2Yj`YrQO&%;o4n0CY~)j%pG|RQ6^c_C@~O9Dc;f(YdPg zkdrre4f5uGhrBs?bMofo&B>d)p9hdPCvU|%HM0RZb02S&moJ|pU%n3c^77^7%eNz6 zUcS71dAaiXS|MA0F20AnzUK9{;&L@3XZ}i-u$1fg12=Iqw?wz8%W!VyVwRdQZ^68U3vu2G<}ciU9u)4w zoP|d*U&UJ0Z$mMmoxQNG;z7*dQZD0)$TwVEj9ynb8^z4;xsjXD-{K1NxOi98qh_qT zxRO87&uU~U%2Odv@fosA8RxzDb_kBkR-Ni$9Kl)0vaSAVNvN|Yb#hnCR*&OE=AtJR zKT%I-J`4E;)>yYBTCP6JbJ0K4%sMu)IfVMdIg*)}r{3>ey?w7RU%mP2=OJ6YKGk2t zQu?vpdV5~~Fpsk~dP+5K{qqd+Y6uN=*yo1r8HceOy6`PF$l2gGY`Y|cMtx{pz$I8q z%{^Tqs^53%m%kCCbQix4Jwe!>$Wd`m6qXGuRxE|yv_SIM51j8&4mbOLjt zlhn-I=oHmFr7r%=gZu@1Sz#Yb&Tq-tE&ZK!yuu)_vjO=^pYR#7l{Saa;@q}$q8AnC zs2O`&u~fZ<<>*0cRWwG;U!Dr`in^|elnc2zTzqCM0$_GCKyBSWiRwEDJMXGQbW z#UV@%Orf2VaeeZ;{13gJY(0}d4Z)D1Z5MWnTxiR9uk8#LL|y6)ET@}ZR?&~1wmpoV zwyi}k+n(n|)}fbeukuz1Q{>OIk47KbTiKls_GVwKt^Huk*M2L@SivUrzI`Nw4)1r! z+2Os8CCJsG&m9|ae_9A(<^v(jQkU6Rx5J%RBhQ`RZ2gz4I}M?`juQIY{cSp#&n4W5 z7rQ?Sp{EJY_3VWH_FRQ|dzNxNp6l^#^?VgVZ$dRP_F7}Fz3w$vuXlT`ufjaNKj$*; z$A0vF$?#Tpd*|+5XlDlVxQHuQ%}ZOEGW1QtczuU(C`aM>zVo;+>Qe9JzDRHS>|5U& z9%F6vl$vq&``%;&A0S_!^S{#CR&GNrMaI%d3%erA$|)Fc<-bF?CxkF`2mLq~Lw~~> zzjl4o*(~H=A-EKVjXT_cUJp-*^nBQu!+Wp~`Zw%+3?CSEs?N&r_ptWi8Cc`+Dv)chI73^e;*e~a$V6y)nRDbsPRF?)(X$cbkGz1r z8Tlteyv7@B;2qxM{g7C067m$-l}YT!{v5zT%w#rm>0(nzl1>(dq{`n_x3HXbA#vQ2 z>Tl7`k+@%dEACf6&GWp(%M66XvXW8m*Qhn4sflvx-h79Bk*7kQn&U!Z+mqVuX<<5D zJjCNX5t5wy6?JL@p3OBeo~g{^qLAc0=YPf|--&VauIJAUiO(cS4-ZLQH8Rv)&b?S; z-G4$d*7dRaHP-d9t9g=VLekhpUr1WKzw`W%OjIYH7Ls;#+LVy|R6Wyr7N`pjWp;GE zx-2C9uJr55%Yk$v*T9U(9uCMj@Pm*Hnscz1wLHaZyn*vDxH%+4#vL;5&@}d87Tz7w zhoOZm=1Pn)q(?)>7}7J}Vp6u=vYwV@EthCzCniR_shQo`3v-n1OIh{``OBF@qQlh8 z5z$d<##t^O%`sS0`Pk?LH8UqVNzFL(6{o0~Q#p+vM`x&Kau(;Zi1WFCi}+>KrT&(y q_#-R013fL;oPE literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaLetter.bin b/resources/tables/CR_javaLetter.bin new file mode 100644 index 0000000000000000000000000000000000000000..186e93b78e60553131c1fd2409cf25824a688b93 GIT binary patch literal 3896 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 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaLowerCase.bin b/resources/tables/CR_javaLowerCase.bin new file mode 100644 index 0000000000000000000000000000000000000000..3bd95ada2f168eecc0114b6d37b89e29a3bbdcff GIT binary patch literal 4952 zcmXZgactCQ9mnzKdc_6_BB_iZ;f~6hj?ktf6)Q5v5GyuK*CAGdgt3Oy+SR5I#5p%) z6)QtlJ8TFch^%SK$&fID3_DUg#t;!FL+nn*NJl!-Ox)P43|U9;{dxHO@ya`C(%!ef z@ALcht|8>qOKxLxkQ<-Fw zsZ6n{RHj*)N`cLwQfNg~X4)(&C00shwv|ztW99VA_=?>}<$imB%2(}cRK9NCpp~ey zYAQ9hgvwH@rLxSHQ(0jvsjM>gl#ta{Po=>csWe$Ll@?n|Wu2|3@|bZ367r<|gg%8$ z)<)%Ndxo~-SGJwXPVB;Otcyyw^-%e(aqbfPall@n@_T!cN-sE*i9Yn>Pj;HhU+r&H zUbnwf`G>th<)8K@mA7ySgLaw9kX@lNZ0}OJYVT3Gh7T}e*QwmJQ7X6WHbqXtl2pc6 z9+j~+j>>qOKxLxkQ<-GkQ#mrlrc#+^X(|OagG!+lQJHD8sFYYKmDyHC=Yo4DT0psP za=34z#Z)S-ib}QB&`xlca{hpqaU5^soe+{0##v6vI^!HCg)^MofM@M@l=G0}JS5Ly z09jnHi&WTsG)RTrM?+Mu*f14#A6=!w?xSmT1nfNGxtWwvd=f(Ly;y}hTTP|j8mKf{ z6P0Fbp~CMT@%!h>dgB`8%H#F~6|PCNkxHv=rP6L4RJK_s74{MBpt93;QQ2*KsB~F3 zl^)Ab*=PHy9I%5_4%uNUN9-t-UOPsm&-$snVy{x+c@h1Y%3qAw@PQQ_P~!&Epo(N!v(o9G&q4{e0Xb-O|3rj1g$Ww$BDBrHi~ zjO9@oYvZVlw+U1xT0WIYHkry4n@VMxrKuFy3@U|IM5PX!L*U!OwEhrM%o{OlN|-ld z)|4=B#H=Y{-iTRK!n_f)ri6JTW=#q6M$DQLUN~ablrV3^tSMpMh*?uI(`HdAu~I6t zt&GYXE2lEo=24k%3#cr#MN}$mF_lWIqEc-&RF>FMDz&zZ%5qylWu>j6!akzaRO+pP zN~1MVX|@(BYi%8s_4XK*$L$F!8*C$$R@+3S%{EinVq2-STL+bG)=6bMc4LoqQR%iG zDjC~HWxpMua?lP@Ic!I$9JO95$E=S^za6J?!cI~-Wv8i}vDc`awR2R?+W?iUU7&K& zE>Rh@%T$K!3YB4dm&#RpkIFUskjjW%r*gw?QW>>dRBnfm&ckOh3DZ#o{{E%Q@c=6D z5SHN)G++%j;3;gzv)F;>kiiS!y)@KDd9Rnw;%yA$ zKlm>`!i^B7ueFU-c)jVr4x!-F_8B?>`BqBhi#C@E?{^C3gUNRdhHmMKI^A)+)hwAX{V^1 zwlh>-v$Isr*?B4hmZfsRE>gKZ!1UsF4agh?=Ri;78zdPxK^}jn+zq zJw&a?VFTg?vorUq%b@osh`A2Q_>Q z|2)d@AijlfqX9p~F1(0d9J4-p0w-}6{|bqLBvL5HH_?QjV-H@!dA!fZ{5*UC^T6x8 w(Sl!~2e05wyoJm7BqXw*!(Et)FM%1e51|%o@HF`TYzLkPKO_4pPUDRHAKc+jl>h($ literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaMirrored.bin b/resources/tables/CR_javaMirrored.bin new file mode 100644 index 0000000000000000000000000000000000000000..894d18655321a72b5ea353e4ba0c294a8e5f7321 GIT binary patch literal 896 zcmXZaONdTk7zglYM7d2;W)?2vn;H3hulkz80yC2hE2WgsG)#k<$fdB5*jOo-vQn%l z8_8BF)I=n59f}AMrt4XT7q}m-WlS!R(MM zT+FUYrY)l)U4h`-Rfi1tiI$GZ~5kEj-a=iz1A+Hr;>WLo2XH`FCX!Q zr#wfk+MDd1e9uQd@sr>D9 zr9JFr9|y4CWWVVWW=iHxdM%kf70jPL@R_gt$bQK`6g^WP#{?!}hWb>RF-zUOsXLFl z-n*Pnm%G(9gIN)y8`*?@NA=tAzM)3LccnI2aGy#&ve1|H%YysW7+{bs(KPa6%(Iqg NDy@-)quH<={tp_DpQ!)< literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaSpaceChar.bin b/resources/tables/CR_javaSpaceChar.bin new file mode 100644 index 0000000000000000000000000000000000000000..bfe4ea4ca36195e9d4186f14672f23fb78049432 GIT binary patch literal 80 zcmZQzU=U_tVBiE|1t?wsq=8th0fHs?7#KiU0Vu4%1;iRatO>;WP#h1Wf!F{jZ@>Tm D-g5=) literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaTitleCase.bin b/resources/tables/CR_javaTitleCase.bin new file mode 100644 index 0000000000000000000000000000000000000000..f1ed1ce323d06f3c1780842b0c1253d32f97275b GIT binary patch literal 88 zcmZQzU=U?sVBlh4U_1)NCxA2vpN8U3KpKeUJAk+!h-U!td>~!{#Or~04-}sP(jfc? FgaLX|5ZwR( literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaUnicodeIdentifierPart.bin b/resources/tables/CR_javaUnicodeIdentifierPart.bin new file mode 100644 index 0000000000000000000000000000000000000000..aaee5c813652b898b6d6549784f84a6f6c17a45d GIT binary patch literal 4640 zcmXZg32;@_83*ulLjvU8`(8q#fw1%?mMSWtL2#;MFmouOXATo%!udQdG|lX_Au>R=;p@fF`#?=QT_>ulkD zK2CM3^z+qzv$>SZux7t2xh8d;I*%JuH>*on%9nf{Lium_Ei#t-Zp9vq|ahbLuueVF5*qPc!z)TA@1$JoxYt0RE03$ z7$);D9q50+ww;PcGO&pjPGfQEUiAU&-N4=uDt)i=EY4vjzrem#Ud~+XMWwx{yc&B} zIiCgG#tPb5%_FHt)hBowdr&EVTR~q8}AxkTYYCGPR6i zFPhnhec6xwIS_M~IV3efJ)EQXA;)5`GRLQ!W9BEEo{~TFOXSVSn~^tj6Y^$mLEenK z8F@4EX5`KMi8aWZkvHSKGxBC$M&8Wd*^t_z%9)Wf^GOJ?oUxp-oNa>sHfawl>pawl>pIpj`i zkUNn(kvEYykvBOMd6P-Vn;e6@$w|nZ{FrI9B5xvZB5xvRB4;9JVr~;T6FCz(6B!a2 z66cq!L5{@vCFV7eBatJKBatKNVk7USoMZAH@+8GPW;XdOglrjdW#!7sm6an=W#!1qk(DERJI*HiFnZ5E#WSf6Rqt7S zm#kMi(R+#Cqgn4-w%F_EeqB3!^20?d7tELGQ_->QW;>niIOIigVQyVden-_2rP;H8wFs*Chhy^ZZ5)HuHy z=T|cs_tlug8gp23sydxk>|2d}tGS5v2w@lJStoCu*{Pe0bF8})*Xur_o2?-X4w%ouId-9eakOv( zt$5Dhi9ZXUEcHaZTy)>c^b1&Vh-}&i@e#){|$ZQ?R$PB|6mIr^BG^Dx4fPjV!SL3 zdohNIv~XgoRXv;YF(VD$ixT_RP_%%%uwKJv{+0T-x;2ExveW>zC_^pwqNHB6AB`hZ zyQ@W`Qu=Ca;`@x}5cJq+?;7oU8@)H919FUR#yOAn`RMogFV4-QLeuxyBjtmp zBHwR17a2=rYr37qEMo-^u^M~d^f>musRMi7w2s%1jg-_?0b&jNG9Xh8qH`{M9>CvzP7>2;>P_NdqF^!Dx4R~nrGfFZ@fgqYT!=ER`*%j<-x*P+KMA$CCo`CO_QkU^@@G7^q*a|0 zqS*cZP9DWASTFW@d~t}pijlvkMvf(_p2RuKq>U$eCS^~mKV&Q4hRFCvgT}Ex)*9sd zgPzCt25kyaouBLUU)RCQAu=Y>cP|RjNOk0yA!=5~jS11u)bsT`Q=NGvQ~5RXSrnqx zK3^S$==Gm+9v5;IS91gHJQ$)k4#)kSzTbHwC*wRj@4<6A?@isWF2fmhKEOjf!BZ)D zJDqRm3nA*NU;xgp%Y1e1LLI{~8(rf$mH1NKHd=Gz3OZQJ+ib=h zZrmQCg69@Iw_raD_Ombr_ZI9|VHVdh56>vbTkwp6z4kjGD!fKth`QzOHXq%3?#|Q5 zZj4Orp%(4QK3J>UEOyIKB1d=8;i;q4qN7vCszu(V?&CNf*}6|mouU>^OP!_`O;62G zi_YLo&Q6`Hp3eoC$L`r&#^ubxER?jV*W=8)|Hu-SVsE>hW%nwc3T1vDlr7sB%9g8- fjiV)$Jw76o`QxE%+X(;HCrUM_b9er;BKqY2ok&-B literal 0 HcmV?d00001 diff --git a/resources/tables/CR_javaUnicodeIdentifierStart.bin b/resources/tables/CR_javaUnicodeIdentifierStart.bin new file mode 100644 index 0000000000000000000000000000000000000000..ce12fa322d755616766668d28caa923c455f2c6e GIT binary patch literal 3928 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